diff --git a/images/2025-pydrofoil-ablations.svg b/images/2025-pydrofoil-ablations.svg
new file mode 100644
index 000000000..1d164d708
--- /dev/null
+++ b/images/2025-pydrofoil-ablations.svg
@@ -0,0 +1,594 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="647.999983" height="371.999983" viewBox="0 0 647.999983 371.999983">
+<defs>
+<g>
+<g id="glyph-0-0">
+<path d="M 2.125 0 L 1.609375 0 L 1.609375 -3 C 1.609375 -3.164062 1.609375 -3.300781 1.609375 -3.40625 C 1.617188 -3.507812 1.628906 -3.617188 1.640625 -3.734375 C 1.578125 -3.671875 1.519531 -3.613281 1.46875 -3.5625 C 1.414062 -3.519531 1.347656 -3.46875 1.265625 -3.40625 L 0.8125 -3.03125 L 0.53125 -3.390625 L 1.6875 -4.28125 L 2.125 -4.28125 Z M 2.125 0 "/>
+</g>
+<g id="glyph-0-1">
+<path d="M 0.4375 -0.328125 C 0.4375 -0.472656 0.46875 -0.570312 0.53125 -0.625 C 0.601562 -0.6875 0.691406 -0.71875 0.796875 -0.71875 C 0.898438 -0.71875 0.988281 -0.6875 1.0625 -0.625 C 1.132812 -0.570312 1.171875 -0.472656 1.171875 -0.328125 C 1.171875 -0.179688 1.132812 -0.078125 1.0625 -0.015625 C 0.988281 0.046875 0.898438 0.078125 0.796875 0.078125 C 0.691406 0.078125 0.601562 0.046875 0.53125 -0.015625 C 0.46875 -0.078125 0.4375 -0.179688 0.4375 -0.328125 Z M 0.4375 -0.328125 "/>
+</g>
+<g id="glyph-0-2">
+<path d="M 3.140625 -2.140625 C 3.140625 -1.679688 3.085938 -1.285156 2.984375 -0.953125 C 2.890625 -0.628906 2.738281 -0.378906 2.53125 -0.203125 C 2.320312 -0.0234375 2.046875 0.0625 1.703125 0.0625 C 1.222656 0.0625 0.867188 -0.128906 0.640625 -0.515625 C 0.410156 -0.910156 0.296875 -1.453125 0.296875 -2.140625 C 0.296875 -2.609375 0.34375 -3.003906 0.4375 -3.328125 C 0.53125 -3.660156 0.679688 -3.910156 0.890625 -4.078125 C 1.097656 -4.253906 1.367188 -4.34375 1.703125 -4.34375 C 2.191406 -4.34375 2.550781 -4.148438 2.78125 -3.765625 C 3.019531 -3.378906 3.140625 -2.835938 3.140625 -2.140625 Z M 0.828125 -2.140625 C 0.828125 -1.554688 0.890625 -1.117188 1.015625 -0.828125 C 1.148438 -0.535156 1.378906 -0.390625 1.703125 -0.390625 C 2.023438 -0.390625 2.253906 -0.535156 2.390625 -0.828125 C 2.535156 -1.117188 2.609375 -1.554688 2.609375 -2.140625 C 2.609375 -2.734375 2.535156 -3.175781 2.390625 -3.46875 C 2.253906 -3.757812 2.023438 -3.90625 1.703125 -3.90625 C 1.378906 -3.90625 1.148438 -3.757812 1.015625 -3.46875 C 0.890625 -3.175781 0.828125 -2.734375 0.828125 -2.140625 Z M 0.828125 -2.140625 "/>
+</g>
+<g id="glyph-0-3">
+<path d="M 3.125 0 L 0.28125 0 L 0.28125 -0.4375 L 1.40625 -1.578125 C 1.625 -1.785156 1.804688 -1.972656 1.953125 -2.140625 C 2.097656 -2.316406 2.207031 -2.484375 2.28125 -2.640625 C 2.363281 -2.804688 2.40625 -2.984375 2.40625 -3.171875 C 2.40625 -3.410156 2.332031 -3.585938 2.1875 -3.703125 C 2.050781 -3.828125 1.875 -3.890625 1.65625 -3.890625 C 1.445312 -3.890625 1.257812 -3.851562 1.09375 -3.78125 C 0.9375 -3.707031 0.78125 -3.609375 0.625 -3.484375 L 0.34375 -3.84375 C 0.507812 -3.976562 0.695312 -4.09375 0.90625 -4.1875 C 1.125 -4.289062 1.375 -4.34375 1.65625 -4.34375 C 2.050781 -4.34375 2.363281 -4.238281 2.59375 -4.03125 C 2.832031 -3.832031 2.953125 -3.554688 2.953125 -3.203125 C 2.953125 -2.984375 2.90625 -2.773438 2.8125 -2.578125 C 2.71875 -2.378906 2.585938 -2.179688 2.421875 -1.984375 C 2.253906 -1.796875 2.0625 -1.597656 1.84375 -1.390625 L 0.953125 -0.5 L 0.953125 -0.484375 L 3.125 -0.484375 Z M 3.125 0 "/>
+</g>
+<g id="glyph-0-4">
+<path d="M 1.65625 -2.625 C 2.09375 -2.625 2.441406 -2.515625 2.703125 -2.296875 C 2.960938 -2.078125 3.09375 -1.769531 3.09375 -1.375 C 3.09375 -0.925781 2.953125 -0.570312 2.671875 -0.3125 C 2.390625 -0.0625 1.992188 0.0625 1.484375 0.0625 C 1.265625 0.0625 1.054688 0.0390625 0.859375 0 C 0.671875 -0.0390625 0.507812 -0.0976562 0.375 -0.171875 L 0.375 -0.671875 C 0.519531 -0.585938 0.695312 -0.519531 0.90625 -0.46875 C 1.113281 -0.414062 1.3125 -0.390625 1.5 -0.390625 C 1.8125 -0.390625 2.0625 -0.460938 2.25 -0.609375 C 2.445312 -0.765625 2.546875 -1 2.546875 -1.3125 C 2.546875 -1.59375 2.457031 -1.804688 2.28125 -1.953125 C 2.113281 -2.109375 1.84375 -2.1875 1.46875 -2.1875 C 1.363281 -2.1875 1.238281 -2.175781 1.09375 -2.15625 C 0.945312 -2.132812 0.832031 -2.113281 0.75 -2.09375 L 0.484375 -2.265625 L 0.640625 -4.28125 L 2.796875 -4.28125 L 2.796875 -3.796875 L 1.09375 -3.796875 L 0.984375 -2.5625 C 1.054688 -2.570312 1.148438 -2.582031 1.265625 -2.59375 C 1.378906 -2.613281 1.507812 -2.625 1.65625 -2.625 Z M 1.65625 -2.625 "/>
+</g>
+<g id="glyph-0-5">
+<path d="M 0.328125 -1.828125 C 0.328125 -2.140625 0.351562 -2.441406 0.40625 -2.734375 C 0.457031 -3.035156 0.554688 -3.304688 0.703125 -3.546875 C 0.847656 -3.785156 1.046875 -3.976562 1.296875 -4.125 C 1.554688 -4.269531 1.890625 -4.34375 2.296875 -4.34375 C 2.378906 -4.34375 2.46875 -4.335938 2.5625 -4.328125 C 2.664062 -4.316406 2.75 -4.304688 2.8125 -4.296875 L 2.8125 -3.84375 C 2.75 -3.863281 2.671875 -3.878906 2.578125 -3.890625 C 2.484375 -3.898438 2.390625 -3.90625 2.296875 -3.90625 C 2.023438 -3.90625 1.796875 -3.859375 1.609375 -3.765625 C 1.429688 -3.679688 1.285156 -3.554688 1.171875 -3.390625 C 1.066406 -3.234375 0.988281 -3.050781 0.9375 -2.84375 C 0.894531 -2.632812 0.867188 -2.410156 0.859375 -2.171875 L 0.890625 -2.171875 C 0.984375 -2.316406 1.113281 -2.4375 1.28125 -2.53125 C 1.445312 -2.632812 1.65625 -2.6875 1.90625 -2.6875 C 2.28125 -2.6875 2.582031 -2.570312 2.8125 -2.34375 C 3.039062 -2.113281 3.15625 -1.789062 3.15625 -1.375 C 3.15625 -0.925781 3.03125 -0.570312 2.78125 -0.3125 C 2.53125 -0.0625 2.195312 0.0625 1.78125 0.0625 C 1.507812 0.0625 1.265625 -0.00390625 1.046875 -0.140625 C 0.828125 -0.273438 0.648438 -0.484375 0.515625 -0.765625 C 0.390625 -1.046875 0.328125 -1.398438 0.328125 -1.828125 Z M 1.78125 -0.390625 C 2.03125 -0.390625 2.234375 -0.46875 2.390625 -0.625 C 2.546875 -0.789062 2.625 -1.039062 2.625 -1.375 C 2.625 -1.644531 2.554688 -1.859375 2.421875 -2.015625 C 2.285156 -2.179688 2.078125 -2.265625 1.796875 -2.265625 C 1.609375 -2.265625 1.441406 -2.222656 1.296875 -2.140625 C 1.160156 -2.066406 1.050781 -1.96875 0.96875 -1.84375 C 0.894531 -1.726562 0.859375 -1.609375 0.859375 -1.484375 C 0.859375 -1.304688 0.890625 -1.132812 0.953125 -0.96875 C 1.023438 -0.800781 1.128906 -0.660156 1.265625 -0.546875 C 1.398438 -0.441406 1.570312 -0.390625 1.78125 -0.390625 Z M 1.78125 -0.390625 "/>
+</g>
+<g id="glyph-0-6">
+<path d="M 1.703125 -4.34375 C 2.085938 -4.34375 2.398438 -4.253906 2.640625 -4.078125 C 2.878906 -3.898438 3 -3.644531 3 -3.3125 C 3 -3.144531 2.957031 -2.992188 2.875 -2.859375 C 2.800781 -2.734375 2.703125 -2.617188 2.578125 -2.515625 C 2.460938 -2.421875 2.328125 -2.335938 2.171875 -2.265625 C 2.347656 -2.179688 2.507812 -2.085938 2.65625 -1.984375 C 2.800781 -1.878906 2.914062 -1.753906 3 -1.609375 C 3.082031 -1.472656 3.125 -1.304688 3.125 -1.109375 C 3.125 -0.742188 3 -0.457031 2.75 -0.25 C 2.5 -0.0390625 2.160156 0.0625 1.734375 0.0625 C 1.265625 0.0625 0.90625 -0.0351562 0.65625 -0.234375 C 0.414062 -0.441406 0.296875 -0.726562 0.296875 -1.09375 C 0.296875 -1.289062 0.335938 -1.457031 0.421875 -1.59375 C 0.503906 -1.738281 0.613281 -1.863281 0.75 -1.96875 C 0.882812 -2.070312 1.03125 -2.160156 1.1875 -2.234375 C 0.976562 -2.359375 0.800781 -2.503906 0.65625 -2.671875 C 0.507812 -2.835938 0.4375 -3.054688 0.4375 -3.328125 C 0.4375 -3.546875 0.488281 -3.726562 0.59375 -3.875 C 0.707031 -4.03125 0.859375 -4.144531 1.046875 -4.21875 C 1.242188 -4.300781 1.460938 -4.34375 1.703125 -4.34375 Z M 1.703125 -3.921875 C 1.484375 -3.921875 1.300781 -3.863281 1.15625 -3.75 C 1.019531 -3.644531 0.953125 -3.492188 0.953125 -3.296875 C 0.953125 -3.148438 0.984375 -3.023438 1.046875 -2.921875 C 1.117188 -2.828125 1.210938 -2.742188 1.328125 -2.671875 C 1.453125 -2.597656 1.585938 -2.53125 1.734375 -2.46875 C 1.941406 -2.5625 2.113281 -2.664062 2.25 -2.78125 C 2.394531 -2.90625 2.46875 -3.078125 2.46875 -3.296875 C 2.46875 -3.492188 2.394531 -3.644531 2.25 -3.75 C 2.113281 -3.863281 1.929688 -3.921875 1.703125 -3.921875 Z M 0.8125 -1.09375 C 0.8125 -0.882812 0.882812 -0.707031 1.03125 -0.5625 C 1.175781 -0.425781 1.40625 -0.359375 1.71875 -0.359375 C 2.007812 -0.359375 2.226562 -0.425781 2.375 -0.5625 C 2.53125 -0.707031 2.609375 -0.890625 2.609375 -1.109375 C 2.609375 -1.316406 2.523438 -1.488281 2.359375 -1.625 C 2.203125 -1.757812 1.988281 -1.878906 1.71875 -1.984375 L 1.625 -2.015625 C 1.351562 -1.910156 1.148438 -1.785156 1.015625 -1.640625 C 0.878906 -1.492188 0.8125 -1.3125 0.8125 -1.09375 Z M 0.8125 -1.09375 "/>
+</g>
+<g id="glyph-0-7">
+<path d="M 2.953125 -3.28125 C 2.953125 -2.988281 2.875 -2.757812 2.71875 -2.59375 C 2.5625 -2.425781 2.34375 -2.3125 2.0625 -2.25 L 2.0625 -2.234375 C 2.414062 -2.191406 2.675781 -2.082031 2.84375 -1.90625 C 3.007812 -1.726562 3.09375 -1.5 3.09375 -1.21875 C 3.09375 -0.96875 3.03125 -0.742188 2.90625 -0.546875 C 2.789062 -0.359375 2.613281 -0.207031 2.375 -0.09375 C 2.132812 0.0078125 1.828125 0.0625 1.453125 0.0625 C 1.222656 0.0625 1.007812 0.0390625 0.8125 0 C 0.625 -0.03125 0.441406 -0.0859375 0.265625 -0.171875 L 0.265625 -0.671875 C 0.453125 -0.578125 0.644531 -0.503906 0.84375 -0.453125 C 1.050781 -0.410156 1.253906 -0.390625 1.453125 -0.390625 C 1.835938 -0.390625 2.113281 -0.460938 2.28125 -0.609375 C 2.445312 -0.753906 2.53125 -0.960938 2.53125 -1.234375 C 2.53125 -1.492188 2.425781 -1.679688 2.21875 -1.796875 C 2.007812 -1.921875 1.71875 -1.984375 1.34375 -1.984375 L 0.921875 -1.984375 L 0.921875 -2.4375 L 1.34375 -2.4375 C 1.695312 -2.4375 1.960938 -2.507812 2.140625 -2.65625 C 2.328125 -2.800781 2.421875 -3 2.421875 -3.25 C 2.421875 -3.457031 2.347656 -3.617188 2.203125 -3.734375 C 2.066406 -3.847656 1.878906 -3.90625 1.640625 -3.90625 C 1.410156 -3.90625 1.210938 -3.867188 1.046875 -3.796875 C 0.878906 -3.734375 0.71875 -3.648438 0.5625 -3.546875 L 0.296875 -3.90625 C 0.441406 -4.019531 0.628906 -4.117188 0.859375 -4.203125 C 1.085938 -4.296875 1.34375 -4.34375 1.625 -4.34375 C 2.070312 -4.34375 2.40625 -4.242188 2.625 -4.046875 C 2.84375 -3.847656 2.953125 -3.59375 2.953125 -3.28125 Z M 2.953125 -3.28125 "/>
+</g>
+<g id="glyph-0-8">
+<path d="M 3.125 -2.453125 C 3.125 -2.140625 3.09375 -1.832031 3.03125 -1.53125 C 2.976562 -1.238281 2.878906 -0.972656 2.734375 -0.734375 C 2.597656 -0.492188 2.398438 -0.300781 2.140625 -0.15625 C 1.890625 -0.0078125 1.5625 0.0625 1.15625 0.0625 C 1.070312 0.0625 0.976562 0.0546875 0.875 0.046875 C 0.769531 0.0351562 0.679688 0.0195312 0.609375 0 L 0.609375 -0.453125 C 0.765625 -0.398438 0.941406 -0.375 1.140625 -0.375 C 1.421875 -0.375 1.648438 -0.414062 1.828125 -0.5 C 2.015625 -0.59375 2.160156 -0.71875 2.265625 -0.875 C 2.378906 -1.039062 2.457031 -1.226562 2.5 -1.4375 C 2.550781 -1.644531 2.582031 -1.863281 2.59375 -2.09375 L 2.546875 -2.09375 C 2.460938 -1.957031 2.335938 -1.84375 2.171875 -1.75 C 2.003906 -1.65625 1.789062 -1.609375 1.53125 -1.609375 C 1.164062 -1.609375 0.867188 -1.71875 0.640625 -1.9375 C 0.410156 -2.164062 0.296875 -2.484375 0.296875 -2.890625 C 0.296875 -3.191406 0.351562 -3.453125 0.46875 -3.671875 C 0.582031 -3.890625 0.738281 -4.054688 0.9375 -4.171875 C 1.144531 -4.285156 1.390625 -4.34375 1.671875 -4.34375 C 1.941406 -4.34375 2.1875 -4.273438 2.40625 -4.140625 C 2.625 -4.003906 2.796875 -3.796875 2.921875 -3.515625 C 3.054688 -3.234375 3.125 -2.878906 3.125 -2.453125 Z M 1.671875 -3.90625 C 1.421875 -3.90625 1.21875 -3.820312 1.0625 -3.65625 C 0.90625 -3.488281 0.828125 -3.238281 0.828125 -2.90625 C 0.828125 -2.625 0.890625 -2.40625 1.015625 -2.25 C 1.148438 -2.09375 1.359375 -2.015625 1.640625 -2.015625 C 1.835938 -2.015625 2.003906 -2.050781 2.140625 -2.125 C 2.285156 -2.207031 2.394531 -2.304688 2.46875 -2.421875 C 2.550781 -2.546875 2.59375 -2.671875 2.59375 -2.796875 C 2.59375 -2.972656 2.554688 -3.144531 2.484375 -3.3125 C 2.410156 -3.476562 2.304688 -3.617188 2.171875 -3.734375 C 2.035156 -3.847656 1.867188 -3.90625 1.671875 -3.90625 Z M 1.671875 -3.90625 "/>
+</g>
+<g id="glyph-0-9">
+<path d="M 3.3125 -0.96875 L 2.6875 -0.96875 L 2.6875 0 L 2.171875 0 L 2.171875 -0.96875 L 0.125 -0.96875 L 0.125 -1.421875 L 2.140625 -4.3125 L 2.6875 -4.3125 L 2.6875 -1.453125 L 3.3125 -1.453125 Z M 2.171875 -2.796875 C 2.171875 -3.003906 2.175781 -3.179688 2.1875 -3.328125 C 2.195312 -3.472656 2.203125 -3.613281 2.203125 -3.75 L 2.1875 -3.75 C 2.15625 -3.664062 2.113281 -3.578125 2.0625 -3.484375 C 2.007812 -3.398438 1.960938 -3.332031 1.921875 -3.28125 L 0.640625 -1.453125 L 2.171875 -1.453125 Z M 2.171875 -2.796875 "/>
+</g>
+<g id="glyph-1-0">
+<path d="M -4.375 -2.71875 C -4.375 -3.25 -4.1875 -3.675781 -3.8125 -4 C -3.445312 -4.320312 -2.894531 -4.484375 -2.15625 -4.484375 C -1.425781 -4.484375 -0.867188 -4.320312 -0.484375 -4 C -0.109375 -3.675781 0.078125 -3.25 0.078125 -2.71875 C 0.078125 -2.382812 0.015625 -2.109375 -0.109375 -1.890625 C -0.234375 -1.671875 -0.378906 -1.503906 -0.546875 -1.390625 L -0.546875 -1.34375 C -0.453125 -1.351562 -0.332031 -1.363281 -0.1875 -1.375 C -0.0507812 -1.382812 0.0625 -1.390625 0.15625 -1.390625 L 1.921875 -1.390625 L 1.921875 -0.6875 L -4.28125 -0.6875 L -4.28125 -1.25 L -3.703125 -1.359375 L -3.703125 -1.390625 C -3.890625 -1.515625 -4.046875 -1.679688 -4.171875 -1.890625 C -4.304688 -2.097656 -4.375 -2.375 -4.375 -2.71875 Z M -3.78125 -2.59375 C -3.78125 -2.15625 -3.65625 -1.847656 -3.40625 -1.671875 C -3.164062 -1.492188 -2.789062 -1.398438 -2.28125 -1.390625 L -2.15625 -1.390625 C -1.625 -1.390625 -1.210938 -1.472656 -0.921875 -1.640625 C -0.640625 -1.816406 -0.5 -2.140625 -0.5 -2.609375 C -0.5 -2.867188 -0.570312 -3.082031 -0.71875 -3.25 C -0.863281 -3.414062 -1.0625 -3.539062 -1.3125 -3.625 C -1.5625 -3.707031 -1.84375 -3.75 -2.15625 -3.75 C -2.644531 -3.75 -3.035156 -3.65625 -3.328125 -3.46875 C -3.628906 -3.28125 -3.78125 -2.988281 -3.78125 -2.59375 Z M -3.78125 -2.59375 "/>
+</g>
+<g id="glyph-1-1">
+<path d="M -4.28125 -0.015625 L -4.28125 -0.765625 L -1.84375 -1.6875 C -1.632812 -1.769531 -1.429688 -1.84375 -1.234375 -1.90625 C -1.035156 -1.96875 -0.851562 -2.015625 -0.6875 -2.046875 L -0.6875 -2.078125 C -0.8125 -2.109375 -0.984375 -2.160156 -1.203125 -2.234375 C -1.421875 -2.304688 -1.640625 -2.378906 -1.859375 -2.453125 L -4.28125 -3.3125 L -4.28125 -4.078125 L 0.59375 -2.234375 C 1 -2.085938 1.320312 -1.894531 1.5625 -1.65625 C 1.800781 -1.414062 1.921875 -1.085938 1.921875 -0.671875 C 1.921875 -0.546875 1.910156 -0.429688 1.890625 -0.328125 C 1.878906 -0.234375 1.867188 -0.15625 1.859375 -0.09375 L 1.296875 -0.09375 C 1.304688 -0.144531 1.316406 -0.210938 1.328125 -0.296875 C 1.335938 -0.378906 1.34375 -0.46875 1.34375 -0.5625 C 1.34375 -0.800781 1.269531 -1 1.125 -1.15625 C 0.988281 -1.3125 0.804688 -1.429688 0.578125 -1.515625 L 0.015625 -1.734375 Z M -4.28125 -0.015625 "/>
+</g>
+<g id="glyph-1-2">
+<path d="M 0.078125 -2.203125 C 0.078125 -1.671875 -0.101562 -1.242188 -0.46875 -0.921875 C -0.84375 -0.597656 -1.398438 -0.4375 -2.140625 -0.4375 C -2.867188 -0.4375 -3.421875 -0.597656 -3.796875 -0.921875 C -4.179688 -1.242188 -4.375 -1.671875 -4.375 -2.203125 C -4.375 -2.535156 -4.3125 -2.804688 -4.1875 -3.015625 C -4.0625 -3.234375 -3.910156 -3.40625 -3.734375 -3.53125 L -3.734375 -3.578125 C -3.804688 -3.578125 -3.910156 -3.566406 -4.046875 -3.546875 C -4.179688 -3.535156 -4.289062 -3.53125 -4.375 -3.53125 L -6.078125 -3.53125 L -6.078125 -4.234375 L 0 -4.234375 L 0 -3.671875 L -0.578125 -3.5625 L -0.578125 -3.53125 C -0.390625 -3.40625 -0.234375 -3.234375 -0.109375 -3.015625 C 0.015625 -2.804688 0.078125 -2.535156 0.078125 -2.203125 Z M -0.5 -2.3125 C -0.5 -2.757812 -0.625 -3.078125 -0.875 -3.265625 C -1.125 -3.453125 -1.5 -3.546875 -2 -3.546875 L -2.125 -3.546875 C -2.65625 -3.546875 -3.0625 -3.457031 -3.34375 -3.28125 C -3.632812 -3.101562 -3.78125 -2.773438 -3.78125 -2.296875 C -3.78125 -1.921875 -3.628906 -1.640625 -3.328125 -1.453125 C -3.023438 -1.265625 -2.625 -1.171875 -2.125 -1.171875 C -1.613281 -1.171875 -1.210938 -1.265625 -0.921875 -1.453125 C -0.640625 -1.640625 -0.5 -1.925781 -0.5 -2.3125 Z M -0.5 -2.3125 "/>
+</g>
+<g id="glyph-1-3">
+<path d="M -4.375 -2.6875 C -4.375 -2.757812 -4.367188 -2.84375 -4.359375 -2.9375 C -4.347656 -3.03125 -4.332031 -3.113281 -4.3125 -3.1875 L -3.671875 -3.09375 C -3.691406 -3.019531 -3.707031 -2.941406 -3.71875 -2.859375 C -3.726562 -2.785156 -3.734375 -2.707031 -3.734375 -2.625 C -3.734375 -2.40625 -3.671875 -2.203125 -3.546875 -2.015625 C -3.429688 -1.828125 -3.265625 -1.675781 -3.046875 -1.5625 C -2.828125 -1.445312 -2.570312 -1.390625 -2.28125 -1.390625 L 0 -1.390625 L 0 -0.6875 L -4.28125 -0.6875 L -4.28125 -1.25 L -3.5 -1.34375 L -3.5 -1.375 C -3.738281 -1.507812 -3.941406 -1.6875 -4.109375 -1.90625 C -4.285156 -2.125 -4.375 -2.382812 -4.375 -2.6875 Z M -4.375 -2.6875 "/>
+</g>
+<g id="glyph-1-4">
+<path d="M -2.15625 -4.40625 C -1.445312 -4.40625 -0.894531 -4.222656 -0.5 -3.859375 C -0.113281 -3.503906 0.078125 -3.019531 0.078125 -2.40625 C 0.078125 -2.03125 -0.00390625 -1.691406 -0.171875 -1.390625 C -0.347656 -1.097656 -0.601562 -0.863281 -0.9375 -0.6875 C -1.269531 -0.519531 -1.675781 -0.4375 -2.15625 -0.4375 C -2.863281 -0.4375 -3.410156 -0.613281 -3.796875 -0.96875 C -4.179688 -1.332031 -4.375 -1.820312 -4.375 -2.4375 C -4.375 -2.820312 -4.285156 -3.160156 -4.109375 -3.453125 C -3.929688 -3.753906 -3.675781 -3.988281 -3.34375 -4.15625 C -3.019531 -4.320312 -2.625 -4.40625 -2.15625 -4.40625 Z M -2.15625 -1.171875 C -1.644531 -1.171875 -1.238281 -1.269531 -0.9375 -1.46875 C -0.644531 -1.664062 -0.5 -1.984375 -0.5 -2.421875 C -0.5 -2.859375 -0.644531 -3.175781 -0.9375 -3.375 C -1.238281 -3.582031 -1.644531 -3.6875 -2.15625 -3.6875 C -2.65625 -3.6875 -3.050781 -3.582031 -3.34375 -3.375 C -3.632812 -3.175781 -3.78125 -2.859375 -3.78125 -2.421875 C -3.78125 -1.984375 -3.632812 -1.664062 -3.34375 -1.46875 C -3.050781 -1.269531 -2.65625 -1.171875 -2.15625 -1.171875 Z M -2.15625 -1.171875 "/>
+</g>
+<g id="glyph-1-5">
+<path d="M -3.75 -2.65625 L -3.75 -1.578125 L 0 -1.578125 L 0 -0.875 L -3.75 -0.875 L -3.75 -0.125 L -4.078125 -0.125 L -4.3125 -0.875 L -4.5625 -0.875 C -5.113281 -0.875 -5.507812 -0.992188 -5.75 -1.234375 C -6 -1.484375 -6.125 -1.828125 -6.125 -2.265625 C -6.125 -2.429688 -6.109375 -2.582031 -6.078125 -2.71875 C -6.046875 -2.863281 -6.007812 -2.988281 -5.96875 -3.09375 L -5.421875 -2.90625 C -5.453125 -2.820312 -5.476562 -2.722656 -5.5 -2.609375 C -5.53125 -2.503906 -5.546875 -2.390625 -5.546875 -2.265625 C -5.546875 -2.035156 -5.46875 -1.863281 -5.3125 -1.75 C -5.15625 -1.632812 -4.90625 -1.578125 -4.5625 -1.578125 L -4.28125 -1.578125 L -4.28125 -2.65625 Z M -3.75 -2.65625 "/>
+</g>
+<g id="glyph-1-6">
+<path d="M -5.890625 -1.046875 C -5.890625 -1.148438 -5.851562 -1.242188 -5.78125 -1.328125 C -5.71875 -1.410156 -5.609375 -1.453125 -5.453125 -1.453125 C -5.296875 -1.453125 -5.179688 -1.410156 -5.109375 -1.328125 C -5.035156 -1.242188 -5 -1.148438 -5 -1.046875 C -5 -0.921875 -5.035156 -0.816406 -5.109375 -0.734375 C -5.179688 -0.660156 -5.296875 -0.625 -5.453125 -0.625 C -5.609375 -0.625 -5.71875 -0.660156 -5.78125 -0.734375 C -5.851562 -0.816406 -5.890625 -0.921875 -5.890625 -1.046875 Z M -4.28125 -1.390625 L 0 -1.390625 L 0 -0.6875 L -4.28125 -0.6875 Z M -4.28125 -1.390625 "/>
+</g>
+<g id="glyph-1-7">
+<path d="M 0 -1.390625 L 0 -0.6875 L -6.078125 -0.6875 L -6.078125 -1.390625 Z M 0 -1.390625 "/>
+</g>
+<g id="glyph-1-8">
+<path d="M -1.828125 -0.3125 L -2.453125 -0.3125 L -2.453125 -2.25 L -1.828125 -2.25 Z M -1.828125 -0.3125 "/>
+</g>
+<g id="glyph-1-9">
+<path d="M -4.28125 -4.265625 L 0 -4.265625 L 0 -3.6875 L -0.5625 -3.578125 L -0.5625 -3.546875 C -0.34375 -3.410156 -0.179688 -3.21875 -0.078125 -2.96875 C 0.0234375 -2.726562 0.078125 -2.46875 0.078125 -2.1875 C 0.078125 -1.675781 -0.0390625 -1.285156 -0.28125 -1.015625 C -0.53125 -0.753906 -0.929688 -0.625 -1.484375 -0.625 L -4.28125 -0.625 L -4.28125 -1.34375 L -1.53125 -1.34375 C -0.84375 -1.34375 -0.5 -1.660156 -0.5 -2.296875 C -0.5 -2.773438 -0.628906 -3.101562 -0.890625 -3.28125 C -1.160156 -3.46875 -1.550781 -3.5625 -2.0625 -3.5625 L -4.28125 -3.5625 Z M -4.28125 -4.265625 "/>
+</g>
+<g id="glyph-1-10">
+<path d="M -4.375 -2.75 C -4.375 -3.257812 -4.25 -3.644531 -4 -3.90625 C -3.75 -4.164062 -3.347656 -4.296875 -2.796875 -4.296875 L 0 -4.296875 L 0 -3.59375 L -2.75 -3.59375 C -3.4375 -3.59375 -3.78125 -3.273438 -3.78125 -2.640625 C -3.78125 -2.160156 -3.644531 -1.832031 -3.375 -1.65625 C -3.101562 -1.476562 -2.71875 -1.390625 -2.21875 -1.390625 L 0 -1.390625 L 0 -0.6875 L -4.28125 -0.6875 L -4.28125 -1.25 L -3.703125 -1.359375 L -3.703125 -1.390625 C -3.929688 -1.523438 -4.097656 -1.71875 -4.203125 -1.96875 C -4.316406 -2.21875 -4.375 -2.476562 -4.375 -2.75 Z M -4.375 -2.75 "/>
+</g>
+<g id="glyph-1-11">
+<path d="M -4.375 -5.390625 C -4.375 -5.867188 -4.25 -6.226562 -4 -6.46875 C -3.75 -6.707031 -3.347656 -6.828125 -2.796875 -6.828125 L 0 -6.828125 L 0 -6.140625 L -2.765625 -6.140625 C -3.441406 -6.140625 -3.78125 -5.847656 -3.78125 -5.265625 C -3.78125 -4.847656 -3.660156 -4.550781 -3.421875 -4.375 C -3.179688 -4.195312 -2.832031 -4.109375 -2.375 -4.109375 L 0 -4.109375 L 0 -3.40625 L -2.765625 -3.40625 C -3.441406 -3.40625 -3.78125 -3.113281 -3.78125 -2.53125 C -3.78125 -2.09375 -3.644531 -1.789062 -3.375 -1.625 C -3.101562 -1.46875 -2.71875 -1.390625 -2.21875 -1.390625 L 0 -1.390625 L 0 -0.6875 L -4.28125 -0.6875 L -4.28125 -1.25 L -3.703125 -1.359375 L -3.703125 -1.390625 C -3.929688 -1.523438 -4.097656 -1.703125 -4.203125 -1.921875 C -4.316406 -2.148438 -4.375 -2.394531 -4.375 -2.65625 C -4.375 -3.320312 -4.128906 -3.757812 -3.640625 -3.96875 L -3.640625 -4.015625 C -3.890625 -4.148438 -4.070312 -4.34375 -4.1875 -4.59375 C -4.3125 -4.84375 -4.375 -5.109375 -4.375 -5.390625 Z M -4.375 -5.390625 "/>
+</g>
+<g id="glyph-1-12">
+<path d="M -4.375 -2.34375 C -4.375 -2.707031 -4.289062 -3.019531 -4.125 -3.28125 C -3.96875 -3.550781 -3.742188 -3.753906 -3.453125 -3.890625 C -3.160156 -4.035156 -2.820312 -4.109375 -2.4375 -4.109375 L -2.015625 -4.109375 L -2.015625 -1.171875 C -1.523438 -1.179688 -1.148438 -1.300781 -0.890625 -1.53125 C -0.640625 -1.769531 -0.515625 -2.101562 -0.515625 -2.53125 C -0.515625 -2.800781 -0.539062 -3.039062 -0.59375 -3.25 C -0.644531 -3.46875 -0.71875 -3.6875 -0.8125 -3.90625 L -0.203125 -3.90625 C -0.109375 -3.6875 -0.0390625 -3.46875 0 -3.25 C 0.0507812 -3.039062 0.078125 -2.789062 0.078125 -2.5 C 0.078125 -2.09375 -0.00390625 -1.734375 -0.171875 -1.421875 C -0.335938 -1.109375 -0.582031 -0.863281 -0.90625 -0.6875 C -1.238281 -0.519531 -1.640625 -0.4375 -2.109375 -0.4375 C -2.578125 -0.4375 -2.976562 -0.515625 -3.3125 -0.671875 C -3.65625 -0.828125 -3.914062 -1.046875 -4.09375 -1.328125 C -4.28125 -1.617188 -4.375 -1.957031 -4.375 -2.34375 Z M -3.796875 -2.328125 C -3.796875 -1.992188 -3.6875 -1.726562 -3.46875 -1.53125 C -3.25 -1.332031 -2.945312 -1.21875 -2.5625 -1.1875 L -2.5625 -3.375 C -2.925781 -3.363281 -3.222656 -3.273438 -3.453125 -3.109375 C -3.679688 -2.941406 -3.796875 -2.679688 -3.796875 -2.328125 Z M -3.796875 -2.328125 "/>
+</g>
+<g id="glyph-1-13">
+<path d="M -0.5 -2.109375 C -0.5 -2.210938 -0.503906 -2.320312 -0.515625 -2.4375 C -0.535156 -2.550781 -0.554688 -2.644531 -0.578125 -2.71875 L -0.046875 -2.71875 C -0.00390625 -2.632812 0.0234375 -2.523438 0.046875 -2.390625 C 0.0664062 -2.253906 0.078125 -2.117188 0.078125 -1.984375 C 0.078125 -1.765625 0.0390625 -1.5625 -0.03125 -1.375 C -0.113281 -1.1875 -0.25 -1.03125 -0.4375 -0.90625 C -0.632812 -0.789062 -0.90625 -0.734375 -1.25 -0.734375 L -3.75 -0.734375 L -3.75 -0.125 L -4.078125 -0.125 L -4.359375 -0.75 L -5.265625 -1.03125 L -5.265625 -1.4375 L -4.28125 -1.4375 L -4.28125 -2.6875 L -3.75 -2.6875 L -3.75 -1.4375 L -1.265625 -1.4375 C -1.003906 -1.4375 -0.8125 -1.5 -0.6875 -1.625 C -0.5625 -1.75 -0.5 -1.910156 -0.5 -2.109375 Z M -0.5 -2.109375 "/>
+</g>
+<g id="glyph-1-14">
+<path d="M -4.359375 -2.296875 C -4.359375 -2.828125 -4.242188 -3.21875 -4.015625 -3.46875 C -3.785156 -3.71875 -3.421875 -3.84375 -2.921875 -3.84375 L 0 -3.84375 L 0 -3.328125 L -0.609375 -3.1875 L -0.609375 -3.15625 C -0.367188 -2.96875 -0.191406 -2.769531 -0.078125 -2.5625 C 0.0234375 -2.363281 0.078125 -2.082031 0.078125 -1.71875 C 0.078125 -1.332031 -0.0195312 -1.007812 -0.21875 -0.75 C -0.425781 -0.5 -0.75 -0.375 -1.1875 -0.375 C -1.613281 -0.375 -1.941406 -0.539062 -2.171875 -0.875 C -2.410156 -1.207031 -2.539062 -1.722656 -2.5625 -2.421875 L -2.578125 -3.15625 L -2.84375 -3.15625 C -3.195312 -3.15625 -3.441406 -3.078125 -3.578125 -2.921875 C -3.722656 -2.765625 -3.796875 -2.546875 -3.796875 -2.265625 C -3.796875 -2.035156 -3.757812 -1.816406 -3.6875 -1.609375 C -3.625 -1.410156 -3.550781 -1.226562 -3.46875 -1.0625 L -3.984375 -0.84375 C -4.085938 -1.03125 -4.175781 -1.25 -4.25 -1.5 C -4.320312 -1.757812 -4.359375 -2.023438 -4.359375 -2.296875 Z M -2.078125 -2.515625 C -2.054688 -1.984375 -1.96875 -1.613281 -1.8125 -1.40625 C -1.664062 -1.195312 -1.457031 -1.09375 -1.1875 -1.09375 C -0.945312 -1.09375 -0.769531 -1.164062 -0.65625 -1.3125 C -0.539062 -1.457031 -0.484375 -1.644531 -0.484375 -1.875 C -0.484375 -2.238281 -0.582031 -2.539062 -0.78125 -2.78125 C -0.988281 -3.019531 -1.300781 -3.140625 -1.71875 -3.140625 L -2.09375 -3.140625 Z M -2.078125 -2.515625 "/>
+</g>
+<g id="glyph-1-15">
+<path d="M -4.59375 -1.390625 C -4.414062 -1.390625 -4.25 -1.382812 -4.09375 -1.375 C -3.9375 -1.363281 -3.8125 -1.351562 -3.71875 -1.34375 L -3.71875 -1.390625 C -3.894531 -1.503906 -4.046875 -1.664062 -4.171875 -1.875 C -4.296875 -2.09375 -4.359375 -2.375 -4.359375 -2.71875 C -4.359375 -3.25 -4.171875 -3.675781 -3.796875 -4 C -3.429688 -4.320312 -2.878906 -4.484375 -2.140625 -4.484375 C -1.410156 -4.484375 -0.859375 -4.316406 -0.484375 -3.984375 C -0.109375 -3.660156 0.078125 -3.238281 0.078125 -2.71875 C 0.078125 -2.375 0.0195312 -2.09375 -0.09375 -1.875 C -0.21875 -1.664062 -0.367188 -1.503906 -0.546875 -1.390625 L -0.546875 -1.328125 L 0 -1.1875 L 0 -0.6875 L -6.078125 -0.6875 L -6.078125 -1.390625 Z M -3.78125 -2.59375 C -3.78125 -2.132812 -3.644531 -1.816406 -3.375 -1.640625 C -3.113281 -1.472656 -2.710938 -1.390625 -2.171875 -1.390625 L -2.140625 -1.390625 C -1.609375 -1.390625 -1.203125 -1.472656 -0.921875 -1.640625 C -0.640625 -1.816406 -0.5 -2.140625 -0.5 -2.609375 C -0.5 -2.992188 -0.640625 -3.28125 -0.921875 -3.46875 C -1.210938 -3.65625 -1.625 -3.75 -2.15625 -3.75 C -3.238281 -3.75 -3.78125 -3.363281 -3.78125 -2.59375 Z M -3.78125 -2.59375 "/>
+</g>
+<g id="glyph-1-16">
+<path d="M -5.453125 -0.625 C -5.609375 -0.625 -5.71875 -0.660156 -5.78125 -0.734375 C -5.851562 -0.816406 -5.890625 -0.921875 -5.890625 -1.046875 C -5.890625 -1.148438 -5.851562 -1.242188 -5.78125 -1.328125 C -5.71875 -1.410156 -5.609375 -1.453125 -5.453125 -1.453125 C -5.296875 -1.453125 -5.179688 -1.410156 -5.109375 -1.328125 C -5.035156 -1.242188 -5 -1.148438 -5 -1.046875 C -5 -0.921875 -5.035156 -0.816406 -5.109375 -0.734375 C -5.179688 -0.660156 -5.296875 -0.625 -5.453125 -0.625 Z M 1.921875 -0.171875 C 1.921875 -0.0351562 1.910156 0.078125 1.890625 0.171875 C 1.867188 0.273438 1.847656 0.363281 1.828125 0.4375 L 1.25 0.4375 C 1.269531 0.351562 1.289062 0.269531 1.3125 0.1875 C 1.332031 0.101562 1.34375 0.0078125 1.34375 -0.09375 C 1.34375 -0.257812 1.296875 -0.398438 1.203125 -0.515625 C 1.109375 -0.628906 0.925781 -0.6875 0.65625 -0.6875 L -4.28125 -0.6875 L -4.28125 -1.390625 L 0.640625 -1.390625 C 1.035156 -1.390625 1.347656 -1.289062 1.578125 -1.09375 C 1.804688 -0.90625 1.921875 -0.597656 1.921875 -0.171875 Z M 1.921875 -0.171875 "/>
+</g>
+<g id="glyph-1-17">
+<path d="M 0 -1.625 L -4.28125 0 L -4.28125 -0.75 L -1.765625 -1.65625 C -1.640625 -1.707031 -1.503906 -1.753906 -1.359375 -1.796875 C -1.222656 -1.847656 -1.085938 -1.890625 -0.953125 -1.921875 C -0.828125 -1.960938 -0.71875 -1.992188 -0.625 -2.015625 L -0.625 -2.046875 C -0.71875 -2.066406 -0.828125 -2.09375 -0.953125 -2.125 C -1.085938 -2.164062 -1.226562 -2.210938 -1.375 -2.265625 C -1.519531 -2.316406 -1.648438 -2.363281 -1.765625 -2.40625 L -4.28125 -3.3125 L -4.28125 -4.0625 L 0 -2.4375 Z M 0 -1.625 "/>
+</g>
+<g id="glyph-1-18">
+<path d="M -1.1875 -3.46875 C -0.769531 -3.46875 -0.453125 -3.3125 -0.234375 -3 C -0.0234375 -2.695312 0.078125 -2.285156 0.078125 -1.765625 C 0.078125 -1.460938 0.0507812 -1.203125 0 -0.984375 C -0.0390625 -0.765625 -0.101562 -0.578125 -0.1875 -0.421875 L -0.828125 -0.421875 C -0.742188 -0.585938 -0.664062 -0.789062 -0.59375 -1.03125 C -0.519531 -1.28125 -0.484375 -1.53125 -0.484375 -1.78125 C -0.484375 -2.132812 -0.539062 -2.390625 -0.65625 -2.546875 C -0.769531 -2.710938 -0.925781 -2.796875 -1.125 -2.796875 C -1.226562 -2.796875 -1.320312 -2.765625 -1.40625 -2.703125 C -1.488281 -2.640625 -1.570312 -2.53125 -1.65625 -2.375 C -1.75 -2.226562 -1.847656 -2.015625 -1.953125 -1.734375 C -2.054688 -1.453125 -2.160156 -1.210938 -2.265625 -1.015625 C -2.378906 -0.828125 -2.507812 -0.675781 -2.65625 -0.5625 C -2.800781 -0.457031 -2.992188 -0.40625 -3.234375 -0.40625 C -3.597656 -0.40625 -3.878906 -0.550781 -4.078125 -0.84375 C -4.273438 -1.144531 -4.375 -1.535156 -4.375 -2.015625 C -4.375 -2.273438 -4.347656 -2.519531 -4.296875 -2.75 C -4.242188 -2.976562 -4.171875 -3.191406 -4.078125 -3.390625 L -3.515625 -3.140625 C -3.585938 -2.960938 -3.648438 -2.773438 -3.703125 -2.578125 C -3.765625 -2.378906 -3.796875 -2.175781 -3.796875 -1.96875 C -3.796875 -1.675781 -3.75 -1.453125 -3.65625 -1.296875 C -3.5625 -1.148438 -3.429688 -1.078125 -3.265625 -1.078125 C -3.148438 -1.078125 -3.050781 -1.109375 -2.96875 -1.171875 C -2.882812 -1.242188 -2.800781 -1.363281 -2.71875 -1.53125 C -2.644531 -1.695312 -2.554688 -1.914062 -2.453125 -2.1875 C -2.347656 -2.457031 -2.242188 -2.6875 -2.140625 -2.875 C -2.035156 -3.070312 -1.90625 -3.21875 -1.75 -3.3125 C -1.601562 -3.414062 -1.414062 -3.46875 -1.1875 -3.46875 Z M -1.1875 -3.46875 "/>
+</g>
+<g id="glyph-1-19">
+<path d="M 0.078125 -2.40625 C 0.078125 -2.019531 0 -1.675781 -0.15625 -1.375 C -0.3125 -1.082031 -0.550781 -0.851562 -0.875 -0.6875 C -1.195312 -0.519531 -1.613281 -0.4375 -2.125 -0.4375 C -2.644531 -0.4375 -3.070312 -0.523438 -3.40625 -0.703125 C -3.738281 -0.878906 -3.984375 -1.117188 -4.140625 -1.421875 C -4.296875 -1.722656 -4.375 -2.066406 -4.375 -2.453125 C -4.375 -2.671875 -4.347656 -2.878906 -4.296875 -3.078125 C -4.253906 -3.285156 -4.203125 -3.453125 -4.140625 -3.578125 L -3.546875 -3.359375 C -3.597656 -3.234375 -3.644531 -3.082031 -3.6875 -2.90625 C -3.726562 -2.738281 -3.75 -2.582031 -3.75 -2.4375 C -3.75 -1.59375 -3.207031 -1.171875 -2.125 -1.171875 C -1.613281 -1.171875 -1.21875 -1.269531 -0.9375 -1.46875 C -0.664062 -1.675781 -0.53125 -1.984375 -0.53125 -2.390625 C -0.53125 -2.628906 -0.550781 -2.835938 -0.59375 -3.015625 C -0.644531 -3.191406 -0.707031 -3.351562 -0.78125 -3.5 L -0.15625 -3.5 C -0.0820312 -3.351562 -0.0234375 -3.191406 0.015625 -3.015625 C 0.0546875 -2.847656 0.078125 -2.644531 0.078125 -2.40625 Z M 0.078125 -2.40625 "/>
+</g>
+<g id="glyph-2-0">
+<path d="M 2.84375 0 L 2.15625 0 L 2.15625 -3.984375 C 2.15625 -4.222656 2.15625 -4.410156 2.15625 -4.546875 C 2.164062 -4.679688 2.175781 -4.820312 2.1875 -4.96875 C 2.101562 -4.882812 2.023438 -4.8125 1.953125 -4.75 C 1.878906 -4.695312 1.789062 -4.625 1.6875 -4.53125 L 1.078125 -4.046875 L 0.71875 -4.515625 L 2.25 -5.71875 L 2.84375 -5.71875 Z M 2.84375 0 "/>
+</g>
+<g id="glyph-2-1">
+<path d="M 0.578125 -0.4375 C 0.578125 -0.632812 0.625 -0.769531 0.71875 -0.84375 C 0.8125 -0.925781 0.925781 -0.96875 1.0625 -0.96875 C 1.195312 -0.96875 1.3125 -0.925781 1.40625 -0.84375 C 1.507812 -0.769531 1.5625 -0.632812 1.5625 -0.4375 C 1.5625 -0.238281 1.507812 -0.0976562 1.40625 -0.015625 C 1.3125 0.0664062 1.195312 0.109375 1.0625 0.109375 C 0.925781 0.109375 0.8125 0.0664062 0.71875 -0.015625 C 0.625 -0.0976562 0.578125 -0.238281 0.578125 -0.4375 Z M 0.578125 -0.4375 "/>
+</g>
+<g id="glyph-2-2">
+<path d="M 4.1875 -2.859375 C 4.1875 -2.242188 4.117188 -1.71875 3.984375 -1.28125 C 3.859375 -0.84375 3.65625 -0.503906 3.375 -0.265625 C 3.101562 -0.0351562 2.738281 0.078125 2.28125 0.078125 C 1.632812 0.078125 1.15625 -0.179688 0.84375 -0.703125 C 0.539062 -1.222656 0.390625 -1.941406 0.390625 -2.859375 C 0.390625 -3.484375 0.453125 -4.015625 0.578125 -4.453125 C 0.703125 -4.890625 0.898438 -5.222656 1.171875 -5.453125 C 1.453125 -5.679688 1.820312 -5.796875 2.28125 -5.796875 C 2.914062 -5.796875 3.390625 -5.535156 3.703125 -5.015625 C 4.023438 -4.503906 4.1875 -3.785156 4.1875 -2.859375 Z M 1.09375 -2.859375 C 1.09375 -2.078125 1.179688 -1.488281 1.359375 -1.09375 C 1.535156 -0.707031 1.84375 -0.515625 2.28125 -0.515625 C 2.707031 -0.515625 3.007812 -0.707031 3.1875 -1.09375 C 3.375 -1.488281 3.46875 -2.078125 3.46875 -2.859375 C 3.46875 -3.640625 3.375 -4.222656 3.1875 -4.609375 C 3.007812 -5.003906 2.707031 -5.203125 2.28125 -5.203125 C 1.84375 -5.203125 1.535156 -5.003906 1.359375 -4.609375 C 1.179688 -4.222656 1.09375 -3.640625 1.09375 -2.859375 Z M 1.09375 -2.859375 "/>
+</g>
+<g id="glyph-3-0">
+<path d="M -1.484375 -4.34375 C -0.960938 -4.34375 -0.566406 -4.148438 -0.296875 -3.765625 C -0.0351562 -3.378906 0.09375 -2.859375 0.09375 -2.203125 C 0.09375 -1.828125 0.0625 -1.503906 0 -1.234375 C -0.0507812 -0.960938 -0.128906 -0.722656 -0.234375 -0.515625 L -1.046875 -0.515625 C -0.929688 -0.734375 -0.828125 -0.992188 -0.734375 -1.296875 C -0.648438 -1.597656 -0.609375 -1.90625 -0.609375 -2.21875 C -0.609375 -2.664062 -0.679688 -2.988281 -0.828125 -3.1875 C -0.972656 -3.382812 -1.164062 -3.484375 -1.40625 -3.484375 C -1.53125 -3.484375 -1.644531 -3.445312 -1.75 -3.375 C -1.863281 -3.300781 -1.972656 -3.171875 -2.078125 -2.984375 C -2.179688 -2.796875 -2.300781 -2.523438 -2.4375 -2.171875 C -2.570312 -1.828125 -2.707031 -1.53125 -2.84375 -1.28125 C -2.976562 -1.03125 -3.132812 -0.835938 -3.3125 -0.703125 C -3.5 -0.578125 -3.742188 -0.515625 -4.046875 -0.515625 C -4.492188 -0.515625 -4.835938 -0.695312 -5.078125 -1.0625 C -5.328125 -1.4375 -5.453125 -1.921875 -5.453125 -2.515625 C -5.453125 -2.847656 -5.421875 -3.15625 -5.359375 -3.4375 C -5.296875 -3.71875 -5.207031 -3.984375 -5.09375 -4.234375 L -4.40625 -3.9375 C -4.5 -3.707031 -4.578125 -3.46875 -4.640625 -3.21875 C -4.703125 -2.96875 -4.734375 -2.710938 -4.734375 -2.453125 C -4.734375 -2.097656 -4.675781 -1.820312 -4.5625 -1.625 C -4.445312 -1.4375 -4.289062 -1.34375 -4.09375 -1.34375 C -3.945312 -1.34375 -3.820312 -1.382812 -3.71875 -1.46875 C -3.613281 -1.5625 -3.507812 -1.707031 -3.40625 -1.90625 C -3.3125 -2.113281 -3.195312 -2.390625 -3.0625 -2.734375 C -2.9375 -3.066406 -2.804688 -3.351562 -2.671875 -3.59375 C -2.546875 -3.832031 -2.382812 -4.015625 -2.1875 -4.140625 C -2 -4.273438 -1.765625 -4.34375 -1.484375 -4.34375 Z M -1.484375 -4.34375 "/>
+</g>
+<g id="glyph-3-1">
+<path d="M 0 -1.734375 L 0 -0.84375 L -7.59375 -0.84375 L -7.59375 -1.734375 Z M 0 -1.734375 "/>
+</g>
+<g id="glyph-3-2">
+<path d="M -2.6875 -5.515625 C -1.800781 -5.515625 -1.113281 -5.285156 -0.625 -4.828125 C -0.144531 -4.378906 0.09375 -3.773438 0.09375 -3.015625 C 0.09375 -2.535156 -0.0078125 -2.109375 -0.21875 -1.734375 C -0.4375 -1.367188 -0.753906 -1.078125 -1.171875 -0.859375 C -1.585938 -0.648438 -2.09375 -0.546875 -2.6875 -0.546875 C -3.570312 -0.546875 -4.253906 -0.769531 -4.734375 -1.21875 C -5.210938 -1.664062 -5.453125 -2.273438 -5.453125 -3.046875 C -5.453125 -3.523438 -5.34375 -3.945312 -5.125 -4.3125 C -4.914062 -4.6875 -4.601562 -4.976562 -4.1875 -5.1875 C -3.78125 -5.40625 -3.28125 -5.515625 -2.6875 -5.515625 Z M -2.6875 -1.453125 C -2.050781 -1.453125 -1.546875 -1.578125 -1.171875 -1.828125 C -0.804688 -2.078125 -0.625 -2.476562 -0.625 -3.03125 C -0.625 -3.570312 -0.804688 -3.96875 -1.171875 -4.21875 C -1.546875 -4.46875 -2.050781 -4.59375 -2.6875 -4.59375 C -3.320312 -4.59375 -3.816406 -4.46875 -4.171875 -4.21875 C -4.535156 -3.96875 -4.71875 -3.566406 -4.71875 -3.015625 C -4.71875 -2.472656 -4.535156 -2.078125 -4.171875 -1.828125 C -3.816406 -1.578125 -3.320312 -1.453125 -2.6875 -1.453125 Z M -2.6875 -1.453125 "/>
+</g>
+<g id="glyph-3-3">
+<path d="M -3.03125 -4.3125 C -3.300781 -4.226562 -3.566406 -4.148438 -3.828125 -4.078125 C -4.097656 -4.015625 -4.304688 -3.96875 -4.453125 -3.9375 L -4.453125 -3.90625 C -4.304688 -3.875 -4.097656 -3.828125 -3.828125 -3.765625 C -3.566406 -3.710938 -3.296875 -3.640625 -3.015625 -3.546875 L -0.015625 -2.578125 L -0.015625 -1.578125 L -5.375 -0.109375 L -5.375 -1.015625 L -2.515625 -1.765625 C -2.222656 -1.835938 -1.929688 -1.90625 -1.640625 -1.96875 C -1.347656 -2.03125 -1.101562 -2.078125 -0.90625 -2.109375 L -0.90625 -2.15625 C -1.019531 -2.175781 -1.160156 -2.203125 -1.328125 -2.234375 C -1.492188 -2.273438 -1.664062 -2.316406 -1.84375 -2.359375 C -2.03125 -2.410156 -2.195312 -2.460938 -2.34375 -2.515625 L -5.375 -3.453125 L -5.375 -4.421875 L -2.34375 -5.34375 C -2.125 -5.414062 -1.878906 -5.484375 -1.609375 -5.546875 C -1.335938 -5.617188 -1.109375 -5.671875 -0.921875 -5.703125 L -0.921875 -5.734375 C -1.085938 -5.753906 -1.316406 -5.800781 -1.609375 -5.875 C -1.898438 -5.945312 -2.203125 -6.019531 -2.515625 -6.09375 L -5.375 -6.84375 L -5.375 -7.75 L -0.015625 -6.265625 L -0.015625 -5.234375 Z M -3.03125 -4.3125 "/>
+</g>
+<g id="glyph-3-4">
+<path d="M 0.09375 -2.75 C 0.09375 -2.082031 -0.132812 -1.546875 -0.59375 -1.140625 C -1.0625 -0.742188 -1.753906 -0.546875 -2.671875 -0.546875 C -3.585938 -0.546875 -4.28125 -0.75 -4.75 -1.15625 C -5.21875 -1.5625 -5.453125 -2.097656 -5.453125 -2.765625 C -5.453125 -3.171875 -5.375 -3.503906 -5.21875 -3.765625 C -5.070312 -4.035156 -4.890625 -4.253906 -4.671875 -4.421875 L -4.671875 -4.484375 C -4.753906 -4.472656 -4.878906 -4.457031 -5.046875 -4.4375 C -5.222656 -4.425781 -5.359375 -4.421875 -5.453125 -4.421875 L -7.59375 -4.421875 L -7.59375 -5.296875 L 0 -5.296875 L 0 -4.59375 L -0.71875 -4.453125 L -0.71875 -4.421875 C -0.488281 -4.265625 -0.296875 -4.050781 -0.140625 -3.78125 C 0.015625 -3.507812 0.09375 -3.164062 0.09375 -2.75 Z M -0.625 -2.890625 C -0.625 -3.453125 -0.78125 -3.847656 -1.09375 -4.078125 C -1.40625 -4.316406 -1.875 -4.4375 -2.5 -4.4375 L -2.65625 -4.4375 C -3.320312 -4.4375 -3.832031 -4.320312 -4.1875 -4.09375 C -4.550781 -3.875 -4.734375 -3.46875 -4.734375 -2.875 C -4.734375 -2.40625 -4.539062 -2.050781 -4.15625 -1.8125 C -3.78125 -1.570312 -3.28125 -1.453125 -2.65625 -1.453125 C -2.007812 -1.453125 -1.507812 -1.570312 -1.15625 -1.8125 C -0.800781 -2.050781 -0.625 -2.410156 -0.625 -2.890625 Z M -0.625 -2.890625 "/>
+</g>
+<g id="glyph-3-5">
+<path d="M -5.453125 -3.4375 C -5.453125 -4.070312 -5.296875 -4.550781 -4.984375 -4.875 C -4.679688 -5.207031 -4.179688 -5.375 -3.484375 -5.375 L 0 -5.375 L 0 -4.5 L -3.4375 -4.5 C -4.289062 -4.5 -4.71875 -4.097656 -4.71875 -3.296875 C -4.71875 -2.703125 -4.550781 -2.289062 -4.21875 -2.0625 C -3.882812 -1.84375 -3.40625 -1.734375 -2.78125 -1.734375 L 0 -1.734375 L 0 -0.84375 L -5.359375 -0.84375 L -5.359375 -1.5625 L -4.625 -1.6875 L -4.625 -1.734375 C -4.90625 -1.910156 -5.113281 -2.148438 -5.25 -2.453125 C -5.382812 -2.765625 -5.453125 -3.09375 -5.453125 -3.4375 Z M -5.453125 -3.4375 "/>
+</g>
+<g id="glyph-3-6">
+</g>
+<g id="glyph-3-7">
+<path d="M 0 -2.03125 L -5.359375 0 L -5.359375 -0.9375 L -2.203125 -2.078125 C -2.054688 -2.128906 -1.890625 -2.1875 -1.703125 -2.25 C -1.523438 -2.3125 -1.351562 -2.363281 -1.1875 -2.40625 C -1.03125 -2.457031 -0.894531 -2.492188 -0.78125 -2.515625 L -0.78125 -2.546875 C -0.894531 -2.578125 -1.035156 -2.613281 -1.203125 -2.65625 C -1.367188 -2.707031 -1.539062 -2.765625 -1.71875 -2.828125 C -1.894531 -2.898438 -2.054688 -2.957031 -2.203125 -3 L -5.359375 -4.140625 L -5.359375 -5.078125 L 0 -3.046875 Z M 0 -2.03125 "/>
+</g>
+<g id="glyph-3-8">
+<path d="M -5.453125 -2.921875 C -5.453125 -3.378906 -5.351562 -3.769531 -5.15625 -4.09375 C -4.957031 -4.425781 -4.675781 -4.679688 -4.3125 -4.859375 C -3.945312 -5.035156 -3.523438 -5.125 -3.046875 -5.125 L -2.515625 -5.125 L -2.515625 -1.453125 C -1.898438 -1.472656 -1.4375 -1.628906 -1.125 -1.921875 C -0.8125 -2.222656 -0.65625 -2.640625 -0.65625 -3.171875 C -0.65625 -3.515625 -0.6875 -3.816406 -0.75 -4.078125 C -0.8125 -4.335938 -0.898438 -4.609375 -1.015625 -4.890625 L -0.25 -4.890625 C -0.125 -4.617188 -0.0351562 -4.347656 0.015625 -4.078125 C 0.0664062 -3.816406 0.09375 -3.5 0.09375 -3.125 C 0.09375 -2.625 -0.00390625 -2.175781 -0.203125 -1.78125 C -0.410156 -1.394531 -0.71875 -1.09375 -1.125 -0.875 C -1.539062 -0.65625 -2.046875 -0.546875 -2.640625 -0.546875 C -3.222656 -0.546875 -3.722656 -0.644531 -4.140625 -0.84375 C -4.566406 -1.039062 -4.890625 -1.316406 -5.109375 -1.671875 C -5.335938 -2.023438 -5.453125 -2.441406 -5.453125 -2.921875 Z M -4.734375 -2.90625 C -4.734375 -2.488281 -4.597656 -2.15625 -4.328125 -1.90625 C -4.066406 -1.664062 -3.691406 -1.523438 -3.203125 -1.484375 L -3.203125 -4.203125 C -3.660156 -4.203125 -4.03125 -4.097656 -4.3125 -3.890625 C -4.59375 -3.679688 -4.734375 -3.351562 -4.734375 -2.90625 Z M -4.734375 -2.90625 "/>
+</g>
+<g id="glyph-3-9">
+<path d="M -5.453125 -3.34375 C -5.453125 -3.445312 -5.445312 -3.554688 -5.4375 -3.671875 C -5.4375 -3.785156 -5.425781 -3.890625 -5.40625 -3.984375 L -4.59375 -3.875 C -4.613281 -3.78125 -4.628906 -3.679688 -4.640625 -3.578125 C -4.648438 -3.484375 -4.65625 -3.390625 -4.65625 -3.296875 C -4.65625 -3.015625 -4.578125 -2.753906 -4.421875 -2.515625 C -4.273438 -2.273438 -4.066406 -2.082031 -3.796875 -1.9375 C -3.535156 -1.800781 -3.222656 -1.734375 -2.859375 -1.734375 L 0 -1.734375 L 0 -0.84375 L -5.359375 -0.84375 L -5.359375 -1.5625 L -4.375 -1.671875 L -4.375 -1.703125 C -4.664062 -1.878906 -4.914062 -2.101562 -5.125 -2.375 C -5.34375 -2.65625 -5.453125 -2.976562 -5.453125 -3.34375 Z M -5.453125 -3.34375 "/>
+</g>
+<g id="glyph-3-10">
+<path d="M -5.453125 -3.40625 C -5.453125 -4.0625 -5.222656 -4.585938 -4.765625 -4.984375 C -4.304688 -5.390625 -3.613281 -5.59375 -2.6875 -5.59375 C -1.769531 -5.59375 -1.078125 -5.390625 -0.609375 -4.984375 C -0.140625 -4.585938 0.09375 -4.054688 0.09375 -3.390625 C 0.09375 -2.972656 0.015625 -2.628906 -0.140625 -2.359375 C -0.296875 -2.085938 -0.476562 -1.878906 -0.6875 -1.734375 L -0.6875 -1.671875 C -0.570312 -1.679688 -0.425781 -1.691406 -0.25 -1.703125 C -0.0703125 -1.722656 0.078125 -1.734375 0.203125 -1.734375 L 2.40625 -1.734375 L 2.40625 -0.84375 L -5.359375 -0.84375 L -5.359375 -1.5625 L -4.625 -1.6875 L -4.625 -1.734375 C -4.863281 -1.890625 -5.0625 -2.097656 -5.21875 -2.359375 C -5.375 -2.617188 -5.453125 -2.96875 -5.453125 -3.40625 Z M -4.71875 -3.234375 C -4.71875 -2.691406 -4.5625 -2.304688 -4.25 -2.078125 C -3.945312 -1.859375 -3.484375 -1.742188 -2.859375 -1.734375 L -2.6875 -1.734375 C -2.03125 -1.734375 -1.519531 -1.835938 -1.15625 -2.046875 C -0.800781 -2.265625 -0.625 -2.671875 -0.625 -3.265625 C -0.625 -3.585938 -0.710938 -3.851562 -0.890625 -4.0625 C -1.078125 -4.269531 -1.320312 -4.425781 -1.625 -4.53125 C -1.9375 -4.632812 -2.296875 -4.6875 -2.703125 -4.6875 C -3.316406 -4.6875 -3.804688 -4.566406 -4.171875 -4.328125 C -4.535156 -4.097656 -4.71875 -3.734375 -4.71875 -3.234375 Z M -4.71875 -3.234375 "/>
+</g>
+<g id="glyph-3-11">
+<path d="M -5.359375 -0.015625 L -5.359375 -0.953125 L -2.3125 -2.109375 C -2.039062 -2.210938 -1.785156 -2.300781 -1.546875 -2.375 C -1.304688 -2.457031 -1.070312 -2.519531 -0.84375 -2.5625 L -0.84375 -2.59375 C -1.007812 -2.632812 -1.226562 -2.695312 -1.5 -2.78125 C -1.769531 -2.875 -2.039062 -2.96875 -2.3125 -3.0625 L -5.359375 -4.15625 L -5.359375 -5.09375 L 0.734375 -2.796875 C 1.242188 -2.609375 1.648438 -2.363281 1.953125 -2.0625 C 2.253906 -1.769531 2.40625 -1.363281 2.40625 -0.84375 C 2.40625 -0.675781 2.394531 -0.53125 2.375 -0.40625 C 2.351562 -0.289062 2.332031 -0.191406 2.3125 -0.109375 L 1.625 -0.109375 C 1.632812 -0.179688 1.644531 -0.269531 1.65625 -0.375 C 1.675781 -0.476562 1.6875 -0.585938 1.6875 -0.703125 C 1.6875 -1.003906 1.597656 -1.25 1.421875 -1.4375 C 1.242188 -1.632812 1.015625 -1.785156 0.734375 -1.890625 L 0.015625 -2.171875 Z M -5.359375 -0.015625 "/>
+</g>
+<g id="glyph-3-12">
+<path d="M -4.6875 -3.3125 L -4.6875 -1.96875 L 0 -1.96875 L 0 -1.09375 L -4.6875 -1.09375 L -4.6875 -0.15625 L -5.09375 -0.15625 L -5.390625 -1.09375 L -5.703125 -1.09375 C -6.390625 -1.09375 -6.882812 -1.242188 -7.1875 -1.546875 C -7.5 -1.859375 -7.65625 -2.285156 -7.65625 -2.828125 C -7.65625 -3.046875 -7.632812 -3.242188 -7.59375 -3.421875 C -7.5625 -3.597656 -7.519531 -3.75 -7.46875 -3.875 L -6.78125 -3.640625 C -6.8125 -3.535156 -6.84375 -3.410156 -6.875 -3.265625 C -6.914062 -3.128906 -6.9375 -2.988281 -6.9375 -2.84375 C -6.9375 -2.550781 -6.835938 -2.332031 -6.640625 -2.1875 C -6.441406 -2.039062 -6.128906 -1.96875 -5.703125 -1.96875 L -5.359375 -1.96875 L -5.359375 -3.3125 Z M -4.6875 -3.3125 "/>
+</g>
+<g id="glyph-3-13">
+<path d="M -7.375 -1.296875 C -7.375 -1.429688 -7.328125 -1.550781 -7.234375 -1.65625 C -7.140625 -1.757812 -7 -1.8125 -6.8125 -1.8125 C -6.625 -1.8125 -6.484375 -1.757812 -6.390625 -1.65625 C -6.296875 -1.550781 -6.25 -1.429688 -6.25 -1.296875 C -6.25 -1.148438 -6.296875 -1.023438 -6.390625 -0.921875 C -6.484375 -0.828125 -6.625 -0.78125 -6.8125 -0.78125 C -7 -0.78125 -7.140625 -0.828125 -7.234375 -0.921875 C -7.328125 -1.023438 -7.375 -1.148438 -7.375 -1.296875 Z M -5.359375 -1.734375 L 0 -1.734375 L 0 -0.84375 L -5.359375 -0.84375 Z M -5.359375 -1.734375 "/>
+</g>
+<g id="glyph-3-14">
+<path d="M -2.296875 -0.40625 L -3.0625 -0.40625 L -3.0625 -2.8125 L -2.296875 -2.8125 Z M -2.296875 -0.40625 "/>
+</g>
+<g id="glyph-3-15">
+<path d="M -5.359375 -5.328125 L 0 -5.328125 L 0 -4.609375 L -0.703125 -4.484375 L -0.703125 -4.4375 C -0.429688 -4.269531 -0.226562 -4.03125 -0.09375 -3.71875 C 0.03125 -3.414062 0.09375 -3.085938 0.09375 -2.734375 C 0.09375 -2.085938 -0.0546875 -1.601562 -0.359375 -1.28125 C -0.671875 -0.957031 -1.164062 -0.796875 -1.84375 -0.796875 L -5.359375 -0.796875 L -5.359375 -1.6875 L -1.90625 -1.6875 C -1.050781 -1.6875 -0.625 -2.082031 -0.625 -2.875 C -0.625 -3.46875 -0.789062 -3.878906 -1.125 -4.109375 C -1.457031 -4.335938 -1.9375 -4.453125 -2.5625 -4.453125 L -5.359375 -4.453125 Z M -5.359375 -5.328125 "/>
+</g>
+<g id="glyph-4-0">
+<path d="M 3.8125 -8.5625 C 4.914062 -8.5625 5.722656 -8.320312 6.234375 -7.84375 C 6.742188 -7.375 7 -6.722656 7 -5.890625 C 7 -5.390625 6.894531 -4.921875 6.6875 -4.484375 C 6.476562 -4.054688 6.128906 -3.707031 5.640625 -3.4375 C 5.160156 -3.175781 4.503906 -3.046875 3.671875 -3.046875 L 2.890625 -3.046875 L 2.890625 0 L 1.078125 0 L 1.078125 -8.5625 Z M 3.71875 -7.078125 L 2.890625 -7.078125 L 2.890625 -4.53125 L 3.484375 -4.53125 C 4.003906 -4.53125 4.410156 -4.628906 4.703125 -4.828125 C 5.003906 -5.035156 5.15625 -5.367188 5.15625 -5.828125 C 5.15625 -6.660156 4.675781 -7.078125 3.71875 -7.078125 Z M 3.71875 -7.078125 "/>
+</g>
+<g id="glyph-4-1">
+<path d="M 0 -6.546875 L 1.953125 -6.546875 L 3.1875 -2.875 C 3.25 -2.695312 3.296875 -2.515625 3.328125 -2.328125 C 3.367188 -2.140625 3.394531 -1.941406 3.40625 -1.734375 L 3.4375 -1.734375 C 3.46875 -1.941406 3.503906 -2.140625 3.546875 -2.328125 C 3.585938 -2.515625 3.640625 -2.695312 3.703125 -2.875 L 4.90625 -6.546875 L 6.828125 -6.546875 L 4.0625 0.84375 C 3.8125 1.519531 3.445312 2.023438 2.96875 2.359375 C 2.488281 2.703125 1.9375 2.875 1.3125 2.875 C 1.113281 2.875 0.941406 2.863281 0.796875 2.84375 C 0.648438 2.820312 0.519531 2.800781 0.40625 2.78125 L 0.40625 1.375 C 0.5 1.382812 0.601562 1.394531 0.71875 1.40625 C 0.84375 1.425781 0.972656 1.4375 1.109375 1.4375 C 1.492188 1.4375 1.796875 1.320312 2.015625 1.09375 C 2.234375 0.863281 2.394531 0.59375 2.5 0.28125 L 2.609375 -0.046875 Z M 0 -6.546875 "/>
+</g>
+<g id="glyph-4-2">
+<path d="M 3.015625 0.125 C 2.285156 0.125 1.691406 -0.160156 1.234375 -0.734375 C 0.773438 -1.304688 0.546875 -2.148438 0.546875 -3.265625 C 0.546875 -4.378906 0.773438 -5.222656 1.234375 -5.796875 C 1.703125 -6.378906 2.3125 -6.671875 3.0625 -6.671875 C 3.53125 -6.671875 3.914062 -6.578125 4.21875 -6.390625 C 4.53125 -6.210938 4.769531 -5.988281 4.9375 -5.71875 L 5 -5.71875 C 4.976562 -5.84375 4.953125 -6.023438 4.921875 -6.265625 C 4.890625 -6.515625 4.875 -6.765625 4.875 -7.015625 L 4.875 -9.125 L 6.65625 -9.125 L 6.65625 0 L 5.296875 0 L 4.9375 -0.859375 L 4.875 -0.859375 C 4.695312 -0.578125 4.457031 -0.34375 4.15625 -0.15625 C 3.863281 0.03125 3.484375 0.125 3.015625 0.125 Z M 3.640625 -1.3125 C 4.128906 -1.3125 4.472656 -1.457031 4.671875 -1.75 C 4.878906 -2.039062 4.984375 -2.476562 4.984375 -3.0625 L 4.984375 -3.25 C 4.984375 -3.894531 4.882812 -4.382812 4.6875 -4.71875 C 4.5 -5.050781 4.140625 -5.21875 3.609375 -5.21875 C 3.222656 -5.21875 2.914062 -5.046875 2.6875 -4.703125 C 2.46875 -4.367188 2.359375 -3.878906 2.359375 -3.234375 C 2.359375 -2.597656 2.46875 -2.117188 2.6875 -1.796875 C 2.914062 -1.472656 3.234375 -1.3125 3.640625 -1.3125 Z M 3.640625 -1.3125 "/>
+</g>
+<g id="glyph-4-3">
+<path d="M 4.59375 -6.671875 C 4.6875 -6.671875 4.789062 -6.664062 4.90625 -6.65625 C 5.03125 -6.644531 5.128906 -6.632812 5.203125 -6.625 L 5.0625 -4.9375 C 5.007812 -4.957031 4.925781 -4.972656 4.8125 -4.984375 C 4.707031 -4.992188 4.613281 -5 4.53125 -5 C 4.226562 -5 3.9375 -4.945312 3.65625 -4.84375 C 3.375 -4.738281 3.144531 -4.5625 2.96875 -4.3125 C 2.800781 -4.070312 2.71875 -3.75 2.71875 -3.34375 L 2.71875 0 L 0.9375 0 L 0.9375 -6.546875 L 2.296875 -6.546875 L 2.5625 -5.453125 L 2.640625 -5.453125 C 2.828125 -5.785156 3.085938 -6.070312 3.421875 -6.3125 C 3.765625 -6.550781 4.15625 -6.671875 4.59375 -6.671875 Z M 4.59375 -6.671875 "/>
+</g>
+<g id="glyph-4-4">
+<path d="M 6.890625 -3.28125 C 6.890625 -2.195312 6.601562 -1.359375 6.03125 -0.765625 C 5.457031 -0.171875 4.679688 0.125 3.703125 0.125 C 3.085938 0.125 2.539062 -0.00390625 2.0625 -0.265625 C 1.59375 -0.535156 1.222656 -0.925781 0.953125 -1.4375 C 0.679688 -1.945312 0.546875 -2.5625 0.546875 -3.28125 C 0.546875 -4.375 0.828125 -5.210938 1.390625 -5.796875 C 1.960938 -6.378906 2.742188 -6.671875 3.734375 -6.671875 C 4.347656 -6.671875 4.890625 -6.535156 5.359375 -6.265625 C 5.835938 -6.003906 6.210938 -5.625 6.484375 -5.125 C 6.753906 -4.625 6.890625 -4.007812 6.890625 -3.28125 Z M 2.359375 -3.28125 C 2.359375 -2.632812 2.460938 -2.144531 2.671875 -1.8125 C 2.890625 -1.476562 3.238281 -1.3125 3.71875 -1.3125 C 4.1875 -1.3125 4.523438 -1.476562 4.734375 -1.8125 C 4.953125 -2.144531 5.0625 -2.632812 5.0625 -3.28125 C 5.0625 -3.9375 4.953125 -4.425781 4.734375 -4.75 C 4.523438 -5.070312 4.179688 -5.234375 3.703125 -5.234375 C 3.234375 -5.234375 2.890625 -5.070312 2.671875 -4.75 C 2.460938 -4.425781 2.359375 -3.9375 2.359375 -3.28125 Z M 2.359375 -3.28125 "/>
+</g>
+<g id="glyph-4-5">
+<path d="M 4.5625 -5.203125 L 3.015625 -5.203125 L 3.015625 0 L 1.21875 0 L 1.21875 -5.203125 L 0.234375 -5.203125 L 0.234375 -6.078125 L 1.21875 -6.546875 L 1.21875 -7.03125 C 1.21875 -7.59375 1.3125 -8.023438 1.5 -8.328125 C 1.6875 -8.640625 1.953125 -8.859375 2.296875 -8.984375 C 2.648438 -9.117188 3.066406 -9.1875 3.546875 -9.1875 C 3.890625 -9.1875 4.203125 -9.15625 4.484375 -9.09375 C 4.773438 -9.039062 5.007812 -8.976562 5.1875 -8.90625 L 4.734375 -7.59375 C 4.597656 -7.632812 4.445312 -7.671875 4.28125 -7.703125 C 4.125 -7.742188 3.941406 -7.765625 3.734375 -7.765625 C 3.484375 -7.765625 3.300781 -7.6875 3.1875 -7.53125 C 3.070312 -7.382812 3.015625 -7.191406 3.015625 -6.953125 L 3.015625 -6.546875 L 4.5625 -6.546875 Z M 4.5625 -5.203125 "/>
+</g>
+<g id="glyph-4-6">
+<path d="M 1.84375 -9.125 C 2.101562 -9.125 2.328125 -9.0625 2.515625 -8.9375 C 2.710938 -8.8125 2.8125 -8.582031 2.8125 -8.25 C 2.8125 -7.914062 2.710938 -7.6875 2.515625 -7.5625 C 2.328125 -7.4375 2.101562 -7.375 1.84375 -7.375 C 1.5625 -7.375 1.328125 -7.4375 1.140625 -7.5625 C 0.953125 -7.6875 0.859375 -7.914062 0.859375 -8.25 C 0.859375 -8.582031 0.953125 -8.8125 1.140625 -8.9375 C 1.328125 -9.0625 1.5625 -9.125 1.84375 -9.125 Z M 2.71875 -6.546875 L 2.71875 0 L 0.9375 0 L 0.9375 -6.546875 Z M 2.71875 -6.546875 "/>
+</g>
+<g id="glyph-4-7">
+<path d="M 2.71875 0 L 0.9375 0 L 0.9375 -9.125 L 2.71875 -9.125 Z M 2.71875 0 "/>
+</g>
+<g id="glyph-4-8">
+</g>
+<g id="glyph-4-9">
+<path d="M 3.625 -6.6875 C 4.5 -6.6875 5.171875 -6.492188 5.640625 -6.109375 C 6.109375 -5.734375 6.34375 -5.15625 6.34375 -4.375 L 6.34375 0 L 5.09375 0 L 4.75 -0.890625 L 4.703125 -0.890625 C 4.421875 -0.535156 4.125 -0.273438 3.8125 -0.109375 C 3.5 0.046875 3.070312 0.125 2.53125 0.125 C 1.945312 0.125 1.460938 -0.046875 1.078125 -0.390625 C 0.691406 -0.734375 0.5 -1.253906 0.5 -1.953125 C 0.5 -2.648438 0.742188 -3.164062 1.234375 -3.5 C 1.722656 -3.832031 2.457031 -4.015625 3.4375 -4.046875 L 4.578125 -4.078125 L 4.578125 -4.375 C 4.578125 -4.71875 4.484375 -4.96875 4.296875 -5.125 C 4.117188 -5.28125 3.867188 -5.359375 3.546875 -5.359375 C 3.234375 -5.359375 2.921875 -5.3125 2.609375 -5.21875 C 2.304688 -5.132812 2.003906 -5.023438 1.703125 -4.890625 L 1.109375 -6.09375 C 1.460938 -6.28125 1.851562 -6.425781 2.28125 -6.53125 C 2.707031 -6.632812 3.15625 -6.6875 3.625 -6.6875 Z M 3.875 -3.015625 C 3.300781 -2.992188 2.898438 -2.882812 2.671875 -2.6875 C 2.453125 -2.5 2.34375 -2.25 2.34375 -1.9375 C 2.34375 -1.664062 2.421875 -1.472656 2.578125 -1.359375 C 2.734375 -1.242188 2.941406 -1.1875 3.203125 -1.1875 C 3.585938 -1.1875 3.910156 -1.300781 4.171875 -1.53125 C 4.441406 -1.757812 4.578125 -2.082031 4.578125 -2.5 L 4.578125 -3.03125 Z M 3.875 -3.015625 "/>
+</g>
+<g id="glyph-4-10">
+<path d="M 2.71875 -7 C 2.71875 -6.75 2.707031 -6.503906 2.6875 -6.265625 C 2.675781 -6.023438 2.664062 -5.835938 2.65625 -5.703125 L 2.71875 -5.703125 C 2.894531 -5.972656 3.128906 -6.203125 3.421875 -6.390625 C 3.722656 -6.578125 4.109375 -6.671875 4.578125 -6.671875 C 5.316406 -6.671875 5.914062 -6.382812 6.375 -5.8125 C 6.832031 -5.238281 7.0625 -4.394531 7.0625 -3.28125 C 7.0625 -2.164062 6.828125 -1.316406 6.359375 -0.734375 C 5.890625 -0.160156 5.28125 0.125 4.53125 0.125 C 4.050781 0.125 3.671875 0.0390625 3.390625 -0.125 C 3.117188 -0.300781 2.894531 -0.5 2.71875 -0.71875 L 2.609375 -0.71875 L 2.296875 0 L 0.9375 0 L 0.9375 -9.125 L 2.71875 -9.125 Z M 4.015625 -5.25 C 3.546875 -5.25 3.21875 -5.101562 3.03125 -4.8125 C 2.84375 -4.519531 2.738281 -4.078125 2.71875 -3.484375 L 2.71875 -3.296875 C 2.71875 -2.671875 2.8125 -2.1875 3 -1.84375 C 3.1875 -1.5 3.53125 -1.328125 4.03125 -1.328125 C 4.394531 -1.328125 4.6875 -1.5 4.90625 -1.84375 C 5.125 -2.1875 5.234375 -2.675781 5.234375 -3.3125 C 5.234375 -3.945312 5.125 -4.425781 4.90625 -4.75 C 4.6875 -5.082031 4.390625 -5.25 4.015625 -5.25 Z M 4.015625 -5.25 "/>
+</g>
+<g id="glyph-4-11">
+<path d="M 3.703125 -1.3125 C 3.898438 -1.3125 4.085938 -1.328125 4.265625 -1.359375 C 4.453125 -1.398438 4.640625 -1.453125 4.828125 -1.515625 L 4.828125 -0.1875 C 4.628906 -0.101562 4.390625 -0.03125 4.109375 0.03125 C 3.828125 0.09375 3.519531 0.125 3.1875 0.125 C 2.789062 0.125 2.4375 0.0625 2.125 -0.0625 C 1.820312 -0.195312 1.578125 -0.421875 1.390625 -0.734375 C 1.210938 -1.054688 1.125 -1.492188 1.125 -2.046875 L 1.125 -5.203125 L 0.28125 -5.203125 L 0.28125 -5.96875 L 1.265625 -6.5625 L 1.78125 -7.9375 L 2.921875 -7.9375 L 2.921875 -6.546875 L 4.75 -6.546875 L 4.75 -5.203125 L 2.921875 -5.203125 L 2.921875 -2.046875 C 2.921875 -1.804688 2.988281 -1.625 3.125 -1.5 C 3.269531 -1.375 3.460938 -1.3125 3.703125 -1.3125 Z M 3.703125 -1.3125 "/>
+</g>
+<g id="glyph-4-12">
+<path d="M 4.65625 -6.671875 C 5.363281 -6.671875 5.925781 -6.476562 6.34375 -6.09375 C 6.769531 -5.71875 6.984375 -5.109375 6.984375 -4.265625 L 6.984375 0 L 5.203125 0 L 5.203125 -3.828125 C 5.203125 -4.296875 5.113281 -4.648438 4.9375 -4.890625 C 4.769531 -5.128906 4.503906 -5.25 4.140625 -5.25 C 3.597656 -5.25 3.222656 -5.0625 3.015625 -4.6875 C 2.816406 -4.3125 2.71875 -3.773438 2.71875 -3.078125 L 2.71875 0 L 0.9375 0 L 0.9375 -6.546875 L 2.296875 -6.546875 L 2.546875 -5.71875 L 2.640625 -5.71875 C 2.847656 -6.050781 3.132812 -6.289062 3.5 -6.4375 C 3.863281 -6.59375 4.25 -6.671875 4.65625 -6.671875 Z M 4.65625 -6.671875 "/>
+</g>
+<g id="glyph-4-13">
+<path d="M 3.640625 -6.671875 C 4.535156 -6.671875 5.25 -6.410156 5.78125 -5.890625 C 6.3125 -5.378906 6.578125 -4.648438 6.578125 -3.703125 L 6.578125 -2.828125 L 2.359375 -2.828125 C 2.367188 -2.328125 2.515625 -1.929688 2.796875 -1.640625 C 3.085938 -1.359375 3.484375 -1.21875 3.984375 -1.21875 C 4.410156 -1.21875 4.796875 -1.257812 5.140625 -1.34375 C 5.484375 -1.425781 5.835938 -1.554688 6.203125 -1.734375 L 6.203125 -0.34375 C 5.878906 -0.1875 5.539062 -0.0703125 5.1875 0 C 4.832031 0.0820312 4.40625 0.125 3.90625 0.125 C 3.25 0.125 2.664062 0.00390625 2.15625 -0.234375 C 1.65625 -0.484375 1.257812 -0.851562 0.96875 -1.34375 C 0.6875 -1.84375 0.546875 -2.472656 0.546875 -3.234375 C 0.546875 -3.992188 0.671875 -4.628906 0.921875 -5.140625 C 1.179688 -5.648438 1.546875 -6.03125 2.015625 -6.28125 C 2.484375 -6.539062 3.023438 -6.671875 3.640625 -6.671875 Z M 3.640625 -5.40625 C 3.296875 -5.40625 3.007812 -5.289062 2.78125 -5.0625 C 2.5625 -4.84375 2.429688 -4.492188 2.390625 -4.015625 L 4.890625 -4.015625 C 4.890625 -4.421875 4.785156 -4.753906 4.578125 -5.015625 C 4.378906 -5.273438 4.066406 -5.40625 3.640625 -5.40625 Z M 3.640625 -5.40625 "/>
+</g>
+<g id="glyph-4-14">
+<path d="M 4.578125 -6.671875 C 5.316406 -6.671875 5.914062 -6.382812 6.375 -5.8125 C 6.832031 -5.238281 7.0625 -4.394531 7.0625 -3.28125 C 7.0625 -2.175781 6.820312 -1.332031 6.34375 -0.75 C 5.875 -0.164062 5.269531 0.125 4.53125 0.125 C 4.0625 0.125 3.6875 0.0390625 3.40625 -0.125 C 3.125 -0.300781 2.894531 -0.5 2.71875 -0.71875 L 2.625 -0.71875 C 2.6875 -0.382812 2.71875 -0.0664062 2.71875 0.234375 L 2.71875 2.875 L 0.9375 2.875 L 0.9375 -6.546875 L 2.390625 -6.546875 L 2.640625 -5.703125 L 2.71875 -5.703125 C 2.894531 -5.960938 3.128906 -6.1875 3.421875 -6.375 C 3.722656 -6.570312 4.109375 -6.671875 4.578125 -6.671875 Z M 4.015625 -5.25 C 3.546875 -5.25 3.21875 -5.101562 3.03125 -4.8125 C 2.84375 -4.519531 2.738281 -4.078125 2.71875 -3.484375 L 2.71875 -3.296875 C 2.71875 -2.671875 2.8125 -2.1875 3 -1.84375 C 3.1875 -1.5 3.53125 -1.328125 4.03125 -1.328125 C 4.4375 -1.328125 4.738281 -1.5 4.9375 -1.84375 C 5.132812 -2.1875 5.234375 -2.675781 5.234375 -3.3125 C 5.234375 -4.601562 4.828125 -5.25 4.015625 -5.25 Z M 4.015625 -5.25 "/>
+</g>
+<g id="glyph-4-15">
+<path d="M 5.515625 -1.9375 C 5.515625 -1.28125 5.28125 -0.769531 4.8125 -0.40625 C 4.34375 -0.0507812 3.644531 0.125 2.71875 0.125 C 2.257812 0.125 1.863281 0.09375 1.53125 0.03125 C 1.207031 -0.03125 0.878906 -0.128906 0.546875 -0.265625 L 0.546875 -1.734375 C 0.898438 -1.578125 1.28125 -1.445312 1.6875 -1.34375 C 2.09375 -1.238281 2.453125 -1.1875 2.765625 -1.1875 C 3.117188 -1.1875 3.367188 -1.238281 3.515625 -1.34375 C 3.671875 -1.445312 3.75 -1.582031 3.75 -1.75 C 3.75 -1.863281 3.71875 -1.960938 3.65625 -2.046875 C 3.59375 -2.140625 3.460938 -2.238281 3.265625 -2.34375 C 3.066406 -2.457031 2.753906 -2.601562 2.328125 -2.78125 C 1.921875 -2.957031 1.582031 -3.128906 1.3125 -3.296875 C 1.050781 -3.472656 0.859375 -3.679688 0.734375 -3.921875 C 0.609375 -4.171875 0.546875 -4.476562 0.546875 -4.84375 C 0.546875 -5.457031 0.78125 -5.914062 1.25 -6.21875 C 1.71875 -6.519531 2.34375 -6.671875 3.125 -6.671875 C 3.539062 -6.671875 3.929688 -6.628906 4.296875 -6.546875 C 4.660156 -6.472656 5.039062 -6.34375 5.4375 -6.15625 L 4.890625 -4.875 C 4.578125 -5.007812 4.273438 -5.125 3.984375 -5.21875 C 3.691406 -5.3125 3.398438 -5.359375 3.109375 -5.359375 C 2.578125 -5.359375 2.3125 -5.210938 2.3125 -4.921875 C 2.3125 -4.816406 2.34375 -4.722656 2.40625 -4.640625 C 2.476562 -4.554688 2.613281 -4.460938 2.8125 -4.359375 C 3.007812 -4.265625 3.300781 -4.140625 3.6875 -3.984375 C 4.0625 -3.828125 4.382812 -3.664062 4.65625 -3.5 C 4.925781 -3.34375 5.132812 -3.140625 5.28125 -2.890625 C 5.4375 -2.648438 5.515625 -2.332031 5.515625 -1.9375 Z M 5.515625 -1.9375 "/>
+</g>
+<g id="glyph-4-16">
+<path d="M 0.859375 -8.25 C 0.859375 -8.582031 0.953125 -8.8125 1.140625 -8.9375 C 1.328125 -9.0625 1.5625 -9.125 1.84375 -9.125 C 2.101562 -9.125 2.328125 -9.0625 2.515625 -8.9375 C 2.710938 -8.8125 2.8125 -8.582031 2.8125 -8.25 C 2.8125 -7.914062 2.710938 -7.6875 2.515625 -7.5625 C 2.328125 -7.4375 2.101562 -7.375 1.84375 -7.375 C 1.5625 -7.375 1.328125 -7.4375 1.140625 -7.5625 C 0.953125 -7.6875 0.859375 -7.914062 0.859375 -8.25 Z M 0.40625 2.875 C 0.207031 2.875 0 2.859375 -0.21875 2.828125 C -0.4375 2.804688 -0.617188 2.773438 -0.765625 2.734375 L -0.765625 1.328125 C -0.617188 1.359375 -0.484375 1.382812 -0.359375 1.40625 C -0.234375 1.425781 -0.0859375 1.4375 0.078125 1.4375 C 0.316406 1.4375 0.519531 1.367188 0.6875 1.234375 C 0.851562 1.097656 0.9375 0.832031 0.9375 0.4375 L 0.9375 -6.546875 L 2.71875 -6.546875 L 2.71875 0.703125 C 2.71875 1.109375 2.640625 1.472656 2.484375 1.796875 C 2.335938 2.128906 2.09375 2.390625 1.75 2.578125 C 1.414062 2.773438 0.96875 2.875 0.40625 2.875 Z M 0.40625 2.875 "/>
+</g>
+<g id="glyph-4-17">
+<path d="M 3.0625 -6.671875 C 3.863281 -6.671875 4.492188 -6.351562 4.953125 -5.71875 L 5 -5.71875 L 5.140625 -6.546875 L 6.65625 -6.546875 L 6.65625 0.015625 C 6.65625 0.953125 6.378906 1.660156 5.828125 2.140625 C 5.273438 2.628906 4.460938 2.875 3.390625 2.875 C 2.921875 2.875 2.488281 2.847656 2.09375 2.796875 C 1.695312 2.742188 1.3125 2.644531 0.9375 2.5 L 0.9375 1.0625 C 1.738281 1.40625 2.585938 1.578125 3.484375 1.578125 C 4.410156 1.578125 4.875 1.078125 4.875 0.078125 L 4.875 -0.046875 C 4.875 -0.179688 4.878906 -0.320312 4.890625 -0.46875 C 4.898438 -0.613281 4.910156 -0.742188 4.921875 -0.859375 L 4.875 -0.859375 C 4.644531 -0.515625 4.375 -0.265625 4.0625 -0.109375 C 3.75 0.046875 3.398438 0.125 3.015625 0.125 C 2.234375 0.125 1.625 -0.171875 1.1875 -0.765625 C 0.757812 -1.367188 0.546875 -2.203125 0.546875 -3.265625 C 0.546875 -4.335938 0.769531 -5.171875 1.21875 -5.765625 C 1.664062 -6.367188 2.28125 -6.671875 3.0625 -6.671875 Z M 3.625 -5.21875 C 2.78125 -5.21875 2.359375 -4.554688 2.359375 -3.234375 C 2.359375 -1.929688 2.785156 -1.28125 3.640625 -1.28125 C 4.097656 -1.28125 4.4375 -1.410156 4.65625 -1.671875 C 4.875 -1.929688 4.984375 -2.382812 4.984375 -3.03125 L 4.984375 -3.25 C 4.984375 -3.957031 4.875 -4.460938 4.65625 -4.765625 C 4.445312 -5.066406 4.101562 -5.21875 3.625 -5.21875 Z M 3.625 -5.21875 "/>
+</g>
+<g id="glyph-4-18">
+<path d="M 6.46875 0 L 0.484375 0 L 0.484375 -1.265625 L 2.625 -3.4375 C 3.0625 -3.882812 3.410156 -4.253906 3.671875 -4.546875 C 3.929688 -4.847656 4.117188 -5.117188 4.234375 -5.359375 C 4.359375 -5.609375 4.421875 -5.875 4.421875 -6.15625 C 4.421875 -6.5 4.328125 -6.753906 4.140625 -6.921875 C 3.953125 -7.085938 3.703125 -7.171875 3.390625 -7.171875 C 3.054688 -7.171875 2.734375 -7.09375 2.421875 -6.9375 C 2.109375 -6.789062 1.78125 -6.578125 1.4375 -6.296875 L 0.453125 -7.46875 C 0.703125 -7.675781 0.960938 -7.875 1.234375 -8.0625 C 1.515625 -8.25 1.835938 -8.398438 2.203125 -8.515625 C 2.566406 -8.628906 3.003906 -8.6875 3.515625 -8.6875 C 4.078125 -8.6875 4.554688 -8.582031 4.953125 -8.375 C 5.359375 -8.175781 5.671875 -7.898438 5.890625 -7.546875 C 6.117188 -7.203125 6.234375 -6.8125 6.234375 -6.375 C 6.234375 -5.894531 6.132812 -5.457031 5.9375 -5.0625 C 5.75 -4.675781 5.476562 -4.289062 5.125 -3.90625 C 4.769531 -3.53125 4.34375 -3.109375 3.84375 -2.640625 L 2.734375 -1.609375 L 2.734375 -1.53125 L 6.46875 -1.53125 Z M 6.46875 0 "/>
+</g>
+<g id="glyph-4-19">
+<path d="M 6.421875 -4.28125 C 6.421875 -3.363281 6.320312 -2.578125 6.125 -1.921875 C 5.925781 -1.265625 5.609375 -0.757812 5.171875 -0.40625 C 4.742188 -0.0507812 4.160156 0.125 3.421875 0.125 C 2.390625 0.125 1.632812 -0.265625 1.15625 -1.046875 C 0.675781 -1.828125 0.4375 -2.90625 0.4375 -4.28125 C 0.4375 -5.207031 0.53125 -6 0.71875 -6.65625 C 0.914062 -7.3125 1.234375 -7.816406 1.671875 -8.171875 C 2.109375 -8.523438 2.691406 -8.703125 3.421875 -8.703125 C 4.441406 -8.703125 5.195312 -8.3125 5.6875 -7.53125 C 6.175781 -6.757812 6.421875 -5.675781 6.421875 -4.28125 Z M 2.234375 -4.28125 C 2.234375 -3.300781 2.316406 -2.566406 2.484375 -2.078125 C 2.648438 -1.585938 2.960938 -1.34375 3.421875 -1.34375 C 3.867188 -1.34375 4.179688 -1.585938 4.359375 -2.078125 C 4.535156 -2.566406 4.625 -3.300781 4.625 -4.28125 C 4.625 -5.257812 4.535156 -5.992188 4.359375 -6.484375 C 4.179688 -6.984375 3.867188 -7.234375 3.421875 -7.234375 C 2.960938 -7.234375 2.648438 -6.984375 2.484375 -6.484375 C 2.316406 -5.992188 2.234375 -5.257812 2.234375 -4.28125 Z M 2.234375 -4.28125 "/>
+</g>
+<g id="glyph-4-20">
+<path d="M 4.328125 -4.8125 L 7.734375 -4.8125 L 7.734375 -0.375 C 7.285156 -0.21875 6.816406 -0.09375 6.328125 0 C 5.847656 0.0820312 5.300781 0.125 4.6875 0.125 C 3.40625 0.125 2.421875 -0.25 1.734375 -1 C 1.046875 -1.757812 0.703125 -2.859375 0.703125 -4.296875 C 0.703125 -5.191406 0.875 -5.96875 1.21875 -6.625 C 1.5625 -7.28125 2.066406 -7.785156 2.734375 -8.140625 C 3.398438 -8.503906 4.210938 -8.6875 5.171875 -8.6875 C 5.628906 -8.6875 6.078125 -8.640625 6.515625 -8.546875 C 6.953125 -8.453125 7.351562 -8.320312 7.71875 -8.15625 L 7.109375 -6.703125 C 6.847656 -6.835938 6.550781 -6.945312 6.21875 -7.03125 C 5.882812 -7.125 5.53125 -7.171875 5.15625 -7.171875 C 4.632812 -7.171875 4.175781 -7.050781 3.78125 -6.8125 C 3.394531 -6.570312 3.09375 -6.234375 2.875 -5.796875 C 2.664062 -5.359375 2.5625 -4.847656 2.5625 -4.265625 C 2.5625 -3.703125 2.640625 -3.203125 2.796875 -2.765625 C 2.953125 -2.335938 3.191406 -2 3.515625 -1.75 C 3.847656 -1.507812 4.273438 -1.390625 4.796875 -1.390625 C 5.054688 -1.390625 5.273438 -1.398438 5.453125 -1.421875 C 5.628906 -1.453125 5.796875 -1.484375 5.953125 -1.515625 L 5.953125 -3.296875 L 4.328125 -3.296875 Z M 4.328125 -4.8125 "/>
+</g>
+<g id="glyph-4-21">
+<path d="M 6.953125 -6.546875 L 6.953125 0 L 5.578125 0 L 5.34375 -0.84375 L 5.25 -0.84375 C 5.039062 -0.507812 4.753906 -0.265625 4.390625 -0.109375 C 4.023438 0.046875 3.640625 0.125 3.234375 0.125 C 2.523438 0.125 1.957031 -0.0625 1.53125 -0.4375 C 1.113281 -0.820312 0.90625 -1.4375 0.90625 -2.28125 L 0.90625 -6.546875 L 2.6875 -6.546875 L 2.6875 -2.71875 C 2.6875 -2.257812 2.769531 -1.910156 2.9375 -1.671875 C 3.101562 -1.429688 3.375 -1.3125 3.75 -1.3125 C 4.289062 -1.3125 4.660156 -1.492188 4.859375 -1.859375 C 5.054688 -2.234375 5.15625 -2.769531 5.15625 -3.46875 L 5.15625 -6.546875 Z M 6.953125 -6.546875 "/>
+</g>
+<g id="glyph-4-22">
+<path d="M 3.59375 0.125 C 2.625 0.125 1.875 -0.144531 1.34375 -0.6875 C 0.8125 -1.226562 0.546875 -2.078125 0.546875 -3.234375 C 0.546875 -4.035156 0.679688 -4.6875 0.953125 -5.1875 C 1.222656 -5.695312 1.597656 -6.070312 2.078125 -6.3125 C 2.566406 -6.550781 3.125 -6.671875 3.75 -6.671875 C 4.195312 -6.671875 4.585938 -6.625 4.921875 -6.53125 C 5.253906 -6.445312 5.546875 -6.347656 5.796875 -6.234375 L 5.265625 -4.84375 C 4.984375 -4.957031 4.71875 -5.050781 4.46875 -5.125 C 4.226562 -5.195312 3.988281 -5.234375 3.75 -5.234375 C 2.820312 -5.234375 2.359375 -4.570312 2.359375 -3.25 C 2.359375 -2.59375 2.476562 -2.109375 2.71875 -1.796875 C 2.96875 -1.484375 3.3125 -1.328125 3.75 -1.328125 C 4.125 -1.328125 4.457031 -1.375 4.75 -1.46875 C 5.039062 -1.570312 5.320312 -1.710938 5.59375 -1.890625 L 5.59375 -0.375 C 5.320312 -0.195312 5.035156 -0.0703125 4.734375 0 C 4.429688 0.0820312 4.050781 0.125 3.59375 0.125 Z M 3.59375 0.125 "/>
+</g>
+</g>
+<clipPath id="clip-0">
+<path clip-rule="nonzero" d="M 50.371094 66 L 643.957031 66 L 643.957031 243.746094 L 50.371094 243.746094 Z M 50.371094 66 "/>
+</clipPath>
+<clipPath id="clip-1">
+<path clip-rule="nonzero" d="M 75 243 L 110 243 L 110 243.746094 L 75 243.746094 Z M 75 243 "/>
+</clipPath>
+<clipPath id="clip-2">
+<path clip-rule="nonzero" d="M 160 215 L 195 215 L 195 243.746094 L 160 243.746094 Z M 160 215 "/>
+</clipPath>
+<clipPath id="clip-3">
+<path clip-rule="nonzero" d="M 160 214 L 195 214 L 195 243.746094 L 160 243.746094 Z M 160 214 "/>
+</clipPath>
+<clipPath id="clip-4">
+<path clip-rule="nonzero" d="M 245 139 L 280 139 L 280 243.746094 L 245 243.746094 Z M 245 139 "/>
+</clipPath>
+<clipPath id="clip-5">
+<path clip-rule="nonzero" d="M 330 81 L 365 81 L 365 243.746094 L 330 243.746094 Z M 330 81 "/>
+</clipPath>
+<clipPath id="clip-6">
+<path clip-rule="nonzero" d="M 329 81 L 365 81 L 365 243.746094 L 329 243.746094 Z M 329 81 "/>
+</clipPath>
+<clipPath id="clip-7">
+<path clip-rule="nonzero" d="M 415 71 L 449 71 L 449 243.746094 L 415 243.746094 Z M 415 71 "/>
+</clipPath>
+<clipPath id="clip-8">
+<path clip-rule="nonzero" d="M 414 70 L 450 70 L 450 243.746094 L 414 243.746094 Z M 414 70 "/>
+</clipPath>
+<clipPath id="clip-9">
+<path clip-rule="nonzero" d="M 499 60 L 534 60 L 534 243.746094 L 499 243.746094 Z M 499 60 "/>
+</clipPath>
+<clipPath id="clip-10">
+<path clip-rule="nonzero" d="M 584 32 L 619 32 L 619 243.746094 L 584 243.746094 Z M 584 32 "/>
+</clipPath>
+</defs>
+<path fill-rule="nonzero" fill="rgb(100%, 100%, 100%)" fill-opacity="1" stroke-width="0.5" stroke-linecap="round" stroke-linejoin="round" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 0.25 0.25 L 647.75 0.25 L 647.75 371.75 L 0.25 371.75 Z M 0.25 0.25 "/>
+<path fill-rule="nonzero" fill="rgb(100%, 100%, 100%)" fill-opacity="1" stroke-width="1" stroke-linecap="round" stroke-linejoin="round" stroke="rgb(51.764706%, 50.980392%, 51.764706%)" stroke-opacity="1" stroke-miterlimit="10" d="M 50.371094 24.886719 L 643.957031 24.886719 L 643.957031 243.746094 L 50.371094 243.746094 Z M 50.371094 24.886719 "/>
+<g clip-path="url(#clip-0)">
+<path fill="none" stroke-width="0.4" stroke-linecap="round" stroke-linejoin="round" stroke="rgb(75.294118%, 75.294118%, 75.294118%)" stroke-opacity="1" stroke-miterlimit="10" d="M 50.371094 243.746094 L 643.957031 243.746094 M 50.371094 155.394531 L 643.957031 155.394531 M 50.371094 67.042969 L 643.957031 67.042969 "/>
+</g>
+<g clip-path="url(#clip-1)">
+<path fill="none" stroke-width="0.5" stroke-linecap="round" stroke-linejoin="round" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 75.8125 243.746094 L 109.730469 243.746094 Z M 75.8125 243.746094 "/>
+</g>
+<g clip-path="url(#clip-2)">
+<path fill-rule="nonzero" fill="rgb(61.176471%, 61.176471%, 100%)" fill-opacity="1" d="M 160.609375 243.746094 L 194.527344 243.746094 L 194.527344 215.074219 L 160.609375 215.074219 Z M 160.609375 243.746094 "/>
+</g>
+<g clip-path="url(#clip-3)">
+<path fill="none" stroke-width="0.5" stroke-linecap="round" stroke-linejoin="round" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 160.609375 243.746094 L 194.527344 243.746094 L 194.527344 215.074219 L 160.609375 215.074219 Z M 160.609375 243.746094 "/>
+</g>
+<g clip-path="url(#clip-4)">
+<path fill-rule="nonzero" fill="rgb(61.176471%, 61.176471%, 100%)" fill-opacity="1" stroke-width="0.5" stroke-linecap="round" stroke-linejoin="round" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 245.40625 243.746094 L 279.328125 243.746094 L 279.328125 139.945312 L 245.40625 139.945312 Z M 245.40625 243.746094 "/>
+</g>
+<g clip-path="url(#clip-5)">
+<path fill-rule="nonzero" fill="rgb(61.176471%, 61.176471%, 100%)" fill-opacity="1" d="M 330.207031 243.746094 L 364.125 243.746094 L 364.125 81.664062 L 330.207031 81.664062 Z M 330.207031 243.746094 "/>
+</g>
+<g clip-path="url(#clip-6)">
+<path fill="none" stroke-width="0.5" stroke-linecap="round" stroke-linejoin="round" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 330.207031 243.746094 L 364.125 243.746094 L 364.125 81.664062 L 330.207031 81.664062 Z M 330.207031 243.746094 "/>
+</g>
+<g clip-path="url(#clip-7)">
+<path fill-rule="nonzero" fill="rgb(61.176471%, 61.176471%, 100%)" fill-opacity="1" d="M 415.003906 243.746094 L 448.921875 243.746094 L 448.921875 71.074219 L 415.003906 71.074219 Z M 415.003906 243.746094 "/>
+</g>
+<g clip-path="url(#clip-8)">
+<path fill="none" stroke-width="0.5" stroke-linecap="round" stroke-linejoin="round" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 415.003906 243.746094 L 448.921875 243.746094 L 448.921875 71.074219 L 415.003906 71.074219 Z M 415.003906 243.746094 "/>
+</g>
+<g clip-path="url(#clip-9)">
+<path fill-rule="nonzero" fill="rgb(61.176471%, 61.176471%, 100%)" fill-opacity="1" stroke-width="0.5" stroke-linecap="round" stroke-linejoin="round" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 499.800781 243.746094 L 533.71875 243.746094 L 533.71875 60.683594 L 499.800781 60.683594 Z M 499.800781 243.746094 "/>
+</g>
+<g clip-path="url(#clip-10)">
+<path fill-rule="nonzero" fill="rgb(61.176471%, 61.176471%, 100%)" fill-opacity="1" stroke-width="0.5" stroke-linecap="round" stroke-linejoin="round" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 584.597656 243.746094 L 618.515625 243.746094 L 618.515625 32.941406 L 584.597656 32.941406 Z M 584.597656 243.746094 "/>
+</g>
+<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
+<use xlink:href="#glyph-0-0" x="88.521602" y="240.489537"/>
+<use xlink:href="#glyph-0-1" x="91.521602" y="240.489537"/>
+<use xlink:href="#glyph-0-2" x="93.521602" y="240.489537"/>
+</g>
+<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
+<use xlink:href="#glyph-0-3" x="173.319306" y="211.815387"/>
+<use xlink:href="#glyph-0-1" x="176.319306" y="211.815387"/>
+<use xlink:href="#glyph-0-0" x="178.319306" y="211.815387"/>
+</g>
+<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
+<use xlink:href="#glyph-0-0" x="256.617009" y="136.685808"/>
+<use xlink:href="#glyph-0-4" x="259.617009" y="136.685808"/>
+<use xlink:href="#glyph-0-1" x="262.617009" y="136.685808"/>
+<use xlink:href="#glyph-0-2" x="264.617009" y="136.685808"/>
+</g>
+<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
+<use xlink:href="#glyph-0-5" x="341.414713" y="78.407712"/>
+<use xlink:href="#glyph-0-6" x="344.414713" y="78.407712"/>
+<use xlink:href="#glyph-0-1" x="347.414713" y="78.407712"/>
+<use xlink:href="#glyph-0-7" x="349.414713" y="78.407712"/>
+</g>
+<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
+<use xlink:href="#glyph-0-8" x="426.212417" y="67.81619"/>
+<use xlink:href="#glyph-0-2" x="429.212417" y="67.81619"/>
+<use xlink:href="#glyph-0-1" x="432.212417" y="67.81619"/>
+<use xlink:href="#glyph-0-2" x="434.212417" y="67.81619"/>
+</g>
+<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
+<use xlink:href="#glyph-0-0" x="509.51012" y="57.423917"/>
+<use xlink:href="#glyph-0-0" x="512.51012" y="57.423917"/>
+<use xlink:href="#glyph-0-6" x="515.51012" y="57.423917"/>
+<use xlink:href="#glyph-0-1" x="518.51012" y="57.423917"/>
+<use xlink:href="#glyph-0-2" x="520.51012" y="57.423917"/>
+</g>
+<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
+<use xlink:href="#glyph-0-3" x="594.307824" y="29.683334"/>
+<use xlink:href="#glyph-0-9" x="597.307824" y="29.683334"/>
+<use xlink:href="#glyph-0-7" x="600.307824" y="29.683334"/>
+<use xlink:href="#glyph-0-1" x="603.307824" y="29.683334"/>
+<use xlink:href="#glyph-0-3" x="605.307824" y="29.683334"/>
+</g>
+<path fill="none" stroke-width="0.5" stroke-linecap="round" stroke-linejoin="round" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 50.371094 243.746094 L 643.957031 243.746094 M 50.371094 247.996094 L 50.371094 243.746094 M 135.171875 247.996094 L 135.171875 243.746094 M 219.96875 247.996094 L 219.96875 243.746094 M 304.765625 247.996094 L 304.765625 243.746094 M 389.5625 247.996094 L 389.5625 243.746094 M 474.359375 247.996094 L 474.359375 243.746094 M 559.160156 247.996094 L 559.160156 243.746094 M 643.957031 247.996094 L 643.957031 243.746094 "/>
+<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
+<use xlink:href="#glyph-1-0" x="95.625977" y="299.207031"/>
+<use xlink:href="#glyph-1-1" x="95.625977" y="294.207031"/>
+<use xlink:href="#glyph-1-2" x="95.625977" y="290.207031"/>
+<use xlink:href="#glyph-1-3" x="95.625977" y="285.207031"/>
+<use xlink:href="#glyph-1-4" x="95.625977" y="282.207031"/>
+<use xlink:href="#glyph-1-5" x="95.625977" y="277.207031"/>
+<use xlink:href="#glyph-1-4" x="95.625977" y="274.207031"/>
+<use xlink:href="#glyph-1-6" x="95.625977" y="269.207031"/>
+<use xlink:href="#glyph-1-7" x="95.625977" y="267.207031"/>
+<use xlink:href="#glyph-1-8" x="95.625977" y="265.207031"/>
+<use xlink:href="#glyph-1-5" x="95.625977" y="262.207031"/>
+<use xlink:href="#glyph-1-9" x="95.625977" y="259.207031"/>
+<use xlink:href="#glyph-1-7" x="95.625977" y="254.207031"/>
+<use xlink:href="#glyph-1-7" x="95.625977" y="252.207031"/>
+</g>
+<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
+<use xlink:href="#glyph-1-0" x="180.422852" y="368.207031"/>
+<use xlink:href="#glyph-1-1" x="180.422852" y="363.207031"/>
+<use xlink:href="#glyph-1-2" x="180.422852" y="359.207031"/>
+<use xlink:href="#glyph-1-3" x="180.422852" y="354.207031"/>
+<use xlink:href="#glyph-1-4" x="180.422852" y="351.207031"/>
+<use xlink:href="#glyph-1-5" x="180.422852" y="346.207031"/>
+<use xlink:href="#glyph-1-4" x="180.422852" y="343.207031"/>
+<use xlink:href="#glyph-1-6" x="180.422852" y="338.207031"/>
+<use xlink:href="#glyph-1-7" x="180.422852" y="336.207031"/>
+<use xlink:href="#glyph-1-8" x="180.422852" y="334.207031"/>
+<use xlink:href="#glyph-1-10" x="180.422852" y="331.207031"/>
+<use xlink:href="#glyph-1-4" x="180.422852" y="326.207031"/>
+<use xlink:href="#glyph-1-8" x="180.422852" y="321.207031"/>
+<use xlink:href="#glyph-1-11" x="180.422852" y="318.207031"/>
+<use xlink:href="#glyph-1-12" x="180.422852" y="311.207031"/>
+<use xlink:href="#glyph-1-11" x="180.422852" y="306.207031"/>
+<use xlink:href="#glyph-1-8" x="180.422852" y="299.207031"/>
+<use xlink:href="#glyph-1-6" x="180.422852" y="296.207031"/>
+<use xlink:href="#glyph-1-11" x="180.422852" y="294.207031"/>
+<use xlink:href="#glyph-1-11" x="180.422852" y="287.207031"/>
+<use xlink:href="#glyph-1-9" x="180.422852" y="280.207031"/>
+<use xlink:href="#glyph-1-13" x="180.422852" y="275.207031"/>
+<use xlink:href="#glyph-1-14" x="180.422852" y="272.207031"/>
+<use xlink:href="#glyph-1-15" x="180.422852" y="268.207031"/>
+<use xlink:href="#glyph-1-6" x="180.422852" y="263.207031"/>
+<use xlink:href="#glyph-1-7" x="180.422852" y="261.207031"/>
+<use xlink:href="#glyph-1-6" x="180.422852" y="259.207031"/>
+<use xlink:href="#glyph-1-13" x="180.422852" y="257.207031"/>
+<use xlink:href="#glyph-1-1" x="180.422852" y="254.207031"/>
+</g>
+<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
+<use xlink:href="#glyph-1-0" x="265.219727" y="307.207031"/>
+<use xlink:href="#glyph-1-1" x="265.219727" y="302.207031"/>
+<use xlink:href="#glyph-1-2" x="265.219727" y="298.207031"/>
+<use xlink:href="#glyph-1-3" x="265.219727" y="293.207031"/>
+<use xlink:href="#glyph-1-4" x="265.219727" y="290.207031"/>
+<use xlink:href="#glyph-1-5" x="265.219727" y="285.207031"/>
+<use xlink:href="#glyph-1-4" x="265.219727" y="282.207031"/>
+<use xlink:href="#glyph-1-6" x="265.219727" y="277.207031"/>
+<use xlink:href="#glyph-1-7" x="265.219727" y="275.207031"/>
+<use xlink:href="#glyph-1-8" x="265.219727" y="273.207031"/>
+<use xlink:href="#glyph-1-10" x="265.219727" y="270.207031"/>
+<use xlink:href="#glyph-1-4" x="265.219727" y="265.207031"/>
+<use xlink:href="#glyph-1-8" x="265.219727" y="260.207031"/>
+<use xlink:href="#glyph-1-16" x="265.219727" y="257.207031"/>
+<use xlink:href="#glyph-1-6" x="265.219727" y="255.207031"/>
+<use xlink:href="#glyph-1-13" x="265.219727" y="253.207031"/>
+</g>
+<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
+<use xlink:href="#glyph-1-0" x="350.020508" y="342.207031"/>
+<use xlink:href="#glyph-1-1" x="350.020508" y="337.207031"/>
+<use xlink:href="#glyph-1-2" x="350.020508" y="333.207031"/>
+<use xlink:href="#glyph-1-3" x="350.020508" y="328.207031"/>
+<use xlink:href="#glyph-1-4" x="350.020508" y="325.207031"/>
+<use xlink:href="#glyph-1-5" x="350.020508" y="320.207031"/>
+<use xlink:href="#glyph-1-4" x="350.020508" y="317.207031"/>
+<use xlink:href="#glyph-1-6" x="350.020508" y="312.207031"/>
+<use xlink:href="#glyph-1-7" x="350.020508" y="310.207031"/>
+<use xlink:href="#glyph-1-8" x="350.020508" y="308.207031"/>
+<use xlink:href="#glyph-1-10" x="350.020508" y="305.207031"/>
+<use xlink:href="#glyph-1-4" x="350.020508" y="300.207031"/>
+<use xlink:href="#glyph-1-8" x="350.020508" y="295.207031"/>
+<use xlink:href="#glyph-1-6" x="350.020508" y="292.207031"/>
+<use xlink:href="#glyph-1-10" x="350.020508" y="290.207031"/>
+<use xlink:href="#glyph-1-13" x="350.020508" y="285.207031"/>
+<use xlink:href="#glyph-1-8" x="350.020508" y="282.207031"/>
+<use xlink:href="#glyph-1-15" x="350.020508" y="279.207031"/>
+<use xlink:href="#glyph-1-17" x="350.020508" y="274.207031"/>
+<use xlink:href="#glyph-1-8" x="350.020508" y="270.207031"/>
+<use xlink:href="#glyph-1-4" x="350.020508" y="267.207031"/>
+<use xlink:href="#glyph-1-0" x="350.020508" y="262.207031"/>
+<use xlink:href="#glyph-1-13" x="350.020508" y="257.207031"/>
+<use xlink:href="#glyph-1-18" x="350.020508" y="254.207031"/>
+</g>
+<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
+<use xlink:href="#glyph-1-0" x="434.817383" y="318.207031"/>
+<use xlink:href="#glyph-1-1" x="434.817383" y="313.207031"/>
+<use xlink:href="#glyph-1-2" x="434.817383" y="309.207031"/>
+<use xlink:href="#glyph-1-3" x="434.817383" y="304.207031"/>
+<use xlink:href="#glyph-1-4" x="434.817383" y="301.207031"/>
+<use xlink:href="#glyph-1-5" x="434.817383" y="296.207031"/>
+<use xlink:href="#glyph-1-4" x="434.817383" y="293.207031"/>
+<use xlink:href="#glyph-1-6" x="434.817383" y="288.207031"/>
+<use xlink:href="#glyph-1-7" x="434.817383" y="286.207031"/>
+<use xlink:href="#glyph-1-8" x="434.817383" y="284.207031"/>
+<use xlink:href="#glyph-1-10" x="434.817383" y="281.207031"/>
+<use xlink:href="#glyph-1-4" x="434.817383" y="276.207031"/>
+<use xlink:href="#glyph-1-8" x="434.817383" y="271.207031"/>
+<use xlink:href="#glyph-1-18" x="434.817383" y="268.207031"/>
+<use xlink:href="#glyph-1-0" x="434.817383" y="264.207031"/>
+<use xlink:href="#glyph-1-12" x="434.817383" y="259.207031"/>
+<use xlink:href="#glyph-1-19" x="434.817383" y="254.207031"/>
+</g>
+<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
+<use xlink:href="#glyph-1-0" x="519.614258" y="336.207031"/>
+<use xlink:href="#glyph-1-1" x="519.614258" y="331.207031"/>
+<use xlink:href="#glyph-1-2" x="519.614258" y="327.207031"/>
+<use xlink:href="#glyph-1-3" x="519.614258" y="322.207031"/>
+<use xlink:href="#glyph-1-4" x="519.614258" y="319.207031"/>
+<use xlink:href="#glyph-1-5" x="519.614258" y="314.207031"/>
+<use xlink:href="#glyph-1-4" x="519.614258" y="311.207031"/>
+<use xlink:href="#glyph-1-6" x="519.614258" y="306.207031"/>
+<use xlink:href="#glyph-1-7" x="519.614258" y="304.207031"/>
+<use xlink:href="#glyph-1-8" x="519.614258" y="302.207031"/>
+<use xlink:href="#glyph-1-10" x="519.614258" y="299.207031"/>
+<use xlink:href="#glyph-1-4" x="519.614258" y="294.207031"/>
+<use xlink:href="#glyph-1-8" x="519.614258" y="289.207031"/>
+<use xlink:href="#glyph-1-18" x="519.614258" y="286.207031"/>
+<use xlink:href="#glyph-1-13" x="519.614258" y="282.207031"/>
+<use xlink:href="#glyph-1-14" x="519.614258" y="279.207031"/>
+<use xlink:href="#glyph-1-13" x="519.614258" y="275.207031"/>
+<use xlink:href="#glyph-1-6" x="519.614258" y="272.207031"/>
+<use xlink:href="#glyph-1-19" x="519.614258" y="270.207031"/>
+<use xlink:href="#glyph-1-8" x="519.614258" y="266.207031"/>
+<use xlink:href="#glyph-1-4" x="519.614258" y="263.207031"/>
+<use xlink:href="#glyph-1-0" x="519.614258" y="258.207031"/>
+<use xlink:href="#glyph-1-13" x="519.614258" y="253.207031"/>
+</g>
+<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
+<use xlink:href="#glyph-1-0" x="604.411133" y="362.207031"/>
+<use xlink:href="#glyph-1-1" x="604.411133" y="357.207031"/>
+<use xlink:href="#glyph-1-2" x="604.411133" y="353.207031"/>
+<use xlink:href="#glyph-1-3" x="604.411133" y="348.207031"/>
+<use xlink:href="#glyph-1-4" x="604.411133" y="345.207031"/>
+<use xlink:href="#glyph-1-5" x="604.411133" y="340.207031"/>
+<use xlink:href="#glyph-1-4" x="604.411133" y="337.207031"/>
+<use xlink:href="#glyph-1-6" x="604.411133" y="332.207031"/>
+<use xlink:href="#glyph-1-7" x="604.411133" y="330.207031"/>
+<use xlink:href="#glyph-1-8" x="604.411133" y="328.207031"/>
+<use xlink:href="#glyph-1-10" x="604.411133" y="325.207031"/>
+<use xlink:href="#glyph-1-4" x="604.411133" y="320.207031"/>
+<use xlink:href="#glyph-1-8" x="604.411133" y="315.207031"/>
+<use xlink:href="#glyph-1-3" x="604.411133" y="312.207031"/>
+<use xlink:href="#glyph-1-9" x="604.411133" y="309.207031"/>
+<use xlink:href="#glyph-1-10" x="604.411133" y="304.207031"/>
+<use xlink:href="#glyph-1-13" x="604.411133" y="299.207031"/>
+<use xlink:href="#glyph-1-6" x="604.411133" y="296.207031"/>
+<use xlink:href="#glyph-1-11" x="604.411133" y="294.207031"/>
+<use xlink:href="#glyph-1-12" x="604.411133" y="287.207031"/>
+<use xlink:href="#glyph-1-8" x="604.411133" y="282.207031"/>
+<use xlink:href="#glyph-1-18" x="604.411133" y="279.207031"/>
+<use xlink:href="#glyph-1-11" x="604.411133" y="275.207031"/>
+<use xlink:href="#glyph-1-14" x="604.411133" y="268.207031"/>
+<use xlink:href="#glyph-1-7" x="604.411133" y="264.207031"/>
+<use xlink:href="#glyph-1-7" x="604.411133" y="262.207031"/>
+<use xlink:href="#glyph-1-6" x="604.411133" y="260.207031"/>
+<use xlink:href="#glyph-1-10" x="604.411133" y="258.207031"/>
+<use xlink:href="#glyph-1-13" x="604.411133" y="253.207031"/>
+</g>
+<path fill="none" stroke-width="0.5" stroke-linecap="round" stroke-linejoin="round" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 50.371094 243.746094 L 50.371094 24.886719 M 46.121094 243.746094 L 50.371094 243.746094 M 46.121094 155.394531 L 50.371094 155.394531 M 46.121094 67.042969 L 50.371094 67.042969 "/>
+<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
+<use xlink:href="#glyph-2-0" x="31.914062" y="246.602539"/>
+<use xlink:href="#glyph-2-1" x="36.914062" y="246.602539"/>
+<use xlink:href="#glyph-2-2" x="38.914062" y="246.602539"/>
+</g>
+<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
+<use xlink:href="#glyph-2-0" x="26.914062" y="158.24707"/>
+<use xlink:href="#glyph-2-2" x="31.914062" y="158.24707"/>
+<use xlink:href="#glyph-2-1" x="36.914062" y="158.24707"/>
+<use xlink:href="#glyph-2-2" x="38.914062" y="158.24707"/>
+</g>
+<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
+<use xlink:href="#glyph-2-0" x="21.914062" y="69.895508"/>
+<use xlink:href="#glyph-2-2" x="26.914062" y="69.895508"/>
+<use xlink:href="#glyph-2-2" x="31.914062" y="69.895508"/>
+<use xlink:href="#glyph-2-1" x="36.914062" y="69.895508"/>
+<use xlink:href="#glyph-2-2" x="38.914062" y="69.895508"/>
+</g>
+<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
+<use xlink:href="#glyph-3-0" x="14.733398" y="202.066406"/>
+<use xlink:href="#glyph-3-1" x="14.733398" y="197.066406"/>
+<use xlink:href="#glyph-3-2" x="14.733398" y="194.066406"/>
+<use xlink:href="#glyph-3-3" x="14.733398" y="188.066406"/>
+<use xlink:href="#glyph-3-4" x="14.733398" y="180.066406"/>
+<use xlink:href="#glyph-3-2" x="14.733398" y="174.066406"/>
+<use xlink:href="#glyph-3-3" x="14.733398" y="168.066406"/>
+<use xlink:href="#glyph-3-5" x="14.733398" y="160.066406"/>
+<use xlink:href="#glyph-3-6" x="14.733398" y="154.066406"/>
+<use xlink:href="#glyph-3-2" x="14.733398" y="151.066406"/>
+<use xlink:href="#glyph-3-7" x="14.733398" y="145.066406"/>
+<use xlink:href="#glyph-3-8" x="14.733398" y="140.066406"/>
+<use xlink:href="#glyph-3-9" x="14.733398" y="134.066406"/>
+<use xlink:href="#glyph-3-6" x="14.733398" y="130.066406"/>
+<use xlink:href="#glyph-3-10" x="14.733398" y="127.066406"/>
+<use xlink:href="#glyph-3-11" x="14.733398" y="121.066406"/>
+<use xlink:href="#glyph-3-4" x="14.733398" y="116.066406"/>
+<use xlink:href="#glyph-3-9" x="14.733398" y="110.066406"/>
+<use xlink:href="#glyph-3-2" x="14.733398" y="106.066406"/>
+<use xlink:href="#glyph-3-12" x="14.733398" y="100.066406"/>
+<use xlink:href="#glyph-3-2" x="14.733398" y="97.066406"/>
+<use xlink:href="#glyph-3-13" x="14.733398" y="91.066406"/>
+<use xlink:href="#glyph-3-1" x="14.733398" y="88.066406"/>
+<use xlink:href="#glyph-3-14" x="14.733398" y="85.066406"/>
+<use xlink:href="#glyph-3-12" x="14.733398" y="82.066406"/>
+<use xlink:href="#glyph-3-15" x="14.733398" y="79.066406"/>
+<use xlink:href="#glyph-3-1" x="14.733398" y="73.066406"/>
+<use xlink:href="#glyph-3-1" x="14.733398" y="70.066406"/>
+</g>
+<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
+<use xlink:href="#glyph-4-0" x="186.25" y="16.871094"/>
+<use xlink:href="#glyph-4-1" x="194.25" y="16.871094"/>
+<use xlink:href="#glyph-4-2" x="201.25" y="16.871094"/>
+<use xlink:href="#glyph-4-3" x="209.25" y="16.871094"/>
+<use xlink:href="#glyph-4-4" x="214.25" y="16.871094"/>
+<use xlink:href="#glyph-4-5" x="221.25" y="16.871094"/>
+<use xlink:href="#glyph-4-4" x="226.25" y="16.871094"/>
+<use xlink:href="#glyph-4-6" x="233.25" y="16.871094"/>
+<use xlink:href="#glyph-4-7" x="237.25" y="16.871094"/>
+<use xlink:href="#glyph-4-8" x="241.25" y="16.871094"/>
+<use xlink:href="#glyph-4-9" x="244.25" y="16.871094"/>
+<use xlink:href="#glyph-4-10" x="251.25" y="16.871094"/>
+<use xlink:href="#glyph-4-7" x="259.25" y="16.871094"/>
+<use xlink:href="#glyph-4-9" x="263.25" y="16.871094"/>
+<use xlink:href="#glyph-4-11" x="270.25" y="16.871094"/>
+<use xlink:href="#glyph-4-6" x="275.25" y="16.871094"/>
+<use xlink:href="#glyph-4-4" x="279.25" y="16.871094"/>
+<use xlink:href="#glyph-4-12" x="286.25" y="16.871094"/>
+<use xlink:href="#glyph-4-8" x="294.25" y="16.871094"/>
+<use xlink:href="#glyph-4-2" x="297.25" y="16.871094"/>
+<use xlink:href="#glyph-4-13" x="305.25" y="16.871094"/>
+<use xlink:href="#glyph-4-13" x="312.25" y="16.871094"/>
+<use xlink:href="#glyph-4-14" x="319.25" y="16.871094"/>
+<use xlink:href="#glyph-4-15" x="327.25" y="16.871094"/>
+<use xlink:href="#glyph-4-16" x="333.25" y="16.871094"/>
+<use xlink:href="#glyph-4-13" x="337.25" y="16.871094"/>
+<use xlink:href="#glyph-4-12" x="344.25" y="16.871094"/>
+<use xlink:href="#glyph-4-17" x="352.25" y="16.871094"/>
+<use xlink:href="#glyph-4-8" x="360.25" y="16.871094"/>
+<use xlink:href="#glyph-4-18" x="363.25" y="16.871094"/>
+<use xlink:href="#glyph-4-19" x="370.25" y="16.871094"/>
+<use xlink:href="#glyph-4-20" x="377.25" y="16.871094"/>
+<use xlink:href="#glyph-4-8" x="386.25" y="16.871094"/>
+<use xlink:href="#glyph-4-6" x="389.25" y="16.871094"/>
+<use xlink:href="#glyph-4-12" x="393.25" y="16.871094"/>
+<use xlink:href="#glyph-4-15" x="401.25" y="16.871094"/>
+<use xlink:href="#glyph-4-11" x="407.25" y="16.871094"/>
+<use xlink:href="#glyph-4-3" x="412.25" y="16.871094"/>
+<use xlink:href="#glyph-4-21" x="417.25" y="16.871094"/>
+<use xlink:href="#glyph-4-22" x="425.25" y="16.871094"/>
+<use xlink:href="#glyph-4-11" x="431.25" y="16.871094"/>
+<use xlink:href="#glyph-4-6" x="436.25" y="16.871094"/>
+<use xlink:href="#glyph-4-4" x="440.25" y="16.871094"/>
+<use xlink:href="#glyph-4-12" x="447.25" y="16.871094"/>
+<use xlink:href="#glyph-4-15" x="455.25" y="16.871094"/>
+</g>
+</svg>
diff --git a/images/2025-pydrofoil-itype-after.svg b/images/2025-pydrofoil-itype-after.svg
new file mode 100644
index 000000000..3deb068f4
--- /dev/null
+++ b/images/2025-pydrofoil-itype-after.svg
@@ -0,0 +1,329 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+ "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<!-- Generated by graphviz version 2.43.0 (0)
+ -->
+<!-- Title: _G Pages: 1 -->
+<svg width="2839pt" height="1032pt"
+ viewBox="0.00 0.00 2838.50 1032.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 1028)">
+<title>_G</title>
+<polygon fill="white" stroke="transparent" points="-4,4 -4,-1028 2834.5,-1028 2834.5,4 -4,4"/>
+<!-- _graphzexecute__zITYPE -->
+<g id="node1" class="node">
+<title>_graphzexecute__zITYPE</title>
+<polygon fill="green" stroke="black" points="2290.5,-1024 2153.5,-1024 2153.5,-986 2290.5,-986 2290.5,-1024"/>
+<text text-anchor="start" x="2161.5" y="-1008.8" font-family="Times,serif" font-size="14.00">zexecute_zITYPE</text>
+<text text-anchor="middle" x="2222" y="-993.8" font-family="Times,serif" font-size="14.00">[zmergez3var]</text>
+</g>
+<!-- _275738704 -->
+<g id="node2" class="node">
+<title>_275738704</title>
+<polygon fill="white" stroke="black" points="2830.5,-949 1613.5,-949 1613.5,-761 2830.5,-761 2830.5,-949"/>
+<text text-anchor="start" x="1621.5" y="-933.8" font-family="Times,serif" font-size="14.00">i0 = zITYPE(zmergez3var) [UnionCast]</text>
+<text text-anchor="start" x="1621.5" y="-918.8" font-family="Times,serif" font-size="14.00">i1 = ztuplez3z5bv12_z5bv5_z5bv5_z5enumz0zziop0(i0) [FieldAccess]</text>
+<text text-anchor="start" x="1621.5" y="-903.8" font-family="Times,serif" font-size="14.00">i2 = ztuplez3z5bv12_z5bv5_z5bv5_z5enumz0zziop1(i0) [FieldAccess]</text>
+<text text-anchor="start" x="1621.5" y="-888.8" font-family="Times,serif" font-size="14.00">i3 = ztuplez3z5bv12_z5bv5_z5bv5_z5enumz0zziop2(i0) [FieldAccess]</text>
+<text text-anchor="start" x="1621.5" y="-873.8" font-family="Times,serif" font-size="14.00">i4 = ztuplez3z5bv12_z5bv5_z5bv5_z5enumz0zziop3(i0) [FieldAccess]</text>
+<text text-anchor="start" x="1621.5" y="-858.8" font-family="Times,serif" font-size="14.00">i5 = inlined zrX_bits() [Comment]</text>
+<text text-anchor="start" x="1621.5" y="-843.8" font-family="Times,serif" font-size="14.00">i6 = @unsigned_bv(i2, MachineIntConstant(5)) [Operation]</text>
+<text text-anchor="start" x="1621.5" y="-828.8" font-family="Times,serif" font-size="14.00">i7 = zrX(i6) [Operation]</text>
+<text text-anchor="start" x="1621.5" y="-813.8" font-family="Times,serif" font-size="14.00">i8 = inlined zsign_extend() [Comment]</text>
+<text text-anchor="start" x="1621.5" y="-798.8" font-family="Times,serif" font-size="14.00">i9 = @sign_extend_bv_i_i(i1, MachineIntConstant(12), MachineIntConstant(64)) [Operation]</text>
+<text text-anchor="start" x="1621.5" y="-783.8" font-family="Times,serif" font-size="14.00">i10 = @eq(EnumConstant(&#39;zRISCV_ADDI&#39;, Enum(&#39;ziop&#39;, (&#39;zRISCV_ADDI&#39;, &#39;zRISCV_SLTI&#39;, &#39;zRISCV_SLTIU&#39;, &#39;zRISCV_XORI&#39;, &#39;zRISCV_ORI&#39;, &#39;zRISCV_ANDI&#39;))), i4) [Operation]</text>
+<text text-anchor="middle" x="2222" y="-768.8" font-family="Times,serif" font-size="14.00">goto if i10</text>
+</g>
+<!-- _graphzexecute__zITYPE&#45;&gt;_275738704 -->
+<g id="edge25" class="edge">
+<title>_graphzexecute__zITYPE&#45;&gt;_275738704</title>
+<path fill="none" stroke="black" stroke-dasharray="5,2" d="M2222,-985.85C2222,-978.5 2222,-969.39 2222,-959.43"/>
+<polygon fill="black" stroke="black" points="2225.5,-959.22 2222,-949.22 2218.5,-959.22 2225.5,-959.22"/>
+</g>
+<!-- _275739096 -->
+<g id="node3" class="node">
+<title>_275739096</title>
+<polygon fill="white" stroke="black" points="2510.5,-710 1299.5,-710 1299.5,-672 2510.5,-672 2510.5,-710"/>
+<text text-anchor="start" x="1307.5" y="-694.8" font-family="Times,serif" font-size="14.00">i11 = @eq(EnumConstant(&#39;zRISCV_SLTI&#39;, Enum(&#39;ziop&#39;, (&#39;zRISCV_ADDI&#39;, &#39;zRISCV_SLTI&#39;, &#39;zRISCV_SLTIU&#39;, &#39;zRISCV_XORI&#39;, &#39;zRISCV_ORI&#39;, &#39;zRISCV_ANDI&#39;))), i4) [Operation]</text>
+<text text-anchor="middle" x="1905" y="-679.8" font-family="Times,serif" font-size="14.00">goto if i11</text>
+</g>
+<!-- _275738704&#45;&gt;_275739096 -->
+<g id="edge22" class="edge">
+<title>_275738704&#45;&gt;_275739096</title>
+<path fill="none" stroke="black" stroke-dasharray="5,2" d="M2039.9,-760.94C2006.13,-743.68 1973.82,-727.17 1949.29,-714.64"/>
+<polygon fill="black" stroke="black" points="1950.78,-711.47 1940.29,-710.03 1947.6,-717.7 1950.78,-711.47"/>
+<text text-anchor="middle" x="2018" y="-731.8" font-family="Times,serif" font-size="14.00">False</text>
+</g>
+<!-- _275738760 -->
+<g id="node19" class="node">
+<title>_275738760</title>
+<polygon fill="white" stroke="black" points="2788,-654 2290,-654 2290,-616 2788,-616 2788,-654"/>
+<text text-anchor="start" x="2298" y="-638.8" font-family="Times,serif" font-size="14.00">i17 = @add_bits_bv_bv(i7, i9, MachineIntConstant(64)) [Operation]</text>
+<text text-anchor="middle" x="2539" y="-623.8" font-family="Times,serif" font-size="14.00">goto</text>
+</g>
+<!-- _275738704&#45;&gt;_275738760 -->
+<g id="edge24" class="edge">
+<title>_275738704&#45;&gt;_275738760</title>
+<path fill="none" stroke="black" stroke-dasharray="5,2" d="M2462.97,-761C2483.81,-746.22 2503.01,-729.31 2519,-710 2529.59,-697.22 2534.61,-679.32 2536.97,-664.33"/>
+<polygon fill="black" stroke="black" points="2540.49,-664.41 2538.26,-654.05 2533.54,-663.53 2540.49,-664.41"/>
+<text text-anchor="middle" x="2519" y="-731.8" font-family="Times,serif" font-size="14.00">True</text>
+</g>
+<!-- _275739264 -->
+<g id="node4" class="node">
+<title>_275739264</title>
+<polygon fill="white" stroke="black" points="1826.5,-560.5 603.5,-560.5 603.5,-522.5 1826.5,-522.5 1826.5,-560.5"/>
+<text text-anchor="start" x="611.5" y="-545.3" font-family="Times,serif" font-size="14.00">i12 = @eq(EnumConstant(&#39;zRISCV_SLTIU&#39;, Enum(&#39;ziop&#39;, (&#39;zRISCV_ADDI&#39;, &#39;zRISCV_SLTI&#39;, &#39;zRISCV_SLTIU&#39;, &#39;zRISCV_XORI&#39;, &#39;zRISCV_ORI&#39;, &#39;zRISCV_ANDI&#39;))), i4) [Operation]</text>
+<text text-anchor="middle" x="1215" y="-530.3" font-family="Times,serif" font-size="14.00">goto if i12</text>
+</g>
+<!-- _275739096&#45;&gt;_275739264 -->
+<g id="edge15" class="edge">
+<title>_275739096&#45;&gt;_275739264</title>
+<path fill="none" stroke="black" stroke-dasharray="5,2" d="M1820.74,-671.99C1691.32,-644.32 1444.44,-591.55 1309.25,-562.65"/>
+<polygon fill="black" stroke="black" points="1309.83,-559.19 1299.32,-560.52 1308.36,-566.04 1309.83,-559.19"/>
+<text text-anchor="middle" x="1739" y="-631.3" font-family="Times,serif" font-size="14.00">False</text>
+</g>
+<!-- _275739152 -->
+<g id="node15" class="node">
+<title>_275739152</title>
+<polygon fill="white" stroke="black" points="2283.5,-598 1844.5,-598 1844.5,-485 2283.5,-485 2283.5,-598"/>
+<text text-anchor="start" x="1852.5" y="-582.8" font-family="Times,serif" font-size="14.00">i30 = inlined zz8operatorz0zI_sz9() [Comment]</text>
+<text text-anchor="start" x="1852.5" y="-567.8" font-family="Times,serif" font-size="14.00">i31 = @signed_bv(i7, MachineIntConstant(64)) [Operation]</text>
+<text text-anchor="start" x="1852.5" y="-552.8" font-family="Times,serif" font-size="14.00">i32 = @signed_bv(i9, MachineIntConstant(64)) [Operation]</text>
+<text text-anchor="start" x="1852.5" y="-537.8" font-family="Times,serif" font-size="14.00">i33 = @lt(i31, i32) [Operation]</text>
+<text text-anchor="start" x="1852.5" y="-522.8" font-family="Times,serif" font-size="14.00">i34 = inlined zbool_to_bits() [Comment]</text>
+<text text-anchor="start" x="1852.5" y="-507.8" font-family="Times,serif" font-size="14.00">i35 = inlined zbool_bits_forwards() [Comment]</text>
+<text text-anchor="middle" x="2064" y="-492.8" font-family="Times,serif" font-size="14.00">goto if i33</text>
+</g>
+<!-- _275739096&#45;&gt;_275739152 -->
+<g id="edge21" class="edge">
+<title>_275739096&#45;&gt;_275739152</title>
+<path fill="none" stroke="black" stroke-dasharray="5,2" d="M1924.5,-671.91C1942.46,-655.25 1970.19,-629.52 1996.22,-605.38"/>
+<polygon fill="black" stroke="black" points="1998.91,-607.66 2003.86,-598.29 1994.15,-602.52 1998.91,-607.66"/>
+<text text-anchor="middle" x="2002" y="-631.3" font-family="Times,serif" font-size="14.00">True</text>
+</g>
+<!-- _275739432 -->
+<g id="node5" class="node">
+<title>_275739432</title>
+<polygon fill="white" stroke="black" points="1341.5,-411.5 124.5,-411.5 124.5,-373.5 1341.5,-373.5 1341.5,-411.5"/>
+<text text-anchor="start" x="132.5" y="-396.3" font-family="Times,serif" font-size="14.00">i13 = @eq(EnumConstant(&#39;zRISCV_ANDI&#39;, Enum(&#39;ziop&#39;, (&#39;zRISCV_ADDI&#39;, &#39;zRISCV_SLTI&#39;, &#39;zRISCV_SLTIU&#39;, &#39;zRISCV_XORI&#39;, &#39;zRISCV_ORI&#39;, &#39;zRISCV_ANDI&#39;))), i4) [Operation]</text>
+<text text-anchor="middle" x="733" y="-381.3" font-family="Times,serif" font-size="14.00">goto if i13</text>
+</g>
+<!-- _275739264&#45;&gt;_275739432 -->
+<g id="edge8" class="edge">
+<title>_275739264&#45;&gt;_275739432</title>
+<path fill="none" stroke="black" stroke-dasharray="5,2" d="M1155.9,-522.47C1066.43,-495.19 897,-443.52 802.01,-414.55"/>
+<polygon fill="black" stroke="black" points="802.79,-411.13 792.21,-411.56 800.75,-417.82 802.79,-411.13"/>
+<text text-anchor="middle" x="993" y="-455.8" font-family="Times,serif" font-size="14.00">False</text>
+</g>
+<!-- _275739376 -->
+<g id="node11" class="node">
+<title>_275739376</title>
+<polygon fill="white" stroke="black" points="1714.5,-434 1359.5,-434 1359.5,-351 1714.5,-351 1714.5,-434"/>
+<text text-anchor="start" x="1367.5" y="-418.8" font-family="Times,serif" font-size="14.00">i25 = inlined zz8operatorz0zI_uz9() [Comment]</text>
+<text text-anchor="start" x="1367.5" y="-403.8" font-family="Times,serif" font-size="14.00">i26 = @lt_unsigned64(i7, i9) [Operation]</text>
+<text text-anchor="start" x="1367.5" y="-388.8" font-family="Times,serif" font-size="14.00">i27 = inlined zbool_to_bits() [Comment]</text>
+<text text-anchor="start" x="1367.5" y="-373.8" font-family="Times,serif" font-size="14.00">i28 = inlined zbool_bits_forwards() [Comment]</text>
+<text text-anchor="middle" x="1537" y="-358.8" font-family="Times,serif" font-size="14.00">goto if i26</text>
+</g>
+<!-- _275739264&#45;&gt;_275739376 -->
+<g id="edge14" class="edge">
+<title>_275739264&#45;&gt;_275739376</title>
+<path fill="none" stroke="black" stroke-dasharray="5,2" d="M1254.48,-522.47C1300.09,-501.66 1376.79,-466.64 1438.78,-438.34"/>
+<polygon fill="black" stroke="black" points="1440.56,-441.38 1448.2,-434.04 1437.65,-435.01 1440.56,-441.38"/>
+<text text-anchor="middle" x="1422" y="-455.8" font-family="Times,serif" font-size="14.00">True</text>
+</g>
+<!-- _275739600 -->
+<g id="node6" class="node">
+<title>_275739600</title>
+<polygon fill="white" stroke="black" points="1206,-292.5 0,-292.5 0,-254.5 1206,-254.5 1206,-292.5"/>
+<text text-anchor="start" x="8" y="-277.3" font-family="Times,serif" font-size="14.00">i14 = @eq(EnumConstant(&#39;zRISCV_ORI&#39;, Enum(&#39;ziop&#39;, (&#39;zRISCV_ADDI&#39;, &#39;zRISCV_SLTI&#39;, &#39;zRISCV_SLTIU&#39;, &#39;zRISCV_XORI&#39;, &#39;zRISCV_ORI&#39;, &#39;zRISCV_ANDI&#39;))), i4) [Operation]</text>
+<text text-anchor="middle" x="603" y="-262.3" font-family="Times,serif" font-size="14.00">goto if i14</text>
+</g>
+<!-- _275739432&#45;&gt;_275739600 -->
+<g id="edge5" class="edge">
+<title>_275739432&#45;&gt;_275739600</title>
+<path fill="none" stroke="black" stroke-dasharray="5,2" d="M712.97,-373.48C690.99,-353.69 655.56,-321.8 630.87,-299.58"/>
+<polygon fill="black" stroke="black" points="633.04,-296.83 623.26,-292.74 628.36,-302.03 633.04,-296.83"/>
+<text text-anchor="middle" x="687" y="-321.8" font-family="Times,serif" font-size="14.00">False</text>
+</g>
+<!-- _275739488 -->
+<g id="node10" class="node">
+<title>_275739488</title>
+<polygon fill="white" stroke="black" points="1325,-229 1013,-229 1013,-191 1325,-191 1325,-229"/>
+<text text-anchor="start" x="1021" y="-213.8" font-family="Times,serif" font-size="14.00">i20 = @and_vec_bv_bv(i7, i9) [Operation]</text>
+<text text-anchor="middle" x="1169" y="-198.8" font-family="Times,serif" font-size="14.00">goto</text>
+</g>
+<!-- _275739432&#45;&gt;_275739488 -->
+<g id="edge7" class="edge">
+<title>_275739432&#45;&gt;_275739488</title>
+<path fill="none" stroke="black" stroke-dasharray="5,2" d="M979.52,-373.47C1081.57,-360.4 1183.49,-338.05 1215,-300 1230.02,-281.86 1225.32,-268.18 1215,-247 1213.1,-243.1 1210.55,-239.5 1207.63,-236.21"/>
+<polygon fill="black" stroke="black" points="1209.87,-233.51 1200.24,-229.09 1205.01,-238.55 1209.87,-233.51"/>
+<text text-anchor="middle" x="1208" y="-321.8" font-family="Times,serif" font-size="14.00">True</text>
+</g>
+<!-- _275739992 -->
+<g id="node7" class="node">
+<title>_275739992</title>
+<polygon fill="white" stroke="black" points="757.5,-165.5 448.5,-165.5 448.5,-127.5 757.5,-127.5 757.5,-165.5"/>
+<text text-anchor="start" x="456.5" y="-150.3" font-family="Times,serif" font-size="14.00">i15 = @xor_vec_bv_bv(i7, i9) [Operation]</text>
+<text text-anchor="middle" x="603" y="-135.3" font-family="Times,serif" font-size="14.00">goto</text>
+</g>
+<!-- _275739600&#45;&gt;_275739992 -->
+<g id="edge2" class="edge">
+<title>_275739600&#45;&gt;_275739992</title>
+<path fill="none" stroke="black" stroke-dasharray="5,2" d="M603,-254.32C603,-233.77 603,-200.05 603,-175.99"/>
+<polygon fill="black" stroke="black" points="606.5,-175.7 603,-165.7 599.5,-175.7 606.5,-175.7"/>
+<text text-anchor="middle" x="622" y="-206.3" font-family="Times,serif" font-size="14.00">False</text>
+</g>
+<!-- _275739712 -->
+<g id="node9" class="node">
+<title>_275739712</title>
+<polygon fill="white" stroke="black" points="1076.5,-165.5 775.5,-165.5 775.5,-127.5 1076.5,-127.5 1076.5,-165.5"/>
+<text text-anchor="start" x="783.5" y="-150.3" font-family="Times,serif" font-size="14.00">i21 = @or_vec_bv_bv(i7, i9) [Operation]</text>
+<text text-anchor="middle" x="926" y="-135.3" font-family="Times,serif" font-size="14.00">goto</text>
+</g>
+<!-- _275739600&#45;&gt;_275739712 -->
+<g id="edge4" class="edge">
+<title>_275739600&#45;&gt;_275739712</title>
+<path fill="none" stroke="black" stroke-dasharray="5,2" d="M649.62,-254.46C707.83,-231.93 807.32,-193.43 869.71,-169.28"/>
+<polygon fill="black" stroke="black" points="871.33,-172.41 879.39,-165.54 868.8,-165.88 871.33,-172.41"/>
+<text text-anchor="middle" x="830" y="-206.3" font-family="Times,serif" font-size="14.00">True</text>
+</g>
+<!-- _275738872 -->
+<g id="node8" class="node">
+<title>_275738872</title>
+<polygon fill="yellow" stroke="black" points="1634.5,-83 825.5,-83 825.5,0 1634.5,0 1634.5,-83"/>
+<text text-anchor="start" x="833.5" y="-67.8" font-family="Times,serif" font-size="14.00">i16 = phi [i17, i18, i19, i20, i21, i15]</text>
+<text text-anchor="start" x="833.5" y="-52.8" font-family="Times,serif" font-size="14.00">i22 = inlined zwX_bits() [Comment]</text>
+<text text-anchor="start" x="833.5" y="-37.8" font-family="Times,serif" font-size="14.00">i23 = @unsigned_bv(i3, MachineIntConstant(5)) [Operation]</text>
+<text text-anchor="start" x="833.5" y="-22.8" font-family="Times,serif" font-size="14.00">i24 = zwX(i23, i16) [Operation]</text>
+<text text-anchor="middle" x="1230" y="-7.8" font-family="Times,serif" font-size="14.00">Return(EnumConstant(&#39;zRETIRE_SUCCESS&#39;, Enum(&#39;zRetired&#39;, (&#39;zRETIRE_SUCCESS&#39;, &#39;zRETIRE_FAIL&#39;))), None)</text>
+</g>
+<!-- _275739992&#45;&gt;_275738872 -->
+<g id="edge1" class="edge">
+<title>_275739992&#45;&gt;_275738872</title>
+<path fill="none" stroke="black" stroke-dasharray="5,2" d="M712.57,-127.5C784.72,-115.65 882.31,-99.62 973.3,-84.67"/>
+<polygon fill="black" stroke="black" points="973.91,-88.12 983.22,-83.04 972.78,-81.21 973.91,-88.12"/>
+</g>
+<!-- _275739712&#45;&gt;_275738872 -->
+<g id="edge3" class="edge">
+<title>_275739712&#45;&gt;_275738872</title>
+<path fill="none" stroke="black" stroke-dasharray="5,2" d="M979.3,-127.44C1012.94,-116.04 1057.95,-100.79 1100.54,-86.36"/>
+<polygon fill="black" stroke="black" points="1101.81,-89.63 1110.15,-83.11 1099.56,-83 1101.81,-89.63"/>
+</g>
+<!-- _275739488&#45;&gt;_275738872 -->
+<g id="edge6" class="edge">
+<title>_275739488&#45;&gt;_275738872</title>
+<path fill="none" stroke="black" stroke-dasharray="5,2" d="M1137.76,-190.91C1131.8,-185.92 1126.38,-179.93 1123,-173 1112.68,-151.82 1112.29,-140.98 1123,-120 1128.76,-108.72 1137.02,-98.69 1146.42,-89.91"/>
+<polygon fill="black" stroke="black" points="1148.95,-92.35 1154.19,-83.14 1144.35,-87.08 1148.95,-92.35"/>
+</g>
+<!-- _247178536 -->
+<g id="node12" class="node">
+<title>_247178536</title>
+<polygon fill="white" stroke="black" points="1529,-291.5 1475,-291.5 1475,-255.5 1529,-255.5 1529,-291.5"/>
+<text text-anchor="middle" x="1502" y="-269.8" font-family="Times,serif" font-size="14.00">goto</text>
+</g>
+<!-- _275739376&#45;&gt;_247178536 -->
+<g id="edge11" class="edge">
+<title>_275739376&#45;&gt;_247178536</title>
+<path fill="none" stroke="black" stroke-dasharray="5,2" d="M1515.52,-350.94C1513.01,-345.04 1510.73,-338.95 1509,-333 1506.11,-323.05 1504.41,-311.8 1503.41,-301.86"/>
+<polygon fill="black" stroke="black" points="1506.88,-301.37 1502.58,-291.69 1499.91,-301.94 1506.88,-301.37"/>
+<text text-anchor="middle" x="1528" y="-321.8" font-family="Times,serif" font-size="14.00">False</text>
+</g>
+<!-- _247178144 -->
+<g id="node14" class="node">
+<title>_247178144</title>
+<polygon fill="white" stroke="black" points="1601,-291.5 1547,-291.5 1547,-255.5 1601,-255.5 1601,-291.5"/>
+<text text-anchor="middle" x="1574" y="-269.8" font-family="Times,serif" font-size="14.00">goto</text>
+</g>
+<!-- _275739376&#45;&gt;_247178144 -->
+<g id="edge13" class="edge">
+<title>_275739376&#45;&gt;_247178144</title>
+<path fill="none" stroke="black" stroke-dasharray="5,2" d="M1549.84,-350.91C1555.01,-334.55 1560.84,-316.12 1565.47,-301.47"/>
+<polygon fill="black" stroke="black" points="1568.93,-302.13 1568.61,-291.54 1562.26,-300.02 1568.93,-302.13"/>
+<text text-anchor="middle" x="1577" y="-321.8" font-family="Times,serif" font-size="14.00">True</text>
+</g>
+<!-- _247178200 -->
+<g id="node13" class="node">
+<title>_247178200</title>
+<polygon fill="white" stroke="black" points="2025.5,-173 1132.5,-173 1132.5,-120 2025.5,-120 2025.5,-173"/>
+<text text-anchor="start" x="1140.5" y="-157.8" font-family="Times,serif" font-size="14.00">i19 = phi [SmallBitVectorConstant(0x1, SmallFixedBitVector(64)), SmallBitVectorConstant(0x0, SmallFixedBitVector(64))]</text>
+<text text-anchor="start" x="1140.5" y="-142.8" font-family="Times,serif" font-size="14.00">i29 = inlined zzzero_extend() [Comment]</text>
+<text text-anchor="middle" x="1579" y="-127.8" font-family="Times,serif" font-size="14.00">goto</text>
+</g>
+<!-- _247178536&#45;&gt;_247178200 -->
+<g id="edge10" class="edge">
+<title>_247178536&#45;&gt;_247178200</title>
+<path fill="none" stroke="black" stroke-dasharray="5,2" d="M1512.55,-255.38C1524.16,-236.53 1543.14,-205.72 1557.85,-181.84"/>
+<polygon fill="black" stroke="black" points="1560.98,-183.42 1563.25,-173.07 1555.02,-179.75 1560.98,-183.42"/>
+</g>
+<!-- _247178200&#45;&gt;_275738872 -->
+<g id="edge9" class="edge">
+<title>_247178200&#45;&gt;_275738872</title>
+<path fill="none" stroke="black" stroke-dasharray="5,2" d="M1492.28,-119.91C1457.48,-109.64 1416.38,-97.51 1377.17,-85.93"/>
+<polygon fill="black" stroke="black" points="1377.83,-82.48 1367.24,-83 1375.84,-89.19 1377.83,-82.48"/>
+</g>
+<!-- _247178144&#45;&gt;_247178200 -->
+<g id="edge12" class="edge">
+<title>_247178144&#45;&gt;_247178200</title>
+<path fill="none" stroke="black" stroke-dasharray="5,2" d="M1574.68,-255.38C1575.43,-236.86 1576.63,-206.8 1577.58,-183.11"/>
+<polygon fill="black" stroke="black" points="1581.07,-183.2 1577.98,-173.07 1574.08,-182.92 1581.07,-183.2"/>
+</g>
+<!-- _272712160 -->
+<g id="node16" class="node">
+<title>_272712160</title>
+<polygon fill="white" stroke="black" points="2056,-410.5 2002,-410.5 2002,-374.5 2056,-374.5 2056,-410.5"/>
+<text text-anchor="middle" x="2029" y="-388.8" font-family="Times,serif" font-size="14.00">goto</text>
+</g>
+<!-- _275739152&#45;&gt;_272712160 -->
+<g id="edge18" class="edge">
+<title>_275739152&#45;&gt;_272712160</title>
+<path fill="none" stroke="black" stroke-dasharray="5,2" d="M2041.01,-484.8C2039.09,-478.86 2037.37,-472.85 2036,-467 2032.5,-452.03 2030.75,-434.95 2029.87,-421.03"/>
+<polygon fill="black" stroke="black" points="2033.34,-420.45 2029.33,-410.64 2026.35,-420.81 2033.34,-420.45"/>
+<text text-anchor="middle" x="2055" y="-455.8" font-family="Times,serif" font-size="14.00">False</text>
+</g>
+<!-- _272734368 -->
+<g id="node18" class="node">
+<title>_272734368</title>
+<polygon fill="white" stroke="black" points="2128,-410.5 2074,-410.5 2074,-374.5 2128,-374.5 2128,-410.5"/>
+<text text-anchor="middle" x="2101" y="-388.8" font-family="Times,serif" font-size="14.00">goto</text>
+</g>
+<!-- _275739152&#45;&gt;_272734368 -->
+<g id="edge20" class="edge">
+<title>_275739152&#45;&gt;_272734368</title>
+<path fill="none" stroke="black" stroke-dasharray="5,2" d="M2077.99,-484.93C2083.53,-462.9 2089.65,-438.6 2094.18,-420.59"/>
+<polygon fill="black" stroke="black" points="2097.61,-421.32 2096.65,-410.77 2090.82,-419.62 2097.61,-421.32"/>
+<text text-anchor="middle" x="2103" y="-455.8" font-family="Times,serif" font-size="14.00">True</text>
+</g>
+<!-- _272734480 -->
+<g id="node17" class="node">
+<title>_272734480</title>
+<polygon fill="white" stroke="black" points="2511.5,-300 1618.5,-300 1618.5,-247 2511.5,-247 2511.5,-300"/>
+<text text-anchor="start" x="1626.5" y="-284.8" font-family="Times,serif" font-size="14.00">i18 = phi [SmallBitVectorConstant(0x1, SmallFixedBitVector(64)), SmallBitVectorConstant(0x0, SmallFixedBitVector(64))]</text>
+<text text-anchor="start" x="1626.5" y="-269.8" font-family="Times,serif" font-size="14.00">i36 = inlined zzzero_extend() [Comment]</text>
+<text text-anchor="middle" x="2065" y="-254.8" font-family="Times,serif" font-size="14.00">goto</text>
+</g>
+<!-- _272712160&#45;&gt;_272734480 -->
+<g id="edge17" class="edge">
+<title>_272712160&#45;&gt;_272734480</title>
+<path fill="none" stroke="black" stroke-dasharray="5,2" d="M2034.23,-374.49C2039.42,-357.64 2047.52,-331.32 2054.1,-309.92"/>
+<polygon fill="black" stroke="black" points="2057.5,-310.76 2057.1,-300.17 2050.81,-308.7 2057.5,-310.76"/>
+</g>
+<!-- _272734480&#45;&gt;_275738872 -->
+<g id="edge16" class="edge">
+<title>_272734480&#45;&gt;_275738872</title>
+<path fill="none" stroke="black" stroke-dasharray="5,2" d="M2068.14,-246.75C2070.74,-212.31 2069.43,-151.91 2034,-120 2002.84,-91.94 1825.28,-73.18 1644.92,-61.16"/>
+<polygon fill="black" stroke="black" points="1644.9,-57.65 1634.69,-60.48 1644.44,-64.63 1644.9,-57.65"/>
+</g>
+<!-- _272734368&#45;&gt;_272734480 -->
+<g id="edge19" class="edge">
+<title>_272734368&#45;&gt;_272734480</title>
+<path fill="none" stroke="black" stroke-dasharray="5,2" d="M2095.77,-374.49C2090.58,-357.64 2082.48,-331.32 2075.9,-309.92"/>
+<polygon fill="black" stroke="black" points="2079.19,-308.7 2072.9,-300.17 2072.5,-310.76 2079.19,-308.7"/>
+</g>
+<!-- _275738760&#45;&gt;_275738872 -->
+<g id="edge23" class="edge">
+<title>_275738760&#45;&gt;_275738872</title>
+<path fill="none" stroke="black" stroke-dasharray="5,2" d="M2539,-615.77C2539,-584.15 2539,-517.13 2539,-460.5 2539,-460.5 2539,-460.5 2539,-145.5 2539,-99.94 2028.34,-71.11 1644.93,-55.89"/>
+<polygon fill="black" stroke="black" points="1644.89,-52.38 1634.76,-55.48 1644.62,-59.38 1644.89,-52.38"/>
+</g>
+</g>
+</svg>
diff --git a/images/2025-pydrofoil-itype-before.svg b/images/2025-pydrofoil-itype-before.svg
new file mode 100644
index 000000000..c60ad7795
--- /dev/null
+++ b/images/2025-pydrofoil-itype-before.svg
@@ -0,0 +1,319 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+ "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<!-- Generated by graphviz version 2.43.0 (0)
+ -->
+<!-- Title: _G Pages: 1 -->
+<svg width="2603pt" height="1664pt"
+ viewBox="0.00 0.00 2602.50 1664.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 1660)">
+<title>_G</title>
+<polygon fill="white" stroke="transparent" points="-4,4 -4,-1660 2598.5,-1660 2598.5,4 -4,4"/>
+<!-- _graphzexecute__zITYPE -->
+<g id="node1" class="node">
+<title>_graphzexecute__zITYPE</title>
+<polygon fill="green" stroke="black" points="681.5,-1656 544.5,-1656 544.5,-1618 681.5,-1618 681.5,-1656"/>
+<text text-anchor="start" x="552.5" y="-1640.8" font-family="Times,serif" font-size="14.00">zexecute_zITYPE</text>
+<text text-anchor="middle" x="613" y="-1625.8" font-family="Times,serif" font-size="14.00">[zmergez3var]</text>
+</g>
+<!-- _275738704 -->
+<g id="node2" class="node">
+<title>_275738704</title>
+<polygon fill="white" stroke="black" points="640,-1581 586,-1581 586,-1545 640,-1545 640,-1581"/>
+<text text-anchor="middle" x="613" y="-1559.3" font-family="Times,serif" font-size="14.00">goto</text>
+</g>
+<!-- _graphzexecute__zITYPE&#45;&gt;_275738704 -->
+<g id="edge22" class="edge">
+<title>_graphzexecute__zITYPE&#45;&gt;_275738704</title>
+<path fill="none" stroke="black" stroke-dasharray="5,2" d="M613,-1617.83C613,-1609.89 613,-1600.41 613,-1591.63"/>
+<polygon fill="black" stroke="black" points="616.5,-1591.42 613,-1581.42 609.5,-1591.42 616.5,-1591.42"/>
+</g>
+<!-- _275736744 -->
+<g id="node3" class="node">
+<title>_275736744</title>
+<polygon fill="white" stroke="black" points="1226,-1508 0,-1508 0,-1275 1226,-1275 1226,-1508"/>
+<text text-anchor="start" x="8" y="-1492.8" font-family="Times,serif" font-size="14.00">i0 = zITYPE(zmergez3var) [UnionCast]</text>
+<text text-anchor="start" x="8" y="-1477.8" font-family="Times,serif" font-size="14.00">i1 = ztuplez3z5bv12_z5bv5_z5bv5_z5enumz0zziop0(i0) [FieldAccess]</text>
+<text text-anchor="start" x="8" y="-1462.8" font-family="Times,serif" font-size="14.00">i2 = zITYPE(zmergez3var) [UnionCast]</text>
+<text text-anchor="start" x="8" y="-1447.8" font-family="Times,serif" font-size="14.00">i3 = ztuplez3z5bv12_z5bv5_z5bv5_z5enumz0zziop1(i2) [FieldAccess]</text>
+<text text-anchor="start" x="8" y="-1432.8" font-family="Times,serif" font-size="14.00">i4 = zITYPE(zmergez3var) [UnionCast]</text>
+<text text-anchor="start" x="8" y="-1417.8" font-family="Times,serif" font-size="14.00">i5 = ztuplez3z5bv12_z5bv5_z5bv5_z5enumz0zziop2(i4) [FieldAccess]</text>
+<text text-anchor="start" x="8" y="-1402.8" font-family="Times,serif" font-size="14.00">i6 = zITYPE(zmergez3var) [UnionCast]</text>
+<text text-anchor="start" x="8" y="-1387.8" font-family="Times,serif" font-size="14.00">i7 = ztuplez3z5bv12_z5bv5_z5bv5_z5enumz0zziop3(i6) [FieldAccess]</text>
+<text text-anchor="start" x="8" y="-1372.8" font-family="Times,serif" font-size="14.00">i8 = zrX_bits(i3) [Operation]</text>
+<text text-anchor="start" x="8" y="-1357.8" font-family="Times,serif" font-size="14.00">i9 = zz5i64zDzKz5i(MachineIntConstant(64)) [Operation]</text>
+<text text-anchor="start" x="8" y="-1342.8" font-family="Times,serif" font-size="14.00">i10 = $cast(i1) [Cast]</text>
+<text text-anchor="start" x="8" y="-1327.8" font-family="Times,serif" font-size="14.00">i11 = zsign_extend(i9, i10) [Operation]</text>
+<text text-anchor="start" x="8" y="-1312.8" font-family="Times,serif" font-size="14.00">i12 = $cast(i11) [Cast]</text>
+<text text-anchor="start" x="8" y="-1297.8" font-family="Times,serif" font-size="14.00">i13 = @neq(EnumConstant(&#39;zRISCV_ADDI&#39;, Enum(&#39;ziop&#39;, (&#39;zRISCV_ADDI&#39;, &#39;zRISCV_SLTI&#39;, &#39;zRISCV_SLTIU&#39;, &#39;zRISCV_XORI&#39;, &#39;zRISCV_ORI&#39;, &#39;zRISCV_ANDI&#39;))), i7) [Operation]</text>
+<text text-anchor="middle" x="613" y="-1282.8" font-family="Times,serif" font-size="14.00">goto if i13</text>
+</g>
+<!-- _275738704&#45;&gt;_275736744 -->
+<g id="edge21" class="edge">
+<title>_275738704&#45;&gt;_275736744</title>
+<path fill="none" stroke="black" stroke-dasharray="5,2" d="M613,-1544.81C613,-1537.54 613,-1528.39 613,-1518.2"/>
+<polygon fill="black" stroke="black" points="616.5,-1518.13 613,-1508.13 609.5,-1518.13 616.5,-1518.13"/>
+</g>
+<!-- _275738760 -->
+<g id="node4" class="node">
+<title>_275738760</title>
+<polygon fill="white" stroke="black" points="722,-1168 444,-1168 444,-1085 722,-1085 722,-1168"/>
+<text text-anchor="start" x="452" y="-1152.8" font-family="Times,serif" font-size="14.00">i14 = $cast(i8) [Cast]</text>
+<text text-anchor="start" x="452" y="-1137.8" font-family="Times,serif" font-size="14.00">i15 = $cast(i12) [Cast]</text>
+<text text-anchor="start" x="452" y="-1122.8" font-family="Times,serif" font-size="14.00">i16 = zadd_bits(i14, i15) [Operation]</text>
+<text text-anchor="start" x="452" y="-1107.8" font-family="Times,serif" font-size="14.00">i17 = $cast(i16) [Cast]</text>
+<text text-anchor="middle" x="583" y="-1092.8" font-family="Times,serif" font-size="14.00">goto</text>
+</g>
+<!-- _275736744&#45;&gt;_275738760 -->
+<g id="edge4" class="edge">
+<title>_275736744&#45;&gt;_275738760</title>
+<path fill="none" stroke="black" stroke-dasharray="5,2" d="M599.8,-1274.76C595.95,-1241.03 591.94,-1205.9 588.81,-1178.42"/>
+<polygon fill="black" stroke="black" points="592.26,-1177.81 587.65,-1168.28 585.31,-1178.61 592.26,-1177.81"/>
+<text text-anchor="middle" x="617" y="-1245.8" font-family="Times,serif" font-size="14.00">False</text>
+</g>
+<!-- _275739096 -->
+<g id="node8" class="node">
+<title>_275739096</title>
+<polygon fill="white" stroke="black" points="1831,-1224 611,-1224 611,-1186 1831,-1186 1831,-1224"/>
+<text text-anchor="start" x="619" y="-1208.8" font-family="Times,serif" font-size="14.00">i25 = @neq(EnumConstant(&#39;zRISCV_SLTI&#39;, Enum(&#39;ziop&#39;, (&#39;zRISCV_ADDI&#39;, &#39;zRISCV_SLTI&#39;, &#39;zRISCV_SLTIU&#39;, &#39;zRISCV_XORI&#39;, &#39;zRISCV_ORI&#39;, &#39;zRISCV_ANDI&#39;))), i7) [Operation]</text>
+<text text-anchor="middle" x="1221" y="-1193.8" font-family="Times,serif" font-size="14.00">goto if i25</text>
+</g>
+<!-- _275736744&#45;&gt;_275739096 -->
+<g id="edge20" class="edge">
+<title>_275736744&#45;&gt;_275739096</title>
+<path fill="none" stroke="black" stroke-dasharray="5,2" d="M993.74,-1274.96C1054.22,-1256.61 1110.37,-1239.57 1151.72,-1227.02"/>
+<polygon fill="black" stroke="black" points="1152.83,-1230.35 1161.38,-1224.09 1150.79,-1223.65 1152.83,-1230.35"/>
+<text text-anchor="middle" x="1107" y="-1245.8" font-family="Times,serif" font-size="14.00">True</text>
+</g>
+<!-- _275738872 -->
+<g id="node5" class="node">
+<title>_275738872</title>
+<polygon fill="white" stroke="black" points="1242,-199 964,-199 964,-146 1242,-146 1242,-199"/>
+<text text-anchor="start" x="972" y="-183.8" font-family="Times,serif" font-size="14.00">i18 = phi [i17, i19, i20, i21, i22, i23]</text>
+<text text-anchor="start" x="972" y="-168.8" font-family="Times,serif" font-size="14.00">i24 = zwX_bits(i5, i18) [Operation]</text>
+<text text-anchor="middle" x="1103" y="-153.8" font-family="Times,serif" font-size="14.00">goto</text>
+</g>
+<!-- _275738760&#45;&gt;_275738872 -->
+<g id="edge3" class="edge">
+<title>_275738760&#45;&gt;_275738872</title>
+<path fill="none" stroke="black" stroke-dasharray="5,2" d="M583,-1084.72C583,-1047.23 583,-990.12 583,-940.5 583,-940.5 583,-940.5 583,-276.5 583,-200.35 800.31,-179.61 953.97,-174.46"/>
+<polygon fill="black" stroke="black" points="954.11,-177.96 963.99,-174.15 953.89,-170.96 954.11,-177.96"/>
+</g>
+<!-- _275738928 -->
+<g id="node6" class="node">
+<title>_275738928</title>
+<polygon fill="white" stroke="black" points="1130,-109 1076,-109 1076,-73 1130,-73 1130,-109"/>
+<text text-anchor="middle" x="1103" y="-87.3" font-family="Times,serif" font-size="14.00">goto</text>
+</g>
+<!-- _275738872&#45;&gt;_275738928 -->
+<g id="edge2" class="edge">
+<title>_275738872&#45;&gt;_275738928</title>
+<path fill="none" stroke="black" stroke-dasharray="5,2" d="M1103,-145.91C1103,-137.48 1103,-128.08 1103,-119.52"/>
+<polygon fill="black" stroke="black" points="1106.5,-119.26 1103,-109.26 1099.5,-119.26 1106.5,-119.26"/>
+</g>
+<!-- _275738984 -->
+<g id="node7" class="node">
+<title>_275738984</title>
+<polygon fill="yellow" stroke="black" points="1507.5,-36 698.5,-36 698.5,0 1507.5,0 1507.5,-36"/>
+<text text-anchor="middle" x="1103" y="-14.3" font-family="Times,serif" font-size="14.00">Return(EnumConstant(&#39;zRETIRE_SUCCESS&#39;, Enum(&#39;zRetired&#39;, (&#39;zRETIRE_SUCCESS&#39;, &#39;zRETIRE_FAIL&#39;))), None)</text>
+</g>
+<!-- _275738928&#45;&gt;_275738984 -->
+<g id="edge1" class="edge">
+<title>_275738928&#45;&gt;_275738984</title>
+<path fill="none" stroke="black" stroke-dasharray="5,2" d="M1103,-72.81C1103,-64.79 1103,-55.05 1103,-46.07"/>
+<polygon fill="black" stroke="black" points="1106.5,-46.03 1103,-36.03 1099.5,-46.03 1106.5,-46.03"/>
+</g>
+<!-- _275739152 -->
+<g id="node9" class="node">
+<title>_275739152</title>
+<polygon fill="white" stroke="black" points="1032.5,-1011 597.5,-1011 597.5,-868 1032.5,-868 1032.5,-1011"/>
+<text text-anchor="start" x="605.5" y="-995.8" font-family="Times,serif" font-size="14.00">i26 = $cast(i8) [Cast]</text>
+<text text-anchor="start" x="605.5" y="-980.8" font-family="Times,serif" font-size="14.00">i27 = $cast(i12) [Cast]</text>
+<text text-anchor="start" x="605.5" y="-965.8" font-family="Times,serif" font-size="14.00">i28 = zz8operatorz0zI_sz9(i26, i27) [Operation]</text>
+<text text-anchor="start" x="605.5" y="-950.8" font-family="Times,serif" font-size="14.00">i29 = zbool_to_bits(i28) [Operation]</text>
+<text text-anchor="start" x="605.5" y="-935.8" font-family="Times,serif" font-size="14.00">i30 = zz5i64zDzKz5i(MachineIntConstant(64)) [Operation]</text>
+<text text-anchor="start" x="605.5" y="-920.8" font-family="Times,serif" font-size="14.00">i31 = $cast(i29) [Cast]</text>
+<text text-anchor="start" x="605.5" y="-905.8" font-family="Times,serif" font-size="14.00">i32 = zzzero_extend(i30, i31) [Operation]</text>
+<text text-anchor="start" x="605.5" y="-890.8" font-family="Times,serif" font-size="14.00">i19 = $cast(i32) [Cast]</text>
+<text text-anchor="middle" x="815" y="-875.8" font-family="Times,serif" font-size="14.00">goto</text>
+</g>
+<!-- _275739096&#45;&gt;_275739152 -->
+<g id="edge6" class="edge">
+<title>_275739096&#45;&gt;_275739152</title>
+<path fill="none" stroke="black" stroke-dasharray="5,2" d="M1059.88,-1185.93C980.19,-1168.47 889.45,-1134.21 834,-1067 823.41,-1054.16 817.39,-1038 814.17,-1021.56"/>
+<polygon fill="black" stroke="black" points="817.57,-1020.63 812.52,-1011.31 810.66,-1021.74 817.57,-1020.63"/>
+<text text-anchor="middle" x="1010" y="-1122.8" font-family="Times,serif" font-size="14.00">False</text>
+</g>
+<!-- _275739264 -->
+<g id="node10" class="node">
+<title>_275739264</title>
+<polygon fill="white" stroke="black" points="2075,-1067 843,-1067 843,-1029 2075,-1029 2075,-1067"/>
+<text text-anchor="start" x="851" y="-1051.8" font-family="Times,serif" font-size="14.00">i33 = @neq(EnumConstant(&#39;zRISCV_SLTIU&#39;, Enum(&#39;ziop&#39;, (&#39;zRISCV_ADDI&#39;, &#39;zRISCV_SLTI&#39;, &#39;zRISCV_SLTIU&#39;, &#39;zRISCV_XORI&#39;, &#39;zRISCV_ORI&#39;, &#39;zRISCV_ANDI&#39;))), i7) [Operation]</text>
+<text text-anchor="middle" x="1459" y="-1036.8" font-family="Times,serif" font-size="14.00">goto if i33</text>
+</g>
+<!-- _275739096&#45;&gt;_275739264 -->
+<g id="edge19" class="edge">
+<title>_275739096&#45;&gt;_275739264</title>
+<path fill="none" stroke="black" stroke-dasharray="5,2" d="M1248.77,-1185.92C1291.82,-1157.87 1374.71,-1103.9 1422.54,-1072.75"/>
+<polygon fill="black" stroke="black" points="1424.57,-1075.6 1431.04,-1067.21 1420.75,-1069.73 1424.57,-1075.6"/>
+<text text-anchor="middle" x="1418" y="-1122.8" font-family="Times,serif" font-size="14.00">True</text>
+</g>
+<!-- _275739152&#45;&gt;_275738872 -->
+<g id="edge5" class="edge">
+<title>_275739152&#45;&gt;_275738872</title>
+<path fill="none" stroke="black" stroke-dasharray="5,2" d="M815,-867.81C815,-825.87 815,-771.65 815,-723.5 815,-723.5 815,-723.5 815,-276.5 815,-243.34 883.53,-218.03 953.73,-200.79"/>
+<polygon fill="black" stroke="black" points="954.73,-204.15 963.64,-198.41 953.1,-197.34 954.73,-204.15"/>
+</g>
+<!-- _275739376 -->
+<g id="node11" class="node">
+<title>_275739376</title>
+<polygon fill="white" stroke="black" points="1264.5,-794 829.5,-794 829.5,-651 1264.5,-651 1264.5,-794"/>
+<text text-anchor="start" x="837.5" y="-778.8" font-family="Times,serif" font-size="14.00">i34 = $cast(i8) [Cast]</text>
+<text text-anchor="start" x="837.5" y="-763.8" font-family="Times,serif" font-size="14.00">i35 = $cast(i12) [Cast]</text>
+<text text-anchor="start" x="837.5" y="-748.8" font-family="Times,serif" font-size="14.00">i36 = zz8operatorz0zI_uz9(i34, i35) [Operation]</text>
+<text text-anchor="start" x="837.5" y="-733.8" font-family="Times,serif" font-size="14.00">i37 = zbool_to_bits(i36) [Operation]</text>
+<text text-anchor="start" x="837.5" y="-718.8" font-family="Times,serif" font-size="14.00">i38 = zz5i64zDzKz5i(MachineIntConstant(64)) [Operation]</text>
+<text text-anchor="start" x="837.5" y="-703.8" font-family="Times,serif" font-size="14.00">i39 = $cast(i37) [Cast]</text>
+<text text-anchor="start" x="837.5" y="-688.8" font-family="Times,serif" font-size="14.00">i40 = zzzero_extend(i38, i39) [Operation]</text>
+<text text-anchor="start" x="837.5" y="-673.8" font-family="Times,serif" font-size="14.00">i20 = $cast(i40) [Cast]</text>
+<text text-anchor="middle" x="1047" y="-658.8" font-family="Times,serif" font-size="14.00">goto</text>
+</g>
+<!-- _275739264&#45;&gt;_275739376 -->
+<g id="edge8" class="edge">
+<title>_275739264&#45;&gt;_275739376</title>
+<path fill="none" stroke="black" stroke-dasharray="5,2" d="M1382.18,-1028.99C1293.84,-1004.14 1151.09,-950.55 1074,-850 1063.87,-836.79 1057.35,-820.63 1053.19,-804.33"/>
+<polygon fill="black" stroke="black" points="1056.51,-803.16 1050.89,-794.18 1049.68,-804.71 1056.51,-803.16"/>
+<text text-anchor="middle" x="1343" y="-935.8" font-family="Times,serif" font-size="14.00">False</text>
+</g>
+<!-- _275739432 -->
+<g id="node12" class="node">
+<title>_275739432</title>
+<polygon fill="white" stroke="black" points="2309,-850 1083,-850 1083,-812 2309,-812 2309,-850"/>
+<text text-anchor="start" x="1091" y="-834.8" font-family="Times,serif" font-size="14.00">i41 = @neq(EnumConstant(&#39;zRISCV_ANDI&#39;, Enum(&#39;ziop&#39;, (&#39;zRISCV_ADDI&#39;, &#39;zRISCV_SLTI&#39;, &#39;zRISCV_SLTIU&#39;, &#39;zRISCV_XORI&#39;, &#39;zRISCV_ORI&#39;, &#39;zRISCV_ANDI&#39;))), i7) [Operation]</text>
+<text text-anchor="middle" x="1696" y="-819.8" font-family="Times,serif" font-size="14.00">goto if i41</text>
+</g>
+<!-- _275739264&#45;&gt;_275739432 -->
+<g id="edge18" class="edge">
+<title>_275739264&#45;&gt;_275739432</title>
+<path fill="none" stroke="black" stroke-dasharray="5,2" d="M1479.21,-1028.67C1521.62,-990.19 1619.99,-900.95 1668.27,-857.16"/>
+<polygon fill="black" stroke="black" points="1670.79,-859.6 1675.84,-850.28 1666.09,-854.41 1670.79,-859.6"/>
+<text text-anchor="middle" x="1673" y="-935.8" font-family="Times,serif" font-size="14.00">True</text>
+</g>
+<!-- _275739376&#45;&gt;_275738872 -->
+<g id="edge7" class="edge">
+<title>_275739376&#45;&gt;_275738872</title>
+<path fill="none" stroke="black" stroke-dasharray="5,2" d="M1035.77,-650.97C1031.21,-616.55 1027,-574.46 1027,-536.5 1027,-536.5 1027,-536.5 1027,-276.5 1027,-249.23 1044.46,-224.44 1062.65,-206.01"/>
+<polygon fill="black" stroke="black" points="1065.12,-208.49 1069.89,-199.02 1060.26,-203.45 1065.12,-208.49"/>
+</g>
+<!-- _275739488 -->
+<g id="node13" class="node">
+<title>_275739488</title>
+<polygon fill="white" stroke="black" points="1317.5,-577 1042.5,-577 1042.5,-494 1317.5,-494 1317.5,-577"/>
+<text text-anchor="start" x="1050.5" y="-561.8" font-family="Times,serif" font-size="14.00">i42 = $cast(i8) [Cast]</text>
+<text text-anchor="start" x="1050.5" y="-546.8" font-family="Times,serif" font-size="14.00">i43 = $cast(i12) [Cast]</text>
+<text text-anchor="start" x="1050.5" y="-531.8" font-family="Times,serif" font-size="14.00">i44 = zand_vec(i42, i43) [Operation]</text>
+<text text-anchor="start" x="1050.5" y="-516.8" font-family="Times,serif" font-size="14.00">i21 = $cast(i44) [Cast]</text>
+<text text-anchor="middle" x="1180" y="-501.8" font-family="Times,serif" font-size="14.00">goto</text>
+</g>
+<!-- _275739432&#45;&gt;_275739488 -->
+<g id="edge10" class="edge">
+<title>_275739432&#45;&gt;_275739488</title>
+<path fill="none" stroke="black" stroke-dasharray="5,2" d="M1654.21,-811.99C1581.31,-779.91 1427.1,-709.03 1306,-633 1282.41,-618.19 1257.81,-600.03 1236.66,-583.47"/>
+<polygon fill="black" stroke="black" points="1238.76,-580.67 1228.74,-577.22 1234.42,-586.16 1238.76,-580.67"/>
+<text text-anchor="middle" x="1630" y="-718.8" font-family="Times,serif" font-size="14.00">False</text>
+</g>
+<!-- _275739600 -->
+<g id="node14" class="node">
+<title>_275739600</title>
+<polygon fill="white" stroke="black" points="2530.5,-633 1315.5,-633 1315.5,-595 2530.5,-595 2530.5,-633"/>
+<text text-anchor="start" x="1323.5" y="-617.8" font-family="Times,serif" font-size="14.00">i45 = @neq(EnumConstant(&#39;zRISCV_ORI&#39;, Enum(&#39;ziop&#39;, (&#39;zRISCV_ADDI&#39;, &#39;zRISCV_SLTI&#39;, &#39;zRISCV_SLTIU&#39;, &#39;zRISCV_XORI&#39;, &#39;zRISCV_ORI&#39;, &#39;zRISCV_ANDI&#39;))), i7) [Operation]</text>
+<text text-anchor="middle" x="1923" y="-602.8" font-family="Times,serif" font-size="14.00">goto if i45</text>
+</g>
+<!-- _275739432&#45;&gt;_275739600 -->
+<g id="edge17" class="edge">
+<title>_275739432&#45;&gt;_275739600</title>
+<path fill="none" stroke="black" stroke-dasharray="5,2" d="M1715.35,-811.67C1755.9,-773.27 1849.81,-684.32 1896.15,-640.43"/>
+<polygon fill="black" stroke="black" points="1898.84,-642.7 1903.7,-633.28 1894.03,-637.62 1898.84,-642.7"/>
+<text text-anchor="middle" x="1901" y="-718.8" font-family="Times,serif" font-size="14.00">True</text>
+</g>
+<!-- _275739488&#45;&gt;_275738872 -->
+<g id="edge9" class="edge">
+<title>_275739488&#45;&gt;_275738872</title>
+<path fill="none" stroke="black" stroke-dasharray="5,2" d="M1171.32,-493.79C1156.16,-422.73 1125.11,-277.18 1110.69,-209.54"/>
+<polygon fill="black" stroke="black" points="1114.03,-208.42 1108.52,-199.37 1107.18,-209.88 1114.03,-208.42"/>
+</g>
+<!-- _275739712 -->
+<g id="node15" class="node">
+<title>_275739712</title>
+<polygon fill="white" stroke="black" points="1447,-420 1183,-420 1183,-337 1447,-337 1447,-420"/>
+<text text-anchor="start" x="1191" y="-404.8" font-family="Times,serif" font-size="14.00">i46 = $cast(i8) [Cast]</text>
+<text text-anchor="start" x="1191" y="-389.8" font-family="Times,serif" font-size="14.00">i47 = $cast(i12) [Cast]</text>
+<text text-anchor="start" x="1191" y="-374.8" font-family="Times,serif" font-size="14.00">i48 = zor_vec(i46, i47) [Operation]</text>
+<text text-anchor="start" x="1191" y="-359.8" font-family="Times,serif" font-size="14.00">i22 = $cast(i48) [Cast]</text>
+<text text-anchor="middle" x="1315" y="-344.8" font-family="Times,serif" font-size="14.00">goto</text>
+</g>
+<!-- _275739600&#45;&gt;_275739712 -->
+<g id="edge12" class="edge">
+<title>_275739600&#45;&gt;_275739712</title>
+<path fill="none" stroke="black" stroke-dasharray="5,2" d="M1796.17,-594.98C1651.67,-572.28 1427,-529.65 1361,-476 1346.55,-464.26 1336.37,-446.9 1329.32,-430.13"/>
+<polygon fill="black" stroke="black" points="1332.41,-428.42 1325.52,-420.37 1325.88,-430.96 1332.41,-428.42"/>
+<text text-anchor="middle" x="1709" y="-531.8" font-family="Times,serif" font-size="14.00">False</text>
+</g>
+<!-- _275739992 -->
+<g id="node16" class="node">
+<title>_275739992</title>
+<polygon fill="white" stroke="black" points="2594.5,-476 1369.5,-476 1369.5,-438 2594.5,-438 2594.5,-476"/>
+<text text-anchor="start" x="1377.5" y="-460.8" font-family="Times,serif" font-size="14.00">i49 = @neq(EnumConstant(&#39;zRISCV_XORI&#39;, Enum(&#39;ziop&#39;, (&#39;zRISCV_ADDI&#39;, &#39;zRISCV_SLTI&#39;, &#39;zRISCV_SLTIU&#39;, &#39;zRISCV_XORI&#39;, &#39;zRISCV_ORI&#39;, &#39;zRISCV_ANDI&#39;))), i7) [Operation]</text>
+<text text-anchor="middle" x="1982" y="-445.8" font-family="Times,serif" font-size="14.00">goto if i49</text>
+</g>
+<!-- _275739600&#45;&gt;_275739992 -->
+<g id="edge16" class="edge">
+<title>_275739600&#45;&gt;_275739992</title>
+<path fill="none" stroke="black" stroke-dasharray="5,2" d="M1929.88,-594.92C1940.09,-568.11 1959.31,-517.6 1971.34,-485.99"/>
+<polygon fill="black" stroke="black" points="1974.69,-487.04 1974.98,-476.45 1968.15,-484.55 1974.69,-487.04"/>
+<text text-anchor="middle" x="1984" y="-531.8" font-family="Times,serif" font-size="14.00">True</text>
+</g>
+<!-- _275739712&#45;&gt;_275738872 -->
+<g id="edge11" class="edge">
+<title>_275739712&#45;&gt;_275738872</title>
+<path fill="none" stroke="black" stroke-dasharray="5,2" d="M1276.9,-336.77C1245.36,-303.62 1198.92,-256.09 1156,-217 1151.93,-213.29 1147.6,-209.51 1143.24,-205.79"/>
+<polygon fill="black" stroke="black" points="1145.31,-202.96 1135.4,-199.2 1140.81,-208.32 1145.31,-202.96"/>
+</g>
+<!-- _275740104 -->
+<g id="node17" class="node">
+<title>_275740104</title>
+<polygon fill="white" stroke="black" points="1678,-319 1406,-319 1406,-236 1678,-236 1678,-319"/>
+<text text-anchor="start" x="1414" y="-303.8" font-family="Times,serif" font-size="14.00">i50 = $cast(i8) [Cast]</text>
+<text text-anchor="start" x="1414" y="-288.8" font-family="Times,serif" font-size="14.00">i51 = $cast(i12) [Cast]</text>
+<text text-anchor="start" x="1414" y="-273.8" font-family="Times,serif" font-size="14.00">i52 = zxor_vec(i50, i51) [Operation]</text>
+<text text-anchor="start" x="1414" y="-258.8" font-family="Times,serif" font-size="14.00">i23 = $cast(i52) [Cast]</text>
+<text text-anchor="middle" x="1542" y="-243.8" font-family="Times,serif" font-size="14.00">goto</text>
+</g>
+<!-- _275739992&#45;&gt;_275740104 -->
+<g id="edge14" class="edge">
+<title>_275739992&#45;&gt;_275740104</title>
+<path fill="none" stroke="black" stroke-dasharray="5,2" d="M1936.98,-437.84C1870.49,-411.02 1743.99,-359.98 1652.02,-322.88"/>
+<polygon fill="black" stroke="black" points="1653.25,-319.61 1642.67,-319.11 1650.63,-326.1 1653.25,-319.61"/>
+<text text-anchor="middle" x="1905" y="-374.8" font-family="Times,serif" font-size="14.00">False</text>
+</g>
+<!-- _275740216 -->
+<g id="node18" class="node">
+<title>_275740216</title>
+<polygon fill="yellow" stroke="black" points="2171,-295.5 1793,-295.5 1793,-259.5 2171,-259.5 2171,-295.5"/>
+<text text-anchor="middle" x="1982" y="-273.8" font-family="Times,serif" font-size="14.00">Raise(StringConstant(&#39;match&#39;), &#39;`39 181:26&#45;188:3&#39;)</text>
+</g>
+<!-- _275739992&#45;&gt;_275740216 -->
+<g id="edge15" class="edge">
+<title>_275739992&#45;&gt;_275740216</title>
+<path fill="none" stroke="black" stroke-dasharray="5,2" d="M1982,-437.67C1982,-406.45 1982,-342.76 1982,-306.12"/>
+<polygon fill="black" stroke="black" points="1985.5,-305.68 1982,-295.68 1978.5,-305.68 1985.5,-305.68"/>
+<text text-anchor="middle" x="1999" y="-374.8" font-family="Times,serif" font-size="14.00">True</text>
+</g>
+<!-- _275740104&#45;&gt;_275738872 -->
+<g id="edge13" class="edge">
+<title>_275740104&#45;&gt;_275738872</title>
+<path fill="none" stroke="black" stroke-dasharray="5,2" d="M1405.8,-244.55C1346.78,-230.7 1278.33,-214.64 1221.45,-201.29"/>
+<polygon fill="black" stroke="black" points="1222.23,-197.88 1211.7,-199 1220.63,-204.69 1222.23,-197.88"/>
+</g>
+</g>
+</svg>
diff --git a/images/2025-pydrofoil-mem-states.svg b/images/2025-pydrofoil-mem-states.svg
new file mode 100644
index 000000000..483310049
--- /dev/null
+++ b/images/2025-pydrofoil-mem-states.svg
@@ -0,0 +1,293 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   width="49.19141mm"
+   height="35.377266mm"
+   viewBox="0 0 185.9203 133.70935"
+   version="1.1"
+   id="svg1"
+   inkscape:version="1.3.1 (9b9bdc1480, 2023-11-25, custom)"
+   sodipodi:docname="state.svg"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:svg="http://www.w3.org/2000/svg">
+  <sodipodi:namedview
+     id="namedview1"
+     pagecolor="#ffffff"
+     bordercolor="#000000"
+     borderopacity="0.25"
+     inkscape:showpageshadow="2"
+     inkscape:pageopacity="0.0"
+     inkscape:pagecheckerboard="0"
+     inkscape:deskcolor="#d1d1d1"
+     inkscape:document-units="mm"
+     inkscape:zoom="5.9011672"
+     inkscape:cx="88.626535"
+     inkscape:cy="68.206846"
+     inkscape:window-width="2494"
+     inkscape:window-height="1371"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="layer1" />
+  <defs
+     id="defs1">
+    <marker
+       style="overflow:visible"
+       id="marker11"
+       refX="0"
+       refY="0"
+       orient="auto-start-reverse"
+       inkscape:stockid="Stylized triangle arrow"
+       markerWidth="1"
+       markerHeight="1"
+       viewBox="0 0 1 1"
+       inkscape:isstock="true"
+       inkscape:collect="always"
+       preserveAspectRatio="xMidYMid">
+      <path
+         transform="scale(0.5)"
+         style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
+         d="m 6,0 c -3,1 -7,3 -9,5 0,0 0,-4 2,-5 -2,-1 -2,-5 -2,-5 2,2 6,4 9,5 z"
+         id="path11" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       id="ArrowTriangleStylized"
+       refX="0"
+       refY="0"
+       orient="auto-start-reverse"
+       inkscape:stockid="Stylized triangle arrow"
+       markerWidth="1"
+       markerHeight="1"
+       viewBox="0 0 1 1"
+       inkscape:isstock="true"
+       inkscape:collect="always"
+       preserveAspectRatio="xMidYMid">
+      <path
+         transform="scale(0.5)"
+         style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
+         d="m 6,0 c -3,1 -7,3 -9,5 0,0 0,-4 2,-5 -2,-1 -2,-5 -2,-5 2,2 6,4 9,5 z"
+         id="path4" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       id="marker11-2-0"
+       refX="0"
+       refY="0"
+       orient="auto-start-reverse"
+       inkscape:stockid="Stylized triangle arrow"
+       markerWidth="1"
+       markerHeight="1"
+       viewBox="0 0 1 1"
+       inkscape:isstock="true"
+       inkscape:collect="always"
+       preserveAspectRatio="xMidYMid">
+      <path
+         transform="scale(0.5)"
+         style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
+         d="m 6,0 c -3,1 -7,3 -9,5 0,0 0,-4 2,-5 -2,-1 -2,-5 -2,-5 2,2 6,4 9,5 z"
+         id="path11-8-2" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       id="marker11-2-0-2"
+       refX="0"
+       refY="0"
+       orient="auto-start-reverse"
+       inkscape:stockid="Stylized triangle arrow"
+       markerWidth="1"
+       markerHeight="1"
+       viewBox="0 0 1 1"
+       inkscape:isstock="true"
+       inkscape:collect="always"
+       preserveAspectRatio="xMidYMid">
+      <path
+         transform="scale(0.5)"
+         style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
+         d="m 6,0 c -3,1 -7,3 -9,5 0,0 0,-4 2,-5 -2,-1 -2,-5 -2,-5 2,2 6,4 9,5 z"
+         id="path11-8-2-1" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       id="marker11-2-0-4"
+       refX="0"
+       refY="0"
+       orient="auto-start-reverse"
+       inkscape:stockid="Stylized triangle arrow"
+       markerWidth="1"
+       markerHeight="1"
+       viewBox="0 0 1 1"
+       inkscape:isstock="true"
+       inkscape:collect="always"
+       preserveAspectRatio="xMidYMid">
+      <path
+         transform="scale(0.5)"
+         style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
+         d="m 6,0 c -3,1 -7,3 -9,5 0,0 0,-4 2,-5 -2,-1 -2,-5 -2,-5 2,2 6,4 9,5 z"
+         id="path11-8-2-9" />
+    </marker>
+  </defs>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-80.39287,-26.113786)">
+    <path
+       style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.755906;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker11-2-0)"
+       d="m 172.85332,28.611857 h -3.2e-4 c -5.07868,-3e-5 -9.19578,4.11706 -9.19575,9.19575 0.002,0.0303 0.005,0.0606 0.007,0.0909 l 9.28259,9.09822 c 5.03952,-0.0512 9.09923,-4.14929 9.10223,-9.18907 3e-5,-5.07869 -4.11707,-9.19578 -9.19575,-9.19575 z"
+       id="path12-0-9-9-6"
+       sodipodi:nodetypes="ssccccs" />
+    <path
+       style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.755906;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker11-2-0-2)"
+       d="m 190.29488,78.142142 h -3.1e-4 c -5.07869,-3e-5 -9.19579,4.11706 -9.19576,9.19575 0.002,0.0303 0.005,0.0606 0.007,0.0909 l 9.2826,9.09822 c 5.03951,-0.0512 9.09922,-4.14929 9.10222,-9.18907 4e-5,-5.07869 -4.11707,-9.19578 -9.19575,-9.19575 z"
+       id="path12-0-9-9-6-9"
+       sodipodi:nodetypes="ssccccs" />
+    <path
+       style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.755906;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker11-2-0-4)"
+       d="m 178.12625,123.53235 h -3.2e-4 c -5.07868,-3e-5 -9.19578,4.11706 -9.19575,9.19575 0.002,0.0303 0.005,0.0606 0.007,0.0909 l 9.28259,9.09822 c 5.03952,-0.0512 9.09923,-4.14929 9.10223,-9.18907 3e-5,-5.07869 -4.11707,-9.19578 -9.19575,-9.19575 z"
+       id="path12-0-9-9-6-0"
+       sodipodi:nodetypes="ssccccs" />
+    <g
+       id="g9"
+       transform="translate(66.290516,20.806928)">
+      <rect
+         style="fill:#e5e5e5;fill-opacity:1;stroke:#000000;stroke-width:1.00157;stroke-opacity:1"
+         id="rect1"
+         width="75.669617"
+         height="25.905891"
+         x="31.634369"
+         y="16.855114" />
+      <text
+         xml:space="preserve"
+         style="font-size:21.3333px;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.00157;stroke-opacity:1"
+         x="34.77066"
+         y="37.720291"
+         id="text1"><tspan
+           sodipodi:role="line"
+           id="tspan1"
+           x="34.77066"
+           y="37.720291">default</tspan></text>
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-size:13.3333px;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.00157;stroke-dasharray:none;stroke-opacity:1"
+       x="202.51353"
+       y="87.215233"
+       id="text12-9-5"><tspan
+         sodipodi:role="line"
+         id="tspan12-3-1"
+         x="202.51353"
+         y="87.215233">read, fetch</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:13.3333px;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.00157;stroke-dasharray:none;stroke-opacity:1"
+       x="195.69041"
+       y="134.55566"
+       id="text12-9-5-2"><tspan
+         sodipodi:role="line"
+         id="tspan12-3-1-8"
+         x="195.69041"
+         y="134.55566">any</tspan></text>
+    <g
+       id="g9-7"
+       transform="translate(49.259286,69.499016)">
+      <rect
+         style="fill:#e5e5e5;fill-opacity:1;stroke:#000000;stroke-width:1.00157;stroke-opacity:1"
+         id="rect1-7"
+         width="109.46656"
+         height="25.905891"
+         x="31.634369"
+         y="16.855114" />
+      <text
+         xml:space="preserve"
+         style="font-size:21.3333px;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.00157;stroke-opacity:1"
+         x="34.77066"
+         y="37.720291"
+         id="text1-6"><tspan
+           sodipodi:role="line"
+           id="tspan1-4"
+           x="34.77066"
+           y="37.720291">immutable</tspan></text>
+    </g>
+    <g
+       id="g9-7-2"
+       transform="translate(60.592806,116.56135)">
+      <rect
+         style="fill:#e5e5e5;fill-opacity:1;stroke:#000000;stroke-width:1.00157;stroke-opacity:1"
+         id="rect1-7-5"
+         width="86.887596"
+         height="25.905891"
+         x="31.634369"
+         y="16.855114" />
+      <text
+         xml:space="preserve"
+         style="font-size:21.3333px;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.00157;stroke-opacity:1"
+         x="34.77066"
+         y="37.720291"
+         id="text1-6-4"><tspan
+           sodipodi:role="line"
+           id="tspan1-4-0"
+           x="34.77066"
+           y="37.720291">mutable</tspan></text>
+    </g>
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.00157;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#ArrowTriangleStylized)"
+       d="m 135.72438,63.567933 -0.0621,22.786197"
+       id="path9"
+       inkscape:connector-type="polyline"
+       inkscape:connector-curvature="0"
+       inkscape:connection-start="#g9"
+       inkscape:connection-end="#g9-7" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker11)"
+       d="m 135.63906,112.26002 0.0198,21.15644"
+       id="path10"
+       inkscape:connector-type="polyline"
+       inkscape:connector-curvature="0"
+       inkscape:connection-start="#g9-7"
+       inkscape:connection-end="#g9-7-2" />
+    <text
+       xml:space="preserve"
+       style="font-size:13.3333px;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.00157;stroke-dasharray:none;stroke-opacity:1"
+       x="90.142387"
+       y="83.646721"
+       id="text11"><tspan
+         sodipodi:role="line"
+         id="tspan11"
+         x="90.142387"
+         y="83.646721" /></text>
+    <text
+       xml:space="preserve"
+       style="font-size:13.3333px;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.00157;stroke-dasharray:none;stroke-opacity:1"
+       x="102.4951"
+       y="80.106407"
+       id="text12"><tspan
+         sodipodi:role="line"
+         id="tspan12"
+         x="102.4951"
+         y="80.106407">fetch</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:13.3333px;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.00157;stroke-dasharray:none;stroke-opacity:1"
+       x="187.8288"
+       y="39.2285"
+       id="text12-9"><tspan
+         sodipodi:role="line"
+         id="tspan12-3"
+         x="187.8288"
+         y="39.2285">read, write</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:13.3333px;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.00157;stroke-dasharray:none;stroke-opacity:1"
+       x="101.60253"
+       y="126.81479"
+       id="text12-2"><tspan
+         sodipodi:role="line"
+         id="tspan12-2"
+         x="101.60253"
+         y="126.81479">write</tspan></text>
+  </g>
+</svg>
diff --git a/images/2025-pydrofoil-qemu.svg b/images/2025-pydrofoil-qemu.svg
new file mode 100644
index 000000000..5be59002d
--- /dev/null
+++ b/images/2025-pydrofoil-qemu.svg
@@ -0,0 +1,352 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="647.999983" height="371.999983" viewBox="0 0 647.999983 371.999983">
+<defs>
+<g>
+<g id="glyph-0-0">
+<path d="M 2.125 0 L 1.609375 0 L 1.609375 -3 C 1.609375 -3.164062 1.609375 -3.300781 1.609375 -3.40625 C 1.617188 -3.507812 1.628906 -3.617188 1.640625 -3.734375 C 1.578125 -3.671875 1.519531 -3.613281 1.46875 -3.5625 C 1.414062 -3.519531 1.347656 -3.46875 1.265625 -3.40625 L 0.8125 -3.03125 L 0.53125 -3.390625 L 1.6875 -4.28125 L 2.125 -4.28125 Z M 2.125 0 "/>
+</g>
+<g id="glyph-0-1">
+<path d="M 3.3125 -0.96875 L 2.6875 -0.96875 L 2.6875 0 L 2.171875 0 L 2.171875 -0.96875 L 0.125 -0.96875 L 0.125 -1.421875 L 2.140625 -4.3125 L 2.6875 -4.3125 L 2.6875 -1.453125 L 3.3125 -1.453125 Z M 2.171875 -2.796875 C 2.171875 -3.003906 2.175781 -3.179688 2.1875 -3.328125 C 2.195312 -3.472656 2.203125 -3.613281 2.203125 -3.75 L 2.1875 -3.75 C 2.15625 -3.664062 2.113281 -3.578125 2.0625 -3.484375 C 2.007812 -3.398438 1.960938 -3.332031 1.921875 -3.28125 L 0.640625 -1.453125 L 2.171875 -1.453125 Z M 2.171875 -2.796875 "/>
+</g>
+<g id="glyph-0-2">
+<path d="M 2.953125 -3.28125 C 2.953125 -2.988281 2.875 -2.757812 2.71875 -2.59375 C 2.5625 -2.425781 2.34375 -2.3125 2.0625 -2.25 L 2.0625 -2.234375 C 2.414062 -2.191406 2.675781 -2.082031 2.84375 -1.90625 C 3.007812 -1.726562 3.09375 -1.5 3.09375 -1.21875 C 3.09375 -0.96875 3.03125 -0.742188 2.90625 -0.546875 C 2.789062 -0.359375 2.613281 -0.207031 2.375 -0.09375 C 2.132812 0.0078125 1.828125 0.0625 1.453125 0.0625 C 1.222656 0.0625 1.007812 0.0390625 0.8125 0 C 0.625 -0.03125 0.441406 -0.0859375 0.265625 -0.171875 L 0.265625 -0.671875 C 0.453125 -0.578125 0.644531 -0.503906 0.84375 -0.453125 C 1.050781 -0.410156 1.253906 -0.390625 1.453125 -0.390625 C 1.835938 -0.390625 2.113281 -0.460938 2.28125 -0.609375 C 2.445312 -0.753906 2.53125 -0.960938 2.53125 -1.234375 C 2.53125 -1.492188 2.425781 -1.679688 2.21875 -1.796875 C 2.007812 -1.921875 1.71875 -1.984375 1.34375 -1.984375 L 0.921875 -1.984375 L 0.921875 -2.4375 L 1.34375 -2.4375 C 1.695312 -2.4375 1.960938 -2.507812 2.140625 -2.65625 C 2.328125 -2.800781 2.421875 -3 2.421875 -3.25 C 2.421875 -3.457031 2.347656 -3.617188 2.203125 -3.734375 C 2.066406 -3.847656 1.878906 -3.90625 1.640625 -3.90625 C 1.410156 -3.90625 1.210938 -3.867188 1.046875 -3.796875 C 0.878906 -3.734375 0.71875 -3.648438 0.5625 -3.546875 L 0.296875 -3.90625 C 0.441406 -4.019531 0.628906 -4.117188 0.859375 -4.203125 C 1.085938 -4.296875 1.34375 -4.34375 1.625 -4.34375 C 2.070312 -4.34375 2.40625 -4.242188 2.625 -4.046875 C 2.84375 -3.847656 2.953125 -3.59375 2.953125 -3.28125 Z M 2.953125 -3.28125 "/>
+</g>
+<g id="glyph-0-3">
+<path d="M 3.140625 -2.140625 C 3.140625 -1.679688 3.085938 -1.285156 2.984375 -0.953125 C 2.890625 -0.628906 2.738281 -0.378906 2.53125 -0.203125 C 2.320312 -0.0234375 2.046875 0.0625 1.703125 0.0625 C 1.222656 0.0625 0.867188 -0.128906 0.640625 -0.515625 C 0.410156 -0.910156 0.296875 -1.453125 0.296875 -2.140625 C 0.296875 -2.609375 0.34375 -3.003906 0.4375 -3.328125 C 0.53125 -3.660156 0.679688 -3.910156 0.890625 -4.078125 C 1.097656 -4.253906 1.367188 -4.34375 1.703125 -4.34375 C 2.191406 -4.34375 2.550781 -4.148438 2.78125 -3.765625 C 3.019531 -3.378906 3.140625 -2.835938 3.140625 -2.140625 Z M 0.828125 -2.140625 C 0.828125 -1.554688 0.890625 -1.117188 1.015625 -0.828125 C 1.148438 -0.535156 1.378906 -0.390625 1.703125 -0.390625 C 2.023438 -0.390625 2.253906 -0.535156 2.390625 -0.828125 C 2.535156 -1.117188 2.609375 -1.554688 2.609375 -2.140625 C 2.609375 -2.734375 2.535156 -3.175781 2.390625 -3.46875 C 2.253906 -3.757812 2.023438 -3.90625 1.703125 -3.90625 C 1.378906 -3.90625 1.148438 -3.757812 1.015625 -3.46875 C 0.890625 -3.175781 0.828125 -2.734375 0.828125 -2.140625 Z M 0.828125 -2.140625 "/>
+</g>
+<g id="glyph-0-4">
+<path d="M 1.703125 -4.34375 C 2.085938 -4.34375 2.398438 -4.253906 2.640625 -4.078125 C 2.878906 -3.898438 3 -3.644531 3 -3.3125 C 3 -3.144531 2.957031 -2.992188 2.875 -2.859375 C 2.800781 -2.734375 2.703125 -2.617188 2.578125 -2.515625 C 2.460938 -2.421875 2.328125 -2.335938 2.171875 -2.265625 C 2.347656 -2.179688 2.507812 -2.085938 2.65625 -1.984375 C 2.800781 -1.878906 2.914062 -1.753906 3 -1.609375 C 3.082031 -1.472656 3.125 -1.304688 3.125 -1.109375 C 3.125 -0.742188 3 -0.457031 2.75 -0.25 C 2.5 -0.0390625 2.160156 0.0625 1.734375 0.0625 C 1.265625 0.0625 0.90625 -0.0351562 0.65625 -0.234375 C 0.414062 -0.441406 0.296875 -0.726562 0.296875 -1.09375 C 0.296875 -1.289062 0.335938 -1.457031 0.421875 -1.59375 C 0.503906 -1.738281 0.613281 -1.863281 0.75 -1.96875 C 0.882812 -2.070312 1.03125 -2.160156 1.1875 -2.234375 C 0.976562 -2.359375 0.800781 -2.503906 0.65625 -2.671875 C 0.507812 -2.835938 0.4375 -3.054688 0.4375 -3.328125 C 0.4375 -3.546875 0.488281 -3.726562 0.59375 -3.875 C 0.707031 -4.03125 0.859375 -4.144531 1.046875 -4.21875 C 1.242188 -4.300781 1.460938 -4.34375 1.703125 -4.34375 Z M 1.703125 -3.921875 C 1.484375 -3.921875 1.300781 -3.863281 1.15625 -3.75 C 1.019531 -3.644531 0.953125 -3.492188 0.953125 -3.296875 C 0.953125 -3.148438 0.984375 -3.023438 1.046875 -2.921875 C 1.117188 -2.828125 1.210938 -2.742188 1.328125 -2.671875 C 1.453125 -2.597656 1.585938 -2.53125 1.734375 -2.46875 C 1.941406 -2.5625 2.113281 -2.664062 2.25 -2.78125 C 2.394531 -2.90625 2.46875 -3.078125 2.46875 -3.296875 C 2.46875 -3.492188 2.394531 -3.644531 2.25 -3.75 C 2.113281 -3.863281 1.929688 -3.921875 1.703125 -3.921875 Z M 0.8125 -1.09375 C 0.8125 -0.882812 0.882812 -0.707031 1.03125 -0.5625 C 1.175781 -0.425781 1.40625 -0.359375 1.71875 -0.359375 C 2.007812 -0.359375 2.226562 -0.425781 2.375 -0.5625 C 2.53125 -0.707031 2.609375 -0.890625 2.609375 -1.109375 C 2.609375 -1.316406 2.523438 -1.488281 2.359375 -1.625 C 2.203125 -1.757812 1.988281 -1.878906 1.71875 -1.984375 L 1.625 -2.015625 C 1.351562 -1.910156 1.148438 -1.785156 1.015625 -1.640625 C 0.878906 -1.492188 0.8125 -1.3125 0.8125 -1.09375 Z M 0.8125 -1.09375 "/>
+</g>
+<g id="glyph-0-5">
+<path d="M 1.65625 -2.625 C 2.09375 -2.625 2.441406 -2.515625 2.703125 -2.296875 C 2.960938 -2.078125 3.09375 -1.769531 3.09375 -1.375 C 3.09375 -0.925781 2.953125 -0.570312 2.671875 -0.3125 C 2.390625 -0.0625 1.992188 0.0625 1.484375 0.0625 C 1.265625 0.0625 1.054688 0.0390625 0.859375 0 C 0.671875 -0.0390625 0.507812 -0.0976562 0.375 -0.171875 L 0.375 -0.671875 C 0.519531 -0.585938 0.695312 -0.519531 0.90625 -0.46875 C 1.113281 -0.414062 1.3125 -0.390625 1.5 -0.390625 C 1.8125 -0.390625 2.0625 -0.460938 2.25 -0.609375 C 2.445312 -0.765625 2.546875 -1 2.546875 -1.3125 C 2.546875 -1.59375 2.457031 -1.804688 2.28125 -1.953125 C 2.113281 -2.109375 1.84375 -2.1875 1.46875 -2.1875 C 1.363281 -2.1875 1.238281 -2.175781 1.09375 -2.15625 C 0.945312 -2.132812 0.832031 -2.113281 0.75 -2.09375 L 0.484375 -2.265625 L 0.640625 -4.28125 L 2.796875 -4.28125 L 2.796875 -3.796875 L 1.09375 -3.796875 L 0.984375 -2.5625 C 1.054688 -2.570312 1.148438 -2.582031 1.265625 -2.59375 C 1.378906 -2.613281 1.507812 -2.625 1.65625 -2.625 Z M 1.65625 -2.625 "/>
+</g>
+<g id="glyph-1-0">
+<path d="M 0.09375 -3.53125 C -0.0078125 -3.53125 -0.125 -3.53125 -0.25 -3.53125 C -0.375 -3.539062 -0.484375 -3.554688 -0.578125 -3.578125 L -0.578125 -3.53125 C -0.390625 -3.40625 -0.234375 -3.234375 -0.109375 -3.015625 C 0.015625 -2.804688 0.078125 -2.53125 0.078125 -2.1875 C 0.078125 -1.664062 -0.101562 -1.242188 -0.46875 -0.921875 C -0.84375 -0.597656 -1.398438 -0.4375 -2.140625 -0.4375 C -2.867188 -0.4375 -3.421875 -0.597656 -3.796875 -0.921875 C -4.179688 -1.253906 -4.375 -1.679688 -4.375 -2.203125 C -4.375 -2.546875 -4.304688 -2.820312 -4.171875 -3.03125 C -4.046875 -3.25 -3.890625 -3.421875 -3.703125 -3.546875 L -3.703125 -3.578125 L -4.28125 -3.6875 L -4.28125 -4.234375 L 1.921875 -4.234375 L 1.921875 -3.53125 Z M -0.5 -2.3125 C -0.5 -2.757812 -0.617188 -3.070312 -0.859375 -3.25 C -1.109375 -3.4375 -1.484375 -3.535156 -1.984375 -3.546875 L -2.125 -3.546875 C -2.664062 -3.546875 -3.078125 -3.453125 -3.359375 -3.265625 C -3.640625 -3.085938 -3.78125 -2.765625 -3.78125 -2.296875 C -3.78125 -1.921875 -3.628906 -1.640625 -3.328125 -1.453125 C -3.023438 -1.265625 -2.625 -1.171875 -2.125 -1.171875 C -1.613281 -1.171875 -1.210938 -1.265625 -0.921875 -1.453125 C -0.640625 -1.640625 -0.5 -1.925781 -0.5 -2.3125 Z M -0.5 -2.3125 "/>
+</g>
+<g id="glyph-1-1">
+<path d="M -4.375 -2.34375 C -4.375 -2.707031 -4.289062 -3.019531 -4.125 -3.28125 C -3.96875 -3.550781 -3.742188 -3.753906 -3.453125 -3.890625 C -3.160156 -4.035156 -2.820312 -4.109375 -2.4375 -4.109375 L -2.015625 -4.109375 L -2.015625 -1.171875 C -1.523438 -1.179688 -1.148438 -1.300781 -0.890625 -1.53125 C -0.640625 -1.769531 -0.515625 -2.101562 -0.515625 -2.53125 C -0.515625 -2.800781 -0.539062 -3.039062 -0.59375 -3.25 C -0.644531 -3.46875 -0.71875 -3.6875 -0.8125 -3.90625 L -0.203125 -3.90625 C -0.109375 -3.6875 -0.0390625 -3.46875 0 -3.25 C 0.0507812 -3.039062 0.078125 -2.789062 0.078125 -2.5 C 0.078125 -2.09375 -0.00390625 -1.734375 -0.171875 -1.421875 C -0.335938 -1.109375 -0.582031 -0.863281 -0.90625 -0.6875 C -1.238281 -0.519531 -1.640625 -0.4375 -2.109375 -0.4375 C -2.578125 -0.4375 -2.976562 -0.515625 -3.3125 -0.671875 C -3.65625 -0.828125 -3.914062 -1.046875 -4.09375 -1.328125 C -4.28125 -1.617188 -4.375 -1.957031 -4.375 -2.34375 Z M -3.796875 -2.328125 C -3.796875 -1.992188 -3.6875 -1.726562 -3.46875 -1.53125 C -3.25 -1.332031 -2.945312 -1.21875 -2.5625 -1.1875 L -2.5625 -3.375 C -2.925781 -3.363281 -3.222656 -3.273438 -3.453125 -3.109375 C -3.679688 -2.941406 -3.796875 -2.679688 -3.796875 -2.328125 Z M -3.796875 -2.328125 "/>
+</g>
+<g id="glyph-1-2">
+<path d="M -4.375 -5.390625 C -4.375 -5.867188 -4.25 -6.226562 -4 -6.46875 C -3.75 -6.707031 -3.347656 -6.828125 -2.796875 -6.828125 L 0 -6.828125 L 0 -6.140625 L -2.765625 -6.140625 C -3.441406 -6.140625 -3.78125 -5.847656 -3.78125 -5.265625 C -3.78125 -4.847656 -3.660156 -4.550781 -3.421875 -4.375 C -3.179688 -4.195312 -2.832031 -4.109375 -2.375 -4.109375 L 0 -4.109375 L 0 -3.40625 L -2.765625 -3.40625 C -3.441406 -3.40625 -3.78125 -3.113281 -3.78125 -2.53125 C -3.78125 -2.09375 -3.644531 -1.789062 -3.375 -1.625 C -3.101562 -1.46875 -2.71875 -1.390625 -2.21875 -1.390625 L 0 -1.390625 L 0 -0.6875 L -4.28125 -0.6875 L -4.28125 -1.25 L -3.703125 -1.359375 L -3.703125 -1.390625 C -3.929688 -1.523438 -4.097656 -1.703125 -4.203125 -1.921875 C -4.316406 -2.148438 -4.375 -2.394531 -4.375 -2.65625 C -4.375 -3.320312 -4.128906 -3.757812 -3.640625 -3.96875 L -3.640625 -4.015625 C -3.890625 -4.148438 -4.070312 -4.34375 -4.1875 -4.59375 C -4.3125 -4.84375 -4.375 -5.109375 -4.375 -5.390625 Z M -4.375 -5.390625 "/>
+</g>
+<g id="glyph-1-3">
+<path d="M -4.28125 -4.265625 L 0 -4.265625 L 0 -3.6875 L -0.5625 -3.578125 L -0.5625 -3.546875 C -0.34375 -3.410156 -0.179688 -3.21875 -0.078125 -2.96875 C 0.0234375 -2.726562 0.078125 -2.46875 0.078125 -2.1875 C 0.078125 -1.675781 -0.0390625 -1.285156 -0.28125 -1.015625 C -0.53125 -0.753906 -0.929688 -0.625 -1.484375 -0.625 L -4.28125 -0.625 L -4.28125 -1.34375 L -1.53125 -1.34375 C -0.84375 -1.34375 -0.5 -1.660156 -0.5 -2.296875 C -0.5 -2.773438 -0.628906 -3.101562 -0.890625 -3.28125 C -1.160156 -3.46875 -1.550781 -3.5625 -2.0625 -3.5625 L -4.28125 -3.5625 Z M -4.28125 -4.265625 "/>
+</g>
+<g id="glyph-1-4">
+<path d="M -4.375 -2.71875 C -4.375 -3.25 -4.1875 -3.675781 -3.8125 -4 C -3.445312 -4.320312 -2.894531 -4.484375 -2.15625 -4.484375 C -1.425781 -4.484375 -0.867188 -4.320312 -0.484375 -4 C -0.109375 -3.675781 0.078125 -3.25 0.078125 -2.71875 C 0.078125 -2.382812 0.015625 -2.109375 -0.109375 -1.890625 C -0.234375 -1.671875 -0.378906 -1.503906 -0.546875 -1.390625 L -0.546875 -1.34375 C -0.453125 -1.351562 -0.332031 -1.363281 -0.1875 -1.375 C -0.0507812 -1.382812 0.0625 -1.390625 0.15625 -1.390625 L 1.921875 -1.390625 L 1.921875 -0.6875 L -4.28125 -0.6875 L -4.28125 -1.25 L -3.703125 -1.359375 L -3.703125 -1.390625 C -3.890625 -1.515625 -4.046875 -1.679688 -4.171875 -1.890625 C -4.304688 -2.097656 -4.375 -2.375 -4.375 -2.71875 Z M -3.78125 -2.59375 C -3.78125 -2.15625 -3.65625 -1.847656 -3.40625 -1.671875 C -3.164062 -1.492188 -2.789062 -1.398438 -2.28125 -1.390625 L -2.15625 -1.390625 C -1.625 -1.390625 -1.210938 -1.472656 -0.921875 -1.640625 C -0.640625 -1.816406 -0.5 -2.140625 -0.5 -2.609375 C -0.5 -2.867188 -0.570312 -3.082031 -0.71875 -3.25 C -0.863281 -3.414062 -1.0625 -3.539062 -1.3125 -3.625 C -1.5625 -3.707031 -1.84375 -3.75 -2.15625 -3.75 C -2.644531 -3.75 -3.035156 -3.65625 -3.328125 -3.46875 C -3.628906 -3.28125 -3.78125 -2.988281 -3.78125 -2.59375 Z M -3.78125 -2.59375 "/>
+</g>
+<g id="glyph-1-5">
+<path d="M -4.28125 -0.015625 L -4.28125 -0.765625 L -1.84375 -1.6875 C -1.632812 -1.769531 -1.429688 -1.84375 -1.234375 -1.90625 C -1.035156 -1.96875 -0.851562 -2.015625 -0.6875 -2.046875 L -0.6875 -2.078125 C -0.8125 -2.109375 -0.984375 -2.160156 -1.203125 -2.234375 C -1.421875 -2.304688 -1.640625 -2.378906 -1.859375 -2.453125 L -4.28125 -3.3125 L -4.28125 -4.078125 L 0.59375 -2.234375 C 1 -2.085938 1.320312 -1.894531 1.5625 -1.65625 C 1.800781 -1.414062 1.921875 -1.085938 1.921875 -0.671875 C 1.921875 -0.546875 1.910156 -0.429688 1.890625 -0.328125 C 1.878906 -0.234375 1.867188 -0.15625 1.859375 -0.09375 L 1.296875 -0.09375 C 1.304688 -0.144531 1.316406 -0.210938 1.328125 -0.296875 C 1.335938 -0.378906 1.34375 -0.46875 1.34375 -0.5625 C 1.34375 -0.800781 1.269531 -1 1.125 -1.15625 C 0.988281 -1.3125 0.804688 -1.429688 0.578125 -1.515625 L 0.015625 -1.734375 Z M -4.28125 -0.015625 "/>
+</g>
+<g id="glyph-1-6">
+<path d="M 0.078125 -2.203125 C 0.078125 -1.671875 -0.101562 -1.242188 -0.46875 -0.921875 C -0.84375 -0.597656 -1.398438 -0.4375 -2.140625 -0.4375 C -2.867188 -0.4375 -3.421875 -0.597656 -3.796875 -0.921875 C -4.179688 -1.242188 -4.375 -1.671875 -4.375 -2.203125 C -4.375 -2.535156 -4.3125 -2.804688 -4.1875 -3.015625 C -4.0625 -3.234375 -3.910156 -3.40625 -3.734375 -3.53125 L -3.734375 -3.578125 C -3.804688 -3.578125 -3.910156 -3.566406 -4.046875 -3.546875 C -4.179688 -3.535156 -4.289062 -3.53125 -4.375 -3.53125 L -6.078125 -3.53125 L -6.078125 -4.234375 L 0 -4.234375 L 0 -3.671875 L -0.578125 -3.5625 L -0.578125 -3.53125 C -0.390625 -3.40625 -0.234375 -3.234375 -0.109375 -3.015625 C 0.015625 -2.804688 0.078125 -2.535156 0.078125 -2.203125 Z M -0.5 -2.3125 C -0.5 -2.757812 -0.625 -3.078125 -0.875 -3.265625 C -1.125 -3.453125 -1.5 -3.546875 -2 -3.546875 L -2.125 -3.546875 C -2.65625 -3.546875 -3.0625 -3.457031 -3.34375 -3.28125 C -3.632812 -3.101562 -3.78125 -2.773438 -3.78125 -2.296875 C -3.78125 -1.921875 -3.628906 -1.640625 -3.328125 -1.453125 C -3.023438 -1.265625 -2.625 -1.171875 -2.125 -1.171875 C -1.613281 -1.171875 -1.210938 -1.265625 -0.921875 -1.453125 C -0.640625 -1.640625 -0.5 -1.925781 -0.5 -2.3125 Z M -0.5 -2.3125 "/>
+</g>
+<g id="glyph-1-7">
+<path d="M -4.375 -2.6875 C -4.375 -2.757812 -4.367188 -2.84375 -4.359375 -2.9375 C -4.347656 -3.03125 -4.332031 -3.113281 -4.3125 -3.1875 L -3.671875 -3.09375 C -3.691406 -3.019531 -3.707031 -2.941406 -3.71875 -2.859375 C -3.726562 -2.785156 -3.734375 -2.707031 -3.734375 -2.625 C -3.734375 -2.40625 -3.671875 -2.203125 -3.546875 -2.015625 C -3.429688 -1.828125 -3.265625 -1.675781 -3.046875 -1.5625 C -2.828125 -1.445312 -2.570312 -1.390625 -2.28125 -1.390625 L 0 -1.390625 L 0 -0.6875 L -4.28125 -0.6875 L -4.28125 -1.25 L -3.5 -1.34375 L -3.5 -1.375 C -3.738281 -1.507812 -3.941406 -1.6875 -4.109375 -1.90625 C -4.285156 -2.125 -4.375 -2.382812 -4.375 -2.6875 Z M -4.375 -2.6875 "/>
+</g>
+<g id="glyph-1-8">
+<path d="M -2.15625 -4.40625 C -1.445312 -4.40625 -0.894531 -4.222656 -0.5 -3.859375 C -0.113281 -3.503906 0.078125 -3.019531 0.078125 -2.40625 C 0.078125 -2.03125 -0.00390625 -1.691406 -0.171875 -1.390625 C -0.347656 -1.097656 -0.601562 -0.863281 -0.9375 -0.6875 C -1.269531 -0.519531 -1.675781 -0.4375 -2.15625 -0.4375 C -2.863281 -0.4375 -3.410156 -0.613281 -3.796875 -0.96875 C -4.179688 -1.332031 -4.375 -1.820312 -4.375 -2.4375 C -4.375 -2.820312 -4.285156 -3.160156 -4.109375 -3.453125 C -3.929688 -3.753906 -3.675781 -3.988281 -3.34375 -4.15625 C -3.019531 -4.320312 -2.625 -4.40625 -2.15625 -4.40625 Z M -2.15625 -1.171875 C -1.644531 -1.171875 -1.238281 -1.269531 -0.9375 -1.46875 C -0.644531 -1.664062 -0.5 -1.984375 -0.5 -2.421875 C -0.5 -2.859375 -0.644531 -3.175781 -0.9375 -3.375 C -1.238281 -3.582031 -1.644531 -3.6875 -2.15625 -3.6875 C -2.65625 -3.6875 -3.050781 -3.582031 -3.34375 -3.375 C -3.632812 -3.175781 -3.78125 -2.859375 -3.78125 -2.421875 C -3.78125 -1.984375 -3.632812 -1.664062 -3.34375 -1.46875 C -3.050781 -1.269531 -2.65625 -1.171875 -2.15625 -1.171875 Z M -2.15625 -1.171875 "/>
+</g>
+<g id="glyph-1-9">
+<path d="M -3.75 -2.65625 L -3.75 -1.578125 L 0 -1.578125 L 0 -0.875 L -3.75 -0.875 L -3.75 -0.125 L -4.078125 -0.125 L -4.3125 -0.875 L -4.5625 -0.875 C -5.113281 -0.875 -5.507812 -0.992188 -5.75 -1.234375 C -6 -1.484375 -6.125 -1.828125 -6.125 -2.265625 C -6.125 -2.429688 -6.109375 -2.582031 -6.078125 -2.71875 C -6.046875 -2.863281 -6.007812 -2.988281 -5.96875 -3.09375 L -5.421875 -2.90625 C -5.453125 -2.820312 -5.476562 -2.722656 -5.5 -2.609375 C -5.53125 -2.503906 -5.546875 -2.390625 -5.546875 -2.265625 C -5.546875 -2.035156 -5.46875 -1.863281 -5.3125 -1.75 C -5.15625 -1.632812 -4.90625 -1.578125 -4.5625 -1.578125 L -4.28125 -1.578125 L -4.28125 -2.65625 Z M -3.75 -2.65625 "/>
+</g>
+<g id="glyph-1-10">
+<path d="M -5.890625 -1.046875 C -5.890625 -1.148438 -5.851562 -1.242188 -5.78125 -1.328125 C -5.71875 -1.410156 -5.609375 -1.453125 -5.453125 -1.453125 C -5.296875 -1.453125 -5.179688 -1.410156 -5.109375 -1.328125 C -5.035156 -1.242188 -5 -1.148438 -5 -1.046875 C -5 -0.921875 -5.035156 -0.816406 -5.109375 -0.734375 C -5.179688 -0.660156 -5.296875 -0.625 -5.453125 -0.625 C -5.609375 -0.625 -5.71875 -0.660156 -5.78125 -0.734375 C -5.851562 -0.816406 -5.890625 -0.921875 -5.890625 -1.046875 Z M -4.28125 -1.390625 L 0 -1.390625 L 0 -0.6875 L -4.28125 -0.6875 Z M -4.28125 -1.390625 "/>
+</g>
+<g id="glyph-1-11">
+<path d="M 0 -1.390625 L 0 -0.6875 L -6.078125 -0.6875 L -6.078125 -1.390625 Z M 0 -1.390625 "/>
+</g>
+<g id="glyph-1-12">
+<path d="M -1.828125 -0.3125 L -2.453125 -0.3125 L -2.453125 -2.25 L -1.828125 -2.25 Z M -1.828125 -0.3125 "/>
+</g>
+<g id="glyph-1-13">
+<path d="M -1.1875 -3.46875 C -0.769531 -3.46875 -0.453125 -3.3125 -0.234375 -3 C -0.0234375 -2.695312 0.078125 -2.285156 0.078125 -1.765625 C 0.078125 -1.460938 0.0507812 -1.203125 0 -0.984375 C -0.0390625 -0.765625 -0.101562 -0.578125 -0.1875 -0.421875 L -0.828125 -0.421875 C -0.742188 -0.585938 -0.664062 -0.789062 -0.59375 -1.03125 C -0.519531 -1.28125 -0.484375 -1.53125 -0.484375 -1.78125 C -0.484375 -2.132812 -0.539062 -2.390625 -0.65625 -2.546875 C -0.769531 -2.710938 -0.925781 -2.796875 -1.125 -2.796875 C -1.226562 -2.796875 -1.320312 -2.765625 -1.40625 -2.703125 C -1.488281 -2.640625 -1.570312 -2.53125 -1.65625 -2.375 C -1.75 -2.226562 -1.847656 -2.015625 -1.953125 -1.734375 C -2.054688 -1.453125 -2.160156 -1.210938 -2.265625 -1.015625 C -2.378906 -0.828125 -2.507812 -0.675781 -2.65625 -0.5625 C -2.800781 -0.457031 -2.992188 -0.40625 -3.234375 -0.40625 C -3.597656 -0.40625 -3.878906 -0.550781 -4.078125 -0.84375 C -4.273438 -1.144531 -4.375 -1.535156 -4.375 -2.015625 C -4.375 -2.273438 -4.347656 -2.519531 -4.296875 -2.75 C -4.242188 -2.976562 -4.171875 -3.191406 -4.078125 -3.390625 L -3.515625 -3.140625 C -3.585938 -2.960938 -3.648438 -2.773438 -3.703125 -2.578125 C -3.765625 -2.378906 -3.796875 -2.175781 -3.796875 -1.96875 C -3.796875 -1.675781 -3.75 -1.453125 -3.65625 -1.296875 C -3.5625 -1.148438 -3.429688 -1.078125 -3.265625 -1.078125 C -3.148438 -1.078125 -3.050781 -1.109375 -2.96875 -1.171875 C -2.882812 -1.242188 -2.800781 -1.363281 -2.71875 -1.53125 C -2.644531 -1.695312 -2.554688 -1.914062 -2.453125 -2.1875 C -2.347656 -2.457031 -2.242188 -2.6875 -2.140625 -2.875 C -2.035156 -3.070312 -1.90625 -3.21875 -1.75 -3.3125 C -1.601562 -3.414062 -1.414062 -3.46875 -1.1875 -3.46875 Z M -1.1875 -3.46875 "/>
+</g>
+<g id="glyph-1-14">
+<path d="M -4.359375 -2.296875 C -4.359375 -2.828125 -4.242188 -3.21875 -4.015625 -3.46875 C -3.785156 -3.71875 -3.421875 -3.84375 -2.921875 -3.84375 L 0 -3.84375 L 0 -3.328125 L -0.609375 -3.1875 L -0.609375 -3.15625 C -0.367188 -2.96875 -0.191406 -2.769531 -0.078125 -2.5625 C 0.0234375 -2.363281 0.078125 -2.082031 0.078125 -1.71875 C 0.078125 -1.332031 -0.0195312 -1.007812 -0.21875 -0.75 C -0.425781 -0.5 -0.75 -0.375 -1.1875 -0.375 C -1.613281 -0.375 -1.941406 -0.539062 -2.171875 -0.875 C -2.410156 -1.207031 -2.539062 -1.722656 -2.5625 -2.421875 L -2.578125 -3.15625 L -2.84375 -3.15625 C -3.195312 -3.15625 -3.441406 -3.078125 -3.578125 -2.921875 C -3.722656 -2.765625 -3.796875 -2.546875 -3.796875 -2.265625 C -3.796875 -2.035156 -3.757812 -1.816406 -3.6875 -1.609375 C -3.625 -1.410156 -3.550781 -1.226562 -3.46875 -1.0625 L -3.984375 -0.84375 C -4.085938 -1.03125 -4.175781 -1.25 -4.25 -1.5 C -4.320312 -1.757812 -4.359375 -2.023438 -4.359375 -2.296875 Z M -2.078125 -2.515625 C -2.054688 -1.984375 -1.96875 -1.613281 -1.8125 -1.40625 C -1.664062 -1.195312 -1.457031 -1.09375 -1.1875 -1.09375 C -0.945312 -1.09375 -0.769531 -1.164062 -0.65625 -1.3125 C -0.539062 -1.457031 -0.484375 -1.644531 -0.484375 -1.875 C -0.484375 -2.238281 -0.582031 -2.539062 -0.78125 -2.78125 C -0.988281 -3.019531 -1.300781 -3.140625 -1.71875 -3.140625 L -2.09375 -3.140625 Z M -2.078125 -2.515625 "/>
+</g>
+<g id="glyph-1-15">
+<path d="M -6.078125 -2.578125 L -4.546875 -2.421875 L -4.96875 -3.953125 L -4.234375 -4.0625 L -4.125 -2.59375 L -2.859375 -3.546875 L -2.484375 -2.859375 L -3.875 -2.171875 L -2.484375 -1.5625 L -2.859375 -0.84375 L -4.125 -1.78125 L -4.234375 -0.328125 L -4.96875 -0.4375 L -4.546875 -1.953125 L -6.078125 -1.796875 Z M -6.078125 -2.578125 "/>
+</g>
+<g id="glyph-1-16">
+<path d="M -2.90625 -1.375 C -2.820312 -1.375 -2.707031 -1.367188 -2.5625 -1.359375 C -2.425781 -1.359375 -2.304688 -1.351562 -2.203125 -1.34375 L -2.203125 -1.375 C -2.242188 -1.40625 -2.304688 -1.453125 -2.390625 -1.515625 C -2.472656 -1.578125 -2.554688 -1.640625 -2.640625 -1.703125 C -2.722656 -1.773438 -2.789062 -1.835938 -2.84375 -1.890625 L -4.28125 -3.25 L -4.28125 -4.078125 L -2.453125 -2.34375 L 0 -4.203125 L 0 -3.359375 L -2 -1.859375 L -1.578125 -1.375 L 0 -1.375 L 0 -0.6875 L -6.078125 -0.6875 L -6.078125 -1.375 Z M -2.90625 -1.375 "/>
+</g>
+<g id="glyph-2-0">
+<path d="M 2.84375 0 L 2.15625 0 L 2.15625 -3.984375 C 2.15625 -4.222656 2.15625 -4.410156 2.15625 -4.546875 C 2.164062 -4.679688 2.175781 -4.820312 2.1875 -4.96875 C 2.101562 -4.882812 2.023438 -4.8125 1.953125 -4.75 C 1.878906 -4.695312 1.789062 -4.625 1.6875 -4.53125 L 1.078125 -4.046875 L 0.71875 -4.515625 L 2.25 -5.71875 L 2.84375 -5.71875 Z M 2.84375 0 "/>
+</g>
+<g id="glyph-2-1">
+<path d="M 4.1875 -2.859375 C 4.1875 -2.242188 4.117188 -1.71875 3.984375 -1.28125 C 3.859375 -0.84375 3.65625 -0.503906 3.375 -0.265625 C 3.101562 -0.0351562 2.738281 0.078125 2.28125 0.078125 C 1.632812 0.078125 1.15625 -0.179688 0.84375 -0.703125 C 0.539062 -1.222656 0.390625 -1.941406 0.390625 -2.859375 C 0.390625 -3.484375 0.453125 -4.015625 0.578125 -4.453125 C 0.703125 -4.890625 0.898438 -5.222656 1.171875 -5.453125 C 1.453125 -5.679688 1.820312 -5.796875 2.28125 -5.796875 C 2.914062 -5.796875 3.390625 -5.535156 3.703125 -5.015625 C 4.023438 -4.503906 4.1875 -3.785156 4.1875 -2.859375 Z M 1.09375 -2.859375 C 1.09375 -2.078125 1.179688 -1.488281 1.359375 -1.09375 C 1.535156 -0.707031 1.84375 -0.515625 2.28125 -0.515625 C 2.707031 -0.515625 3.007812 -0.707031 3.1875 -1.09375 C 3.375 -1.488281 3.46875 -2.078125 3.46875 -2.859375 C 3.46875 -3.640625 3.375 -4.222656 3.1875 -4.609375 C 3.007812 -5.003906 2.707031 -5.203125 2.28125 -5.203125 C 1.84375 -5.203125 1.535156 -5.003906 1.359375 -4.609375 C 1.179688 -4.222656 1.09375 -3.640625 1.09375 -2.859375 Z M 1.09375 -2.859375 "/>
+</g>
+<g id="glyph-3-0">
+<path d="M -1.90625 -5.015625 C -1.269531 -5.015625 -0.773438 -4.785156 -0.421875 -4.328125 C -0.078125 -3.867188 0.09375 -3.25 0.09375 -2.46875 C 0.09375 -2.070312 0.0625 -1.703125 0 -1.359375 C -0.0507812 -1.015625 -0.128906 -0.734375 -0.234375 -0.515625 L -1.09375 -0.515625 C -0.988281 -0.753906 -0.894531 -1.050781 -0.8125 -1.40625 C -0.726562 -1.757812 -0.6875 -2.128906 -0.6875 -2.515625 C -0.6875 -3.046875 -0.785156 -3.445312 -0.984375 -3.71875 C -1.191406 -3.988281 -1.472656 -4.125 -1.828125 -4.125 C -2.066406 -4.125 -2.265625 -4.070312 -2.421875 -3.96875 C -2.578125 -3.863281 -2.722656 -3.691406 -2.859375 -3.453125 C -2.992188 -3.210938 -3.140625 -2.875 -3.296875 -2.4375 C -3.515625 -1.832031 -3.785156 -1.375 -4.109375 -1.0625 C -4.429688 -0.75 -4.867188 -0.59375 -5.421875 -0.59375 C -5.796875 -0.59375 -6.117188 -0.691406 -6.390625 -0.890625 C -6.660156 -1.085938 -6.867188 -1.351562 -7.015625 -1.6875 C -7.160156 -2.03125 -7.234375 -2.425781 -7.234375 -2.875 C -7.234375 -3.269531 -7.195312 -3.628906 -7.125 -3.953125 C -7.050781 -4.285156 -6.957031 -4.582031 -6.84375 -4.84375 L -6.0625 -4.5625 C -6.175781 -4.320312 -6.269531 -4.054688 -6.34375 -3.765625 C -6.414062 -3.472656 -6.453125 -3.171875 -6.453125 -2.859375 C -6.453125 -2.410156 -6.351562 -2.070312 -6.15625 -1.84375 C -5.96875 -1.625 -5.71875 -1.515625 -5.40625 -1.515625 C -5.164062 -1.515625 -4.960938 -1.5625 -4.796875 -1.65625 C -4.640625 -1.757812 -4.5 -1.921875 -4.375 -2.140625 C -4.25 -2.367188 -4.113281 -2.675781 -3.96875 -3.0625 C -3.8125 -3.488281 -3.644531 -3.84375 -3.46875 -4.125 C -3.289062 -4.414062 -3.078125 -4.632812 -2.828125 -4.78125 C -2.585938 -4.9375 -2.28125 -5.015625 -1.90625 -5.015625 Z M -1.90625 -5.015625 "/>
+</g>
+<g id="glyph-3-1">
+<path d="M 0 -1.734375 L 0 -0.84375 L -7.59375 -0.84375 L -7.59375 -1.734375 Z M 0 -1.734375 "/>
+</g>
+<g id="glyph-3-2">
+<path d="M -2.6875 -5.515625 C -1.800781 -5.515625 -1.113281 -5.285156 -0.625 -4.828125 C -0.144531 -4.378906 0.09375 -3.773438 0.09375 -3.015625 C 0.09375 -2.535156 -0.0078125 -2.109375 -0.21875 -1.734375 C -0.4375 -1.367188 -0.753906 -1.078125 -1.171875 -0.859375 C -1.585938 -0.648438 -2.09375 -0.546875 -2.6875 -0.546875 C -3.570312 -0.546875 -4.253906 -0.769531 -4.734375 -1.21875 C -5.210938 -1.664062 -5.453125 -2.273438 -5.453125 -3.046875 C -5.453125 -3.523438 -5.34375 -3.945312 -5.125 -4.3125 C -4.914062 -4.6875 -4.601562 -4.976562 -4.1875 -5.1875 C -3.78125 -5.40625 -3.28125 -5.515625 -2.6875 -5.515625 Z M -2.6875 -1.453125 C -2.050781 -1.453125 -1.546875 -1.578125 -1.171875 -1.828125 C -0.804688 -2.078125 -0.625 -2.476562 -0.625 -3.03125 C -0.625 -3.570312 -0.804688 -3.96875 -1.171875 -4.21875 C -1.546875 -4.46875 -2.050781 -4.59375 -2.6875 -4.59375 C -3.320312 -4.59375 -3.816406 -4.46875 -4.171875 -4.21875 C -4.535156 -3.96875 -4.71875 -3.566406 -4.71875 -3.015625 C -4.71875 -2.472656 -4.535156 -2.078125 -4.171875 -1.828125 C -3.816406 -1.578125 -3.320312 -1.453125 -2.6875 -1.453125 Z M -2.6875 -1.453125 "/>
+</g>
+<g id="glyph-3-3">
+<path d="M -3.03125 -4.3125 C -3.300781 -4.226562 -3.566406 -4.148438 -3.828125 -4.078125 C -4.097656 -4.015625 -4.304688 -3.96875 -4.453125 -3.9375 L -4.453125 -3.90625 C -4.304688 -3.875 -4.097656 -3.828125 -3.828125 -3.765625 C -3.566406 -3.710938 -3.296875 -3.640625 -3.015625 -3.546875 L -0.015625 -2.578125 L -0.015625 -1.578125 L -5.375 -0.109375 L -5.375 -1.015625 L -2.515625 -1.765625 C -2.222656 -1.835938 -1.929688 -1.90625 -1.640625 -1.96875 C -1.347656 -2.03125 -1.101562 -2.078125 -0.90625 -2.109375 L -0.90625 -2.15625 C -1.019531 -2.175781 -1.160156 -2.203125 -1.328125 -2.234375 C -1.492188 -2.273438 -1.664062 -2.316406 -1.84375 -2.359375 C -2.03125 -2.410156 -2.195312 -2.460938 -2.34375 -2.515625 L -5.375 -3.453125 L -5.375 -4.421875 L -2.34375 -5.34375 C -2.125 -5.414062 -1.878906 -5.484375 -1.609375 -5.546875 C -1.335938 -5.617188 -1.109375 -5.671875 -0.921875 -5.703125 L -0.921875 -5.734375 C -1.085938 -5.753906 -1.316406 -5.800781 -1.609375 -5.875 C -1.898438 -5.945312 -2.203125 -6.019531 -2.515625 -6.09375 L -5.375 -6.84375 L -5.375 -7.75 L -0.015625 -6.265625 L -0.015625 -5.234375 Z M -3.03125 -4.3125 "/>
+</g>
+<g id="glyph-3-4">
+<path d="M 0.09375 -2.75 C 0.09375 -2.082031 -0.132812 -1.546875 -0.59375 -1.140625 C -1.0625 -0.742188 -1.753906 -0.546875 -2.671875 -0.546875 C -3.585938 -0.546875 -4.28125 -0.75 -4.75 -1.15625 C -5.21875 -1.5625 -5.453125 -2.097656 -5.453125 -2.765625 C -5.453125 -3.171875 -5.375 -3.503906 -5.21875 -3.765625 C -5.070312 -4.035156 -4.890625 -4.253906 -4.671875 -4.421875 L -4.671875 -4.484375 C -4.753906 -4.472656 -4.878906 -4.457031 -5.046875 -4.4375 C -5.222656 -4.425781 -5.359375 -4.421875 -5.453125 -4.421875 L -7.59375 -4.421875 L -7.59375 -5.296875 L 0 -5.296875 L 0 -4.59375 L -0.71875 -4.453125 L -0.71875 -4.421875 C -0.488281 -4.265625 -0.296875 -4.050781 -0.140625 -3.78125 C 0.015625 -3.507812 0.09375 -3.164062 0.09375 -2.75 Z M -0.625 -2.890625 C -0.625 -3.453125 -0.78125 -3.847656 -1.09375 -4.078125 C -1.40625 -4.316406 -1.875 -4.4375 -2.5 -4.4375 L -2.65625 -4.4375 C -3.320312 -4.4375 -3.832031 -4.320312 -4.1875 -4.09375 C -4.550781 -3.875 -4.734375 -3.46875 -4.734375 -2.875 C -4.734375 -2.40625 -4.539062 -2.050781 -4.15625 -1.8125 C -3.78125 -1.570312 -3.28125 -1.453125 -2.65625 -1.453125 C -2.007812 -1.453125 -1.507812 -1.570312 -1.15625 -1.8125 C -0.800781 -2.050781 -0.625 -2.410156 -0.625 -2.890625 Z M -0.625 -2.890625 "/>
+</g>
+<g id="glyph-3-5">
+<path d="M -5.453125 -3.4375 C -5.453125 -4.070312 -5.296875 -4.550781 -4.984375 -4.875 C -4.679688 -5.207031 -4.179688 -5.375 -3.484375 -5.375 L 0 -5.375 L 0 -4.5 L -3.4375 -4.5 C -4.289062 -4.5 -4.71875 -4.097656 -4.71875 -3.296875 C -4.71875 -2.703125 -4.550781 -2.289062 -4.21875 -2.0625 C -3.882812 -1.84375 -3.40625 -1.734375 -2.78125 -1.734375 L 0 -1.734375 L 0 -0.84375 L -5.359375 -0.84375 L -5.359375 -1.5625 L -4.625 -1.6875 L -4.625 -1.734375 C -4.90625 -1.910156 -5.113281 -2.148438 -5.25 -2.453125 C -5.382812 -2.765625 -5.453125 -3.09375 -5.453125 -3.4375 Z M -5.453125 -3.4375 "/>
+</g>
+<g id="glyph-3-6">
+</g>
+<g id="glyph-3-7">
+<path d="M 0 -2.03125 L -5.359375 0 L -5.359375 -0.9375 L -2.203125 -2.078125 C -2.054688 -2.128906 -1.890625 -2.1875 -1.703125 -2.25 C -1.523438 -2.3125 -1.351562 -2.363281 -1.1875 -2.40625 C -1.03125 -2.457031 -0.894531 -2.492188 -0.78125 -2.515625 L -0.78125 -2.546875 C -0.894531 -2.578125 -1.035156 -2.613281 -1.203125 -2.65625 C -1.367188 -2.707031 -1.539062 -2.765625 -1.71875 -2.828125 C -1.894531 -2.898438 -2.054688 -2.957031 -2.203125 -3 L -5.359375 -4.140625 L -5.359375 -5.078125 L 0 -3.046875 Z M 0 -2.03125 "/>
+</g>
+<g id="glyph-3-8">
+<path d="M -5.453125 -2.921875 C -5.453125 -3.378906 -5.351562 -3.769531 -5.15625 -4.09375 C -4.957031 -4.425781 -4.675781 -4.679688 -4.3125 -4.859375 C -3.945312 -5.035156 -3.523438 -5.125 -3.046875 -5.125 L -2.515625 -5.125 L -2.515625 -1.453125 C -1.898438 -1.472656 -1.4375 -1.628906 -1.125 -1.921875 C -0.8125 -2.222656 -0.65625 -2.640625 -0.65625 -3.171875 C -0.65625 -3.515625 -0.6875 -3.816406 -0.75 -4.078125 C -0.8125 -4.335938 -0.898438 -4.609375 -1.015625 -4.890625 L -0.25 -4.890625 C -0.125 -4.617188 -0.0351562 -4.347656 0.015625 -4.078125 C 0.0664062 -3.816406 0.09375 -3.5 0.09375 -3.125 C 0.09375 -2.625 -0.00390625 -2.175781 -0.203125 -1.78125 C -0.410156 -1.394531 -0.71875 -1.09375 -1.125 -0.875 C -1.539062 -0.65625 -2.046875 -0.546875 -2.640625 -0.546875 C -3.222656 -0.546875 -3.722656 -0.644531 -4.140625 -0.84375 C -4.566406 -1.039062 -4.890625 -1.316406 -5.109375 -1.671875 C -5.335938 -2.023438 -5.453125 -2.441406 -5.453125 -2.921875 Z M -4.734375 -2.90625 C -4.734375 -2.488281 -4.597656 -2.15625 -4.328125 -1.90625 C -4.066406 -1.664062 -3.691406 -1.523438 -3.203125 -1.484375 L -3.203125 -4.203125 C -3.660156 -4.203125 -4.03125 -4.097656 -4.3125 -3.890625 C -4.59375 -3.679688 -4.734375 -3.351562 -4.734375 -2.90625 Z M -4.734375 -2.90625 "/>
+</g>
+<g id="glyph-3-9">
+<path d="M -5.453125 -3.34375 C -5.453125 -3.445312 -5.445312 -3.554688 -5.4375 -3.671875 C -5.4375 -3.785156 -5.425781 -3.890625 -5.40625 -3.984375 L -4.59375 -3.875 C -4.613281 -3.78125 -4.628906 -3.679688 -4.640625 -3.578125 C -4.648438 -3.484375 -4.65625 -3.390625 -4.65625 -3.296875 C -4.65625 -3.015625 -4.578125 -2.753906 -4.421875 -2.515625 C -4.273438 -2.273438 -4.066406 -2.082031 -3.796875 -1.9375 C -3.535156 -1.800781 -3.222656 -1.734375 -2.859375 -1.734375 L 0 -1.734375 L 0 -0.84375 L -5.359375 -0.84375 L -5.359375 -1.5625 L -4.375 -1.671875 L -4.375 -1.703125 C -4.664062 -1.878906 -4.914062 -2.101562 -5.125 -2.375 C -5.34375 -2.65625 -5.453125 -2.976562 -5.453125 -3.34375 Z M -5.453125 -3.34375 "/>
+</g>
+<g id="glyph-3-10">
+<path d="M -3.578125 -7.203125 C -2.703125 -7.203125 -1.957031 -7.023438 -1.34375 -6.671875 C -0.738281 -6.328125 -0.316406 -5.8125 -0.078125 -5.125 L 1.703125 -6.828125 L 1.703125 -5.546875 L 0.09375 -4.15625 C 0.09375 -4.113281 0.09375 -4.070312 0.09375 -4.03125 C 0.09375 -3.988281 0.09375 -3.945312 0.09375 -3.90625 C 0.09375 -3.164062 -0.0546875 -2.550781 -0.359375 -2.0625 C -0.660156 -1.570312 -1.085938 -1.207031 -1.640625 -0.96875 C -2.203125 -0.726562 -2.851562 -0.609375 -3.59375 -0.609375 C -4.320312 -0.609375 -4.957031 -0.726562 -5.5 -0.96875 C -6.050781 -1.207031 -6.476562 -1.570312 -6.78125 -2.0625 C -7.09375 -2.550781 -7.25 -3.171875 -7.25 -3.921875 C -7.25 -4.628906 -7.097656 -5.226562 -6.796875 -5.71875 C -6.492188 -6.207031 -6.066406 -6.578125 -5.515625 -6.828125 C -4.960938 -7.078125 -4.316406 -7.203125 -3.578125 -7.203125 Z M -3.578125 -1.5625 C -2.679688 -1.5625 -1.972656 -1.75 -1.453125 -2.125 C -0.941406 -2.507812 -0.6875 -3.101562 -0.6875 -3.90625 C -0.6875 -4.71875 -0.941406 -5.3125 -1.453125 -5.6875 C -1.972656 -6.0625 -2.679688 -6.25 -3.578125 -6.25 C -4.484375 -6.25 -5.1875 -6.0625 -5.6875 -5.6875 C -6.195312 -5.3125 -6.453125 -4.722656 -6.453125 -3.921875 C -6.453125 -3.109375 -6.195312 -2.507812 -5.6875 -2.125 C -5.1875 -1.75 -4.484375 -1.5625 -3.578125 -1.5625 Z M -3.578125 -1.5625 "/>
+</g>
+<g id="glyph-3-11">
+<path d="M -5.453125 -6.734375 C -5.453125 -7.335938 -5.296875 -7.789062 -4.984375 -8.09375 C -4.679688 -8.394531 -4.179688 -8.546875 -3.484375 -8.546875 L 0 -8.546875 L 0 -7.671875 L -3.453125 -7.671875 C -4.296875 -7.671875 -4.71875 -7.304688 -4.71875 -6.578125 C -4.71875 -6.054688 -4.566406 -5.679688 -4.265625 -5.453125 C -3.960938 -5.234375 -3.523438 -5.125 -2.953125 -5.125 L 0 -5.125 L 0 -4.265625 L -3.453125 -4.265625 C -4.296875 -4.265625 -4.71875 -3.894531 -4.71875 -3.15625 C -4.71875 -2.613281 -4.550781 -2.238281 -4.21875 -2.03125 C -3.882812 -1.832031 -3.40625 -1.734375 -2.78125 -1.734375 L 0 -1.734375 L 0 -0.84375 L -5.359375 -0.84375 L -5.359375 -1.5625 L -4.625 -1.6875 L -4.625 -1.734375 C -4.90625 -1.898438 -5.113281 -2.125 -5.25 -2.40625 C -5.382812 -2.695312 -5.453125 -3 -5.453125 -3.3125 C -5.453125 -4.15625 -5.15625 -4.703125 -4.5625 -4.953125 L -4.5625 -5.015625 C -4.863281 -5.191406 -5.085938 -5.429688 -5.234375 -5.734375 C -5.378906 -6.046875 -5.453125 -6.378906 -5.453125 -6.734375 Z M -5.453125 -6.734375 "/>
+</g>
+<g id="glyph-3-12">
+<path d="M -5.359375 -5.328125 L 0 -5.328125 L 0 -4.609375 L -0.703125 -4.484375 L -0.703125 -4.4375 C -0.429688 -4.269531 -0.226562 -4.03125 -0.09375 -3.71875 C 0.03125 -3.414062 0.09375 -3.085938 0.09375 -2.734375 C 0.09375 -2.085938 -0.0546875 -1.601562 -0.359375 -1.28125 C -0.671875 -0.957031 -1.164062 -0.796875 -1.84375 -0.796875 L -5.359375 -0.796875 L -5.359375 -1.6875 L -1.90625 -1.6875 C -1.050781 -1.6875 -0.625 -2.082031 -0.625 -2.875 C -0.625 -3.46875 -0.789062 -3.878906 -1.125 -4.109375 C -1.457031 -4.335938 -1.9375 -4.453125 -2.5625 -4.453125 L -5.359375 -4.453125 Z M -5.359375 -5.328125 "/>
+</g>
+<g id="glyph-4-0">
+<path d="M 4.71875 -7.171875 C 4.019531 -7.171875 3.484375 -6.910156 3.109375 -6.390625 C 2.742188 -5.867188 2.5625 -5.160156 2.5625 -4.265625 C 2.5625 -3.347656 2.734375 -2.640625 3.078125 -2.140625 C 3.421875 -1.640625 3.96875 -1.390625 4.71875 -1.390625 C 5.070312 -1.390625 5.421875 -1.425781 5.765625 -1.5 C 6.109375 -1.582031 6.488281 -1.695312 6.90625 -1.84375 L 6.90625 -0.328125 C 6.53125 -0.171875 6.15625 -0.0546875 5.78125 0.015625 C 5.414062 0.0859375 5.003906 0.125 4.546875 0.125 C 3.671875 0.125 2.945312 -0.0546875 2.375 -0.421875 C 1.800781 -0.785156 1.378906 -1.296875 1.109375 -1.953125 C 0.835938 -2.617188 0.703125 -3.390625 0.703125 -4.265625 C 0.703125 -5.128906 0.851562 -5.894531 1.15625 -6.5625 C 1.46875 -7.226562 1.921875 -7.75 2.515625 -8.125 C 3.117188 -8.5 3.851562 -8.6875 4.71875 -8.6875 C 5.144531 -8.6875 5.570312 -8.628906 6 -8.515625 C 6.425781 -8.410156 6.832031 -8.269531 7.21875 -8.09375 L 6.640625 -6.609375 C 6.316406 -6.765625 5.992188 -6.894531 5.671875 -7 C 5.347656 -7.113281 5.03125 -7.171875 4.71875 -7.171875 Z M 4.71875 -7.171875 "/>
+</g>
+<g id="glyph-4-1">
+<path d="M 6.890625 -3.28125 C 6.890625 -2.195312 6.601562 -1.359375 6.03125 -0.765625 C 5.457031 -0.171875 4.679688 0.125 3.703125 0.125 C 3.085938 0.125 2.539062 -0.00390625 2.0625 -0.265625 C 1.59375 -0.535156 1.222656 -0.925781 0.953125 -1.4375 C 0.679688 -1.945312 0.546875 -2.5625 0.546875 -3.28125 C 0.546875 -4.375 0.828125 -5.210938 1.390625 -5.796875 C 1.960938 -6.378906 2.742188 -6.671875 3.734375 -6.671875 C 4.347656 -6.671875 4.890625 -6.535156 5.359375 -6.265625 C 5.835938 -6.003906 6.210938 -5.625 6.484375 -5.125 C 6.753906 -4.625 6.890625 -4.007812 6.890625 -3.28125 Z M 2.359375 -3.28125 C 2.359375 -2.632812 2.460938 -2.144531 2.671875 -1.8125 C 2.890625 -1.476562 3.238281 -1.3125 3.71875 -1.3125 C 4.1875 -1.3125 4.523438 -1.476562 4.734375 -1.8125 C 4.953125 -2.144531 5.0625 -2.632812 5.0625 -3.28125 C 5.0625 -3.9375 4.953125 -4.425781 4.734375 -4.75 C 4.523438 -5.070312 4.179688 -5.234375 3.703125 -5.234375 C 3.234375 -5.234375 2.890625 -5.070312 2.671875 -4.75 C 2.460938 -4.425781 2.359375 -3.9375 2.359375 -3.28125 Z M 2.359375 -3.28125 "/>
+</g>
+<g id="glyph-4-2">
+<path d="M 8.625 -6.671875 C 9.375 -6.671875 9.9375 -6.476562 10.3125 -6.09375 C 10.695312 -5.71875 10.890625 -5.109375 10.890625 -4.265625 L 10.890625 0 L 9.09375 0 L 9.09375 -3.828125 C 9.09375 -4.773438 8.765625 -5.25 8.109375 -5.25 C 7.640625 -5.25 7.300781 -5.078125 7.09375 -4.734375 C 6.894531 -4.398438 6.796875 -3.914062 6.796875 -3.28125 L 6.796875 0 L 5.015625 0 L 5.015625 -3.828125 C 5.015625 -4.773438 4.6875 -5.25 4.03125 -5.25 C 3.53125 -5.25 3.1875 -5.0625 3 -4.6875 C 2.8125 -4.3125 2.71875 -3.773438 2.71875 -3.078125 L 2.71875 0 L 0.9375 0 L 0.9375 -6.546875 L 2.296875 -6.546875 L 2.546875 -5.71875 L 2.640625 -5.71875 C 2.835938 -6.050781 3.109375 -6.289062 3.453125 -6.4375 C 3.804688 -6.59375 4.171875 -6.671875 4.546875 -6.671875 C 5.023438 -6.671875 5.429688 -6.59375 5.765625 -6.4375 C 6.109375 -6.28125 6.367188 -6.039062 6.546875 -5.71875 L 6.703125 -5.71875 C 6.898438 -6.050781 7.175781 -6.289062 7.53125 -6.4375 C 7.882812 -6.59375 8.25 -6.671875 8.625 -6.671875 Z M 8.625 -6.671875 "/>
+</g>
+<g id="glyph-4-3">
+<path d="M 4.578125 -6.671875 C 5.316406 -6.671875 5.914062 -6.382812 6.375 -5.8125 C 6.832031 -5.238281 7.0625 -4.394531 7.0625 -3.28125 C 7.0625 -2.175781 6.820312 -1.332031 6.34375 -0.75 C 5.875 -0.164062 5.269531 0.125 4.53125 0.125 C 4.0625 0.125 3.6875 0.0390625 3.40625 -0.125 C 3.125 -0.300781 2.894531 -0.5 2.71875 -0.71875 L 2.625 -0.71875 C 2.6875 -0.382812 2.71875 -0.0664062 2.71875 0.234375 L 2.71875 2.875 L 0.9375 2.875 L 0.9375 -6.546875 L 2.390625 -6.546875 L 2.640625 -5.703125 L 2.71875 -5.703125 C 2.894531 -5.960938 3.128906 -6.1875 3.421875 -6.375 C 3.722656 -6.570312 4.109375 -6.671875 4.578125 -6.671875 Z M 4.015625 -5.25 C 3.546875 -5.25 3.21875 -5.101562 3.03125 -4.8125 C 2.84375 -4.519531 2.738281 -4.078125 2.71875 -3.484375 L 2.71875 -3.296875 C 2.71875 -2.671875 2.8125 -2.1875 3 -1.84375 C 3.1875 -1.5 3.53125 -1.328125 4.03125 -1.328125 C 4.4375 -1.328125 4.738281 -1.5 4.9375 -1.84375 C 5.132812 -2.1875 5.234375 -2.675781 5.234375 -3.3125 C 5.234375 -4.601562 4.828125 -5.25 4.015625 -5.25 Z M 4.015625 -5.25 "/>
+</g>
+<g id="glyph-4-4">
+<path d="M 3.625 -6.6875 C 4.5 -6.6875 5.171875 -6.492188 5.640625 -6.109375 C 6.109375 -5.734375 6.34375 -5.15625 6.34375 -4.375 L 6.34375 0 L 5.09375 0 L 4.75 -0.890625 L 4.703125 -0.890625 C 4.421875 -0.535156 4.125 -0.273438 3.8125 -0.109375 C 3.5 0.046875 3.070312 0.125 2.53125 0.125 C 1.945312 0.125 1.460938 -0.046875 1.078125 -0.390625 C 0.691406 -0.734375 0.5 -1.253906 0.5 -1.953125 C 0.5 -2.648438 0.742188 -3.164062 1.234375 -3.5 C 1.722656 -3.832031 2.457031 -4.015625 3.4375 -4.046875 L 4.578125 -4.078125 L 4.578125 -4.375 C 4.578125 -4.71875 4.484375 -4.96875 4.296875 -5.125 C 4.117188 -5.28125 3.867188 -5.359375 3.546875 -5.359375 C 3.234375 -5.359375 2.921875 -5.3125 2.609375 -5.21875 C 2.304688 -5.132812 2.003906 -5.023438 1.703125 -4.890625 L 1.109375 -6.09375 C 1.460938 -6.28125 1.851562 -6.425781 2.28125 -6.53125 C 2.707031 -6.632812 3.15625 -6.6875 3.625 -6.6875 Z M 3.875 -3.015625 C 3.300781 -2.992188 2.898438 -2.882812 2.671875 -2.6875 C 2.453125 -2.5 2.34375 -2.25 2.34375 -1.9375 C 2.34375 -1.664062 2.421875 -1.472656 2.578125 -1.359375 C 2.734375 -1.242188 2.941406 -1.1875 3.203125 -1.1875 C 3.585938 -1.1875 3.910156 -1.300781 4.171875 -1.53125 C 4.441406 -1.757812 4.578125 -2.082031 4.578125 -2.5 L 4.578125 -3.03125 Z M 3.875 -3.015625 "/>
+</g>
+<g id="glyph-4-5">
+<path d="M 4.59375 -6.671875 C 4.6875 -6.671875 4.789062 -6.664062 4.90625 -6.65625 C 5.03125 -6.644531 5.128906 -6.632812 5.203125 -6.625 L 5.0625 -4.9375 C 5.007812 -4.957031 4.925781 -4.972656 4.8125 -4.984375 C 4.707031 -4.992188 4.613281 -5 4.53125 -5 C 4.226562 -5 3.9375 -4.945312 3.65625 -4.84375 C 3.375 -4.738281 3.144531 -4.5625 2.96875 -4.3125 C 2.800781 -4.070312 2.71875 -3.75 2.71875 -3.34375 L 2.71875 0 L 0.9375 0 L 0.9375 -6.546875 L 2.296875 -6.546875 L 2.5625 -5.453125 L 2.640625 -5.453125 C 2.828125 -5.785156 3.085938 -6.070312 3.421875 -6.3125 C 3.765625 -6.550781 4.15625 -6.671875 4.59375 -6.671875 Z M 4.59375 -6.671875 "/>
+</g>
+<g id="glyph-4-6">
+<path d="M 1.84375 -9.125 C 2.101562 -9.125 2.328125 -9.0625 2.515625 -8.9375 C 2.710938 -8.8125 2.8125 -8.582031 2.8125 -8.25 C 2.8125 -7.914062 2.710938 -7.6875 2.515625 -7.5625 C 2.328125 -7.4375 2.101562 -7.375 1.84375 -7.375 C 1.5625 -7.375 1.328125 -7.4375 1.140625 -7.5625 C 0.953125 -7.6875 0.859375 -7.914062 0.859375 -8.25 C 0.859375 -8.582031 0.953125 -8.8125 1.140625 -8.9375 C 1.328125 -9.0625 1.5625 -9.125 1.84375 -9.125 Z M 2.71875 -6.546875 L 2.71875 0 L 0.9375 0 L 0.9375 -6.546875 Z M 2.71875 -6.546875 "/>
+</g>
+<g id="glyph-4-7">
+<path d="M 5.515625 -1.9375 C 5.515625 -1.28125 5.28125 -0.769531 4.8125 -0.40625 C 4.34375 -0.0507812 3.644531 0.125 2.71875 0.125 C 2.257812 0.125 1.863281 0.09375 1.53125 0.03125 C 1.207031 -0.03125 0.878906 -0.128906 0.546875 -0.265625 L 0.546875 -1.734375 C 0.898438 -1.578125 1.28125 -1.445312 1.6875 -1.34375 C 2.09375 -1.238281 2.453125 -1.1875 2.765625 -1.1875 C 3.117188 -1.1875 3.367188 -1.238281 3.515625 -1.34375 C 3.671875 -1.445312 3.75 -1.582031 3.75 -1.75 C 3.75 -1.863281 3.71875 -1.960938 3.65625 -2.046875 C 3.59375 -2.140625 3.460938 -2.238281 3.265625 -2.34375 C 3.066406 -2.457031 2.753906 -2.601562 2.328125 -2.78125 C 1.921875 -2.957031 1.582031 -3.128906 1.3125 -3.296875 C 1.050781 -3.472656 0.859375 -3.679688 0.734375 -3.921875 C 0.609375 -4.171875 0.546875 -4.476562 0.546875 -4.84375 C 0.546875 -5.457031 0.78125 -5.914062 1.25 -6.21875 C 1.71875 -6.519531 2.34375 -6.671875 3.125 -6.671875 C 3.539062 -6.671875 3.929688 -6.628906 4.296875 -6.546875 C 4.660156 -6.472656 5.039062 -6.34375 5.4375 -6.15625 L 4.890625 -4.875 C 4.578125 -5.007812 4.273438 -5.125 3.984375 -5.21875 C 3.691406 -5.3125 3.398438 -5.359375 3.109375 -5.359375 C 2.578125 -5.359375 2.3125 -5.210938 2.3125 -4.921875 C 2.3125 -4.816406 2.34375 -4.722656 2.40625 -4.640625 C 2.476562 -4.554688 2.613281 -4.460938 2.8125 -4.359375 C 3.007812 -4.265625 3.300781 -4.140625 3.6875 -3.984375 C 4.0625 -3.828125 4.382812 -3.664062 4.65625 -3.5 C 4.925781 -3.34375 5.132812 -3.140625 5.28125 -2.890625 C 5.4375 -2.648438 5.515625 -2.332031 5.515625 -1.9375 Z M 5.515625 -1.9375 "/>
+</g>
+<g id="glyph-4-8">
+<path d="M 4.65625 -6.671875 C 5.363281 -6.671875 5.925781 -6.476562 6.34375 -6.09375 C 6.769531 -5.71875 6.984375 -5.109375 6.984375 -4.265625 L 6.984375 0 L 5.203125 0 L 5.203125 -3.828125 C 5.203125 -4.296875 5.113281 -4.648438 4.9375 -4.890625 C 4.769531 -5.128906 4.503906 -5.25 4.140625 -5.25 C 3.597656 -5.25 3.222656 -5.0625 3.015625 -4.6875 C 2.816406 -4.3125 2.71875 -3.773438 2.71875 -3.078125 L 2.71875 0 L 0.9375 0 L 0.9375 -6.546875 L 2.296875 -6.546875 L 2.546875 -5.71875 L 2.640625 -5.71875 C 2.847656 -6.050781 3.132812 -6.289062 3.5 -6.4375 C 3.863281 -6.59375 4.25 -6.671875 4.65625 -6.671875 Z M 4.65625 -6.671875 "/>
+</g>
+<g id="glyph-4-9">
+</g>
+<g id="glyph-4-10">
+<path d="M 3.015625 0.125 C 2.285156 0.125 1.691406 -0.160156 1.234375 -0.734375 C 0.773438 -1.304688 0.546875 -2.148438 0.546875 -3.265625 C 0.546875 -4.378906 0.773438 -5.222656 1.234375 -5.796875 C 1.703125 -6.378906 2.3125 -6.671875 3.0625 -6.671875 C 3.53125 -6.671875 3.914062 -6.578125 4.21875 -6.390625 C 4.53125 -6.210938 4.769531 -5.988281 4.9375 -5.71875 L 5 -5.71875 C 4.976562 -5.84375 4.953125 -6.023438 4.921875 -6.265625 C 4.890625 -6.515625 4.875 -6.765625 4.875 -7.015625 L 4.875 -9.125 L 6.65625 -9.125 L 6.65625 0 L 5.296875 0 L 4.9375 -0.859375 L 4.875 -0.859375 C 4.695312 -0.578125 4.457031 -0.34375 4.15625 -0.15625 C 3.863281 0.03125 3.484375 0.125 3.015625 0.125 Z M 3.640625 -1.3125 C 4.128906 -1.3125 4.472656 -1.457031 4.671875 -1.75 C 4.878906 -2.039062 4.984375 -2.476562 4.984375 -3.0625 L 4.984375 -3.25 C 4.984375 -3.894531 4.882812 -4.382812 4.6875 -4.71875 C 4.5 -5.050781 4.140625 -5.21875 3.609375 -5.21875 C 3.222656 -5.21875 2.914062 -5.046875 2.6875 -4.703125 C 2.46875 -4.367188 2.359375 -3.878906 2.359375 -3.234375 C 2.359375 -2.597656 2.46875 -2.117188 2.6875 -1.796875 C 2.914062 -1.472656 3.234375 -1.3125 3.640625 -1.3125 Z M 3.640625 -1.3125 "/>
+</g>
+<g id="glyph-4-11">
+<path d="M 3.640625 -6.671875 C 4.535156 -6.671875 5.25 -6.410156 5.78125 -5.890625 C 6.3125 -5.378906 6.578125 -4.648438 6.578125 -3.703125 L 6.578125 -2.828125 L 2.359375 -2.828125 C 2.367188 -2.328125 2.515625 -1.929688 2.796875 -1.640625 C 3.085938 -1.359375 3.484375 -1.21875 3.984375 -1.21875 C 4.410156 -1.21875 4.796875 -1.257812 5.140625 -1.34375 C 5.484375 -1.425781 5.835938 -1.554688 6.203125 -1.734375 L 6.203125 -0.34375 C 5.878906 -0.1875 5.539062 -0.0703125 5.1875 0 C 4.832031 0.0820312 4.40625 0.125 3.90625 0.125 C 3.25 0.125 2.664062 0.00390625 2.15625 -0.234375 C 1.65625 -0.484375 1.257812 -0.851562 0.96875 -1.34375 C 0.6875 -1.84375 0.546875 -2.472656 0.546875 -3.234375 C 0.546875 -3.992188 0.671875 -4.628906 0.921875 -5.140625 C 1.179688 -5.648438 1.546875 -6.03125 2.015625 -6.28125 C 2.484375 -6.539062 3.023438 -6.671875 3.640625 -6.671875 Z M 3.640625 -5.40625 C 3.296875 -5.40625 3.007812 -5.289062 2.78125 -5.0625 C 2.5625 -4.84375 2.429688 -4.492188 2.390625 -4.015625 L 4.890625 -4.015625 C 4.890625 -4.421875 4.785156 -4.753906 4.578125 -5.015625 C 4.378906 -5.273438 4.066406 -5.40625 3.640625 -5.40625 Z M 3.640625 -5.40625 "/>
+</g>
+<g id="glyph-4-12">
+<path d="M 0.859375 -8.25 C 0.859375 -8.582031 0.953125 -8.8125 1.140625 -8.9375 C 1.328125 -9.0625 1.5625 -9.125 1.84375 -9.125 C 2.101562 -9.125 2.328125 -9.0625 2.515625 -8.9375 C 2.710938 -8.8125 2.8125 -8.582031 2.8125 -8.25 C 2.8125 -7.914062 2.710938 -7.6875 2.515625 -7.5625 C 2.328125 -7.4375 2.101562 -7.375 1.84375 -7.375 C 1.5625 -7.375 1.328125 -7.4375 1.140625 -7.5625 C 0.953125 -7.6875 0.859375 -7.914062 0.859375 -8.25 Z M 0.40625 2.875 C 0.207031 2.875 0 2.859375 -0.21875 2.828125 C -0.4375 2.804688 -0.617188 2.773438 -0.765625 2.734375 L -0.765625 1.328125 C -0.617188 1.359375 -0.484375 1.382812 -0.359375 1.40625 C -0.234375 1.425781 -0.0859375 1.4375 0.078125 1.4375 C 0.316406 1.4375 0.519531 1.367188 0.6875 1.234375 C 0.851562 1.097656 0.9375 0.832031 0.9375 0.4375 L 0.9375 -6.546875 L 2.71875 -6.546875 L 2.71875 0.703125 C 2.71875 1.109375 2.640625 1.472656 2.484375 1.796875 C 2.335938 2.128906 2.09375 2.390625 1.75 2.578125 C 1.414062 2.773438 0.96875 2.875 0.40625 2.875 Z M 0.40625 2.875 "/>
+</g>
+<g id="glyph-4-13">
+<path d="M 3.0625 -6.671875 C 3.863281 -6.671875 4.492188 -6.351562 4.953125 -5.71875 L 5 -5.71875 L 5.140625 -6.546875 L 6.65625 -6.546875 L 6.65625 0.015625 C 6.65625 0.953125 6.378906 1.660156 5.828125 2.140625 C 5.273438 2.628906 4.460938 2.875 3.390625 2.875 C 2.921875 2.875 2.488281 2.847656 2.09375 2.796875 C 1.695312 2.742188 1.3125 2.644531 0.9375 2.5 L 0.9375 1.0625 C 1.738281 1.40625 2.585938 1.578125 3.484375 1.578125 C 4.410156 1.578125 4.875 1.078125 4.875 0.078125 L 4.875 -0.046875 C 4.875 -0.179688 4.878906 -0.320312 4.890625 -0.46875 C 4.898438 -0.613281 4.910156 -0.742188 4.921875 -0.859375 L 4.875 -0.859375 C 4.644531 -0.515625 4.375 -0.265625 4.0625 -0.109375 C 3.75 0.046875 3.398438 0.125 3.015625 0.125 C 2.234375 0.125 1.625 -0.171875 1.1875 -0.765625 C 0.757812 -1.367188 0.546875 -2.203125 0.546875 -3.265625 C 0.546875 -4.335938 0.769531 -5.171875 1.21875 -5.765625 C 1.664062 -6.367188 2.28125 -6.671875 3.0625 -6.671875 Z M 3.625 -5.21875 C 2.78125 -5.21875 2.359375 -4.554688 2.359375 -3.234375 C 2.359375 -1.929688 2.785156 -1.28125 3.640625 -1.28125 C 4.097656 -1.28125 4.4375 -1.410156 4.65625 -1.671875 C 4.875 -1.929688 4.984375 -2.382812 4.984375 -3.03125 L 4.984375 -3.25 C 4.984375 -3.957031 4.875 -4.460938 4.65625 -4.765625 C 4.445312 -5.066406 4.101562 -5.21875 3.625 -5.21875 Z M 3.625 -5.21875 "/>
+</g>
+<g id="glyph-4-14">
+<path d="M 5.8125 -2.296875 C 5.78125 -2.429688 5.734375 -2.628906 5.671875 -2.890625 C 5.617188 -3.160156 5.554688 -3.445312 5.484375 -3.75 C 5.410156 -4.0625 5.34375 -4.347656 5.28125 -4.609375 C 5.21875 -4.867188 5.171875 -5.0625 5.140625 -5.1875 L 5.09375 -5.1875 C 5.070312 -5.0625 5.03125 -4.867188 4.96875 -4.609375 C 4.914062 -4.347656 4.851562 -4.0625 4.78125 -3.75 C 4.707031 -3.445312 4.632812 -3.160156 4.5625 -2.890625 C 4.5 -2.617188 4.453125 -2.410156 4.421875 -2.265625 L 3.90625 0 L 1.984375 0 L 0.125 -6.546875 L 1.890625 -6.546875 L 2.65625 -3.640625 C 2.707031 -3.441406 2.753906 -3.203125 2.796875 -2.921875 C 2.847656 -2.648438 2.890625 -2.382812 2.921875 -2.125 C 2.960938 -1.863281 2.992188 -1.65625 3.015625 -1.5 L 3.0625 -1.5 C 3.070312 -1.613281 3.085938 -1.765625 3.109375 -1.953125 C 3.128906 -2.140625 3.15625 -2.332031 3.1875 -2.53125 C 3.226562 -2.726562 3.265625 -2.910156 3.296875 -3.078125 C 3.328125 -3.242188 3.347656 -3.351562 3.359375 -3.40625 L 4.15625 -6.546875 L 6.125 -6.546875 L 6.90625 -3.40625 C 6.9375 -3.289062 6.972656 -3.109375 7.015625 -2.859375 C 7.054688 -2.617188 7.09375 -2.367188 7.125 -2.109375 C 7.164062 -1.859375 7.1875 -1.65625 7.1875 -1.5 L 7.234375 -1.5 C 7.253906 -1.632812 7.28125 -1.832031 7.3125 -2.09375 C 7.351562 -2.351562 7.398438 -2.625 7.453125 -2.90625 C 7.503906 -3.195312 7.5625 -3.441406 7.625 -3.640625 L 8.40625 -6.546875 L 10.15625 -6.546875 L 8.265625 0 L 6.328125 0 Z M 5.8125 -2.296875 "/>
+</g>
+<g id="glyph-4-15">
+<path d="M 3.703125 -1.3125 C 3.898438 -1.3125 4.085938 -1.328125 4.265625 -1.359375 C 4.453125 -1.398438 4.640625 -1.453125 4.828125 -1.515625 L 4.828125 -0.1875 C 4.628906 -0.101562 4.390625 -0.03125 4.109375 0.03125 C 3.828125 0.09375 3.519531 0.125 3.1875 0.125 C 2.789062 0.125 2.4375 0.0625 2.125 -0.0625 C 1.820312 -0.195312 1.578125 -0.421875 1.390625 -0.734375 C 1.210938 -1.054688 1.125 -1.492188 1.125 -2.046875 L 1.125 -5.203125 L 0.28125 -5.203125 L 0.28125 -5.96875 L 1.265625 -6.5625 L 1.78125 -7.9375 L 2.921875 -7.9375 L 2.921875 -6.546875 L 4.75 -6.546875 L 4.75 -5.203125 L 2.921875 -5.203125 L 2.921875 -2.046875 C 2.921875 -1.804688 2.988281 -1.625 3.125 -1.5 C 3.269531 -1.375 3.460938 -1.3125 3.703125 -1.3125 Z M 3.703125 -1.3125 "/>
+</g>
+<g id="glyph-4-16">
+<path d="M 2.71875 -7.265625 C 2.71875 -6.941406 2.707031 -6.628906 2.6875 -6.328125 C 2.664062 -6.035156 2.648438 -5.832031 2.640625 -5.71875 L 2.734375 -5.71875 C 2.941406 -6.050781 3.207031 -6.289062 3.53125 -6.4375 C 3.863281 -6.59375 4.226562 -6.671875 4.625 -6.671875 C 5.34375 -6.671875 5.914062 -6.476562 6.34375 -6.09375 C 6.769531 -5.71875 6.984375 -5.109375 6.984375 -4.265625 L 6.984375 0 L 5.203125 0 L 5.203125 -3.828125 C 5.203125 -4.773438 4.847656 -5.25 4.140625 -5.25 C 3.609375 -5.25 3.238281 -5.0625 3.03125 -4.6875 C 2.820312 -4.3125 2.71875 -3.773438 2.71875 -3.078125 L 2.71875 0 L 0.9375 0 L 0.9375 -9.125 L 2.71875 -9.125 Z M 2.71875 -7.265625 "/>
+</g>
+<g id="glyph-4-17">
+<path d="M 6.953125 -6.546875 L 6.953125 0 L 5.578125 0 L 5.34375 -0.84375 L 5.25 -0.84375 C 5.039062 -0.507812 4.753906 -0.265625 4.390625 -0.109375 C 4.023438 0.046875 3.640625 0.125 3.234375 0.125 C 2.523438 0.125 1.957031 -0.0625 1.53125 -0.4375 C 1.113281 -0.820312 0.90625 -1.4375 0.90625 -2.28125 L 0.90625 -6.546875 L 2.6875 -6.546875 L 2.6875 -2.71875 C 2.6875 -2.257812 2.769531 -1.910156 2.9375 -1.671875 C 3.101562 -1.429688 3.375 -1.3125 3.75 -1.3125 C 4.289062 -1.3125 4.660156 -1.492188 4.859375 -1.859375 C 5.054688 -2.234375 5.15625 -2.769531 5.15625 -3.46875 L 5.15625 -6.546875 Z M 6.953125 -6.546875 "/>
+</g>
+<g id="glyph-4-18">
+<path d="M 2.71875 0 L 0.9375 0 L 0.9375 -9.125 L 2.71875 -9.125 Z M 2.71875 0 "/>
+</g>
+</g>
+<clipPath id="clip-0">
+<path clip-rule="nonzero" d="M 53.371094 30.585938 L 643.957031 30.585938 L 643.957031 312.746094 L 53.371094 312.746094 Z M 53.371094 30.585938 "/>
+</clipPath>
+<clipPath id="clip-1">
+<path clip-rule="nonzero" d="M 97 312 L 157 312 L 157 312.746094 L 97 312.746094 Z M 97 312 "/>
+</clipPath>
+<clipPath id="clip-2">
+<path clip-rule="nonzero" d="M 245 231 L 305 231 L 305 312.746094 L 245 312.746094 Z M 245 231 "/>
+</clipPath>
+<clipPath id="clip-3">
+<path clip-rule="nonzero" d="M 392 63 L 453 63 L 453 312.746094 L 392 312.746094 Z M 392 63 "/>
+</clipPath>
+<clipPath id="clip-4">
+<path clip-rule="nonzero" d="M 540 190 L 600 190 L 600 312.746094 L 540 312.746094 Z M 540 190 "/>
+</clipPath>
+</defs>
+<path fill-rule="nonzero" fill="rgb(100%, 100%, 100%)" fill-opacity="1" stroke-width="0.5" stroke-linecap="round" stroke-linejoin="round" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 0.25 0.25 L 647.75 0.25 L 647.75 371.75 L 0.25 371.75 Z M 0.25 0.25 "/>
+<path fill-rule="nonzero" fill="rgb(100%, 100%, 100%)" fill-opacity="1" stroke-width="1" stroke-linecap="round" stroke-linejoin="round" stroke="rgb(51.764706%, 50.980392%, 51.764706%)" stroke-opacity="1" stroke-miterlimit="10" d="M 53.371094 30.585938 L 643.957031 30.585938 L 643.957031 312.746094 L 53.371094 312.746094 Z M 53.371094 30.585938 "/>
+<g clip-path="url(#clip-0)">
+<path fill="none" stroke-width="0.4" stroke-linecap="round" stroke-linejoin="round" stroke="rgb(75.294118%, 75.294118%, 75.294118%)" stroke-opacity="1" stroke-miterlimit="10" d="M 53.371094 312.746094 L 643.957031 312.746094 M 53.371094 242.207031 L 643.957031 242.207031 M 53.371094 171.667969 L 643.957031 171.667969 M 53.371094 101.125 L 643.957031 101.125 M 53.371094 30.585938 L 643.957031 30.585938 "/>
+</g>
+<g clip-path="url(#clip-1)">
+<path fill="none" stroke-width="0.5" stroke-linecap="round" stroke-linejoin="round" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 97.667969 312.746094 L 156.726562 312.746094 Z M 97.667969 312.746094 "/>
+</g>
+<g clip-path="url(#clip-2)">
+<path fill-rule="nonzero" fill="rgb(61.176471%, 61.176471%, 100%)" fill-opacity="1" stroke-width="0.5" stroke-linecap="round" stroke-linejoin="round" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 245.3125 312.746094 L 304.371094 312.746094 L 304.371094 231.375 L 245.3125 231.375 Z M 245.3125 312.746094 "/>
+</g>
+<g clip-path="url(#clip-3)">
+<path fill-rule="nonzero" fill="rgb(61.176471%, 61.176471%, 100%)" fill-opacity="1" stroke-width="0.5" stroke-linecap="round" stroke-linejoin="round" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 392.957031 312.746094 L 452.015625 312.746094 L 452.015625 63.5625 L 392.957031 63.5625 Z M 392.957031 312.746094 "/>
+</g>
+<g clip-path="url(#clip-4)">
+<path fill-rule="nonzero" fill="rgb(61.176471%, 61.176471%, 100%)" fill-opacity="1" stroke-width="0.5" stroke-linecap="round" stroke-linejoin="round" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 540.605469 312.746094 L 599.664062 312.746094 L 599.664062 190.589844 L 540.605469 190.589844 Z M 540.605469 312.746094 "/>
+</g>
+<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
+<use xlink:href="#glyph-0-0" x="125.445741" y="309.489537"/>
+</g>
+<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
+<use xlink:href="#glyph-0-0" x="271.591722" y="228.118118"/>
+<use xlink:href="#glyph-0-1" x="274.591722" y="228.118118"/>
+</g>
+<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
+<use xlink:href="#glyph-0-2" x="416.237704" y="60.304511"/>
+<use xlink:href="#glyph-0-1" x="419.237704" y="60.304511"/>
+<use xlink:href="#glyph-0-3" x="422.237704" y="60.304511"/>
+<use xlink:href="#glyph-0-4" x="425.237704" y="60.304511"/>
+</g>
+<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
+<use xlink:href="#glyph-0-5" x="566.883685" y="187.332101"/>
+<use xlink:href="#glyph-0-1" x="569.883685" y="187.332101"/>
+</g>
+<path fill="none" stroke-width="0.5" stroke-linecap="round" stroke-linejoin="round" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 53.371094 312.746094 L 643.957031 312.746094 M 53.371094 316.996094 L 53.371094 312.746094 M 201.019531 316.996094 L 201.019531 312.746094 M 348.664062 316.996094 L 348.664062 312.746094 M 496.3125 316.996094 L 496.3125 312.746094 M 643.957031 316.996094 L 643.957031 312.746094 "/>
+<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
+<use xlink:href="#glyph-1-0" x="130.047852" y="341.207031"/>
+<use xlink:href="#glyph-1-1" x="130.047852" y="336.207031"/>
+<use xlink:href="#glyph-1-2" x="130.047852" y="331.207031"/>
+<use xlink:href="#glyph-1-3" x="130.047852" y="324.207031"/>
+</g>
+<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
+<use xlink:href="#glyph-1-4" x="277.696289" y="368.207031"/>
+<use xlink:href="#glyph-1-5" x="277.696289" y="363.207031"/>
+<use xlink:href="#glyph-1-6" x="277.696289" y="359.207031"/>
+<use xlink:href="#glyph-1-7" x="277.696289" y="354.207031"/>
+<use xlink:href="#glyph-1-8" x="277.696289" y="351.207031"/>
+<use xlink:href="#glyph-1-9" x="277.696289" y="346.207031"/>
+<use xlink:href="#glyph-1-8" x="277.696289" y="343.207031"/>
+<use xlink:href="#glyph-1-10" x="277.696289" y="338.207031"/>
+<use xlink:href="#glyph-1-11" x="277.696289" y="336.207031"/>
+<use xlink:href="#glyph-1-12" x="277.696289" y="334.207031"/>
+<use xlink:href="#glyph-1-9" x="277.696289" y="331.207031"/>
+<use xlink:href="#glyph-1-3" x="277.696289" y="328.207031"/>
+<use xlink:href="#glyph-1-11" x="277.696289" y="323.207031"/>
+<use xlink:href="#glyph-1-11" x="277.696289" y="321.207031"/>
+</g>
+<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
+<use xlink:href="#glyph-1-13" x="425.34082" y="335.207031"/>
+<use xlink:href="#glyph-1-14" x="425.34082" y="331.207031"/>
+<use xlink:href="#glyph-1-10" x="425.34082" y="327.207031"/>
+<use xlink:href="#glyph-1-11" x="425.34082" y="325.207031"/>
+<use xlink:href="#glyph-1-15" x="425.34082" y="323.207031"/>
+</g>
+<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
+<use xlink:href="#glyph-1-13" x="572.989258" y="343.207031"/>
+<use xlink:href="#glyph-1-4" x="572.989258" y="339.207031"/>
+<use xlink:href="#glyph-1-10" x="572.989258" y="334.207031"/>
+<use xlink:href="#glyph-1-16" x="572.989258" y="332.207031"/>
+<use xlink:href="#glyph-1-1" x="572.989258" y="328.207031"/>
+<use xlink:href="#glyph-1-15" x="572.989258" y="323.207031"/>
+</g>
+<path fill="none" stroke-width="0.5" stroke-linecap="round" stroke-linejoin="round" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 53.371094 312.746094 L 53.371094 30.585938 M 49.121094 312.746094 L 53.371094 312.746094 M 49.121094 242.207031 L 53.371094 242.207031 M 49.121094 171.667969 L 53.371094 171.667969 M 49.121094 101.125 L 53.371094 101.125 M 49.121094 30.585938 L 53.371094 30.585938 "/>
+<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
+<use xlink:href="#glyph-2-0" x="41.914062" y="315.602539"/>
+</g>
+<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
+<use xlink:href="#glyph-2-0" x="36.914062" y="245.05957"/>
+<use xlink:href="#glyph-2-1" x="41.914062" y="245.05957"/>
+</g>
+<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
+<use xlink:href="#glyph-2-0" x="31.914062" y="174.520508"/>
+<use xlink:href="#glyph-2-1" x="36.914062" y="174.520508"/>
+<use xlink:href="#glyph-2-1" x="41.914062" y="174.520508"/>
+</g>
+<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
+<use xlink:href="#glyph-2-0" x="26.914062" y="103.977539"/>
+<use xlink:href="#glyph-2-1" x="31.914062" y="103.977539"/>
+<use xlink:href="#glyph-2-1" x="36.914062" y="103.977539"/>
+<use xlink:href="#glyph-2-1" x="41.914062" y="103.977539"/>
+</g>
+<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
+<use xlink:href="#glyph-2-0" x="21.914062" y="33.438477"/>
+<use xlink:href="#glyph-2-1" x="26.914062" y="33.438477"/>
+<use xlink:href="#glyph-2-1" x="31.914062" y="33.438477"/>
+<use xlink:href="#glyph-2-1" x="36.914062" y="33.438477"/>
+<use xlink:href="#glyph-2-1" x="41.914062" y="33.438477"/>
+</g>
+<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
+<use xlink:href="#glyph-3-0" x="14.733398" y="223.917969"/>
+<use xlink:href="#glyph-3-1" x="14.733398" y="218.917969"/>
+<use xlink:href="#glyph-3-2" x="14.733398" y="215.917969"/>
+<use xlink:href="#glyph-3-3" x="14.733398" y="209.917969"/>
+<use xlink:href="#glyph-3-4" x="14.733398" y="201.917969"/>
+<use xlink:href="#glyph-3-2" x="14.733398" y="195.917969"/>
+<use xlink:href="#glyph-3-3" x="14.733398" y="189.917969"/>
+<use xlink:href="#glyph-3-5" x="14.733398" y="181.917969"/>
+<use xlink:href="#glyph-3-6" x="14.733398" y="175.917969"/>
+<use xlink:href="#glyph-3-2" x="14.733398" y="172.917969"/>
+<use xlink:href="#glyph-3-7" x="14.733398" y="166.917969"/>
+<use xlink:href="#glyph-3-8" x="14.733398" y="161.917969"/>
+<use xlink:href="#glyph-3-9" x="14.733398" y="155.917969"/>
+<use xlink:href="#glyph-3-6" x="14.733398" y="151.917969"/>
+<use xlink:href="#glyph-3-10" x="14.733398" y="148.917969"/>
+<use xlink:href="#glyph-3-8" x="14.733398" y="140.917969"/>
+<use xlink:href="#glyph-3-11" x="14.733398" y="134.917969"/>
+<use xlink:href="#glyph-3-12" x="14.733398" y="125.917969"/>
+</g>
+<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
+<use xlink:href="#glyph-4-0" x="190.25" y="16.871094"/>
+<use xlink:href="#glyph-4-1" x="198.25" y="16.871094"/>
+<use xlink:href="#glyph-4-2" x="205.25" y="16.871094"/>
+<use xlink:href="#glyph-4-3" x="217.25" y="16.871094"/>
+<use xlink:href="#glyph-4-4" x="225.25" y="16.871094"/>
+<use xlink:href="#glyph-4-5" x="232.25" y="16.871094"/>
+<use xlink:href="#glyph-4-6" x="237.25" y="16.871094"/>
+<use xlink:href="#glyph-4-7" x="241.25" y="16.871094"/>
+<use xlink:href="#glyph-4-1" x="247.25" y="16.871094"/>
+<use xlink:href="#glyph-4-8" x="254.25" y="16.871094"/>
+<use xlink:href="#glyph-4-9" x="262.25" y="16.871094"/>
+<use xlink:href="#glyph-4-10" x="265.25" y="16.871094"/>
+<use xlink:href="#glyph-4-11" x="273.25" y="16.871094"/>
+<use xlink:href="#glyph-4-11" x="280.25" y="16.871094"/>
+<use xlink:href="#glyph-4-3" x="287.25" y="16.871094"/>
+<use xlink:href="#glyph-4-12" x="295.25" y="16.871094"/>
+<use xlink:href="#glyph-4-7" x="299.25" y="16.871094"/>
+<use xlink:href="#glyph-4-11" x="305.25" y="16.871094"/>
+<use xlink:href="#glyph-4-8" x="312.25" y="16.871094"/>
+<use xlink:href="#glyph-4-13" x="320.25" y="16.871094"/>
+<use xlink:href="#glyph-4-9" x="328.25" y="16.871094"/>
+<use xlink:href="#glyph-4-14" x="331.25" y="16.871094"/>
+<use xlink:href="#glyph-4-6" x="341.25" y="16.871094"/>
+<use xlink:href="#glyph-4-15" x="345.25" y="16.871094"/>
+<use xlink:href="#glyph-4-16" x="350.25" y="16.871094"/>
+<use xlink:href="#glyph-4-9" x="358.25" y="16.871094"/>
+<use xlink:href="#glyph-4-1" x="361.25" y="16.871094"/>
+<use xlink:href="#glyph-4-15" x="368.25" y="16.871094"/>
+<use xlink:href="#glyph-4-16" x="373.25" y="16.871094"/>
+<use xlink:href="#glyph-4-11" x="381.25" y="16.871094"/>
+<use xlink:href="#glyph-4-5" x="388.25" y="16.871094"/>
+<use xlink:href="#glyph-4-9" x="393.25" y="16.871094"/>
+<use xlink:href="#glyph-4-11" x="396.25" y="16.871094"/>
+<use xlink:href="#glyph-4-2" x="403.25" y="16.871094"/>
+<use xlink:href="#glyph-4-17" x="415.25" y="16.871094"/>
+<use xlink:href="#glyph-4-18" x="423.25" y="16.871094"/>
+<use xlink:href="#glyph-4-4" x="427.25" y="16.871094"/>
+<use xlink:href="#glyph-4-15" x="434.25" y="16.871094"/>
+<use xlink:href="#glyph-4-1" x="439.25" y="16.871094"/>
+<use xlink:href="#glyph-4-5" x="446.25" y="16.871094"/>
+<use xlink:href="#glyph-4-7" x="451.25" y="16.871094"/>
+</g>
+</svg>
diff --git a/posts/2023/05/rpython-used-to-speed-up-risc-v-simulation-over-15x.txt b/posts/2023/05/rpython-used-to-speed-up-risc-v-simulation-over-15x.txt
index 43714090c..aaa26765f 100644
--- a/posts/2023/05/rpython-used-to-speed-up-risc-v-simulation-over-15x.txt
+++ b/posts/2023/05/rpython-used-to-speed-up-risc-v-simulation-over-15x.txt
@@ -1,7 +1,7 @@
 .. title: RPython-based emulator speeds up RISC-V simulation over 15x
 .. slug: rpython-used-to-speed-up-risc-v-simulation-over-15x
 .. date: 2023-05-16 11:22:35 UTC
-.. tags: casestudy,performance
+.. tags: casestudy,performance,pydrofoil
 .. category: 
 .. link: 
 .. description: 
diff --git a/posts/2025/02/pydrofoil-optimizations.md b/posts/2025/02/pydrofoil-optimizations.md
new file mode 100644
index 000000000..b0c342969
--- /dev/null
+++ b/posts/2025/02/pydrofoil-optimizations.md
@@ -0,0 +1,823 @@
+.. title: Optimizations in Pydrofoil
+.. slug: optimizations-pydrofoil
+.. date: 2025-02-10 11:00:00 UTC
+.. tags: emulation,performance
+.. category: pydrofoil,jit
+.. link:
+.. description:
+.. type:
+.. author: CF Bolz-Tereick
+
+
+Since summer 2022 I have been working on and off on Pydrofoil, a jitting RISC-V
+(and later ARM) emulator that is automatically generated out of the
+specification for these instruction sets (together with Martin Berger, John
+Witulski, Matti Picus, Jubo Xu, Ryan Lin, and others). I have written [very
+little](/posts/2023/05/rpython-used-to-speed-up-risc-v-simulation-over-15x.txt)
+about it, so in this post I wanted to explain the architecture of Pydrofoil a
+little bit better, how some of the optimizations that I have implemented for it
+work, and explore which of the optimizations help how much.
+
+
+# Background: Sail and the RISC-V model
+
+[Sail](https://github.com/rems-project/sail/) is a DSL for describing very
+precisely how an instruction set architecture of a CPU behaves. Having a precise
+description of what an instruction set is supposed to do is quite valuable, as
+it provides a contract between the software and the hardware, that both sides
+(ideally) can rely on in all situations. Such a description could be used to
+test CPU designs against this specification, as well as testing whether a
+compiler backend produces correct code.
+
+The [RISC-V specification](https://github.com/riscv/sail-riscv) is written using
+the Sail DLS and was adopted by RISC-V International as the official spec of the
+ISA.
+
+Sail is "a first-order imperative language, but with lightweight dependent
+typing for numeric types and bitvector lengths, which are automatically checked
+using the Z3 SMT solver." It has a bitvector type and arbitrary precision
+integers. It also has a number of features inspired by functional languages
+such as sum types and pattern matching (including over bitvectors).
+
+We won't go into the details of the language too much, but here's an example
+specifying what happens when an `ITYPE` instruction (ie an instruction with an
+immediate) in RISC-V is executed:
+
+```
+scattered union ast
+
+val execute : ast -> Retired
+scattered function execute
+
+val encdec : ast <-> bits(32)
+scattered mapping encdec
+
+union clause ast = ILLEGAL : word
+```
+
+First some type declarations: The `union ast` is the union type that represents
+a decoded instruction. (Aside: I personally find using the term "AST" pretty
+confusing here, because decoded instructions aren't tree-like at all, and they
+aren't really "syntax" either). It's a `scattered` union, which means that the
+variants can be defined sprinkled across many source code files. The function
+`execute` (also scattered) takes an `ast` and returns `Retired`, which is an
+enum specifying whether the instruction successfully executed or not. To map
+between the encoding of instructions into bits and the more structured
+representation of an `ast`, there's the (scattered) mapping `encdec`. A mapping
+is a bidirectional function, meaning that you can use it to either take an `ast`
+value and encode it into 32-bit bitvector, or take a bitvector and decode it
+into an `ast`.
+
+The following are the relevant clauses of `ast`, `encdec` and `execute` for the
+`ITYPE` group of instructions, which all take an immediate:
+
+```
+enum iop = {RISCV_ADDI, RISCV_SLTI, RISCV_SLTIU,
+            RISCV_XORI, RISCV_ORI, RISCV_ANDI}    /* immediate ops */
+
+...
+
+union clause ast = ITYPE : (bits(12), regidx, regidx, iop)
+```
+
+The `ITYPE` variant of the `ast` type contains a 12-bit bitvector (the immediate
+value), two register indexes (source and destination), and an `iop` enum to
+specify which `ITYPE` instruction it is.
+
+Now we get to specifying how `ITYPE` are encoded into bits using bidirectional
+mapping functions:
+
+```
+mapping encdec_iop : iop <-> bits(3) = {
+  RISCV_ADDI  <-> 0b000,
+  RISCV_SLTI  <-> 0b010,
+  RISCV_SLTIU <-> 0b011,
+  RISCV_ANDI  <-> 0b111,
+  RISCV_ORI   <-> 0b110,
+  RISCV_XORI  <-> 0b100
+}
+
+mapping clause encdec = ITYPE(imm, rs1, rd, op)
+  <-> imm @ rs1 @ encdec_iop(op) @ rd @ 0b0010011
+```
+
+The `@` operator is used for concatenating bitvectors, so the right-hand side of
+`encdec` is doing pattern matching on the `bits(32)` bitvector type to extract
+the necessary information for an `ITYPE` value of the `ast` type (or to
+construct the resulting bitvector when running `encdec` in the other direction).
+
+Finally we get to how to execute an `ITYPE` instruction:
+
+```
+function clause execute (ITYPE (imm, rs1, rd, op)) = {
+  let rs1_val = X(rs1);
+  let immext : xlenbits = sign_extend(imm);
+  let result : xlenbits = match op {
+    RISCV_ADDI  => rs1_val + immext,
+    RISCV_SLTI  => zero_extend(bool_to_bits(rs1_val <_s immext)),
+    RISCV_SLTIU => zero_extend(bool_to_bits(rs1_val <_u immext)),
+    RISCV_ANDI  => rs1_val & immext,
+    RISCV_ORI   => rs1_val | immext,
+    RISCV_XORI  => rs1_val ^ immext
+  };
+  X(rd) = result;
+  RETIRE_SUCCESS
+}
+```
+
+First we load the value of the source register. Then we sign-extend the
+immediate value to the register width (`xlenbits` is either 32 or 64 bits,
+depending on the RISC-V variant, the specification covers both of them at once).
+Otherwise we perform the actual operation with the value of the source register
+and the sign-extended immediate, depending on the `op` enum value. Afterwards we
+write the result into the destination register and retire the instruction.
+
+We will use the `execute` clause of `ITYPE` instructions as a running example in
+the rest of the post.
+
+## Why is Sail slow
+
+There's a number of tools that use the specification of an ISA around the Sail
+language. For example, Sail code can be compiled into Rocq in order to perform
+proofs of properties of the specification. The backend that interests me
+personally the most is the C backend. It can be used to turn the Sail model into
+an interpreter for the ISA. The Sail model of RISC-V is fairly complete, so the
+resulting interpreter can then be used to run various RISC-V binaries, including
+test suites and small baremetal programs. It's also complete enough to boot
+Linux and then run programs in user space.
+
+Unfortunately the interpreters that the C backend of Sail generates are rather
+slow. Sail-RISC-V execute about 400,000 instructions per second on my laptop.
+The reason for that is twofold: on the one hand Sail is quite a high-level
+language that is much more focused on clearly expressing the semantics of the
+ISA over being able to emulate it quickly. On the other hand there simply hasn't
+been a lot of effort put into making the C code that Sail generates more
+efficient, the Sail team has simply worked more on other areas.
+
+Let's look at some concrete C code that the backend generates to understand why
+this is the case. The following is the C code that Sail generates from the
+`execute` clause of `ITYPE` instructions. I've lightly edited the code to make
+it simpler to read and added the Sail code as comments before the corresponding
+C code lines.
+
+```c
+...
+  {
+    uint64_t imm = ...;
+    ...
+    // let rs1_val = X(rs1);
+    uint64_t rs1_val;
+    rs1_val = zrX_bits(rs1);
+    // let immext : xlenbits = sign_extend(imm);
+    uint64_t immext;
+    {
+      sail_int sail_int_64;
+      CREATE(sail_int)(&sail_int_64);
+      CONVERT_OF(sail_int, mach_int)(&sail_int_64, INT64_C(64));
+      lbits imm_lbits;
+      CREATE(lbits)(&imm_lbits);
+      CONVERT_OF(lbits, fbits)(&imm_lbits, imm, UINT64_C(12) , true);
+      lbits immext_lbits;
+      CREATE(lbits)(&immext_lbits);
+      zsign_extend(&immext_lbits, sail_int_64, imm_lbits);
+      immext = CONVERT_OF(fbits, lbits)(immext_lbits, true);
+      KILL(lbits)(&immext_lbits);
+      KILL(lbits)(&imm_lbits);
+      KILL(sail_int)(&sail_int_64);
+    }
+    uint64_t result;
+    {
+      __label__ case_8084, case_8085, case_8086, case_8087, case_8088, case_8089, finish_match_8083;
+
+      /* Case with num_cases: 6 */
+      {
+        if ((zRISCV_ADDI != op)) goto case_8084;
+        result = ((rs1_val + immext) & UINT64_C(0xFFFFFFFFFFFFFFFF));
+        goto finish_match_8083;
+      }
+    case_8084: ;
+      ... // the other cases
+    }
+    {
+      unit zgsz38132;
+      zgsz38132 = zwX_bits(rd, result);
+    }
+    zcbz31056 = zRETIRE_SUCCESS;
+    goto finish_match_8062;
+  }
+```
+
+While the actual computation of the result in the `ADDI` case is nicely mapped
+to an addition on the host machine, the sign extension of the 12-bit immediate
+is done with a call to the function `zsign_extend`. The arguments of this call
+are of type `lbits`, which is a heap-allocated data structure storing bitvectors
+of arbitrary size. To be able to call `sign_extend`, the variable `imm` needs to
+be converted to type `lbits`, which requires a call to `malloc` as part of the
+`CONVERT_OF` macro. Similarly, the `sail_int` is also heap allocated and
+represents integers of arbitrary division. Both `lbits` and `sail_int` use the
+GMP library to represent bit bitvectors/integers.
+
+
+More generally, here are three reasons why the emulator that Sail generates is
+slow:
+
+**Bitvectors**: Sail tries to infer the bitwidth of the bitvector variables in
+the program. If they are statically known to fit into a machine word, the C
+backend will map them to C integer types. However, a lot of functions in a Sail
+spec are typically written to be independent of the width of the integer types.
+The bitvectors in these functions are implemented using `lbits` and thus
+ultimately GMP integers. This has a number of drawbacks. It means that all
+operations on these bitvectors require (de-)allocations, because GMP ints are
+always heap-allocated.
+
+**Integers**: The integer type in Sail has arbitrary precision. Again, Sail
+has an analysis to find out whether some specific integer variables can only
+have values that fit into a word-sized integer. For these integer variables the
+C backend will then pick a C integer type. However, for all other integer
+variables in the Sail program the C backend uses GMP to store them, which
+requires constant allocations on all the machine operations.
+
+**Interpretation Overhead**: And then there's of course the fundamental problem
+that the emulator that Sail generates is an interpreter which has to re-analyze
+the bits of the executed program again and again.
+
+We want to improve all three of these problems in Pydrofoil.
+
+# Architecture
+
+Pydrofoil reuses RPython and the RPython JIT to generate faster emulators from
+Sail models. The idea is to use the Sail model for some instruction set
+architecture as the input and then produce an RPython-based jitted emulator from
+the same input. The hope is to get much better emulation performance out of the
+result, by optimizing the Sail code better at build time, picking better data
+structures for bitvectors and integer types in the Sail language and also by
+using the tracing JIT compiler of RPython.
+
+I reuse as much of the front-end and type checker of Sail as possible by using
+the JIB textual intermediate representation that another Sail-based project
+([ISLA](https://github.com/rems-project/isla)) has implemented. When turning a
+Sail model into JIB, all type checking has been done, all variables have
+explicit types and all pattern matching is compiled away into basic blocks and
+(conditional) gotos. This makes JIB easy to parse and easy to do further work
+with.
+
+After parsing the JIB code, Pydrofoil generates its own SSA-based intermediate
+representation for Sail functions. Those functions are then further optimized by
+Pydrofoil's static optimization passes. Then Pydrofoil generates RPython source
+code from the optimization IR. The generated code makes use of Pydrofoil's
+runtime library of support functions that implement the Sail datatypes, such as
+bitvectors, integers, reals. The support library also implements the emulated
+RAM. This RPython code can be tested by running it on a normal Python2
+implementation. Or it can be further translated into a binary with the RPython
+translation toolchain. During this process, a tracing JIT compiler can be
+(optionally) inserted into the resulting binary. In the following sections we'll
+go through these steps in detail.
+
+# Parsing JIB and generating control flow graphs
+
+Parsing the JIB code is straightforward, and so is generating SSA-based control
+flow graphs from them. The control flow graphs consist of basic blocks and
+(conditional) jumps between them. Here's a screenshot of the constructed CFG of
+the `execute` clause of `ITYPE` instructions:
+
+![itype flow graph](/images/2025-pydrofoil-itype-before.svg)
+
+# Static Pydrofoil IR Optimizations
+
+After the SSA-based IR was generated from the parsed JIB code, a number of
+standard compiler optimizations are performed on it:
+
+- constant folding
+- dead code elimination
+- common subexpression elimination
+- inlining
+- scalar replacement of aggregates (using a simple form of partial escape
+  analysis)
+
+All of these are fairly standard, I won't talk too much about them here.
+
+# Static Optimizations for BitVector and Integer operations
+
+The most important static optimization are local rewrites to improve the cost of
+bitvector and integer operations. JIB has two different kinds of static types
+for each of these:
+
+- there are bitvector types with statically known widths, eg `%bv64` and `%bv16`
+- `%bv` is a generic bitvector type where the width isn't known at runtime
+  (which turns into the `lbits` type we've seen in the Sail C backend code
+  above)
+
+For integers there are:
+
+- `%i64` for integers that were inferred to always fit into a 64 bit signed
+  machine integer
+- ` %i` for arbitrary precision integers (which turns into `sail_int` in the C
+  backend code we've seen above)
+
+The JIB code contains a lot of casts between the two respective representations.
+
+As we've discussed, the generic forms `%bv` and `%i` are much less efficient at
+runtime. Since their size isn't known in advanced, values of these types need to
+be allocated on the heap, and operations on them are also much less efficient
+since they can't be directly mapped to operations on the host CPU.
+
+Here's an example. The following JIB code corresponds to the beginning of
+`ITYPE` `execute` fragment that we've been seen in Sail and C above. It's edited
+it lightly for clarity.
+
+```
+fn zexecute(zmergez3var) {
+...
+  imm : %bv12
+  imm = ...
+  // let rs1_val = X(rs1);
+  rs1_val : %bv64
+  rs1_val = zrX_bits(rs1)
+  // let immext : xlenbits = sign_extend(imm);
+  immext : %bv64
+  sail_int_64 : %i
+  sail_int_64 = zz5i64zDzKz5i(64)
+  imm_lbits : %bv
+  imm_lbits = imm
+  immext_lbits : %bv
+  immext_lbits = zsign_extend(sail_int_64, imm_lbits)
+  immext = immext_lbits
+...
+```
+
+In this example, to perform the `sign_extend`, the immediate value of type
+`%bv12` is first cast to a generic bitvector, then sign-extended to 64 bits,
+then the result is cast back to `%bv64`. Doing this sign extension alone by
+default requires 3 allocations.
+
+To optimize operations on generic bitvectors and integers, Pydrofoil's static
+optimizer has a lot of local rewrite rules that inspects the IR of a function
+locally and rewrites operations on these types to more efficient forms. Ideally
+it tries to remove casts between generic and specific bitvector types (as well
+as machine integers and arbitrary integers) and uses specialized operations on
+the types if they are available in Pydrofoil's runtime library.
+
+In the case of the `sign_extend` call above, it can be replaced by a version
+of the function that takes a `%bv12` and a `%i64` as argument and returns a
+`%bv64`, getting rid of all three allocations.
+
+To be able to narrow the generic integer type `%i` to the machine-word-sized
+type `%i64`, Pydrofoil also performs a range analysis. If the analysis finds an
+integer variable where the range fits into that of a machine word, Pydrofoil
+narrows the type to `%i64`.
+
+## Interaction with Inlining
+
+Inlining helps tremendously to make bitvector and integer operation rewrites
+more effective. Many small functions operate on generic bitvectors and integers,
+that are passed in as arguments. After inlining these small functions into the
+contexts of where they are used, the concrete bitvector widths of the argument
+can often be inferred and the bitvector operations in the inlined function be
+specialized to smaller bitwidths.
+
+We can look at another one of the `ITYPE` operations as an example for this. The
+`SLTI` cases uses the `operator <_s`, to perform the signed comparison. It
+is defined as follows in Sail:
+
+```
+val operator <_s  : forall 'n, 'n > 0. (bits('n), bits('n)) -> bool
+function operator <_s  (x, y) = signed(x) < signed(y)
+```
+
+This gets compiled to the following JIB code:
+
+```
+val zz8operatorz0zI_sz9 : (%bv, %bv) ->  %bool
+
+fn zz8operatorz0zI_sz9(zx, zy) {
+  // signed(x) < signed(y)
+  zz40 : %i
+  zz40 = zsigned(zx)
+  zz41 : %i
+  zz41 = zsigned(zy)
+  return = zlt_int(zz40, zz41)
+  end;
+}
+```
+
+The code implements a signed comparison of bitvectors and operates on generic
+bitvectors. In the concrete context where the function is called, the bitvector
+sizes are mostly known. E.g. in the context of the `SLTI` instruction:
+
+```
+  jump @neq(zRISCV_SLTI, zz415090) goto 280
+  // RISCV_SLTI  => zero_extend(bool_to_bits(rs1_val <_s immext)),
+  zz415112 : %bv1
+  zz415116 : %bool
+  zz415117 : %bv
+  zz415117 = rs1_val
+  zz415118 : %bv
+  zz415118 = immext
+  zz415116 = zz8operatorz0zI_sz9(zz415117, zz415118)
+  zz415112 = zbool_to_bits(zz415116)
+  ...
+```
+
+The arguments to the operator call are cast from `%bv64` to `%bv`. After
+inlining the operator, the `signed` calls can therefore be optimized to a
+variant that takes a `%bv64` and returns an `%i64`, which then allows the the
+`lt_int` function to be replaced by a version that operates on `%i64`. This
+removes all allocations in this code sequence completely.
+
+After inlining and bitvector/integer operation optimization the control flow
+graph of the `execute` clause for `ITYPE` instructions looks like this:
+
+![itype flow graph after optimizations](/images/2025-pydrofoil-itype-after.svg)
+
+
+# Function Specialization
+
+In cases where a called function is too large to be inlined Pydrofoil tries to
+specialize it to the specific bitvector widths and machine int types of its
+arguments at the function's callsites. This would have happened for the
+operator call above, if that function were too big.
+
+The specializer will go over all the non-inlinable function calls in the program
+and check whether any of the arguments are either constant, or the result of
+casts from more specific types. For such calls, the target function will be
+cloned into a more specific version, taking this information into account. The
+cloned version can then be locally optimized with the newly available bitvector
+sizes, constant values, etc.
+
+Sometimes, as the result of specialization, the return type of a function can
+also become more specific. This allows the caller of such a specialized function
+to be optimized further.
+
+# RPython code generation
+
+After the Sail functions have been optimized, we generate RPython source code
+from them. This is again quite straightforward, the only complexity is that the
+IR flow graphs use basic blocks with (conditional) jumps between them. Pydrofoil
+compiles that to the standard construction of a program counter variable and an
+infinite loop with one condition for every basic block. Here's the the produced
+RPython code of our running example:
+
+```python
+def zexecute_zITYPE(zmergez3var, machine, ):
+    pc = 0
+    while 1:
+        if pc == 0:
+            i_0_0 = Union_zast_zITYPE.convert(zmergez3var)
+            i_0_1 = i_0_0.ztuplez3z5bv12_z5bv5_z5bv5_z5enumz0zziop0
+            i_0_2 = i_0_0.ztuplez3z5bv12_z5bv5_z5bv5_z5enumz0zziop1
+            i_0_3 = i_0_0.ztuplez3z5bv12_z5bv5_z5bv5_z5enumz0zziop2
+            i_0_4 = i_0_0.ztuplez3z5bv12_z5bv5_z5bv5_z5enumz0zziop3
+            # inlined zrX_bits
+            return_0_7 = func_zrX(machine, supportcode.unsigned_bv(machine, i_0_2, 5))
+            # inlined zsign_extend
+            return_0_9 = supportcode.sign_extend_bv_i_i(machine, i_0_1, 12, 64)
+            if Enum_ziop.zRISCV_ADDI == i_0_4:
+                i_2_0 = supportcode.add_bits_bv_bv(machine, return_0_7, return_0_9, 64)
+                pc = 2
+                continue
+            # pc = 3, inlined
+            if Enum_ziop.zRISCV_SLTI == i_0_4:
+                # inlined zz8operatorz0zI_sz9
+                # inlined zbool_to_bits
+                # inlined zbool_bits_forwards
+                if (supportcode.signed_bv(machine, return_0_7, 64) < supportcode.signed_bv(machine, return_0_9, 64)):
+                    i_2_0 = r_uint(0x000000000000001L)
+                    pc = 2
+                    continue
+                i_2_0 = r_uint(0x000000000000000L)
+                pc = 2
+                continue
+            ...
+        if pc == 2:
+            # inlined zwX_bits
+            func_zwX(machine, supportcode.unsigned_bv(machine, i_0_3, 5), i_2_0)
+            return Enum_zRetired.zRETIRE_SUCCESS
+```
+
+# Runtime Support Library
+
+The static optimizations can remove the need for the generic heap-allocated
+bitvector and integer types in a lot of cases, but not all of them. Therefore it
+is important to pick efficient runtime representations for the generic types,
+especially for generic integers (`%i` in JIB). In theory the generic integer
+type can store arbitrarily large values. In practice, however, most of the
+integer values in the RISC-V emulator fit into one or at most two machine words.
+Our implementation of the generic integer type makes use of this fact. The type
+has two different implementations, one for the case where the value of an
+integer fits into a machine word, and then then generic case that can really
+implement arbitrarily large integers. The decision which implementation is
+chosen is deferred to integer value creation at runtime.
+
+To get an idea of how this looks we will sketch the implementation of integer
+subtraction in the RPython code that implements the Sail integer values. A Sail
+integer value is represented by an instance of the RPython class `Integer`.
+`Integer` has two subclasses, `SmallInteger` represents integer values that fit
+into a signed machine word, and `BigInteger` which represents arbitrary integer
+values using a list of word-sized digits.
+
+Here's a rough sketch of the classes:
+
+```python
+class Integer:
+    ...
+
+class SmallInteger(Integer):
+    def __init__(self, val):
+        self.val = val # a machine integer
+
+    ...
+
+    def sub(self, other):
+        if isinstance(other, SmallInteger):
+            try:
+                return SmallInteger(ovfcheck(self.val - other.val))
+            except OverflowError:
+                pass
+        return self.tobigint().add(other)
+
+
+class BigInteger(Integer):
+    def __init__(self, data, sign):
+        self.data = data # list of unsigned machine int forming the digits
+        self.sign = sign # 0, 1 or -1
+
+    ...
+
+    def sub(self):
+        ... # actual subtraction of arbitrarily-sized integers
+```
+
+Integer subtraction on two `SmallInteger` instances performs the subtraction of
+the two contained machine integers and checks whether the result fits into a
+machine integer still. If yes, a new instance of `SmallInteger` is returned,
+otherwise we convert the two ints to a `BigInteger` and perform the subtraction
+there.
+
+# Adding a JIT compiler with RPython
+
+To get from a purely interpretation based emulator to a more efficient system we
+can use RPython's meta-tracing JIT compiler. It will trace the execution of
+the Pydrofoil-RISC-V through one loop of the emulated guest program and turn the
+resulting traces into host machine code. In this way, RPython's tracing JIT acts
+as a trace-based dynamic binary translator for the emulated instruction set
+architecture.
+
+RPython's meta-tracing JIT needs a few annotations in the core execution loop of
+the Sail model in question. In particular, the tracing JIT needs to know what
+the core execution loop is, and which of the registers of the emulated machine
+stores the program counter.
+
+After doing that, we can look at the JIT trace that is generated for a single
+RISC-V addi instruction:
+
+```
+...
+i106 = getfield_gc_i(p1, field=x20)
+...
+# c.addi s4. 0x8
+i144 = getarrayitem_gc_i(ConstPtr(ptr142), 26)
+i146 = int_and(i144, 65535)
+i148 = int_and(i144, 3)
+i150 = int_eq(i148, 3)
+guard_false(i150)
+i152 = int_eq(i146, 1)
+guard_false(i152)
+i154 = uint_rshift(i146, 5)
+i156 = int_and(i154, 1)
+i158 = uint_rshift(i146, 6)
+i160 = int_and(i158, 1)
+i162 = int_lshift(i156, 1)
+i163 = int_or(i162, i160)
+i165 = uint_rshift(i146, 7)
+i167 = int_and(i165, 15)
+i169 = uint_rshift(i146, 11)
+i171 = int_and(i169, 3)
+i173 = int_lshift(i171, 2)
+i174 = int_or(i173, i163)
+i176 = int_lshift(i167, 4)
+i177 = int_or(i176, i174)
+i178 = int_is_zero(i177)
+guard_false(i178)
+i180 = uint_rshift(i146, 13)
+i181 = int_is_zero(i180)
+guard_true(i181)
+i182 = int_is_zero(i148)
+guard_false(i182)
+i184 = int_and(i165, 31)
+i186 = uint_rshift(i146, 12)
+i188 = uint_rshift(i146, 2)
+i190 = int_and(i188, 31)
+i192 = int_lshift(i186, 5)
+i193 = int_or(i192, i190)
+i194 = int_is_zero(i193)
+guard_false(i194)
+i195 = int_is_zero(i184)
+guard_false(i195)
+i197 = int_eq(i148, 1)
+guard_true(i197)
+i199 = int_xor(i193, 32)
+i201 = int_sub(i199, 32)
+i203 = int_and(i201, 4095)
+guard_value(i184, 20)
+i206 = int_xor(i203, 2048)
+i208 = int_sub(i206, 2048)
+i209 = int_add(i106, i208)
+i211 = int_add(i2, 2)
+i213 = int_add(i0, 2)
+setfield_gc(p1, i209, field=x20)
+i215 = int_eq(i213, 10000)
+guard_false(i215)
+... # next guest instruction
+```
+
+The details of this trace are not important, just that it's really long, given
+that it performs only a single guest addition. The problem is the
+`getarrayitem_gc_i` instruction at the very start, which is the instruction
+fetch from the emulated RAM. A large part of the trace is manipulating the
+result of that memory read to do the instruction decoding. In the next section
+we will look at an optimization how to get rid of those instruction decoding
+trace instructions.
+
+## Making the RAM emulation JIT-friendly
+
+One big problem for the JIT compiler is that while it knows the concrete value
+of the guest program counter, that is not actually enough in order to optimize
+away the decoding of the instruction at that program counter. The reason for
+that is that the content of the emulated RAM is obviously mutable, in general.
+
+In practice, however, it's very rare for code to be self-mutating. After a
+program has been loaded into RAM, those parts of memory mostly do not change any
+more. We want the JIT to make use of that fact. To be able to do that, we track
+the status of every word of the emulated RAM. Every word in emulated RAM can be
+in one of three states: `status_default`, `status_immutable`, `status_mutable`.
+All the words start out in `status_default` state. If a `status_default` word is
+read or written, nothing special happens. However, if a `status_default` is read
+from during instruction fetch, it transitions to `status_immutable`. The JIT
+will constant-fold reads from `status_immutable` words and return the concrete
+value of the stored bits in the word.
+
+To still behave correctly in the face of self-modifying machine code, the
+emulated RAM then adds a write barrier to notice modifications of
+`status_immutable` words. When a `status_immutable` word is changed, the
+generated host machine code is potentially no longer valid, because it was
+generated under the assumption that `status_immutable` words are immutable.
+Therefore all relevant host machine code is invalidated in such a situation, and
+the modified word is marked as `status_mutable`. `status_mutable` are assumed to
+potentially contain mutable code, so the JIT will never constant-fold reads on
+them during host machine code generation.
+
+Here's a state diagram of the various states and transitions a machine word can
+be in:
+
+![memory state transitions](/images/2025-pydrofoil-mem-states.svg)
+
+The result of this approach is that instruction fetch can mostly be
+constant-folded to no machine code instructions at all: the program counter is
+known to the tracing JIT at every point, reading from that point in memory is
+a read from a `status_immutable` word and therefore constant folded to a
+constant bit pattern. Afterwards, decoding of that bit-pattern can be constant
+folded too.
+
+For our example trace, this has the following effect:
+
+```
+i35 = getfield_gc_i(p1, field=x20)
+...
+# c.addi s4. 0x8
+i44 = int_add(i35, 8)
+i64 = int_add(i0, 2)
+setfield_gc(p1, i44, field=x20)
+i66 = int_eq(i64, 10000)
+guard_false(i66)
+
+```
+
+Now the trace looks actually good! The `addi s4, 0x8` instruction is compiled to
+a `int_add(..., 8)` instruction, which is its closest equivalent in the PyPy
+trace IR. There are a few extra instructions around to read and write the value
+of the register field in the `p1` struct, which contains the emulated machine's
+state. In addition, there are three instructions that check whether 10000
+instructions have been executed, which would make it time to tick the emulated
+clock.
+
+
+# Various other problems and future ideas
+
+There are a number of known inefficiencies in Pydrofoil. I want to discuss a few
+of them in this sections, together with ideas what to maybe do about
+them.
+
+## Clocks
+
+The first inefficiency is that of clocks. The Sail model ticks the emulated
+clock exactly every 100 instructions. This number was chosen at some point,
+maybe somewhat arbitrarily. In Pydrofoil we made this number configurable but
+mostly run benchmarks with a value of 10,000.
+
+Having to check whether the next clock tick is reached in the generated host
+machine code of every single guest instruction is quite inefficient. In addition
+to the cost of the checks itself, there's also the problem of the JIT compiler
+making code for all the control flow edges that go from every single instruction
+to the clock tick logic.
+
+There is existing [literature](https://dl.acm.org/doi/pdf/10.1145/2907950.2907953)
+for how to improve this situation and I want to be able to find out whether I
+can use some of the approaches described in Pydrofoil.
+
+## Address translation
+
+Another big source of inefficiency is address translation. If the emulated
+program turns address translation on (like every operating system will
+eventually do), every memory access goes through a page table walk in order to
+map virtual addresses to physical addresses. This is very inefficient, since it
+turns a single emulated RAM read into many emulated RAM reads.
+
+The RISC-V Sail model has a [translation lookaside
+buffer](https://en.wikipedia.org/wiki/Translation_lookaside_buffer) (TLB), which
+is a cache that caches address translation. The presence of this cache helps
+Pydrofoil a lot, but it even a successful cache lookup requires dozens of host
+instructions in the generated traces.
+
+There is also [emulation](https://www.diva-portal.org/smash/get/diva2:1041423/FULLTEXT01.pdf)
+[literature](https://dl.acm.org/doi/10.1145/2837027) that describes techniques
+for implementing virtual memory more efficiently in emulators, so I want to see
+whether some of these could be used in Pydrofoil.
+
+
+# Benchmarking various Pydrofoil variants
+
+To understand how much the various described optimizations help performance we
+will run a number of Pydrofoil variants. The first variant is simply Pydrofoil
+with all optimizations turned on. Every further variant disables one more of the
+optimizations I described in this post.
+
+The variants are:
+
+- pydrofoil-riscv-full: The Pydrofoil RISC-V emulator with all optimization
+  turned on.
+- pydrofoil-no-mem-immutability: Turns memory immutability tracking off.
+- pydrofoil-no-jit: Additionally turns the JIT off and works only as an interpreter.
+- pydrofoil-no-bv-int-opts: Additionally turns off the static optimizations that
+  replace generic bitvector and generic integer operations with more specialize
+  variants operating on machine word sizes.
+- pydrofoil-no-spec: Additionally turns off inlining and function
+  specialization.
+- pydrofoil-no-static-opt: Additionally turns of all the remaining static
+  optimizations.
+- pydrofoil-no-runtime-smallint: Always uses `BigInteger` for Sail integers and
+  doesn't dynamically check whether an integer would fit into a machine word.
+
+In this post, I'm running only part of a single benchmark. Specifically, the
+first 15 billion instructions of running deepsjeng from SPEC (which is a chess
+engine going through the search tree of several chess positions), including
+booting Linux to the point where it can start the benchmark. Obviously it's not
+great to just stop the benchmark at a somewhat arbitrary point. However,
+Pydrofoil runs the full benchmark in about five hours on my laptop and the
+above Pydrofoil versions obviously become successively much slower, so it's
+completely impractical to run any interesting benchmark to completion with them.
+
+The results look like this:
+
+![ablations](/images/2025-pydrofoil-ablations.svg)
+
+We can see that the JIT is the most important component for getting Pydrofoil's
+performance, it provides (together with memory immutability tracking) a 15x
+performance boost over not having it. The static bitvector and integer
+optimizations are the most useful static optimizations that Pydrofoil does,
+disabling them slows Pydrofoil down more than 4x; inlining, function
+specialization and all other static optimizations are less important. Turning
+the runtime-switchable integer representation off leads to a further 2x slow
+down.
+
+# Benchmarking QEMU, Spike, Pydrofoil and Sail
+
+To also get an idea of how Pydrofoil fares against actually efficient emulators,
+I'm running the full deepsjeng on top of QEMU, Pydrofoil, Spike, and Sail. The
+latter two were fairly slow again, so I didn't run them to completion and
+instead extrapolated their instructions/second numbers, the results should
+therefore be taken with a grain of salt. In any case, here are the results:
+
+![comparison qemu](/images/2025-pydrofoil-qemu.svg)
+
+Qemu is 14x faster than Pydrofoil, Sail is more than 200x slower than Pydrofoil,
+Spike is more than 3x slower than Pydrofoil.
+
+
+## Conclusion
+
+Pydrofoil takes the Sail RISC-V model, which is written in a fairly high-level
+specification language that is generic on bitvector widths. That Sail model is
+then compiled to a much more efficient interpreter, using mostly well-known
+static compilation techniques (including function specialization). Afterwards,
+adding some runtime data structures that make the remaining cases of generic
+integer types less inefficient helps lessen the impact of functions where static
+optimizations aren't possible.
+
+Using the RPython tracing JIT to make the emulator perform dynamic binary
+translation improves the performance even more, particularly after making it
+possible for the JIT to assume that the parts of RAM that store instructions are
+mostly constant.
+
+Perhaps not surprisingly, QEMU (a hand-written emulators that does DBT) still
+has much better performance. Spike, which is also hand-written but is an
+interpreter, gives less performance.