This commit is contained in:
Ventricule 2018-02-19 22:48:41 +01:00
commit da13fb7f55
483 changed files with 126400 additions and 0 deletions

1
.htaccess Normal file
View file

@ -0,0 +1 @@
FallbackResource /app.php

12
app.php Normal file
View file

@ -0,0 +1,12 @@
<?php include('snippets/functions.php') ?>
<?php include('snippets/init.php') ?>
<?php include('snippets/controller.php') ?>
<?php include('snippets/header.php') ?>
<div id="container">
<?php include('snippets/introduction.php') ?>
<?php include('snippets/nav.php') ?>
<article>
<iframe id="framepad" name="myframe" width=600 height=400 src="<?= $currentiframe ?>"></iframe>
</article>
</div>
<?php include('snippets/footer.php') ?>

11
assets/ajax.php Normal file
View file

@ -0,0 +1,11 @@
<?php
session_start();
if( array_key_exists('action', $_POST) ) :
switch ($_POST['action']):
case 'headerVisibility':
if( array_key_exists('visibility', $_POST) ) :
$_SESSION['header'] = $_POST['visibility'];
endif;
break;
endswitch;
endif;

Binary file not shown.

File diff suppressed because it is too large Load diff

After

Width:  |  Height:  |  Size: 411 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load diff

After

Width:  |  Height:  |  Size: 340 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load diff

After

Width:  |  Height:  |  Size: 360 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load diff

After

Width:  |  Height:  |  Size: 368 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load diff

After

Width:  |  Height:  |  Size: 298 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load diff

After

Width:  |  Height:  |  Size: 430 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load diff

After

Width:  |  Height:  |  Size: 358 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load diff

After

Width:  |  Height:  |  Size: 433 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load diff

After

Width:  |  Height:  |  Size: 431 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load diff

After

Width:  |  Height:  |  Size: 359 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1,390 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
<svg xmlns="http://www.w3.org/2000/svg">
<metadata>
This is a custom SVG webfont generated by Font Squirrel.
Copyright : Copyright c 2010 by Atelier Carvalho Bernau All rights reserved
Designer : Atelier Carvalho Bernau with Bernd Volmer
Foundry : Atelier Carvalho Bernau with Bernd Volmer
Foundry URL : httpwwwcarvalhobernaucom
</metadata>
<defs>
<font id="webfontUP15foyJ" horiz-adv-x="260" >
<font-face units-per-em="1000" ascent="831" descent="-169" />
<missing-glyph horiz-adv-x="200" />
<glyph unicode=" " horiz-adv-x="200" />
<glyph unicode="&#x09;" horiz-adv-x="200" />
<glyph unicode="&#xa0;" horiz-adv-x="200" />
<glyph unicode="!" horiz-adv-x="272" d="M55 487v176h162v-176l-21 -272h-120zM56 0v154h160v-154h-160z" />
<glyph unicode="&#x22;" horiz-adv-x="362" d="M25 418v320h136v-320h-136zM201 418v320h136v-320h-136z" />
<glyph unicode="#" horiz-adv-x="551" d="M20 153v124h97l22 109h-71v124h97l31 153h116l-31 -153h64l31 153h116l-31 -153h70v-124h-96l-22 -109h71v-124h-96l-31 -153h-117l31 153h-63l-31 -153h-117l31 153h-71zM233 277h64l22 109h-64z" />
<glyph unicode="$" horiz-adv-x="449" d="M25 212h135q-3 -82 36 -104v153l-33 17q-135 71 -135 212q0 81 47.5 129t120.5 57v90h58v-90q173 -18 168 -226h-136q3 83 -32 103v-155l38 -21q45 -25 73 -50t40.5 -51t16 -46.5t3.5 -49.5q0 -75 -42 -130.5t-129 -64.5v-105h-58v105q-176 15 -171 227zM161 499 q0 -48 35 -68v126q-35 -10 -35 -58zM254 105q34 13 34 61q0 45 -34 64v-125z" />
<glyph unicode="%" horiz-adv-x="617" d="M25 471v81q0 66 35 98.5t87 32.5t87 -32.5t35 -98.5v-81q0 -66 -34.5 -98.5t-87.5 -32.5t-87.5 32t-34.5 99zM65 0l386 663h103l-388 -663h-101zM126 468q0 -31 21 -31t21 31v86q0 32 -21 32t-21 -32v-86zM348 111v81q0 66 35 98.5t87 32.5t87 -32.5t35 -98.5v-81 q0 -66 -34.5 -98.5t-87.5 -32.5t-87.5 32t-34.5 99zM449 108q0 -31 21 -31t21 31v86q0 32 -21 32t-21 -32v-86z" />
<glyph unicode="&#x26;" horiz-adv-x="561" d="M20 181q0 109 106 168q-43 50 -57.5 83.5t-14.5 71.5q0 78 51.5 127.5t133.5 49.5q83 0 134.5 -48t51.5 -122q0 -52 -25 -93t-84 -84l65 -79q11 41 11 87h122q5 -96 -42 -194q16 -13 37 -13h37v-135h-38q-50 0 -74 6.5t-47 28.5q-66 -55 -148 -55q-112 0 -165.5 56.5 t-53.5 144.5zM178 193q0 -38 22 -56.5t57 -18.5q26 0 48 13l-102 123q-25 -24 -25 -61zM189 499q0 -19 9.5 -34t37.5 -47q30 22 41 39t11 41q0 21 -13 35t-35 14t-36.5 -13t-14.5 -35z" />
<glyph unicode="'" horiz-adv-x="196" d="M25 418v320h146v-320h-146z" />
<glyph unicode="(" horiz-adv-x="254" d="M15 205v242q0 109 57 180t162 66v-126q-38 -1 -63.5 -29t-25.5 -79v-266q0 -50 25.5 -78t63.5 -29v-126q-105 -5 -162 65.5t-57 179.5z" />
<glyph unicode=")" horiz-adv-x="254" d="M15 -40v126q38 1 63.5 29t25.5 78v266q0 51 -25.5 79t-63.5 29v126q105 5 162 -66t57 -180v-242q0 -109 -57 -179.5t-162 -65.5z" />
<glyph unicode="*" horiz-adv-x="348" d="M20 479v83l87 -3l-49 73l73 42l43 -81l43 79l72 -40l-48 -73l87 3v-83l-87 3l48 -73l-72 -41l-43 77l-44 -77l-71 40l48 74z" />
<glyph unicode="+" horiz-adv-x="460" d="M25 265v134h136v138h138v-138h136v-134h-136v-138h-138v138h-136z" />
<glyph unicode="," horiz-adv-x="270" d="M55 -75v235h160v-72l-87 -163h-73z" />
<glyph unicode="-" horiz-adv-x="325" d="M20 263v138h285v-138h-285z" />
<glyph unicode="." horiz-adv-x="270" d="M55 0v160h160v-160h-160z" />
<glyph unicode="/" horiz-adv-x="421" d="M-14 -40l317 743h127l-318 -743h-126z" />
<glyph unicode="0" horiz-adv-x="476" d="M34 197v267q0 109 58.5 164t145.5 55t145.5 -55t58.5 -163v-267q0 -111 -58 -164.5t-146 -53.5q-89 0 -146.5 52.5t-57.5 164.5zM193 203q0 -57 45 -57t45 57v254q0 59 -45 59t-45 -59v-254z" />
<glyph unicode="1" horiz-adv-x="287" d="M13 489v87l23 1q81 3 99 86h104v-663h-160v488z" />
<glyph unicode="2" horiz-adv-x="450" d="M25 0v106q0 92 31.5 143t116.5 114q61 45 79 70t18 50q0 22 -11.5 36.5t-34.5 14.5q-24 0 -36.5 -15t-15 -31t-1.5 -40h-143q-2 123 53.5 179t144.5 56q86 0 142 -50.5t56 -142.5q0 -66 -28 -110.5t-96 -100.5l-29 -23.5l-26 -21t-19.5 -17t-16.5 -16.5t-10.5 -14 t-7.5 -15t-1 -15v-1h229v-156h-394z" />
<glyph unicode="3" horiz-adv-x="439" d="M23 217h141q-4 -87 46 -87q26 0 37 20t11 65q0 54 -20 72.5t-67 18.5h-27v111l77 94v5h-191v147h359v-127l-93 -114v-4q119 -27 119 -203q0 -122 -56 -178.5t-145 -56.5q-31 0 -57.5 5.5t-53 22t-44.5 42t-28.5 68.5t-7.5 99z" />
<glyph unicode="4" horiz-adv-x="472" d="M17 142v126l209 395h188v-385h43v-136h-43v-142h-152v142h-245zM156 278h106v209h-6z" />
<glyph unicode="5" horiz-adv-x="457" d="M32 207h146q-1 -34 14 -53.5t42 -19.5q55 0 55 80q0 41 -18.5 63.5t-50.5 22.5t-67 -25l-111 -1v389h369v-149h-231v-106q39 12 73 12q82 0 133.5 -55t51.5 -156q0 -63 -19 -109.5t-50.5 -71.5t-65 -36.5t-68.5 -11.5q-92 0 -148 59.5t-55 167.5z" />
<glyph unicode="6" horiz-adv-x="465" d="M34 219v231q0 118 54.5 175.5t148.5 57.5q197 0 193 -235h-146q2 84 -50 84q-55 0 -55 -76v-77h3q45 31 98 31q69 0 114.5 -46.5t45.5 -154.5q0 -67 -19.5 -115t-51.5 -71.5t-64.5 -33t-67.5 -9.5q-203 0 -203 239zM179 205q0 -70 54 -70q56 0 56 74q0 33 -16 50t-38 17 q-56 0 -56 -71z" />
<glyph unicode="7" horiz-adv-x="415" d="M15 508v155h380v-143l-161 -520h-167l164 508h-216z" />
<glyph unicode="8" horiz-adv-x="473" d="M28 187q0 52 26 94t61 62v4q-38 26 -59 61t-21 97q0 79 61.5 128.5t139.5 49.5q79 0 140.5 -49.5t61.5 -128.5q0 -62 -21 -97t-59 -61v-4q35 -20 61 -62t26 -94q0 -103 -62 -155t-147 -52q-83 0 -145.5 52t-62.5 155zM176 203q0 -34 17 -54t44 -20t44 20t17 54 q0 31 -17.5 51.5t-43.5 20.5t-43.5 -20.5t-17.5 -51.5zM182 477q0 -28 16 -46.5t39 -18.5t39 18.5t16 46.5q0 31 -15 49t-40 18t-40 -18t-15 -49z" />
<glyph unicode="9" horiz-adv-x="465" d="M26 464q0 108 59.5 163.5t145.5 55.5q39 0 71.5 -10t63 -34.5t48 -73t17.5 -117.5v-232q0 -120 -55.5 -178t-144.5 -58q-90 0 -143.5 57.5t-51.5 165.5h146q-3 -72 49 -72q55 0 55 68v85h-1q-39 -30 -89 -30q-72 0 -121 50t-49 160zM178 458q0 -33 16 -50.5t39 -17.5 q24 0 39 18t15 54q0 69 -54 69q-55 0 -55 -73z" />
<glyph unicode=":" horiz-adv-x="270" d="M55 0v160h160v-160h-160zM55 255v160h160v-160h-160z" />
<glyph unicode=";" horiz-adv-x="270" d="M55 -75v235h160v-72l-87 -163h-73zM55 255v160h160v-160h-160z" />
<glyph unicode="&#x3c;" horiz-adv-x="460" d="M45 281v96l359 202v-131l-219 -117l219 -117v-134z" />
<glyph unicode="=" horiz-adv-x="460" d="M25 172v119h410v-119h-410zM25 373v119h410v-119h-410z" />
<glyph unicode="&#x3e;" horiz-adv-x="460" d="M56 80v131l219 117l-219 117v134l359 -201v-96z" />
<glyph unicode="?" horiz-adv-x="455" d="M26 448q-2 123 53.5 179t148.5 56q87 0 142 -48.5t55 -129.5q0 -85 -66 -159q-65 -72 -65 -118v-13h-152v25q0 51 19.5 87t59.5 76q29 29 38.5 47t9.5 39q0 19 -14 32t-34 13q-25 0 -37.5 -15t-15 -30.5t-1.5 -40.5h-141zM138 0v154h160v-154h-160z" />
<glyph unicode="@" horiz-adv-x="516" d="M45 204v243q0 115 61.5 175.5t159.5 60.5q89 0 147 -53.5t58 -154.5v-341h-83l-3 14q-23 -14 -55 -14q-58 0 -99 33.5t-41 113.5v82q0 74 41.5 109.5t98.5 35.5q22 0 39 -5q-5 45 -33 68.5t-73 23.5q-117 0 -117 -151v-250q0 -69 35.5 -99t87.5 -30q68 0 105 20v-86 q-45 -19 -120 -19q-40 0 -75.5 11.5t-66.5 36.5t-49 70t-18 106zM295 270q0 -49 38 -49q39 0 39 49v102q0 50 -38 50q-39 0 -39 -50v-102z" />
<glyph unicode="A" horiz-adv-x="502" d="M4 0l156 663h186l152 -663h-164l-23 123h-125l-23 -123h-159zM213 262h73l-33 201h-6z" />
<glyph unicode="B" horiz-adv-x="480" d="M50 0v663h192q99 0 150 -49.5t51 -120.5q0 -57 -27.5 -95.5t-58.5 -54.5v-5q42 -14 70 -56t28 -93q0 -86 -50.5 -137.5t-148.5 -51.5h-206zM209 146h31q26 0 40.5 16.5t14.5 43.5q0 63 -58 63h-28v-123zM209 400h21q58 0 58 58q0 57 -53 57h-26v-115z" />
<glyph unicode="C" horiz-adv-x="467" d="M37 198v266q0 53 14 93.5t35 63.5t49.5 37.5t53.5 19.5t52 5q37 0 69 -10.5t63 -36.5t48.5 -78t16.5 -125h-153q1 47 -9.5 66.5t-35.5 19.5q-44 0 -44 -59v-259q0 -59 44 -59q25 0 35.5 21t9.5 77h153q1 -62 -10.5 -109.5t-30.5 -75.5t-46.5 -45.5t-53.5 -23.5t-56 -6 q-34 0 -65.5 8.5t-65 30t-53.5 67.5t-20 112z" />
<glyph unicode="D" horiz-adv-x="482" d="M50 0v663h152q127 0 186 -52.5t59 -190.5v-177q0 -138 -59 -190.5t-186 -52.5h-152zM210 161h22q28 0 41 14t13 47v219q0 34 -13 47.5t-41 13.5h-22v-341z" />
<glyph unicode="E" horiz-adv-x="424" d="M50 0v663h335v-159h-175v-84h167v-150h-167v-110h179v-160h-339z" />
<glyph unicode="F" horiz-adv-x="417" d="M50 0v663h332v-159h-172v-86h165v-149h-165v-269h-160z" />
<glyph unicode="G" horiz-adv-x="493" d="M37 220v231q0 66 19.5 114t52 72t67.5 35t73 11q33 0 64.5 -9t66.5 -32.5t56 -76t20 -127.5l-152 3q1 82 -53 82q-23 0 -38.5 -15t-15.5 -49v-255q0 -66 55 -66q52 0 52 57v14h-66v137h218v-127q0 -56 -13.5 -99.5t-34.5 -69.5t-49.5 -42t-55 -22t-54.5 -6q-37 0 -70 9.5 t-67 33t-54.5 74t-20.5 123.5z" />
<glyph unicode="H" horiz-adv-x="503" d="M50 0v663h158v-236h87v236h158v-663h-158v274h-87v-274h-158z" />
<glyph unicode="I" d="M50 0v663h160v-663h-160zM50 705v135h160v-135h-160z" />
<glyph unicode="J" horiz-adv-x="438" d="M6 230h146q-3 -83 47 -83q22 0 32 16.5t10 55.5v444h160v-432q0 -62 -14 -109.5t-35 -73.5t-49.5 -42t-52.5 -21t-50 -5q-37 0 -68.5 10.5t-62 36t-47.5 77.5t-16 126zM241 705v135h160v-135h-160z" />
<glyph unicode="K" horiz-adv-x="519" d="M50 0v663h159v-280h5l91 280h170l-105 -296v-4l133 -363h-179l-110 324h-5v-324h-159z" />
<glyph unicode="L" horiz-adv-x="387" d="M50 0v663h158v-503h164v-160h-322z" />
<glyph unicode="M" horiz-adv-x="697" d="M50 0v663h202l93 -351h6l94 351h202v-663h-150v378h-6l-85 -378h-115l-85 378h-6v-378h-150z" />
<glyph unicode="N" horiz-adv-x="542" d="M50 0v663h169l119 -309h6v309h148v-663h-162l-125 342h-6v-342h-149z" />
<glyph unicode="O" horiz-adv-x="500" d="M37 202v258q0 111 61.5 167t151.5 56t151.5 -56t61.5 -166v-258q0 -112 -61 -167.5t-152 -55.5t-152 54t-61 168zM197 205q0 -31 15 -46.5t38 -15.5t38 15.5t15 46.5v251q0 32 -15 47.5t-38 15.5t-38 -15.5t-15 -47.5v-251z" />
<glyph unicode="P" horiz-adv-x="454" d="M50 0v663h165q219 0 219 -220q0 -106 -54.5 -167t-156.5 -61h-13v-215h-160zM210 362h17q27 0 39.5 17.5t12.5 57.5q0 75 -52 75h-17v-150z" />
<glyph unicode="Q" horiz-adv-x="507" d="M37 202v258q0 111 61.5 167t151.5 56t151.5 -56t61.5 -166v-258q0 -67 -26 -117l55 -47l-100 -108l-72 59q-33 -10 -70 -10q-91 0 -152 54t-61 168zM197 205q0 -31 15 -46.5t38 -15.5t38 15.5t15 46.5v251q0 32 -15 47.5t-38 15.5t-38 -15.5t-15 -47.5v-251z" />
<glyph unicode="R" horiz-adv-x="479" d="M50 0v663h193q106 0 154 -50.5t48 -124.5q0 -52 -25.5 -89.5t-62.5 -58.5v-4q40 -11 67.5 -47.5t27.5 -101.5v-187h-160v183q0 34 -12.5 50t-41.5 16h-28v-249h-160zM210 393h23q56 0 56 68q0 60 -53 60h-26v-128z" />
<glyph unicode="S" horiz-adv-x="452" d="M28 214h142q-3 -89 51 -89q43 0 43 43q0 37 -40 66l-74 54q-68 50 -93.5 99.5t-25.5 113.5q0 81 60 131.5t140 50.5q86 0 141.5 -55t52.5 -180h-142q3 93 -49 93q-46 0 -46 -43q0 -36 40 -66l88 -66q65 -49 88.5 -94.5t23.5 -99.5q0 -87 -58 -139.5t-143 -52.5 q-90 0 -146 55t-53 179z" />
<glyph unicode="T" horiz-adv-x="420" d="M15 508v155h390v-155h-113v-508h-160v508h-117z" />
<glyph unicode="U" horiz-adv-x="495" d="M40 209v454h160v-456q0 -63 47 -63q48 0 48 63v456h160v-454q0 -229 -207 -229q-208 0 -208 229z" />
<glyph unicode="V" horiz-adv-x="500" d="M5 663h164l81 -393h6l80 393h159l-167 -663h-166z" />
<glyph unicode="W" horiz-adv-x="672" d="M5 663h155l52 -326h6l66 326h105l66 -326h6l52 326h154l-129 -663h-123l-76 291h-6l-76 -291h-123z" />
<glyph unicode="X" horiz-adv-x="471" d="M2 0l132 341l-126 322h170l59 -183h4l60 183h158l-124 -319l134 -344h-170l-67 202h-5l-66 -202h-159z" />
<glyph unicode="Y" horiz-adv-x="482" d="M2 663h168l71 -222h6l71 222h162l-160 -411v-252h-160v252z" />
<glyph unicode="Z" horiz-adv-x="426" d="M25 0v161l192 344h-187v158h364v-152l-191 -352h198v-159h-376z" />
<glyph unicode="[" horiz-adv-x="248" d="M50 -40v730h198v-86h-70v-558h70v-86h-198z" />
<glyph unicode="\" horiz-adv-x="421" d="M-17 704h127l321 -751h-126z" />
<glyph unicode="]" horiz-adv-x="248" d="M0 -40v86h70v558h-70v86h198v-730h-198z" />
<glyph unicode="^" horiz-adv-x="418" d="M5 257l158 406h92l158 -406h-116l-92 231l-92 -231h-108z" />
<glyph unicode="_" horiz-adv-x="470" d="M25 -33h420v-136h-420v136z" />
<glyph unicode="`" horiz-adv-x="161" d="M-34 845h133l63 -137h-128z" />
<glyph unicode="a" horiz-adv-x="502" d="M4 0l156 663h186l152 -663h-164l-23 123h-125l-23 -123h-159zM213 262h73l-33 201h-6z" />
<glyph unicode="b" horiz-adv-x="480" d="M50 0v663h192q99 0 150 -49.5t51 -120.5q0 -57 -27.5 -95.5t-58.5 -54.5v-5q42 -14 70 -56t28 -93q0 -86 -50.5 -137.5t-148.5 -51.5h-206zM209 146h31q26 0 40.5 16.5t14.5 43.5q0 63 -58 63h-28v-123zM209 400h21q58 0 58 58q0 57 -53 57h-26v-115z" />
<glyph unicode="c" horiz-adv-x="467" d="M37 198v266q0 53 14 93.5t35 63.5t49.5 37.5t53.5 19.5t52 5q37 0 69 -10.5t63 -36.5t48.5 -78t16.5 -125h-153q1 47 -9.5 66.5t-35.5 19.5q-44 0 -44 -59v-259q0 -59 44 -59q25 0 35.5 21t9.5 77h153q1 -62 -10.5 -109.5t-30.5 -75.5t-46.5 -45.5t-53.5 -23.5t-56 -6 q-34 0 -65.5 8.5t-65 30t-53.5 67.5t-20 112z" />
<glyph unicode="d" horiz-adv-x="482" d="M50 0v663h152q127 0 186 -52.5t59 -190.5v-177q0 -138 -59 -190.5t-186 -52.5h-152zM210 161h22q28 0 41 14t13 47v219q0 34 -13 47.5t-41 13.5h-22v-341z" />
<glyph unicode="e" horiz-adv-x="424" d="M50 0v663h335v-159h-175v-84h167v-150h-167v-110h179v-160h-339z" />
<glyph unicode="f" horiz-adv-x="417" d="M50 0v663h332v-159h-172v-86h165v-149h-165v-269h-160z" />
<glyph unicode="g" horiz-adv-x="493" d="M37 220v231q0 66 19.5 114t52 72t67.5 35t73 11q33 0 64.5 -9t66.5 -32.5t56 -76t20 -127.5l-152 3q1 82 -53 82q-23 0 -38.5 -15t-15.5 -49v-255q0 -66 55 -66q52 0 52 57v14h-66v137h218v-127q0 -56 -13.5 -99.5t-34.5 -69.5t-49.5 -42t-55 -22t-54.5 -6q-37 0 -70 9.5 t-67 33t-54.5 74t-20.5 123.5z" />
<glyph unicode="h" horiz-adv-x="503" d="M50 0v663h158v-236h87v236h158v-663h-158v274h-87v-274h-158z" />
<glyph unicode="i" d="M50 0v663h160v-663h-160zM50 705v135h160v-135h-160z" />
<glyph unicode="j" horiz-adv-x="438" d="M6 230h146q-3 -83 47 -83q22 0 32 16.5t10 55.5v444h160v-432q0 -62 -14 -109.5t-35 -73.5t-49.5 -42t-52.5 -21t-50 -5q-37 0 -68.5 10.5t-62 36t-47.5 77.5t-16 126zM241 705v135h160v-135h-160z" />
<glyph unicode="k" horiz-adv-x="519" d="M50 0v663h159v-280h5l91 280h170l-105 -296v-4l133 -363h-179l-110 324h-5v-324h-159z" />
<glyph unicode="l" horiz-adv-x="387" d="M50 0v663h158v-503h164v-160h-322z" />
<glyph unicode="m" horiz-adv-x="697" d="M50 0v663h202l93 -351h6l94 351h202v-663h-150v378h-6l-85 -378h-115l-85 378h-6v-378h-150z" />
<glyph unicode="n" horiz-adv-x="542" d="M50 0v663h169l119 -309h6v309h148v-663h-162l-125 342h-6v-342h-149z" />
<glyph unicode="o" horiz-adv-x="500" d="M37 202v258q0 111 61.5 167t151.5 56t151.5 -56t61.5 -166v-258q0 -112 -61 -167.5t-152 -55.5t-152 54t-61 168zM197 205q0 -31 15 -46.5t38 -15.5t38 15.5t15 46.5v251q0 32 -15 47.5t-38 15.5t-38 -15.5t-15 -47.5v-251z" />
<glyph unicode="p" horiz-adv-x="454" d="M50 0v663h165q219 0 219 -220q0 -106 -54.5 -167t-156.5 -61h-13v-215h-160zM210 362h17q27 0 39.5 17.5t12.5 57.5q0 75 -52 75h-17v-150z" />
<glyph unicode="q" horiz-adv-x="507" d="M37 202v258q0 111 61.5 167t151.5 56t151.5 -56t61.5 -166v-258q0 -67 -26 -117l55 -47l-100 -108l-72 59q-33 -10 -70 -10q-91 0 -152 54t-61 168zM197 205q0 -31 15 -46.5t38 -15.5t38 15.5t15 46.5v251q0 32 -15 47.5t-38 15.5t-38 -15.5t-15 -47.5v-251z" />
<glyph unicode="r" horiz-adv-x="479" d="M50 0v663h193q106 0 154 -50.5t48 -124.5q0 -52 -25.5 -89.5t-62.5 -58.5v-4q40 -11 67.5 -47.5t27.5 -101.5v-187h-160v183q0 34 -12.5 50t-41.5 16h-28v-249h-160zM210 393h23q56 0 56 68q0 60 -53 60h-26v-128z" />
<glyph unicode="s" horiz-adv-x="452" d="M28 214h142q-3 -89 51 -89q43 0 43 43q0 37 -40 66l-74 54q-68 50 -93.5 99.5t-25.5 113.5q0 81 60 131.5t140 50.5q86 0 141.5 -55t52.5 -180h-142q3 93 -49 93q-46 0 -46 -43q0 -36 40 -66l88 -66q65 -49 88.5 -94.5t23.5 -99.5q0 -87 -58 -139.5t-143 -52.5 q-90 0 -146 55t-53 179z" />
<glyph unicode="t" horiz-adv-x="420" d="M15 508v155h390v-155h-113v-508h-160v508h-117z" />
<glyph unicode="u" horiz-adv-x="495" d="M40 209v454h160v-456q0 -63 47 -63q48 0 48 63v456h160v-454q0 -229 -207 -229q-208 0 -208 229z" />
<glyph unicode="v" horiz-adv-x="500" d="M5 663h164l81 -393h6l80 393h159l-167 -663h-166z" />
<glyph unicode="w" horiz-adv-x="672" d="M5 663h155l52 -326h6l66 326h105l66 -326h6l52 326h154l-129 -663h-123l-76 291h-6l-76 -291h-123z" />
<glyph unicode="x" horiz-adv-x="471" d="M2 0l132 341l-126 322h170l59 -183h4l60 183h158l-124 -319l134 -344h-170l-67 202h-5l-66 -202h-159z" />
<glyph unicode="y" horiz-adv-x="482" d="M2 663h168l71 -222h6l71 222h162l-160 -411v-252h-160v252z" />
<glyph unicode="z" horiz-adv-x="426" d="M25 0v161l192 344h-187v158h364v-152l-191 -352h198v-159h-376z" />
<glyph unicode="{" horiz-adv-x="264" d="M20 259v142h13q23 0 27 14.5t-4 55.5q-18 105 31.5 162.5t161.5 59.5v-126q-54 0 -67.5 -25t-2.5 -83l2 -12q8 -44 -5 -72.5t-58 -42.5v-4q79 -24 64 -116l-3 -19q-10 -57 2.5 -82t67.5 -25v-126q-111 2 -159 59.5t-33 164.5q8 44 3.5 59.5t-27.5 15.5h-13z" />
<glyph unicode="|" horiz-adv-x="216" d="M50 -168v966h116v-966h-116z" />
<glyph unicode="}" horiz-adv-x="264" d="M15 -40v126q54 0 67.5 25t2.5 83l-2 12q-8 44 5 72.5t58 42.5v4q-79 24 -64 116l3 19q10 57 -2.5 82t-67.5 25v126q111 -2 159 -59.5t33 -164.5q-8 -43 -3.5 -59t27.5 -16h13v-142h-13q-23 0 -27 -15t4 -55q18 -105 -31.5 -162.5t-161.5 -59.5z" />
<glyph unicode="~" horiz-adv-x="460" d="M10 254q0 71 30.5 116.5t98.5 45.5q42 0 94 -28.5t68 -28.5q38 0 38 51h111q0 -71 -30 -116.5t-96 -45.5q-42 0 -96.5 28t-70.5 28q-36 0 -36 -50h-111z" />
<glyph unicode="&#xa1;" horiz-adv-x="272" d="M55 0v176l21 272h120l21 -272v-176h-162zM56 509v154h160v-154h-160z" />
<glyph unicode="&#xa2;" horiz-adv-x="436" d="M37 373v113q0 181 155 195v85h54v-84q154 -16 152 -212h-121q0 76 -31 91v-262q31 14 31 101h121q5 -205 -152 -222v-105h-54v105q-155 14 -155 195zM163 366q0 -51 29 -67v261q-29 -13 -29 -67v-127z" />
<glyph unicode="&#xa3;" horiz-adv-x="497" d="M15 203v66h61v42h-61v66h61v96q0 210 199 210t187 -250h-151v31q0 38 -10 54t-31 16q-39 0 -39 -56v-101h158v-66h-158v-42h158v-66h-158v-65h232v-138h-429v138h42v65h-61z" />
<glyph unicode="&#xa5;" horiz-adv-x="482" d="M2 663h168l71 -222h6l71 222h162l-150 -385h111v-66h-121v-42h121v-66h-121v-104h-160v104h-118v66h118v42h-118v66h108z" />
<glyph unicode="&#xa8;" horiz-adv-x="303" d="M-3 709v129h131v-129h-131zM175 709v129h131v-129h-131z" />
<glyph unicode="&#xa9;" horiz-adv-x="723" d="M30 331q0 149 92 250.5t239 101.5q148 0 240 -100t92 -252t-92 -251.5t-240 -99.5q-147 0 -239 101t-92 250zM95 331q0 -127 74 -211t192 -84t192.5 84t74.5 211q0 125 -75 210.5t-192 85.5q-118 0 -192 -84.5t-74 -211.5zM222 245v172q0 47 14.5 80t38.5 48.5t46.5 22 t47.5 6.5q59 0 101 -40t40 -140h-110q3 62 -32 62q-32 0 -32 -42v-167q0 -42 32 -42q18 0 25.5 15t6.5 55h110q1 -55 -11 -94t-34.5 -58t-45.5 -27t-50 -8q-25 0 -47.5 6t-46.5 21.5t-38.5 49t-14.5 80.5z" />
<glyph unicode="&#xaa;" horiz-adv-x="298" d="M3 317l92 346h110l89 -346h-95l-15 65h-74l-16 -65h-91zM123 456h48l-22 101h-3z" />
<glyph unicode="&#xab;" horiz-adv-x="494" d="M10 330l123 213h139l-126 -213l127 -213h-139zM216 330l123 213h139l-126 -213l127 -213h-139z" />
<glyph unicode="&#xad;" horiz-adv-x="325" d="M20 263v138h285v-138h-285z" />
<glyph unicode="&#xae;" horiz-adv-x="723" d="M30 331q0 149 92 250.5t239 101.5q148 0 240 -100t92 -252t-92 -251.5t-240 -99.5q-147 0 -239 101t-92 250zM95 331q0 -127 74 -211t192 -84t192.5 84t74.5 211q0 125 -75 210.5t-192 85.5q-118 0 -192 -84.5t-74 -211.5zM225 100v463h140q78 0 112.5 -37t34.5 -91 q0 -71 -64 -108v-2q69 -21 69 -109v-116h-116v113q0 49 -39 49h-21v-162h-116zM341 376h17q41 0 41 50q0 43 -39 43h-19v-93z" />
<glyph unicode="&#xaf;" horiz-adv-x="336" d="M14 707v105h308v-105h-308z" />
<glyph unicode="&#xb0;" horiz-adv-x="333" d="M15 532q0 72 46 111.5t107 39.5q60 0 105 -39.5t45 -111.5q0 -71 -45.5 -110.5t-105.5 -39.5q-61 0 -106.5 39.5t-45.5 110.5zM89 531q0 -38 22.5 -60.5t57.5 -22.5q33 0 55.5 22.5t22.5 60.5q0 39 -22.5 60.5t-55.5 21.5q-35 0 -57.5 -21.5t-22.5 -60.5z" />
<glyph unicode="&#xb4;" horiz-adv-x="161" d="M-5 708l63 137h133l-68 -137h-128z" />
<glyph unicode="&#xb6;" horiz-adv-x="490" d="M30 473q0 86 53 138t147 52h220v-832h-56v791h-72v-791h-56v453h-36q-94 0 -147 51.5t-53 137.5z" />
<glyph unicode="&#xb7;" horiz-adv-x="270" d="M55 248v160h160v-160h-160z" />
<glyph unicode="&#xb8;" horiz-adv-x="206" d="M7 -96h63q2 -16 22 -16q23 0 23 26q0 11 -6 17.5t-16 6.5q-15 0 -22 -13l-53 1l-1 21l36 80h44l-16 -50q9 9 28 9q30 0 50 -19t20 -55q0 -40 -24.5 -61.5t-61.5 -21.5q-31 0 -58.5 21t-27.5 54z" />
<glyph unicode="&#xba;" horiz-adv-x="289" d="M25 435v112q0 62 34.5 93.5t84.5 31.5q51 0 85.5 -31.5t34.5 -93.5v-111q0 -63 -34.5 -94t-85.5 -31t-85 30t-34 94zM115 437q0 -35 29 -35q30 0 30 35v108q0 35 -30 35q-29 0 -29 -35v-108z" />
<glyph unicode="&#xbb;" horiz-adv-x="494" d="M15 117l127 213l-126 213h139l123 -213l-124 -213h-139zM221 117l127 213l-126 213h139l123 -213l-124 -213h-139z" />
<glyph unicode="&#xbf;" horiz-adv-x="455" d="M30 158q0 86 66 159q65 72 65 118v13h152v-25q0 -51 -19.5 -87t-59.5 -76q-29 -29 -38.5 -47t-9.5 -39q0 -19 14 -32t34 -13q25 0 37.5 15t15 30.5t1.5 40.5h141q2 -123 -53.5 -179t-148.5 -56q-87 0 -142 48.5t-55 129.5zM157 509v154h160v-154h-160z" />
<glyph unicode="&#xc0;" horiz-adv-x="502" d="M4 0l156 663h186l152 -663h-164l-23 123h-125l-23 -123h-159zM125 845h133l63 -137h-128zM213 262h73l-33 201h-6z" />
<glyph unicode="&#xc1;" horiz-adv-x="502" d="M4 0l156 663h186l152 -663h-164l-23 123h-125l-23 -123h-159zM185 708l63 137h133l-68 -137h-128zM213 262h73l-33 201h-6z" />
<glyph unicode="&#xc2;" horiz-adv-x="502" d="M4 0l156 663h186l152 -663h-164l-23 123h-125l-23 -123h-159zM117 702v101l136 40l136 -40v-101l-136 36zM213 262h73l-33 201h-6z" />
<glyph unicode="&#xc3;" horiz-adv-x="502" d="M4 0l156 663h186l152 -663h-164l-23 123h-125l-23 -123h-159zM95 701q1 59 25.5 93t69.5 34q29 0 65.5 -17t49.5 -17q24 0 26 34h81q0 -59 -24.5 -93t-67.5 -34q-28 0 -64.5 16.5t-49.5 16.5q-28 0 -28 -33h-83zM213 262h73l-33 201h-6z" />
<glyph unicode="&#xc4;" horiz-adv-x="502" d="M4 0l156 663h186l152 -663h-164l-23 123h-125l-23 -123h-159zM99 709v129h131v-129h-131zM213 262h73l-33 201h-6zM277 709v129h131v-129h-131z" />
<glyph unicode="&#xc5;" horiz-adv-x="502" d="M4 0l156 663h24q-59 33 -59 108q0 60 38.5 92.5t89.5 32.5t89.5 -32.5t38.5 -92.5q0 -74 -60 -108h25l152 -663h-164l-23 123h-125l-23 -123h-159zM213 262h73l-33 201h-6zM214 771q0 -19 11 -30t28 -11q16 0 27.5 11.5t11.5 29.5t-11.5 29.5t-27.5 11.5q-17 0 -28 -11.5 t-11 -29.5z" />
<glyph unicode="&#xc6;" horiz-adv-x="654" d="M4 0l173 663h438v-159h-216l24 -111h184v-131l-159 1l24 -103h147v-160h-281l-22 133h-126l-27 -133h-159zM219 272h74l-31 191h-3z" />
<glyph unicode="&#xc7;" horiz-adv-x="467" d="M37 198v266q0 53 14 93.5t35 63.5t49.5 37.5t53.5 19.5t52 5q37 0 69 -10.5t63 -36.5t48.5 -78t16.5 -125h-153q1 47 -9.5 66.5t-35.5 19.5q-44 0 -44 -59v-259q0 -59 44 -59q25 0 35.5 21t9.5 77h153q1 -62 -10.5 -109.5t-30.5 -75.5t-46.5 -45.5t-53.5 -23.5t-56 -6h-8 l-6 -20q9 9 28 9q30 0 50 -19t20 -55q0 -40 -24.5 -61.5t-61.5 -21.5q-31 0 -58.5 21t-27.5 54h63q2 -16 22 -16q23 0 23 26q0 11 -6 17.5t-16 6.5q-15 0 -22 -13l-53 1l-1 21l24 55q-150 32 -150 213z" />
<glyph unicode="&#xc8;" horiz-adv-x="424" d="M50 0v663h335v-159h-175v-84h167v-150h-167v-110h179v-160h-339zM91 845h133l63 -137h-128z" />
<glyph unicode="&#xc9;" horiz-adv-x="424" d="M50 0v663h335v-159h-175v-84h167v-150h-167v-110h179v-160h-339zM151 708l63 137h133l-68 -137h-128z" />
<glyph unicode="&#xca;" horiz-adv-x="424" d="M50 0v663h335v-159h-175v-84h167v-150h-167v-110h179v-160h-339zM83 702v101l136 40l136 -40v-101l-136 36z" />
<glyph unicode="&#xcb;" horiz-adv-x="424" d="M50 0v663h335v-159h-175v-84h167v-150h-167v-110h179v-160h-339zM65 709v129h131v-129h-131zM243 709v129h131v-129h-131z" />
<glyph unicode="&#xcc;" d="M2 845h133l63 -137h-128zM50 0v663h160v-663h-160z" />
<glyph unicode="&#xcd;" d="M50 0v663h160v-663h-160zM62 708l63 137h133l-68 -137h-128z" />
<glyph unicode="&#xce;" d="M17 702v101l112 40l114 -40v-101l-114 36zM50 0v663h160v-663h-160z" />
<glyph unicode="&#xcf;" d="M-24 709v129h131v-129h-131zM50 0v663h160v-663h-160zM154 709v129h131v-129h-131z" />
<glyph unicode="&#xd0;" horiz-adv-x="482" d="M11 266v131h39v266h152q127 0 186 -52.5t59 -190.5v-177q0 -138 -59 -190.5t-186 -52.5h-152v266h-39zM210 161h22q28 0 41 14t13 47v219q0 34 -13 47.5t-41 13.5h-22v-105h36v-131h-36v-105z" />
<glyph unicode="&#xd1;" horiz-adv-x="542" d="M50 0v663h169l119 -309h6v309h148v-663h-162l-125 342h-6v-342h-149zM113 701q1 59 25.5 93t69.5 34q29 0 65.5 -17t49.5 -17q24 0 26 34h81q0 -59 -24.5 -93t-67.5 -34q-28 0 -64.5 16.5t-49.5 16.5q-28 0 -28 -33h-83z" />
<glyph unicode="&#xd2;" horiz-adv-x="500" d="M37 202v258q0 111 61.5 167t151.5 56t151.5 -56t61.5 -166v-258q0 -112 -61 -167.5t-152 -55.5t-152 54t-61 168zM122 845h133l63 -137h-128zM197 205q0 -31 15 -46.5t38 -15.5t38 15.5t15 46.5v251q0 32 -15 47.5t-38 15.5t-38 -15.5t-15 -47.5v-251z" />
<glyph unicode="&#xd3;" horiz-adv-x="500" d="M37 202v258q0 111 61.5 167t151.5 56t151.5 -56t61.5 -166v-258q0 -112 -61 -167.5t-152 -55.5t-152 54t-61 168zM182 708l63 137h133l-68 -137h-128zM197 205q0 -31 15 -46.5t38 -15.5t38 15.5t15 46.5v251q0 32 -15 47.5t-38 15.5t-38 -15.5t-15 -47.5v-251z" />
<glyph unicode="&#xd4;" horiz-adv-x="500" d="M37 202v258q0 111 61.5 167t151.5 56t151.5 -56t61.5 -166v-258q0 -112 -61 -167.5t-152 -55.5t-152 54t-61 168zM114 702v101l136 40l136 -40v-101l-136 36zM197 205q0 -31 15 -46.5t38 -15.5t38 15.5t15 46.5v251q0 32 -15 47.5t-38 15.5t-38 -15.5t-15 -47.5v-251z " />
<glyph unicode="&#xd5;" horiz-adv-x="500" d="M37 202v258q0 111 61.5 167t151.5 56t151.5 -56t61.5 -166v-258q0 -112 -61 -167.5t-152 -55.5t-152 54t-61 168zM92 701q1 59 25.5 93t69.5 34q29 0 65.5 -17t49.5 -17q24 0 26 34h81q0 -59 -24.5 -93t-67.5 -34q-28 0 -64.5 16.5t-49.5 16.5q-28 0 -28 -33h-83z M197 205q0 -31 15 -46.5t38 -15.5t38 15.5t15 46.5v251q0 32 -15 47.5t-38 15.5t-38 -15.5t-15 -47.5v-251z" />
<glyph unicode="&#xd6;" horiz-adv-x="500" d="M37 202v258q0 111 61.5 167t151.5 56t151.5 -56t61.5 -166v-258q0 -112 -61 -167.5t-152 -55.5t-152 54t-61 168zM96 709v129h131v-129h-131zM197 205q0 -31 15 -46.5t38 -15.5t38 15.5t15 46.5v251q0 32 -15 47.5t-38 15.5t-38 -15.5t-15 -47.5v-251zM274 709v129h131 v-129h-131z" />
<glyph unicode="&#xd7;" horiz-adv-x="460" d="M10 458l94 94l125 -126l126 126l94 -94l-126 -126l127 -126l-94 -94l-127 126l-124 -124l-94 94l124 124z" />
<glyph unicode="&#xd8;" horiz-adv-x="500" d="M37 202v258q0 111 61.5 167t151.5 56q47 0 86 -16l27 70h80l-42 -110q62 -60 62 -166v-258q0 -112 -61 -167.5t-152 -55.5q-47 0 -92 17l-21 -56h-79l37 96q-58 60 -58 165zM183 267l102 266q-16 8 -35 8q-67 0 -67 -78v-196zM210 132q15 -11 40 -11q67 0 67 77v211z" />
<glyph unicode="&#xd9;" horiz-adv-x="495" d="M40 209v454h160v-456q0 -63 47 -63q48 0 48 63v456h160v-454q0 -229 -207 -229q-208 0 -208 229zM120 845h133l63 -137h-128z" />
<glyph unicode="&#xda;" horiz-adv-x="495" d="M40 209v454h160v-456q0 -63 47 -63q48 0 48 63v456h160v-454q0 -229 -207 -229q-208 0 -208 229zM180 708l63 137h133l-68 -137h-128z" />
<glyph unicode="&#xdb;" horiz-adv-x="495" d="M40 209v454h160v-456q0 -63 47 -63q48 0 48 63v456h160v-454q0 -229 -207 -229q-208 0 -208 229zM112 702v101l136 40l136 -40v-101l-136 36z" />
<glyph unicode="&#xdc;" horiz-adv-x="495" d="M40 209v454h160v-456q0 -63 47 -63q48 0 48 63v456h160v-454q0 -229 -207 -229q-208 0 -208 229zM94 709v129h131v-129h-131zM272 709v129h131v-129h-131z" />
<glyph unicode="&#xdd;" horiz-adv-x="482" d="M2 663h168l71 -222h6l71 222h162l-160 -411v-252h-160v252zM176 708l63 137h133l-68 -137h-128z" />
<glyph unicode="&#xde;" horiz-adv-x="454" d="M50 0v663h160v-102h5q219 0 219 -220q0 -106 -54.5 -167t-156.5 -61h-13v-113h-160zM210 260h17q27 0 39.5 17.5t12.5 57.5q0 75 -52 75h-17v-150z" />
<glyph unicode="&#xdf;" horiz-adv-x="901" d="M28 214h142q-3 -89 51 -89q43 0 43 43q0 37 -40 66l-74 54q-68 50 -93.5 99.5t-25.5 113.5q0 81 60 131.5t140 50.5q86 0 141.5 -55t52.5 -180h-142q3 93 -49 93q-46 0 -46 -43q0 -36 40 -66l88 -66q65 -49 88.5 -94.5t23.5 -99.5q0 -87 -58 -139.5t-143 -52.5 q-90 0 -146 55t-53 179zM477 214h142q-3 -89 51 -89q43 0 43 43q0 37 -40 66l-74 54q-68 50 -93.5 99.5t-25.5 113.5q0 81 60 131.5t140 50.5q86 0 141.5 -55t52.5 -180h-142q3 93 -49 93q-46 0 -46 -43q0 -36 40 -66l88 -66q65 -49 88.5 -94.5t23.5 -99.5q0 -87 -58 -139.5 t-143 -52.5q-90 0 -146 55t-53 179z" />
<glyph unicode="&#xe0;" horiz-adv-x="502" d="M4 0l156 663h186l152 -663h-164l-23 123h-125l-23 -123h-159zM125 845h133l63 -137h-128zM213 262h73l-33 201h-6z" />
<glyph unicode="&#xe1;" horiz-adv-x="502" d="M4 0l156 663h186l152 -663h-164l-23 123h-125l-23 -123h-159zM185 708l63 137h133l-68 -137h-128zM213 262h73l-33 201h-6z" />
<glyph unicode="&#xe2;" horiz-adv-x="502" d="M4 0l156 663h186l152 -663h-164l-23 123h-125l-23 -123h-159zM117 702v101l136 40l136 -40v-101l-136 36zM213 262h73l-33 201h-6z" />
<glyph unicode="&#xe3;" horiz-adv-x="502" d="M4 0l156 663h186l152 -663h-164l-23 123h-125l-23 -123h-159zM95 701q1 59 25.5 93t69.5 34q29 0 65.5 -17t49.5 -17q24 0 26 34h81q0 -59 -24.5 -93t-67.5 -34q-28 0 -64.5 16.5t-49.5 16.5q-28 0 -28 -33h-83zM213 262h73l-33 201h-6z" />
<glyph unicode="&#xe4;" horiz-adv-x="502" d="M4 0l156 663h186l152 -663h-164l-23 123h-125l-23 -123h-159zM99 709v129h131v-129h-131zM213 262h73l-33 201h-6zM277 709v129h131v-129h-131z" />
<glyph unicode="&#xe5;" horiz-adv-x="502" d="M4 0l156 663h24q-59 33 -59 108q0 60 38.5 92.5t89.5 32.5t89.5 -32.5t38.5 -92.5q0 -74 -60 -108h25l152 -663h-164l-23 123h-125l-23 -123h-159zM213 262h73l-33 201h-6zM214 771q0 -19 11 -30t28 -11q16 0 27.5 11.5t11.5 29.5t-11.5 29.5t-27.5 11.5q-17 0 -28 -11.5 t-11 -29.5z" />
<glyph unicode="&#xe6;" horiz-adv-x="654" d="M4 0l173 663h438v-159h-216l24 -111h184v-131l-159 1l24 -103h147v-160h-281l-22 133h-126l-27 -133h-159zM219 272h74l-31 191h-3z" />
<glyph unicode="&#xe7;" horiz-adv-x="467" d="M37 198v266q0 53 14 93.5t35 63.5t49.5 37.5t53.5 19.5t52 5q37 0 69 -10.5t63 -36.5t48.5 -78t16.5 -125h-153q1 47 -9.5 66.5t-35.5 19.5q-44 0 -44 -59v-259q0 -59 44 -59q25 0 35.5 21t9.5 77h153q1 -62 -10.5 -109.5t-30.5 -75.5t-46.5 -45.5t-53.5 -23.5t-56 -6h-8 l-6 -20q9 9 28 9q30 0 50 -19t20 -55q0 -40 -24.5 -61.5t-61.5 -21.5q-31 0 -58.5 21t-27.5 54h63q2 -16 22 -16q23 0 23 26q0 11 -6 17.5t-16 6.5q-15 0 -22 -13l-53 1l-1 21l24 55q-150 32 -150 213z" />
<glyph unicode="&#xe8;" horiz-adv-x="424" d="M50 0v663h335v-159h-175v-84h167v-150h-167v-110h179v-160h-339zM91 845h133l63 -137h-128z" />
<glyph unicode="&#xe9;" horiz-adv-x="424" d="M50 0v663h335v-159h-175v-84h167v-150h-167v-110h179v-160h-339zM151 708l63 137h133l-68 -137h-128z" />
<glyph unicode="&#xea;" horiz-adv-x="424" d="M50 0v663h335v-159h-175v-84h167v-150h-167v-110h179v-160h-339zM83 702v101l136 40l136 -40v-101l-136 36z" />
<glyph unicode="&#xeb;" horiz-adv-x="424" d="M50 0v663h335v-159h-175v-84h167v-150h-167v-110h179v-160h-339zM65 709v129h131v-129h-131zM243 709v129h131v-129h-131z" />
<glyph unicode="&#xec;" d="M2 845h133l63 -137h-128z" />
<glyph unicode="&#xed;" d="M62 708l63 137h133l-68 -137h-128z" />
<glyph unicode="&#xee;" d="M17 702v101l112 40l114 -40v-101l-114 36zM50 0v663h160v-663h-160z" />
<glyph unicode="&#xef;" d="M-24 709v129h131v-129h-131zM154 709v129h131v-129h-131z" />
<glyph unicode="&#xf0;" horiz-adv-x="482" d="M11 266v131h39v266h152q127 0 186 -52.5t59 -190.5v-177q0 -138 -59 -190.5t-186 -52.5h-152v266h-39zM210 161h22q28 0 41 14t13 47v219q0 34 -13 47.5t-41 13.5h-22v-105h36v-131h-36v-105z" />
<glyph unicode="&#xf1;" horiz-adv-x="542" d="M50 0v663h169l119 -309h6v309h148v-663h-162l-125 342h-6v-342h-149zM113 701q1 59 25.5 93t69.5 34q29 0 65.5 -17t49.5 -17q24 0 26 34h81q0 -59 -24.5 -93t-67.5 -34q-28 0 -64.5 16.5t-49.5 16.5q-28 0 -28 -33h-83z" />
<glyph unicode="&#xf2;" horiz-adv-x="500" d="M37 202v258q0 111 61.5 167t151.5 56t151.5 -56t61.5 -166v-258q0 -112 -61 -167.5t-152 -55.5t-152 54t-61 168zM122 845h133l63 -137h-128zM197 205q0 -31 15 -46.5t38 -15.5t38 15.5t15 46.5v251q0 32 -15 47.5t-38 15.5t-38 -15.5t-15 -47.5v-251z" />
<glyph unicode="&#xf3;" horiz-adv-x="500" d="M37 202v258q0 111 61.5 167t151.5 56t151.5 -56t61.5 -166v-258q0 -112 -61 -167.5t-152 -55.5t-152 54t-61 168zM182 708l63 137h133l-68 -137h-128zM197 205q0 -31 15 -46.5t38 -15.5t38 15.5t15 46.5v251q0 32 -15 47.5t-38 15.5t-38 -15.5t-15 -47.5v-251z" />
<glyph unicode="&#xf4;" horiz-adv-x="500" d="M37 202v258q0 111 61.5 167t151.5 56t151.5 -56t61.5 -166v-258q0 -112 -61 -167.5t-152 -55.5t-152 54t-61 168zM114 702v101l136 40l136 -40v-101l-136 36zM197 205q0 -31 15 -46.5t38 -15.5t38 15.5t15 46.5v251q0 32 -15 47.5t-38 15.5t-38 -15.5t-15 -47.5v-251z " />
<glyph unicode="&#xf5;" horiz-adv-x="500" d="M37 202v258q0 111 61.5 167t151.5 56t151.5 -56t61.5 -166v-258q0 -112 -61 -167.5t-152 -55.5t-152 54t-61 168zM92 701q1 59 25.5 93t69.5 34q29 0 65.5 -17t49.5 -17q24 0 26 34h81q0 -59 -24.5 -93t-67.5 -34q-28 0 -64.5 16.5t-49.5 16.5q-28 0 -28 -33h-83z M197 205q0 -31 15 -46.5t38 -15.5t38 15.5t15 46.5v251q0 32 -15 47.5t-38 15.5t-38 -15.5t-15 -47.5v-251z" />
<glyph unicode="&#xf6;" horiz-adv-x="500" d="M37 202v258q0 111 61.5 167t151.5 56t151.5 -56t61.5 -166v-258q0 -112 -61 -167.5t-152 -55.5t-152 54t-61 168zM96 709v129h131v-129h-131zM197 205q0 -31 15 -46.5t38 -15.5t38 15.5t15 46.5v251q0 32 -15 47.5t-38 15.5t-38 -15.5t-15 -47.5v-251zM274 709v129h131 v-129h-131z" />
<glyph unicode="&#xf7;" horiz-adv-x="460" d="M25 265v134h410v-134h-410zM159 101v129h142v-129h-142zM159 432v129h142v-129h-142z" />
<glyph unicode="&#xf8;" horiz-adv-x="500" d="M37 202v258q0 111 61.5 167t151.5 56q47 0 86 -16l27 70h80l-42 -110q62 -60 62 -166v-258q0 -112 -61 -167.5t-152 -55.5q-47 0 -92 17l-21 -56h-79l37 96q-58 60 -58 165zM183 267l102 266q-16 8 -35 8q-67 0 -67 -78v-196zM210 132q15 -11 40 -11q67 0 67 77v211z" />
<glyph unicode="&#xf9;" horiz-adv-x="495" d="M40 209v454h160v-456q0 -63 47 -63q48 0 48 63v456h160v-454q0 -229 -207 -229q-208 0 -208 229zM120 845h133l63 -137h-128z" />
<glyph unicode="&#xfa;" horiz-adv-x="495" d="M40 209v454h160v-456q0 -63 47 -63q48 0 48 63v456h160v-454q0 -229 -207 -229q-208 0 -208 229zM180 708l63 137h133l-68 -137h-128z" />
<glyph unicode="&#xfb;" horiz-adv-x="495" d="M40 209v454h160v-456q0 -63 47 -63q48 0 48 63v456h160v-454q0 -229 -207 -229q-208 0 -208 229zM112 702v101l136 40l136 -40v-101l-136 36z" />
<glyph unicode="&#xfc;" horiz-adv-x="495" d="M40 209v454h160v-456q0 -63 47 -63q48 0 48 63v456h160v-454q0 -229 -207 -229q-208 0 -208 229zM94 709v129h131v-129h-131zM272 709v129h131v-129h-131z" />
<glyph unicode="&#xfd;" horiz-adv-x="482" d="M2 663h168l71 -222h6l71 222h162l-160 -411v-252h-160v252zM176 708l63 137h133l-68 -137h-128z" />
<glyph unicode="&#xfe;" horiz-adv-x="454" d="M50 0v663h160v-102h5q219 0 219 -220q0 -106 -54.5 -167t-156.5 -61h-13v-113h-160zM210 260h17q27 0 39.5 17.5t12.5 57.5q0 75 -52 75h-17v-150z" />
<glyph unicode="&#xff;" horiz-adv-x="482" d="M2 663h168l71 -222h6l71 222h162l-160 -411v-252h-160v252zM90 709v129h131v-129h-131zM268 709v129h131v-129h-131z" />
<glyph unicode="&#x100;" horiz-adv-x="502" d="M4 0l156 663h186l152 -663h-164l-23 123h-125l-23 -123h-159zM99 707v105h308v-105h-308zM213 262h73l-33 201h-6z" />
<glyph unicode="&#x101;" horiz-adv-x="502" d="M4 0l156 663h186l152 -663h-164l-23 123h-125l-23 -123h-159zM99 707v105h308v-105h-308zM213 262h73l-33 201h-6z" />
<glyph unicode="&#x102;" horiz-adv-x="502" d="M4 0l156 663h186l152 -663h-164l-23 123h-125l-23 -123h-159zM95 824h117q1 -14 11.5 -22.5t27.5 -8.5t27.5 8.5t11.5 22.5h117q0 -58 -43 -93.5t-113 -35.5t-113 35.5t-43 93.5zM213 262h73l-33 201h-6z" />
<glyph unicode="&#x103;" horiz-adv-x="502" d="M4 0l156 663h186l152 -663h-164l-23 123h-125l-23 -123h-159zM95 824h117q1 -14 11.5 -22.5t27.5 -8.5t27.5 8.5t11.5 22.5h117q0 -58 -43 -93.5t-113 -35.5t-113 35.5t-43 93.5zM213 262h73l-33 201h-6z" />
<glyph unicode="&#x104;" horiz-adv-x="502" d="M4 0l156 663h186l152 -663h-7q-41 -30 -41 -62q0 -28 37 -28h4v-79h-36q-108 0 -108 80q0 28 19 52t50 37h-82l-23 123h-125l-23 -123h-159zM213 262h73l-33 201h-6z" />
<glyph unicode="&#x105;" horiz-adv-x="502" d="M4 0l156 663h186l152 -663h-7q-41 -30 -41 -62q0 -28 37 -28h4v-79h-36q-108 0 -108 80q0 28 19 52t50 37h-82l-23 123h-125l-23 -123h-159zM213 262h73l-33 201h-6z" />
<glyph unicode="&#x106;" horiz-adv-x="467" d="M37 198v266q0 53 14 93.5t35 63.5t49.5 37.5t53.5 19.5t52 5q37 0 69 -10.5t63 -36.5t48.5 -78t16.5 -125h-153q1 47 -9.5 66.5t-35.5 19.5q-44 0 -44 -59v-259q0 -59 44 -59q25 0 35.5 21t9.5 77h153q1 -62 -10.5 -109.5t-30.5 -75.5t-46.5 -45.5t-53.5 -23.5t-56 -6 q-34 0 -65.5 8.5t-65 30t-53.5 67.5t-20 112zM173 708l63 137h133l-68 -137h-128z" />
<glyph unicode="&#x107;" horiz-adv-x="467" d="M37 198v266q0 53 14 93.5t35 63.5t49.5 37.5t53.5 19.5t52 5q37 0 69 -10.5t63 -36.5t48.5 -78t16.5 -125h-153q1 47 -9.5 66.5t-35.5 19.5q-44 0 -44 -59v-259q0 -59 44 -59q25 0 35.5 21t9.5 77h153q1 -62 -10.5 -109.5t-30.5 -75.5t-46.5 -45.5t-53.5 -23.5t-56 -6 q-34 0 -65.5 8.5t-65 30t-53.5 67.5t-20 112zM173 708l63 137h133l-68 -137h-128z" />
<glyph unicode="&#x108;" horiz-adv-x="467" d="M37 198v266q0 53 14 93.5t35 63.5t49.5 37.5t53.5 19.5t52 5q37 0 69 -10.5t63 -36.5t48.5 -78t16.5 -125h-153q1 47 -9.5 66.5t-35.5 19.5q-44 0 -44 -59v-259q0 -59 44 -59q25 0 35.5 21t9.5 77h153q1 -62 -10.5 -109.5t-30.5 -75.5t-46.5 -45.5t-53.5 -23.5t-56 -6 q-34 0 -65.5 8.5t-65 30t-53.5 67.5t-20 112zM105 702v101l136 40l136 -40v-101l-136 36z" />
<glyph unicode="&#x109;" horiz-adv-x="467" d="M37 198v266q0 53 14 93.5t35 63.5t49.5 37.5t53.5 19.5t52 5q37 0 69 -10.5t63 -36.5t48.5 -78t16.5 -125h-153q1 47 -9.5 66.5t-35.5 19.5q-44 0 -44 -59v-259q0 -59 44 -59q25 0 35.5 21t9.5 77h153q1 -62 -10.5 -109.5t-30.5 -75.5t-46.5 -45.5t-53.5 -23.5t-56 -6 q-34 0 -65.5 8.5t-65 30t-53.5 67.5t-20 112zM105 702v101l136 40l136 -40v-101l-136 36z" />
<glyph unicode="&#x10a;" horiz-adv-x="467" d="M37 198v266q0 53 14 93.5t35 63.5t49.5 37.5t53.5 19.5t52 5q37 0 69 -10.5t63 -36.5t48.5 -78t16.5 -125h-153q1 47 -9.5 66.5t-35.5 19.5q-44 0 -44 -59v-259q0 -59 44 -59q25 0 35.5 21t9.5 77h153q1 -62 -10.5 -109.5t-30.5 -75.5t-46.5 -45.5t-53.5 -23.5t-56 -6 q-34 0 -65.5 8.5t-65 30t-53.5 67.5t-20 112zM174 704v134h134v-134h-134z" />
<glyph unicode="&#x10b;" horiz-adv-x="467" d="M37 198v266q0 53 14 93.5t35 63.5t49.5 37.5t53.5 19.5t52 5q37 0 69 -10.5t63 -36.5t48.5 -78t16.5 -125h-153q1 47 -9.5 66.5t-35.5 19.5q-44 0 -44 -59v-259q0 -59 44 -59q25 0 35.5 21t9.5 77h153q1 -62 -10.5 -109.5t-30.5 -75.5t-46.5 -45.5t-53.5 -23.5t-56 -6 q-34 0 -65.5 8.5t-65 30t-53.5 67.5t-20 112zM174 704v134h134v-134h-134z" />
<glyph unicode="&#x10c;" horiz-adv-x="467" d="M37 198v266q0 53 14 93.5t35 63.5t49.5 37.5t53.5 19.5t52 5q37 0 69 -10.5t63 -36.5t48.5 -78t16.5 -125h-153q1 47 -9.5 66.5t-35.5 19.5q-44 0 -44 -59v-259q0 -59 44 -59q25 0 35.5 21t9.5 77h153q1 -62 -10.5 -109.5t-30.5 -75.5t-46.5 -45.5t-53.5 -23.5t-56 -6 q-34 0 -65.5 8.5t-65 30t-53.5 67.5t-20 112zM105 735v98q99 -24 136 -32l136 32v-98l-136 -37z" />
<glyph unicode="&#x10d;" horiz-adv-x="467" d="M37 198v266q0 53 14 93.5t35 63.5t49.5 37.5t53.5 19.5t52 5q37 0 69 -10.5t63 -36.5t48.5 -78t16.5 -125h-153q1 47 -9.5 66.5t-35.5 19.5q-44 0 -44 -59v-259q0 -59 44 -59q25 0 35.5 21t9.5 77h153q1 -62 -10.5 -109.5t-30.5 -75.5t-46.5 -45.5t-53.5 -23.5t-56 -6 q-34 0 -65.5 8.5t-65 30t-53.5 67.5t-20 112zM105 735v98q99 -24 136 -32l136 32v-98l-136 -37z" />
<glyph unicode="&#x10e;" horiz-adv-x="482" d="M50 0v663h152q127 0 186 -52.5t59 -190.5v-177q0 -138 -59 -190.5t-186 -52.5h-152zM91 733v98q99 -24 136 -32l136 32v-98l-136 -37zM210 161h22q28 0 41 14t13 47v219q0 34 -13 47.5t-41 13.5h-22v-341z" />
<glyph unicode="&#x10f;" horiz-adv-x="482" d="M50 0v663h152q127 0 186 -52.5t59 -190.5v-177q0 -138 -59 -190.5t-186 -52.5h-152zM91 733v98q99 -24 136 -32l136 32v-98l-136 -37zM210 161h22q28 0 41 14t13 47v219q0 34 -13 47.5t-41 13.5h-22v-341z" />
<glyph unicode="&#x110;" horiz-adv-x="482" d="M11 266v131h39v266h152q127 0 186 -52.5t59 -190.5v-177q0 -138 -59 -190.5t-186 -52.5h-152v266h-39zM210 161h22q28 0 41 14t13 47v219q0 34 -13 47.5t-41 13.5h-22v-105h36v-131h-36v-105z" />
<glyph unicode="&#x111;" horiz-adv-x="482" d="M50 0v663h152q127 0 186 -52.5t59 -190.5v-177q0 -138 -59 -190.5t-186 -52.5h-152zM210 161h22q28 0 41 14t13 47v219q0 34 -13 47.5t-41 13.5h-22v-341z" />
<glyph unicode="&#x112;" horiz-adv-x="424" d="M50 0v663h335v-159h-175v-84h167v-150h-167v-110h179v-160h-339zM65 707v105h308v-105h-308z" />
<glyph unicode="&#x113;" horiz-adv-x="424" d="M50 0v663h335v-159h-175v-84h167v-150h-167v-110h179v-160h-339zM65 707v105h308v-105h-308z" />
<glyph unicode="&#x114;" horiz-adv-x="424" d="M50 0v663h335v-159h-175v-84h167v-150h-167v-110h179v-160h-339zM61 824h117q1 -14 11.5 -22.5t27.5 -8.5t27.5 8.5t11.5 22.5h117q0 -58 -43 -93.5t-113 -35.5t-113 35.5t-43 93.5z" />
<glyph unicode="&#x115;" horiz-adv-x="424" d="M50 0v663h335v-159h-175v-84h167v-150h-167v-110h179v-160h-339zM61 824h117q1 -14 11.5 -22.5t27.5 -8.5t27.5 8.5t11.5 22.5h117q0 -58 -43 -93.5t-113 -35.5t-113 35.5t-43 93.5z" />
<glyph unicode="&#x116;" horiz-adv-x="424" d="M50 0v663h335v-159h-175v-84h167v-150h-167v-110h179v-160h-339zM152 704v134h134v-134h-134z" />
<glyph unicode="&#x117;" horiz-adv-x="424" d="M50 0v663h335v-159h-175v-84h167v-150h-167v-110h179v-160h-339zM152 704v134h134v-134h-134z" />
<glyph unicode="&#x118;" horiz-adv-x="424" d="M50 0v663h335v-159h-175v-84h167v-150h-167v-110h179v-160h-1q-41 -30 -41 -62q0 -28 37 -28h4v-79h-36q-108 0 -108 80q0 28 19 52t50 37h-263z" />
<glyph unicode="&#x119;" horiz-adv-x="424" d="M50 0v663h335v-159h-175v-84h167v-150h-167v-110h179v-160h-1q-41 -30 -41 -62q0 -28 37 -28h4v-79h-36q-108 0 -108 80q0 28 19 52t50 37h-263z" />
<glyph unicode="&#x11a;" horiz-adv-x="424" d="M50 0v663h335v-159h-175v-84h167v-150h-167v-110h179v-160h-339zM83 735v98q99 -24 136 -32l136 32v-98l-136 -37z" />
<glyph unicode="&#x11b;" horiz-adv-x="424" d="M50 0v663h335v-159h-175v-84h167v-150h-167v-110h179v-160h-339zM83 735v98q99 -24 136 -32l136 32v-98l-136 -37z" />
<glyph unicode="&#x11c;" horiz-adv-x="493" d="M37 220v231q0 66 19.5 114t52 72t67.5 35t73 11q33 0 64.5 -9t66.5 -32.5t56 -76t20 -127.5l-152 3q1 82 -53 82q-23 0 -38.5 -15t-15.5 -49v-255q0 -66 55 -66q52 0 52 57v14h-66v137h218v-127q0 -56 -13.5 -99.5t-34.5 -69.5t-49.5 -42t-55 -22t-54.5 -6q-37 0 -70 9.5 t-67 33t-54.5 74t-20.5 123.5zM114 702v101l136 40l136 -40v-101l-136 36z" />
<glyph unicode="&#x11d;" horiz-adv-x="493" d="M37 220v231q0 66 19.5 114t52 72t67.5 35t73 11q33 0 64.5 -9t66.5 -32.5t56 -76t20 -127.5l-152 3q1 82 -53 82q-23 0 -38.5 -15t-15.5 -49v-255q0 -66 55 -66q52 0 52 57v14h-66v137h218v-127q0 -56 -13.5 -99.5t-34.5 -69.5t-49.5 -42t-55 -22t-54.5 -6q-37 0 -70 9.5 t-67 33t-54.5 74t-20.5 123.5zM114 702v101l136 40l136 -40v-101l-136 36z" />
<glyph unicode="&#x11e;" horiz-adv-x="493" d="M37 220v231q0 66 19.5 114t52 72t67.5 35t73 11q33 0 64.5 -9t66.5 -32.5t56 -76t20 -127.5l-152 3q1 82 -53 82q-23 0 -38.5 -15t-15.5 -49v-255q0 -66 55 -66q52 0 52 57v14h-66v137h218v-127q0 -56 -13.5 -99.5t-34.5 -69.5t-49.5 -42t-55 -22t-54.5 -6q-37 0 -70 9.5 t-67 33t-54.5 74t-20.5 123.5zM92 824h117q1 -14 11.5 -22.5t27.5 -8.5t27.5 8.5t11.5 22.5h117q0 -58 -43 -93.5t-113 -35.5t-113 35.5t-43 93.5z" />
<glyph unicode="&#x11f;" horiz-adv-x="493" d="M37 220v231q0 66 19.5 114t52 72t67.5 35t73 11q33 0 64.5 -9t66.5 -32.5t56 -76t20 -127.5l-152 3q1 82 -53 82q-23 0 -38.5 -15t-15.5 -49v-255q0 -66 55 -66q52 0 52 57v14h-66v137h218v-127q0 -56 -13.5 -99.5t-34.5 -69.5t-49.5 -42t-55 -22t-54.5 -6q-37 0 -70 9.5 t-67 33t-54.5 74t-20.5 123.5zM92 824h117q1 -14 11.5 -22.5t27.5 -8.5t27.5 8.5t11.5 22.5h117q0 -58 -43 -93.5t-113 -35.5t-113 35.5t-43 93.5z" />
<glyph unicode="&#x120;" horiz-adv-x="493" d="M37 220v231q0 66 19.5 114t52 72t67.5 35t73 11q33 0 64.5 -9t66.5 -32.5t56 -76t20 -127.5l-152 3q1 82 -53 82q-23 0 -38.5 -15t-15.5 -49v-255q0 -66 55 -66q52 0 52 57v14h-66v137h218v-127q0 -56 -13.5 -99.5t-34.5 -69.5t-49.5 -42t-55 -22t-54.5 -6q-37 0 -70 9.5 t-67 33t-54.5 74t-20.5 123.5zM183 704v134h134v-134h-134z" />
<glyph unicode="&#x121;" horiz-adv-x="493" d="M37 220v231q0 66 19.5 114t52 72t67.5 35t73 11q33 0 64.5 -9t66.5 -32.5t56 -76t20 -127.5l-152 3q1 82 -53 82q-23 0 -38.5 -15t-15.5 -49v-255q0 -66 55 -66q52 0 52 57v14h-66v137h218v-127q0 -56 -13.5 -99.5t-34.5 -69.5t-49.5 -42t-55 -22t-54.5 -6q-37 0 -70 9.5 t-67 33t-54.5 74t-20.5 123.5zM183 704v134h134v-134h-134z" />
<glyph unicode="&#x122;" horiz-adv-x="493" d="M37 220v231q0 66 19.5 114t52 72t67.5 35t73 11q33 0 64.5 -9t66.5 -32.5t56 -76t20 -127.5l-152 3q1 82 -53 82q-23 0 -38.5 -15t-15.5 -49v-255q0 -66 55 -66q52 0 52 57v14h-66v137h218v-127q0 -56 -13.5 -99.5t-34.5 -69.5t-49.5 -42t-55 -22t-54.5 -6q-37 0 -70 9.5 t-67 33t-54.5 74t-20.5 123.5zM136 -169l56 122h117l-60 -122h-113z" />
<glyph unicode="&#x123;" horiz-adv-x="493" d="M37 220v231q0 66 19.5 114t52 72t67.5 35t73 11q33 0 64.5 -9t66.5 -32.5t56 -76t20 -127.5l-152 3q1 82 -53 82q-23 0 -38.5 -15t-15.5 -49v-255q0 -66 55 -66q52 0 52 57v14h-66v137h218v-127q0 -56 -13.5 -99.5t-34.5 -69.5t-49.5 -42t-55 -22t-54.5 -6q-37 0 -70 9.5 t-67 33t-54.5 74t-20.5 123.5zM136 -169l56 122h117l-60 -122h-113z" />
<glyph unicode="&#x124;" horiz-adv-x="503" d="M50 0v663h158v-236h87v236h158v-663h-158v274h-87v-274h-158zM115 702v101l136 40l136 -40v-101l-136 36z" />
<glyph unicode="&#x125;" horiz-adv-x="503" d="M50 0v663h158v-236h87v236h158v-663h-158v274h-87v-274h-158zM115 702v101l136 40l136 -40v-101l-136 36z" />
<glyph unicode="&#x126;" horiz-adv-x="503" d="M10 473v131h40v59h158v-59h87v59h158v-59h40v-131h-40v-473h-158v274h-87v-274h-158v473h-40zM208 407h87v66h-87v-66z" />
<glyph unicode="&#x127;" horiz-adv-x="503" d="M10 473v131h40v59h158v-59h87v59h158v-59h40v-131h-40v-473h-158v274h-87v-274h-158v473h-40zM208 407h87v66h-87v-66z" />
<glyph unicode="&#x128;" d="M-2 701q1 59 21.5 93t57.5 34q24 0 52.5 -14.5t39.5 -14.5q24 0 26 29h67q0 -60 -20 -93.5t-57 -33.5q-23 0 -51 14t-39 14q-28 0 -28 -28h-69zM50 0v663h160v-663h-160z" />
<glyph unicode="&#x129;" d="M-2 701q1 59 21.5 93t57.5 34q24 0 52.5 -14.5t39.5 -14.5q24 0 26 29h67q0 -60 -20 -93.5t-57 -33.5q-23 0 -51 14t-39 14q-28 0 -28 -28h-69zM50 0v663h160v-663h-160z" />
<glyph unicode="&#x12a;" d="M23 707v105h215v-105h-215zM50 0v663h160v-663h-160z" />
<glyph unicode="&#x12b;" d="M23 707v105h215v-105h-215zM50 0v663h160v-663h-160z" />
<glyph unicode="&#x12c;" d="M-28 824h117q1 -14 11.5 -22.5t27.5 -8.5t27.5 8.5t11.5 22.5h117q0 -58 -43 -93.5t-113 -35.5t-113 35.5t-43 93.5zM50 0v663h160v-663h-160z" />
<glyph unicode="&#x12d;" d="M-28 824h117q1 -14 11.5 -22.5t27.5 -8.5t27.5 8.5t11.5 22.5h117q0 -58 -43 -93.5t-113 -35.5t-113 35.5t-43 93.5zM50 0v663h160v-663h-160z" />
<glyph unicode="&#x12e;" d="M50 0v663h160v-663h-160zM50 705v135h160v-135h-160zM56 -89q0 28 19 52t50 37h85q-51 -26 -51 -58t37 -32h4v-79h-36q-108 0 -108 80z" />
<glyph unicode="&#x12f;" d="M50 0v663h160v-663h-160zM50 705v135h160v-135h-160zM56 -89q0 28 19 52t50 37h85q-51 -26 -51 -58t37 -32h4v-79h-36q-108 0 -108 80z" />
<glyph unicode="&#x130;" d="M50 0v663h160v-663h-160zM50 705v135h160v-135h-160z" />
<glyph unicode="&#x131;" d="M50 0v663h160v-663h-160z" />
<glyph unicode="&#x132;" horiz-adv-x="698" d="M246 209v16h160v-20q0 -63 47 -63q48 0 48 63v458h160v-454q0 -229 -207 -229q-99 0 -153.5 52t-54.5 177zM246 254v409h160v-409h-160zM246 706v134h162v-134h-162zM500 706v134h162v-134h-162z" />
<glyph unicode="&#x133;" horiz-adv-x="698" d="M246 209v16h160v-20q0 -63 47 -63q48 0 48 63v458h160v-454q0 -229 -207 -229q-99 0 -153.5 52t-54.5 177zM246 254v409h160v-409h-160zM246 706v134h162v-134h-162zM500 706v134h162v-134h-162z" />
<glyph unicode="&#x134;" horiz-adv-x="438" d="M6 230h146q-4 -86 45 -86q44 0 44 60v459h160v-460q0 -64 -17.5 -110t-48 -69.5t-63.5 -33.5t-72 -10q-85 0 -142.5 60.5t-51.5 189.5zM208 702v101l112 40l114 -40v-101l-114 36z" />
<glyph unicode="&#x135;" horiz-adv-x="438" d="M6 230h146q-4 -86 45 -86q44 0 44 60v459h160v-460q0 -64 -17.5 -110t-48 -69.5t-63.5 -33.5t-72 -10q-85 0 -142.5 60.5t-51.5 189.5zM208 702v101l112 40l114 -40v-101l-114 36z" />
<glyph unicode="&#x136;" horiz-adv-x="519" d="M50 0v663h159v-280h5l91 280h170l-105 -296v-4l133 -363h-179l-110 324h-5v-324h-159zM152 -169l56 122h117l-60 -122h-113z" />
<glyph unicode="&#x137;" horiz-adv-x="519" d="M50 0v663h159v-280h5l91 280h170l-105 -296v-4l133 -363h-179l-110 324h-5v-324h-159zM152 -169l56 122h117l-60 -122h-113z" />
<glyph unicode="&#x139;" horiz-adv-x="387" d="M50 0v663h158v-503h164v-160h-322zM59 708l63 137h133l-68 -137h-128z" />
<glyph unicode="&#x13a;" horiz-adv-x="387" d="M50 0v663h158v-503h164v-160h-322zM59 708l63 137h133l-68 -137h-128z" />
<glyph unicode="&#x13b;" horiz-adv-x="387" d="M50 0v663h158v-503h164v-160h-322zM98 -169l56 122h117l-60 -122h-113z" />
<glyph unicode="&#x13c;" horiz-adv-x="387" d="M50 0v663h158v-503h164v-160h-322zM98 -169l56 122h117l-60 -122h-113z" />
<glyph unicode="&#x13d;" horiz-adv-x="387" d="M50 0v663h158v-503h164v-160h-322zM256 457l20 206h116l-31 -206h-105z" />
<glyph unicode="&#x13e;" horiz-adv-x="387" d="M50 0v663h158v-503h164v-160h-322zM256 457l20 206h116l-31 -206h-105z" />
<glyph unicode="&#x13f;" horiz-adv-x="387" d="M50 0v663h158v-503h164v-160h-322zM263 279v130h120v-130h-120z" />
<glyph unicode="&#x140;" horiz-adv-x="387" d="M50 0v663h158v-503h164v-160h-322zM263 279v130h120v-130h-120z" />
<glyph unicode="&#x141;" horiz-adv-x="387" d="M9 225v131l41 18v289h158v-218l86 39v-131l-86 -39v-154h164v-160h-322v243z" />
<glyph unicode="&#x142;" horiz-adv-x="387" d="M9 225v131l41 18v289h158v-218l86 39v-131l-86 -39v-154h164v-160h-322v243z" />
<glyph unicode="&#x143;" horiz-adv-x="542" d="M50 0v663h169l119 -309h6v309h148v-663h-162l-125 342h-6v-342h-149zM203 708l63 137h133l-68 -137h-128z" />
<glyph unicode="&#x144;" horiz-adv-x="542" d="M50 0v663h169l119 -309h6v309h148v-663h-162l-125 342h-6v-342h-149zM203 708l63 137h133l-68 -137h-128z" />
<glyph unicode="&#x145;" horiz-adv-x="542" d="M50 0v663h169l119 -309h6v309h148v-663h-162l-125 342h-6v-342h-149zM154 -169l56 122h117l-60 -122h-113z" />
<glyph unicode="&#x146;" horiz-adv-x="542" d="M50 0v663h169l119 -309h6v309h148v-663h-162l-125 342h-6v-342h-149zM154 -169l56 122h117l-60 -122h-113z" />
<glyph unicode="&#x147;" horiz-adv-x="542" d="M50 0v663h169l119 -309h6v309h148v-663h-162l-125 342h-6v-342h-149zM135 735v98q99 -24 136 -32l136 32v-98l-136 -37z" />
<glyph unicode="&#x148;" horiz-adv-x="542" d="M50 0v663h169l119 -309h6v309h148v-663h-162l-125 342h-6v-342h-149zM135 735v98q99 -24 136 -32l136 32v-98l-136 -37z" />
<glyph unicode="&#x14a;" horiz-adv-x="542" d="M50 0v663h169l119 -309h6v309h148v-627q0 -59 -14.5 -101t-40.5 -63.5t-54 -31t-62 -9.5h-36v123h26q37 0 40 35l-146 353h-6v-342h-149z" />
<glyph unicode="&#x14b;" horiz-adv-x="542" d="M50 0v663h169l119 -309h6v309h148v-627q0 -59 -14.5 -101t-40.5 -63.5t-54 -31t-62 -9.5h-36v123h26q37 0 40 35l-146 353h-6v-342h-149z" />
<glyph unicode="&#x14c;" horiz-adv-x="500" d="M37 202v258q0 111 61.5 167t151.5 56t151.5 -56t61.5 -166v-258q0 -112 -61 -167.5t-152 -55.5t-152 54t-61 168zM96 707v105h308v-105h-308zM197 205q0 -31 15 -46.5t38 -15.5t38 15.5t15 46.5v251q0 32 -15 47.5t-38 15.5t-38 -15.5t-15 -47.5v-251z" />
<glyph unicode="&#x14d;" horiz-adv-x="500" d="M37 202v258q0 111 61.5 167t151.5 56t151.5 -56t61.5 -166v-258q0 -112 -61 -167.5t-152 -55.5t-152 54t-61 168zM96 707v105h308v-105h-308zM197 205q0 -31 15 -46.5t38 -15.5t38 15.5t15 46.5v251q0 32 -15 47.5t-38 15.5t-38 -15.5t-15 -47.5v-251z" />
<glyph unicode="&#x14e;" horiz-adv-x="500" d="M37 202v258q0 111 61.5 167t151.5 56t151.5 -56t61.5 -166v-258q0 -112 -61 -167.5t-152 -55.5t-152 54t-61 168zM92 824h117q1 -14 11.5 -22.5t27.5 -8.5t27.5 8.5t11.5 22.5h117q0 -58 -43 -93.5t-113 -35.5t-113 35.5t-43 93.5zM197 205q0 -31 15 -46.5t38 -15.5 t38 15.5t15 46.5v251q0 32 -15 47.5t-38 15.5t-38 -15.5t-15 -47.5v-251z" />
<glyph unicode="&#x14f;" horiz-adv-x="500" d="M37 202v258q0 111 61.5 167t151.5 56t151.5 -56t61.5 -166v-258q0 -112 -61 -167.5t-152 -55.5t-152 54t-61 168zM92 824h117q1 -14 11.5 -22.5t27.5 -8.5t27.5 8.5t11.5 22.5h117q0 -58 -43 -93.5t-113 -35.5t-113 35.5t-43 93.5zM197 205q0 -31 15 -46.5t38 -15.5 t38 15.5t15 46.5v251q0 32 -15 47.5t-38 15.5t-38 -15.5t-15 -47.5v-251z" />
<glyph unicode="&#x150;" horiz-adv-x="500" d="M37 202v258q0 111 61.5 167t151.5 56t151.5 -56t61.5 -166v-258q0 -112 -61 -167.5t-152 -55.5t-152 54t-61 168zM110 711l63 137h119l-68 -137h-114zM197 205q0 -31 15 -46.5t38 -15.5t38 15.5t15 46.5v251q0 32 -15 47.5t-38 15.5t-38 -15.5t-15 -47.5v-251zM254 711 l63 137h119l-68 -137h-114z" />
<glyph unicode="&#x151;" horiz-adv-x="500" d="M37 202v258q0 111 61.5 167t151.5 56t151.5 -56t61.5 -166v-258q0 -112 -61 -167.5t-152 -55.5t-152 54t-61 168zM110 711l63 137h119l-68 -137h-114zM197 205q0 -31 15 -46.5t38 -15.5t38 15.5t15 46.5v251q0 32 -15 47.5t-38 15.5t-38 -15.5t-15 -47.5v-251zM254 711 l63 137h119l-68 -137h-114z" />
<glyph unicode="&#x152;" horiz-adv-x="678" d="M37 206v249q0 108 56.5 163t142.5 55q48 0 74 -20v10h329v-159h-177v-84h169v-150h-169v-110h181v-160h-327v10q-24 -20 -80 -20q-87 0 -143 52.5t-56 163.5zM197 205q0 -31 15.5 -46.5t40.5 -15.5t40.5 15.5t15.5 46.5v251q0 32 -15.5 47.5t-40.5 15.5t-40.5 -15.5 t-15.5 -47.5v-251z" />
<glyph unicode="&#x153;" horiz-adv-x="678" d="M37 206v249q0 108 56.5 163t142.5 55q48 0 74 -20v10h329v-159h-177v-84h169v-150h-169v-110h181v-160h-327v10q-24 -20 -80 -20q-87 0 -143 52.5t-56 163.5zM197 205q0 -31 15.5 -46.5t40.5 -15.5t40.5 15.5t15.5 46.5v251q0 32 -15.5 47.5t-40.5 15.5t-40.5 -15.5 t-15.5 -47.5v-251z" />
<glyph unicode="&#x154;" horiz-adv-x="479" d="M50 0v663h193q106 0 154 -50.5t48 -124.5q0 -52 -25.5 -89.5t-62.5 -58.5v-4q40 -11 67.5 -47.5t27.5 -101.5v-187h-160v183q0 34 -12.5 50t-41.5 16h-28v-249h-160zM169 708l63 137h133l-68 -137h-128zM210 393h23q56 0 56 68q0 60 -53 60h-26v-128z" />
<glyph unicode="&#x155;" horiz-adv-x="479" d="M50 0v663h193q106 0 154 -50.5t48 -124.5q0 -52 -25.5 -89.5t-62.5 -58.5v-4q40 -11 67.5 -47.5t27.5 -101.5v-187h-160v183q0 34 -12.5 50t-41.5 16h-28v-249h-160zM169 708l63 137h133l-68 -137h-128zM210 393h23q56 0 56 68q0 60 -53 60h-26v-128z" />
<glyph unicode="&#x156;" horiz-adv-x="479" d="M50 0v663h193q106 0 154 -50.5t48 -124.5q0 -52 -25.5 -89.5t-62.5 -58.5v-4q40 -11 67.5 -47.5t27.5 -101.5v-187h-160v183q0 34 -12.5 50t-41.5 16h-28v-249h-160zM137 -169l56 122h117l-60 -122h-113zM210 393h23q56 0 56 68q0 60 -53 60h-26v-128z" />
<glyph unicode="&#x157;" horiz-adv-x="479" d="M50 0v663h193q106 0 154 -50.5t48 -124.5q0 -52 -25.5 -89.5t-62.5 -58.5v-4q40 -11 67.5 -47.5t27.5 -101.5v-187h-160v183q0 34 -12.5 50t-41.5 16h-28v-249h-160zM137 -169l56 122h117l-60 -122h-113zM210 393h23q56 0 56 68q0 60 -53 60h-26v-128z" />
<glyph unicode="&#x158;" horiz-adv-x="479" d="M50 0v663h193q106 0 154 -50.5t48 -124.5q0 -52 -25.5 -89.5t-62.5 -58.5v-4q40 -11 67.5 -47.5t27.5 -101.5v-187h-160v183q0 34 -12.5 50t-41.5 16h-28v-249h-160zM101 735v98q99 -24 136 -32l136 32v-98l-136 -37zM210 393h23q56 0 56 68q0 60 -53 60h-26v-128z" />
<glyph unicode="&#x159;" horiz-adv-x="479" d="M50 0v663h193q106 0 154 -50.5t48 -124.5q0 -52 -25.5 -89.5t-62.5 -58.5v-4q40 -11 67.5 -47.5t27.5 -101.5v-187h-160v183q0 34 -12.5 50t-41.5 16h-28v-249h-160zM101 735v98q99 -24 136 -32l136 32v-98l-136 -37zM210 393h23q56 0 56 68q0 60 -53 60h-26v-128z" />
<glyph unicode="&#x15a;" horiz-adv-x="452" d="M28 214h142q-3 -89 51 -89q43 0 43 43q0 37 -40 66l-74 54q-68 50 -93.5 99.5t-25.5 113.5q0 81 60 131.5t140 50.5q86 0 141.5 -55t52.5 -180h-142q3 93 -49 93q-46 0 -46 -43q0 -36 40 -66l88 -66q65 -49 88.5 -94.5t23.5 -99.5q0 -87 -58 -139.5t-143 -52.5 q-90 0 -146 55t-53 179zM167 708l63 137h133l-68 -137h-128z" />
<glyph unicode="&#x15b;" horiz-adv-x="452" d="M28 214h142q-3 -89 51 -89q43 0 43 43q0 37 -40 66l-74 54q-68 50 -93.5 99.5t-25.5 113.5q0 81 60 131.5t140 50.5q86 0 141.5 -55t52.5 -180h-142q3 93 -49 93q-46 0 -46 -43q0 -36 40 -66l88 -66q65 -49 88.5 -94.5t23.5 -99.5q0 -87 -58 -139.5t-143 -52.5 q-90 0 -146 55t-53 179zM167 708l63 137h133l-68 -137h-128z" />
<glyph unicode="&#x15c;" horiz-adv-x="452" d="M28 214h142q-3 -89 51 -89q43 0 43 43q0 37 -40 66l-74 54q-68 50 -93.5 99.5t-25.5 113.5q0 81 60 131.5t140 50.5q86 0 141.5 -55t52.5 -180h-142q3 93 -49 93q-46 0 -46 -43q0 -36 40 -66l88 -66q65 -49 88.5 -94.5t23.5 -99.5q0 -87 -58 -139.5t-143 -52.5 q-90 0 -146 55t-53 179zM99 702v101l136 40l136 -40v-101l-136 36z" />
<glyph unicode="&#x15d;" horiz-adv-x="452" d="M28 214h142q-3 -89 51 -89q43 0 43 43q0 37 -40 66l-74 54q-68 50 -93.5 99.5t-25.5 113.5q0 81 60 131.5t140 50.5q86 0 141.5 -55t52.5 -180h-142q3 93 -49 93q-46 0 -46 -43q0 -36 40 -66l88 -66q65 -49 88.5 -94.5t23.5 -99.5q0 -87 -58 -139.5t-143 -52.5 q-90 0 -146 55t-53 179zM99 702v101l136 40l136 -40v-101l-136 36z" />
<glyph unicode="&#x15e;" horiz-adv-x="452" d="M28 214h142q-3 -89 51 -89q43 0 43 43q0 37 -40 66l-74 54q-68 50 -93.5 99.5t-25.5 113.5q0 81 60 131.5t140 50.5q86 0 141.5 -55t52.5 -180h-142q3 93 -49 93q-46 0 -46 -43q0 -36 40 -66l88 -66q65 -49 88.5 -94.5t23.5 -99.5q0 -87 -58 -139.5t-143 -52.5h-4l-6 -18 q9 9 28 9q30 0 50 -19t20 -55q0 -40 -24.5 -61.5t-61.5 -21.5q-31 0 -58.5 21t-27.5 54h63q2 -16 22 -16q23 0 23 26q0 11 -6 17.5t-16 6.5q-15 0 -22 -13l-53 1l-1 21l23 53q-69 13 -110 68.5t-38 160.5z" />
<glyph unicode="&#x15f;" horiz-adv-x="452" d="M28 214h142q-3 -89 51 -89q43 0 43 43q0 37 -40 66l-74 54q-68 50 -93.5 99.5t-25.5 113.5q0 81 60 131.5t140 50.5q86 0 141.5 -55t52.5 -180h-142q3 93 -49 93q-46 0 -46 -43q0 -36 40 -66l88 -66q65 -49 88.5 -94.5t23.5 -99.5q0 -87 -58 -139.5t-143 -52.5h-4l-6 -18 q9 9 28 9q30 0 50 -19t20 -55q0 -40 -24.5 -61.5t-61.5 -21.5q-31 0 -58.5 21t-27.5 54h63q2 -16 22 -16q23 0 23 26q0 11 -6 17.5t-16 6.5q-15 0 -22 -13l-53 1l-1 21l23 53q-69 13 -110 68.5t-38 160.5z" />
<glyph unicode="&#x160;" horiz-adv-x="452" d="M28 214h142q-3 -89 51 -89q43 0 43 43q0 37 -40 66l-74 54q-68 50 -93.5 99.5t-25.5 113.5q0 81 60 131.5t140 50.5q86 0 141.5 -55t52.5 -180h-142q3 93 -49 93q-46 0 -46 -43q0 -36 40 -66l88 -66q65 -49 88.5 -94.5t23.5 -99.5q0 -87 -58 -139.5t-143 -52.5 q-90 0 -146 55t-53 179zM99 735v98q99 -24 136 -32l136 32v-98l-136 -37z" />
<glyph unicode="&#x161;" horiz-adv-x="452" d="M28 214h142q-3 -89 51 -89q43 0 43 43q0 37 -40 66l-74 54q-68 50 -93.5 99.5t-25.5 113.5q0 81 60 131.5t140 50.5q86 0 141.5 -55t52.5 -180h-142q3 93 -49 93q-46 0 -46 -43q0 -36 40 -66l88 -66q65 -49 88.5 -94.5t23.5 -99.5q0 -87 -58 -139.5t-143 -52.5 q-90 0 -146 55t-53 179zM99 735v98q99 -24 136 -32l136 32v-98l-136 -37z" />
<glyph unicode="&#x162;" horiz-adv-x="420" d="M15 508v155h390v-155h-113v-508h-160v508h-117zM101 -169l56 122h117l-60 -122h-113z" />
<glyph unicode="&#x163;" horiz-adv-x="420" d="M15 508v155h390v-155h-113v-508h-160v508h-117zM101 -169l56 122h117l-60 -122h-113z" />
<glyph unicode="&#x164;" horiz-adv-x="420" d="M15 508v155h390v-155h-113v-508h-160v508h-117zM74 735v98q99 -24 136 -32l136 32v-98l-136 -37z" />
<glyph unicode="&#x165;" horiz-adv-x="420" d="M15 508v155h390v-155h-113v-508h-160v508h-117zM74 735v98q99 -24 136 -32l136 32v-98l-136 -37z" />
<glyph unicode="&#x166;" horiz-adv-x="420" d="M15 508v155h390v-155h-113v-121h100v-136h-100v-251h-160v251h-104v136h104v121h-117z" />
<glyph unicode="&#x167;" horiz-adv-x="420" d="M15 508v155h390v-155h-113v-508h-160v508h-117z" />
<glyph unicode="&#x168;" horiz-adv-x="495" d="M40 209v454h160v-456q0 -63 47 -63q48 0 48 63v456h160v-454q0 -229 -207 -229q-208 0 -208 229zM95 701q1 59 25.5 93t69.5 34q29 0 65.5 -17t49.5 -17q24 0 26 34h81q0 -59 -24.5 -93t-67.5 -34q-28 0 -64.5 16.5t-49.5 16.5q-28 0 -28 -33h-83z" />
<glyph unicode="&#x169;" horiz-adv-x="495" d="M40 209v454h160v-456q0 -63 47 -63q48 0 48 63v456h160v-454q0 -229 -207 -229q-208 0 -208 229zM95 701q1 59 25.5 93t69.5 34q29 0 65.5 -17t49.5 -17q24 0 26 34h81q0 -59 -24.5 -93t-67.5 -34q-28 0 -64.5 16.5t-49.5 16.5q-28 0 -28 -33h-83z" />
<glyph unicode="&#x16a;" horiz-adv-x="495" d="M40 209v454h160v-456q0 -63 47 -63q48 0 48 63v456h160v-454q0 -229 -207 -229q-208 0 -208 229zM94 707v105h308v-105h-308z" />
<glyph unicode="&#x16b;" horiz-adv-x="495" d="M40 209v454h160v-456q0 -63 47 -63q48 0 48 63v456h160v-454q0 -229 -207 -229q-208 0 -208 229zM94 707v105h308v-105h-308z" />
<glyph unicode="&#x16c;" horiz-adv-x="495" d="M40 209v454h160v-456q0 -63 47 -63q48 0 48 63v456h160v-454q0 -229 -207 -229q-208 0 -208 229zM90 824h117q1 -14 11.5 -22.5t27.5 -8.5t27.5 8.5t11.5 22.5h117q0 -58 -43 -93.5t-113 -35.5t-113 35.5t-43 93.5z" />
<glyph unicode="&#x16d;" horiz-adv-x="495" d="M40 209v454h160v-456q0 -63 47 -63q48 0 48 63v456h160v-454q0 -229 -207 -229q-208 0 -208 229zM90 824h117q1 -14 11.5 -22.5t27.5 -8.5t27.5 8.5t11.5 22.5h117q0 -58 -43 -93.5t-113 -35.5t-113 35.5t-43 93.5z" />
<glyph unicode="&#x16e;" horiz-adv-x="495" d="M40 209v454h137q-56 34 -56 106q0 60 38.5 92.5t89.5 32.5t89.5 -32.5t38.5 -92.5q0 -71 -56 -106h134v-454q0 -229 -207 -229q-208 0 -208 229zM200 207q0 -63 47 -63q48 0 48 63v443q-21 -7 -46 -7q-28 0 -49 8v-444zM210 769q0 -19 11 -30t28 -11q16 0 27.5 11.5 t11.5 29.5t-11.5 29.5t-27.5 11.5q-17 0 -28 -11.5t-11 -29.5z" />
<glyph unicode="&#x16f;" horiz-adv-x="495" d="M40 209v454h137q-56 34 -56 106q0 60 38.5 92.5t89.5 32.5t89.5 -32.5t38.5 -92.5q0 -71 -56 -106h134v-454q0 -229 -207 -229q-208 0 -208 229zM200 207q0 -63 47 -63q48 0 48 63v443q-21 -7 -46 -7q-28 0 -49 8v-444zM210 769q0 -19 11 -30t28 -11q16 0 27.5 11.5 t11.5 29.5t-11.5 29.5t-27.5 11.5q-17 0 -28 -11.5t-11 -29.5z" />
<glyph unicode="&#x170;" horiz-adv-x="495" d="M40 209v454h160v-456q0 -63 47 -63q48 0 48 63v456h160v-454q0 -229 -207 -229q-208 0 -208 229zM108 711l63 137h119l-68 -137h-114zM252 711l63 137h119l-68 -137h-114z" />
<glyph unicode="&#x171;" horiz-adv-x="495" d="M40 209v454h160v-456q0 -63 47 -63q48 0 48 63v456h160v-454q0 -229 -207 -229q-208 0 -208 229zM108 711l63 137h119l-68 -137h-114zM252 711l63 137h119l-68 -137h-114z" />
<glyph unicode="&#x172;" horiz-adv-x="495" d="M40 209v454h160v-456q0 -63 47 -63q48 0 48 63v456h160v-454q0 -181 -137 -222q-53 -16 -53 -55q0 -36 37 -36h4v-79h-36q-108 0 -108 80q0 53 58 84q-180 16 -180 228z" />
<glyph unicode="&#x173;" horiz-adv-x="495" d="M40 209v454h160v-456q0 -63 47 -63q48 0 48 63v456h160v-454q0 -181 -137 -222q-53 -16 -53 -55q0 -36 37 -36h4v-79h-36q-108 0 -108 80q0 53 58 84q-180 16 -180 228z" />
<glyph unicode="&#x174;" horiz-adv-x="672" d="M5 663h155l52 -326h6l66 326h105l66 -326h6l52 326h154l-129 -663h-123l-76 291h-6l-76 -291h-123zM200 702v101l136 40l136 -40v-101l-136 36z" />
<glyph unicode="&#x175;" horiz-adv-x="672" d="M5 663h155l52 -326h6l66 326h105l66 -326h6l52 326h154l-129 -663h-123l-76 291h-6l-76 -291h-123zM200 702v101l136 40l136 -40v-101l-136 36z" />
<glyph unicode="&#x176;" horiz-adv-x="482" d="M2 663h168l71 -212h6l71 212h162l-160 -411v-252h-160v252zM108 702v101l136 40l136 -40v-101l-136 36z" />
<glyph unicode="&#x177;" horiz-adv-x="482" d="M2 663h168l71 -222h6l71 222h162l-160 -411v-252h-160v252zM108 702v101l136 40l136 -40v-101l-136 36z" />
<glyph unicode="&#x178;" horiz-adv-x="482" d="M2 663h168l71 -222h6l71 222h162l-160 -411v-252h-160v252zM90 709v129h131v-129h-131zM268 709v129h131v-129h-131z" />
<glyph unicode="&#x179;" horiz-adv-x="426" d="M25 0v161l192 344h-187v158h364v-152l-191 -352h198v-159h-376zM148 708l63 137h133l-68 -137h-128z" />
<glyph unicode="&#x17a;" horiz-adv-x="426" d="M25 0v161l192 344h-187v158h364v-152l-191 -352h198v-159h-376zM148 708l63 137h133l-68 -137h-128z" />
<glyph unicode="&#x17b;" horiz-adv-x="426" d="M25 0v161l192 344h-187v158h364v-152l-191 -352h198v-159h-376zM149 704v134h134v-134h-134z" />
<glyph unicode="&#x17c;" horiz-adv-x="426" d="M25 0v161l192 344h-187v158h364v-152l-191 -352h198v-159h-376zM149 704v134h134v-134h-134z" />
<glyph unicode="&#x17d;" horiz-adv-x="426" d="M25 0v161l192 344h-187v158h364v-152l-191 -352h198v-159h-376zM80 735v98q99 -24 136 -32l136 32v-98l-136 -37z" />
<glyph unicode="&#x17e;" horiz-adv-x="426" d="M25 0v161l192 344h-187v158h364v-152l-191 -352h198v-159h-376zM80 735v98q99 -24 136 -32l136 32v-98l-136 -37z" />
<glyph unicode="&#x1fa;" horiz-adv-x="502" d="M4 0l156 663h37q-73 30 -73 115q0 60 38.5 92.5t89.5 32.5t89.5 -32.5t38.5 -92.5q0 -84 -73 -115h39l152 -663h-164l-23 123h-125l-23 -123h-159zM195 908l54 119h133l-59 -119h-128zM213 262h73l-33 201h-6zM213 778q0 -19 11 -30t28 -11q16 0 27.5 11.5t11.5 29.5 t-11.5 29.5t-27.5 11.5q-17 0 -28 -11.5t-11 -29.5z" />
<glyph unicode="&#x1fb;" horiz-adv-x="502" d="M4 0l156 663h37q-73 30 -73 115q0 60 38.5 92.5t89.5 32.5t89.5 -32.5t38.5 -92.5q0 -84 -73 -115h39l152 -663h-164l-23 123h-125l-23 -123h-159zM195 908l54 119h133l-59 -119h-128zM213 262h73l-33 201h-6zM213 778q0 -19 11 -30t28 -11q16 0 27.5 11.5t11.5 29.5 t-11.5 29.5t-27.5 11.5q-17 0 -28 -11.5t-11 -29.5z" />
<glyph unicode="&#x1fc;" horiz-adv-x="654" d="M4 0l173 663h438v-159h-216l24 -111h184v-131l-159 1l24 -103h147v-160h-281l-22 133h-126l-27 -133h-159zM219 272h74l-31 191h-3zM290 697l63 137h133l-68 -137h-128z" />
<glyph unicode="&#x1fd;" horiz-adv-x="654" d="M4 0l173 663h438v-159h-216l24 -111h184v-131l-159 1l24 -103h147v-160h-281l-22 133h-126l-27 -133h-159zM219 272h74l-31 191h-3zM290 697l63 137h133l-68 -137h-128z" />
<glyph unicode="&#x1fe;" horiz-adv-x="500" d="M37 202v258q0 111 61.5 167t151.5 56q47 0 86 -16l27 70h80l-42 -110q62 -60 62 -166v-258q0 -112 -61 -167.5t-152 -55.5q-47 0 -92 17l-21 -56h-79l37 96q-58 60 -58 165zM182 708l63 137h133l-68 -137h-128zM183 267l102 266q-16 8 -35 8q-67 0 -67 -78v-196zM210 132 q15 -11 40 -11q67 0 67 77v211z" />
<glyph unicode="&#x1ff;" horiz-adv-x="500" d="M37 202v258q0 111 61.5 167t151.5 56q47 0 86 -16l27 70h80l-42 -110q62 -60 62 -166v-258q0 -112 -61 -167.5t-152 -55.5q-47 0 -92 17l-21 -56h-79l37 96q-58 60 -58 165zM182 708l63 137h133l-68 -137h-128zM183 267l102 266q-16 8 -35 8q-67 0 -67 -78v-196zM210 132 q15 -11 40 -11q67 0 67 77v211z" />
<glyph unicode="&#x218;" horiz-adv-x="452" d="M28 214h142q-3 -89 51 -89q43 0 43 43q0 37 -40 66l-74 54q-68 50 -93.5 99.5t-25.5 113.5q0 81 60 131.5t140 50.5q86 0 141.5 -55t52.5 -180h-142q3 93 -49 93q-46 0 -46 -43q0 -36 40 -66l88 -66q65 -49 88.5 -94.5t23.5 -99.5q0 -87 -58 -139.5t-143 -52.5 q-90 0 -146 55t-53 179zM109 -169l56 122h117l-60 -122h-113z" />
<glyph unicode="&#x219;" horiz-adv-x="452" d="M28 214h142q-3 -89 51 -89q43 0 43 43q0 37 -40 66l-74 54q-68 50 -93.5 99.5t-25.5 113.5q0 81 60 131.5t140 50.5q86 0 141.5 -55t52.5 -180h-142q3 93 -49 93q-46 0 -46 -43q0 -36 40 -66l88 -66q65 -49 88.5 -94.5t23.5 -99.5q0 -87 -58 -139.5t-143 -52.5 q-90 0 -146 55t-53 179zM109 -169l56 122h117l-60 -122h-113z" />
<glyph unicode="&#x2c6;" horiz-adv-x="340" d="M34 702v101l136 40l136 -40v-101l-136 36z" />
<glyph unicode="&#x2c7;" horiz-adv-x="340" d="M34 735v98q99 -24 136 -32l136 32v-98l-136 -37z" />
<glyph unicode="&#x2d8;" horiz-adv-x="380" d="M32 824h117q1 -14 11.5 -22.5t27.5 -8.5t27.5 8.5t11.5 22.5h117q0 -58 -43 -93.5t-113 -35.5t-113 35.5t-43 93.5z" />
<glyph unicode="&#x2d9;" horiz-adv-x="134" d="M0 704v134h134v-134h-134z" />
<glyph unicode="&#x2da;" horiz-adv-x="204" d="M-26 804q0 60 38.5 92.5t89.5 32.5t89.5 -32.5t38.5 -92.5t-38.5 -93t-89.5 -33t-89.5 33t-38.5 93zM63 804q0 -19 11 -30t28 -11q16 0 27.5 11.5t11.5 29.5t-11.5 29.5t-27.5 11.5q-17 0 -28 -11.5t-11 -29.5z" />
<glyph unicode="&#x2db;" horiz-adv-x="192" d="M41 -89q0 28 19 52t50 37h75q-41 -30 -41 -62q0 -28 37 -28h4v-79h-36q-108 0 -108 80z" />
<glyph unicode="&#x2dc;" horiz-adv-x="332" d="M8 701q1 59 25.5 93t69.5 34q29 0 65.5 -17t49.5 -17q24 0 26 34h81q0 -59 -24.5 -93t-67.5 -34q-28 0 -64.5 16.5t-49.5 16.5q-28 0 -28 -33h-83z" />
<glyph unicode="&#x2dd;" horiz-adv-x="286" d="M-25 711l63 137h119l-68 -137h-114zM119 711l63 137h119l-68 -137h-114z" />
<glyph unicode="&#x1e80;" horiz-adv-x="672" d="M5 663h155l52 -326h6l66 326h105l66 -326h6l52 326h154l-129 -663h-123l-76 291h-6l-76 -291h-123zM208 845h133l63 -137h-128z" />
<glyph unicode="&#x1e81;" horiz-adv-x="672" d="M5 663h155l52 -326h6l66 326h105l66 -326h6l52 326h154l-129 -663h-123l-76 291h-6l-76 -291h-123zM208 845h133l63 -137h-128z" />
<glyph unicode="&#x1e82;" horiz-adv-x="672" d="M5 663h155l52 -326h6l66 326h105l66 -326h6l52 326h154l-129 -663h-123l-76 291h-6l-76 -291h-123zM268 708l63 137h133l-68 -137h-128z" />
<glyph unicode="&#x1e83;" horiz-adv-x="672" d="M5 663h155l52 -326h6l66 326h105l66 -326h6l52 326h154l-129 -663h-123l-76 291h-6l-76 -291h-123zM268 708l63 137h133l-68 -137h-128z" />
<glyph unicode="&#x1e84;" horiz-adv-x="672" d="M5 663h155l52 -326h6l66 326h105l66 -326h6l52 326h154l-129 -663h-123l-76 291h-6l-76 -291h-123zM182 709v129h131v-129h-131zM360 709v129h131v-129h-131z" />
<glyph unicode="&#x1e85;" horiz-adv-x="672" d="M5 663h155l52 -326h6l66 326h105l66 -326h6l52 326h154l-129 -663h-123l-76 291h-6l-76 -291h-123zM182 709v129h131v-129h-131zM360 709v129h131v-129h-131z" />
<glyph unicode="&#x1ef2;" horiz-adv-x="482" d="M2 663h168l71 -222h6l71 222h162l-160 -411v-252h-160v252zM116 845h133l63 -137h-128z" />
<glyph unicode="&#x1ef3;" horiz-adv-x="482" d="M2 663h168l71 -222h6l71 222h162l-160 -411v-252h-160v252zM116 845h133l63 -137h-128z" />
<glyph unicode="&#x2000;" horiz-adv-x="513" />
<glyph unicode="&#x2001;" horiz-adv-x="1027" />
<glyph unicode="&#x2002;" horiz-adv-x="513" />
<glyph unicode="&#x2003;" horiz-adv-x="1027" />
<glyph unicode="&#x2004;" horiz-adv-x="342" />
<glyph unicode="&#x2005;" horiz-adv-x="256" />
<glyph unicode="&#x2006;" horiz-adv-x="171" />
<glyph unicode="&#x2007;" horiz-adv-x="171" />
<glyph unicode="&#x2008;" horiz-adv-x="128" />
<glyph unicode="&#x2009;" horiz-adv-x="205" />
<glyph unicode="&#x200a;" horiz-adv-x="57" />
<glyph unicode="&#x2010;" horiz-adv-x="325" d="M20 263v138h285v-138h-285z" />
<glyph unicode="&#x2011;" horiz-adv-x="325" d="M20 263v138h285v-138h-285z" />
<glyph unicode="&#x2013;" horiz-adv-x="411" d="M20 262v140h371v-140h-371z" />
<glyph unicode="&#x2014;" horiz-adv-x="541" d="M20 262v140h501v-140h-501z" />
<glyph unicode="&#x2018;" horiz-adv-x="196" d="M25 418v320h146v-320h-146z" />
<glyph unicode="&#x2019;" horiz-adv-x="196" d="M25 418v320h146v-320h-146z" />
<glyph unicode="&#x201a;" horiz-adv-x="206" d="M25 -75v320h146v-320h-146z" />
<glyph unicode="&#x201c;" horiz-adv-x="362" d="M25 418v320h136v-320h-136zM201 418v320h136v-320h-136z" />
<glyph unicode="&#x201d;" horiz-adv-x="362" d="M25 418v320h136v-320h-136zM201 418v320h136v-320h-136z" />
<glyph unicode="&#x201e;" horiz-adv-x="372" d="M25 -75v320h136v-320h-136zM201 -75v320h136v-320h-136z" />
<glyph unicode="&#x2020;" horiz-adv-x="215" d="M15 524v74h50v70h86v-70h49v-74h-49v-152h-86v152h-50z" />
<glyph unicode="&#x2021;" horiz-adv-x="215" d="M15 429v74h50v36h-50v74h50v55h86v-55h49v-74h-49v-36h49v-74h-49v-57h-86v57h-50z" />
<glyph unicode="&#x2022;" horiz-adv-x="394" d="M45 320q0 63 44.5 107.5t107.5 44.5t107.5 -44.5t44.5 -107.5t-44.5 -107.5t-107.5 -44.5t-107.5 44.5t-44.5 107.5z" />
<glyph unicode="&#x2026;" horiz-adv-x="750" d="M55 0v160h160v-160h-160zM295 0v160h160v-160h-160zM535 0v160h160v-160h-160z" />
<glyph unicode="&#x202f;" horiz-adv-x="205" />
<glyph unicode="&#x2030;" horiz-adv-x="919" d="M25 471v81q0 66 35 98.5t87 32.5t87 -32.5t35 -98.5v-81q0 -66 -34.5 -98.5t-87.5 -32.5t-87.5 32t-34.5 99zM65 0l386 663h103l-388 -663h-101zM126 468q0 -31 21 -31t21 31v86q0 32 -21 32t-21 -32v-86zM348 111v81q0 66 35 98.5t87 32.5t87 -32.5t35 -98.5v-81 q0 -66 -34.5 -98.5t-87.5 -32.5t-87.5 32t-34.5 99zM449 108q0 -31 21 -31t21 31v86q0 32 -21 32t-21 -32v-86zM650 111v81q0 66 35 98.5t87 32.5t87 -32.5t35 -98.5v-81q0 -66 -34.5 -98.5t-87.5 -32.5t-87.5 32t-34.5 99zM751 108q0 -31 21 -31t21 31v86q0 32 -21 32 t-21 -32v-86z" />
<glyph unicode="&#x2039;" horiz-adv-x="288" d="M10 330l123 213h139l-126 -213l127 -213h-139z" />
<glyph unicode="&#x203a;" horiz-adv-x="288" d="M15 117l127 213l-126 213h139l123 -213l-124 -213h-139z" />
<glyph unicode="&#x205f;" horiz-adv-x="256" />
<glyph unicode="&#x20ac;" horiz-adv-x="496" d="M0 245v66h54v42h-54v66h54v45q0 109 58.5 164t145.5 55q89 0 147 -57.5t57 -168.5h-159q3 59 -45 59q-45 0 -45 -59v-38h195v-66h-195v-42h195v-66h-195v-42q0 -57 45 -57q48 0 45 57h159q2 -113 -56 -168t-148 -55q-89 0 -146.5 52.5t-57.5 164.5v48h-54z" />
<glyph unicode="&#x2122;" horiz-adv-x="578" d="M10 575v88h208v-88h-57v-258h-92v258h-59zM241 317v346h111l47 -182l43 182h111v-346h-85l-2 175l-35 -175h-66l-38 177v-177h-86z" />
<glyph unicode="&#x2212;" horiz-adv-x="460" d="M25 265v134h410v-134h-410z" />
<glyph unicode="&#x2260;" horiz-adv-x="460" d="M25 172v119h131l34 82h-165v119h214l36 86h107l-36 -86h89v-119h-138l-34 -82h172v-119h-221l-36 -88h-108l36 88h-81z" />
<glyph unicode="&#x25ca;" horiz-adv-x="1001" d="M10 228l608 608l427 -428l-608 -608zM80 228l357 -358l538 538l-357 358zM87 227l177 177l3 -3l-177 -177zM94 220l177 177l3 -3l-177 -177zM101 213l177 177l3 -3l-177 -177zM108 206l177 177l3 -3l-177 -177zM115 199l177 177l3 -3l-177 -177zM123 192l176 177l3 -3 l-176 -177zM130 185l176 177l3 -3l-176 -177zM137 178l176 177l3 -3l-176 -177zM144 171l176 177l3 -3l-176 -177zM151 163l177 177l3 -3l-177 -177zM158 156l177 177l3 -3l-177 -177zM165 149l177 177l3 -3l-177 -177zM172 142l177 177l3 -3l-177 -177zM179 135l177 177 l3 -3l-177 -177zM186 128l177 177l3 -3l-177 -177zM193 121l177 177l3 -3l-177 -177zM200 114l177 177l3 -3l-177 -177zM207 107l177 177l3 -3l-177 -177zM214 100l177 177l3 -3l-177 -177zM222 93l176 177l3 -3l-176 -177zM229 86l176 177l3 -3l-176 -177zM236 79l176 177 l3 -3l-176 -177zM243 72l176 177l3 -3l-176 -177zM250 65l177 176l3 -3l-177 -176zM257 57l177 177l3 -3l-177 -177zM264 50l177 177l3 -3l-177 -177zM271 43l177 177l3 -3l-177 -177zM278 36l177 177l3 -3l-177 -177zM285 29l177 177l3 -3l-177 -177zM292 22l177 177l3 -3 l-177 -177zM299 15l177 177l3 -3l-177 -177zM306 8l177 177l3 -3l-177 -177zM313 1l177 177l3 -3l-177 -177zM320 -6l177 177l3 -3l-177 -177zM328 -13l176 177l3 -3l-176 -177zM335 -20l176 177l3 -3l-176 -177zM342 -27l176 177l3 -3l-176 -177zM349 -34l177 176l3 -3 l-177 -176zM356 -42l177 177l3 -3l-177 -177zM363 -49l177 177l3 -3l-177 -177zM370 -56l177 177l3 -3l-177 -177zM377 -63l177 177l3 -3l-177 -177zM384 -70l177 177l3 -3l-177 -177zM391 -77l177 177l3 -3l-177 -177zM398 -84l177 177l3 -3l-177 -177zM405 -91l177 177 l3 -3l-177 -177zM412 -98l177 177l3 -3l-177 -177zM419 -105l177 177l3 -3l-177 -177zM427 -112l176 177l3 -3l-176 -177zM434 -119l176 177l3 -3l-176 -177zM445 586l3 3l351 -351l-3 -3zM452 593l3 3l351 -350l-3 -3zM459 600l3 3l351 -350l-3 -3zM466 608l3 3l351 -351 l-3 -3zM473 615l3 3l351 -351l-3 -3zM480 622l3 3l351 -351l-3 -3zM487 629l3 3l351 -351l-3 -3zM494 636l3 3l351 -351l-3 -3zM502 643l3 3l350 -351l-3 -3zM509 650l3 3l350 -351l-3 -3zM516 657l3 3l351 -351l-3 -3zM523 664l3 3l351 -351l-3 -3zM530 671l3 3l351 -351 l-3 -3zM537 678l3 3l351 -351l-3 -3zM544 685l3 3l351 -351l-3 -3zM551 692l3 3l351 -350l-3 -3zM558 699l3 3l351 -350l-3 -3zM565 707l3 3l351 -351l-3 -3zM572 714l3 3l351 -351l-3 -3zM579 721l3 3l351 -351l-3 -3zM586 728l3 3l351 -351l-3 -3zM593 735l3 3l351 -351 l-3 -3zM601 742l3 3l350 -351l-3 -3zM608 749l3 3l350 -351l-3 -3zM615 756l3 3l350 -351l-3 -3z" />
<glyph horiz-adv-x="290" d="M55 -169l56 122h117l-60 -122h-113z" />
<glyph d="M50 0v663h160v-663h-160z" />
<glyph d="M-28 824h117q1 -14 11.5 -22.5t27.5 -8.5t27.5 8.5t11.5 22.5h117q0 -58 -43 -93.5t-113 -35.5t-113 35.5t-43 93.5z" />
<glyph d="M23 707v105h215v-105h-215z" />
<glyph d="M50 0v663h160v-663h-160zM50 705v135h160v-135h-160z" />
<glyph horiz-adv-x="387" d="M50 0v663h158v-503h164v-160h-322z" />
<glyph horiz-adv-x="387" d="M50 0v663h158v-503h164v-160h-322z" />
<glyph d="M50 0v663h160v-663h-160zM50 705v135h160v-135h-160z" />
<glyph d="M50 0v663h160v-663h-160z" />
<glyph horiz-adv-x="290" />
</font>
</defs></svg>

After

Width:  |  Height:  |  Size: 72 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1,384 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
<svg xmlns="http://www.w3.org/2000/svg">
<metadata>
This is a custom SVG webfont generated by Font Squirrel.
Copyright : Copyright c 2010 by Atelier Carvalho Bernau All rights reserved
Designer : Atelier Carvalho Bernau with Bernd Volmer
Foundry : Atelier Carvalho Bernau with Bernd Volmer
Foundry URL : httpwwwcarvalhobernaucom
</metadata>
<defs>
<font id="webfontDsa4tOUg" horiz-adv-x="500" >
<font-face units-per-em="1000" ascent="831" descent="-169" />
<missing-glyph horiz-adv-x="200" />
<glyph unicode=" " horiz-adv-x="200" />
<glyph unicode="&#x09;" horiz-adv-x="200" />
<glyph unicode="&#xa0;" horiz-adv-x="200" />
<glyph unicode="!" horiz-adv-x="90" d="M31 0v40h28v-40h-28zM32 103v560h26v-560h-26z" />
<glyph unicode="&#x22;" horiz-adv-x="156" d="M30 418v371h26v-371h-26zM100 418v371h26v-371h-26z" />
<glyph unicode="#" horiz-adv-x="506" d="M12 193v24h99l61 229h-93v24h100l51 193h26l-51 -193h164l51 193h26l-51 -193h99v-24h-106l-60 -229h100v-24h-106l-51 -193h-27l51 193h-163l-51 -193h-27l51 193h-93zM138 217h163l61 229h-164z" />
<glyph unicode="$" horiz-adv-x="449" d="M25 214h143q-3 -88 45 -98v129l-50 30q-135 80 -135 213q0 85 53.5 135t131.5 54v89h26v-89q82 -3 134 -56t49 -173h-140q3 90 -43 98v-134l51 -32q58 -36 88.5 -71.5t38.5 -63.5t8 -69q0 -75 -46 -130.5t-140 -60.5v-105h-26v105q-193 8 -188 229zM171 499q0 -43 42 -71 v119q-42 -6 -42 -48zM239 116q39 6 39 56q0 33 -39 58v-114z" />
<glyph unicode="%" horiz-adv-x="545" d="M35 459v105q0 59 32 89t79 30t79 -30t32 -89v-105q0 -60 -31.5 -89.5t-79.5 -29.5t-79.5 29t-31.5 90zM64 0l386 663h33l-388 -663h-31zM125 462q0 -31 21 -31t21 31v98q0 32 -21 32t-21 -32v-98zM288 99v105q0 59 32 89t79 30t79 -30t32 -89v-105q0 -60 -31.5 -89.5 t-79.5 -29.5t-79.5 29t-31.5 90zM378 102q0 -31 21 -31t21 31v98q0 32 -21 32t-21 -32v-98z" />
<glyph unicode="&#x26;" horiz-adv-x="398" d="M30 140q0 48 15.5 88t33.5 62.5t55 60.5l-25 55q-37 81 -37 150q0 60 26.5 94t74.5 34q100 0 100 -122q0 -54 -24.5 -97.5t-86.5 -113.5l79 -171q27 -60 43 -91q36 76 35 214h25q3 -156 -45 -238q30 -45 66 -45h8v-23h-8q-48 0 -82 45q-45 -57 -123 -57q-58 0 -94 38 t-36 117zM56 140q0 -67 30 -99t77 -32q68 0 107 55q-19 30 -53 104l-73 161q-32 -38 -45 -55t-28 -54.5t-15 -79.5zM98 562q0 -69 35 -146l20 -44q51 60 72.5 99t21.5 91q0 47 -19.5 72.5t-54.5 25.5t-55 -27t-20 -71z" />
<glyph unicode="'" horiz-adv-x="86" d="M30 418v371h26v-371h-26z" />
<glyph unicode="(" horiz-adv-x="212" d="M30 186v277q0 110 51 171t111 58v-23q-48 2 -92 -51.5t-44 -146.5v-293q0 -93 44 -146.5t92 -51.5v-23q-60 -3 -111 58t-51 171z" />
<glyph unicode=")" horiz-adv-x="212" d="M20 -20q48 -2 92 51.5t44 146.5v293q0 93 -44 146.5t-92 51.5v23q60 3 111 -58t51 -171v-277q0 -110 -51 -171t-111 -58v23z" />
<glyph unicode="*" horiz-adv-x="382" d="M20 509v23l154 -2l-81 132l19 12l79 -134l78 134l21 -12l-83 -132l155 2v-23l-154 2l82 -131l-21 -13l-79 135l-78 -135l-19 13l81 131z" />
<glyph unicode="+" horiz-adv-x="400" d="M27 319v24h160v160h26v-160h160v-24h-160v-160h-26v160h-160z" />
<glyph unicode="," horiz-adv-x="76" d="M25 -75v321h26v-321h-26z" />
<glyph unicode="-" horiz-adv-x="280" d="M20 319v26h240v-26h-240z" />
<glyph unicode="." horiz-adv-x="90" d="M31 0v40h28v-40h-28z" />
<glyph unicode="/" horiz-adv-x="290" d="M-6 -40l273 743h29l-273 -743h-29z" />
<glyph unicode="0" horiz-adv-x="476" d="M34 197v267q0 109 58.5 164t145.5 55t145.5 -55t58.5 -163v-267q0 -111 -58 -164.5t-146 -53.5q-89 0 -146.5 52.5t-57.5 164.5zM193 203q0 -57 45 -57t45 57v254q0 59 -45 59t-45 -59v-254z" />
<glyph unicode="1" horiz-adv-x="287" d="M13 489v87l23 1q81 3 99 86h104v-663h-160v488z" />
<glyph unicode="2" horiz-adv-x="450" d="M25 0v106q0 92 31.5 143t116.5 114q61 45 79 70t18 50q0 22 -11.5 36.5t-34.5 14.5q-24 0 -36.5 -15t-15 -31t-1.5 -40h-143q-2 123 53.5 179t144.5 56q86 0 142 -50.5t56 -142.5q0 -66 -28 -110.5t-96 -100.5l-29 -23.5l-26 -21t-19.5 -17t-16.5 -16.5t-10.5 -14 t-7.5 -15t-1 -15v-1h229v-156h-394z" />
<glyph unicode="3" horiz-adv-x="439" d="M23 217h141q-4 -87 46 -87q26 0 37 20t11 65q0 54 -20 72.5t-67 18.5h-27v111l77 94v5h-191v147h359v-127l-93 -114v-4q119 -27 119 -203q0 -122 -56 -178.5t-145 -56.5q-31 0 -57.5 5.5t-53 22t-44.5 42t-28.5 68.5t-7.5 99z" />
<glyph unicode="4" horiz-adv-x="472" d="M17 142v126l209 395h188v-385h43v-136h-43v-142h-152v142h-245zM156 278h106v209h-6z" />
<glyph unicode="5" horiz-adv-x="457" d="M32 207h146q-1 -34 14 -53.5t42 -19.5q55 0 55 80q0 41 -18.5 63.5t-50.5 22.5t-67 -25l-111 -1v389h369v-149h-231v-106q39 12 73 12q82 0 133.5 -55t51.5 -156q0 -63 -19 -109.5t-50.5 -71.5t-65 -36.5t-68.5 -11.5q-92 0 -148 59.5t-55 167.5z" />
<glyph unicode="6" horiz-adv-x="465" d="M34 219v231q0 118 54.5 175.5t148.5 57.5q197 0 193 -235h-146q2 84 -50 84q-55 0 -55 -76v-77h3q45 31 98 31q69 0 114.5 -46.5t45.5 -154.5q0 -67 -19.5 -115t-51.5 -71.5t-64.5 -33t-67.5 -9.5q-203 0 -203 239zM179 205q0 -70 54 -70q56 0 56 74q0 33 -16 50t-38 17 q-56 0 -56 -71z" />
<glyph unicode="7" horiz-adv-x="415" d="M15 508v155h380v-143l-161 -520h-167l164 508h-216z" />
<glyph unicode="8" horiz-adv-x="473" d="M28 187q0 52 26 94t61 62v4q-38 26 -59 61t-21 97q0 79 61.5 128.5t139.5 49.5q79 0 140.5 -49.5t61.5 -128.5q0 -62 -21 -97t-59 -61v-4q35 -20 61 -62t26 -94q0 -103 -62 -155t-147 -52q-83 0 -145.5 52t-62.5 155zM176 203q0 -34 17 -54t44 -20t44 20t17 54 q0 31 -17.5 51.5t-43.5 20.5t-43.5 -20.5t-17.5 -51.5zM182 477q0 -28 16 -46.5t39 -18.5t39 18.5t16 46.5q0 31 -15 49t-40 18t-40 -18t-15 -49z" />
<glyph unicode="9" horiz-adv-x="465" d="M26 464q0 108 59.5 163.5t145.5 55.5q39 0 71.5 -10t63 -34.5t48 -73t17.5 -117.5v-232q0 -120 -55.5 -178t-144.5 -58q-90 0 -143.5 57.5t-51.5 165.5h146q-3 -72 49 -72q55 0 55 68v85h-1q-39 -30 -89 -30q-72 0 -121 50t-49 160zM178 458q0 -33 16 -50.5t39 -17.5 q24 0 39 18t15 54q0 69 -54 69q-55 0 -55 -73z" />
<glyph unicode=":" horiz-adv-x="80" d="M26 0v40h28v-40h-28zM26 378v39h28v-39h-28z" />
<glyph unicode=";" horiz-adv-x="80" d="M26 377v40h28v-40h-28zM27 -75v321h26v-321h-26z" />
<glyph unicode="&#x3c;" horiz-adv-x="400" d="M25 330l325 208v-28l-279 -180l279 -178v-30z" />
<glyph unicode="=" horiz-adv-x="400" d="M30 245v26h340v-26h-340zM30 393v26h340v-26h-340z" />
<glyph unicode="&#x3e;" horiz-adv-x="400" d="M50 122v28l278 180l-278 178v30l325 -208z" />
<glyph unicode="?" horiz-adv-x="382" d="M16 448q-7 115 40.5 175t137.5 60q77 0 122.5 -48t45.5 -124q0 -47 -19.5 -83.5t-68.5 -74.5q-48 -36 -62 -70.5t-14 -110.5v-69h-26v63q0 91 18.5 131t75.5 83q70 52 70 128q0 67 -39.5 109.5t-99.5 42.5q-168 0 -155 -212h-26zM170 0v42h30v-42h-30z" />
<glyph unicode="@" horiz-adv-x="486" d="M50 202v258q0 113 55.5 168t148.5 55q87 0 134.5 -49t47.5 -150v-345h-24l-3 59q-13 -29 -42.5 -47t-67.5 -18q-57 0 -94 36t-37 113v76q0 76 37.5 113t100.5 37q36 0 64 -18.5t39 -43.5v22q0 101 -40.5 146t-119.5 45q-81 0 -127 -49t-46 -149v-259q0 -102 45 -149.5 t122 -47.5q64 0 111 30v-26q-37 -28 -111 -28q-89 0 -141 52.5t-52 168.5zM194 282q0 -64 30.5 -94t77.5 -30t77.5 32t30.5 102v58q0 64 -30.5 98.5t-77.5 34.5q-48 0 -78 -31t-30 -94v-76z" />
<glyph unicode="A" horiz-adv-x="502" d="M4 0l156 663h186l152 -663h-164l-23 123h-125l-23 -123h-159zM213 262h73l-33 201h-6z" />
<glyph unicode="B" horiz-adv-x="480" d="M50 0v663h192q99 0 150 -49.5t51 -120.5q0 -57 -27.5 -95.5t-58.5 -54.5v-5q42 -14 70 -56t28 -93q0 -86 -50.5 -137.5t-148.5 -51.5h-206zM209 146h31q26 0 40.5 16.5t14.5 43.5q0 63 -58 63h-28v-123zM209 400h21q58 0 58 58q0 57 -53 57h-26v-115z" />
<glyph unicode="C" horiz-adv-x="467" d="M37 198v266q0 53 14 93.5t35 63.5t49.5 37.5t53.5 19.5t52 5q37 0 69 -10.5t63 -36.5t48.5 -78t16.5 -125h-153q1 47 -9.5 66.5t-35.5 19.5q-44 0 -44 -59v-259q0 -59 44 -59q25 0 35.5 21t9.5 77h153q1 -62 -10.5 -109.5t-30.5 -75.5t-46.5 -45.5t-53.5 -23.5t-56 -6 q-34 0 -65.5 8.5t-65 30t-53.5 67.5t-20 112z" />
<glyph unicode="D" horiz-adv-x="482" d="M50 0v663h152q127 0 186 -52.5t59 -190.5v-177q0 -138 -59 -190.5t-186 -52.5h-152zM210 161h22q28 0 41 14t13 47v219q0 34 -13 47.5t-41 13.5h-22v-341z" />
<glyph unicode="E" horiz-adv-x="424" d="M50 0v663h335v-159h-175v-84h167v-150h-167v-110h179v-160h-339z" />
<glyph unicode="F" horiz-adv-x="417" d="M50 0v663h332v-159h-172v-86h165v-149h-165v-269h-160z" />
<glyph unicode="G" horiz-adv-x="493" d="M37 220v231q0 66 19.5 114t52 72t67.5 35t73 11q33 0 64.5 -9t66.5 -32.5t56 -76t20 -127.5l-152 3q1 82 -53 82q-23 0 -38.5 -15t-15.5 -49v-255q0 -66 55 -66q52 0 52 57v14h-66v137h218v-127q0 -56 -13.5 -99.5t-34.5 -69.5t-49.5 -42t-55 -22t-54.5 -6q-37 0 -70 9.5 t-67 33t-54.5 74t-20.5 123.5z" />
<glyph unicode="H" horiz-adv-x="503" d="M50 0v663h158v-236h87v236h158v-663h-158v274h-87v-274h-158z" />
<glyph unicode="I" horiz-adv-x="260" d="M49 706v25h162v-25h-162zM50 0v663h160v-663h-160z" />
<glyph unicode="J" horiz-adv-x="438" d="M6 230h146q-4 -86 45 -86q44 0 44 60v459h160v-460q0 -64 -17.5 -110t-48 -69.5t-63.5 -33.5t-72 -10q-85 0 -142.5 60.5t-51.5 189.5zM240 706v25h162v-25h-162z" />
<glyph unicode="K" horiz-adv-x="519" d="M50 0v663h159v-280h5l91 280h170l-105 -296v-4l133 -363h-179l-110 324h-5v-324h-159z" />
<glyph unicode="L" horiz-adv-x="387" d="M50 0v663h158v-503h164v-160h-322z" />
<glyph unicode="M" horiz-adv-x="697" d="M50 0v663h202l93 -351h6l94 351h202v-663h-150v378h-6l-85 -378h-115l-85 378h-6v-378h-150z" />
<glyph unicode="N" horiz-adv-x="542" d="M50 0v663h169l119 -309h6v309h148v-663h-162l-125 342h-6v-342h-149z" />
<glyph unicode="O" d="M37 202v258q0 111 61.5 167t151.5 56t151.5 -56t61.5 -166v-258q0 -112 -61 -167.5t-152 -55.5t-152 54t-61 168zM197 205q0 -31 15 -46.5t38 -15.5t38 15.5t15 46.5v251q0 32 -15 47.5t-38 15.5t-38 -15.5t-15 -47.5v-251z" />
<glyph unicode="P" horiz-adv-x="454" d="M50 0v663h165q219 0 219 -220q0 -106 -54.5 -167t-156.5 -61h-13v-215h-160zM210 362h17q27 0 39.5 17.5t12.5 57.5q0 75 -52 75h-17v-150z" />
<glyph unicode="Q" horiz-adv-x="507" d="M37 202v258q0 111 61.5 167t151.5 56t151.5 -56t61.5 -166v-258q0 -67 -26 -117l55 -47l-100 -108l-72 59q-33 -10 -70 -10q-91 0 -152 54t-61 168zM197 205q0 -31 15 -46.5t38 -15.5t38 15.5t15 46.5v251q0 32 -15 47.5t-38 15.5t-38 -15.5t-15 -47.5v-251z" />
<glyph unicode="R" horiz-adv-x="479" d="M50 0v663h193q106 0 154 -50.5t48 -124.5q0 -52 -25.5 -89.5t-62.5 -58.5v-4q40 -11 67.5 -47.5t27.5 -101.5v-187h-160v183q0 34 -12.5 50t-41.5 16h-28v-249h-160zM210 393h23q56 0 56 68q0 60 -53 60h-26v-128z" />
<glyph unicode="S" horiz-adv-x="452" d="M28 214h142q-3 -89 51 -89q43 0 43 43q0 37 -40 66l-74 54q-68 50 -93.5 99.5t-25.5 113.5q0 81 60 131.5t140 50.5q86 0 141.5 -55t52.5 -180h-142q3 93 -49 93q-46 0 -46 -43q0 -36 40 -66l88 -66q65 -49 88.5 -94.5t23.5 -99.5q0 -87 -58 -139.5t-143 -52.5 q-90 0 -146 55t-53 179z" />
<glyph unicode="T" horiz-adv-x="420" d="M15 508v155h390v-155h-113v-508h-160v508h-117z" />
<glyph unicode="U" horiz-adv-x="495" d="M40 209v454h160v-456q0 -63 47 -63q48 0 48 63v456h160v-454q0 -229 -207 -229q-208 0 -208 229z" />
<glyph unicode="V" d="M5 663h164l81 -393h6l80 393h159l-167 -663h-166z" />
<glyph unicode="W" horiz-adv-x="672" d="M5 663h155l52 -326h6l66 326h105l66 -326h6l52 326h154l-129 -663h-123l-76 291h-6l-76 -291h-123z" />
<glyph unicode="X" horiz-adv-x="471" d="M2 0l132 341l-126 322h170l59 -183h4l60 183h158l-124 -319l134 -344h-170l-67 202h-5l-66 -202h-159z" />
<glyph unicode="Y" horiz-adv-x="482" d="M2 663h168l71 -222h6l71 222h162l-160 -411v-252h-160v252z" />
<glyph unicode="Z" horiz-adv-x="426" d="M25 0v161l192 344h-187v158h364v-152l-191 -352h198v-159h-376z" />
<glyph unicode="[" horiz-adv-x="139" d="M30 -40v730h94v-26h-68v-678h68v-26h-94z" />
<glyph unicode="\" horiz-adv-x="290" d="M1 683h29l259 -703h-29z" />
<glyph unicode="]" horiz-adv-x="139" d="M15 -14h68v678h-68v26h94v-730h-94v26z" />
<glyph unicode="^" horiz-adv-x="289" d="M-7 259l132 416h26l133 -416h-28l-119 372l-116 -372h-28z" />
<glyph unicode="_" horiz-adv-x="380" d="M15 -63h350v-26h-350v26z" />
<glyph unicode="`" horiz-adv-x="161" d="M-12 824h33l93 -116h-31z" />
<glyph unicode="a" horiz-adv-x="502" d="M4 0l156 663h186l152 -663h-164l-23 123h-125l-23 -123h-159zM213 262h73l-33 201h-6z" />
<glyph unicode="b" horiz-adv-x="480" d="M50 0v663h192q99 0 150 -49.5t51 -120.5q0 -57 -27.5 -95.5t-58.5 -54.5v-5q42 -14 70 -56t28 -93q0 -86 -50.5 -137.5t-148.5 -51.5h-206zM209 146h31q26 0 40.5 16.5t14.5 43.5q0 63 -58 63h-28v-123zM209 400h21q58 0 58 58q0 57 -53 57h-26v-115z" />
<glyph unicode="c" horiz-adv-x="467" d="M37 198v266q0 53 14 93.5t35 63.5t49.5 37.5t53.5 19.5t52 5q37 0 69 -10.5t63 -36.5t48.5 -78t16.5 -125h-153q1 47 -9.5 66.5t-35.5 19.5q-44 0 -44 -59v-259q0 -59 44 -59q25 0 35.5 21t9.5 77h153q1 -62 -10.5 -109.5t-30.5 -75.5t-46.5 -45.5t-53.5 -23.5t-56 -6 q-34 0 -65.5 8.5t-65 30t-53.5 67.5t-20 112z" />
<glyph unicode="d" horiz-adv-x="482" d="M50 0v663h152q127 0 186 -52.5t59 -190.5v-177q0 -138 -59 -190.5t-186 -52.5h-152zM210 161h22q28 0 41 14t13 47v219q0 34 -13 47.5t-41 13.5h-22v-341z" />
<glyph unicode="e" horiz-adv-x="424" d="M50 0v663h335v-159h-175v-84h167v-150h-167v-110h179v-160h-339z" />
<glyph unicode="f" horiz-adv-x="417" d="M50 0v663h332v-159h-172v-86h165v-149h-165v-269h-160z" />
<glyph unicode="g" horiz-adv-x="493" d="M37 220v231q0 66 19.5 114t52 72t67.5 35t73 11q33 0 64.5 -9t66.5 -32.5t56 -76t20 -127.5l-152 3q1 82 -53 82q-23 0 -38.5 -15t-15.5 -49v-255q0 -66 55 -66q52 0 52 57v14h-66v137h218v-127q0 -56 -13.5 -99.5t-34.5 -69.5t-49.5 -42t-55 -22t-54.5 -6q-37 0 -70 9.5 t-67 33t-54.5 74t-20.5 123.5z" />
<glyph unicode="h" horiz-adv-x="503" d="M50 0v663h158v-236h87v236h158v-663h-158v274h-87v-274h-158z" />
<glyph unicode="i" horiz-adv-x="260" d="M49 706v25h162v-25h-162zM50 0v663h160v-663h-160z" />
<glyph unicode="j" horiz-adv-x="438" d="M6 230h146q-4 -86 45 -86q44 0 44 60v459h160v-460q0 -64 -17.5 -110t-48 -69.5t-63.5 -33.5t-72 -10q-85 0 -142.5 60.5t-51.5 189.5zM240 706v25h162v-25h-162z" />
<glyph unicode="k" horiz-adv-x="519" d="M50 0v663h159v-280h5l91 280h170l-105 -296v-4l133 -363h-179l-110 324h-5v-324h-159z" />
<glyph unicode="l" horiz-adv-x="387" d="M50 0v663h158v-503h164v-160h-322z" />
<glyph unicode="m" horiz-adv-x="697" d="M50 0v663h202l93 -351h6l94 351h202v-663h-150v378h-6l-85 -378h-115l-85 378h-6v-378h-150z" />
<glyph unicode="n" horiz-adv-x="542" d="M50 0v663h169l119 -309h6v309h148v-663h-162l-125 342h-6v-342h-149z" />
<glyph unicode="o" d="M37 202v258q0 111 61.5 167t151.5 56t151.5 -56t61.5 -166v-258q0 -112 -61 -167.5t-152 -55.5t-152 54t-61 168zM197 205q0 -31 15 -46.5t38 -15.5t38 15.5t15 46.5v251q0 32 -15 47.5t-38 15.5t-38 -15.5t-15 -47.5v-251z" />
<glyph unicode="p" horiz-adv-x="454" d="M50 0v663h165q219 0 219 -220q0 -106 -54.5 -167t-156.5 -61h-13v-215h-160zM210 362h17q27 0 39.5 17.5t12.5 57.5q0 75 -52 75h-17v-150z" />
<glyph unicode="q" horiz-adv-x="507" d="M37 202v258q0 111 61.5 167t151.5 56t151.5 -56t61.5 -166v-258q0 -67 -26 -117l55 -47l-100 -108l-72 59q-33 -10 -70 -10q-91 0 -152 54t-61 168zM197 205q0 -31 15 -46.5t38 -15.5t38 15.5t15 46.5v251q0 32 -15 47.5t-38 15.5t-38 -15.5t-15 -47.5v-251z" />
<glyph unicode="r" horiz-adv-x="479" d="M50 0v663h193q106 0 154 -50.5t48 -124.5q0 -52 -25.5 -89.5t-62.5 -58.5v-4q40 -11 67.5 -47.5t27.5 -101.5v-187h-160v183q0 34 -12.5 50t-41.5 16h-28v-249h-160zM210 393h23q56 0 56 68q0 60 -53 60h-26v-128z" />
<glyph unicode="s" horiz-adv-x="452" d="M28 214h142q-3 -89 51 -89q43 0 43 43q0 37 -40 66l-74 54q-68 50 -93.5 99.5t-25.5 113.5q0 81 60 131.5t140 50.5q86 0 141.5 -55t52.5 -180h-142q3 93 -49 93q-46 0 -46 -43q0 -36 40 -66l88 -66q65 -49 88.5 -94.5t23.5 -99.5q0 -87 -58 -139.5t-143 -52.5 q-90 0 -146 55t-53 179z" />
<glyph unicode="t" horiz-adv-x="420" d="M15 508v155h390v-155h-113v-508h-160v508h-117z" />
<glyph unicode="u" horiz-adv-x="495" d="M40 209v454h160v-456q0 -63 47 -63q48 0 48 63v456h160v-454q0 -229 -207 -229q-208 0 -208 229z" />
<glyph unicode="v" d="M5 663h164l81 -393h6l80 393h159l-167 -663h-166z" />
<glyph unicode="w" horiz-adv-x="672" d="M5 663h155l52 -326h6l66 326h105l66 -326h6l52 326h154l-129 -663h-123l-76 291h-6l-76 -291h-123z" />
<glyph unicode="x" horiz-adv-x="471" d="M2 0l132 341l-126 322h170l59 -183h4l60 183h158l-124 -319l134 -344h-170l-67 202h-5l-66 -202h-159z" />
<glyph unicode="y" horiz-adv-x="482" d="M2 663h168l71 -222h6l71 222h162l-160 -411v-252h-160v252z" />
<glyph unicode="z" horiz-adv-x="426" d="M25 0v161l192 344h-187v158h364v-152l-191 -352h198v-159h-376z" />
<glyph unicode="{" horiz-adv-x="212" d="M23 313v22q35 0 53 12t18 43q0 26 -21 89t-21 95q0 52 33.5 85t103.5 33v-24q-57 0 -84 -26.5t-27 -67.5q0 -30 20.5 -89.5t20.5 -90.5q0 -59 -52 -70q52 -13 52 -70q0 -31 -20.5 -90.5t-20.5 -89.5q0 -41 27 -67.5t84 -26.5v-24q-70 0 -103.5 33t-33.5 85q0 32 21 95 t21 89q0 31 -18 43t-53 12z" />
<glyph unicode="|" horiz-adv-x="86" d="M30 -168v966h26v-966h-26z" />
<glyph unicode="}" horiz-adv-x="212" d="M23 -20q57 0 84 26.5t27 67.5q0 30 -20.5 89.5t-20.5 90.5q0 58 52 70q-52 11 -52 70q0 31 20.5 90.5t20.5 89.5q0 41 -27 67.5t-84 26.5v24q70 0 103.5 -33t33.5 -85q0 -32 -21 -95t-21 -89q0 -31 18 -43t53 -12v-22q-35 0 -53 -12t-18 -43q0 -26 21 -89t21 -95 q0 -52 -33.5 -85t-103.5 -33v24z" />
<glyph unicode="~" horiz-adv-x="311" d="M7 294q0 79 69 79q31 0 84 -28.5t77 -28.5q41 0 41 54h26q0 -79 -69 -79q-31 0 -84 28.5t-77 28.5q-41 0 -41 -54h-26z" />
<glyph unicode="&#xa1;" horiz-adv-x="90" d="M31 623v40h28v-40h-28zM32 0v560h26v-560h-26z" />
<glyph unicode="&#xa2;" horiz-adv-x="436" d="M37 373v113q0 56 15 96.5t41.5 61t54 29.5t60.5 10v83h26v-84q168 -8 164 -212h-122q0 45 -9 67.5t-33 27.5v-270q23 4 32.5 27t9.5 78h122q1 -63 -12.5 -108t-39 -68.5t-53 -34t-59.5 -12.5v-86h-26v86q-171 6 -171 196zM164 366q0 -65 44 -71v270q-44 -5 -44 -72v-127z " />
<glyph unicode="&#xa3;" horiz-adv-x="497" d="M15 239v26h61v56h-61v26h61v126q0 210 199 210t187 -250h-151v31q0 38 -10 54t-31 16q-39 0 -39 -56v-131h108v-26h-108v-56h108v-26h-108v-101h232v-138h-429v138h42v101h-61z" />
<glyph unicode="&#xa5;" horiz-adv-x="482" d="M2 663h168l71 -222h6l71 222h162l-150 -385h111v-26h-121v-56h121v-26h-121v-170h-160v170h-118v26h118v56h-118v26h108z" />
<glyph unicode="&#xa8;" horiz-adv-x="303" d="M85 718v29h28v-29h-28zM189 718v29h28v-29h-28z" />
<glyph unicode="&#xa9;" horiz-adv-x="723" d="M30 331q0 149 92 250.5t239 101.5q148 0 240 -100t92 -252t-92 -251.5t-240 -99.5q-147 0 -239 101t-92 250zM55 331q0 -141 85 -234.5t221 -93.5t221.5 93.5t85.5 234.5q0 138 -86 233.5t-221 95.5q-136 0 -221 -94t-85 -235zM222 235v192q0 47 14.5 80t38.5 48.5 t46.5 22t47.5 6.5q59 0 101 -40t40 -140h-110q3 62 -32 62q-32 0 -32 -42v-187q0 -42 32 -42q18 0 25.5 15t6.5 55h110q1 -55 -11 -94t-34.5 -58t-45.5 -27t-50 -8q-25 0 -47.5 6t-46.5 21.5t-38.5 49t-14.5 80.5z" />
<glyph unicode="&#xaa;" horiz-adv-x="289" d="M17 330l108 345h26l109 -345h-28l-31 98h-126l-30 -98h-28zM82 452h111l-56 179z" />
<glyph unicode="&#xab;" horiz-adv-x="272" d="M15 331l123 212h31l-124 -212l125 -214h-31zM97 331l123 212h31l-124 -212l125 -214h-31z" />
<glyph unicode="&#xad;" horiz-adv-x="280" d="M20 319v26h240v-26h-240z" />
<glyph unicode="&#xae;" horiz-adv-x="723" d="M30 331q0 149 92 250.5t239 101.5q148 0 240 -100t92 -252t-92 -251.5t-240 -99.5q-147 0 -239 101t-92 250zM55 331q0 -141 85 -234.5t221 -93.5t221.5 93.5t85.5 234.5q0 138 -86 233.5t-221 95.5q-136 0 -221 -94t-85 -235zM225 90v483h140q78 0 112.5 -37t34.5 -91 q0 -71 -64 -108v-2q69 -21 69 -109v-136h-116v133q0 49 -39 49h-21v-182h-116zM341 376h17q41 0 41 50q0 43 -39 43h-19v-93z" />
<glyph unicode="&#xaf;" horiz-adv-x="336" d="M42 716v26h252v-26h-252z" />
<glyph unicode="&#xb0;" horiz-adv-x="282" d="M20 565q0 58 36.5 89t85.5 31t84.5 -31t35.5 -89q0 -57 -36 -88.5t-84 -31.5q-49 0 -85.5 31.5t-36.5 88.5zM48 565q0 -44 28 -70t66 -26q37 0 65 26t28 70q0 45 -28 70t-65 25q-38 0 -66 -25t-28 -70z" />
<glyph unicode="&#xb4;" horiz-adv-x="161" d="M46 708l93 116h33l-95 -116h-31z" />
<glyph unicode="&#xb6;" horiz-adv-x="490" d="M30 473q0 86 53 138t147 52h210v-832h-26v810h-122v-810h-26v453h-36q-94 0 -147 51.5t-53 137.5zM58 473q0 -74 46 -120.5t126 -46.5h36v335h-36q-80 0 -126 -47t-46 -121z" />
<glyph unicode="&#xb7;" horiz-adv-x="90" d="M31 321v40h28v-40h-28z" />
<glyph unicode="&#xb8;" horiz-adv-x="206" d="M23 -115h26q4 -38 45 -38q49 0 49 53q0 21 -11.5 35.5t-33.5 14.5q-32 0 -49 -29h-13v23l39 78h27l-31 -55q12 6 30 6q29 0 48.5 -19.5t19.5 -52.5q0 -35 -22 -55.5t-54 -20.5q-33 0 -51.5 16.5t-18.5 43.5z" />
<glyph unicode="&#xba;" horiz-adv-x="289" d="M25 448v97q0 62 34.5 94t84.5 32t85 -32t35 -94v-96q0 -63 -34.5 -94.5t-85.5 -31.5t-85 31t-34 94zM51 449q0 -51 25.5 -76t67.5 -25t68 25.5t26 76.5v94q0 50 -26.5 76t-67.5 26t-67 -26t-26 -76v-95z" />
<glyph unicode="&#xbb;" horiz-adv-x="272" d="M20 117l124 214l-123 212h31l123 -212l-124 -214h-31zM102 117l124 214l-123 212h31l123 -212l-124 -214h-31z" />
<glyph unicode="&#xbf;" horiz-adv-x="382" d="M20 152q0 47 19.5 83.5t68.5 74.5q48 36 62 70.5t14 110.5v69h26v-63q0 -91 -18.5 -131t-75.5 -83q-70 -52 -70 -128q0 -67 39.5 -109.5t99.5 -42.5q168 0 155 212h26q7 -115 -40.5 -175t-137.5 -60q-77 0 -122.5 48t-45.5 124zM182 621v42h30v-42h-30z" />
<glyph unicode="&#xc0;" horiz-adv-x="502" d="M4 0l156 663h186l152 -663h-164l-23 123h-125l-23 -123h-159zM147 824h33l93 -116h-31zM213 262h73l-33 201h-6z" />
<glyph unicode="&#xc1;" horiz-adv-x="502" d="M4 0l156 663h186l152 -663h-164l-23 123h-125l-23 -123h-159zM213 262h73l-33 201h-6zM236 708l93 116h33l-95 -116h-31z" />
<glyph unicode="&#xc2;" horiz-adv-x="502" d="M4 0l156 663h186l152 -663h-164l-23 123h-125l-23 -123h-159zM117 706v26l136 52l136 -52v-26l-136 50zM213 262h73l-33 201h-6z" />
<glyph unicode="&#xc3;" horiz-adv-x="502" d="M4 0l156 663h186l152 -663h-164l-23 123h-125l-23 -123h-159zM111 703q-2 89 72 89q27 0 74 -32t70 -32q19 0 31 16t10 48h26q2 -50 -19.5 -69.5t-50.5 -19.5q-31 0 -78 32t-67 32q-42 0 -42 -64h-26zM213 262h73l-33 201h-6z" />
<glyph unicode="&#xc4;" horiz-adv-x="502" d="M4 0l156 663h186l152 -663h-164l-23 123h-125l-23 -123h-159zM187 718v29h28v-29h-28zM213 262h73l-33 201h-6zM291 718v29h28v-29h-28z" />
<glyph unicode="&#xc5;" horiz-adv-x="502" d="M4 0l156 663h186l152 -663h-164l-23 123h-125l-23 -123h-159zM154 781q0 47 29 71.5t70 24.5q40 0 69 -25t29 -71q0 -47 -29.5 -72.5t-68.5 -25.5q-41 0 -70 25.5t-29 72.5zM180 781q0 -35 21.5 -54.5t51.5 -19.5q29 0 50.5 19.5t21.5 54.5t-21.5 53.5t-50.5 18.5 q-30 0 -51.5 -18.5t-21.5 -53.5zM213 262h73l-33 201h-6z" />
<glyph unicode="&#xc6;" horiz-adv-x="654" d="M4 0l173 663h438v-159h-216l24 -111h184v-131l-159 1l24 -103h147v-160h-281l-22 133h-126l-27 -133h-159zM219 272h74l-31 191h-3z" />
<glyph unicode="&#xc7;" horiz-adv-x="467" d="M37 198v266q0 53 14 93.5t35 63.5t49.5 37.5t53.5 19.5t52 5q37 0 69 -10.5t63 -36.5t48.5 -78t16.5 -125h-153q1 47 -9.5 66.5t-35.5 19.5q-44 0 -44 -59v-259q0 -59 44 -59q25 0 35.5 21t9.5 77h153q1 -62 -10.5 -109.5t-30.5 -75.5t-46.5 -45.5t-53.5 -23.5t-56 -6 h-12l-16 -29q12 6 30 6q29 0 48.5 -19.5t19.5 -52.5q0 -35 -22 -55.5t-54 -20.5q-33 0 -51.5 16.5t-18.5 43.5h26q4 -38 45 -38q49 0 49 53q0 21 -11.5 35.5t-33.5 14.5q-32 0 -49 -29h-13v23l27 54q-32 4 -59 16t-53 35t-41 65.5t-15 99.5z" />
<glyph unicode="&#xc8;" horiz-adv-x="424" d="M50 0v663h335v-159h-175v-84h167v-150h-167v-110h179v-160h-339zM113 824h33l93 -116h-31z" />
<glyph unicode="&#xc9;" horiz-adv-x="424" d="M50 0v663h335v-159h-175v-84h167v-150h-167v-110h179v-160h-339zM202 708l93 116h33l-95 -116h-31z" />
<glyph unicode="&#xca;" horiz-adv-x="424" d="M50 0v663h335v-159h-175v-84h167v-150h-167v-110h179v-160h-339zM83 706v26l136 52l136 -52v-26l-136 50z" />
<glyph unicode="&#xcb;" horiz-adv-x="424" d="M50 0v663h335v-159h-175v-84h167v-150h-167v-110h179v-160h-339zM153 718v29h28v-29h-28zM257 718v29h28v-29h-28z" />
<glyph unicode="&#xcc;" horiz-adv-x="260" d="M24 824h33l93 -116h-31zM50 0v663h160v-663h-160z" />
<glyph unicode="&#xcd;" horiz-adv-x="260" d="M50 0v663h160v-663h-160zM113 708l93 116h33l-95 -116h-31z" />
<glyph unicode="&#xce;" horiz-adv-x="260" d="M17 714v27l113 43l113 -43v-27l-113 42zM50 0v663h160v-663h-160z" />
<glyph unicode="&#xcf;" horiz-adv-x="260" d="M50 0v663h160v-663h-160zM64 718v29h28v-29h-28zM168 718v29h28v-29h-28z" />
<glyph unicode="&#xd0;" horiz-adv-x="482" d="M11 316v26h39v321h152q127 0 186 -52.5t59 -190.5v-177q0 -138 -59 -190.5t-186 -52.5h-152v316h-39zM210 161h22q28 0 41 14t13 47v219q0 34 -13 47.5t-41 13.5h-22v-160h42v-26h-42v-155z" />
<glyph unicode="&#xd1;" horiz-adv-x="542" d="M50 0v663h169l119 -309h6v309h148v-663h-162l-125 342h-6v-342h-149zM129 703q-2 89 72 89q27 0 74 -32t70 -32q19 0 31 16t10 48h26q2 -50 -19.5 -69.5t-50.5 -19.5q-31 0 -78 32t-67 32q-42 0 -42 -64h-26z" />
<glyph unicode="&#xd2;" d="M37 202v258q0 111 61.5 167t151.5 56t151.5 -56t61.5 -166v-258q0 -112 -61 -167.5t-152 -55.5t-152 54t-61 168zM144 824h33l93 -116h-31zM197 205q0 -31 15 -46.5t38 -15.5t38 15.5t15 46.5v251q0 32 -15 47.5t-38 15.5t-38 -15.5t-15 -47.5v-251z" />
<glyph unicode="&#xd3;" d="M37 202v258q0 111 61.5 167t151.5 56t151.5 -56t61.5 -166v-258q0 -112 -61 -167.5t-152 -55.5t-152 54t-61 168zM197 205q0 -31 15 -46.5t38 -15.5t38 15.5t15 46.5v251q0 32 -15 47.5t-38 15.5t-38 -15.5t-15 -47.5v-251zM233 708l93 116h33l-95 -116h-31z" />
<glyph unicode="&#xd4;" d="M37 202v258q0 111 61.5 167t151.5 56t151.5 -56t61.5 -166v-258q0 -112 -61 -167.5t-152 -55.5t-152 54t-61 168zM114 706v26l136 52l136 -52v-26l-136 50zM197 205q0 -31 15 -46.5t38 -15.5t38 15.5t15 46.5v251q0 32 -15 47.5t-38 15.5t-38 -15.5t-15 -47.5v-251z" />
<glyph unicode="&#xd5;" d="M37 202v258q0 111 61.5 167t151.5 56t151.5 -56t61.5 -166v-258q0 -112 -61 -167.5t-152 -55.5t-152 54t-61 168zM108 703q-2 89 72 89q27 0 74 -32t70 -32q19 0 31 16t10 48h26q2 -50 -19.5 -69.5t-50.5 -19.5q-31 0 -78 32t-67 32q-42 0 -42 -64h-26zM197 205 q0 -31 15 -46.5t38 -15.5t38 15.5t15 46.5v251q0 32 -15 47.5t-38 15.5t-38 -15.5t-15 -47.5v-251z" />
<glyph unicode="&#xd6;" d="M37 202v258q0 111 61.5 167t151.5 56t151.5 -56t61.5 -166v-258q0 -112 -61 -167.5t-152 -55.5t-152 54t-61 168zM184 718v29h28v-29h-28zM197 205q0 -31 15 -46.5t38 -15.5t38 15.5t15 46.5v251q0 32 -15 47.5t-38 15.5t-38 -15.5t-15 -47.5v-251zM288 718v29h28v-29 h-28z" />
<glyph unicode="&#xd7;" horiz-adv-x="400" d="M39 186l145 145l-144 144l17 17l144 -144l144 144l16 -17l-144 -144l144 -143l-17 -17l-144 143l-145 -145z" />
<glyph unicode="&#xd8;" d="M37 202v258q0 111 61.5 167t151.5 56q59 0 108 -25l33 84h30l-39 -99q81 -59 81 -182v-258q0 -112 -61 -167.5t-152 -55.5q-65 0 -116 27l-22 -56h-29l28 72q-74 56 -74 179zM195 238l102 264q-13 27 -47 27q-55 0 -55 -64v-227zM198 171q10 -38 52 -38q55 0 55 63v249z " />
<glyph unicode="&#xd9;" horiz-adv-x="495" d="M40 209v454h160v-456q0 -63 47 -63q48 0 48 63v456h160v-454q0 -229 -207 -229q-208 0 -208 229zM142 824h33l93 -116h-31z" />
<glyph unicode="&#xda;" horiz-adv-x="495" d="M40 209v454h160v-456q0 -63 47 -63q48 0 48 63v456h160v-454q0 -229 -207 -229q-208 0 -208 229zM231 708l93 116h33l-95 -116h-31z" />
<glyph unicode="&#xdb;" horiz-adv-x="495" d="M40 209v454h160v-456q0 -63 47 -63q48 0 48 63v456h160v-454q0 -229 -207 -229q-208 0 -208 229zM112 706v26l136 52l136 -52v-26l-136 50z" />
<glyph unicode="&#xdc;" horiz-adv-x="495" d="M40 209v454h160v-456q0 -63 47 -63q48 0 48 63v456h160v-454q0 -229 -207 -229q-208 0 -208 229zM182 718v29h28v-29h-28zM286 718v29h28v-29h-28z" />
<glyph unicode="&#xdd;" horiz-adv-x="482" d="M2 663h168l71 -222h6l71 222h162l-160 -411v-252h-160v252zM227 708l93 116h33l-95 -116h-31z" />
<glyph unicode="&#xde;" horiz-adv-x="454" d="M50 0v663h160v-102h5q219 0 219 -220q0 -106 -54.5 -167t-156.5 -61h-13v-113h-160zM210 260h17q27 0 39.5 17.5t12.5 57.5q0 75 -52 75h-17v-150z" />
<glyph unicode="&#xdf;" horiz-adv-x="901" d="M28 214h142q-3 -89 51 -89q43 0 43 43q0 37 -40 66l-74 54q-68 50 -93.5 99.5t-25.5 113.5q0 81 60 131.5t140 50.5q86 0 141.5 -55t52.5 -180h-142q3 93 -49 93q-46 0 -46 -43q0 -36 40 -66l88 -66q65 -49 88.5 -94.5t23.5 -99.5q0 -87 -58 -139.5t-143 -52.5 q-90 0 -146 55t-53 179zM477 214h142q-3 -89 51 -89q43 0 43 43q0 37 -40 66l-74 54q-68 50 -93.5 99.5t-25.5 113.5q0 81 60 131.5t140 50.5q86 0 141.5 -55t52.5 -180h-142q3 93 -49 93q-46 0 -46 -43q0 -36 40 -66l88 -66q65 -49 88.5 -94.5t23.5 -99.5q0 -87 -58 -139.5 t-143 -52.5q-90 0 -146 55t-53 179z" />
<glyph unicode="&#xe0;" horiz-adv-x="502" d="M4 0l156 663h186l152 -663h-164l-23 123h-125l-23 -123h-159zM147 824h33l93 -116h-31zM213 262h73l-33 201h-6z" />
<glyph unicode="&#xe1;" horiz-adv-x="502" d="M4 0l156 663h186l152 -663h-164l-23 123h-125l-23 -123h-159zM213 262h73l-33 201h-6zM236 708l93 116h33l-95 -116h-31z" />
<glyph unicode="&#xe2;" horiz-adv-x="502" d="M4 0l156 663h186l152 -663h-164l-23 123h-125l-23 -123h-159zM117 706v26l136 52l136 -52v-26l-136 50zM213 262h73l-33 201h-6z" />
<glyph unicode="&#xe3;" horiz-adv-x="502" d="M4 0l156 663h186l152 -663h-164l-23 123h-125l-23 -123h-159zM111 703q-2 89 72 89q27 0 74 -32t70 -32q19 0 31 16t10 48h26q2 -50 -19.5 -69.5t-50.5 -19.5q-31 0 -78 32t-67 32q-42 0 -42 -64h-26zM213 262h73l-33 201h-6z" />
<glyph unicode="&#xe4;" horiz-adv-x="502" d="M4 0l156 663h186l152 -663h-164l-23 123h-125l-23 -123h-159zM187 718v29h28v-29h-28zM213 262h73l-33 201h-6zM291 718v29h28v-29h-28z" />
<glyph unicode="&#xe5;" horiz-adv-x="502" d="M4 0l156 663h186l152 -663h-164l-23 123h-125l-23 -123h-159zM154 781q0 47 29 71.5t70 24.5q40 0 69 -25t29 -71q0 -47 -29.5 -72.5t-68.5 -25.5q-41 0 -70 25.5t-29 72.5zM180 781q0 -35 21.5 -54.5t51.5 -19.5q29 0 50.5 19.5t21.5 54.5t-21.5 53.5t-50.5 18.5 q-30 0 -51.5 -18.5t-21.5 -53.5zM213 262h73l-33 201h-6z" />
<glyph unicode="&#xe6;" horiz-adv-x="654" d="M4 0l173 663h438v-159h-216l24 -111h184v-131l-159 1l24 -103h147v-160h-281l-22 133h-126l-27 -133h-159zM219 272h74l-31 191h-3z" />
<glyph unicode="&#xe7;" horiz-adv-x="467" d="M37 198v266q0 53 14 93.5t35 63.5t49.5 37.5t53.5 19.5t52 5q37 0 69 -10.5t63 -36.5t48.5 -78t16.5 -125h-153q1 47 -9.5 66.5t-35.5 19.5q-44 0 -44 -59v-259q0 -59 44 -59q25 0 35.5 21t9.5 77h153q1 -62 -10.5 -109.5t-30.5 -75.5t-46.5 -45.5t-53.5 -23.5t-56 -6 h-12l-16 -29q12 6 30 6q29 0 48.5 -19.5t19.5 -52.5q0 -35 -22 -55.5t-54 -20.5q-33 0 -51.5 16.5t-18.5 43.5h26q4 -38 45 -38q49 0 49 53q0 21 -11.5 35.5t-33.5 14.5q-32 0 -49 -29h-13v23l27 54q-32 4 -59 16t-53 35t-41 65.5t-15 99.5z" />
<glyph unicode="&#xe8;" horiz-adv-x="424" d="M50 0v663h335v-159h-175v-84h167v-150h-167v-110h179v-160h-339zM113 824h33l93 -116h-31z" />
<glyph unicode="&#xe9;" horiz-adv-x="424" d="M50 0v663h335v-159h-175v-84h167v-150h-167v-110h179v-160h-339zM202 708l93 116h33l-95 -116h-31z" />
<glyph unicode="&#xea;" horiz-adv-x="424" d="M50 0v663h335v-159h-175v-84h167v-150h-167v-110h179v-160h-339zM83 706v26l136 52l136 -52v-26l-136 50z" />
<glyph unicode="&#xeb;" horiz-adv-x="424" d="M50 0v663h335v-159h-175v-84h167v-150h-167v-110h179v-160h-339zM153 718v29h28v-29h-28zM257 718v29h28v-29h-28z" />
<glyph unicode="&#xec;" horiz-adv-x="260" d="M24 824h33l93 -116h-31z" />
<glyph unicode="&#xed;" horiz-adv-x="260" d="M113 708l93 116h33l-95 -116h-31z" />
<glyph unicode="&#xee;" horiz-adv-x="260" d="M17 714v27l113 43l113 -43v-27l-113 42zM50 0v663h160v-663h-160z" />
<glyph unicode="&#xef;" horiz-adv-x="260" d="M64 718v29h28v-29h-28zM168 718v29h28v-29h-28z" />
<glyph unicode="&#xf0;" horiz-adv-x="482" d="M11 316v26h39v321h152q127 0 186 -52.5t59 -190.5v-177q0 -138 -59 -190.5t-186 -52.5h-152v316h-39zM210 161h22q28 0 41 14t13 47v219q0 34 -13 47.5t-41 13.5h-22v-160h42v-26h-42v-155z" />
<glyph unicode="&#xf1;" horiz-adv-x="542" d="M50 0v663h169l119 -309h6v309h148v-663h-162l-125 342h-6v-342h-149zM129 703q-2 89 72 89q27 0 74 -32t70 -32q19 0 31 16t10 48h26q2 -50 -19.5 -69.5t-50.5 -19.5q-31 0 -78 32t-67 32q-42 0 -42 -64h-26z" />
<glyph unicode="&#xf2;" d="M37 202v258q0 111 61.5 167t151.5 56t151.5 -56t61.5 -166v-258q0 -112 -61 -167.5t-152 -55.5t-152 54t-61 168zM144 824h33l93 -116h-31zM197 205q0 -31 15 -46.5t38 -15.5t38 15.5t15 46.5v251q0 32 -15 47.5t-38 15.5t-38 -15.5t-15 -47.5v-251z" />
<glyph unicode="&#xf3;" d="M37 202v258q0 111 61.5 167t151.5 56t151.5 -56t61.5 -166v-258q0 -112 -61 -167.5t-152 -55.5t-152 54t-61 168zM197 205q0 -31 15 -46.5t38 -15.5t38 15.5t15 46.5v251q0 32 -15 47.5t-38 15.5t-38 -15.5t-15 -47.5v-251zM233 708l93 116h33l-95 -116h-31z" />
<glyph unicode="&#xf4;" d="M37 202v258q0 111 61.5 167t151.5 56t151.5 -56t61.5 -166v-258q0 -112 -61 -167.5t-152 -55.5t-152 54t-61 168zM114 706v26l136 52l136 -52v-26l-136 50zM197 205q0 -31 15 -46.5t38 -15.5t38 15.5t15 46.5v251q0 32 -15 47.5t-38 15.5t-38 -15.5t-15 -47.5v-251z" />
<glyph unicode="&#xf5;" d="M37 202v258q0 111 61.5 167t151.5 56t151.5 -56t61.5 -166v-258q0 -112 -61 -167.5t-152 -55.5t-152 54t-61 168zM108 703q-2 89 72 89q27 0 74 -32t70 -32q19 0 31 16t10 48h26q2 -50 -19.5 -69.5t-50.5 -19.5q-31 0 -78 32t-67 32q-42 0 -42 -64h-26zM197 205 q0 -31 15 -46.5t38 -15.5t38 15.5t15 46.5v251q0 32 -15 47.5t-38 15.5t-38 -15.5t-15 -47.5v-251z" />
<glyph unicode="&#xf6;" d="M37 202v258q0 111 61.5 167t151.5 56t151.5 -56t61.5 -166v-258q0 -112 -61 -167.5t-152 -55.5t-152 54t-61 168zM184 718v29h28v-29h-28zM197 205q0 -31 15 -46.5t38 -15.5t38 15.5t15 46.5v251q0 32 -15 47.5t-38 15.5t-38 -15.5t-15 -47.5v-251zM288 718v29h28v-29 h-28z" />
<glyph unicode="&#xf7;" horiz-adv-x="400" d="M29 319v24h346v-24h-346zM188 187v36h28v-36h-28zM188 439v36h28v-36h-28z" />
<glyph unicode="&#xf8;" d="M37 202v258q0 111 61.5 167t151.5 56q59 0 108 -25l33 84h30l-39 -99q81 -59 81 -182v-258q0 -112 -61 -167.5t-152 -55.5q-65 0 -116 27l-22 -56h-29l28 72q-74 56 -74 179zM195 238l102 264q-13 27 -47 27q-55 0 -55 -64v-227zM198 171q10 -38 52 -38q55 0 55 63v249z " />
<glyph unicode="&#xf9;" horiz-adv-x="495" d="M40 209v454h160v-456q0 -63 47 -63q48 0 48 63v456h160v-454q0 -229 -207 -229q-208 0 -208 229zM142 824h33l93 -116h-31z" />
<glyph unicode="&#xfa;" horiz-adv-x="495" d="M40 209v454h160v-456q0 -63 47 -63q48 0 48 63v456h160v-454q0 -229 -207 -229q-208 0 -208 229zM231 708l93 116h33l-95 -116h-31z" />
<glyph unicode="&#xfb;" horiz-adv-x="495" d="M40 209v454h160v-456q0 -63 47 -63q48 0 48 63v456h160v-454q0 -229 -207 -229q-208 0 -208 229zM112 706v26l136 52l136 -52v-26l-136 50z" />
<glyph unicode="&#xfc;" horiz-adv-x="495" d="M40 209v454h160v-456q0 -63 47 -63q48 0 48 63v456h160v-454q0 -229 -207 -229q-208 0 -208 229zM182 718v29h28v-29h-28zM286 718v29h28v-29h-28z" />
<glyph unicode="&#xfd;" horiz-adv-x="482" d="M2 663h168l71 -222h6l71 222h162l-160 -411v-252h-160v252zM227 708l93 116h33l-95 -116h-31z" />
<glyph unicode="&#xfe;" horiz-adv-x="454" d="M50 0v663h160v-102h5q219 0 219 -220q0 -106 -54.5 -167t-156.5 -61h-13v-113h-160zM210 260h17q27 0 39.5 17.5t12.5 57.5q0 75 -52 75h-17v-150z" />
<glyph unicode="&#xff;" horiz-adv-x="482" d="M2 663h168l71 -222h6l71 222h162l-160 -411v-252h-160v252zM178 718v29h28v-29h-28zM282 718v29h28v-29h-28z" />
<glyph unicode="&#x100;" horiz-adv-x="502" d="M4 0l156 663h186l152 -663h-164l-23 123h-125l-23 -123h-159zM127 716v26h252v-26h-252zM213 262h73l-33 201h-6z" />
<glyph unicode="&#x101;" horiz-adv-x="502" d="M4 0l156 663h186l152 -663h-164l-23 123h-125l-23 -123h-159zM127 716v26h252v-26h-252zM213 262h73l-33 201h-6z" />
<glyph unicode="&#x102;" horiz-adv-x="502" d="M4 0l156 663h186l152 -663h-164l-23 123h-125l-23 -123h-159zM139 789h26q1 -28 24 -47.5t63 -19.5q41 0 63.5 19.5t24.5 47.5h26q0 -39 -30.5 -65.5t-83.5 -26.5t-83 26.5t-30 65.5zM213 262h73l-33 201h-6z" />
<glyph unicode="&#x103;" horiz-adv-x="502" d="M4 0l156 663h186l152 -663h-164l-23 123h-125l-23 -123h-159zM139 789h26q1 -28 24 -47.5t63 -19.5q41 0 63.5 19.5t24.5 47.5h26q0 -39 -30.5 -65.5t-83.5 -26.5t-83 26.5t-30 65.5zM213 262h73l-33 201h-6z" />
<glyph unicode="&#x104;" horiz-adv-x="502" d="M4 0l156 663h186l152 -663q-61 -22 -89.5 -41t-28.5 -52q0 -51 97 -51h14v-25h-26q-111 0 -111 76q0 32 23 54t74 39h-117l-23 123h-125l-23 -123h-159zM213 262h73l-33 201h-6z" />
<glyph unicode="&#x105;" horiz-adv-x="502" d="M4 0l156 663h186l152 -663q-61 -22 -89.5 -41t-28.5 -52q0 -51 97 -51h14v-25h-26q-111 0 -111 76q0 32 23 54t74 39h-117l-23 123h-125l-23 -123h-159zM213 262h73l-33 201h-6z" />
<glyph unicode="&#x106;" horiz-adv-x="467" d="M37 198v266q0 53 14 93.5t35 63.5t49.5 37.5t53.5 19.5t52 5q37 0 69 -10.5t63 -36.5t48.5 -78t16.5 -125h-153q1 47 -9.5 66.5t-35.5 19.5q-44 0 -44 -59v-259q0 -59 44 -59q25 0 35.5 21t9.5 77h153q1 -62 -10.5 -109.5t-30.5 -75.5t-46.5 -45.5t-53.5 -23.5t-56 -6 q-34 0 -65.5 8.5t-65 30t-53.5 67.5t-20 112zM224 708l93 116h33l-95 -116h-31z" />
<glyph unicode="&#x107;" horiz-adv-x="467" d="M37 198v266q0 53 14 93.5t35 63.5t49.5 37.5t53.5 19.5t52 5q37 0 69 -10.5t63 -36.5t48.5 -78t16.5 -125h-153q1 47 -9.5 66.5t-35.5 19.5q-44 0 -44 -59v-259q0 -59 44 -59q25 0 35.5 21t9.5 77h153q1 -62 -10.5 -109.5t-30.5 -75.5t-46.5 -45.5t-53.5 -23.5t-56 -6 q-34 0 -65.5 8.5t-65 30t-53.5 67.5t-20 112zM224 708l93 116h33l-95 -116h-31z" />
<glyph unicode="&#x108;" horiz-adv-x="467" d="M37 198v266q0 53 14 93.5t35 63.5t49.5 37.5t53.5 19.5t52 5q37 0 69 -10.5t63 -36.5t48.5 -78t16.5 -125h-153q1 47 -9.5 66.5t-35.5 19.5q-44 0 -44 -59v-259q0 -59 44 -59q25 0 35.5 21t9.5 77h153q1 -62 -10.5 -109.5t-30.5 -75.5t-46.5 -45.5t-53.5 -23.5t-56 -6 q-34 0 -65.5 8.5t-65 30t-53.5 67.5t-20 112zM105 706v26l136 52l136 -52v-26l-136 50z" />
<glyph unicode="&#x109;" horiz-adv-x="467" d="M37 198v266q0 53 14 93.5t35 63.5t49.5 37.5t53.5 19.5t52 5q37 0 69 -10.5t63 -36.5t48.5 -78t16.5 -125h-153q1 47 -9.5 66.5t-35.5 19.5q-44 0 -44 -59v-259q0 -59 44 -59q25 0 35.5 21t9.5 77h153q1 -62 -10.5 -109.5t-30.5 -75.5t-46.5 -45.5t-53.5 -23.5t-56 -6 q-34 0 -65.5 8.5t-65 30t-53.5 67.5t-20 112zM105 706v26l136 52l136 -52v-26l-136 50z" />
<glyph unicode="&#x10a;" horiz-adv-x="467" d="M37 198v266q0 53 14 93.5t35 63.5t49.5 37.5t53.5 19.5t52 5q37 0 69 -10.5t63 -36.5t48.5 -78t16.5 -125h-153q1 47 -9.5 66.5t-35.5 19.5q-44 0 -44 -59v-259q0 -59 44 -59q25 0 35.5 21t9.5 77h153q1 -62 -10.5 -109.5t-30.5 -75.5t-46.5 -45.5t-53.5 -23.5t-56 -6 q-34 0 -65.5 8.5t-65 30t-53.5 67.5t-20 112zM225 715v36h32v-36h-32z" />
<glyph unicode="&#x10b;" horiz-adv-x="467" d="M37 198v266q0 53 14 93.5t35 63.5t49.5 37.5t53.5 19.5t52 5q37 0 69 -10.5t63 -36.5t48.5 -78t16.5 -125h-153q1 47 -9.5 66.5t-35.5 19.5q-44 0 -44 -59v-259q0 -59 44 -59q25 0 35.5 21t9.5 77h153q1 -62 -10.5 -109.5t-30.5 -75.5t-46.5 -45.5t-53.5 -23.5t-56 -6 q-34 0 -65.5 8.5t-65 30t-53.5 67.5t-20 112zM225 715v36h32v-36h-32z" />
<glyph unicode="&#x10c;" horiz-adv-x="467" d="M37 198v266q0 53 14 93.5t35 63.5t49.5 37.5t53.5 19.5t52 5q37 0 69 -10.5t63 -36.5t48.5 -78t16.5 -125h-153q1 47 -9.5 66.5t-35.5 19.5q-44 0 -44 -59v-259q0 -59 44 -59q25 0 35.5 21t9.5 77h153q1 -62 -10.5 -109.5t-30.5 -75.5t-46.5 -45.5t-53.5 -23.5t-56 -6 q-34 0 -65.5 8.5t-65 30t-53.5 67.5t-20 112zM105 759v26l136 -50l136 50v-26l-136 -52z" />
<glyph unicode="&#x10d;" horiz-adv-x="467" d="M37 198v266q0 53 14 93.5t35 63.5t49.5 37.5t53.5 19.5t52 5q37 0 69 -10.5t63 -36.5t48.5 -78t16.5 -125h-153q1 47 -9.5 66.5t-35.5 19.5q-44 0 -44 -59v-259q0 -59 44 -59q25 0 35.5 21t9.5 77h153q1 -62 -10.5 -109.5t-30.5 -75.5t-46.5 -45.5t-53.5 -23.5t-56 -6 q-34 0 -65.5 8.5t-65 30t-53.5 67.5t-20 112zM105 759v26l136 -50l136 50v-26l-136 -52z" />
<glyph unicode="&#x10e;" horiz-adv-x="482" d="M50 0v663h152q127 0 186 -52.5t59 -190.5v-177q0 -138 -59 -190.5t-186 -52.5h-152zM91 757v26l136 -50l136 50v-26l-136 -52zM210 161h22q28 0 41 14t13 47v219q0 34 -13 47.5t-41 13.5h-22v-341z" />
<glyph unicode="&#x10f;" horiz-adv-x="482" d="M50 0v663h152q127 0 186 -52.5t59 -190.5v-177q0 -138 -59 -190.5t-186 -52.5h-152zM91 757v26l136 -50l136 50v-26l-136 -52zM210 161h22q28 0 41 14t13 47v219q0 34 -13 47.5t-41 13.5h-22v-341z" />
<glyph unicode="&#x110;" horiz-adv-x="482" d="M11 316v26h39v321h152q127 0 186 -52.5t59 -190.5v-177q0 -138 -59 -190.5t-186 -52.5h-152v316h-39zM210 161h22q28 0 41 14t13 47v219q0 34 -13 47.5t-41 13.5h-22v-160h42v-26h-42v-155z" />
<glyph unicode="&#x111;" horiz-adv-x="482" d="M50 0v663h152q127 0 186 -52.5t59 -190.5v-177q0 -138 -59 -190.5t-186 -52.5h-152zM210 161h22q28 0 41 14t13 47v219q0 34 -13 47.5t-41 13.5h-22v-341z" />
<glyph unicode="&#x112;" horiz-adv-x="424" d="M50 0v663h335v-159h-175v-84h167v-150h-167v-110h179v-160h-339zM93 716v26h252v-26h-252z" />
<glyph unicode="&#x113;" horiz-adv-x="424" d="M50 0v663h335v-159h-175v-84h167v-150h-167v-110h179v-160h-339zM93 716v26h252v-26h-252z" />
<glyph unicode="&#x114;" horiz-adv-x="424" d="M50 0v663h335v-159h-175v-84h167v-150h-167v-110h179v-160h-339zM105 789h26q1 -28 24 -47.5t63 -19.5q41 0 63.5 19.5t24.5 47.5h26q0 -39 -30.5 -65.5t-83.5 -26.5t-83 26.5t-30 65.5z" />
<glyph unicode="&#x115;" horiz-adv-x="424" d="M50 0v663h335v-159h-175v-84h167v-150h-167v-110h179v-160h-339zM105 789h26q1 -28 24 -47.5t63 -19.5q41 0 63.5 19.5t24.5 47.5h26q0 -39 -30.5 -65.5t-83.5 -26.5t-83 26.5t-30 65.5z" />
<glyph unicode="&#x116;" horiz-adv-x="424" d="M50 0v663h335v-159h-175v-84h167v-150h-167v-110h179v-160h-339zM203 715v36h32v-36h-32z" />
<glyph unicode="&#x117;" horiz-adv-x="424" d="M50 0v663h335v-159h-175v-84h167v-150h-167v-110h179v-160h-339zM203 715v36h32v-36h-32z" />
<glyph unicode="&#x118;" horiz-adv-x="424" d="M50 0v663h335v-159h-175v-84h167v-150h-167v-110h179v-160h1q-61 -22 -89.5 -41t-28.5 -52q0 -51 97 -51h14v-25h-26q-111 0 -111 76q0 32 23 54t74 39h-293z" />
<glyph unicode="&#x119;" horiz-adv-x="424" d="M50 0v663h335v-159h-175v-84h167v-150h-167v-110h179v-160h1q-61 -22 -89.5 -41t-28.5 -52q0 -51 97 -51h14v-25h-26q-111 0 -111 76q0 32 23 54t74 39h-293z" />
<glyph unicode="&#x11a;" horiz-adv-x="424" d="M50 0v663h335v-159h-175v-84h167v-150h-167v-110h179v-160h-339zM83 759v26l136 -50l136 50v-26l-136 -52z" />
<glyph unicode="&#x11b;" horiz-adv-x="424" d="M50 0v663h335v-159h-175v-84h167v-150h-167v-110h179v-160h-339zM83 759v26l136 -50l136 50v-26l-136 -52z" />
<glyph unicode="&#x11c;" horiz-adv-x="493" d="M37 220v231q0 66 19.5 114t52 72t67.5 35t73 11q33 0 64.5 -9t66.5 -32.5t56 -76t20 -127.5l-152 3q1 82 -53 82q-23 0 -38.5 -15t-15.5 -49v-255q0 -66 55 -66q52 0 52 57v14h-66v137h218v-127q0 -56 -13.5 -99.5t-34.5 -69.5t-49.5 -42t-55 -22t-54.5 -6q-37 0 -70 9.5 t-67 33t-54.5 74t-20.5 123.5zM114 706v26l136 52l136 -52v-26l-136 50z" />
<glyph unicode="&#x11d;" horiz-adv-x="493" d="M37 220v231q0 66 19.5 114t52 72t67.5 35t73 11q33 0 64.5 -9t66.5 -32.5t56 -76t20 -127.5l-152 3q1 82 -53 82q-23 0 -38.5 -15t-15.5 -49v-255q0 -66 55 -66q52 0 52 57v14h-66v137h218v-127q0 -56 -13.5 -99.5t-34.5 -69.5t-49.5 -42t-55 -22t-54.5 -6q-37 0 -70 9.5 t-67 33t-54.5 74t-20.5 123.5zM114 706v26l136 52l136 -52v-26l-136 50z" />
<glyph unicode="&#x11e;" horiz-adv-x="493" d="M37 220v231q0 66 19.5 114t52 72t67.5 35t73 11q33 0 64.5 -9t66.5 -32.5t56 -76t20 -127.5l-152 3q1 82 -53 82q-23 0 -38.5 -15t-15.5 -49v-255q0 -66 55 -66q52 0 52 57v14h-66v137h218v-127q0 -56 -13.5 -99.5t-34.5 -69.5t-49.5 -42t-55 -22t-54.5 -6q-37 0 -70 9.5 t-67 33t-54.5 74t-20.5 123.5zM136 789h26q1 -28 24 -47.5t63 -19.5q41 0 63.5 19.5t24.5 47.5h26q0 -39 -30.5 -65.5t-83.5 -26.5t-83 26.5t-30 65.5z" />
<glyph unicode="&#x11f;" horiz-adv-x="493" d="M37 220v231q0 66 19.5 114t52 72t67.5 35t73 11q33 0 64.5 -9t66.5 -32.5t56 -76t20 -127.5l-152 3q1 82 -53 82q-23 0 -38.5 -15t-15.5 -49v-255q0 -66 55 -66q52 0 52 57v14h-66v137h218v-127q0 -56 -13.5 -99.5t-34.5 -69.5t-49.5 -42t-55 -22t-54.5 -6q-37 0 -70 9.5 t-67 33t-54.5 74t-20.5 123.5zM136 789h26q1 -28 24 -47.5t63 -19.5q41 0 63.5 19.5t24.5 47.5h26q0 -39 -30.5 -65.5t-83.5 -26.5t-83 26.5t-30 65.5z" />
<glyph unicode="&#x120;" horiz-adv-x="493" d="M37 220v231q0 66 19.5 114t52 72t67.5 35t73 11q33 0 64.5 -9t66.5 -32.5t56 -76t20 -127.5l-152 3q1 82 -53 82q-23 0 -38.5 -15t-15.5 -49v-255q0 -66 55 -66q52 0 52 57v14h-66v137h218v-127q0 -56 -13.5 -99.5t-34.5 -69.5t-49.5 -42t-55 -22t-54.5 -6q-37 0 -70 9.5 t-67 33t-54.5 74t-20.5 123.5zM234 715v36h32v-36h-32z" />
<glyph unicode="&#x121;" horiz-adv-x="493" d="M37 220v231q0 66 19.5 114t52 72t67.5 35t73 11q33 0 64.5 -9t66.5 -32.5t56 -76t20 -127.5l-152 3q1 82 -53 82q-23 0 -38.5 -15t-15.5 -49v-255q0 -66 55 -66q52 0 52 57v14h-66v137h218v-127q0 -56 -13.5 -99.5t-34.5 -69.5t-49.5 -42t-55 -22t-54.5 -6q-37 0 -70 9.5 t-67 33t-54.5 74t-20.5 123.5zM234 715v36h32v-36h-32z" />
<glyph unicode="&#x122;" horiz-adv-x="493" d="M37 220v231q0 66 19.5 114t52 72t67.5 35t73 11q33 0 64.5 -9t66.5 -32.5t56 -76t20 -127.5l-152 3q1 82 -53 82q-23 0 -38.5 -15t-15.5 -49v-255q0 -66 55 -66q52 0 52 57v14h-66v137h218v-127q0 -56 -13.5 -99.5t-34.5 -69.5t-49.5 -42t-55 -22t-54.5 -6q-37 0 -70 9.5 t-67 33t-54.5 74t-20.5 123.5zM181 -169l50 102h29l-51 -102h-28z" />
<glyph unicode="&#x123;" horiz-adv-x="493" d="M37 220v231q0 66 19.5 114t52 72t67.5 35t73 11q33 0 64.5 -9t66.5 -32.5t56 -76t20 -127.5l-152 3q1 82 -53 82q-23 0 -38.5 -15t-15.5 -49v-255q0 -66 55 -66q52 0 52 57v14h-66v137h218v-127q0 -56 -13.5 -99.5t-34.5 -69.5t-49.5 -42t-55 -22t-54.5 -6q-37 0 -70 9.5 t-67 33t-54.5 74t-20.5 123.5zM181 -169l50 102h29l-51 -102h-28z" />
<glyph unicode="&#x124;" horiz-adv-x="503" d="M50 0v663h158v-236h87v236h158v-663h-158v274h-87v-274h-158zM115 706v26l136 52l136 -52v-26l-136 50z" />
<glyph unicode="&#x125;" horiz-adv-x="503" d="M50 0v663h158v-236h87v236h158v-663h-158v274h-87v-274h-158zM115 706v26l136 52l136 -52v-26l-136 50z" />
<glyph unicode="&#x126;" horiz-adv-x="503" d="M10 523v26h40v114h158v-114h87v114h158v-114h40v-26h-40v-523h-158v274h-87v-274h-158v523h-40zM208 427h87v96h-87v-96z" />
<glyph unicode="&#x127;" horiz-adv-x="503" d="M50 0v663h158v-236h87v236h158v-663h-158v274h-87v-274h-158z" />
<glyph unicode="&#x128;" horiz-adv-x="260" d="M4 711q-2 78 55 78q24 0 73.5 -26.5t71.5 -26.5q28 0 24 53h26q4 -78 -53 -78q-27 0 -77 26.5t-69 26.5q-25 0 -25 -49v-4h-26zM50 0v663h160v-663h-160z" />
<glyph unicode="&#x129;" horiz-adv-x="260" d="M4 711q-2 78 55 78q24 0 73.5 -26.5t71.5 -26.5q28 0 24 53h26q4 -78 -53 -78q-27 0 -77 26.5t-69 26.5q-25 0 -25 -49v-4h-26zM50 0v663h160v-663h-160z" />
<glyph unicode="&#x12a;" horiz-adv-x="260" d="M30 716v26h201v-26h-201zM50 0v663h160v-663h-160z" />
<glyph unicode="&#x12b;" horiz-adv-x="260" d="M30 716v26h201v-26h-201z" />
<glyph unicode="&#x12c;" horiz-adv-x="260" d="M16 789h26q1 -28 24 -47.5t63 -19.5q41 0 63.5 19.5t24.5 47.5h26q0 -39 -30.5 -65.5t-83.5 -26.5t-83 26.5t-30 65.5zM50 0v663h160v-663h-160z" />
<glyph unicode="&#x12d;" horiz-adv-x="260" d="M16 789h26q1 -28 24 -47.5t63 -19.5q41 0 63.5 19.5t24.5 47.5h26q0 -39 -30.5 -65.5t-83.5 -26.5t-83 26.5t-30 65.5z" />
<glyph unicode="&#x12e;" horiz-adv-x="260" d="M49 706v25h162v-25h-162zM50 0v663h160v-663q-61 -22 -89.5 -41t-28.5 -52q0 -51 97 -51h14v-25h-26q-111 0 -111 76q0 32 23 54t74 39h-113z" />
<glyph unicode="&#x12f;" horiz-adv-x="260" d="M49 706v25h162v-25h-162zM50 0v663h160v-663h-160z" />
<glyph unicode="&#x130;" horiz-adv-x="260" d="M49 706v25h162v-25h-162zM50 0v663h160v-663h-160z" />
<glyph unicode="&#x131;" horiz-adv-x="260" d="M50 0v663h160v-663h-160z" />
<glyph unicode="&#x132;" horiz-adv-x="698" d="M246 209v16h160v-20q0 -63 47 -63q48 0 48 63v458h160v-454q0 -229 -207 -229q-99 0 -153.5 52t-54.5 177zM246 254v409h160v-409h-160zM246 706v25h162v-25h-162zM500 706v25h162v-25h-162z" />
<glyph unicode="&#x133;" horiz-adv-x="698" d="M246 209v16h160v-20q0 -63 47 -63q48 0 48 63v458h160v-454q0 -229 -207 -229q-99 0 -153.5 52t-54.5 177zM246 254v409h160v-409h-160zM246 706v25h162v-25h-162zM500 706v25h162v-25h-162z" />
<glyph unicode="&#x134;" horiz-adv-x="438" d="M6 230h146q-4 -86 45 -86q44 0 44 60v459h160v-460q0 -64 -17.5 -110t-48 -69.5t-63.5 -33.5t-72 -10q-85 0 -142.5 60.5t-51.5 189.5zM208 714v27l113 43l113 -43v-27l-113 42z" />
<glyph unicode="&#x135;" horiz-adv-x="438" d="M6 230h146q-4 -86 45 -86q44 0 44 60v459h160v-460q0 -64 -17.5 -110t-48 -69.5t-63.5 -33.5t-72 -10q-85 0 -142.5 60.5t-51.5 189.5zM208 714v27l113 43l113 -43v-27l-113 42z" />
<glyph unicode="&#x136;" horiz-adv-x="519" d="M50 0v663h159v-280h5l91 280h170l-105 -296v-4l133 -363h-179l-110 324h-5v-324h-159zM197 -169l50 102h29l-51 -102h-28z" />
<glyph unicode="&#x137;" horiz-adv-x="519" d="M50 0v663h159v-280h5l91 280h170l-105 -296v-4l133 -363h-179l-110 324h-5v-324h-159zM197 -169l50 102h29l-51 -102h-28z" />
<glyph unicode="&#x139;" horiz-adv-x="387" d="M50 0v663h158v-503h164v-160h-322zM110 708l93 116h33l-95 -116h-31z" />
<glyph unicode="&#x13a;" horiz-adv-x="387" d="M50 0v663h158v-503h164v-160h-322zM110 708l93 116h33l-95 -116h-31z" />
<glyph unicode="&#x13b;" horiz-adv-x="387" d="M50 0v663h158v-503h164v-160h-322zM143 -169l50 102h29l-51 -102h-28z" />
<glyph unicode="&#x13c;" horiz-adv-x="387" d="M50 0v663h158v-503h164v-160h-322zM143 -169l50 102h29l-51 -102h-28z" />
<glyph unicode="&#x13d;" horiz-adv-x="387" d="M50 0v663h158v-503h164v-160h-322zM278 526l45 137h30l-45 -137h-30z" />
<glyph unicode="&#x13e;" horiz-adv-x="387" d="M50 0v663h158v-503h164v-160h-322z" />
<glyph unicode="&#x13f;" horiz-adv-x="387" d="M50 0v663h158v-503h164v-160h-322zM322 312v40h28v-40h-28z" />
<glyph unicode="&#x140;" horiz-adv-x="387" d="M50 0v663h158v-503h164v-160h-322zM322 312v40h28v-40h-28z" />
<glyph unicode="&#x141;" horiz-adv-x="387" d="M9 265v31l41 20v347h158v-270l86 43v-31l-86 -43v-202h164v-160h-322v285z" />
<glyph unicode="&#x142;" horiz-adv-x="387" d="M9 265v31l41 20v347h158v-270l86 43v-31l-86 -43v-202h164v-160h-322v285z" />
<glyph unicode="&#x143;" horiz-adv-x="542" d="M50 0v663h169l119 -309h6v309h148v-663h-162l-125 342h-6v-342h-149zM254 708l93 116h33l-95 -116h-31z" />
<glyph unicode="&#x144;" horiz-adv-x="542" d="M50 0v663h169l119 -309h6v309h148v-663h-162l-125 342h-6v-342h-149zM254 708l93 116h33l-95 -116h-31z" />
<glyph unicode="&#x145;" horiz-adv-x="542" d="M50 0v663h169l119 -309h6v309h148v-663h-162l-125 342h-6v-342h-149zM199 -169l50 102h29l-51 -102h-28z" />
<glyph unicode="&#x146;" horiz-adv-x="542" d="M50 0v663h169l119 -309h6v309h148v-663h-162l-125 342h-6v-342h-149zM199 -169l50 102h29l-51 -102h-28z" />
<glyph unicode="&#x147;" horiz-adv-x="542" d="M50 0v663h169l119 -309h6v309h148v-663h-162l-125 342h-6v-342h-149zM135 759v26l136 -50l136 50v-26l-136 -52z" />
<glyph unicode="&#x148;" horiz-adv-x="542" d="M50 0v663h169l119 -309h6v309h148v-663h-162l-125 342h-6v-342h-149zM135 759v26l136 -50l136 50v-26l-136 -52z" />
<glyph unicode="&#x14a;" horiz-adv-x="542" d="M50 0v663h169l119 -309h6v309h148v-627q0 -59 -14.5 -101t-40.5 -63.5t-54 -31t-62 -9.5h-36v123h26q37 0 40 35l-146 353h-6v-342h-149z" />
<glyph unicode="&#x14b;" horiz-adv-x="542" d="M50 0v663h169l119 -309h6v309h148v-627q0 -59 -14.5 -101t-40.5 -63.5t-54 -31t-62 -9.5h-36v123h26q37 0 40 35l-146 353h-6v-342h-149z" />
<glyph unicode="&#x14c;" d="M37 202v258q0 111 61.5 167t151.5 56t151.5 -56t61.5 -166v-258q0 -112 -61 -167.5t-152 -55.5t-152 54t-61 168zM124 716v26h252v-26h-252zM197 205q0 -31 15 -46.5t38 -15.5t38 15.5t15 46.5v251q0 32 -15 47.5t-38 15.5t-38 -15.5t-15 -47.5v-251z" />
<glyph unicode="&#x14d;" d="M37 202v258q0 111 61.5 167t151.5 56t151.5 -56t61.5 -166v-258q0 -112 -61 -167.5t-152 -55.5t-152 54t-61 168zM124 716v26h252v-26h-252zM197 205q0 -31 15 -46.5t38 -15.5t38 15.5t15 46.5v251q0 32 -15 47.5t-38 15.5t-38 -15.5t-15 -47.5v-251z" />
<glyph unicode="&#x14e;" d="M37 202v258q0 111 61.5 167t151.5 56t151.5 -56t61.5 -166v-258q0 -112 -61 -167.5t-152 -55.5t-152 54t-61 168zM136 789h26q1 -28 24 -47.5t63 -19.5q41 0 63.5 19.5t24.5 47.5h26q0 -39 -30.5 -65.5t-83.5 -26.5t-83 26.5t-30 65.5zM197 205q0 -31 15 -46.5t38 -15.5 t38 15.5t15 46.5v251q0 32 -15 47.5t-38 15.5t-38 -15.5t-15 -47.5v-251z" />
<glyph unicode="&#x14f;" d="M37 202v258q0 111 61.5 167t151.5 56t151.5 -56t61.5 -166v-258q0 -112 -61 -167.5t-152 -55.5t-152 54t-61 168zM136 789h26q1 -28 24 -47.5t63 -19.5q41 0 63.5 19.5t24.5 47.5h26q0 -39 -30.5 -65.5t-83.5 -26.5t-83 26.5t-30 65.5zM197 205q0 -31 15 -46.5t38 -15.5 t38 15.5t15 46.5v251q0 32 -15 47.5t-38 15.5t-38 -15.5t-15 -47.5v-251z" />
<glyph unicode="&#x150;" d="M37 202v258q0 111 61.5 167t151.5 56t151.5 -56t61.5 -166v-258q0 -112 -61 -167.5t-152 -55.5t-152 54t-61 168zM176 708l67 137h29l-68 -137h-28zM197 205q0 -31 15 -46.5t38 -15.5t38 15.5t15 46.5v251q0 32 -15 47.5t-38 15.5t-38 -15.5t-15 -47.5v-251zM285 708 l67 137h29l-68 -137h-28z" />
<glyph unicode="&#x151;" d="M37 202v258q0 111 61.5 167t151.5 56t151.5 -56t61.5 -166v-258q0 -112 -61 -167.5t-152 -55.5t-152 54t-61 168zM176 708l67 137h29l-68 -137h-28zM197 205q0 -31 15 -46.5t38 -15.5t38 15.5t15 46.5v251q0 32 -15 47.5t-38 15.5t-38 -15.5t-15 -47.5v-251zM285 708 l67 137h29l-68 -137h-28z" />
<glyph unicode="&#x152;" horiz-adv-x="678" d="M37 206v249q0 108 56.5 163t142.5 55q48 0 74 -20v10h329v-159h-177v-84h169v-150h-169v-110h181v-160h-327v10q-24 -20 -80 -20q-87 0 -143 52.5t-56 163.5zM197 205q0 -31 15.5 -46.5t40.5 -15.5t40.5 15.5t15.5 46.5v251q0 32 -15.5 47.5t-40.5 15.5t-40.5 -15.5 t-15.5 -47.5v-251z" />
<glyph unicode="&#x153;" horiz-adv-x="678" d="M37 206v249q0 108 56.5 163t142.5 55q48 0 74 -20v10h329v-159h-177v-84h169v-150h-169v-110h181v-160h-327v10q-24 -20 -80 -20q-87 0 -143 52.5t-56 163.5zM197 205q0 -31 15.5 -46.5t40.5 -15.5t40.5 15.5t15.5 46.5v251q0 32 -15.5 47.5t-40.5 15.5t-40.5 -15.5 t-15.5 -47.5v-251z" />
<glyph unicode="&#x154;" horiz-adv-x="479" d="M50 0v663h193q106 0 154 -50.5t48 -124.5q0 -52 -25.5 -89.5t-62.5 -58.5v-4q40 -11 67.5 -47.5t27.5 -101.5v-187h-160v183q0 34 -12.5 50t-41.5 16h-28v-249h-160zM210 393h23q56 0 56 68q0 60 -53 60h-26v-128zM220 708l93 116h33l-95 -116h-31z" />
<glyph unicode="&#x155;" horiz-adv-x="479" d="M50 0v663h193q106 0 154 -50.5t48 -124.5q0 -52 -25.5 -89.5t-62.5 -58.5v-4q40 -11 67.5 -47.5t27.5 -101.5v-187h-160v183q0 34 -12.5 50t-41.5 16h-28v-249h-160zM210 393h23q56 0 56 68q0 60 -53 60h-26v-128zM220 708l93 116h33l-95 -116h-31z" />
<glyph unicode="&#x156;" horiz-adv-x="479" d="M50 0v663h193q106 0 154 -50.5t48 -124.5q0 -52 -25.5 -89.5t-62.5 -58.5v-4q40 -11 67.5 -47.5t27.5 -101.5v-187h-160v183q0 34 -12.5 50t-41.5 16h-28v-249h-160zM182 -169l50 102h29l-51 -102h-28zM210 393h23q56 0 56 68q0 60 -53 60h-26v-128z" />
<glyph unicode="&#x157;" horiz-adv-x="479" d="M50 0v663h193q106 0 154 -50.5t48 -124.5q0 -52 -25.5 -89.5t-62.5 -58.5v-4q40 -11 67.5 -47.5t27.5 -101.5v-187h-160v183q0 34 -12.5 50t-41.5 16h-28v-249h-160zM182 -169l50 102h29l-51 -102h-28zM210 393h23q56 0 56 68q0 60 -53 60h-26v-128z" />
<glyph unicode="&#x158;" horiz-adv-x="479" d="M50 0v663h193q106 0 154 -50.5t48 -124.5q0 -52 -25.5 -89.5t-62.5 -58.5v-4q40 -11 67.5 -47.5t27.5 -101.5v-187h-160v183q0 34 -12.5 50t-41.5 16h-28v-249h-160zM101 759v26l136 -50l136 50v-26l-136 -52zM210 393h23q56 0 56 68q0 60 -53 60h-26v-128z" />
<glyph unicode="&#x159;" horiz-adv-x="479" d="M50 0v663h193q106 0 154 -50.5t48 -124.5q0 -52 -25.5 -89.5t-62.5 -58.5v-4q40 -11 67.5 -47.5t27.5 -101.5v-187h-160v183q0 34 -12.5 50t-41.5 16h-28v-249h-160zM101 759v26l136 -50l136 50v-26l-136 -52zM210 393h23q56 0 56 68q0 60 -53 60h-26v-128z" />
<glyph unicode="&#x15a;" horiz-adv-x="452" d="M28 214h142q-3 -89 51 -89q43 0 43 43q0 37 -40 66l-74 54q-68 50 -93.5 99.5t-25.5 113.5q0 81 60 131.5t140 50.5q86 0 141.5 -55t52.5 -180h-142q3 93 -49 93q-46 0 -46 -43q0 -36 40 -66l88 -66q65 -49 88.5 -94.5t23.5 -99.5q0 -87 -58 -139.5t-143 -52.5 q-90 0 -146 55t-53 179zM218 708l93 116h33l-95 -116h-31z" />
<glyph unicode="&#x15b;" horiz-adv-x="452" d="M28 214h142q-3 -89 51 -89q43 0 43 43q0 37 -40 66l-74 54q-68 50 -93.5 99.5t-25.5 113.5q0 81 60 131.5t140 50.5q86 0 141.5 -55t52.5 -180h-142q3 93 -49 93q-46 0 -46 -43q0 -36 40 -66l88 -66q65 -49 88.5 -94.5t23.5 -99.5q0 -87 -58 -139.5t-143 -52.5 q-90 0 -146 55t-53 179zM218 708l93 116h33l-95 -116h-31z" />
<glyph unicode="&#x15c;" horiz-adv-x="452" d="M28 214h142q-3 -89 51 -89q43 0 43 43q0 37 -40 66l-74 54q-68 50 -93.5 99.5t-25.5 113.5q0 81 60 131.5t140 50.5q86 0 141.5 -55t52.5 -180h-142q3 93 -49 93q-46 0 -46 -43q0 -36 40 -66l88 -66q65 -49 88.5 -94.5t23.5 -99.5q0 -87 -58 -139.5t-143 -52.5 q-90 0 -146 55t-53 179zM99 706v26l136 52l136 -52v-26l-136 50z" />
<glyph unicode="&#x15d;" horiz-adv-x="452" d="M28 214h142q-3 -89 51 -89q43 0 43 43q0 37 -40 66l-74 54q-68 50 -93.5 99.5t-25.5 113.5q0 81 60 131.5t140 50.5q86 0 141.5 -55t52.5 -180h-142q3 93 -49 93q-46 0 -46 -43q0 -36 40 -66l88 -66q65 -49 88.5 -94.5t23.5 -99.5q0 -87 -58 -139.5t-143 -52.5 q-90 0 -146 55t-53 179zM99 706v26l136 52l136 -52v-26l-136 50z" />
<glyph unicode="&#x15e;" horiz-adv-x="452" d="M28 214h142q-3 -89 51 -89q43 0 43 43q0 37 -40 66l-74 54q-68 50 -93.5 99.5t-25.5 113.5q0 81 60 131.5t140 50.5q86 0 141.5 -55t52.5 -180h-142q3 93 -49 93q-46 0 -46 -43q0 -36 40 -66l88 -66q65 -49 88.5 -94.5t23.5 -99.5q0 -87 -58 -139.5t-143 -52.5h-4 l-16 -28q12 6 30 6q29 0 48.5 -19.5t19.5 -52.5q0 -35 -22 -55.5t-54 -20.5q-33 0 -51.5 16.5t-18.5 43.5h26q4 -38 45 -38q49 0 49 53q0 21 -11.5 35.5t-33.5 14.5q-32 0 -49 -29h-13v23l26 53q-79 8 -126 63.5t-44 168.5z" />
<glyph unicode="&#x15f;" horiz-adv-x="452" d="M28 214h142q-3 -89 51 -89q43 0 43 43q0 37 -40 66l-74 54q-68 50 -93.5 99.5t-25.5 113.5q0 81 60 131.5t140 50.5q86 0 141.5 -55t52.5 -180h-142q3 93 -49 93q-46 0 -46 -43q0 -36 40 -66l88 -66q65 -49 88.5 -94.5t23.5 -99.5q0 -87 -58 -139.5t-143 -52.5h-4 l-16 -28q12 6 30 6q29 0 48.5 -19.5t19.5 -52.5q0 -35 -22 -55.5t-54 -20.5q-33 0 -51.5 16.5t-18.5 43.5h26q4 -38 45 -38q49 0 49 53q0 21 -11.5 35.5t-33.5 14.5q-32 0 -49 -29h-13v23l26 53q-79 8 -126 63.5t-44 168.5z" />
<glyph unicode="&#x160;" horiz-adv-x="452" d="M28 214h142q-3 -89 51 -89q43 0 43 43q0 37 -40 66l-74 54q-68 50 -93.5 99.5t-25.5 113.5q0 81 60 131.5t140 50.5q86 0 141.5 -55t52.5 -180h-142q3 93 -49 93q-46 0 -46 -43q0 -36 40 -66l88 -66q65 -49 88.5 -94.5t23.5 -99.5q0 -87 -58 -139.5t-143 -52.5 q-90 0 -146 55t-53 179zM99 759v26l136 -50l136 50v-26l-136 -52z" />
<glyph unicode="&#x161;" horiz-adv-x="452" d="M28 214h142q-3 -89 51 -89q43 0 43 43q0 37 -40 66l-74 54q-68 50 -93.5 99.5t-25.5 113.5q0 81 60 131.5t140 50.5q86 0 141.5 -55t52.5 -180h-142q3 93 -49 93q-46 0 -46 -43q0 -36 40 -66l88 -66q65 -49 88.5 -94.5t23.5 -99.5q0 -87 -58 -139.5t-143 -52.5 q-90 0 -146 55t-53 179zM99 759v26l136 -50l136 50v-26l-136 -52z" />
<glyph unicode="&#x162;" horiz-adv-x="420" d="M15 508v155h390v-155h-113v-508h-160v508h-117zM146 -169l50 102h29l-51 -102h-28z" />
<glyph unicode="&#x163;" horiz-adv-x="420" d="M15 508v155h390v-155h-113v-508h-160v508h-117zM146 -169l50 102h29l-51 -102h-28z" />
<glyph unicode="&#x164;" horiz-adv-x="420" d="M15 508v155h390v-155h-113v-508h-160v508h-117zM74 759v26l136 -50l136 50v-26l-136 -52z" />
<glyph unicode="&#x165;" horiz-adv-x="420" d="M15 508v155h390v-155h-113v-508h-160v508h-117zM74 759v26l136 -50l136 50v-26l-136 -52z" />
<glyph unicode="&#x166;" horiz-adv-x="420" d="M15 508v155h390v-155h-113v-121h100v-26h-100v-361h-160v361h-104v26h104v121h-117z" />
<glyph unicode="&#x167;" horiz-adv-x="420" d="M15 508v155h390v-155h-113v-508h-160v508h-117z" />
<glyph unicode="&#x168;" horiz-adv-x="495" d="M40 209v454h160v-456q0 -63 47 -63q48 0 48 63v456h160v-454q0 -229 -207 -229q-208 0 -208 229zM111 703q-2 89 72 89q27 0 74 -32t70 -32q19 0 31 16t10 48h26q2 -50 -19.5 -69.5t-50.5 -19.5q-31 0 -78 32t-67 32q-42 0 -42 -64h-26z" />
<glyph unicode="&#x169;" horiz-adv-x="495" d="M40 209v454h160v-456q0 -63 47 -63q48 0 48 63v456h160v-454q0 -229 -207 -229q-208 0 -208 229zM111 703q-2 89 72 89q27 0 74 -32t70 -32q19 0 31 16t10 48h26q2 -50 -19.5 -69.5t-50.5 -19.5q-31 0 -78 32t-67 32q-42 0 -42 -64h-26z" />
<glyph unicode="&#x16a;" horiz-adv-x="495" d="M40 209v454h160v-456q0 -63 47 -63q48 0 48 63v456h160v-454q0 -229 -207 -229q-208 0 -208 229zM122 716v26h252v-26h-252z" />
<glyph unicode="&#x16b;" horiz-adv-x="495" d="M40 209v454h160v-456q0 -63 47 -63q48 0 48 63v456h160v-454q0 -229 -207 -229q-208 0 -208 229zM122 716v26h252v-26h-252z" />
<glyph unicode="&#x16c;" horiz-adv-x="495" d="M40 209v454h160v-456q0 -63 47 -63q48 0 48 63v456h160v-454q0 -229 -207 -229q-208 0 -208 229zM134 789h26q1 -28 24 -47.5t63 -19.5q41 0 63.5 19.5t24.5 47.5h26q0 -39 -30.5 -65.5t-83.5 -26.5t-83 26.5t-30 65.5z" />
<glyph unicode="&#x16d;" horiz-adv-x="495" d="M40 209v454h160v-456q0 -63 47 -63q48 0 48 63v456h160v-454q0 -229 -207 -229q-208 0 -208 229zM134 789h26q1 -28 24 -47.5t63 -19.5q41 0 63.5 19.5t24.5 47.5h26q0 -39 -30.5 -65.5t-83.5 -26.5t-83 26.5t-30 65.5z" />
<glyph unicode="&#x16e;" horiz-adv-x="495" d="M40 209v454h160v-456q0 -63 47 -63q48 0 48 63v456h160v-454q0 -229 -207 -229q-208 0 -208 229zM150 769q0 47 29 71.5t70 24.5q40 0 69 -25t29 -71q0 -47 -29.5 -72.5t-68.5 -25.5q-41 0 -70 25.5t-29 72.5zM176 769q0 -35 21.5 -54.5t51.5 -19.5q29 0 50.5 19.5 t21.5 54.5t-21.5 53.5t-50.5 18.5q-30 0 -51.5 -18.5t-21.5 -53.5z" />
<glyph unicode="&#x16f;" horiz-adv-x="495" d="M40 209v454h160v-456q0 -63 47 -63q48 0 48 63v456h160v-454q0 -229 -207 -229q-208 0 -208 229zM150 769q0 47 29 71.5t70 24.5q40 0 69 -25t29 -71q0 -47 -29.5 -72.5t-68.5 -25.5q-41 0 -70 25.5t-29 72.5zM176 769q0 -35 21.5 -54.5t51.5 -19.5q29 0 50.5 19.5 t21.5 54.5t-21.5 53.5t-50.5 18.5q-30 0 -51.5 -18.5t-21.5 -53.5z" />
<glyph unicode="&#x170;" horiz-adv-x="495" d="M40 209v454h160v-456q0 -63 47 -63q48 0 48 63v456h160v-454q0 -229 -207 -229q-208 0 -208 229zM174 708l67 137h29l-68 -137h-28zM283 708l67 137h29l-68 -137h-28z" />
<glyph unicode="&#x171;" horiz-adv-x="495" d="M40 209v454h160v-456q0 -63 47 -63q48 0 48 63v456h160v-454q0 -229 -207 -229q-208 0 -208 229zM174 708l67 137h29l-68 -137h-28zM283 708l67 137h29l-68 -137h-28z" />
<glyph unicode="&#x172;" horiz-adv-x="495" d="M40 209v454h160v-456q0 -63 47 -63q48 0 48 63v456h160v-454q0 -96 -34 -147.5t-104 -76.5q-111 -43 -111 -92q0 -51 97 -51h14v-25h-26q-48 0 -79.5 18.5t-31.5 54.5q0 54 77 90h-9q-208 0 -208 229z" />
<glyph unicode="&#x173;" horiz-adv-x="495" d="M40 209v454h160v-456q0 -63 47 -63q48 0 48 63v456h160v-454q0 -96 -34 -147.5t-104 -76.5q-111 -43 -111 -92q0 -51 97 -51h14v-25h-26q-48 0 -79.5 18.5t-31.5 54.5q0 54 77 90h-9q-208 0 -208 229z" />
<glyph unicode="&#x174;" horiz-adv-x="672" d="M5 663h155l52 -326h6l66 326h105l66 -326h6l52 326h154l-129 -663h-123l-76 291h-6l-76 -291h-123zM200 706v26l136 52l136 -52v-26l-136 50z" />
<glyph unicode="&#x175;" horiz-adv-x="672" d="M5 663h155l52 -326h6l66 326h105l66 -326h6l52 326h154l-129 -663h-123l-76 291h-6l-76 -291h-123zM200 706v26l136 52l136 -52v-26l-136 50z" />
<glyph unicode="&#x176;" horiz-adv-x="482" d="M2 663h168l71 -212h6l71 212h162l-160 -411v-252h-160v252zM108 706v26l136 52l136 -52v-26l-136 50z" />
<glyph unicode="&#x177;" horiz-adv-x="482" d="M2 663h168l71 -222h6l71 222h162l-160 -411v-252h-160v252zM108 706v26l136 52l136 -52v-26l-136 50z" />
<glyph unicode="&#x178;" horiz-adv-x="482" d="M2 663h168l71 -222h6l71 222h162l-160 -411v-252h-160v252zM178 718v29h28v-29h-28zM282 718v29h28v-29h-28z" />
<glyph unicode="&#x179;" horiz-adv-x="426" d="M25 0v161l192 344h-187v158h364v-152l-191 -352h198v-159h-376zM199 708l93 116h33l-95 -116h-31z" />
<glyph unicode="&#x17a;" horiz-adv-x="426" d="M25 0v161l192 344h-187v158h364v-152l-191 -352h198v-159h-376zM199 708l93 116h33l-95 -116h-31z" />
<glyph unicode="&#x17b;" horiz-adv-x="426" d="M25 0v161l192 344h-187v158h364v-152l-191 -352h198v-159h-376zM200 715v36h32v-36h-32z" />
<glyph unicode="&#x17c;" horiz-adv-x="426" d="M25 0v161l192 344h-187v158h364v-152l-191 -352h198v-159h-376zM200 715v36h32v-36h-32z" />
<glyph unicode="&#x17d;" horiz-adv-x="426" d="M25 0v161l192 344h-187v158h364v-152l-191 -352h198v-159h-376zM80 759v26l136 -50l136 50v-26l-136 -52z" />
<glyph unicode="&#x17e;" horiz-adv-x="426" d="M25 0v161l192 344h-187v158h364v-152l-191 -352h198v-159h-376zM80 759v26l136 -50l136 50v-26l-136 -52z" />
<glyph unicode="&#x1fa;" horiz-adv-x="502" d="M4 0l156 663h186l152 -663h-164l-23 123h-125l-23 -123h-159zM153 778q0 47 29 71.5t70 24.5q40 0 69 -25t29 -71q0 -47 -29.5 -72.5t-68.5 -25.5q-41 0 -70 25.5t-29 72.5zM179 778q0 -35 21.5 -54.5t51.5 -19.5q29 0 50.5 19.5t21.5 54.5t-21.5 53.5t-50.5 18.5 q-30 0 -51.5 -18.5t-21.5 -53.5zM213 262h73l-33 201h-6zM237 890l93 116h33l-95 -116h-31z" />
<glyph unicode="&#x1fb;" horiz-adv-x="502" d="M4 0l156 663h186l152 -663h-164l-23 123h-125l-23 -123h-159zM153 778q0 47 29 71.5t70 24.5q40 0 69 -25t29 -71q0 -47 -29.5 -72.5t-68.5 -25.5q-41 0 -70 25.5t-29 72.5zM179 778q0 -35 21.5 -54.5t51.5 -19.5q29 0 50.5 19.5t21.5 54.5t-21.5 53.5t-50.5 18.5 q-30 0 -51.5 -18.5t-21.5 -53.5zM213 262h73l-33 201h-6zM237 890l93 116h33l-95 -116h-31z" />
<glyph unicode="&#x1fc;" horiz-adv-x="654" d="M4 0l173 663h438v-159h-216l24 -111h184v-131l-159 1l24 -103h147v-160h-281l-22 133h-126l-27 -133h-159zM219 272h74l-31 191h-3zM341 697l93 116h33l-95 -116h-31z" />
<glyph unicode="&#x1fd;" horiz-adv-x="654" d="M4 0l173 663h438v-159h-216l24 -111h184v-131l-159 1l24 -103h147v-160h-281l-22 133h-126l-27 -133h-159zM219 272h74l-31 191h-3zM341 697l93 116h33l-95 -116h-31z" />
<glyph unicode="&#x1fe;" d="M37 202v258q0 111 61.5 167t151.5 56q59 0 108 -25l33 84h30l-39 -99q81 -59 81 -182v-258q0 -112 -61 -167.5t-152 -55.5q-65 0 -116 27l-22 -56h-29l28 72q-74 56 -74 179zM195 238l102 264q-13 27 -47 27q-55 0 -55 -64v-227zM198 171q10 -38 52 -38q55 0 55 63v249z M233 708l93 116h33l-95 -116h-31z" />
<glyph unicode="&#x1ff;" d="M37 202v258q0 111 61.5 167t151.5 56q59 0 108 -25l33 84h30l-39 -99q81 -59 81 -182v-258q0 -112 -61 -167.5t-152 -55.5q-65 0 -116 27l-22 -56h-29l28 72q-74 56 -74 179zM195 238l102 264q-13 27 -47 27q-55 0 -55 -64v-227zM198 171q10 -38 52 -38q55 0 55 63v249z M233 708l93 116h33l-95 -116h-31z" />
<glyph unicode="&#x218;" horiz-adv-x="452" d="M28 214h142q-3 -89 51 -89q43 0 43 43q0 37 -40 66l-74 54q-68 50 -93.5 99.5t-25.5 113.5q0 81 60 131.5t140 50.5q86 0 141.5 -55t52.5 -180h-142q3 93 -49 93q-46 0 -46 -43q0 -36 40 -66l88 -66q65 -49 88.5 -94.5t23.5 -99.5q0 -87 -58 -139.5t-143 -52.5 q-90 0 -146 55t-53 179zM154 -169l50 102h29l-51 -102h-28z" />
<glyph unicode="&#x219;" horiz-adv-x="452" d="M28 214h142q-3 -89 51 -89q43 0 43 43q0 37 -40 66l-74 54q-68 50 -93.5 99.5t-25.5 113.5q0 81 60 131.5t140 50.5q86 0 141.5 -55t52.5 -180h-142q3 93 -49 93q-46 0 -46 -43q0 -36 40 -66l88 -66q65 -49 88.5 -94.5t23.5 -99.5q0 -87 -58 -139.5t-143 -52.5 q-90 0 -146 55t-53 179zM154 -169l50 102h29l-51 -102h-28z" />
<glyph unicode="&#x2c6;" horiz-adv-x="340" d="M34 706v26l136 52l136 -52v-26l-136 50z" />
<glyph unicode="&#x2c7;" horiz-adv-x="340" d="M34 759v26l136 -50l136 50v-26l-136 -52z" />
<glyph unicode="&#x2d8;" horiz-adv-x="380" d="M76 789h26q1 -28 24 -47.5t63 -19.5q41 0 63.5 19.5t24.5 47.5h26q0 -39 -30.5 -65.5t-83.5 -26.5t-83 26.5t-30 65.5z" />
<glyph unicode="&#x2d9;" horiz-adv-x="134" d="M51 715v36h32v-36h-32z" />
<glyph unicode="&#x2da;" horiz-adv-x="204" d="M3 804q0 47 29 71.5t70 24.5q40 0 69 -25t29 -71q0 -47 -29.5 -72.5t-68.5 -25.5q-41 0 -70 25.5t-29 72.5zM29 804q0 -35 21.5 -54.5t51.5 -19.5q29 0 50.5 19.5t21.5 54.5t-21.5 53.5t-50.5 18.5q-30 0 -51.5 -18.5t-21.5 -53.5z" />
<glyph unicode="&#x2db;" horiz-adv-x="192" d="M48 -93q0 33 25 55.5t81 40.5l38 -3q-61 -22 -89.5 -41t-28.5 -52q0 -51 97 -51h14v-25h-26q-111 0 -111 76z" />
<glyph unicode="&#x2dc;" horiz-adv-x="332" d="M24 703q-2 89 72 89q27 0 74 -32t70 -32q19 0 31 16t10 48h26q2 -50 -19.5 -69.5t-50.5 -19.5q-31 0 -78 32t-67 32q-42 0 -42 -64h-26z" />
<glyph unicode="&#x2dd;" horiz-adv-x="286" d="M41 708l67 137h29l-68 -137h-28zM150 708l67 137h29l-68 -137h-28z" />
<glyph unicode="&#x1e80;" horiz-adv-x="672" d="M5 663h155l52 -326h6l66 326h105l66 -326h6l52 326h154l-129 -663h-123l-76 291h-6l-76 -291h-123zM230 824h33l93 -116h-31z" />
<glyph unicode="&#x1e81;" horiz-adv-x="672" d="M5 663h155l52 -326h6l66 326h105l66 -326h6l52 326h154l-129 -663h-123l-76 291h-6l-76 -291h-123zM230 824h33l93 -116h-31z" />
<glyph unicode="&#x1e82;" horiz-adv-x="672" d="M5 663h155l52 -326h6l66 326h105l66 -326h6l52 326h154l-129 -663h-123l-76 291h-6l-76 -291h-123zM319 708l93 116h33l-95 -116h-31z" />
<glyph unicode="&#x1e83;" horiz-adv-x="672" d="M5 663h155l52 -326h6l66 326h105l66 -326h6l52 326h154l-129 -663h-123l-76 291h-6l-76 -291h-123zM319 708l93 116h33l-95 -116h-31z" />
<glyph unicode="&#x1e84;" horiz-adv-x="672" d="M5 663h155l52 -326h6l66 326h105l66 -326h6l52 326h154l-129 -663h-123l-76 291h-6l-76 -291h-123zM270 718v29h28v-29h-28zM374 718v29h28v-29h-28z" />
<glyph unicode="&#x1e85;" horiz-adv-x="672" d="M5 663h155l52 -326h6l66 326h105l66 -326h6l52 326h154l-129 -663h-123l-76 291h-6l-76 -291h-123zM270 718v29h28v-29h-28zM374 718v29h28v-29h-28z" />
<glyph unicode="&#x1ef2;" horiz-adv-x="482" d="M2 663h168l71 -222h6l71 222h162l-160 -411v-252h-160v252zM138 824h33l93 -116h-31z" />
<glyph unicode="&#x1ef3;" horiz-adv-x="482" d="M2 663h168l71 -222h6l71 222h162l-160 -411v-252h-160v252zM138 824h33l93 -116h-31z" />
<glyph unicode="&#x2000;" horiz-adv-x="503" />
<glyph unicode="&#x2001;" horiz-adv-x="1006" />
<glyph unicode="&#x2002;" horiz-adv-x="503" />
<glyph unicode="&#x2003;" horiz-adv-x="1006" />
<glyph unicode="&#x2004;" horiz-adv-x="335" />
<glyph unicode="&#x2005;" horiz-adv-x="251" />
<glyph unicode="&#x2006;" horiz-adv-x="167" />
<glyph unicode="&#x2007;" horiz-adv-x="167" />
<glyph unicode="&#x2008;" horiz-adv-x="125" />
<glyph unicode="&#x2009;" horiz-adv-x="201" />
<glyph unicode="&#x200a;" horiz-adv-x="55" />
<glyph unicode="&#x2010;" horiz-adv-x="280" d="M20 319v26h240v-26h-240z" />
<glyph unicode="&#x2011;" horiz-adv-x="280" d="M20 319v26h240v-26h-240z" />
<glyph unicode="&#x2013;" horiz-adv-x="411" d="M20 319v26h371v-26h-371z" />
<glyph unicode="&#x2014;" horiz-adv-x="541" d="M20 319v26h501v-26h-501z" />
<glyph unicode="&#x2018;" horiz-adv-x="86" d="M30 418v371h26v-371h-26z" />
<glyph unicode="&#x2019;" horiz-adv-x="86" d="M30 418v371h26v-371h-26z" />
<glyph unicode="&#x201a;" horiz-adv-x="76" d="M30 -75v321h26v-321h-26z" />
<glyph unicode="&#x201c;" horiz-adv-x="156" d="M30 418v371h26v-371h-26zM100 418v371h26v-371h-26z" />
<glyph unicode="&#x201d;" horiz-adv-x="156" d="M30 418v371h26v-371h-26zM100 418v371h26v-371h-26z" />
<glyph unicode="&#x201e;" horiz-adv-x="156" d="M30 -75v321h26v-321h-26zM100 -75v321h26v-321h-26z" />
<glyph unicode="&#x2020;" horiz-adv-x="225" d="M20 558v24h80v86h26v-86h79v-24h-79v-186h-26v186h-80z" />
<glyph unicode="&#x2021;" horiz-adv-x="225" d="M20 449v24h80v96h-80v24h80v75h26v-75h79v-24h-79v-96h79v-24h-79v-77h-26v77h-80z" />
<glyph unicode="&#x2022;" horiz-adv-x="394" d="M45 320q0 63 44.5 107.5t107.5 44.5t107.5 -44.5t44.5 -107.5t-44.5 -107.5t-107.5 -44.5t-107.5 44.5t-44.5 107.5z" />
<glyph unicode="&#x2026;" horiz-adv-x="270" d="M31 0v40h28v-40h-28zM121 0v40h28v-40h-28zM211 0v40h28v-40h-28z" />
<glyph unicode="&#x202f;" horiz-adv-x="201" />
<glyph unicode="&#x2030;" horiz-adv-x="809" d="M35 459v105q0 59 32 89t79 30t79 -30t32 -89v-105q0 -60 -31.5 -89.5t-79.5 -29.5t-79.5 29t-31.5 90zM64 0l386 663h33l-388 -663h-31zM125 462q0 -31 21 -31t21 31v98q0 32 -21 32t-21 -32v-98zM288 99v105q0 59 32 89t79 30t79 -30t32 -89v-105q0 -60 -31.5 -89.5 t-79.5 -29.5t-79.5 29t-31.5 90zM378 102q0 -31 21 -31t21 31v98q0 32 -21 32t-21 -32v-98zM552 99v105q0 59 32 89t79 30t79 -30t32 -89v-105q0 -60 -31.5 -89.5t-79.5 -29.5t-79.5 29t-31.5 90zM642 102q0 -31 21 -31t21 31v98q0 32 -21 32t-21 -32v-98z" />
<glyph unicode="&#x2039;" horiz-adv-x="190" d="M15 331l123 212h31l-124 -212l125 -214h-31z" />
<glyph unicode="&#x203a;" horiz-adv-x="190" d="M20 117l124 214l-123 212h31l123 -212l-124 -214h-31z" />
<glyph unicode="&#x205f;" horiz-adv-x="251" />
<glyph unicode="&#x20ac;" horiz-adv-x="496" d="M0 279v26h54v56h-54v26h54v77q0 109 58.5 164t145.5 55q89 0 147 -57.5t57 -168.5h-159q3 59 -45 59q-45 0 -45 -59v-70h179v-26h-179v-56h179v-26h-179v-76q0 -57 45 -57q48 0 45 57h159q2 -113 -56 -168t-148 -55q-89 0 -146.5 52.5t-57.5 164.5v82h-54z" />
<glyph unicode="&#x2122;" horiz-adv-x="604" d="M15 637v26h204v-26h-90v-307h-26v307h-88zM266 330v333h37l105 -296l106 296h36v-333h-26v286l-104 -286h-26l-102 282v-282h-26z" />
<glyph unicode="&#x2212;" horiz-adv-x="400" d="M27 319v24h346v-24h-346z" />
<glyph unicode="&#x2260;" horiz-adv-x="400" d="M29 245v26h126l55 122h-181v26h193l39 86h27l-39 -86h122v-26h-133l-55 -122h188v-26h-200l-39 -88h-28l39 88h-114z" />
<glyph unicode="&#x25ca;" horiz-adv-x="947" d="M20 228l544 544l363 -364l-544 -544zM26 228l357 -358l538 538l-357 358zM33 227l177 177l3 -3l-177 -177zM40 220l177 177l3 -3l-177 -177zM47 213l177 177l3 -3l-177 -177zM54 206l177 177l3 -3l-177 -177zM61 199l177 177l3 -3l-177 -177zM69 192l176 177l3 -3 l-176 -177zM76 185l176 177l3 -3l-176 -177zM83 178l176 177l3 -3l-176 -177zM90 171l176 177l3 -3l-176 -177zM97 163l177 177l3 -3l-177 -177zM104 156l177 177l3 -3l-177 -177zM111 149l177 177l3 -3l-177 -177zM118 142l177 177l3 -3l-177 -177zM125 135l177 177l3 -3 l-177 -177zM132 128l177 177l3 -3l-177 -177zM139 121l177 177l3 -3l-177 -177zM146 114l177 177l3 -3l-177 -177zM153 107l177 177l3 -3l-177 -177zM160 100l177 177l3 -3l-177 -177zM168 93l176 177l3 -3l-176 -177zM175 86l176 177l3 -3l-176 -177zM182 79l176 177l3 -3 l-176 -177zM189 72l176 177l3 -3l-176 -177zM196 65l177 176l3 -3l-177 -176zM203 57l177 177l3 -3l-177 -177zM210 50l177 177l3 -3l-177 -177zM217 43l177 177l3 -3l-177 -177zM224 36l177 177l3 -3l-177 -177zM231 29l177 177l3 -3l-177 -177zM238 22l177 177l3 -3 l-177 -177zM245 15l177 177l3 -3l-177 -177zM252 8l177 177l3 -3l-177 -177zM259 1l177 177l3 -3l-177 -177zM266 -6l177 177l3 -3l-177 -177zM274 -13l176 177l3 -3l-176 -177zM281 -20l176 177l3 -3l-176 -177zM288 -27l176 177l3 -3l-176 -177zM295 -34l177 176l3 -3 l-177 -176zM302 -42l177 177l3 -3l-177 -177zM309 -49l177 177l3 -3l-177 -177zM316 -56l177 177l3 -3l-177 -177zM323 -63l177 177l3 -3l-177 -177zM330 -70l177 177l3 -3l-177 -177zM337 -77l177 177l3 -3l-177 -177zM344 -84l177 177l3 -3l-177 -177zM351 -91l177 177 l3 -3l-177 -177zM358 -98l177 177l3 -3l-177 -177zM365 -105l177 177l3 -3l-177 -177zM373 -112l176 177l3 -3l-176 -177zM380 -119l176 177l3 -3l-176 -177zM391 586l3 3l351 -351l-3 -3zM398 593l3 3l351 -350l-3 -3zM405 600l3 3l351 -350l-3 -3zM412 608l3 3l351 -351 l-3 -3zM419 615l3 3l351 -351l-3 -3zM426 622l3 3l351 -351l-3 -3zM433 629l3 3l351 -351l-3 -3zM440 636l3 3l351 -351l-3 -3zM448 643l3 3l350 -351l-3 -3zM455 650l3 3l350 -351l-3 -3zM462 657l3 3l351 -351l-3 -3zM469 664l3 3l351 -351l-3 -3zM476 671l3 3l351 -351 l-3 -3zM483 678l3 3l351 -351l-3 -3zM490 685l3 3l351 -351l-3 -3zM497 692l3 3l351 -350l-3 -3zM504 699l3 3l351 -350l-3 -3zM511 707l3 3l351 -351l-3 -3zM518 714l3 3l351 -351l-3 -3zM525 721l3 3l351 -351l-3 -3zM532 728l3 3l351 -351l-3 -3zM539 735l3 3l351 -351 l-3 -3zM547 742l3 3l350 -351l-3 -3zM554 749l3 3l350 -351l-3 -3zM561 756l3 3l350 -351l-3 -3z" />
<glyph horiz-adv-x="290" d="M100 -169l50 102h29l-51 -102h-28z" />
<glyph horiz-adv-x="260" d="M50 0v663h160v-663h-160z" />
<glyph horiz-adv-x="260" d="M49 706v25h162v-25h-162zM50 0v663h160v-663h-160z" />
<glyph horiz-adv-x="290" />
</font>
</defs></svg>

After

Width:  |  Height:  |  Size: 72 KiB

Binary file not shown.

View file

@ -0,0 +1,23 @@
@charset "UTF-8";
/* @font-face declarations */
@font-face {
font-family: 'JeanLucWeb-Bold';
src: url('jeanlucweb-bold.eot');
src: local('☺'), url("jeanlucweb-bold.woff") format("woff"), url("jeanlucweb-bold.otf") format("opentype"), url("jeanlucweb-bold#webfontup15foyj") format("svg");
}
@font-face {
font-family: 'JeanLucWeb-Thin';
src: url('jeanlucweb-bold.eot');
src: local('☺'), url("jeanlucweb-thin.woff") format("woff"), url("jeanlucweb-thin.otf") format("opentype"), url("jeanlucweb-thin#webfontdsa4toug") format("svg");
}
/*
The Jean-Luc typeface was designed and made by Atelier Carvalho Bernau on the occasion of the 80th birthday of Jean-Luc Godard. It is available free of charge from http://www.carvalho-bernau.com/jlg/
Jean-Luc typeface Copyright (c) 2010 Atelier Carvalho Bernau
*/

Binary file not shown.

View file

@ -0,0 +1,245 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
<svg xmlns="http://www.w3.org/2000/svg">
<metadata></metadata>
<defs>
<font id="spun_goldregular" horiz-adv-x="493" >
<font-face units-per-em="2048" ascent="1522" descent="-526" />
<missing-glyph horiz-adv-x="500" />
<glyph />
<glyph />
<glyph horiz-adv-x="682" />
<glyph unicode="&#xd;" />
<glyph unicode=" " />
<glyph unicode="!" horiz-adv-x="520" d="M162 63q0 25 19 44.5t44 19.5q26 0 45 -19.5t19 -44.5q0 -26 -19 -44.5t-45 -18.5q-25 0 -44 18.5t-19 44.5zM162 1333q0 26 19 45t44 19q26 0 45 -19t19 -45l-25 -971q-2 -15 -13 -26.5t-26 -11.5q-16 0 -26.5 11t-12.5 27q-3 110 -9.5 307.5t-10.5 359t-4 304.5z" />
<glyph unicode="&#x22;" horiz-adv-x="706" d="M92 1034v299q0 26 19 45t45 19q25 0 44 -19t19 -45v-299q0 -26 -19 -44.5t-44 -18.5q-26 0 -45 18.5t-19 44.5zM344 1034v299q0 26 19.5 45t44.5 19q26 0 44.5 -19t18.5 -45v-299q0 -26 -18.5 -44.5t-44.5 -18.5q-25 0 -44.5 18.5t-19.5 44.5z" />
<glyph unicode="#" horiz-adv-x="1138" d="M80 434q0 25 13.5 41t39.5 20.5t46.5 5.5t51.5 -1t37 -2l29 401q-6 0 -36.5 -2t-49.5 -1t-43.5 6t-37.5 20.5t-13 40.5t14 41t39.5 20.5t46.5 5t52 -1.5t38 -2l25 311q2 25 19 42.5t40 17.5q26 0 45 -19t19 -45q0 -77 -23 -307h197l22 311q2 25 20 42.5t44 17.5 q24 0 43.5 -19t19.5 -45q0 -57 -10 -168.5t-12 -138.5q7 0 36.5 2t49 1.5t44 -5t37.5 -20.5t13 -41t-14 -41t-40.5 -20.5t-47 -5.5t-52 1t-37.5 2l-28 -401q6 0 36.5 2t49.5 1t43.5 -6t37.5 -20.5t13 -40.5t-14 -40.5t-39.5 -20t-46.5 -5t-51.5 2t-38.5 2.5l-25 -314 q-1 -25 -18.5 -41t-40.5 -16q-27 0 -45.5 17.5t-18.5 43.5q0 75 23 310h-197l-23 -314q-2 -25 -19.5 -41t-43.5 -16q-24 0 -42.5 17.5t-18.5 43.5q0 44 3.5 94t10 119t8.5 97q-8 0 -37.5 -2t-49 -1.5t-43.5 5t-37 19.5t-13 40zM395 498h195l31 401h-197z" />
<glyph unicode="$" horiz-adv-x="1130" d="M45 289q0 25 19 43t45 18q31 0 51 -26q67 -86 127.5 -131.5t152.5 -61.5v551q-67 17 -128 49t-111.5 77.5t-80.5 108t-30 132.5q0 134 104.5 229t245.5 115q0 8 -2.5 38t-2 51t5 46.5t19.5 39t40 13.5t41 -13.5t20.5 -39t5 -46t-1.5 -51.5t-2 -38q109 -15 206 -83.5 t140 -166.5q9 -23 9 -31q0 -24 -19.5 -42.5t-44.5 -18.5q-37 0 -57 34q-82 151 -234 179v-478q73 -17 141.5 -51.5t126 -84.5t92.5 -119t35 -146q0 -101 -58.5 -186t-147 -134.5t-189.5 -62.5q0 -8 2 -38t1.5 -50.5t-5 -45.5t-20.5 -38.5t-41 -13.5t-40 13.5t-19.5 38.5 t-5 45.5t2 50.5t2.5 38q-116 15 -218.5 82.5t-164.5 167.5q-12 18 -12 37zM217 1049q0 -83 66.5 -144t156.5 -92v451q-88 -17 -155.5 -75t-67.5 -140zM563 131q105 17 186.5 86t81.5 168q0 96 -82 169t-186 101v-524z" />
<glyph unicode="%" horiz-adv-x="1683" d="M98 1016q0 92 38.5 178t114 143.5t169.5 57.5q95 0 171 -58t114 -143.5t38 -177.5q0 -93 -38 -179t-114 -144t-171 -58q-94 0 -169.5 58t-114 144.5t-38.5 178.5zM221 1016q0 -58 23 -115t70 -98t106 -41t106 41t69.5 98t22.5 115q0 91 -55.5 172.5t-142.5 81.5 t-143 -81.5t-56 -172.5zM356 63q0 20 13 33l782 1270q22 29 53 29q25 0 43.5 -18t18.5 -44q0 -21 -9 -33l-784 -1269q-18 -29 -53 -29q-27 0 -45.5 17.5t-18.5 43.5zM881 381q0 93 38.5 179t114.5 144t170 58t170 -58t115 -144t39 -179q0 -92 -39 -178t-115 -143.5 t-170 -57.5q-71 0 -133 34t-103 88t-64 121.5t-23 135.5zM1006 381q0 -91 55.5 -172.5t142.5 -81.5t142 81.5t55 172.5q0 58 -22.5 115t-69 98t-105.5 41t-106 -41t-69.5 -98t-22.5 -115z" />
<glyph unicode="&#x26;" horiz-adv-x="1290" d="M113 362q0 41 8.5 78.5t20.5 66.5t34.5 59t42 51t52 47.5t55 42.5t60.5 43t60 43q-7 9 -31 40.5t-30.5 41.5t-24 36.5t-23.5 41.5t-15 40t-12 49t-3 52q0 116 73.5 208.5t186.5 92.5q77 0 138.5 -46t92.5 -115t31 -144q0 -60 -13.5 -105.5t-47 -86t-61 -64t-84.5 -66.5 l258 -338q4 15 8 51.5t8 62t20 47t44 21.5q25 0 44 -18.5t19 -44.5q0 -126 -55 -236q176 -206 176 -250q0 -26 -18.5 -43.5t-45.5 -17.5q-28 0 -49 25l-133 174q-79 -93 -191.5 -147.5t-232.5 -51.5q-152 5 -257 107t-105 253zM240 362q0 -98 70 -166.5t167 -68.5 q100 0 192 48t152 130l-299 389l-186 -139q-96 -74 -96 -193zM430 1087q0 -26 6 -49.5t21 -48t25.5 -39t34.5 -43t32 -39.5q7 5 30 21.5t30 22.5t25.5 21.5t25 24.5t18.5 25.5t16.5 31t8.5 34t4 41.5q0 64 -39.5 122t-100.5 58q-59 0 -98 -59t-39 -124z" />
<glyph unicode="'" horiz-adv-x="516" d="M158 1034v299q0 27 17.5 45.5t43.5 18.5t44 -19t18 -45v-299q0 -26 -18 -44.5t-44 -18.5t-43.5 18.5t-17.5 44.5z" />
<glyph unicode="(" horiz-adv-x="727" d="M102 698q0 235 82 467q39 104 103 215.5t131 178.5q19 22 47 22q25 0 44 -18.5t19 -44.5q0 -22 -14 -39q-144 -190 -215.5 -375t-71.5 -406t71.5 -405.5t215.5 -374.5q14 -18 14 -39q0 -26 -19 -44.5t-44 -18.5q-28 0 -47 22q-67 67 -131 178t-103 215q-82 232 -82 467z " />
<glyph unicode=")" horiz-adv-x="727" d="M203 -121q0 24 12 39q144 190 215.5 374.5t71.5 405.5t-71.5 406t-215.5 375q-12 15 -12 39q0 26 17.5 44.5t43.5 18.5q28 0 47 -22q66 -67 129.5 -179t102.5 -215q82 -232 82 -467t-82 -467q-39 -103 -102.5 -214t-129.5 -179q-19 -22 -47 -22q-26 0 -43.5 18.5 t-17.5 44.5z" />
<glyph unicode="*" horiz-adv-x="851" d="M53 1165q0 26 18.5 45t43.5 19q20 0 49 -8.5t72.5 -25.5t48.5 -19v157q0 26 18 45t43 19q26 0 45 -19t19 -45v-157q8 3 37.5 14.5t48 18.5t43 13.5t39.5 6.5q25 0 43 -19t18 -45q0 -20 -11 -36.5t-30 -22.5l-149 -49q4 -6 25 -31.5t36.5 -45t29 -44.5t13.5 -41 q0 -26 -19.5 -45t-44.5 -19q-29 0 -49 27l-94 127l-92 -127q-20 -27 -49 -27q-26 0 -45 19t-19 45q0 13 8 30.5t22.5 38t26 35.5t28.5 34.5t20 23.5l-150 49q-43 16 -43 59z" />
<glyph unicode="+" horiz-adv-x="811" d="M57 455q0 26 18.5 44.5t43.5 18.5h180v180q0 26 19 45t44 19q26 0 45 -19t19 -45v-180h180q25 0 43.5 -18.5t18.5 -44.5q0 -25 -18.5 -44.5t-43.5 -19.5h-180v-176q0 -27 -18.5 -45t-45.5 -18q-25 0 -44 18t-19 45v176h-180q-25 0 -43.5 19.5t-18.5 44.5z" />
<glyph unicode="," horiz-adv-x="628" d="M92 -121q0 12 29 56t65.5 95t44.5 64q20 33 56 33q25 0 44 -19.5t19 -44.5q0 -28 -54.5 -105t-92.5 -120q-19 -22 -47 -22q-26 0 -45 18.5t-19 44.5z" />
<glyph unicode="-" horiz-adv-x="892" d="M102 455q0 26 18.5 44.5t43.5 18.5h485q26 0 45 -18.5t19 -44.5q0 -25 -19 -44.5t-45 -19.5h-485q-25 0 -43.5 19.5t-18.5 44.5z" />
<glyph unicode="." horiz-adv-x="583" d="M182 63q0 25 19 44.5t45 19.5q25 0 44 -19.5t19 -44.5q0 -26 -19 -44.5t-44 -18.5q-26 0 -45 18.5t-19 44.5z" />
<glyph unicode="/" horiz-adv-x="968" d="M168 63q0 25 190.5 523t296.5 770q18 41 60 41q26 0 44.5 -19t18.5 -45q0 -16 -110 -306t-240.5 -628t-138.5 -358q-6 -17 -22.5 -29t-35.5 -12q-26 0 -44.5 18.5t-18.5 44.5z" />
<glyph unicode="0" horiz-adv-x="1165" d="M127 698q0 83 15.5 174t51.5 185.5t87 169.5t130 122.5t173 47.5q93 0 171 -47.5t129 -122.5t87 -169.5t51.5 -185.5t15.5 -174t-15.5 -174t-51.5 -185.5t-87 -169t-129 -122t-171 -47.5q-94 0 -173 47.5t-130 122t-87 169t-51.5 185.5t-15.5 174zM252 698 q0 -60 10.5 -131t36.5 -150t62.5 -143t94.5 -105.5t128 -41.5q69 0 126.5 41.5t94 105.5t62 143t36 150t10.5 131t-10.5 131t-36 150.5t-62 143t-94 105.5t-126.5 42q-70 0 -128 -42t-94.5 -105.5t-62.5 -143t-36.5 -150.5t-10.5 -131z" />
<glyph unicode="1" horiz-adv-x="1097" d="M303 1149q0 26 17.5 40.5t40 19t50.5 13.5t42 23q15 16 23.5 44.5t12.5 51.5t19 40t43 16q27 -2 45 -20t18 -44v-1270q0 -26 -18.5 -44.5t-44.5 -18.5t-44 18.5t-18 44.5v1055q-64 -33 -124 -33q-25 0 -43.5 18.5t-18.5 45.5z" />
<glyph unicode="2" horiz-adv-x="1167" d="M141 63q0 81 31.5 162t87.5 137l555 558q53 50 53 129q0 66 -46.5 118t-111 77.5t-128.5 25.5q-193 0 -293 -176q-21 -35 -56 -35q-26 0 -43.5 18.5t-17.5 44.5q0 17 6 29q53 112 166 179t238 67q100 0 193.5 -42t155.5 -123.5t62 -182.5q0 -131 -90 -218l-553 -557 q-58 -58 -78 -147h689q24 0 42.5 -19.5t18.5 -44.5q0 -26 -18 -44.5t-43 -18.5h-756q-25 0 -44.5 18.5t-19.5 44.5z" />
<glyph unicode="3" horiz-adv-x="1165" d="M127 289q0 25 18 43t43 18q19 0 43 -23t53 -56t67 -66.5t98.5 -56.5t134.5 -23q55 0 112 18t106 50t80 82.5t31 109.5q0 49 -22 93t-56.5 75t-80 56t-90 39.5t-89.5 23.5q-24 3 -39.5 20t-15.5 41q0 18 15 37q11 18 40 25q51 12 98 31.5t94 49.5t75 75t28 98 q0 66 -46.5 118t-111 77.5t-128.5 25.5q-186 0 -293 -176q-18 -35 -58 -35q-25 0 -43 18t-18 45q0 15 6 27q53 112 167 180t239 68q99 0 192 -42t155 -123.5t62 -182.5q0 -189 -211 -312q113 -58 184.5 -147.5t71.5 -204.5q0 -85 -41 -159t-106.5 -122.5t-145.5 -76 t-161 -27.5q-135 0 -255.5 68t-191.5 184q-10 20 -10 37z" />
<glyph unicode="4" horiz-adv-x="1243" d="M131 434q0 18 10 35l598 899q22 29 52 29q27 0 45 -18.5t18 -45.5v-835q6 0 37 2t51.5 1t46.5 -5.5t39.5 -20.5t13.5 -41t-14 -40.5t-39 -20t-46.5 -5t-51 2t-37.5 2.5v-310q0 -27 -18 -45t-45 -18q-25 0 -42.5 18.5t-17.5 44.5v310h-538q-26 0 -44 17.5t-18 43.5z M309 498h422v628z" />
<glyph unicode="5" horiz-adv-x="1165" d="M117 389q0 26 20 45t45 19q27 0 43.5 -18.5t18.5 -45.5q5 -80 55 -141.5t121.5 -91t150.5 -29.5q136 0 243.5 86.5t107.5 218.5q0 87 -52 158.5t-132 109t-167 37.5q-53 0 -99.5 -13.5t-77 -32t-55 -37.5t-44 -32.5t-33.5 -13.5q-26 0 -44.5 19t-18.5 45v8l43 655 q2 26 19.5 43t43.5 17h623q26 0 44.5 -18t18.5 -44t-18.5 -44.5t-44.5 -18.5h-566l-30 -467q112 59 239 59q121 0 230.5 -54t178.5 -154t69 -222q0 -92 -40.5 -173.5t-107.5 -137t-153.5 -87.5t-176.5 -32q-111 0 -213.5 46t-171.5 136.5t-69 204.5z" />
<glyph unicode="6" horiz-adv-x="1165" d="M109 432q0 135 33 271.5t100.5 261t159.5 221t220 154t273 57.5q25 0 44 -19t19 -45q0 -25 -19 -44t-44 -19q-107 0 -205.5 -41t-174 -111.5t-133 -159.5t-91.5 -190q129 94 293 94q121 0 229 -54t176 -154t68 -222q0 -123 -68 -223.5t-176.5 -154.5t-230.5 -54 q-121 0 -229 54t-176 154.5t-68 223.5zM233 432q0 -132 106.5 -218.5t242.5 -86.5q86 0 165 37t131 108.5t52 159.5q0 131 -105.5 218t-240.5 87q-87 0 -167 -37.5t-132 -109t-52 -158.5z" />
<glyph unicode="7" horiz-adv-x="1165" d="M127 1333q0 27 17.5 45.5t43.5 18.5h787q25 0 44 -19t19 -45q0 -18 -18 -43q-235 -285 -352 -580t-117 -647q0 -27 -18.5 -45t-45.5 -18q-25 0 -43 18.5t-18 44.5q0 327 106.5 638t307.5 569h-652q-26 0 -43.5 19t-17.5 44z" />
<glyph unicode="8" horiz-adv-x="1165" d="M127 385q0 114 72.5 206.5t185.5 145.5q-215 117 -215 312q0 101 63 182.5t156.5 123.5t192.5 42t192.5 -42t156 -123.5t62.5 -182.5q0 -193 -215 -312q113 -53 186.5 -145.5t73.5 -206.5q0 -113 -70 -203t-173.5 -136t-214.5 -46q-81 0 -161 27.5t-145.5 76t-106 122.5 t-40.5 159zM252 385q0 -78 53 -139.5t127 -91t148 -29.5q75 0 149.5 29.5t128 91t53.5 139.5q0 87 -65 152q-46 46 -126.5 89.5t-137.5 43.5t-138 -43.5t-127 -89.5q-65 -65 -65 -152zM297 1049q0 -66 47.5 -122.5t110.5 -87.5t127 -42q64 11 126.5 42t110 87.5t47.5 122.5 q0 97 -91 159t-193 62q-64 0 -128 -25.5t-110.5 -77.5t-46.5 -118z" />
<glyph unicode="9" horiz-adv-x="1165" d="M109 965q0 123 68.5 223.5t177 154.5t229.5 54t229 -54t176 -154.5t68 -223.5q0 -135 -33 -271.5t-100.5 -261t-160 -221t-220.5 -154t-273 -57.5q-25 0 -44 18.5t-19 44.5q0 25 19 44.5t44 19.5q107 0 205.5 41t174 111.5t133 159.5t91.5 190q-129 -94 -292 -94 q-121 0 -229 54t-176 154t-68 222zM233 965q0 -131 107 -218.5t242 -87.5q86 0 165 37.5t131 109.5t52 159q0 88 -51 159.5t-129.5 108.5t-165.5 37q-136 0 -243.5 -86.5t-107.5 -218.5z" />
<glyph unicode=":" horiz-adv-x="468" d="M125 63q0 25 18.5 44.5t42.5 19.5q26 0 45 -19.5t19 -44.5q0 -27 -18.5 -45t-45.5 -18q-25 0 -43 18t-18 45zM125 848q0 25 18 43t43 18q26 0 45 -18t19 -43q0 -26 -19 -45t-45 -19q-25 0 -43 19t-18 45z" />
<glyph unicode=";" horiz-adv-x="575" d="M117 -121q0 12 29 56t65.5 95t44.5 64q20 33 55 33q25 0 44.5 -19.5t19.5 -44.5q0 -28 -55.5 -108t-90.5 -117q-19 -22 -49 -22q-25 0 -44 18.5t-19 44.5zM248 848q0 26 18.5 43.5t44.5 17.5q25 0 44.5 -17.5t19.5 -43.5t-19.5 -44t-44.5 -18q-26 0 -44.5 18t-18.5 44z " />
<glyph unicode="&#x3c;" horiz-adv-x="1155" d="M102 455q0 21 10.5 38t28.5 23q25 8 228 80.5t383.5 135.5t195.5 63q26 0 45 -17.5t19 -42.5q0 -21 -12 -38t-31 -23l-617 -219l617 -217q19 -8 31 -24t12 -36q0 -26 -19 -44.5t-45 -18.5q-21 0 -355.5 119t-451.5 163q-18 6 -28.5 22t-10.5 36z" />
<glyph unicode="=" horiz-adv-x="833" d="M63 330q0 25 19 42t45 17h483q26 0 45 -17t19 -42q0 -27 -18.5 -45.5t-45.5 -18.5h-483q-27 0 -45.5 18.5t-18.5 45.5zM63 584q0 25 19 44t45 19h483q27 0 45.5 -19t18.5 -44q0 -27 -18.5 -45.5t-45.5 -18.5h-483q-26 0 -45 19t-19 45z" />
<glyph unicode="&#x3e;" horiz-adv-x="1116" d="M90 178q0 44 41 60l617 217l-617 219q-19 6 -30 22.5t-11 38.5q0 25 18 42.5t44 17.5q15 0 195 -63t383 -135.5t228 -80.5q18 -6 29.5 -23t11.5 -38q0 -19 -11.5 -35.5t-29.5 -22.5q-118 -45 -451.5 -163.5t-354.5 -118.5q-26 0 -44 18.5t-18 44.5z" />
<glyph unicode="?" horiz-adv-x="1161" d="M70 1108q0 19 12 37q71 115 190 183.5t252 68.5q82 0 163 -28t146.5 -76.5t106.5 -122.5t41 -158q0 -113 -67 -201.5t-175 -120.5q-66 -20 -108.5 -76.5t-42.5 -126.5v-125q0 -25 -18.5 -44t-45.5 -19q-25 0 -40 13.5t-19.5 38.5t-5 46t1.5 51.5t2 38.5q0 112 67 201 t175 121q66 20 108.5 76.5t42.5 126.5q0 77 -53.5 138t-128.5 90.5t-150 29.5q-72 0 -132.5 -23.5t-97.5 -56.5t-66 -66t-52.5 -56.5t-42.5 -23.5q-26 0 -44.5 19.5t-18.5 44.5zM463 63q0 25 18.5 44.5t42.5 19.5q27 0 45.5 -19.5t18.5 -44.5q0 -27 -18 -45t-46 -18 q-25 0 -43 18.5t-18 44.5z" />
<glyph unicode="@" horiz-adv-x="1458" d="M80 455q0 121 45.5 232.5t123.5 193t187.5 130t231.5 48.5t231.5 -48.5t187.5 -130t124 -193t46 -232.5q0 -54 -8 -102t-28 -97t-61 -77.5t-99 -28.5q-72 0 -134 40t-93 107q-112 -147 -279 -147q-103 0 -176.5 73t-73.5 174q0 150 106.5 256.5t256.5 106.5h209 q33 0 49 -27t17 -69.5t-3 -94.5t-4.5 -104t7.5 -94.5t37 -69.5t79 -27q71 0 71 181q0 128 -60.5 238.5t-167.5 176.5t-234 66q-128 0 -235.5 -66t-168.5 -176.5t-61 -238.5q0 -127 61 -237t168.5 -176.5t235.5 -66.5q51 0 124.5 22.5t84.5 22.5q25 0 43 -18.5t18 -44.5 q0 -30 -32 -53t-79 -34t-88 -16.5t-71 -5.5q-162 0 -298 83.5t-213 223t-77 300.5zM430 399q0 -56 38 -90.5t93 -34.5q63 0 113.5 36t79.5 91.5t44 116t15 117.5h-145q-97 0 -167.5 -69t-70.5 -167z" />
<glyph unicode="A" horiz-adv-x="1452" d="M168 63q0 10 45.5 134t115 307t135.5 355t125 325.5t66 171.5q6 17 23.5 29t36.5 12q20 0 35.5 -11.5t21.5 -29.5q74 -185 282 -728t208 -565q0 -26 -18 -44.5t-44 -18.5q-20 0 -35.5 11.5t-21.5 29.5l-172 446h-510l-172 -446q-6 -18 -22.5 -29.5t-37.5 -11.5 q-25 0 -43 18.5t-18 44.5zM508 610h416l-209 547z" />
<glyph unicode="B" horiz-adv-x="1257" d="M127 63v1270q0 26 17 45t42 19h451q150 0 256 -106.5t106 -256.5q0 -88 -40 -167t-111 -130q88 -54 138 -144.5t50 -193.5q0 -165 -117 -282t-282 -117h-451q-25 0 -42 18.5t-17 44.5zM250 127h387q114 0 193 79t79 193q0 111 -79.5 192t-192.5 81h-387v-545zM250 795 h387q98 0 167.5 70.5t69.5 168.5q0 99 -70 167.5t-169 68.5h-385v-475z" />
<glyph unicode="C" horiz-adv-x="1296" d="M45 696q0 98 26 197.5t77.5 189.5t121 160t163.5 111t198 41q138 0 261.5 -75t184.5 -198q8 -20 8 -26q0 -28 -18.5 -46t-44.5 -18q-35 0 -55 33q-63 100 -143.5 151.5t-192.5 51.5q-84 0 -158.5 -35t-128.5 -93t-93.5 -132t-59 -154.5t-19.5 -157.5q0 -97 32 -196.5 t88.5 -183t145.5 -136.5t193 -53q113 0 194 51.5t142 151.5q22 32 55 32q27 0 45 -18t18 -45q0 -7 -8 -27q-61 -123 -184.5 -197.5t-261.5 -74.5q-130 0 -242.5 63t-186 163.5t-115.5 223.5t-42 246z" />
<glyph unicode="D" horiz-adv-x="1288" d="M113 63v1268q0 27 17.5 45.5t43.5 18.5h315q105 0 199 -41t163.5 -111t120.5 -160t77 -189.5t26 -197.5q0 -99 -26 -198.5t-77 -188.5t-120 -158.5t-162.5 -110t-197.5 -40.5h-318q-26 0 -43.5 17.5t-17.5 45.5zM238 125h254q83 0 157 35t127.5 93t93 132t59 154 t19.5 157t-19.5 157.5t-59 154.5t-93.5 132t-128.5 93t-158.5 35h-251v-1143z" />
<glyph unicode="E" horiz-adv-x="1169" d="M117 63v1270q0 26 19 45t44 19h787q26 0 43.5 -18.5t17.5 -45.5q0 -25 -17.5 -44t-43.5 -19h-723v-475h536q26 0 45 -17.5t19 -42.5q0 -27 -18.5 -45t-45.5 -18h-536v-545h723q26 0 43.5 -19.5t17.5 -44.5q0 -26 -17.5 -44.5t-43.5 -18.5h-787q-25 0 -44 18.5t-19 44.5z " />
<glyph unicode="F" horiz-adv-x="1095" d="M80 63v1270q0 26 18 45t43 19h785q26 0 44.5 -19t18.5 -45q0 -25 -18.5 -44t-44.5 -19h-721v-475h536q25 0 44.5 -18t19.5 -42q0 -27 -19 -45t-45 -18h-536v-609q0 -26 -19 -44.5t-45 -18.5q-25 0 -43 18.5t-18 44.5z" />
<glyph unicode="G" horiz-adv-x="1368" d="M84 698q0 124 42 247.5t115.5 224.5t186 164t242.5 63q138 0 261.5 -75t184.5 -198q8 -20 8 -28q0 -26 -18.5 -45t-44.5 -19q-35 0 -55 33q-63 101 -143.5 153t-192.5 52q-84 0 -158.5 -35t-129 -93.5t-94 -132.5t-59.5 -154t-20 -157t20 -157.5t59.5 -154.5t94 -132 t129 -92.5t158.5 -34.5q157 0 268 110t111 267v168h-287q-26 0 -45 18.5t-19 44.5q0 25 19 43.5t45 18.5h348q26 0 45 -18.5t19 -43.5v-231q0 -137 -68 -253t-184 -183.5t-252 -67.5q-130 0 -242.5 63t-186 164t-115.5 224.5t-42 246.5z" />
<glyph unicode="H" horiz-adv-x="1280" d="M133 63v1270q0 26 19 45t45 19q25 0 44 -19t19 -45v-538h658v538q0 26 18.5 45t44.5 19q25 0 43 -19t18 -45v-1270q0 -26 -18 -44.5t-43 -18.5q-26 0 -44.5 18.5t-18.5 44.5v609h-658v-609q0 -26 -19 -44.5t-44 -18.5q-26 0 -45 18.5t-19 44.5z" />
<glyph unicode="I" d="M133 63v1270q0 26 18 45t44 19t43.5 -18.5t17.5 -45.5v-1270q0 -26 -17.5 -44.5t-43.5 -18.5t-44 18.5t-18 44.5z" />
<glyph unicode="J" horiz-adv-x="1177" d="M39 166q0 26 18.5 44.5t44.5 18.5q10 0 38.5 -16t62.5 -35t88.5 -35t109.5 -16q173 0 297.5 123.5t124.5 296.5v786q0 26 18.5 45t43.5 19q26 0 44.5 -19t18.5 -45v-786q0 -148 -73.5 -274t-199.5 -199.5t-274 -73.5q-34 0 -92.5 12t-119.5 32.5t-105.5 53t-44.5 68.5z " />
<glyph unicode="K" horiz-adv-x="1120" d="M96 63v1270q0 26 19.5 45t44.5 19q26 0 44.5 -19t18.5 -45v-633l678 676q18 21 43 21q27 0 45.5 -18.5t18.5 -45.5q0 -22 -19 -45l-450 -450l458 -742q11 -14 11 -33q0 -27 -18 -45t-46 -18q-30 0 -51 31l-444 717l-226 -226v-459q0 -26 -18.5 -44.5t-44.5 -18.5 q-25 0 -44.5 18.5t-19.5 44.5z" />
<glyph unicode="L" horiz-adv-x="1124" d="M80 63v1270q0 26 18 45t43 19q26 0 45 -19t19 -45v-1206h721q26 0 44.5 -19.5t18.5 -44.5q0 -26 -18.5 -44.5t-44.5 -18.5h-785q-25 0 -43 18.5t-18 44.5z" />
<glyph unicode="M" horiz-adv-x="1605" d="M133 63v1270q0 26 19 45t45 19q27 0 51 -27l502 -713l505 713q20 27 52 27q26 0 44.5 -19t18.5 -45v-1270q0 -26 -18.5 -44.5t-44.5 -18.5q-25 0 -44.5 18.5t-19.5 44.5v1072l-440 -623q-19 -25 -53 -25q-31 0 -50 25l-440 623v-1072q0 -26 -19 -44.5t-44 -18.5 q-26 0 -45 18.5t-19 44.5z" />
<glyph unicode="N" horiz-adv-x="1394" d="M133 63v1270q0 27 18.5 45.5t45.5 18.5q29 0 49 -27l786 -1108v1071q0 26 19 45t45 19q25 0 43 -19t18 -45v-1270q0 -26 -18 -44.5t-43 -18.5q-34 0 -54 27l-786 1108v-1072q0 -26 -17 -44.5t-42 -18.5q-27 0 -45.5 18t-18.5 45z" />
<glyph unicode="O" horiz-adv-x="1464" d="M84 696q0 81 18.5 164.5t53 161.5t86.5 146t115 118.5t143.5 79.5t167.5 29q105 0 199 -41t163 -111t120 -160t77 -189.5t26 -197.5q0 -99 -26 -198.5t-77 -188.5t-120 -158.5t-163 -110t-199 -40.5q-104 0 -198 41t-163 111t-120 159t-77 188.5t-26 196.5zM209 696 q0 -77 20 -156.5t59.5 -153.5t93.5 -132t128.5 -92.5t157.5 -34.5t157.5 34.5t128 92.5t93.5 132t59.5 153.5t19.5 156.5t-19.5 157.5t-59.5 154.5t-93.5 132t-128 93t-157.5 35t-157.5 -35t-128.5 -93t-93.5 -132t-59.5 -154.5t-20 -157.5z" />
<glyph unicode="P" horiz-adv-x="1271" d="M172 63v1270q0 26 17 45t42 19h451q164 0 281.5 -118t117.5 -282q0 -78 -30.5 -151.5t-85.5 -128.5q-56 -56 -130 -86.5t-153 -30.5h-387v-537q0 -27 -18.5 -45t-45.5 -18q-25 0 -42 18.5t-17 44.5zM295 725h387q114 0 193 79.5t79 192.5q0 114 -79 193.5t-193 79.5h-387 v-545z" />
<glyph unicode="Q" horiz-adv-x="1472" d="M86 696q0 98 26 197.5t77 189.5t120.5 160t163.5 111t199 41q104 0 197.5 -41t162.5 -111t120 -160t77 -189.5t26 -197.5q0 -137 -47.5 -267t-136.5 -234q2 -3 54 -51.5t83 -86t31 -59.5q0 -26 -18.5 -45t-44.5 -19q-13 0 -34 13.5t-46 37.5t-44 43.5t-42.5 46 t-28.5 31.5q-133 -106 -309 -106q-130 0 -242.5 62.5t-186 162.5t-115.5 223.5t-42 247.5zM211 696q0 -77 20 -156.5t59.5 -153.5t94 -132t129 -92.5t158.5 -34.5q125 0 219 70q-1 1 -20 17.5t-29.5 26t-30 28.5t-32 32.5t-26 30t-20 30t-6.5 23.5q0 26 19 45t45 19 q16 0 45.5 -22t53 -46.5t54.5 -58t37 -39.5q147 179 147 413q0 77 -19.5 157.5t-59 154.5t-93 132t-127.5 93t-157 35q-84 0 -158.5 -35t-129 -93t-94 -132t-59.5 -154.5t-20 -157.5z" />
<glyph unicode="R" horiz-adv-x="1263" d="M135 63v1270q0 27 18.5 45.5t45.5 18.5h448q165 0 281 -117.5t116 -282.5q0 -135 -83 -243t-213 -142q6 -10 43.5 -76t76.5 -136t81 -145.5t68.5 -128.5t26.5 -63q0 -26 -18 -44.5t-43 -18.5q-34 0 -55 35l-318 565h-348v-537q0 -26 -19 -44.5t-44 -18.5q-27 0 -45.5 18 t-18.5 45zM262 725h385q113 0 193 80t80 192q0 114 -80 193.5t-193 79.5h-385v-545z" />
<glyph unicode="S" horiz-adv-x="1245" d="M109 289q0 25 17.5 43t43.5 18q17 0 37 -16.5t39.5 -41.5t50 -54.5t64.5 -54.5t87 -41.5t115 -16.5q55 0 112.5 18t106.5 50t80 82.5t31 109.5q0 58 -32.5 110.5t-83.5 87.5t-108 58t-112 31q-93 12 -174 55q-231 126 -231 322q0 101 62.5 182.5t156 123.5t192.5 42 q129 0 242.5 -69.5t165.5 -184.5q8 -20 8 -31q0 -25 -18.5 -43t-45.5 -18q-36 0 -57 34q-108 185 -295 185q-102 0 -193 -62t-91 -159q0 -67 49 -124.5t114 -88.5t131 -41q80 -12 157.5 -45.5t143 -84t106 -124t40.5 -156.5q0 -113 -69.5 -203t-173 -136t-214.5 -46 q-101 0 -195.5 39t-162.5 111q-1 2 -11.5 12.5t-15 16t-15 17.5t-16.5 19.5t-14.5 19t-12.5 20t-7.5 18t-3.5 16.5z" />
<glyph unicode="T" horiz-adv-x="1411" d="M125 1333q0 26 19 45t44 19h969q26 0 45 -19t19 -45q0 -25 -19 -44t-45 -19h-420v-1207q0 -26 -19 -44.5t-44 -18.5q-26 0 -45 18.5t-19 44.5v1207h-422q-25 0 -44 19t-19 44z" />
<glyph unicode="U" horiz-adv-x="1355" d="M117 504v829q0 26 19 45t44 19q26 0 45 -19t19 -45v-829q0 -157 110.5 -267t268.5 -110q157 0 269 110.5t112 266.5v829q0 26 17 45t42 19q27 0 45 -18.5t18 -45.5v-829q0 -209 -147 -356.5t-356 -147.5q-137 0 -253.5 67.5t-184.5 183.5t-68 253z" />
<glyph unicode="V" horiz-adv-x="1390" d="M172 1333q0 26 19 45t45 19q20 0 35.5 -12t21.5 -31l393 -1102l389 1102q6 18 23.5 30.5t36.5 12.5q25 0 43 -19t18 -45q0 -21 -178 -522t-275 -768q-6 -19 -22 -31t-35 -12q-20 0 -37.5 12t-23.5 31q-9 25 -128.5 359t-222 625t-102.5 306z" />
<glyph unicode="W" horiz-adv-x="1722" d="M190 1333q0 26 18 45t44 19q22 0 39.5 -13.5t21.5 -35.5l240 -1012l238 1012q6 22 22.5 35.5t38.5 13.5q20 0 37.5 -13.5t23.5 -35.5l238 -1012l240 1012q5 22 21.5 35.5t39.5 13.5q25 0 43 -19t18 -45q0 -20 -68 -309t-147 -616.5t-86 -358.5q-4 -22 -21.5 -35.5 t-39.5 -13.5t-38 13.5t-21 35.5l-240 1010l-240 -1010q-4 -21 -21 -35t-38 -14q-23 0 -40.5 13.5t-20.5 35.5q-3 14 -41.5 172t-78.5 323.5t-83.5 348t-71 305t-27.5 135.5z" />
<glyph unicode="X" horiz-adv-x="1300" d="M186 63q0 18 9 33l372 602l-372 602q-9 15 -9 33q0 26 19 45t45 19q30 0 51 -31l340 -549l338 549q21 31 55 31q25 0 43.5 -19t18.5 -45q0 -11 -9 -33l-372 -602l372 -602q9 -22 9 -33q0 -26 -18.5 -44.5t-43.5 -18.5q-34 0 -55 31l-338 549l-340 -549q-21 -31 -51 -31 q-26 0 -45 18.5t-19 44.5z" />
<glyph unicode="Y" horiz-adv-x="1273" d="M178 1333q0 26 17.5 45t42.5 19q41 0 57 -37l338 -670l336 670q16 37 55 37q26 0 44.5 -19t18.5 -45q0 -12 -36 -89.5t-91 -187t-108 -214t-101.5 -197.5t-56.5 -110v-472q0 -26 -18 -44.5t-43 -18.5q-27 0 -45.5 18t-18.5 45v472q-8 15 -56.5 109.5t-101 198t-107.5 214 t-90.5 187.5t-35.5 89z" />
<glyph unicode="Z" horiz-adv-x="1116" d="M29 63q0 21 10 33l725 1174h-672q-25 0 -44 19t-19 44q0 26 19 45t44 19h785q25 0 44 -19t19 -45q0 -21 -10 -33l-725 -1173h672q25 0 44 -19.5t19 -44.5q0 -26 -19 -44.5t-44 -18.5h-785q-25 0 -44 18.5t-19 44.5z" />
<glyph unicode="[" horiz-adv-x="757" d="M272 -121v1639q0 26 19 44.5t45 18.5h147q27 0 45.5 -18.5t18.5 -44.5q0 -23 -9.5 -37t-30 -19.5t-33.5 -7t-42 0t-33 1.5v-1515q4 0 33 1.5t42 0t33.5 -7t30 -19.5t9.5 -37q0 -27 -18.5 -45t-45.5 -18h-147q-26 0 -45 18.5t-19 44.5z" />
<glyph unicode="\" horiz-adv-x="968" d="M168 1333q0 26 18.5 45t44.5 19q19 0 35.5 -12t22.5 -29q7 -19 138.5 -357.5t241 -628.5t109.5 -307q0 -26 -18.5 -44.5t-44.5 -18.5q-19 0 -35.5 12t-24.5 29q-6 16 -137.5 357t-240.5 630t-109 305z" />
<glyph unicode="]" horiz-adv-x="757" d="M225 -121q0 17 5.5 29t16 18.5t22 10.5t27.5 5t27.5 1t28 -1t23.5 -1v1515q-7 0 -23.5 -1t-28 -1t-27.5 1t-27.5 5t-22 10.5t-16 18.5t-5.5 29q0 26 18.5 44.5t43.5 18.5h151q26 0 45 -18.5t19 -44.5v-1639q0 -26 -19 -44.5t-45 -18.5h-151q-25 0 -43.5 18.5t-18.5 44.5z " />
<glyph unicode="^" horiz-adv-x="788" d="M72 1034q0 17 16 41q101 130 176 277q17 39 55 39q40 0 60 -39q72 -147 176 -277q14 -21 14 -41q0 -26 -18 -44.5t-43 -18.5q-12 0 -27 9t-31 26t-30 34.5t-31 42.5t-26.5 40t-23.5 38t-17 27l-3 2v-2q-128 -217 -184 -217q-25 0 -44 18.5t-19 44.5z" />
<glyph unicode="_" horiz-adv-x="999" d="M156 63q0 25 17.5 44.5t43.5 19.5h488q24 0 41.5 -19.5t17.5 -44.5q0 -26 -17 -44.5t-42 -18.5h-488q-26 0 -43.5 18.5t-17.5 44.5z" />
<glyph unicode="`" horiz-adv-x="559" d="M131 1239q0 27 18.5 45.5t45.5 18.5q33 0 53 -33q6 -10 44.5 -63.5t66.5 -96.5t28 -55q0 -26 -18.5 -45t-44.5 -19q-25 0 -48 23q-42 50 -93.5 123.5t-51.5 101.5z" />
<glyph unicode="a" horiz-adv-x="929" d="M94 248q0 150 106.5 256t254.5 106h147v52q0 51 -36.5 87.5t-86.5 36.5q-53 0 -102.5 -18t-82.5 -36.5t-44 -18.5q-27 0 -45.5 17.5t-18.5 43.5q0 32 35 59t84.5 42.5t96 24.5t75.5 9q103 0 175.5 -71.5t72.5 -175.5v-599q0 -26 -17.5 -44.5t-43.5 -18.5q-15 0 -26 3.5 t-17.5 12.5t-11 15.5t-6 22t-2 21.5t0 24.5t0.5 21.5q-111 -121 -260 -121q-102 0 -175 73t-73 175zM219 250q0 -55 37.5 -89t95.5 -34q67 0 126 49t91.5 118.5t32.5 135.5v57h-147q-96 0 -166 -69.5t-70 -167.5z" />
<glyph unicode="b" horiz-adv-x="983" d="M174 63v1270q0 26 19 44t45 18q25 0 43 -18t18 -44v-475q77 51 178 51q114 0 204 -69t135.5 -171.5t45.5 -213.5q0 -109 -45.5 -211.5t-135.5 -172t-204 -69.5q-95 0 -180 51q-3 -23 -20 -37t-39 -14q-27 0 -45.5 17.5t-18.5 43.5zM299 252q0 -52 61.5 -88.5t116.5 -36.5 q78 0 139.5 53t91 126.5t29.5 148.5q0 44 -11 90t-33 89t-52.5 77t-73 54.5t-90.5 20.5q-56 0 -117 -37t-61 -90v-407z" />
<glyph unicode="c" horiz-adv-x="999" d="M117 455q0 110 46.5 213t136.5 172t202 69q94 0 177 -49t124 -131q6 -12 6 -29q0 -25 -19 -44t-45 -19q-21 0 -43.5 23.5t-42.5 51t-61.5 51t-95.5 23.5q-77 0 -138 -53.5t-90.5 -128t-29.5 -149.5q0 -74 29.5 -148t90.5 -127t138 -53q44 0 79 15t56.5 37t38.5 43.5 t34 36.5t35 15q26 0 45 -18.5t19 -44.5q0 -9 -8 -29q-39 -82 -122 -131t-177 -49q-111 0 -201.5 69.5t-137 172t-46.5 211.5z" />
<glyph unicode="d" horiz-adv-x="999" d="M74 455q0 111 46 213.5t136 171.5t203 69q101 0 178 -51v475q0 26 18.5 44t44.5 18q25 0 44.5 -18t19.5 -44v-1270q0 -26 -19.5 -43.5t-44.5 -17.5q-22 0 -40.5 14t-22.5 37q-79 -51 -178 -51q-85 0 -159 40.5t-122.5 106t-76 145.5t-27.5 161zM201 455q0 -55 17.5 -112 t49.5 -105.5t82 -79.5t109 -31q55 0 116.5 36.5t61.5 88.5v407q0 53 -61 90t-117 37q-59 0 -109 -31t-82 -80t-49.5 -106.5t-17.5 -113.5z" />
<glyph unicode="e" horiz-adv-x="1015" d="M80 455q0 111 46 213.5t136.5 171.5t204.5 69q109 0 196.5 -64t133 -162t45.5 -206q0 -25 -19 -44t-45 -19h-571q8 -69 40 -132.5t90.5 -109t129.5 -45.5q51 0 91.5 21.5t61.5 47t44 47t43 21.5q27 0 45 -19t18 -44q0 -17 -10 -37q-48 -74 -127 -119t-166 -45 q-114 0 -204.5 69.5t-136.5 172.5t-46 213zM215 541h494q-16 97 -82.5 170t-159.5 73t-160.5 -72.5t-91.5 -170.5z" />
<glyph unicode="f" horiz-adv-x="677" d="M61 848q0 15 3 25.5t12 17t14.5 11t21 6t20.5 2t23.5 0t20.5 -0.5v238q0 104 72 176t176 72q32 0 71 -10t73 -35t34 -58q0 -25 -18.5 -43t-44.5 -18q-18 0 -50 19.5t-65 19.5q-53 0 -87 -36.5t-34 -88.5v-236q8 0 37 2.5t50 2t45.5 -5t38 -20t13.5 -40.5t-13.5 -40 t-38.5 -20t-45 -5.5t-50 1.5t-37 2v-723q0 -26 -19 -43.5t-44 -17.5q-27 0 -45.5 17.5t-18.5 43.5v723h-14.5h-16t-15 0.5t-15.5 1.5t-13.5 3.5t-13.5 5.5t-10.5 7.5t-9.5 10.5t-5 14.5t-2 18.5z" />
<glyph unicode="g" horiz-adv-x="1013" d="M98 -262q0 26 19 44.5t45 18.5q18 0 36 -16.5t37 -39.5t42.5 -46.5t62.5 -40t88 -16.5q96 0 166 68.5t70 164.5v178q-80 -53 -181 -53q-111 0 -201.5 70t-137 173t-46.5 212q0 110 46.5 213t136.5 172t202 69q106 0 183 -51q3 21 21 36t40 15q25 0 44.5 -17.5t19.5 -43.5 v-969q0 -151 -106 -257.5t-257 -106.5q-99 0 -189 53t-135 141q-6 12 -6 29zM225 455q0 -74 29.5 -148t90.5 -127t138 -53q69 0 125 39t56 104v369q0 67 -56 107t-125 40q-77 0 -138 -53.5t-90.5 -128t-29.5 -149.5z" />
<glyph unicode="h" horiz-adv-x="1001" d="M158 63v1270q0 26 18.5 45t44.5 19q25 0 44.5 -19t19.5 -45v-504q112 80 258 80q102 0 175 -72t73 -175v-599q0 -26 -19 -44.5t-45 -18.5q-25 0 -43 18.5t-18 44.5v599q0 51 -36 87.5t-87 36.5q-74 0 -143.5 -33.5t-114.5 -93.5v-596q0 -26 -19.5 -44.5t-44.5 -18.5 q-26 0 -44.5 18.5t-18.5 44.5z" />
<glyph unicode="i" horiz-adv-x="536" d="M174 1333q0 29 21 49.5t49 20.5q30 0 51.5 -20.5t21.5 -49.5q0 -30 -21.5 -50.5t-51.5 -20.5q-28 0 -49 20.5t-21 50.5zM182 63v785q0 26 18.5 43.5t43.5 17.5q26 0 44.5 -17.5t18.5 -43.5v-785q0 -26 -18.5 -43.5t-44.5 -17.5q-25 0 -43.5 17.5t-18.5 43.5z" />
<glyph unicode="j" horiz-adv-x="673" d="M-223 -358q0 26 17.5 44.5t43.5 18.5q14 0 40 -15.5t65 -31.5t82 -16q97 0 166 69.5t69 167.5v971q0 25 18 42t46 17q25 0 44 -17.5t19 -41.5v-971q0 -150 -107 -257t-255 -107q-38 0 -93.5 13.5t-105 44t-49.5 69.5zM252 1333q0 29 20.5 49.5t49.5 20.5t50 -20.5 t21 -49.5q0 -30 -20.5 -50.5t-50.5 -20.5t-50 20t-20 51z" />
<glyph unicode="k" horiz-adv-x="940" d="M123 63v1270q0 26 17 45t42 19q27 0 45.5 -18.5t18.5 -45.5v-819l379 379q19 16 45 16t44.5 -17.5t18.5 -43.5q0 -29 -20 -43l-264 -266q8 -13 44 -68t73.5 -114t77 -123t64.5 -111t25 -60q0 -26 -18.5 -44.5t-44.5 -18.5q-33 0 -54 31l-258 418l-112 -111v-275 q0 -27 -18 -45t-46 -18q-25 0 -42 18.5t-17 44.5z" />
<glyph unicode="l" horiz-adv-x="681" d="M188 250v1083q0 26 19 44t45 18q25 0 43 -18t18 -44v-1081q0 -47 19.5 -73.5t46.5 -35.5t54.5 -15t47 -21t19.5 -44q0 -26 -18.5 -43.5t-45.5 -17.5q-102 0 -175 73t-73 175z" />
<glyph unicode="m" horiz-adv-x="1243" d="M168 63v785q0 26 17.5 43.5t43.5 17.5q23 0 41 -14.5t21 -36.5q69 51 158 51h10q103 0 166 -82q39 39 93 61q52 21 104 21h5q87 -2 146 -58.5t59 -143.5v-644q0 -26 -18.5 -43.5t-44.5 -17.5q-25 0 -44.5 17.5t-19.5 43.5v644q0 32 -23 55.5t-55 23.5q-67 0 -115 -48.5 t-48 -116.5v-558q0 -26 -19.5 -43.5t-44.5 -17.5q-26 0 -44.5 17.5t-18.5 43.5v644q0 32 -23.5 55.5t-54.5 23.5q-70 0 -119 -49.5t-49 -120.5v-553q0 -26 -18 -43.5t-44 -17.5t-43.5 17.5t-17.5 43.5z" />
<glyph unicode="n" horiz-adv-x="1015" d="M170 63v785q0 26 18.5 43.5t44.5 17.5q62 0 62 -80q118 80 260 80q102 0 175 -72t73 -175v-599q0 -26 -19 -44.5t-45 -18.5q-25 0 -44 18.5t-19 44.5v599q0 51 -35 87.5t-84 36.5q-77 0 -146 -33.5t-116 -93.5v-596q0 -26 -18.5 -44.5t-43.5 -18.5q-26 0 -44.5 18.5 t-18.5 44.5z" />
<glyph unicode="o" horiz-adv-x="978" d="M82 455q0 111 45.5 213.5t135.5 171.5t204 69q112 0 202 -69t136.5 -172t46.5 -213t-46.5 -213t-137 -172.5t-201.5 -69.5q-113 0 -203.5 70t-136 173t-45.5 212zM207 455q0 -74 30 -148t91.5 -127t138.5 -53q59 0 109 31t81 79.5t48.5 105.5t17.5 112q0 56 -17.5 113 t-48.5 105.5t-81 79.5t-109 31q-79 0 -140 -53t-90.5 -126.5t-29.5 -149.5z" />
<glyph unicode="p" horiz-adv-x="1050" d="M176 -422v1270q0 26 18.5 43.5t45.5 17.5q22 0 39 -14.5t20 -36.5q80 51 180 51q114 0 204 -69t135.5 -171.5t45.5 -213.5q0 -109 -45.5 -211.5t-135.5 -172t-204 -69.5q-94 0 -178 49v-473q0 -25 -18 -44t-43 -19q-26 0 -45 19t-19 44zM301 252q0 -52 62 -88.5 t116 -36.5q78 0 139.5 53t91 127t29.5 148q0 75 -29.5 149.5t-91 128t-139.5 53.5q-54 0 -116 -37t-62 -90v-407z" />
<glyph unicode="q" horiz-adv-x="1011" d="M94 455q0 111 46 213.5t136 171.5t201 69q103 0 180 -51q3 22 22 36.5t42 14.5q25 0 40.5 -14.5t20 -42.5t5.5 -50v-15q0 -18 -1 -41q-2 -35 -2 -44v-1124q0 -25 -18.5 -44t-44.5 -19q-25 0 -44.5 19t-19.5 44v473q-84 -49 -180 -49q-111 0 -201 69.5t-136 172t-46 211.5 zM219 455q0 -74 29.5 -148t90.5 -127t138 -53q57 0 118.5 36.5t61.5 88.5v407q0 36 -32 66.5t-72.5 45.5t-75.5 15q-77 0 -138 -53.5t-90.5 -128t-29.5 -149.5z" />
<glyph unicode="r" horiz-adv-x="819" d="M160 63v785q0 26 18.5 43.5t44.5 17.5q62 0 62 -86q103 86 237 86q25 0 39.5 -0.5t44 -4t46.5 -11t31.5 -22.5t14.5 -37q0 -25 -19 -43.5t-44 -18.5q-18 0 -55.5 7t-57.5 7q-98 0 -170 -69q-67 -70 -67 -174v-480q0 -26 -18.5 -43.5t-43.5 -17.5q-26 0 -44.5 17.5 t-18.5 43.5z" />
<glyph unicode="s" horiz-adv-x="917" d="M88 203q0 26 19.5 43.5t44.5 17.5q20 0 43.5 -21.5t44.5 -47t62 -47t93 -21.5q63 0 121.5 37.5t58.5 97.5q0 61 -61 102t-129 50q-105 17 -185.5 86.5t-80.5 171.5q0 103 84.5 170t191.5 67q87 0 164 -46t111 -124q6 -18 6 -26q0 -26 -18.5 -45t-43.5 -19q-18 0 -34.5 14 t-31.5 34.5t-33.5 40.5t-49 34t-70.5 14q-53 0 -103 -32t-50 -82t53 -87t108 -46q74 -12 139 -46t110.5 -95t45.5 -136q0 -114 -93.5 -188t-209.5 -74q-88 0 -166.5 45t-128.5 121q-12 20 -12 37z" />
<glyph unicode="t" horiz-adv-x="745" d="M119 848q0 15 3 25.5t12 17t14.5 11t21.5 6t21 2t24 0.5t21 -1q0 9 -2.5 39t-2 51.5t5 46.5t20 38.5t40.5 13.5t40.5 -13.5t20 -39t5.5 -46t-1 -52t-2 -38.5q8 0 37 2.5t50 2t46 -5t38.5 -20t13.5 -40.5t-13.5 -40t-38.5 -20t-45.5 -5.5t-50.5 1.5t-37 2v-606 q0 -22 14.5 -37.5t37.5 -15.5q14 0 37 6t34 6q25 0 43.5 -18t18.5 -45t-24 -45.5t-52 -24.5t-57 -6q-74 2 -125 53.5t-51 124.5v608h-15h-16.5t-15 0.5t-16 1.5t-14 3.5t-13.5 5.5t-10.5 7.5t-9.5 10.5t-5 14.5t-2 18.5z" />
<glyph unicode="u" horiz-adv-x="989" d="M129 248v602q0 25 17.5 44t41.5 19q27 0 45.5 -19t18.5 -44v-602q0 -50 36 -85.5t87 -35.5q75 0 144 33t116 92v596q0 26 17.5 43.5t43.5 17.5q28 0 46 -17.5t18 -43.5v-785q0 -27 -18 -45t-46 -18q-61 0 -61 82q-118 -82 -258 -82q-102 0 -175 73t-73 175z" />
<glyph unicode="v" horiz-adv-x="972" d="M125 848q0 26 19 43.5t44 17.5q44 0 60 -39l217 -618l219 618q6 18 22.5 28.5t36.5 10.5q25 0 43.5 -17.5t18.5 -43.5q0 -10 -25.5 -87t-65 -189t-77 -217t-72 -200.5t-39.5 -109.5q-6 -19 -23 -32t-38 -13q-20 0 -35.5 12t-21.5 31q-40 103 -161.5 442.5t-121.5 362.5z " />
<glyph unicode="w" horiz-adv-x="1146" d="M113 850q0 24 19 41.5t44 17.5q23 0 40.5 -12.5t21.5 -34.5l122 -524l125 524q4 22 21.5 34.5t40.5 12.5q22 0 38.5 -12.5t20.5 -34.5l125 -524l123 524q4 21 21.5 34t39.5 13q26 0 45 -17t19 -42q0 -17 -42 -196.5t-90 -378t-54 -226.5q-6 -22 -23 -35.5t-39 -13.5 t-39.5 13.5t-21.5 35.5l-123 526l-125 -526q-5 -22 -22 -35.5t-40 -13.5q-22 0 -38 13.5t-21 35.5q-4 16 -27 110t-48.5 199t-52 215.5t-43.5 188t-17 88.5z" />
<glyph unicode="x" horiz-adv-x="933" d="M137 63q0 13 8 33l224 359l-224 360q-8 20 -8 33q0 26 18.5 43.5t43.5 17.5q36 0 55 -28l188 -306l187 306q22 28 55 28q25 0 44.5 -17.5t19.5 -43.5q0 -19 -11 -33l-223 -360l223 -359q11 -14 11 -33q0 -26 -19 -44.5t-45 -18.5q-30 0 -51 31l-191 305l-188 -305 q-21 -31 -55 -31q-25 0 -43.5 18.5t-18.5 44.5z" />
<glyph unicode="y" horiz-adv-x="970" d="M37 -422q0 29 17.5 43t46 19.5t59 13.5t62 34t50.5 72q24 57 61.5 166t47.5 137q-275 754 -275 787q0 25 19 42t45 17q19 0 35 -10.5t22 -28.5l219 -618l220 618q6 18 22 28.5t35 10.5q27 0 45 -17t18 -42q0 -17 -2 -23l-393 -1103q-32 -93 -114 -151t-181 -58 q-24 0 -41.5 19t-17.5 44z" />
<glyph unicode="z" horiz-adv-x="919" d="M133 63q0 20 8 33l426 690h-372q-26 0 -44 18t-18 44t18 43.5t44 17.5h485q26 0 43.5 -17.5t17.5 -43.5q0 -20 -8 -33l-426 -688h373q26 0 44.5 -19.5t18.5 -44.5q0 -26 -18.5 -44.5t-44.5 -18.5h-483q-27 0 -45.5 18t-18.5 45z" />
<glyph unicode="{" horiz-adv-x="745" d="M178 698q0 28 19 42.5t46 21t54 15.5t46 35t19 71v450q0 102 73 175t175 73q25 0 44.5 -18.5t19.5 -44.5q0 -27 -19.5 -41.5t-47 -21t-54.5 -15.5t-46.5 -35.5t-19.5 -71.5v-450q0 -110 -81 -185q81 -75 81 -184v-451q0 -45 19.5 -71t46.5 -35.5t54.5 -15.5t47 -20.5 t19.5 -41.5q0 -26 -19.5 -44.5t-44.5 -18.5q-103 0 -175.5 72t-72.5 175v451q0 45 -19 71t-46 34.5t-54 15t-46 21t-19 42.5z" />
<glyph unicode="|" horiz-adv-x="538" d="M158 -121v1639q0 27 18 45t45 18q25 0 43.5 -18.5t18.5 -44.5v-1639q0 -26 -18.5 -44.5t-43.5 -18.5q-27 0 -45 18t-18 45z" />
<glyph unicode="}" horiz-adv-x="745" d="M86 -121q0 27 19 41.5t46 20.5t54 15.5t46 35.5t19 71v451q0 107 84 184q-84 77 -84 185v450q0 45 -19 71.5t-46 35.5t-54 15.5t-46 21t-19 41.5q0 26 19 44.5t45 18.5q102 0 174.5 -73t72.5 -175v-450q0 -45 19 -71t46.5 -35t54.5 -15.5t46 -21t19 -42.5t-19 -42.5 t-46 -21t-54.5 -15t-46.5 -34.5t-19 -71v-451q0 -103 -72 -175t-175 -72q-26 0 -45 18.5t-19 44.5z" />
<glyph unicode="~" horiz-adv-x="831" d="M63 455q0 33 34 60.5t75.5 40.5t73.5 13q47 0 84.5 -15.5t57.5 -34.5t47 -34.5t54 -15.5q37 0 68.5 24.5t52.5 24.5q26 0 44 -18t18 -45q0 -47 -65 -80t-118 -33q-47 0 -84.5 16t-57.5 35t-47 35t-54 16q-37 0 -68.5 -24.5t-52.5 -24.5q-26 0 -44 17.5t-18 42.5z" />
<glyph unicode="&#xa0;" />
<glyph unicode="&#xa1;" horiz-adv-x="481" d="M127 -422q0 145 3.5 305t10 361.5t9.5 304.5q2 16 12 27.5t26 11.5q15 0 27 -12t12 -27q2 -114 13.5 -450.5t11.5 -520.5q0 -25 -19 -44t-45 -19q-25 0 -43 19t-18 44zM127 850q0 25 18 44t43 19q26 0 45 -19t19 -44q0 -26 -19 -45t-45 -19q-25 0 -43 19t-18 45z" />
<glyph unicode="&#xa2;" horiz-adv-x="968" d="M72 455q0 100 37.5 194.5t113 166t172.5 89.5q0 7 -2.5 37.5t-1.5 52.5t5.5 48t20 40.5t40.5 14.5t41 -14.5t20.5 -40.5t5 -47.5t-1.5 -52.5t-2 -38q43 -7 98.5 -37.5t99.5 -77.5t44 -90q0 -25 -18 -44t-44 -19q-17 0 -31.5 11t-28 28.5t-28.5 36t-39 35.5t-53 26v-639 q32 10 60.5 34t45 46t35.5 39.5t37 17.5q28 0 46 -17.5t18 -45.5q0 -63 -85.5 -126t-156.5 -77q0 -7 2 -38t1.5 -52t-5 -46.5t-20.5 -39.5t-41 -14t-40.5 14t-20 39.5t-5.5 46.5t1.5 51.5t2.5 38.5q-96 19 -171.5 91t-113.5 166.5t-38 191.5zM199 455q0 -63 22 -127.5 t68 -118.5t106 -74v639q-60 -18 -106 -71t-68 -118t-22 -130z" />
<glyph unicode="&#xa3;" horiz-adv-x="1089" d="M0 63q0 26 18.5 44t44.5 18q98 0 168 69.5t70 167.5v187v237h-123q-26 0 -44.5 19t-18.5 45t18.5 43.5t44.5 17.5h123v238q0 103 72.5 176.5t175.5 73.5h2q146 -3 264 -86q22 -15 25.5 -40.5t-11.5 -47.5t-40.5 -26t-47.5 11q-83 62 -192 62h-2q-50 0 -85.5 -36 t-35.5 -87v-238h123q26 0 44.5 -17.5t18.5 -43.5t-18.5 -45t-44.5 -19h-123v-237v-187q0 -131 -88 -237h512q26 0 43.5 -18t17.5 -44t-17.5 -44.5t-43.5 -18.5h-787q-26 0 -44.5 18.5t-18.5 44.5z" />
<glyph unicode="&#xa4;" horiz-adv-x="864" d="M74 455q0 10 2.5 19t9 17.5t11 13.5t14.5 14t14 13q-51 71 -51 166t51 166q-3 3 -13.5 13t-14.5 15t-11 13.5t-9.5 17.5t-2.5 19q0 25 18 43.5t43 18.5q13 0 25 -5.5t18 -11t17.5 -18.5t15.5 -17q76 52 168 52q93 0 166 -52q4 4 13.5 14t14.5 14.5t13.5 11t17.5 9.5t19 3 q25 0 43 -18.5t18 -43.5q0 -12 -5.5 -24t-11 -19t-17 -18.5t-15.5 -16.5q49 -73 49 -166t-49 -166q4 -5 15.5 -16.5t17 -18t11 -18.5t5.5 -24q0 -25 -18.5 -44.5t-42.5 -19.5q-16 0 -28 6.5t-30 24.5l-20 20q-76 -51 -166 -51q-89 0 -168 51q-4 -4 -19.5 -20.5t-27.5 -23.5 t-29 -7q-24 0 -42.5 19.5t-18.5 44.5zM199 698q0 -74 52.5 -127t127.5 -53q73 0 126.5 53t53.5 127t-53.5 127.5t-126.5 53.5q-75 0 -127.5 -53.5t-52.5 -127.5z" />
<glyph unicode="&#xa5;" horiz-adv-x="1091" d="M-8 1333q0 26 18 45t43 19q39 0 56 -31l337 -580l338 580q17 31 54 31q26 0 44.5 -19t18.5 -45q0 -13 -30.5 -71.5t-80.5 -144t-93.5 -158t-90.5 -150.5t-51 -84q8 0 29.5 1t36 1.5t34.5 -2.5t32 -9.5t21 -20t9 -33.5q0 -25 -19 -43.5t-45 -18.5h-143v-174h143 q26 0 45 -19t19 -45q0 -25 -19 -44t-45 -19h-143v-236q0 -26 -19.5 -44.5t-44.5 -18.5q-26 0 -44.5 18.5t-18.5 44.5v236h-143q-26 0 -45 19t-19 44q0 26 19 45t45 19h143v174h-143q-26 0 -45 18.5t-19 43.5q0 20 9 33.5t21 20t32 9.5t34.5 2.5t35.5 -1.5t28 -1l-50 83 q-51 83 -91.5 152t-91.5 157t-81 145.5t-30 70.5z" />
<glyph unicode="&#xa6;" />
<glyph unicode="&#xa7;" horiz-adv-x="1083" d="M96 823q0 71 28 136t79 112q-49 76 -49 174q0 139 98.5 237.5t236.5 98.5q92 0 174 -49.5t123 -132.5q7 -14 7 -27q0 -27 -17.5 -45t-42.5 -18q-18 0 -35.5 15t-34.5 36.5t-38 43.5t-56.5 37t-79.5 15q-86 0 -148 -62.5t-62 -148.5q0 -54 26 -99t68 -76t96.5 -63 t110.5 -58.5t110.5 -63.5t96.5 -77.5t68 -101.5t26 -135q0 -69 -28 -133t-79 -110q51 -77 51 -176q0 -139 -99 -237.5t-237 -98.5q-93 0 -175 49t-121 131q-9 12 -9 29q0 26 19.5 44.5t44.5 18.5q18 0 35 -15t33.5 -37t37.5 -43.5t56 -36.5t79 -15q86 0 147.5 62.5 t61.5 148.5q0 61 -33 110.5t-86.5 84t-117.5 67t-128 69t-117.5 80.5t-86.5 110.5t-33 149.5zM221 823q0 -57 29.5 -107t79.5 -79l327 -195q6 -4 17.5 -11t17.5 -11q64 61 64 155q0 56 -29 106t-78 79l-330 194q-5 4 -16 11.5t-16 11.5q-66 -63 -66 -154z" />
<glyph unicode="&#xa8;" horiz-adv-x="675" d="M111 1147q0 27 18 45t45 18q26 0 45 -18t19 -45q0 -26 -19.5 -44t-44.5 -18q-26 0 -44.5 18t-18.5 44zM369 1147q0 27 19 45t44 18q27 0 45.5 -18t18.5 -45q0 -26 -19 -44t-45 -18q-25 0 -44 18t-19 44z" />
<glyph unicode="&#xa9;" horiz-adv-x="1097" d="M86 698q0 175 124.5 299.5t299.5 124.5t298.5 -124.5t123.5 -299.5t-123.5 -299.5t-298.5 -124.5q-176 0 -300 124.5t-124 299.5zM150 698q0 -149 105.5 -254.5t254.5 -105.5q148 0 254 105.5t106 254.5t-106 255t-254 106q-149 0 -254.5 -106t-105.5 -255zM301 698 q0 94 59 170t150 76q46 0 105 -34t59 -76q0 -13 -9.5 -22t-21.5 -9q-10 0 -23 12.5t-24.5 27.5t-34 27.5t-51.5 12.5q-63 0 -104 -59t-41 -126t41 -125.5t104 -58.5q29 0 51.5 12.5t34 27.5t24.5 27.5t23 12.5q12 0 21.5 -9t9.5 -22q0 -42 -59.5 -76t-104.5 -34 q-91 0 -150 76t-59 169z" />
<glyph unicode="&#xaa;" />
<glyph unicode="&#xab;" />
<glyph unicode="&#xac;" />
<glyph unicode="&#xad;" />
<glyph unicode="&#xae;" horiz-adv-x="1099" d="M86 698q0 175 124.5 299.5t301.5 124.5q174 0 299 -125t125 -299t-125 -299t-299 -125q-177 0 -301.5 124.5t-124.5 299.5zM150 698q0 -149 105.5 -254.5t256.5 -105.5q149 0 254.5 105.5t105.5 254.5t-105.5 255t-254.5 106q-150 0 -256 -105.5t-106 -255.5zM336 444 v508q0 13 9.5 23t21.5 10h180q69 0 118.5 -49.5t49.5 -118.5q0 -52 -33 -96.5t-84 -61.5q4 -7 35 -60.5t56.5 -100t25.5 -54.5q0 -13 -9.5 -22.5t-23.5 -9.5q-15 0 -27 16l-125 225h-131v-209q0 -13 -10 -22.5t-22 -9.5t-21.5 9.5t-9.5 22.5zM399 717h148q43 0 73.5 29.5 t30.5 70.5q0 44 -30.5 74.5t-73.5 30.5h-148v-205z" />
<glyph unicode="&#xaf;" />
<glyph unicode="&#xb0;" horiz-adv-x="565" d="M66 1147q0 67 47.5 114.5t113.5 47.5q67 0 114.5 -47.5t47.5 -114.5q0 -66 -47.5 -113t-114.5 -47q-66 0 -113.5 47t-47.5 113zM164 1147q0 -26 19 -44t44 -18q26 0 45 18t19 44q0 27 -18.5 45t-45.5 18q-25 0 -44 -18t-19 -45z" />
<glyph unicode="&#xb1;" />
<glyph unicode="&#xb2;" />
<glyph unicode="&#xb3;" />
<glyph unicode="&#xb4;" horiz-adv-x="663" d="M233 1055q0 12 29 55.5t67.5 96t45.5 63.5q20 33 53 33q27 0 45.5 -18.5t18.5 -45.5q0 -28 -51.5 -101t-94.5 -124q-20 -23 -49 -23q-25 0 -44.5 19t-19.5 45z" />
<glyph unicode="&#xb5;" horiz-adv-x="974" d="M106 -129v979q0 25 19 44t45 19t43.5 -19t17.5 -44v-602q0 -50 36 -85.5t87 -35.5q75 0 144.5 33.5t113.5 91.5v596q0 26 19.5 43.5t44.5 17.5q26 0 44.5 -17.5t18.5 -43.5v-785q0 -26 -18.5 -44.5t-44.5 -18.5q-64 0 -64 82q-114 -82 -256 -82q-66 0 -125 35v-164 q0 -25 -17.5 -42t-43.5 -17t-45 17t-19 42z" />
<glyph unicode="&#xb6;" horiz-adv-x="952" d="M63 1149q0 149 106 254.5t257 105.5h229q26 0 44 -17.5t18 -43.5v-1499q0 -26 -18 -45t-44 -19t-44.5 19t-18.5 45v1437h-103v-1437q0 -26 -19 -45t-44 -19q-26 0 -45 19t-19 45v842q-130 22 -214.5 123.5t-84.5 234.5z" />
<glyph unicode="&#xb7;" />
<glyph unicode="&#xb8;" />
<glyph unicode="&#xb9;" />
<glyph unicode="&#xba;" />
<glyph unicode="&#xbb;" />
<glyph unicode="&#xbc;" />
<glyph unicode="&#xbd;" />
<glyph unicode="&#xbe;" />
<glyph unicode="&#xbf;" horiz-adv-x="864" d="M16 -98q0 112 66.5 200.5t173.5 120.5q68 20 111.5 76.5t42.5 124.5l-2 123q0 27 18 45t45 18q21 0 35 -10.5t20.5 -25.5t9.5 -38t2.5 -40t-2 -40.5t-1.5 -31.5q0 -112 -66.5 -201t-175.5 -121q-68 -22 -110 -76t-42 -124q0 -78 53.5 -139.5t127.5 -91t149 -29.5 q74 0 134.5 23t98 56t66 66.5t52 56.5t42.5 23q26 0 44 -19t18 -45q0 -20 -11 -34q-73 -117 -191.5 -185.5t-252.5 -68.5q-110 0 -213 46.5t-172.5 137t-69.5 203.5zM408 850q0 25 18.5 44t44.5 19q25 0 44.5 -19t19.5 -44q0 -26 -19.5 -45t-44.5 -19q-26 0 -44.5 19 t-18.5 45z" />
<glyph unicode="&#xc0;" horiz-adv-x="1230" d="M0 63q0 10 45.5 134.5t115 306t136.5 355.5t125.5 325t66.5 172q6 18 22 29.5t36 11.5q19 0 36 -12t23 -29q8 -22 66.5 -172t125.5 -324.5t136.5 -356t115.5 -306t46 -134.5q0 -26 -19.5 -44.5t-44.5 -18.5q-19 0 -36 12t-23 29l-168 446h-514l-170 -446 q-6 -17 -22.5 -29t-35.5 -12q-27 0 -45 18t-18 45zM338 610h418l-209 547zM420 1726q0 25 18 43.5t43 18.5q35 0 56 -31q7 -13 44 -64t66 -95.5t29 -57.5q0 -25 -19 -43t-45 -18q-30 0 -49 22q-34 36 -88.5 116t-54.5 109z" />
<glyph unicode="&#xc1;" horiz-adv-x="1214" d="M0 63q0 10 45.5 134.5t115 306t136.5 355.5t125.5 325t66.5 172q6 18 22 29.5t36 11.5q19 0 36 -12t23 -29q8 -22 66.5 -172t125.5 -324.5t136.5 -356t115.5 -306t46 -134.5q0 -26 -19.5 -44.5t-44.5 -18.5q-19 0 -36 12t-23 29l-168 446h-514l-170 -446 q-6 -17 -22.5 -29t-35.5 -12q-27 0 -45 18t-18 45zM338 610h418l-209 547zM420 1540q0 13 28 56.5t66.5 97.5t44.5 63q17 31 53 31q26 0 45 -18.5t19 -43.5q0 -28 -55.5 -108t-90.5 -117q-19 -22 -49 -22q-25 0 -43 18t-18 43z" />
<glyph unicode="&#xc2;" horiz-adv-x="1230" d="M0 63q0 10 45.5 134.5t115 306t136.5 355.5t125.5 325t66.5 172q6 17 22.5 29t35.5 12q21 0 37 -11.5t22 -29.5q8 -22 66.5 -172t125.5 -324.5t136.5 -356t115.5 -306t46 -134.5q0 -26 -18.5 -44.5t-43.5 -18.5q-40 0 -61 41l-168 446h-512l-172 -446q-6 -17 -22.5 -29 t-35.5 -12q-26 0 -44.5 18.5t-18.5 44.5zM340 610h418l-211 547zM356 1546q0 23 13 39q79 100 125 176q20 33 53 33q35 0 55 -33q53 -87 123 -176q16 -16 16 -39q0 -26 -18.5 -44.5t-44.5 -18.5q-13 0 -28 9t-30.5 26.5t-26.5 31.5t-26.5 36t-19.5 28q-56 -87 -87 -112 q-23 -19 -42 -19q-26 0 -44 18.5t-18 44.5z" />
<glyph unicode="&#xc3;" horiz-adv-x="1286" d="M0 63q0 10 45.5 134.5t115 306t136.5 355.5t125.5 325t66.5 172q8 18 24 29.5t34 11.5q43 0 61 -41q8 -22 66.5 -172t125.5 -324.5t136.5 -356t115.5 -306t46 -134.5q0 -26 -19.5 -44.5t-44.5 -18.5q-41 0 -59 41l-170 446h-512l-172 -446q-6 -18 -22 -29.5t-36 -11.5 q-26 0 -44.5 18.5t-18.5 44.5zM340 610h418l-211 547zM350 1634q0 38 42 62t85 24q34 0 61.5 -13t44.5 -26.5t25 -13.5t26.5 13.5t39.5 13.5q25 0 44 -18t19 -42q0 -40 -43.5 -65t-85.5 -25q-33 0 -60.5 13t-45 26.5t-25.5 13.5t-26 -13t-39 -13q-25 0 -43.5 18t-18.5 45z " />
<glyph unicode="&#xc4;" horiz-adv-x="1230" d="M0 63q0 10 45.5 134.5t115 306t136.5 355.5t125.5 325t66.5 172q6 17 22.5 29t35.5 12q21 0 37 -11.5t22 -29.5q8 -22 66.5 -172t125.5 -324.5t136.5 -356t115.5 -306t46 -134.5q0 -26 -19.5 -44.5t-44.5 -18.5q-19 0 -36 12t-23 29l-168 446h-514l-170 -446 q-6 -17 -22.5 -29t-35.5 -12q-26 0 -44.5 18.5t-18.5 44.5zM340 610h418l-211 547zM354 1634q0 25 19 43.5t45 18.5q25 0 43 -18.5t18 -43.5q0 -26 -18 -44.5t-43 -18.5q-26 0 -45 18.5t-19 44.5zM614 1634q0 25 19.5 43.5t44.5 18.5q26 0 44.5 -18.5t18.5 -43.5 q0 -26 -18.5 -44.5t-44.5 -18.5q-25 0 -44.5 18.5t-19.5 44.5z" />
<glyph unicode="&#xc5;" horiz-adv-x="1214" d="M0 63q0 10 45.5 134.5t115 306t136.5 355.5t125.5 325t66.5 172q6 18 22 29.5t36 11.5q19 0 36 -12t23 -29q8 -22 66.5 -172t125.5 -324.5t136.5 -356t115.5 -306t46 -134.5q0 -26 -19.5 -44.5t-44.5 -18.5q-20 0 -36.5 11.5t-22.5 29.5l-170 446h-512l-172 -446 q-6 -18 -22 -29.5t-36 -11.5q-26 0 -43.5 18.5t-17.5 44.5zM338 610h418l-209 547zM385 1634q0 65 47.5 113.5t114.5 48.5q65 0 112.5 -48.5t47.5 -113.5q0 -68 -47 -116t-113 -48q-67 0 -114.5 48t-47.5 116zM485 1634q0 -26 18.5 -44.5t43.5 -18.5q26 0 44.5 18.5 t18.5 44.5q0 25 -18.5 43.5t-44.5 18.5q-25 0 -43.5 -18.5t-18.5 -43.5z" />
<glyph unicode="&#xc6;" horiz-adv-x="1773" d="M129 63q0 19 58 129t135 247.5t81 144.5l424 780q22 33 58 33h690q26 0 44.5 -19t18.5 -45q0 -25 -18.5 -44t-44.5 -19h-627v-475h443q26 0 44.5 -17.5t18.5 -42.5q0 -27 -18 -45t-45 -18h-443v-545h627q26 0 44.5 -19.5t18.5 -44.5q0 -26 -18.5 -44.5t-44.5 -18.5h-690 q-26 0 -45 18.5t-19 44.5v424h-327l-248 -452q-18 -35 -53 -35q-27 0 -45.5 18t-18.5 45zM561 610h260v475z" />
<glyph unicode="&#xc7;" horiz-adv-x="1232" d="M47 696q0 81 18.5 164.5t53 161.5t86.5 146t115 118.5t143.5 79.5t167.5 29q138 0 263.5 -75t184.5 -198q6 -15 6 -26q0 -28 -18.5 -46t-44.5 -18q-38 0 -55 33q-118 203 -336 203q-103 0 -191.5 -53t-145 -137t-88.5 -184t-32 -198q0 -97 32 -196.5t88.5 -183 t145 -136.5t191.5 -53q215 0 336 203q19 32 55 32q27 0 45 -18t18 -45q0 -12 -6 -27q-53 -113 -163.5 -185.5t-237.5 -84.5l-27 -82h31q77 0 132.5 -47.5t55.5 -122.5q0 -95 -80.5 -165t-177.5 -70q-51 0 -109.5 32t-58.5 80q0 26 17.5 45t42.5 19q26 0 50 -24.5t58 -24.5 q45 0 89 32.5t44 75.5q0 23 -18.5 35t-44.5 12q-36 0 -74.5 -24.5t-54.5 -24.5q-26 0 -45 18t-19 41q0 15 12 55.5t27.5 86.5t18.5 57q-113 19 -209.5 88.5t-158.5 166t-97 210t-35 225.5z" />
<glyph unicode="&#xc8;" horiz-adv-x="1058" d="M82 63v1270q0 27 17.5 45.5t43.5 18.5h785q26 0 44.5 -19t18.5 -45q0 -25 -18.5 -44t-44.5 -19h-723v-475h538q26 0 44 -17.5t18 -42.5q0 -27 -17.5 -45t-44.5 -18h-538v-545h723q26 0 44.5 -19.5t18.5 -44.5q0 -26 -18.5 -44.5t-44.5 -18.5h-785q-26 0 -43.5 18.5 t-17.5 44.5zM408 1726q0 25 18.5 43.5t44.5 18.5q36 0 53 -31q7 -12 44 -63.5t65.5 -96t28.5 -57.5q0 -25 -17.5 -43t-42.5 -18q-30 0 -49 22q-35 37 -90 117t-55 108z" />
<glyph unicode="&#xc9;" horiz-adv-x="1056" d="M80 63v1270q0 26 18 45t43 19h785q27 0 45 -18.5t18 -45.5q0 -25 -18 -44t-45 -19h-721v-475h536q25 0 44.5 -18t19.5 -42q0 -27 -19 -45t-45 -18h-536v-545h721q27 0 45 -19t18 -45q0 -27 -18 -45t-45 -18h-785q-25 0 -43 18.5t-18 44.5zM408 1540q0 13 28.5 57.5t65 96 t43.5 63.5q21 31 55 31q25 0 43.5 -18.5t18.5 -43.5q0 -29 -55 -109t-89 -116q-19 -22 -49 -22q-26 0 -43.5 18t-17.5 43z" />
<glyph unicode="&#xca;" horiz-adv-x="1056" d="M80 63v1270q0 26 18 45t43 19h785q26 0 44.5 -19t18.5 -45q0 -25 -18.5 -44t-44.5 -19h-721v-475h536q25 0 44.5 -18t19.5 -42q0 -27 -19 -45t-45 -18h-536v-545h721q26 0 44.5 -19.5t18.5 -44.5q0 -26 -18.5 -44.5t-44.5 -18.5h-785q-25 0 -43 18.5t-18 44.5zM340 1540 q0 25 16 41q77 97 123 176q21 31 56 31q36 0 53 -31q51 -82 125 -176q14 -17 14 -41q0 -25 -18 -43t-43 -18q-14 0 -29 9t-31 27t-26.5 30.5t-26 35.5t-18.5 27q-58 -85 -90 -111q-23 -18 -42 -18q-26 0 -44.5 18t-18.5 43z" />
<glyph unicode="&#xcb;" horiz-adv-x="1056" d="M80 63v1270q0 26 18 45t43 19h787q26 0 43.5 -18.5t17.5 -45.5q0 -25 -17.5 -44t-43.5 -19h-723v-475h536q25 0 44.5 -18t19.5 -42q0 -27 -19 -45t-45 -18h-536v-545h723q26 0 43.5 -19.5t17.5 -44.5q0 -26 -17.5 -44.5t-43.5 -18.5h-787q-25 0 -43 18.5t-18 44.5z M342 1626q0 28 18 46t46 18q26 0 43.5 -18t17.5 -46q0 -25 -17.5 -44t-43.5 -19q-27 0 -45.5 19t-18.5 44zM602 1626q0 27 18.5 45.5t45.5 18.5q25 0 43 -18.5t18 -45.5q0 -25 -18 -44t-43 -19q-26 0 -45 19t-19 44z" />
<glyph unicode="&#xcc;" horiz-adv-x="516" d="M68 1726q0 25 18.5 43.5t44.5 18.5q36 0 53 -31q6 -10 45 -63.5t67 -97t28 -56.5q0 -25 -18.5 -43t-43.5 -18q-31 0 -47 22q-34 34 -90.5 115t-56.5 110zM133 63v1270q0 26 19 45t45 19q25 0 44 -19t19 -45v-1270q0 -26 -19 -44.5t-44 -18.5q-26 0 -45 18.5t-19 44.5z " />
<glyph unicode="&#xcd;" horiz-adv-x="516" d="M68 1540q0 13 28.5 57.5t65 96t43.5 63.5q24 31 57 31q25 0 42.5 -18.5t17.5 -43.5q0 -28 -54 -106t-90 -119q-19 -22 -47 -22q-26 0 -44.5 18t-18.5 43zM133 63v1270q0 27 18.5 45.5t45.5 18.5q25 0 44 -19t19 -45v-1270q0 -26 -19 -44.5t-44 -18.5q-27 0 -45.5 18 t-18.5 45z" />
<glyph unicode="&#xce;" horiz-adv-x="526" d="M35 1540q0 24 14 41q74 94 125 176q17 31 53 31q35 0 56 -31q46 -79 123 -176q14 -17 14 -41q0 -25 -18.5 -43t-43.5 -18q-8 0 -16.5 3t-17 9.5t-16.5 12.5t-17 17t-15 18t-15 19.5t-13 18t-12 17.5t-9 14q-1 -1 -18.5 -26t-26.5 -36.5t-26 -30.5t-32 -27.5t-28 -8.5 q-25 0 -43 18t-18 43zM164 63v1270q0 26 19 45t44 19q26 0 45 -19t19 -45v-1270q0 -26 -19 -44.5t-45 -18.5q-25 0 -44 18.5t-19 44.5z" />
<glyph unicode="&#xcf;" horiz-adv-x="544" d="M35 1634q0 25 17.5 43.5t41.5 18.5q27 0 45.5 -18.5t18.5 -43.5q0 -26 -18 -44.5t-46 -18.5q-25 0 -42 18.5t-17 44.5zM162 63v1270q0 26 19 45t44 19q26 0 45 -19t19 -45v-1270q0 -26 -19 -44.5t-45 -18.5q-25 0 -44 18.5t-19 44.5zM293 1634q0 25 18.5 43.5t44.5 18.5 q25 0 44.5 -18.5t19.5 -43.5q0 -26 -19.5 -44.5t-44.5 -18.5q-26 0 -44.5 18.5t-18.5 44.5z" />
<glyph unicode="&#xd0;" />
<glyph unicode="&#xd1;" horiz-adv-x="1384" d="M129 63v1270q0 26 19 44t45 18q32 0 51 -25l784 -1108v1071q0 26 18.5 44t43.5 18q26 0 44.5 -18t18.5 -44v-1270q0 -26 -18.5 -43.5t-44.5 -17.5q-33 0 -52 25l-784 1108v-1072q0 -26 -18 -43.5t-43 -17.5q-27 0 -45.5 17.5t-18.5 43.5zM449 1634q0 38 42.5 62t86.5 24 q32 0 59.5 -13t44 -26.5t23.5 -13.5q8 0 27.5 13.5t37.5 13.5q26 0 45 -17.5t19 -42.5q0 -41 -42.5 -65.5t-86.5 -24.5q-33 0 -59.5 13t-43 26.5t-24.5 13.5t-27.5 -13t-38.5 -13q-27 0 -45 18t-18 45z" />
<glyph unicode="&#xd2;" horiz-adv-x="1464" d="M84 696q0 98 26 197.5t77 189.5t120.5 160t163.5 111t199 41q104 0 197.5 -41t162.5 -111t120 -160t77 -189.5t26 -197.5q0 -99 -26 -198.5t-77 -188.5t-120 -158.5t-163 -110t-199 -40.5q-104 0 -198 41t-163 111t-120 159t-77 188.5t-26 196.5zM209 696 q0 -77 20 -156.5t59.5 -153.5t94 -132t129 -92.5t158.5 -34.5q102 0 190.5 53t145 136.5t88.5 183t32 196.5q0 77 -19.5 157.5t-59 154.5t-93.5 132t-127.5 93t-156.5 35q-84 0 -158.5 -35t-129 -93t-94 -132t-59.5 -154.5t-20 -157.5zM541 1726q0 25 18 42.5t45 17.5 q37 0 53 -29q7 -12 44.5 -64.5t65.5 -96.5t28 -58q0 -24 -18.5 -41.5t-43.5 -17.5q-32 0 -49 20q-41 48 -92 123t-51 104z" />
<glyph unicode="&#xd3;" horiz-adv-x="1464" d="M84 696q0 81 18.5 164.5t53 161.5t86.5 146t115 118.5t143.5 79.5t167.5 29q105 0 199 -41t163 -111t120 -160t77 -189.5t26 -197.5q0 -99 -26 -198.5t-77 -188.5t-120 -158.5t-163 -110t-199 -40.5q-104 0 -198 41t-163 111t-120 159t-77 188.5t-26 196.5zM209 696 q0 -77 20 -156.5t59.5 -153.5t93.5 -132t128.5 -92.5t157.5 -34.5t157.5 34.5t128 92.5t93.5 132t59.5 153.5t19.5 156.5t-19.5 157.5t-59.5 154.5t-93.5 132t-128 93t-157.5 35t-157.5 -35t-128.5 -93t-93.5 -132t-59.5 -154.5t-20 -157.5zM541 1538q0 14 28.5 58.5 t64.5 95.5t44 65q16 29 55 29q25 0 43.5 -17.5t18.5 -42.5q0 -29 -51 -103t-93 -124q-20 -20 -49 -20q-26 0 -43.5 17t-17.5 42z" />
<glyph unicode="&#xd4;" horiz-adv-x="1464" d="M84 696q0 98 26 197.5t77.5 189.5t121 160t163.5 111t198 41t197.5 -41t162.5 -111t120 -160t77 -189.5t26 -197.5q0 -99 -26 -198.5t-77 -188.5t-120 -158.5t-162.5 -110t-197.5 -40.5t-198 41t-163.5 111t-121 159t-77.5 188.5t-26 196.5zM209 696q0 -77 20 -156.5 t59.5 -153.5t94 -132t129 -92.5t158.5 -34.5q102 0 190.5 53t145 136.5t88.5 183t32 196.5q0 77 -19.5 157.5t-59 154.5t-93.5 132t-127.5 93t-156.5 35q-84 0 -158.5 -35t-129 -93t-94 -132t-59.5 -154.5t-20 -157.5zM475 1538q0 24 17 41q76 100 122 178q19 29 56 29 t53 -29q59 -95 125 -178q12 -15 12 -41q0 -25 -18 -42t-45 -17q-13 0 -28 8.5t-31 27t-25.5 30.5t-25.5 35.5t-17 25.5q-4 -5 -19 -26t-26 -34.5t-26.5 -31t-31 -26.5t-28.5 -9q-26 0 -45 17t-19 42z" />
<glyph unicode="&#xd5;" horiz-adv-x="1478" d="M86 696q0 81 18.5 164.5t53 161.5t86.5 146t115 118.5t143.5 79.5t167.5 29q104 0 197.5 -41t162.5 -111t120 -160t77 -189.5t26 -197.5q0 -99 -26 -198.5t-77 -188.5t-120 -158.5t-162.5 -110t-197.5 -40.5t-198 41t-163 111t-120 159t-77 188.5t-26 196.5zM209 696 q0 -77 20 -156.5t60 -153.5t94.5 -132t129 -92.5t157.5 -34.5q102 0 190.5 53t145 136.5t88.5 183t32 196.5q0 77 -19.5 157.5t-59 154.5t-93.5 132t-127.5 93t-156.5 35t-157.5 -35t-129 -93t-94.5 -132t-60 -154.5t-20 -157.5zM475 1634q0 38 43 62t86 24q33 0 60.5 -13 t45 -26.5t25.5 -13.5t26.5 13.5t39.5 13.5q25 0 42 -17.5t17 -42.5q0 -40 -41.5 -65t-83.5 -25q-35 0 -62.5 13t-44 26.5t-24.5 13.5t-26 -13t-39 -13q-27 0 -45.5 18t-18.5 45z" />
<glyph unicode="&#xd6;" horiz-adv-x="1464" d="M84 696q0 98 26 197.5t77 189.5t120.5 160t163.5 111t199 41q104 0 197.5 -41t162.5 -111t120 -160t77 -189.5t26 -197.5q0 -99 -26 -198.5t-77 -188.5t-120 -158.5t-162.5 -110t-197.5 -40.5q-130 0 -242.5 63t-186 163.5t-115.5 223.5t-42 246zM209 696 q0 -77 20 -156.5t59.5 -153.5t94 -132t129 -92.5t158.5 -34.5q102 0 190.5 53t145 136.5t88.5 183t32 196.5q0 77 -19.5 157.5t-59 154.5t-93.5 132t-127.5 93t-156.5 35q-84 0 -158.5 -35t-129 -93t-94 -132t-59.5 -154.5t-20 -157.5zM475 1634q0 25 19 42.5t45 17.5 q25 0 44 -18t19 -42q0 -27 -19 -45t-44 -18q-27 0 -45.5 18t-18.5 45zM735 1634q0 25 18.5 42.5t43.5 17.5q26 0 44.5 -17.5t18.5 -42.5q0 -27 -18 -45t-45 -18q-25 0 -43.5 18t-18.5 45z" />
<glyph unicode="&#xd7;" />
<glyph unicode="&#xd8;" horiz-adv-x="1470" d="M84 696q0 98 26 197.5t77.5 189.5t121 160t163.5 111t198 41q160 0 297 -97q2 4 12 23t16 28t17 22.5t23 19.5t26 6q26 0 44.5 -19t18.5 -45q0 -9 -4.5 -22t-13.5 -28t-16 -25.5t-18 -26t-13 -19.5q94 -105 144 -239t50 -277q0 -99 -26 -198.5t-77 -188.5t-120 -158.5 t-162.5 -110t-197.5 -40.5q-165 0 -297 96q-4 -6 -14 -23t-17 -26.5t-18 -22t-23 -18.5t-25 -6q-25 0 -43 18.5t-18 44.5q0 14 10.5 36t29 51t21.5 34q-92 104 -142 238t-50 274zM209 696q0 -219 137 -399l553 895q-102 76 -229 76q-84 0 -158.5 -35t-129 -93t-94 -132 t-59.5 -154.5t-20 -157.5zM436 205q101 -78 234 -78q83 0 157 34.5t128 92.5t93.5 132t59.5 153.5t20 156.5q0 226 -139 404z" />
<glyph unicode="&#xd9;" horiz-adv-x="1357" d="M119 504v829q0 26 19 45t44 19q26 0 45 -19t19 -45v-829q0 -157 110.5 -267t268.5 -110q157 0 268 110t111 267v829q0 26 18 45t43 19q26 0 44.5 -19t18.5 -45v-829q0 -137 -67.5 -253t-183.5 -183.5t-252 -67.5q-138 0 -254.5 67.5t-184 183.5t-67.5 253zM496 1726 q0 25 18.5 43.5t44.5 18.5q36 0 53 -31q6 -10 45 -63.5t67 -97t28 -56.5q0 -25 -18.5 -43t-43.5 -18q-31 0 -47 22q-34 34 -90.5 115t-56.5 110z" />
<glyph unicode="&#xda;" horiz-adv-x="1355" d="M117 504v829q0 26 19 45t44 19q26 0 45 -19t19 -45v-829q0 -157 110.5 -267t268.5 -110q157 0 269 110.5t112 266.5v829q0 27 17.5 45.5t43.5 18.5t43.5 -18.5t17.5 -45.5v-829q0 -209 -147 -356.5t-356 -147.5q-137 0 -253.5 67.5t-184.5 183.5t-68 253zM496 1540 q0 13 28.5 57.5t65 96t43.5 63.5q17 31 55 31q25 0 43.5 -18.5t18.5 -43.5q0 -29 -55 -109t-89 -116q-19 -22 -49 -22q-26 0 -43.5 18t-17.5 43z" />
<glyph unicode="&#xdb;" horiz-adv-x="1355" d="M117 504v829q0 26 19 45t44 19q26 0 45 -19t19 -45v-829q0 -157 110.5 -267t268.5 -110q157 0 269 110.5t112 266.5v829q0 27 17.5 45.5t43.5 18.5t43.5 -18.5t17.5 -45.5v-829q0 -209 -147 -356.5t-356 -147.5q-137 0 -253.5 67.5t-184.5 183.5t-68 253zM430 1540 q0 27 14 41q56 68 123 176q21 31 56 31q36 0 53 -31q51 -82 125 -176q14 -14 14 -41q0 -25 -18.5 -43t-44.5 -18q-13 0 -28 9t-30.5 27t-26 31t-26 35.5t-18.5 26.5q-1 -2 -9 -14t-12 -17.5t-13 -18t-15 -19.5t-15 -18t-17 -17t-16.5 -12.5t-17 -9.5t-16.5 -3q-26 0 -44 18 t-18 43z" />
<glyph unicode="&#xdc;" horiz-adv-x="1374" d="M115 504v829q0 26 18.5 45t44.5 19q25 0 44.5 -19t19.5 -45v-829q0 -157 110.5 -267t268.5 -110q157 0 266.5 110t109.5 267v829q0 26 19.5 45t44.5 19q26 0 44.5 -19t18.5 -45v-829q0 -209 -147 -356.5t-356 -147.5q-138 0 -254.5 67.5t-184 183.5t-67.5 253zM426 1634 q0 25 18.5 43.5t44.5 18.5q25 0 44.5 -18.5t19.5 -43.5q0 -26 -19.5 -44.5t-44.5 -18.5q-26 0 -44.5 18.5t-18.5 44.5zM688 1634q0 25 18.5 43.5t43.5 18.5q26 0 44.5 -18.5t18.5 -43.5q0 -26 -18.5 -44.5t-44.5 -18.5q-25 0 -43.5 18.5t-18.5 44.5z" />
<glyph unicode="&#xdd;" />
<glyph unicode="&#xde;" />
<glyph unicode="&#xdf;" horiz-adv-x="1191" d="M106 63v986q0 101 62.5 182.5t156 123.5t193.5 42q99 0 192 -42t155.5 -123.5t62.5 -182.5q0 -189 -211 -312q113 -58 184.5 -147.5t71.5 -204.5q0 -113 -69.5 -203t-172.5 -136t-213 -46q-182 0 -182 80q0 25 18.5 43t44.5 18q18 0 57 -8t60 -8q55 0 112.5 18t107 50 t81 82.5t31.5 109.5q0 49 -22 92.5t-56 74.5t-80 56t-90 40t-90 24q-25 5 -40 21t-15 40q0 19 14 37q10 18 41 25q51 12 98 31.5t94 49.5t75 75t28 98q0 66 -46.5 118t-111 77.5t-129.5 25.5q-64 0 -128.5 -25.5t-111.5 -77.5t-47 -118v-986q0 -27 -18 -45t-43 -18 q-27 0 -45.5 18t-18.5 45z" />
<glyph unicode="&#xe0;" horiz-adv-x="915" d="M63 248q0 150 106.5 256t256.5 106h143v52q0 51 -34.5 87.5t-83.5 36.5q-53 0 -103.5 -18t-84 -36.5t-44.5 -18.5q-26 0 -44.5 17.5t-18.5 43.5q0 31 35.5 58.5t85.5 43t96.5 24.5t75.5 9q102 0 174.5 -71.5t72.5 -175.5v-599q0 -26 -18.5 -44.5t-44.5 -18.5 q-19 0 -32 7.5t-19 16.5t-9.5 27.5t-3.5 28v30.5v4v3v4q-108 -121 -258 -121q-101 0 -174.5 73.5t-73.5 174.5zM188 250q0 -54 38 -88.5t93 -34.5q68 0 127 49t91 118.5t32 135.5v57h-143q-97 0 -167.5 -69.5t-70.5 -167.5zM297 1239q0 27 19 45.5t44 18.5q34 0 54 -33 q7 -11 45.5 -63.5t67 -96t28.5 -55.5q0 -26 -19 -45t-44 -19q-32 0 -48 23q-44 52 -95.5 124.5t-51.5 100.5z" />
<glyph unicode="&#xe1;" horiz-adv-x="917" d="M68 248q0 151 105.5 256.5t256.5 105.5h145v52q0 51 -35.5 87.5t-86.5 36.5q-41 0 -82 -11.5t-66.5 -25t-48.5 -25t-33 -11.5q-26 0 -44.5 17.5t-18.5 43.5q0 32 35 59t84.5 42.5t96 24.5t75.5 9q103 0 175 -71.5t72 -175.5v-599q0 -26 -17.5 -44.5t-43.5 -18.5 q-15 0 -26 3.5t-17.5 12.5t-11 15.5t-6 22t-2 21.5t0 24.5t0.5 21.5q-108 -121 -260 -121q-101 0 -174 73.5t-73 174.5zM193 250q0 -55 37.5 -89t93.5 -34q68 0 127.5 49t91.5 118.5t32 135.5v57h-145q-97 0 -167 -69.5t-70 -167.5zM301 1055q0 12 27 54t68.5 100.5 t43.5 60.5q17 33 56 33q26 0 43.5 -18t17.5 -46t-51.5 -101.5t-93.5 -123.5q-16 -23 -47 -23q-25 0 -44.5 19t-19.5 45z" />
<glyph unicode="&#xe2;" horiz-adv-x="919" d="M66 248q0 150 106 256t256 106h143v52q0 51 -34.5 87.5t-83.5 36.5q-53 0 -103.5 -18t-84 -36.5t-44.5 -18.5q-26 0 -44.5 17.5t-18.5 43.5q0 31 35.5 58.5t85.5 43t96.5 24.5t75.5 9q102 0 174.5 -71.5t72.5 -175.5v-599q0 -26 -18.5 -44.5t-44.5 -18.5q-19 0 -32 7.5 t-19 16.5t-9.5 27.5t-3.5 28v30.5v4v3v4q-108 -121 -256 -121q-103 0 -176 73t-73 175zM193 250q0 -55 37 -89t92 -34q68 0 127 49t90.5 118.5t31.5 135.5v57h-143q-97 0 -166 -69.5t-69 -167.5zM238 1055q0 23 12 41q72 92 125 174q20 33 53 33t53 -33q53 -82 125 -174 q17 -26 17 -41q0 -26 -19.5 -45t-44.5 -19q-10 0 -20.5 4.5t-22 15t-20 19t-20.5 25t-18 24t-17.5 24.5t-12.5 19q-17 -26 -26 -39t-29.5 -39.5t-39.5 -39.5t-36 -13q-25 0 -42 19t-17 45z" />
<glyph unicode="&#xe3;" horiz-adv-x="913" d="M63 250q0 149 106 254.5t257 105.5h143v52q0 51 -34.5 87.5t-85.5 36.5q-52 0 -102 -18t-83.5 -36.5t-44.5 -18.5q-26 0 -44.5 17.5t-18.5 43.5q0 32 35 59t85 42.5t96.5 24.5t76.5 9q102 0 174.5 -71.5t72.5 -175.5v-599q0 -26 -18.5 -44.5t-44.5 -18.5q-13 0 -23.5 4 t-17 8t-11.5 14.5t-7 16t-3.5 20t-1.5 19v21v18.5q-108 -121 -258 -121q-101 0 -174.5 73.5t-73.5 176.5zM188 250q0 -54 38 -88.5t93 -34.5q68 0 127 49t91 118.5t32 135.5v57h-143q-97 0 -167.5 -69.5t-70.5 -167.5zM231 1147q0 40 43 65t86 25q33 0 61 -13.5t45.5 -26.5 t25.5 -13t26 13t39 13q24 0 41.5 -19t17.5 -44q0 -39 -41.5 -64.5t-82.5 -25.5q-34 0 -62 13.5t-45 26.5t-25 13t-26 -13.5t-39 -13.5q-25 0 -44.5 19t-19.5 45z" />
<glyph unicode="&#xe4;" horiz-adv-x="915" d="M66 248q0 151 105.5 256.5t256.5 105.5h143v52q0 51 -34.5 87.5t-85.5 36.5q-52 0 -102 -18t-83.5 -36.5t-44.5 -18.5q-26 0 -44.5 17.5t-18.5 43.5q0 32 35 59t85 42.5t96.5 24.5t76.5 9q102 0 174.5 -71.5t72.5 -175.5v-599q0 -26 -18.5 -44.5t-44.5 -18.5 q-12 0 -21.5 2t-16 7.5t-11 10.5t-7.5 14.5t-5 15.5t-2.5 18t-0.5 17.5v18.5v17q-108 -121 -258 -121q-101 0 -174 73.5t-73 174.5zM193 250q0 -55 37 -89t92 -34q68 0 127 49t90.5 118.5t31.5 135.5v57h-143q-97 0 -166 -69.5t-69 -167.5zM238 1147q0 27 18 45t43 18 q27 0 45 -18t18 -45q0 -26 -18.5 -44t-44.5 -18q-25 0 -43 18t-18 44zM496 1147q0 27 18 45t45 18q26 0 45 -18t19 -45q0 -26 -19.5 -44t-44.5 -18q-26 0 -44.5 18t-18.5 44z" />
<glyph unicode="&#xe5;" horiz-adv-x="919" d="M66 248q0 150 106 256t256 106h143v52q0 51 -34.5 87.5t-83.5 36.5q-53 0 -103.5 -18t-84 -36.5t-44.5 -18.5q-26 0 -44.5 17.5t-18.5 43.5q0 31 35.5 58.5t85.5 43t96.5 24.5t75.5 9q102 0 174.5 -71.5t72.5 -175.5v-599q0 -26 -18.5 -44.5t-44.5 -18.5q-19 0 -32 7.5 t-19 16.5t-9.5 27.5t-3.5 28v30.5v4v3v4q-108 -121 -256 -121q-103 0 -176 73t-73 175zM193 250q0 -55 37.5 -89t93.5 -34q67 0 125.5 49t90 118.5t31.5 135.5v57h-143q-97 0 -166 -69.5t-69 -167.5zM268 1147q0 67 47 114.5t113 47.5q68 0 115 -47.5t47 -114.5 q0 -66 -47.5 -113t-114.5 -47q-66 0 -113 47t-47 113zM365 1147q0 -26 19 -44t44 -18q28 0 46 18t18 44q0 28 -18 45.5t-46 17.5q-25 0 -44 -18t-19 -45z" />
<glyph unicode="&#xe6;" horiz-adv-x="1531" d="M57 248q0 150 106.5 256t256.5 106h143v52q0 50 -35 86t-84 36q-53 0 -103.5 -18t-84 -35.5t-45.5 -17.5q-25 0 -43 17t-18 42q0 42 60 75.5t125 47.5t107 14q72 0 134.5 -40t93.5 -107q112 147 278 147q109 0 197 -64t134 -162t46 -206q0 -25 -18 -44t-45 -19h-570 q10 -108 81.5 -197.5t174.5 -89.5q42 0 77 14t57 34t40 40.5t35.5 34.5t34.5 14q25 0 44 -19t19 -44q0 -19 -12 -37q-46 -74 -126 -119t-169 -45q-102 0 -183.5 56.5t-137.5 152.5q-54 -96 -135.5 -152.5t-184.5 -56.5t-176.5 73.5t-73.5 174.5zM182 250q0 -56 38 -89.5 t95 -33.5q67 0 128 50.5t93.5 121.5t28.5 135l-2 39v12h-143q-97 0 -167.5 -69.5t-70.5 -165.5zM698 541h496q-19 97 -85.5 170t-160.5 73q-92 0 -160 -73t-90 -170z" />
<glyph unicode="&#xe7;" horiz-adv-x="937" d="M61 455q0 111 45.5 213.5t135.5 171.5t204 69q92 0 176 -49.5t121 -130.5q7 -14 7 -29q0 -25 -18 -44t-44 -19q-21 0 -43.5 23.5t-42 51t-61 51t-95.5 23.5q-78 0 -139.5 -53.5t-91 -128t-29.5 -149.5q0 -74 29.5 -148t91 -127t139.5 -53q44 0 79 15t56 37t38 43.5 t34 36.5t35 15q26 0 44 -18.5t18 -44.5q0 -66 -89.5 -130.5t-166.5 -76.5l-27 -84h31q78 0 134 -48t56 -122q0 -95 -81.5 -165t-178.5 -70q-53 0 -110.5 32t-57.5 80q0 26 18 45t44 19q25 0 49 -24.5t57 -24.5q44 0 88.5 32.5t44.5 75.5q0 23 -19 35t-44 12q-36 0 -75 -24.5 t-56 -24.5q-25 0 -43.5 17.5t-18.5 41.5q0 16 11.5 55.5t29 91.5t19.5 58q-136 34 -220 165.5t-84 277.5z" />
<glyph unicode="&#xe8;" horiz-adv-x="1017" d="M63 455q0 82 28 162.5t77 145.5t123.5 105.5t159.5 40.5q108 0 195.5 -64t133 -162t45.5 -206q0 -25 -18 -44t-43 -19h-571q10 -108 81.5 -197.5t176.5 -89.5q42 0 76 14t56 34t39.5 40.5t35 34.5t34.5 14q25 0 44.5 -19t19.5 -44q0 -11 -13 -37q-48 -74 -126.5 -119 t-165.5 -45q-85 0 -159.5 41t-123.5 106t-77 146t-28 162zM199 541h495q-16 96 -83 169.5t-160 73.5t-160.5 -72.5t-91.5 -170.5zM317 1239q0 27 18.5 45.5t45.5 18.5q37 0 53 -33q6 -10 43.5 -62.5t65.5 -96.5t28 -56q0 -27 -17.5 -45.5t-43.5 -18.5q-28 0 -47 23 q-38 43 -92 120t-54 105z" />
<glyph unicode="&#xe9;" horiz-adv-x="1017" d="M63 455q0 110 46.5 213t137 172t202.5 69q109 0 197 -64t133.5 -162t45.5 -206q0 -25 -18.5 -44t-44.5 -19h-569q5 -50 24.5 -100t51.5 -92.5t79 -68.5t101 -26q52 0 93 21.5t62 47t44.5 47t43.5 21.5q25 0 44.5 -19t19.5 -44q0 -11 -13 -37q-48 -75 -127 -119.5 t-167 -44.5q-84 0 -158 41t-123 106t-77 146t-28 162zM199 541h495q-19 98 -85 170.5t-160 72.5q-93 0 -160.5 -73t-89.5 -170zM315 1055q0 12 29 56t66.5 96t44.5 63q20 33 55 33q25 0 43 -19t18 -45q0 -29 -54.5 -109t-88.5 -116q-20 -23 -49 -23q-26 0 -45 19t-19 45z " />
<glyph unicode="&#xea;" horiz-adv-x="1028" d="M70 455q0 111 46 213.5t136 171.5t203 69q109 0 197 -64t133.5 -162t45.5 -206q0 -25 -18.5 -44t-44.5 -19h-571q12 -108 83.5 -197.5t174.5 -89.5q52 0 92.5 21.5t61.5 47t44.5 47t44.5 21.5q26 0 44 -19t18 -44q0 -19 -12 -37q-46 -74 -126 -119t-167 -45 q-113 0 -203 69.5t-136 172.5t-46 213zM205 541h493q-16 97 -82.5 170t-160.5 73q-93 0 -160.5 -73t-89.5 -170zM262 1055q0 20 14 41q71 87 125 174q20 33 54 33q35 0 55 -33q49 -84 123 -174q16 -19 16 -41q0 -26 -18.5 -45t-44.5 -19q-17 0 -36 13t-39.5 39.5t-29.5 39.5 t-26 39q-1 -1 -18 -27t-26 -37t-25.5 -30.5t-32 -28t-29.5 -8.5q-25 0 -43.5 19t-18.5 45z" />
<glyph unicode="&#xeb;" horiz-adv-x="1011" d="M59 455q0 111 45.5 213.5t135.5 171.5t204 69q109 0 196.5 -64t133 -162t45.5 -206q0 -25 -18 -44t-43 -19h-574q12 -109 83.5 -198t176.5 -89q50 0 90.5 21.5t62 47t45 47t42.5 21.5q27 0 45.5 -19t18.5 -44q0 -15 -11 -37q-48 -74 -127 -119t-166 -45q-114 0 -204 69.5 t-135.5 172.5t-45.5 213zM195 541h493q-16 97 -83 170t-161 73q-93 0 -160 -73t-89 -170zM250 1147q0 25 18.5 44t44.5 19q25 0 44.5 -19t19.5 -44q0 -26 -19.5 -45t-44.5 -19q-26 0 -44.5 19t-18.5 45zM510 1147q0 25 18 44t43 19q26 0 45 -19t19 -44q0 -26 -19 -45 t-45 -19q-25 0 -43 19t-18 45z" />
<glyph unicode="&#xec;" horiz-adv-x="548" d="M70 1239q0 26 18.5 45t44.5 19q33 0 53 -33q7 -11 45.5 -63.5t67.5 -96t29 -55.5q0 -26 -19.5 -45t-44.5 -19q-28 0 -47 23q-39 44 -93 120.5t-54 104.5zM135 63v785q0 26 18.5 43.5t45.5 17.5q25 0 44 -17.5t19 -43.5v-785q0 -26 -19 -43.5t-44 -17.5q-27 0 -45.5 17.5 t-18.5 43.5z" />
<glyph unicode="&#xed;" horiz-adv-x="548" d="M70 1055q0 12 29 56t65.5 95t44.5 64q20 33 55 33q25 0 44.5 -19t19.5 -45q0 -28 -51.5 -99.5t-96.5 -125.5q-23 -23 -47 -23q-26 0 -44.5 19t-18.5 45zM135 63v785q0 26 18.5 43.5t45.5 17.5q25 0 44 -17.5t19 -43.5v-785q0 -26 -19 -43.5t-44 -17.5q-27 0 -45.5 17.5 t-18.5 43.5z" />
<glyph unicode="&#xee;" horiz-adv-x="618" d="M23 1055q0 24 14 41q35 41 123 174q23 33 55 33q38 0 55 -33q70 -112 121 -174q17 -17 17 -41q0 -26 -19 -45t-45 -19q-11 0 -24.5 7.5t-23.5 17t-24.5 27t-21.5 27.5t-20 29.5l-15 22.5l-15 -22.5t-20 -29.5t-21.5 -27.5t-24.5 -27t-23.5 -17t-24.5 -7.5q-26 0 -44.5 19 t-18.5 45zM154 63v785q0 26 17.5 43.5t43.5 17.5t43.5 -17.5t17.5 -43.5v-785q0 -26 -17.5 -43.5t-43.5 -17.5t-43.5 17.5t-17.5 43.5z" />
<glyph unicode="&#xef;" horiz-adv-x="612" d="M20 1147q0 25 19 44t45 19q25 0 44 -19t19 -44q0 -26 -19 -45t-44 -19q-26 0 -45 19t-19 45zM152 63v785q0 26 17 43.5t42 17.5q28 0 45.5 -17.5t17.5 -43.5v-785q0 -26 -17.5 -43.5t-45.5 -17.5q-25 0 -42 17.5t-17 43.5zM279 1147q0 25 18.5 44t44.5 19t43.5 -19 t17.5 -44q0 -27 -17.5 -45.5t-43.5 -18.5t-44.5 19t-18.5 45z" />
<glyph unicode="&#xf0;" />
<glyph unicode="&#xf1;" horiz-adv-x="954" d="M106 63v785q0 26 18.5 43.5t45.5 17.5q61 0 61 -80q118 80 261 80q102 0 174.5 -71.5t72.5 -175.5v-599q0 -26 -18.5 -44.5t-44.5 -18.5q-25 0 -44.5 18.5t-19.5 44.5v599q0 51 -34.5 87.5t-85.5 36.5q-75 0 -144.5 -33.5t-116.5 -93.5v-596q0 -26 -18 -43.5t-43 -17.5 q-27 0 -45.5 17.5t-18.5 43.5zM229 1147q0 40 43 65t86 25q32 0 60 -13.5t45 -26.5t24 -13q8 0 27.5 13t38.5 13q25 0 43 -18t18 -45q0 -39 -42 -63.5t-85 -24.5q-33 0 -61 12.5t-44.5 25.5t-23.5 13q-8 0 -26 -13.5t-39 -13.5q-25 0 -44.5 19t-19.5 45z" />
<glyph unicode="&#xf2;" horiz-adv-x="1044" d="M72 455q0 111 46 213.5t136 171.5t203 69t203 -69t136 -171.5t46 -213.5q0 -110 -46 -213t-136 -172.5t-203 -69.5q-85 0 -159 41t-122.5 106.5t-76 146t-27.5 161.5zM199 455q0 -55 17.5 -112t49.5 -105.5t82 -79.5t109 -31t109 31t82 79.5t49.5 105.5t17.5 112 t-17.5 112.5t-49.5 106t-82 79.5t-109 31t-109 -31t-82 -79.5t-49.5 -106t-17.5 -112.5zM330 1239q0 26 18 45t43 19q35 0 55 -33q6 -10 43.5 -62.5t66 -96.5t28.5 -56q0 -26 -18 -45t-44 -19q-29 0 -49 23q-34 36 -88.5 116t-54.5 109z" />
<glyph unicode="&#xf3;" horiz-adv-x="1044" d="M72 455q0 111 46 213.5t136 171.5t203 69t203 -69t136 -171.5t46 -213.5q0 -110 -46 -213t-136 -172.5t-203 -69.5q-85 0 -159 41t-122.5 106.5t-76 146t-27.5 161.5zM199 455q0 -55 17.5 -112t49.5 -105.5t82 -79.5t109 -31t109 31t82 79.5t49.5 105.5t17.5 112 t-17.5 112.5t-49.5 106t-82 79.5t-109 31t-109 -31t-82 -79.5t-49.5 -106t-17.5 -112.5zM330 1055q0 8 11.5 28.5t30 48.5t36 53.5t36 51t23.5 33.5q17 33 55 33q26 0 44 -19t18 -45q0 -28 -51.5 -102t-92.5 -123q-23 -23 -49 -23q-25 0 -43 19t-18 45z" />
<glyph unicode="&#xf4;" horiz-adv-x="1048" d="M74 455q0 111 46 213.5t136 171.5t201 69q114 0 204 -69t135.5 -171.5t45.5 -213.5q0 -110 -45.5 -213t-135.5 -172.5t-204 -69.5q-111 0 -201 70t-136 173t-46 212zM199 455q0 -74 29.5 -148t90.5 -127t138 -53q78 0 139 53t90 126.5t29 148.5q0 56 -17.5 113t-49 105.5 t-81.5 79.5t-110 31q-58 0 -108 -31t-82 -79.5t-50 -106t-18 -112.5zM266 1055q0 21 13 41q51 59 124 174q18 33 54 33q31 0 57 -33q50 -87 121 -174q16 -16 16 -41q0 -26 -18.5 -45t-44.5 -19q-13 0 -28 9t-30.5 26.5t-26.5 31.5t-26.5 36t-19.5 28q-56 -87 -86 -112 q-23 -19 -41 -19q-27 0 -45.5 18.5t-18.5 45.5z" />
<glyph unicode="&#xf5;" horiz-adv-x="1036" d="M66 455q0 111 46 213.5t136 171.5t203 69q112 0 202 -69t136.5 -172t46.5 -213t-46.5 -213t-137 -172.5t-201.5 -69.5q-85 0 -159 41t-122.5 106.5t-76 146t-27.5 161.5zM193 455q0 -74 29.5 -148t90.5 -127t138 -53q59 0 109 31t81 79.5t48.5 105.5t17.5 112 q0 56 -17.5 113t-48.5 105.5t-81 79.5t-109 31q-58 0 -108 -31t-82 -79.5t-50 -106t-18 -112.5zM256 1147q0 40 43 65t86 25q34 0 61.5 -13.5t44.5 -26.5t25 -13t26.5 13t39.5 13q25 0 44 -18t19 -45q0 -39 -43.5 -63.5t-85.5 -24.5q-33 0 -60.5 12.5t-45 25.5t-25.5 13 t-26.5 -13.5t-39.5 -13.5q-25 0 -44 19t-19 45z" />
<glyph unicode="&#xf6;" horiz-adv-x="1036" d="M66 455q0 111 46 213.5t136 171.5t203 69q111 0 201 -69t136 -171.5t46 -213.5q0 -110 -46 -213t-136 -172.5t-203 -69.5q-111 0 -201 70t-136 173t-46 212zM188 455q0 -74 30.5 -148t92.5 -127t140 -53q58 0 107.5 31t80.5 79.5t48.5 105.5t17.5 112q0 56 -17.5 113 t-48.5 105.5t-81 79.5t-109 31q-77 0 -138.5 -52.5t-92 -127t-30.5 -149.5zM256 1147q0 25 19 44t44 19q26 0 45 -19t19 -44q0 -26 -19 -45t-45 -19q-25 0 -44 19t-19 45zM516 1147q0 25 18 44t44 19t43.5 -19t17.5 -44q0 -27 -17.5 -45.5t-43.5 -18.5t-44 19t-18 45z" />
<glyph unicode="&#xf7;" horiz-adv-x="784" d="M47 455q0 26 19 44.5t45 18.5h483q26 0 44.5 -18.5t18.5 -44.5q0 -25 -18.5 -44.5t-44.5 -19.5h-483q-26 0 -45 19.5t-19 44.5zM283 215q0 28 20.5 49t50.5 21q28 0 49 -21t21 -49q0 -29 -21 -51.5t-49 -22.5q-30 0 -50.5 22t-20.5 52zM283 698q0 30 20.5 50t50.5 20 q28 0 49 -20.5t21 -49.5t-21 -49t-49 -20q-31 0 -51 20t-20 49z" />
<glyph unicode="&#xf8;" horiz-adv-x="1075" d="M82 455q0 111 46 213.5t136 171.5t203 69q97 0 176 -49q25 49 68 49q25 0 42 -17.5t17 -43.5q0 -19 -33 -74q115 -140 115 -319q0 -110 -46 -213t-136 -172.5t-203 -69.5q-95 0 -176 49q-10 -16 -17 -25t-20.5 -16.5t-30.5 -7.5q-26 0 -43.5 18.5t-17.5 44.5q0 6 2 13.5 t4 12.5t6.5 13t7 11.5t8.5 11.5t7 10q-115 136 -115 320zM207 455q0 -113 59 -205l312 502q-49 32 -111 32q-58 0 -108.5 -31t-82.5 -79.5t-50.5 -106t-18.5 -112.5zM356 158q44 -31 111 -31q59 0 109 31t82 79.5t49.5 105.5t17.5 112q0 113 -57 204z" />
<glyph unicode="&#xf9;" horiz-adv-x="937" d="M88 248v602q0 25 19 44t45 19q25 0 44 -19t19 -44v-602q0 -50 35 -85.5t86 -35.5q75 0 144.5 33.5t113.5 91.5v596q0 26 19 43.5t44 17.5q27 0 45.5 -17.5t18.5 -43.5v-785q0 -26 -19 -44.5t-45 -18.5q-63 0 -63 82q-114 -82 -256 -82q-103 0 -176.5 73.5t-73.5 174.5z M276 1241q0 26 19.5 44t44.5 18q35 0 55 -33q7 -13 43.5 -63t66.5 -94.5t30 -57.5q0 -26 -19.5 -45t-44.5 -19q-29 0 -49 23q-43 51 -94.5 124.5t-51.5 102.5z" />
<glyph unicode="&#xfa;" horiz-adv-x="952" d="M102 248v602q0 25 18.5 44t43.5 19q26 0 44.5 -19t18.5 -44v-602q0 -50 36 -85.5t87 -35.5q73 0 142 33t116 92v596q0 26 18.5 43.5t45.5 17.5q25 0 44 -17.5t19 -43.5v-785q0 -26 -19 -44.5t-44 -18.5q-64 0 -64 82q-118 -82 -258 -82q-101 0 -174.5 73.5t-73.5 174.5z M291 1055q0 13 28 57t65.5 96t43.5 62q20 33 53 33q28 0 46 -18t18 -44q0 -46 -144 -227q-23 -23 -47 -23q-27 0 -45 18.5t-18 45.5z" />
<glyph unicode="&#xfb;" horiz-adv-x="956" d="M102 248v602q0 25 18.5 44t43.5 19q27 0 45 -19t18 -44v-602q0 -50 36 -85.5t87 -35.5q75 0 143.5 33t114.5 92v596q0 26 18.5 43.5t45.5 17.5q25 0 44 -17.5t19 -43.5v-785q0 -26 -19 -44.5t-44 -18.5q-64 0 -64 82q-114 -82 -256 -82q-103 0 -176.5 73.5t-73.5 174.5z M225 1055q0 21 17 41q75 95 123 174q20 33 55 33q33 0 53 -33q51 -85 125 -174q12 -18 12 -41q0 -27 -17.5 -45.5t-43.5 -18.5q-10 0 -21 5t-22 15t-20 19.5t-20 24.5t-17.5 24.5t-16.5 24t-12 18.5q-5 -6 -25.5 -35t-34 -46t-34.5 -33.5t-37 -16.5q-26 0 -45 19t-19 45z " />
<glyph unicode="&#xfc;" horiz-adv-x="952" d="M104 248v602q0 25 18 44t44 19t43.5 -19t17.5 -44v-602q0 -49 36.5 -85t86.5 -36q75 0 144 33t116 92v596q0 26 18 43.5t44 17.5t44.5 -17.5t18.5 -43.5v-785q0 -26 -18.5 -44.5t-44.5 -18.5q-62 0 -62 82q-118 -82 -258 -82q-102 0 -175 73t-73 175zM227 1147 q0 25 19 44t45 19q25 0 44 -19t19 -44q0 -26 -19 -45t-44 -19q-26 0 -45 19t-19 45zM485 1147q0 25 18.5 44t43.5 19q26 0 44.5 -19t18.5 -44q0 -26 -18.5 -45t-44.5 -19q-25 0 -43.5 19t-18.5 45z" />
<glyph unicode="&#xfd;" />
<glyph unicode="&#xfe;" />
<glyph unicode="&#xff;" />
<glyph unicode="&#x152;" horiz-adv-x="1703" d="M39 696q0 90 21 186t64.5 187.5t103.5 164t147 117t186 44.5t191 -47q6 21 23 34t38 13h692q25 0 44.5 -18t19.5 -44t-19.5 -44.5t-44.5 -18.5h-628v-475h444q25 0 43 -17.5t18 -42.5q0 -27 -18 -45t-43 -18h-444v-545h628q25 0 44.5 -19t19.5 -45t-19.5 -43.5 t-44.5 -17.5h-692q-44 0 -61 45q-86 -47 -191 -47q-83 0 -157.5 31t-131 84.5t-101.5 122.5t-73.5 147t-43.5 157.5t-15 153.5zM162 696q0 -68 15.5 -144t48.5 -152t79 -136.5t113 -98.5t143 -38q110 0 189 70v1001q-83 70 -189 70q-76 0 -143 -38.5t-113 -99.5t-79 -137.5 t-48.5 -152.5t-15.5 -144z" />
<glyph unicode="&#x153;" horiz-adv-x="1685" d="M72 455q0 111 46 213.5t136 171.5t203 69q106 0 187.5 -56.5t135.5 -154.5q115 211 322 211q109 0 197 -64t134 -162t46 -206q0 -25 -19.5 -44t-44.5 -19h-569q5 -50 24.5 -100t51.5 -92.5t79 -68.5t101 -26q40 0 74.5 14t57 34t41.5 40.5t37 34.5t34 14q25 0 42 -18 t17 -45q0 -17 -10 -37q-48 -74 -127 -119t-166 -45q-205 0 -322 211q-54 -98 -135.5 -154.5t-187.5 -56.5q-85 0 -159 41t-122.5 106.5t-76 146t-27.5 161.5zM199 455q0 -74 29.5 -148t90.5 -127t138 -53q78 0 139.5 53t91 127t29.5 148q0 75 -29.5 149t-91 127t-139.5 53 q-58 0 -108 -31t-82 -79.5t-50 -106t-18 -112.5zM852 541h496q-19 97 -85.5 170t-160.5 73q-93 0 -160.5 -73t-89.5 -170z" />
<glyph unicode="&#x178;" />
<glyph unicode="&#x2c6;" horiz-adv-x="653" d="M94 1055q0 15 17 41q71 90 122 174q20 33 56 33q33 0 53 -33q53 -82 125 -174q14 -21 14 -41q0 -26 -18 -45t-43 -19q-48 0 -126 123q-3 6 -5 8q-3 -4 -13 -19t-16.5 -24.5t-17.5 -24.5t-20.5 -24.5t-20.5 -19t-22 -14.5t-21 -5q-25 0 -44.5 19t-19.5 45z" />
<glyph unicode="&#x2dc;" horiz-adv-x="659" d="M98 1147q0 40 43.5 65t85.5 25q34 0 61.5 -13.5t44.5 -26.5t25 -13t26.5 13t39.5 13q25 0 44 -19t19 -44q0 -39 -43.5 -64.5t-85.5 -25.5q-33 0 -60.5 13.5t-45 26.5t-25.5 13t-26 -13.5t-39 -13.5q-25 0 -44.5 19t-19.5 45z" />
<glyph unicode="&#x2000;" horiz-adv-x="898" />
<glyph unicode="&#x2001;" horiz-adv-x="1796" />
<glyph unicode="&#x2002;" horiz-adv-x="898" />
<glyph unicode="&#x2003;" horiz-adv-x="1796" />
<glyph unicode="&#x2004;" horiz-adv-x="598" />
<glyph unicode="&#x2005;" horiz-adv-x="449" />
<glyph unicode="&#x2006;" horiz-adv-x="299" />
<glyph unicode="&#x2007;" horiz-adv-x="299" />
<glyph unicode="&#x2008;" horiz-adv-x="224" />
<glyph unicode="&#x2009;" horiz-adv-x="359" />
<glyph unicode="&#x200a;" horiz-adv-x="99" />
<glyph unicode="&#x2010;" horiz-adv-x="892" d="M102 455q0 26 18.5 44.5t43.5 18.5h485q26 0 45 -18.5t19 -44.5q0 -25 -19 -44.5t-45 -19.5h-485q-25 0 -43.5 19.5t-18.5 44.5z" />
<glyph unicode="&#x2011;" horiz-adv-x="892" d="M102 455q0 26 18.5 44.5t43.5 18.5h485q26 0 45 -18.5t19 -44.5q0 -25 -19 -44.5t-45 -19.5h-485q-25 0 -43.5 19.5t-18.5 44.5z" />
<glyph unicode="&#x2012;" horiz-adv-x="892" d="M102 455q0 26 18.5 44.5t43.5 18.5h485q26 0 45 -18.5t19 -44.5q0 -25 -19 -44.5t-45 -19.5h-485q-25 0 -43.5 19.5t-18.5 44.5z" />
<glyph unicode="&#x2013;" horiz-adv-x="892" d="M102 455q0 26 18.5 44.5t43.5 18.5h485q26 0 45 -18.5t19 -44.5q0 -25 -19 -44.5t-45 -19.5h-485q-25 0 -43.5 19.5t-18.5 44.5z" />
<glyph unicode="&#x2014;" horiz-adv-x="1486" d="M102 455q0 26 18.5 44.5t43.5 18.5h1093q27 0 45.5 -18t18.5 -45q0 -25 -18.5 -44.5t-45.5 -19.5h-1093q-25 0 -43.5 19.5t-18.5 44.5z" />
<glyph unicode="&#x2018;" horiz-adv-x="649" d="M76 1333q0 26 18.5 45t44.5 19q39 0 56 -39q86 -165 180 -283q16 -19 16 -41q0 -26 -18.5 -44.5t-44.5 -18.5q-30 0 -49 22q-45 52 -124 175t-79 165z" />
<glyph unicode="&#x2019;" horiz-adv-x="649" d="M115 1034q0 20 14 41q97 122 178 283q20 39 60 39q25 0 44 -19t19 -45q0 -42 -80.5 -166t-126.5 -174q-18 -22 -47 -22q-25 0 -43 18.5t-18 44.5z" />
<glyph unicode="&#x201a;" />
<glyph unicode="&#x201c;" horiz-adv-x="958" d="M94 1333q0 26 19 45t45 19q39 0 59 -39q84 -168 176 -283q17 -20 17 -41q0 -26 -19 -44.5t-45 -18.5q-25 0 -47 22q-45 49 -125 173.5t-80 166.5zM397 1333q0 26 17.5 45t42.5 19q39 0 59 -39q82 -164 180 -283q13 -20 13 -41q0 -26 -18.5 -44.5t-43.5 -18.5 q-29 0 -47 22q-45 52 -124 175t-79 165z" />
<glyph unicode="&#x201d;" horiz-adv-x="958" d="M123 1034q0 17 16 41q107 133 180 283q17 39 56 39q26 0 44.5 -19t18.5 -45q0 -42 -80 -166.5t-125 -173.5q-22 -22 -47 -22t-44 18.5t-19 44.5zM426 1034q0 23 12 41q94 112 180 283q20 39 58 39q25 0 44 -19t19 -45q0 -42 -78.5 -165.5t-123.5 -174.5q-22 -22 -52 -22 q-25 0 -42 18.5t-17 44.5z" />
<glyph unicode="&#x201e;" />
<glyph unicode="&#x2022;" />
<glyph unicode="&#x2026;" />
<glyph unicode="&#x202f;" horiz-adv-x="359" />
<glyph unicode="&#x2039;" />
<glyph unicode="&#x203a;" />
<glyph unicode="&#x205f;" horiz-adv-x="449" />
<glyph unicode="&#x20ac;" horiz-adv-x="1286" d="M29 547q0 21 10.5 35.5t25.5 21t37.5 9t40 1.5t40.5 -2.5t32 -1.5v176q-8 0 -38.5 -2t-51 -1.5t-45.5 5.5t-38 20t-13 40t13.5 40.5t38.5 20t46 5t51 -2t39 -2.5q23 208 180 348t365 140q47 0 129 -19t157.5 -59.5t75.5 -87.5q0 -26 -18.5 -45t-44.5 -19 q-10 0 -52.5 25.5t-109.5 51.5t-137 26q-156 0 -275.5 -102.5t-142.5 -258.5h533q25 0 44 -17.5t19 -43.5t-19 -44t-44 -18h-537v-176h532q26 0 45 -18t19 -45q0 -25 -19.5 -43.5t-44.5 -18.5h-528q23 -155 142.5 -256.5t275.5 -101.5q55 0 109.5 16t88.5 35t62.5 35 t38.5 16q26 0 44.5 -18.5t18.5 -44.5q0 -47 -75.5 -87.5t-157.5 -59.5t-129 -19q-208 0 -364.5 139.5t-178.5 345.5q-8 0 -39.5 -2t-52 -1.5t-46 5.5t-39 20t-13.5 40z" />
<glyph unicode="&#x2122;" horiz-adv-x="649" d="M35 1333q0 12 9.5 22.5t21.5 10.5h229q13 0 23 -10.5t10 -22.5q0 -14 -9 -22t-25 -10t-30 -1.5t-31 2t-22 1.5v-269q0 -13 -8.5 -21.5t-22.5 -8.5q-12 0 -21 8.5t-9 21.5v269q-4 0 -21 -1.5t-31 -2t-29.5 1.5t-24.5 10t-9 22zM373 1034v299q0 13 8.5 23t21.5 10 q16 0 25 -14l107 -150l104 150q19 14 27 14q12 0 21 -10.5t9 -22.5v-299q0 -13 -9 -21.5t-21 -8.5q-13 0 -23 8.5t-10 21.5v201q-3 -4 -17 -27t-25.5 -40.5t-27.5 -33.5t-28 -16q-13 0 -29.5 16t-28.5 33t-26.5 41t-16.5 27v-201q0 -13 -9.5 -21.5t-21.5 -8.5q-13 0 -21.5 8 t-8.5 22z" />
<glyph unicode="&#xe000;" horiz-adv-x="911" d="M0 0v911h911v-911h-911z" />
<glyph unicode="&#xfb01;" horiz-adv-x="825" />
<glyph unicode="&#xfb02;" horiz-adv-x="962" />
<glyph unicode="&#xfb03;" horiz-adv-x="1124" />
<glyph unicode="&#xfb04;" horiz-adv-x="1261" />
</font>
</defs></svg>

After

Width:  |  Height:  |  Size: 76 KiB

Binary file not shown.

Binary file not shown.

8
assets/html2opendocument/.gitignore vendored Normal file
View file

@ -0,0 +1,8 @@
composer.phar
composer.lock
/vendor/
.idea
# Commit your application's lock file http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file
# You may choose to ignore a library lock file http://getcomposer.org/doc/02-libraries.md#lock-file
# composer.lock

View file

@ -0,0 +1,195 @@
<?php
/**
* @link https://github.com/CatoTH/html2opendocument
* @author Tobias Hößl <tobias@hoessl.eu>
* @license https://opensource.org/licenses/MIT
*/
namespace CatoTH\HTML2OpenDocument;
abstract class Base
{
const NS_OFFICE = 'urn:oasis:names:tc:opendocument:xmlns:office:1.0';
const NS_TEXT = 'urn:oasis:names:tc:opendocument:xmlns:text:1.0';
const NS_FO = 'urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0';
const NS_STYLE = 'urn:oasis:names:tc:opendocument:xmlns:style:1.0';
const NS_TABLE = 'urn:oasis:names:tc:opendocument:xmlns:table:1.0';
const NS_CALCTEXT = 'urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0';
const NS_XLINK = 'http://www.w3.org/1999/xlink';
/** @var \DOMDocument */
protected $doc = null;
/** @var bool */
protected $DEBUG = false;
protected $trustHtml = false;
/** @var string */
protected $tmpPath = '/tmp/';
/** @var \ZipArchive */
private $zip;
/** @var @string */
private $tmpZipFile;
/**
* @param string $templateFile
* @param array $options
* @throws \Exception
*/
public function __construct($templateFile, $options = [])
{
$template = file_get_contents($templateFile);
if (isset($options['tmpPath']) && $options['tmpPath'] != '') {
$this->tmpPath = $options['tmpPath'];
}
if (isset($options['trustHtml'])) {
$this->trustHtml = ($options['trustHtml'] == true);
}
if(!file_exists($this->tmpPath)){
mkdir($this->tmpPath);
}
$this->tmpZipFile = $this->tmpPath . uniqid('zip-');
file_put_contents($this->tmpZipFile, $template);
$this->zip = new \ZipArchive();
if ($this->zip->open($this->tmpZipFile) !== true) {
throw new \Exception("cannot open <$this->tmpZipFile>\n");
}
$content = $this->zip->getFromName('content.xml');
$this->doc = new \DOMDocument();
$this->doc->loadXML($content);
}
/**
* @return string
*/
public function finishAndGetDocument()
{
$content = $this->create();
$this->zip->deleteName('content.xml');
$this->zip->addFromString('content.xml', $content);
$this->zip->close();
$content = file_get_contents($this->tmpZipFile);
unlink($this->tmpZipFile);
return $content;
}
/**
* @return string
*/
abstract function create();
/**
* @param string $html
* @param array $config
* @return string
*/
protected function purifyHTML($html, $config)
{
$configInstance = \HTMLPurifier_Config::create($config);
$configInstance->autoFinalize = false;
$purifier = \HTMLPurifier::instance($configInstance);
$purifier->config->set('Cache.SerializerPath', $this->tmpPath);
return $purifier->purify($html);
return $html;
}
/**
* @param string $html
* @return \DOMNode
*/
public function html2DOM($html)
{
if (!$this->trustHtml) {
$html = $this->purifyHTML(
$html,
[
'HTML.Doctype' => 'HTML 4.01 Transitional',
'HTML.Trusted' => true,
'CSS.Trusted' => true,
]
);
}
$src_doc = new \DOMDocument();
$src_doc->loadHTML('<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
</head><body>' . $html . "</body></html>");
$bodies = $src_doc->getElementsByTagName('body');
return $bodies->item(0);
}
/***
* @param bool $debug
*/
public function setDebug($debug)
{
$this->DEBUG = $debug;
}
/**
*/
public function debugOutput()
{
$this->doc->preserveWhiteSpace = false;
$this->doc->formatOutput = true;
echo htmlentities($this->doc->saveXML(), ENT_COMPAT, 'UTF-8');
die();
}
/**
* @param string $styleName
* @param string $family
* @param string $element
* @param string[] $attributes
*/
protected function appendStyleNode($styleName, $family, $element, $attributes)
{
$node = $this->doc->createElementNS(static::NS_STYLE, 'style');
$node->setAttribute('style:name', $styleName);
$node->setAttribute('style:family', $family);
$style = $this->doc->createElementNS(static::NS_STYLE, $element);
foreach ($attributes as $att_name => $att_val) {
$style->setAttribute($att_name, $att_val);
}
$node->appendChild($style);
foreach ($this->doc->getElementsByTagNameNS(static::NS_OFFICE, 'automatic-styles') as $element) {
/** @var \DOMElement $element */
$element->appendChild($node);
}
}
/**
* @param string $styleName
* @param array $attributes
*/
protected function appendTextStyleNode($styleName, $attributes)
{
$this->appendStyleNode($styleName, 'text', 'text-properties', $attributes);
}
/**
* @param string $styleName
* @param array $attributes
*/
protected function appendParagraphStyleNode($styleName, $attributes)
{
$this->appendStyleNode($styleName, 'paragraph', 'paragraph-properties', $attributes);
}
}

View file

@ -0,0 +1,21 @@
The MIT License (MIT)
Copyright (c) 2016 Tobias Hößl
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View file

@ -0,0 +1,94 @@
This is a simple PHP-library to create create OpenDocument Text- and Spreadsheet-files (ODT / ODS) from HTML-formatted text.
It does not support formulae / calculations in spreadsheets. The focus lies on formatted text.
## Example Scripts
A demo script for the OpenDocument Text converter using the default template:
```php
require_once(__DIR__ . DIRECTORY_SEPARATOR . 'vendor' . DIRECTORY_SEPARATOR . 'autoload.php');
$html = '<p>This is a demo for the converter.</p>
<p>The converter supports the following styles:</p>
<ul>
<li>Lists (UL / OL)</li>
<li><strong>STRONG</strong></li>
<li><u>U</u> (underlined)</li>
<li><s>S</s> (strike-through)</li>
<li><em>EM</em> (emphasis / italic)</li>
<li><ins>INS</ins> (Inserted text)</li>
<li><del>DEL</del> (Deleted text)</li>
<li>Line<br>breaks with BR</li>
</ul>
<blockquote>You can also use BLOCKQUOTE, though it lacks specific styling for now</blockquote>';
$html2 = '<p>You might be interested<br>in the fact that this converter<br>
also supports<br>line numbering<br>for selected paragraphs</p>
<p>Dummy Line<br>Dummy Line<br>Dummy Line<br>
Dummy Line<br>Dummy Line</p>';
$odt = new \CatoTH\HTML2OpenDocument\Text();
$odt->addHtmlTextBlock('<h1>Test Page</h1>');
$odt->addHtmlTextBlock($html, false);
$odt->addHtmlTextBlock('<h2>Line Numbering</h2>');
$odt->addHtmlTextBlock($html2, true);
$odt->finishAndOutputOdt('demo.odt');
```
A demo script for the OpenDocument Spreadsheet converter using the default template:
```php
use CatoTH\HTML2OpenDocument\Spreadsheet;
require_once(__DIR__ . DIRECTORY_SEPARATOR . 'vendor' . DIRECTORY_SEPARATOR . 'autoload.php');
$ods = new \CatoTH\HTML2OpenDocument\Spreadsheet();
// Plain text
$ods->setCell(0, 0, Spreadsheet::TYPE_TEXT, 'Plain text with native formatting');
$ods->setCellStyle(0, 0, [], ['fo:font-weight' => 'bold']);
// Print a number as an actual number, just a little bit bigger
$ods->setCell(1, 0, Spreadsheet::TYPE_NUMBER, 23);
$ods->setCellStyle(1, 0, [], [
'fo:font-size' => '16pt',
'fo:font-weight' => 'bold',
]);
$ods->setMinRowHeight(1, 1.5);
// Print a number as text
$ods->setCell(2, 0, Spreadsheet::TYPE_TEXT, '42');
// Draw a border around two of the cells
$ods->drawBorder(1, 0, 2, 0, 1);
// Now we use HTML, and we need a bit more space for that
$html = '<p>The converter supports the following styles:</p>
<ul>
<li><strong>STRONG</strong></li>
<li><u>U</u> (underlined)</li>
<li><s>S</s> (strike-through)</li>
<li><em>EM</em> (emphasis / italic)</li>
<li><ins>Inserted text</ins></li>
<li><del>Deleted text</del></li>
<li>Line<br>breaks with BR</li>
<li>Lists (UL / OL) cannot be displayed as lists, but will be flattened to paragraphs</li>
</ul>
<blockquote>You can also use BLOCKQUOTE, though it lacks specific styling for now</blockquote>';
$ods->setMinRowHeight(3, 10);
$ods->setColumnWidth(1, 20);
$ods->setCell(3, 1, Spreadsheet::TYPE_HTML, $html);
$ods->finishAndOutputOds('demo.ods');
```
## License
This library is licensed under the [MIT license](http://opensource.org/licenses/MIT)

View file

@ -0,0 +1,694 @@
<?php
/**
* @link https://github.com/CatoTH/html2opendocument
* @author Tobias Hößl <tobias@hoessl.eu>
* @license https://opensource.org/licenses/MIT
*/
namespace CatoTH\HTML2OpenDocument;
class Spreadsheet extends Base
{
const TYPE_TEXT = 0;
const TYPE_NUMBER = 1;
const TYPE_HTML = 2;
const TYPE_LINK = 3;
const FORMAT_LINEBREAK = 0;
const FORMAT_BOLD = 1;
const FORMAT_ITALIC = 2;
const FORMAT_UNDERLINED = 3;
const FORMAT_STRIKE = 4;
const FORMAT_INS = 5;
const FORMAT_DEL = 6;
const FORMAT_LINK = 7;
const FORMAT_INDENTED = 8;
const FORMAT_SUP = 9;
const FORMAT_SUB = 10;
public static $FORMAT_NAMES = [
0 => 'linebreak',
1 => 'bold',
2 => 'italic',
3 => 'underlined',
4 => 'strike',
5 => 'ins',
6 => 'del',
7 => 'link',
8 => 'indented',
9 => 'sup',
10 => 'sub',
];
/** @var \DOMDocument */
protected $doc = null;
/** @var \DOMElement */
protected $domTable;
protected $matrix = [];
protected $matrixRows = 0;
protected $matrixCols = 0;
protected $matrixColWidths = [];
protected $matrixRowHeights = [];
protected $rowNodes = [];
protected $cellNodeMatrix = [];
protected $cellStylesMatrix = [];
protected $classCache = [];
/**
* @param array $options
* @throws \Exception
*/
public function __construct($options = [])
{
if (isset($options['templateFile']) && $options['templateFile'] != '') {
$templateFile = $options['templateFile'];
} else {
$templateFile = __DIR__ . DIRECTORY_SEPARATOR . 'default-template.ods';
}
parent::__construct($templateFile, $options);
}
/**
* @param string $filename
*/
public function finishAndOutputOds($filename = '')
{
header('Content-Type: application/vnd.oasis.opendocument.spreadsheet');
if ($filename != '') {
header('Content-disposition: attachment;filename="' . addslashes($filename) . '"');
}
echo $this->finishAndGetDocument();
die();
}
/**
* @param string $styleName
* @param array $cellAttributes
* @param array $textAttributes
*/
protected function appendCellStyleNode($styleName, $cellAttributes, $textAttributes)
{
$node = $this->doc->createElementNS(static::NS_STYLE, "style");
$node->setAttribute("style:name", $styleName);
$node->setAttribute("style:family", 'table-cell');
$node->setAttribute("style:parent-style-name", "Default");
if (count($cellAttributes) > 0) {
$style = $this->doc->createElementNS(static::NS_STYLE, 'table-cell-properties');
foreach ($cellAttributes as $att_name => $att_val) {
$style->setAttribute($att_name, $att_val);
}
$node->appendChild($style);
}
if (count($textAttributes) > 0) {
$style = $this->doc->createElementNS(static::NS_STYLE, 'text-properties');
foreach ($textAttributes as $att_name => $att_val) {
$style->setAttribute($att_name, $att_val);
}
$node->appendChild($style);
}
foreach ($this->doc->getElementsByTagNameNS(static::NS_OFFICE, 'automatic-styles') as $element) {
/** @var \DOMElement $element */
$element->appendChild($node);
}
}
/**
* @param string $styleName
* @param array $attributes
*/
protected function appendColStyleNode($styleName, $attributes)
{
$this->appendStyleNode($styleName, 'table-column', 'table-column-properties', $attributes);
}
/**
* @param string $styleName
* @param array $attributes
*/
protected function appendRowStyleNode($styleName, $attributes)
{
$this->appendStyleNode($styleName, 'table-row', 'table-row-properties', $attributes);
}
/**
* @param int $row
*/
protected function initRow($row)
{
if (!isset($this->matrix[$row])) {
$this->matrix[$row] = [];
}
if ($row > $this->matrixRows) {
$this->matrixRows = $row;
}
}
/**
* @param int $row
* @param string $col
* @param int $contentType
* @param string $content
* @param null|string $cssClass
* @param null|string $styles
*/
public function setCell($row, $col, $contentType, $content, $cssClass = null, $styles = null)
{
$this->initRow($row);
if ($col > $this->matrixCols) {
$this->matrixCols = $col;
}
$this->matrix[$row][$col] = [
'type' => $contentType,
'content' => $content,
'class' => $cssClass,
'styles' => $styles,
];
}
/**
* @param int $col
* @param float $widthInCm
*/
public function setColumnWidth($col, $widthInCm)
{
$this->matrixColWidths[$col] = $widthInCm;
}
/**
* @param int $row
* @param float $minHeightInCm
*/
public function setMinRowHeight($row, $minHeightInCm)
{
$this->initRow($row);
$rowHeight = (isset($this->matrixRowHeights[$row]) ? $this->matrixRowHeights[$row] : 1);
if ($minHeightInCm > $rowHeight) {
$rowHeight = $minHeightInCm;
}
$this->matrixRowHeights[$row] = $rowHeight;
}
/**
* @return \DOMElement
* @throws \Exception
*/
protected function getCleanDomTable()
{
$domTables = $this->doc->getElementsByTagNameNS(static::NS_TABLE, 'table');
if ($domTables->length != 1) {
throw new \Exception('Could not parse ODS template');
}
$this->domTable = $domTables->item(0);
$children = $this->domTable->childNodes;
for ($i = $children->length - 1; $i >= 0; $i--) {
$this->domTable->removeChild($children->item($i));
}
return $this->domTable;
}
/**
*/
protected function setColStyles()
{
for ($col = 0; $col <= $this->matrixCols; $col++) {
$element = $this->doc->createElementNS(static::NS_TABLE, 'table-column');
if (isset($this->matrixColWidths[$col])) {
$element->setAttribute('table:style-name', 'Antragsgruen_col_' . $col);
$this->appendColStyleNode('Antragsgruen_col_' . $col, [
'style:column-width' => $this->matrixColWidths[$col] . 'cm',
]);
}
$this->domTable->appendChild($element);
}
}
/**
*/
protected function setCellContent()
{
for ($row = 0; $row <= $this->matrixRows; $row++) {
$this->cellNodeMatrix[$row] = [];
$currentRow = $this->doc->createElementNS(static::NS_TABLE, 'table-row');
for ($col = 0; $col <= $this->matrixCols; $col++) {
$this->cellNodeMatrix[$row][$col] = [];
$currentCell = $this->doc->createElementNS(static::NS_TABLE, 'table-cell');
if (isset($this->matrix[$row][$col])) {
$cell = $this->matrix[$row][$col];
switch ($cell["type"]) {
case static::TYPE_TEXT:
$elementP = $this->doc->createElementNS(static::NS_TEXT, 'p');
$elementP->textContent = $cell['content'];
$currentCell->appendChild($elementP);
break;
case static::TYPE_NUMBER:
$elementP = $this->doc->createElementNS(static::NS_TEXT, 'p');
$elementP->textContent = $cell['content'];
$currentCell->appendChild($elementP);
$currentCell->setAttribute('calcext:value-type', 'float');
$currentCell->setAttribute('office:value-type', 'float');
$currentCell->setAttribute('office:value', (string)$cell['content']);
break;
case static::TYPE_LINK:
$elementP = $this->doc->createElementNS(static::NS_TEXT, 'p');
$elementA = $this->doc->createElementNS(static::NS_TEXT, 'a');
$elementA->setAttributeNS(static::NS_XLINK, 'xlink:href', $cell['content']['href']);
$textNode = $this->doc->createTextNode($cell['content']['text']);
$elementA->appendChild($textNode);
$elementP->appendChild($elementA);
$currentCell->appendChild($elementP);
break;
case static::TYPE_HTML:
$nodes = $this->html2OdsNodes($cell['content']);
foreach ($nodes as $node) {
$currentCell->appendChild($node);
}
//$this->setMinRowHeight($row, count($ps));
$styles = $cell['styles'];
if (isset($styles['fo:wrap-option']) && $styles['fo:wrap-option'] == 'no-wrap') {
$wrap = 'no-wrap';
$height = 1;
} else {
$wrap = 'wrap';
$width = (isset($this->matrixColWidths[$col]) ? $this->matrixColWidths[$col] : 2);
$height = (mb_strlen(strip_tags($this->matrix[$row][$col]['content'])) / ($width * 6));
}
$this->setCellStyle($row, $col, [
'fo:wrap-option' => $wrap,
], [
'fo:hyphenate' => 'true',
]);
$this->setMinRowHeight($row, $height);
break;
}
}
$currentRow->appendChild($currentCell);
$this->cellNodeMatrix[$row][$col] = $currentCell;
}
$this->domTable->appendChild($currentRow);
$this->rowNodes[$row] = $currentRow;
}
}
/**
* @param int $row
* @param int $col
* @param null|array $cellAttributes
* @param null|array $textAttributes
*/
public function setCellStyle($row, $col, $cellAttributes, $textAttributes)
{
if (!isset($this->cellStylesMatrix[$row])) {
$this->cellStylesMatrix[$row] = [];
}
if (!isset($this->cellStylesMatrix[$row][$col])) {
$this->cellStylesMatrix[$row][$col] = ['cell' => [], 'text' => []];
}
if (is_array($cellAttributes)) {
foreach ($cellAttributes as $key => $val) {
$this->cellStylesMatrix[$row][$col]['cell'][$key] = $val;
}
}
if (is_array($textAttributes)) {
foreach ($textAttributes as $key => $val) {
$this->cellStylesMatrix[$row][$col]['text'][$key] = $val;
}
}
}
/**
*/
public function setCellStyles()
{
for ($row = 0; $row <= $this->matrixRows; $row++) {
for ($col = 0; $col <= $this->matrixCols; $col++) {
if (isset($this->cellStylesMatrix[$row]) && isset($this->cellStylesMatrix[$row][$col])) {
$cell = $this->cellStylesMatrix[$row][$col];
} else {
$cell = ['cell' => [], 'text' => []];
}
$styleId = 'Antragsgruen_cell_' . $row . '_' . $col;
$cellStyles = array_merge([
'style:vertical-align' => 'top'
], $cell['cell']);
$this->appendCellStyleNode($styleId, $cellStyles, $cell['text']);
/** @var \DOMElement $currentCell */
$currentCell = $this->cellNodeMatrix[$row][$col];
$currentCell->setAttribute('table:style-name', $styleId);
}
}
/*
foreach ($this->cellStylesMatrix as $rowNr => $row) {
foreach ($row as $colNr => $cell) {
}
}
*/
}
/**
*/
public function setRowStyles()
{
foreach ($this->matrixRowHeights as $row => $height) {
$styleName = 'Antragsgruen_row_' . $row;
$this->appendRowStyleNode($styleName, [
'style:row-height' => ($height * 0.45) . 'cm',
]);
/** @var \DOMElement $node */
$node = $this->rowNodes[$row];
$node->setAttribute('table:style-name', $styleName);
}
}
/**
* @param int $fromRow
* @param int $fromCol
* @param int $toRow
* @param int $toCol
* @param float $width
*/
public function drawBorder($fromRow, $fromCol, $toRow, $toCol, $width)
{
for ($i = $fromRow; $i <= $toRow; $i++) {
$this->setCellStyle($i, $fromCol, [
'fo:border-left' => $width . 'pt solid #000000',
], []);
$this->setCellStyle($i, $toCol, [
'fo:border-right' => $width . 'pt solid #000000',
], []);
}
for ($i = $fromCol; $i <= $toCol; $i++) {
$this->setCellStyle($fromRow, $i, [
'fo:border-top' => $width . 'pt solid #000000',
], []);
$this->setCellStyle($toRow, $i, [
'fo:border-bottom' => $width . 'pt solid #000000',
], []);
}
}
/**
* @param \DOMElement $node
* @param array $currentFormats
* @return array
*/
protected function node2Formatting(\DOMElement $node, $currentFormats)
{
switch ($node->nodeName) {
case 'b':
case 'strong':
$currentFormats[] = static::FORMAT_BOLD;
break;
case 'i':
case 'em':
$currentFormats[] = static::FORMAT_ITALIC;
break;
case 's':
$currentFormats[] = static::FORMAT_STRIKE;
break;
case 'u':
$currentFormats[] = static::FORMAT_UNDERLINED;
break;
case 'sub':
$currentFormats[] = static::FORMAT_SUB;
break;
case 'sup':
$currentFormats[] = static::FORMAT_SUP;
break;
case 'br':
break;
case 'p':
case 'div':
case 'blockquote':
if ($node->hasAttribute('class')) {
$classes = explode(' ', $node->getAttribute('class'));
if (in_array('underline', $classes)) {
$currentFormats[] = static::FORMAT_UNDERLINED;
}
if (in_array('strike', $classes)) {
$currentFormats[] = static::FORMAT_STRIKE;
}
if (in_array('ins', $classes)) {
$currentFormats[] = static::FORMAT_INS;
}
if (in_array('inserted', $classes)) {
$currentFormats[] = static::FORMAT_INS;
}
if (in_array('del', $classes)) {
$currentFormats[] = static::FORMAT_DEL;
}
if (in_array('deleted', $classes)) {
$currentFormats[] = static::FORMAT_DEL;
}
}
break;
case 'ul':
case 'ol':
if ($node->hasAttribute('class')) {
$classes = explode(' ', $node->getAttribute('class'));
$currentFormats[] = static::FORMAT_INDENTED;
if (in_array('ins', $classes)) {
$currentFormats[] = static::FORMAT_INS;
}
if (in_array('inserted', $classes)) {
$currentFormats[] = static::FORMAT_INS;
}
if (in_array('del', $classes)) {
$currentFormats[] = static::FORMAT_DEL;
}
if (in_array('deleted', $classes)) {
$currentFormats[] = static::FORMAT_DEL;
}
}
break;
case 'li':
break;
case 'del':
$currentFormats[] = static::FORMAT_DEL;
break;
case 'ins':
$currentFormats[] = static::FORMAT_INS;
break;
case 'h1':
case 'h2':
case 'h3':
case 'h4':
case 'h5':
case 'h6':
$currentFormats[] = static::FORMAT_BOLD;
break;
case 'a':
$currentFormats[] = static::FORMAT_LINK;
try {
$attr = $node->getAttribute('href');
if ($attr) {
$currentFormats['href'] = $attr;
}
} catch (\Exception $e) {
}
break;
case 'span':
default:
if ($node->hasAttribute('class')) {
$classes = explode(' ', $node->getAttribute('class'));
if (in_array('underline', $classes)) {
$currentFormats[] = static::FORMAT_UNDERLINED;
}
if (in_array('strike', $classes)) {
$currentFormats[] = static::FORMAT_STRIKE;
}
if (in_array('ins', $classes)) {
$currentFormats[] = static::FORMAT_INS;
}
if (in_array('inserted', $classes)) {
$currentFormats[] = static::FORMAT_INS;
}
if (in_array('del', $classes)) {
$currentFormats[] = static::FORMAT_DEL;
}
if (in_array('deleted', $classes)) {
$currentFormats[] = static::FORMAT_DEL;
}
if (in_array('superscript', $classes)) {
$currentFormats[] = static::FORMAT_SUP;
}
if (in_array('subscript', $classes)) {
$currentFormats[] = static::FORMAT_SUB;
}
}
break;
}
return $currentFormats;
}
/**
* @param \DOMNode $node
* @param array $currentFormats
* @return array
*/
protected function tokenizeFlattenHtml(\DOMNode $node, $currentFormats)
{
$return = [];
foreach ($node->childNodes as $child) {
switch ($child->nodeType) {
case XML_ELEMENT_NODE:
/** @var \DOMElement $child */
$formattings = $this->node2Formatting($child, $currentFormats);
$children = $this->tokenizeFlattenHtml($child, $formattings);
$return = array_merge($return, $children);
if (in_array($child->nodeName, ['br', 'div', 'p', 'li', 'blockquote'])) {
$return[] = [
'text' => '',
'formattings' => [static::FORMAT_LINEBREAK],
];
}
if (in_array($child->nodeName, ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'])) {
$return[] = [
'text' => '',
'formattings' => [static::FORMAT_LINEBREAK, static::FORMAT_BOLD],
];
}
break;
case XML_TEXT_NODE:
/** @var \DOMText $child */
$return[] = [
'text' => $child->data,
'formattings' => $currentFormats,
];
break;
default:
}
}
return $return;
}
/**
* @param array $formats
* @return string
*/
protected function getClassByFormats($formats)
{
sort($formats);
$key = implode('_', $formats);
if (!isset($this->classCache[$key])) {
$name = 'Antragsgruen';
$styles = [];
foreach ($formats as $format) {
if (!isset(static::$FORMAT_NAMES[$format])) {
continue;
}
$name .= '_' . static::$FORMAT_NAMES[$format];
switch ($format) {
case static::FORMAT_INS:
$styles['fo:color'] = '#00ff00';
$styles['style:text-underline-style'] = 'solid';
$styles['style:text-underline-width'] = 'auto';
$styles['style:text-underline-color'] = 'font-color';
break;
case static::FORMAT_DEL:
$styles['fo:color'] = '#ff0000';
$styles['style:text-line-through-type'] = 'single';
break;
case static::FORMAT_BOLD:
$styles['fo:font-weight'] = 'bold';
$styles['style:font-weight-asian'] = 'bold';
$styles['style:font-weight-complex'] = 'bold';
break;
case static::FORMAT_UNDERLINED:
$styles['style:text-underline-width'] = 'auto';
$styles['style:text-underline-color'] = 'font-color';
$styles['style:text-underline-style'] = 'solid';
break;
case static::FORMAT_STRIKE:
$styles['style:text-line-through-type'] = 'single';
break;
case static::FORMAT_ITALIC:
$styles['fo:font-style'] = 'italic';
$styles['style:font-style-asian'] = 'italic';
$styles['style:font-style-complex'] = 'italic';
break;
case static::FORMAT_SUP:
$styles['fo:font-size'] = '10pt';
$styles['style:text-position'] = '31%';
break;
case static::FORMAT_SUB:
$styles['fo:font-size'] = '10pt';
$styles['style:text-position'] = '-31%';
break;
}
}
$this->appendTextStyleNode($name, $styles);
$this->classCache[$key] = $name;
}
return $this->classCache[$key];
}
/**
* @param string $html
* @return array
*/
public function html2OdsNodes($html)
{
$body = $this->html2DOM($html);
$tokens = $this->tokenizeFlattenHtml($body, []);
$nodes = [];
$currentP = $this->doc->createElementNS(static::NS_TEXT, 'p');
foreach ($tokens as $token) {
if (trim($token['text']) != '') {
$node = $this->doc->createElement('text:span');
if (count($token['formattings']) > 0) {
$className = $this->getClassByFormats($token['formattings']);
$node->setAttribute('text:style-name', $className);
}
$textNode = $this->doc->createTextNode($token['text']);
$node->appendChild($textNode);
$currentP->appendChild($node);
}
if (in_array(static::FORMAT_LINEBREAK, $token['formattings'])) {
$nodes[] = $currentP;
$currentP = $this->doc->createElementNS(static::NS_TEXT, 'p');
}
}
$nodes[] = $currentP;
return $nodes;
}
/**
* @return string
* @throws \Exception
*/
public function create()
{
$this->getCleanDomTable();
$this->setColStyles();
$this->setCellContent();
$this->setRowStyles();
$this->setCellStyles();
$xml = $this->doc->saveXML();
$rows = explode("\n", $xml);
$rows[0] .= "\n";
return implode('', $rows) . "\n";
}
}

View file

@ -0,0 +1,583 @@
<?php
/**
* @link https://github.com/CatoTH/html2opendocument
* @author Tobias Hößl <tobias@hoessl.eu>
* @license https://opensource.org/licenses/MIT
*/
namespace CatoTH\HTML2OpenDocument;
class Text extends Base
{
/** @var null|\DOMElement */
private $nodeText = null;
/** @var bool */
private $node_template_1_used = false;
/** @var string[] */
private $replaces = [];
/** @var array */
private $textBlocks = [];
const STYLE_INS = 'ins';
const STYLE_DEL = 'del';
/**
* @param array $options
*
* @throws \Exception
*/
public function __construct($options = [])
{
if (isset($options['templateFile']) && $options['templateFile'] != '') {
$templateFile = $options['templateFile'];
} else {
$templateFile = __DIR__ . DIRECTORY_SEPARATOR . 'default-template.odt';
}
parent::__construct($templateFile, $options);
}
/**
* @param string $filename
*/
public function finishAndOutputOdt($filename = '')
{
header('Content-Type: application/vnd.oasis.opendocument.text');
if ($filename != '') {
header('Content-disposition: attachment;filename="' . addslashes($filename) . '"');
}
echo $this->finishAndGetDocument();
die();
}
/**
* @param string $search
* @param string $replace
*/
public function addReplace($search, $replace)
{
$this->replaces[$search] = $replace;
}
/**
* @param string $html
* @param bool $lineNumbered
*/
public function addHtmlTextBlock($html, $lineNumbered = false)
{
$this->textBlocks[] = ['text' => $html, 'lineNumbered' => $lineNumbered];
}
/**
* @param \DOMElement $element
* @return string[]
*/
protected static function getCSSClasses(\DOMElement $element)
{
if ($element->hasAttribute('class')) {
return explode(' ', $element->getAttribute('class'));
} else {
return [];
}
}
/**
* @param \DOMElement $element
* @param string[] $parentStyles
* @return string[]
*/
protected static function getChildStyles(\DOMElement $element, $parentStyles = [])
{
$classes = static::getCSSClasses($element);
$childStyles = $parentStyles;
if (in_array('ins', $classes)) {
$childStyles[] = static::STYLE_INS;
}
if (in_array('inserted', $classes)) {
$childStyles[] = static::STYLE_INS;
}
if (in_array('del', $classes)) {
$childStyles[] = static::STYLE_DEL;
}
if (in_array('deleted', $classes)) {
$childStyles[] = static::STYLE_DEL;
}
return array_unique($childStyles);
}
/**
* @param string[] $classes
*
* @return null|string
*/
protected static function cssClassesToInternalClass($classes)
{
if (in_array('underline', $classes)) {
return 'AntragsgruenUnderlined';
}
if (in_array('strike', $classes)) {
return 'AntragsgruenStrike';
}
if (in_array('ins', $classes)) {
return 'AntragsgruenIns';
}
if (in_array('inserted', $classes)) {
return 'AntragsgruenIns';
}
if (in_array('del', $classes)) {
return 'AntragsgruenDel';
}
if (in_array('deleted', $classes)) {
return 'AntragsgruenDel';
}
if (in_array('superscript', $classes)) {
return 'AntragsgruenSup';
}
if (in_array('subscript', $classes)) {
return 'AntragsgruenSub';
}
return null;
}
/**
* Wraps all child nodes with text:p nodes, if necessary
* (it's not necessary for child nodes that are p's themselves or lists)
*
* @param \DOMElement $parentEl
* @param boolean $lineNumbered
*
* @return \DOMElement
*/
protected function wrapChildrenWithP(\DOMElement $parentEl, $lineNumbered)
{
$childNodes = [];
while ($parentEl->childNodes->length > 0) {
$el = $parentEl->firstChild;
$parentEl->removeChild($el);
$childNodes[] = $el;
}
$appendNode = null;
foreach ($childNodes as $childNode) {
if (in_array(strtolower($childNode->nodeName), ['p', 'list'])) {
if ($appendNode) {
$parentEl->appendChild($appendNode);
$appendNode = null;
}
$parentEl->appendChild($childNode);
} else {
if (!$appendNode) {
$appendNode = $this->getNextNodeTemplate($lineNumbered);
}
$appendNode->appendChild($childNode);
}
}
if ($appendNode) {
$parentEl->appendChild($appendNode);
}
return $parentEl;
}
/**
* @param \DOMNode $srcNode
* @param bool $lineNumbered
* @param bool $inP
* @param string[]   $parentStyles
*
* @return \DOMNode[]
* @throws \Exception
*/
protected function html2ooNodeInt($srcNode, $lineNumbered, $inP, $parentStyles = [])
{
switch ($srcNode->nodeType) {
case XML_ELEMENT_NODE:
/** @var \DOMElement $srcNode */
if ($this->DEBUG) {
echo "Element - " . $srcNode->nodeName . " / Children: " . $srcNode->childNodes->length . "<br>";
}
$needsIntermediateP = false;
$childStyles = static::getChildStyles($srcNode, $parentStyles);
switch ($srcNode->nodeName) {
case 'b':
case 'strong':
$dstEl = $this->doc->createElementNS(static::NS_TEXT, 'span');
$dstEl->setAttribute('text:style-name', 'AntragsgruenBold');
break;
case 'i':
case 'em':
$dstEl = $this->doc->createElementNS(static::NS_TEXT, 'span');
$dstEl->setAttribute('text:style-name', 'AntragsgruenItalic');
break;
case 's':
$dstEl = $this->doc->createElementNS(static::NS_TEXT, 'span');
$dstEl->setAttribute('text:style-name', 'AntragsgruenStrike');
break;
case 'u':
$dstEl = $this->doc->createElementNS(static::NS_TEXT, 'span');
$dstEl->setAttribute('text:style-name', 'AntragsgruenUnderlined');
break;
case 'sub':
$dstEl = $this->doc->createElementNS(static::NS_TEXT, 'span');
$dstEl->setAttribute('text:style-name', 'AntragsgruenSub');
break;
case 'sup':
$dstEl = $this->doc->createElementNS(static::NS_TEXT, 'span');
$dstEl->setAttribute('text:style-name', 'AntragsgruenSup');
break;
case 'br':
$dstEl = $this->doc->createElementNS(static::NS_TEXT, 'line-break');
break;
case 'del':
$dstEl = $this->doc->createElementNS(static::NS_TEXT, 'span');
$dstEl->setAttribute('text:style-name', 'AntragsgruenDel');
break;
case 'ins':
$dstEl = $this->doc->createElementNS(static::NS_TEXT, 'span');
$dstEl->setAttribute('text:style-name', 'AntragsgruenIns');
break;
case 'a':
$dstEl = $this->doc->createElementNS(static::NS_TEXT, 'a');
try {
$attr = $srcNode->getAttribute('href');
if ($attr) {
$dstEl->setAttribute('xlink:href', $attr);
}
} catch (\Exception $e) {
}
break;
case 'p':
if ($inP) {
$dstEl = $this->createNodeWithBaseStyle('span', $lineNumbered);
} else {
$dstEl = $this->createNodeWithBaseStyle('p', $lineNumbered);
}
$intClass = static::cssClassesToInternalClass(static::getCSSClasses($srcNode));
if ($intClass) {
$dstEl->setAttribute('text:style-name', $intClass);
}
$inP = true;
break;
case 'div':
// We're basically ignoring DIVs here, as there is no corresponding element in OpenDocument
// Therefore no support for styles and classes set on DIVs yet.
$dstEl = null;
break;
case 'blockquote':
$dstEl = $this->createNodeWithBaseStyle('p', $lineNumbered);
$class = ($lineNumbered ? 'Blockquote_Linenumbered' : 'Blockquote');
$dstEl->setAttribute('text:style-name', 'Antragsgrün_20_' . $class);
if ($srcNode->childNodes->length == 1) {
foreach ($srcNode->childNodes as $child) {
if ($child->nodeName == 'p') {
$srcNode = $child;
}
}
}
$inP = true;
break;
case 'ul':
$dstEl = $this->doc->createElementNS(static::NS_TEXT, 'list');
break;
case 'ol':
$dstEl = $this->doc->createElementNS(static::NS_TEXT, 'list');
break;
case 'li':
$dstEl = $this->doc->createElementNS(static::NS_TEXT, 'list-item');
$needsIntermediateP = true;
$inP = true;
break;
case 'h1':
$dstEl = $this->createNodeWithBaseStyle('p', $lineNumbered);
$dstEl->setAttribute('text:style-name', 'Antragsgrün_20_H1');
$inP = true;
break;
case 'h2':
$dstEl = $this->createNodeWithBaseStyle('p', $lineNumbered);
$dstEl->setAttribute('text:style-name', 'Antragsgrün_20_H2');
$inP = true;
break;
case 'h3':
$dstEl = $this->createNodeWithBaseStyle('p', $lineNumbered);
$dstEl->setAttribute('text:style-name', 'Antragsgrün_20_H3');
$inP = true;
break;
case 'h4':
case 'h5':
case 'h6':
$dstEl = $this->createNodeWithBaseStyle('p', $lineNumbered);
$dstEl->setAttribute('text:style-name', 'Antragsgrün_20_H4');
$inP = true;
break;
case 'span':
default:
$dstEl = $this->doc->createElementNS(static::NS_TEXT, 'span');
$intClass = static::cssClassesToInternalClass(static::getCSSClasses($srcNode));
if ($intClass) {
$dstEl->setAttribute('text:style-name', $intClass);
}
break;
}
if ($dstEl === null) {
$ret = [];
foreach ($srcNode->childNodes as $child) {
/** @var \DOMNode $child */
if ($this->DEBUG) {
echo "CHILD<br>" . $child->nodeType . "<br>";
}
$dstNodes = $this->html2ooNodeInt($child, $lineNumbered, $inP, $childStyles);
foreach ($dstNodes as $dstNode) {
$ret[] = $dstNode;
}
}
return $ret;
}
foreach ($srcNode->childNodes as $child) {
/** @var \DOMNode $child */
if ($this->DEBUG) {
echo "CHILD<br>" . $child->nodeType . "<br>";
}
$dstNodes = $this->html2ooNodeInt($child, $lineNumbered, $inP, $childStyles);
foreach ($dstNodes as $dstNode) {
$dstEl->appendChild($dstNode);
}
}
if ($needsIntermediateP && $dstEl->childNodes->length > 0) {
$dstEl = static::wrapChildrenWithP($dstEl, $lineNumbered);
}
return [$dstEl];
case XML_TEXT_NODE:
/** @var \DOMText $srcNode */
$textnode = new \DOMText();
$textnode->data = $srcNode->data;
if ($this->DEBUG) {
echo 'Text<br>';
}
if (in_array(static::STYLE_DEL, $parentStyles)) {
$dstEl = $this->createNodeWithBaseStyle('span', $lineNumbered);
$dstEl->setAttribute('text:style-name', 'AntragsgruenDel');
$dstEl->appendChild($textnode);
$textnode = $dstEl;
}
if (in_array(static::STYLE_INS, $parentStyles)) {
$dstEl = $this->createNodeWithBaseStyle('span', $lineNumbered);
$dstEl->setAttribute('text:style-name', 'AntragsgruenIns');
$dstEl->appendChild($textnode);
$textnode = $dstEl;
}
return [$textnode];
break;
case XML_DOCUMENT_TYPE_NODE:
if ($this->DEBUG) {
echo 'Type Node<br>';
}
return [];
default:
if ($this->DEBUG) {
echo 'Unknown Node: ' . $srcNode->nodeType . '<br>';
}
return [];
}
}
/**
* @param string $html
* @param bool $lineNumbered
*
* @return \DOMNode[]
* @throws \Exception
*/
protected function html2ooNodes($html, $lineNumbered)
{
if (!is_string($html)) {
echo print_r($html, true);
echo print_r(debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS), true);
die();
}
$body = $this->html2DOM($html);
$retNodes = [];
for ($i = 0; $i < $body->childNodes->length; $i++) {
$child = $body->childNodes->item($i);
/** @var \DOMNode $child */
if ($child->nodeName == 'ul') {
// Alle anderen Nodes dieses Aufrufs werden ignoriert
if ($this->DEBUG) {
echo 'LIST<br>';
}
$recNewNodes = $this->html2ooNodeInt($child, $lineNumbered, false);
} else {
if ($child->nodeType == XML_TEXT_NODE) {
$new_node = $this->getNextNodeTemplate($lineNumbered);
/** @var \DOMText $child */
if ($this->DEBUG) {
echo $child->nodeName . ' - ' . htmlentities($child->data, ENT_COMPAT, 'UTF-8') . '<br>';
}
$text = new \DOMText();
$text->data = $child->data;
$new_node->appendChild($text);
$recNewNodes = [$new_node];
} else {
if ($this->DEBUG) {
echo $child->nodeName . '!!!!!!!!!!!!<br>';
}
$recNewNodes = $this->html2ooNodeInt($child, $lineNumbered, false);
}
}
foreach ($recNewNodes as $recNewNode) {
$retNodes[] = $recNewNode;
}
}
return $retNodes;
}
/**
* @return string
* @throws \Exception
*/
public function create()
{
$this->appendTextStyleNode('AntragsgruenBold', [
'fo:font-weight' => 'bold',
'style:font-weight-asian' => 'bold',
'style:font-weight-complex' => 'bold',
]);
$this->appendTextStyleNode('AntragsgruenItalic', [
'fo:font-style' => 'italic',
'style:font-style-asian' => 'italic',
'style:font-style-complex' => 'italic',
]);
$this->appendTextStyleNode('AntragsgruenUnderlined', [
'style:text-underline-width' => 'auto',
'style:text-underline-color' => 'font-color',
'style:text-underline-style' => 'solid',
]);
$this->appendTextStyleNode('AntragsgruenStrike', [
'style:text-line-through-style' => 'solid',
'style:text-line-through-type' => 'single',
]);
$this->appendTextStyleNode('AntragsgruenIns', [
'fo:color' => '#008800',
'style:text-underline-style' => 'solid',
'style:text-underline-width' => 'auto',
'style:text-underline-color' => 'font-color',
'fo:font-weight' => 'bold',
'style:font-weight-asian' => 'bold',
'style:font-weight-complex' => 'bold',
]);
$this->appendTextStyleNode('AntragsgruenDel', [
'fo:color' => '#880000',
'style:text-line-through-style' => 'solid',
'style:text-line-through-type' => 'single',
'fo:font-style' => 'italic',
'style:font-style-asian' => 'italic',
'style:font-style-complex' => 'italic',
]);
$this->appendTextStyleNode('AntragsgruenSub', [
'style:text-position' => 'sub 58%',
]);
$this->appendTextStyleNode('AntragsgruenSup', [
'style:text-position' => 'super 58%',
]);
/** @var \DOMNode[] $nodes */
$nodes = [];
foreach ($this->doc->getElementsByTagNameNS(static::NS_TEXT, 'span') as $element) {
$nodes[] = $element;
}
foreach ($this->doc->getElementsByTagNameNS(static::NS_TEXT, 'p') as $element) {
$nodes[] = $element;
}
$searchFor = array_keys($this->replaces);
$replaceWith = array_values($this->replaces);
foreach ($nodes as $node) {
$children = $node->childNodes;
foreach ($children as $child) {
if ($child->nodeType == XML_TEXT_NODE) {
/** @var \DOMText $child */
$child->data = preg_replace($searchFor, $replaceWith, $child->data);
if (preg_match("/\{\{ANTRAGSGRUEN:DUMMY\}\}/siu", $child->data)) {
$node->parentNode->removeChild($node);
}
if (preg_match("/\{\{ANTRAGSGRUEN:TEXT\}\}/siu", $child->data)) {
$this->nodeText = $node;
}
}
}
}
foreach ($this->textBlocks as $textBlock) {
$newNodes = $this->html2ooNodes($textBlock['text'], $textBlock['lineNumbered']);
foreach ($newNodes as $newNode) {
$this->nodeText->parentNode->insertBefore($newNode, $this->nodeText);
}
}
$this->nodeText->parentNode->removeChild($this->nodeText);
return $this->doc->saveXML();
}
/**
* @param bool $lineNumbers
*
* @return \DOMNode
*/
protected function getNextNodeTemplate($lineNumbers)
{
$node = $this->nodeText->cloneNode();
/** @var \DOMElement $node */
if ($lineNumbers) {
if ($this->node_template_1_used) {
$node->setAttribute('text:style-name', 'Antragsgrün_20_LineNumbered_20_Standard');
} else {
$this->node_template_1_used = true;
$node->setAttribute('text:style-name', 'Antragsgrün_20_LineNumbered_20_First');
}
} else {
$node->setAttribute('text:style-name', 'Antragsgrün_20_Standard');
}
return $node;
}
/**
* @param string $nodeType
* @param bool $lineNumbers
*
* @return \DOMElement|\DOMNode
*/
protected function createNodeWithBaseStyle($nodeType, $lineNumbers)
{
$node = $this->doc->createElementNS(static::NS_TEXT, $nodeType);
if ($lineNumbers) {
if ($this->node_template_1_used) {
$node->setAttribute('text:style-name', 'Antragsgrün_20_LineNumbered_20_Standard');
} else {
$this->node_template_1_used = true;
$node->setAttribute('text:style-name', 'Antragsgrün_20_LineNumbered_20_First');
}
} else {
$node->setAttribute('text:style-name', 'Antragsgrün_20_Standard');
}
return $node;
}
}

View file

@ -0,0 +1,30 @@
{
"name": "catoth/html2opendocument",
"description": "Converting simple HTML to Opendocument Text (ODT) or Spreadsheets (ODS)",
"type": "library",
"minimum-stability": "stable",
"license": "MIT",
"keywords": [
"opendocument",
"html",
"odt",
"ods"
],
"authors": [
{
"name": "Tobias Hößl",
"email": "tobias@hoessl.eu"
}
],
"require": {
"php": ">=5.5.0",
"ext-zip": "*",
"ext-dom": "*",
"ezyang/htmlpurifier": "*"
},
"autoload": {
"psr-4": {
"CatoTH\\HTML2OpenDocument\\": ""
}
}
}

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1,50 @@
<?php
use CatoTH\HTML2OpenDocument\Spreadsheet;
require_once(__DIR__ . DIRECTORY_SEPARATOR . 'vendor/autoload.php');
$ods = new \CatoTH\HTML2OpenDocument\Spreadsheet();
// Plain text
$ods->setCell(0, 0, Spreadsheet::TYPE_TEXT, 'Plain text with native formatting');
$ods->setCellStyle(0, 0, [], ['fo:font-weight' => 'bold']);
// Print a number as an actual number, just a little bit bigger
$ods->setCell(1, 0, Spreadsheet::TYPE_NUMBER, 23);
$ods->setCellStyle(1, 0, [], [
'fo:font-size' => '16pt',
'fo:font-weight' => 'bold',
]);
$ods->setMinRowHeight(1, 1.5);
// Print a number as text
$ods->setCell(2, 0, Spreadsheet::TYPE_TEXT, '42');
// Draw a border around two of the cells
$ods->drawBorder(1, 0, 2, 0, 1);
// Now we use HTML, and we need a bit more space for that
$html = '<p>The converter supports the following styles:</p>
<ul>
<li><strong>STRONG</strong></li>
<li><u>U</u> (underlined)</li>
<li><s>S</s> (strike-through)</li>
<li><em>EM</em> (emphasis / italic)</li>
<li><ins>Inserted text</ins></li>
<li><del>Deleted text</del></li>
<li>Line<br>breaks with BR</li>
<li>Lists (UL / OL) cannot be displayed as lists, but will be flattened to paragraphs</li>
</ul>
<blockquote>You can also use BLOCKQUOTE, though it lacks specific styling for now</blockquote>';
$ods->setMinRowHeight(3, 10);
$ods->setColumnWidth(1, 20);
$ods->setCell(3, 1, Spreadsheet::TYPE_HTML, $html);
$ods->finishAndOutputOds('demo.ods');
?>

View file

@ -0,0 +1,9 @@
CREDITS
Almost everything written by Edward Z. Yang (Ambush Commander). Lots of thanks
to the DevNetwork Community for their help (see docs/ref-devnetwork.html for
more details), Feyd especially (namely IPv6 and optimization). Thanks to RSnake
for letting me package his fantastic XSS cheatsheet for a smoketest.
vim: et sw=4 sts=4

373
assets/htmlpurifier/INSTALL Normal file
View file

@ -0,0 +1,373 @@
Install
How to install HTML Purifier
HTML Purifier is designed to run out of the box, so actually using the
library is extremely easy. (Although... if you were looking for a
step-by-step installation GUI, you've downloaded the wrong software!)
While the impatient can get going immediately with some of the sample
code at the bottom of this library, it's well worth reading this entire
document--most of the other documentation assumes that you are familiar
with these contents.
---------------------------------------------------------------------------
1. Compatibility
HTML Purifier is PHP 5 and PHP 7, and is actively tested from PHP 5.0.5
and up. It has no core dependencies with other libraries.
These optional extensions can enhance the capabilities of HTML Purifier:
* iconv : Converts text to and from non-UTF-8 encodings
* bcmath : Used for unit conversion and imagecrash protection
* tidy : Used for pretty-printing HTML
These optional libraries can enhance the capabilities of HTML Purifier:
* CSSTidy : Clean CSS stylesheets using %Core.ExtractStyleBlocks
Note: You should use the modernized fork of CSSTidy available
at https://github.com/Cerdic/CSSTidy
* Net_IDNA2 (PEAR) : IRI support using %Core.EnableIDNA
Note: This is not necessary for PHP 5.3 or later
---------------------------------------------------------------------------
2. Reconnaissance
A big plus of HTML Purifier is its inerrant support of standards, so
your web-pages should be standards-compliant. (They should also use
semantic markup, but that's another issue altogether, one HTML Purifier
cannot fix without reading your mind.)
HTML Purifier can process these doctypes:
* XHTML 1.0 Transitional (default)
* XHTML 1.0 Strict
* HTML 4.01 Transitional
* HTML 4.01 Strict
* XHTML 1.1
...and these character encodings:
* UTF-8 (default)
* Any encoding iconv supports (with crippled internationalization support)
These defaults reflect what my choices would be if I were authoring an
HTML document, however, what you choose depends on the nature of your
codebase. If you don't know what doctype you are using, you can determine
the doctype from this identifier at the top of your source code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
...and the character encoding from this code:
<meta http-equiv="Content-type" content="text/html;charset=ENCODING">
If the character encoding declaration is missing, STOP NOW, and
read 'docs/enduser-utf8.html' (web accessible at
http://htmlpurifier.org/docs/enduser-utf8.html). In fact, even if it is
present, read this document anyway, as many websites specify their
document's character encoding incorrectly.
---------------------------------------------------------------------------
3. Including the library
The procedure is quite simple:
require_once '/path/to/library/HTMLPurifier.auto.php';
This will setup an autoloader, so the library's files are only included
when you use them.
Only the contents in the library/ folder are necessary, so you can remove
everything else when using HTML Purifier in a production environment.
If you installed HTML Purifier via PEAR, all you need to do is:
require_once 'HTMLPurifier.auto.php';
Please note that the usual PEAR practice of including just the classes you
want will not work with HTML Purifier's autoloading scheme.
Advanced users, read on; other users can skip to section 4.
Autoload compatibility
----------------------
HTML Purifier attempts to be as smart as possible when registering an
autoloader, but there are some cases where you will need to change
your own code to accomodate HTML Purifier. These are those cases:
PHP VERSION IS LESS THAN 5.1.2, AND YOU'VE DEFINED __autoload
Because spl_autoload_register() doesn't exist in early versions
of PHP 5, HTML Purifier has no way of adding itself to the autoload
stack. Modify your __autoload function to test
HTMLPurifier_Bootstrap::autoload($class)
For example, suppose your autoload function looks like this:
function __autoload($class) {
require str_replace('_', '/', $class) . '.php';
return true;
}
A modified version with HTML Purifier would look like this:
function __autoload($class) {
if (HTMLPurifier_Bootstrap::autoload($class)) return true;
require str_replace('_', '/', $class) . '.php';
return true;
}
Note that there *is* some custom behavior in our autoloader; the
original autoloader in our example would work for 99% of the time,
but would fail when including language files.
AN __autoload FUNCTION IS DECLARED AFTER OUR AUTOLOADER IS REGISTERED
spl_autoload_register() has the curious behavior of disabling
the existing __autoload() handler. Users need to explicitly
spl_autoload_register('__autoload'). Because we use SPL when it
is available, __autoload() will ALWAYS be disabled. If __autoload()
is declared before HTML Purifier is loaded, this is not a problem:
HTML Purifier will register the function for you. But if it is
declared afterwards, it will mysteriously not work. This
snippet of code (after your autoloader is defined) will fix it:
spl_autoload_register('__autoload')
Users should also be on guard if they use a version of PHP previous
to 5.1.2 without an autoloader--HTML Purifier will define __autoload()
for you, which can collide with an autoloader that was added by *you*
later.
For better performance
----------------------
Opcode caches, which greatly speed up PHP initialization for scripts
with large amounts of code (HTML Purifier included), don't like
autoloaders. We offer an include file that includes all of HTML Purifier's
files in one go in an opcode cache friendly manner:
// If /path/to/library isn't already in your include path, uncomment
// the below line:
// require '/path/to/library/HTMLPurifier.path.php';
require 'HTMLPurifier.includes.php';
Optional components still need to be included--you'll know if you try to
use a feature and you get a class doesn't exists error! The autoloader
can be used in conjunction with this approach to catch classes that are
missing. Simply add this afterwards:
require 'HTMLPurifier.autoload.php';
Standalone version
------------------
HTML Purifier has a standalone distribution; you can also generate
a standalone file from the full version by running the script
maintenance/generate-standalone.php . The standalone version has the
benefit of having most of its code in one file, so parsing is much
faster and the library is easier to manage.
If HTMLPurifier.standalone.php exists in the library directory, you
can use it like this:
require '/path/to/HTMLPurifier.standalone.php';
This is equivalent to including HTMLPurifier.includes.php, except that
the contents of standalone/ will be added to your path. To override this
behavior, specify a new HTMLPURIFIER_PREFIX where standalone files can
be found (usually, this will be one directory up, the "true" library
directory in full distributions). Don't forget to set your path too!
The autoloader can be added to the end to ensure the classes are
loaded when necessary; otherwise you can manually include them.
To use the autoloader, use this:
require 'HTMLPurifier.autoload.php';
For advanced users
------------------
HTMLPurifier.auto.php performs a number of operations that can be done
individually. These are:
HTMLPurifier.path.php
Puts /path/to/library in the include path. For high performance,
this should be done in php.ini.
HTMLPurifier.autoload.php
Registers our autoload handler HTMLPurifier_Bootstrap::autoload($class).
You can do these operations by yourself--in fact, you must modify your own
autoload handler if you are using a version of PHP earlier than PHP 5.1.2
(See "Autoload compatibility" above).
---------------------------------------------------------------------------
4. Configuration
HTML Purifier is designed to run out-of-the-box, but occasionally HTML
Purifier needs to be told what to do. If you answer no to any of these
questions, read on; otherwise, you can skip to the next section (or, if you're
into configuring things just for the heck of it, skip to 4.3).
* Am I using UTF-8?
* Am I using XHTML 1.0 Transitional?
If you answered no to any of these questions, instantiate a configuration
object and read on:
$config = HTMLPurifier_Config::createDefault();
4.1. Setting a different character encoding
You really shouldn't use any other encoding except UTF-8, especially if you
plan to support multilingual websites (read section three for more details).
However, switching to UTF-8 is not always immediately feasible, so we can
adapt.
HTML Purifier uses iconv to support other character encodings, as such,
any encoding that iconv supports <http://www.gnu.org/software/libiconv/>
HTML Purifier supports with this code:
$config->set('Core.Encoding', /* put your encoding here */);
An example usage for Latin-1 websites (the most common encoding for English
websites):
$config->set('Core.Encoding', 'ISO-8859-1');
Note that HTML Purifier's support for non-Unicode encodings is crippled by the
fact that any character not supported by that encoding will be silently
dropped, EVEN if it is ampersand escaped. If you want to work around
this, you are welcome to read docs/enduser-utf8.html for a fix,
but please be cognizant of the issues the "solution" creates (for this
reason, I do not include the solution in this document).
4.2. Setting a different doctype
For those of you using HTML 4.01 Transitional, you can disable
XHTML output like this:
$config->set('HTML.Doctype', 'HTML 4.01 Transitional');
Other supported doctypes include:
* HTML 4.01 Strict
* HTML 4.01 Transitional
* XHTML 1.0 Strict
* XHTML 1.0 Transitional
* XHTML 1.1
4.3. Other settings
There are more configuration directives which can be read about
here: <http://htmlpurifier.org/live/configdoc/plain.html> They're a bit boring,
but they can help out for those of you who like to exert maximum control over
your code. Some of the more interesting ones are configurable at the
demo <http://htmlpurifier.org/demo.php> and are well worth looking into
for your own system.
For example, you can fine tune allowed elements and attributes, convert
relative URLs to absolute ones, and even autoparagraph input text! These
are, respectively, %HTML.Allowed, %URI.MakeAbsolute and %URI.Base, and
%AutoFormat.AutoParagraph. The %Namespace.Directive naming convention
translates to:
$config->set('Namespace.Directive', $value);
E.g.
$config->set('HTML.Allowed', 'p,b,a[href],i');
$config->set('URI.Base', 'http://www.example.com');
$config->set('URI.MakeAbsolute', true);
$config->set('AutoFormat.AutoParagraph', true);
---------------------------------------------------------------------------
5. Caching
HTML Purifier generates some cache files (generally one or two) to speed up
its execution. For maximum performance, make sure that
library/HTMLPurifier/DefinitionCache/Serializer is writeable by the webserver.
If you are in the library/ folder of HTML Purifier, you can set the
appropriate permissions using:
chmod -R 0755 HTMLPurifier/DefinitionCache/Serializer
If the above command doesn't work, you may need to assign write permissions
to group:
chmod -R 0775 HTMLPurifier/DefinitionCache/Serializer
You can also chmod files via your FTP client; this option
is usually accessible by right clicking the corresponding directory and
then selecting "chmod" or "file permissions".
Starting with 2.0.1, HTML Purifier will generate friendly error messages
that will tell you exactly what you have to chmod the directory to, if in doubt,
follow its advice.
If you are unable or unwilling to give write permissions to the cache
directory, you can either disable the cache (and suffer a performance
hit):
$config->set('Core.DefinitionCache', null);
Or move the cache directory somewhere else (no trailing slash):
$config->set('Cache.SerializerPath', '/home/user/absolute/path');
---------------------------------------------------------------------------
6. Using the code
The interface is mind-numbingly simple:
$purifier = new HTMLPurifier($config);
$clean_html = $purifier->purify( $dirty_html );
That's it! For more examples, check out docs/examples/ (they aren't very
different though). Also, docs/enduser-slow.html gives advice on what to
do if HTML Purifier is slowing down your application.
---------------------------------------------------------------------------
7. Quick install
First, make sure library/HTMLPurifier/DefinitionCache/Serializer is
writable by the webserver (see Section 5: Caching above for details).
If your website is in UTF-8 and XHTML Transitional, use this code:
<?php
require_once '/path/to/htmlpurifier/library/HTMLPurifier.auto.php';
$config = HTMLPurifier_Config::createDefault();
$purifier = new HTMLPurifier($config);
$clean_html = $purifier->purify($dirty_html);
?>
If your website is in a different encoding or doctype, use this code:
<?php
require_once '/path/to/htmlpurifier/library/HTMLPurifier.auto.php';
$config = HTMLPurifier_Config::createDefault();
$config->set('Core.Encoding', 'ISO-8859-1'); // replace with your encoding
$config->set('HTML.Doctype', 'HTML 4.01 Transitional'); // replace with your doctype
$purifier = new HTMLPurifier($config);
$clean_html = $purifier->purify($dirty_html);
?>
vim: et sw=4 sts=4

504
assets/htmlpurifier/LICENSE Normal file
View file

@ -0,0 +1,504 @@
GNU LESSER GENERAL PUBLIC LICENSE
Version 2.1, February 1999
Copyright (C) 1991, 1999 Free Software Foundation, Inc.
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
[This is the first released version of the Lesser GPL. It also counts
as the successor of the GNU Library Public License, version 2, hence
the version number 2.1.]
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
Licenses are intended to guarantee your freedom to share and change
free software--to make sure the software is free for all its users.
This license, the Lesser General Public License, applies to some
specially designated software packages--typically libraries--of the
Free Software Foundation and other authors who decide to use it. You
can use it too, but we suggest you first think carefully about whether
this license or the ordinary General Public License is the better
strategy to use in any particular case, based on the explanations below.
When we speak of free software, we are referring to freedom of use,
not price. Our General Public Licenses are designed to make sure that
you have the freedom to distribute copies of free software (and charge
for this service if you wish); that you receive source code or can get
it if you want it; that you can change the software and use pieces of
it in new free programs; and that you are informed that you can do
these things.
To protect your rights, we need to make restrictions that forbid
distributors to deny you these rights or to ask you to surrender these
rights. These restrictions translate to certain responsibilities for
you if you distribute copies of the library or if you modify it.
For example, if you distribute copies of the library, whether gratis
or for a fee, you must give the recipients all the rights that we gave
you. You must make sure that they, too, receive or can get the source
code. If you link other code with the library, you must provide
complete object files to the recipients, so that they can relink them
with the library after making changes to the library and recompiling
it. And you must show them these terms so they know their rights.
We protect your rights with a two-step method: (1) we copyright the
library, and (2) we offer you this license, which gives you legal
permission to copy, distribute and/or modify the library.
To protect each distributor, we want to make it very clear that
there is no warranty for the free library. Also, if the library is
modified by someone else and passed on, the recipients should know
that what they have is not the original version, so that the original
author's reputation will not be affected by problems that might be
introduced by others.
Finally, software patents pose a constant threat to the existence of
any free program. We wish to make sure that a company cannot
effectively restrict the users of a free program by obtaining a
restrictive license from a patent holder. Therefore, we insist that
any patent license obtained for a version of the library must be
consistent with the full freedom of use specified in this license.
Most GNU software, including some libraries, is covered by the
ordinary GNU General Public License. This license, the GNU Lesser
General Public License, applies to certain designated libraries, and
is quite different from the ordinary General Public License. We use
this license for certain libraries in order to permit linking those
libraries into non-free programs.
When a program is linked with a library, whether statically or using
a shared library, the combination of the two is legally speaking a
combined work, a derivative of the original library. The ordinary
General Public License therefore permits such linking only if the
entire combination fits its criteria of freedom. The Lesser General
Public License permits more lax criteria for linking other code with
the library.
We call this license the "Lesser" General Public License because it
does Less to protect the user's freedom than the ordinary General
Public License. It also provides other free software developers Less
of an advantage over competing non-free programs. These disadvantages
are the reason we use the ordinary General Public License for many
libraries. However, the Lesser license provides advantages in certain
special circumstances.
For example, on rare occasions, there may be a special need to
encourage the widest possible use of a certain library, so that it becomes
a de-facto standard. To achieve this, non-free programs must be
allowed to use the library. A more frequent case is that a free
library does the same job as widely used non-free libraries. In this
case, there is little to gain by limiting the free library to free
software only, so we use the Lesser General Public License.
In other cases, permission to use a particular library in non-free
programs enables a greater number of people to use a large body of
free software. For example, permission to use the GNU C Library in
non-free programs enables many more people to use the whole GNU
operating system, as well as its variant, the GNU/Linux operating
system.
Although the Lesser General Public License is Less protective of the
users' freedom, it does ensure that the user of a program that is
linked with the Library has the freedom and the wherewithal to run
that program using a modified version of the Library.
The precise terms and conditions for copying, distribution and
modification follow. Pay close attention to the difference between a
"work based on the library" and a "work that uses the library". The
former contains code derived from the library, whereas the latter must
be combined with the library in order to run.
GNU LESSER GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License Agreement applies to any software library or other
program which contains a notice placed by the copyright holder or
other authorized party saying it may be distributed under the terms of
this Lesser General Public License (also called "this License").
Each licensee is addressed as "you".
A "library" means a collection of software functions and/or data
prepared so as to be conveniently linked with application programs
(which use some of those functions and data) to form executables.
The "Library", below, refers to any such software library or work
which has been distributed under these terms. A "work based on the
Library" means either the Library or any derivative work under
copyright law: that is to say, a work containing the Library or a
portion of it, either verbatim or with modifications and/or translated
straightforwardly into another language. (Hereinafter, translation is
included without limitation in the term "modification".)
"Source code" for a work means the preferred form of the work for
making modifications to it. For a library, complete source code means
all the source code for all modules it contains, plus any associated
interface definition files, plus the scripts used to control compilation
and installation of the library.
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running a program using the Library is not restricted, and output from
such a program is covered only if its contents constitute a work based
on the Library (independent of the use of the Library in a tool for
writing it). Whether that is true depends on what the Library does
and what the program that uses the Library does.
1. You may copy and distribute verbatim copies of the Library's
complete source code as you receive it, in any medium, provided that
you conspicuously and appropriately publish on each copy an
appropriate copyright notice and disclaimer of warranty; keep intact
all the notices that refer to this License and to the absence of any
warranty; and distribute a copy of this License along with the
Library.
You may charge a fee for the physical act of transferring a copy,
and you may at your option offer warranty protection in exchange for a
fee.
2. You may modify your copy or copies of the Library or any portion
of it, thus forming a work based on the Library, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) The modified work must itself be a software library.
b) You must cause the files modified to carry prominent notices
stating that you changed the files and the date of any change.
c) You must cause the whole of the work to be licensed at no
charge to all third parties under the terms of this License.
d) If a facility in the modified Library refers to a function or a
table of data to be supplied by an application program that uses
the facility, other than as an argument passed when the facility
is invoked, then you must make a good faith effort to ensure that,
in the event an application does not supply such function or
table, the facility still operates, and performs whatever part of
its purpose remains meaningful.
(For example, a function in a library to compute square roots has
a purpose that is entirely well-defined independent of the
application. Therefore, Subsection 2d requires that any
application-supplied function or table used by this function must
be optional: if the application does not supply it, the square
root function must still compute square roots.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Library,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Library, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote
it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Library.
In addition, mere aggregation of another work not based on the Library
with the Library (or with a work based on the Library) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may opt to apply the terms of the ordinary GNU General Public
License instead of this License to a given copy of the Library. To do
this, you must alter all the notices that refer to this License, so
that they refer to the ordinary GNU General Public License, version 2,
instead of to this License. (If a newer version than version 2 of the
ordinary GNU General Public License has appeared, then you can specify
that version instead if you wish.) Do not make any other change in
these notices.
Once this change is made in a given copy, it is irreversible for
that copy, so the ordinary GNU General Public License applies to all
subsequent copies and derivative works made from that copy.
This option is useful when you wish to copy part of the code of
the Library into a program that is not a library.
4. You may copy and distribute the Library (or a portion or
derivative of it, under Section 2) in object code or executable form
under the terms of Sections 1 and 2 above provided that you accompany
it with the complete corresponding machine-readable source code, which
must be distributed under the terms of Sections 1 and 2 above on a
medium customarily used for software interchange.
If distribution of object code is made by offering access to copy
from a designated place, then offering equivalent access to copy the
source code from the same place satisfies the requirement to
distribute the source code, even though third parties are not
compelled to copy the source along with the object code.
5. A program that contains no derivative of any portion of the
Library, but is designed to work with the Library by being compiled or
linked with it, is called a "work that uses the Library". Such a
work, in isolation, is not a derivative work of the Library, and
therefore falls outside the scope of this License.
However, linking a "work that uses the Library" with the Library
creates an executable that is a derivative of the Library (because it
contains portions of the Library), rather than a "work that uses the
library". The executable is therefore covered by this License.
Section 6 states terms for distribution of such executables.
When a "work that uses the Library" uses material from a header file
that is part of the Library, the object code for the work may be a
derivative work of the Library even though the source code is not.
Whether this is true is especially significant if the work can be
linked without the Library, or if the work is itself a library. The
threshold for this to be true is not precisely defined by law.
If such an object file uses only numerical parameters, data
structure layouts and accessors, and small macros and small inline
functions (ten lines or less in length), then the use of the object
file is unrestricted, regardless of whether it is legally a derivative
work. (Executables containing this object code plus portions of the
Library will still fall under Section 6.)
Otherwise, if the work is a derivative of the Library, you may
distribute the object code for the work under the terms of Section 6.
Any executables containing that work also fall under Section 6,
whether or not they are linked directly with the Library itself.
6. As an exception to the Sections above, you may also combine or
link a "work that uses the Library" with the Library to produce a
work containing portions of the Library, and distribute that work
under terms of your choice, provided that the terms permit
modification of the work for the customer's own use and reverse
engineering for debugging such modifications.
You must give prominent notice with each copy of the work that the
Library is used in it and that the Library and its use are covered by
this License. You must supply a copy of this License. If the work
during execution displays copyright notices, you must include the
copyright notice for the Library among them, as well as a reference
directing the user to the copy of this License. Also, you must do one
of these things:
a) Accompany the work with the complete corresponding
machine-readable source code for the Library including whatever
changes were used in the work (which must be distributed under
Sections 1 and 2 above); and, if the work is an executable linked
with the Library, with the complete machine-readable "work that
uses the Library", as object code and/or source code, so that the
user can modify the Library and then relink to produce a modified
executable containing the modified Library. (It is understood
that the user who changes the contents of definitions files in the
Library will not necessarily be able to recompile the application
to use the modified definitions.)
b) Use a suitable shared library mechanism for linking with the
Library. A suitable mechanism is one that (1) uses at run time a
copy of the library already present on the user's computer system,
rather than copying library functions into the executable, and (2)
will operate properly with a modified version of the library, if
the user installs one, as long as the modified version is
interface-compatible with the version that the work was made with.
c) Accompany the work with a written offer, valid for at
least three years, to give the same user the materials
specified in Subsection 6a, above, for a charge no more
than the cost of performing this distribution.
d) If distribution of the work is made by offering access to copy
from a designated place, offer equivalent access to copy the above
specified materials from the same place.
e) Verify that the user has already received a copy of these
materials or that you have already sent this user a copy.
For an executable, the required form of the "work that uses the
Library" must include any data and utility programs needed for
reproducing the executable from it. However, as a special exception,
the materials to be distributed need not include anything that is
normally distributed (in either source or binary form) with the major
components (compiler, kernel, and so on) of the operating system on
which the executable runs, unless that component itself accompanies
the executable.
It may happen that this requirement contradicts the license
restrictions of other proprietary libraries that do not normally
accompany the operating system. Such a contradiction means you cannot
use both them and the Library together in an executable that you
distribute.
7. You may place library facilities that are a work based on the
Library side-by-side in a single library together with other library
facilities not covered by this License, and distribute such a combined
library, provided that the separate distribution of the work based on
the Library and of the other library facilities is otherwise
permitted, and provided that you do these two things:
a) Accompany the combined library with a copy of the same work
based on the Library, uncombined with any other library
facilities. This must be distributed under the terms of the
Sections above.
b) Give prominent notice with the combined library of the fact
that part of it is a work based on the Library, and explaining
where to find the accompanying uncombined form of the same work.
8. You may not copy, modify, sublicense, link with, or distribute
the Library except as expressly provided under this License. Any
attempt otherwise to copy, modify, sublicense, link with, or
distribute the Library is void, and will automatically terminate your
rights under this License. However, parties who have received copies,
or rights, from you under this License will not have their licenses
terminated so long as such parties remain in full compliance.
9. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Library or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Library (or any work based on the
Library), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Library or works based on it.
10. Each time you redistribute the Library (or any work based on the
Library), the recipient automatically receives a license from the
original licensor to copy, distribute, link with or modify the Library
subject to these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties with
this License.
11. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Library at all. For example, if a patent
license would not permit royalty-free redistribution of the Library by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Library.
If any portion of this section is held invalid or unenforceable under any
particular circumstance, the balance of the section is intended to apply,
and the section as a whole is intended to apply in other circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
12. If the distribution and/or use of the Library is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Library under this License may add
an explicit geographical distribution limitation excluding those countries,
so that distribution is permitted only in or among countries not thus
excluded. In such case, this License incorporates the limitation as if
written in the body of this License.
13. The Free Software Foundation may publish revised and/or new
versions of the Lesser General Public License from time to time.
Such new versions will be similar in spirit to the present version,
but may differ in detail to address new problems or concerns.
Each version is given a distinguishing version number. If the Library
specifies a version number of this License which applies to it and
"any later version", you have the option of following the terms and
conditions either of that version or of any later version published by
the Free Software Foundation. If the Library does not specify a
license version number, you may choose any version ever published by
the Free Software Foundation.
14. If you wish to incorporate parts of the Library into other free
programs whose distribution conditions are incompatible with these,
write to the author to ask for permission. For software which is
copyrighted by the Free Software Foundation, write to the Free
Software Foundation; we sometimes make exceptions for this. Our
decision will be guided by the two goals of preserving the free status
of all derivatives of our free software and of promoting the sharing
and reuse of software generally.
NO WARRANTY
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Libraries
If you develop a new library, and you want it to be of the greatest
possible use to the public, we recommend making it free software that
everyone can redistribute and change. You can do so by permitting
redistribution under these terms (or, alternatively, under the terms of the
ordinary General Public License).
To apply these terms, attach the following notices to the library. It is
safest to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least the
"copyright" line and a pointer to where the full notice is found.
<one line to give the library's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Also add information on how to contact you by electronic and paper mail.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the library, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the
library `Frob' (a library for tweaking knobs) written by James Random Hacker.
<signature of Ty Coon>, 1 April 1990
Ty Coon, President of Vice
That's all there is to it!
vim: et sw=4 sts=4

1176
assets/htmlpurifier/NEWS Normal file

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,11 @@
<?php
/**
* This is a stub include that automatically configures the include path.
*/
set_include_path(dirname(__FILE__) . PATH_SEPARATOR . get_include_path() );
require_once 'HTMLPurifier/Bootstrap.php';
require_once 'HTMLPurifier.autoload.php';
// vim: et sw=4 sts=4

View file

@ -0,0 +1,27 @@
<?php
/**
* @file
* Convenience file that registers autoload handler for HTML Purifier.
* It also does some sanity checks.
*/
if (function_exists('spl_autoload_register') && function_exists('spl_autoload_unregister')) {
// We need unregister for our pre-registering functionality
HTMLPurifier_Bootstrap::registerAutoload();
if (function_exists('__autoload')) {
// Be polite and ensure that userland autoload gets retained
spl_autoload_register('__autoload');
}
} elseif (!function_exists('__autoload')) {
function __autoload($class)
{
return HTMLPurifier_Bootstrap::autoload($class);
}
}
if (ini_get('zend.ze1_compatibility_mode')) {
trigger_error("HTML Purifier is not compatible with zend.ze1_compatibility_mode; please turn it off", E_USER_ERROR);
}
// vim: et sw=4 sts=4

View file

@ -0,0 +1,4 @@
<?php
if (!defined('HTMLPURIFIER_PREFIX')) {
define('HTMLPURIFIER_PREFIX', dirname(__FILE__));
}

View file

@ -0,0 +1,25 @@
<?php
/**
* @file
* Defines a function wrapper for HTML Purifier for quick use.
* @note ''HTMLPurifier()'' is NOT the same as ''new HTMLPurifier()''
*/
/**
* Purify HTML.
* @param string $html String HTML to purify
* @param mixed $config Configuration to use, can be any value accepted by
* HTMLPurifier_Config::create()
* @return string
*/
function HTMLPurifier($html, $config = null)
{
static $purifier = false;
if (!$purifier) {
$purifier = new HTMLPurifier();
}
return $purifier->purify($html, $config);
}
// vim: et sw=4 sts=4

View file

@ -0,0 +1,234 @@
<?php
/**
* @file
* This file was auto-generated by generate-includes.php and includes all of
* the core files required by HTML Purifier. Use this if performance is a
* primary concern and you are using an opcode cache. PLEASE DO NOT EDIT THIS
* FILE, changes will be overwritten the next time the script is run.
*
* @version 4.9.3
*
* @warning
* You must *not* include any other HTML Purifier files before this file,
* because 'require' not 'require_once' is used.
*
* @warning
* This file requires that the include path contains the HTML Purifier
* library directory; this is not auto-set.
*/
require 'HTMLPurifier.php';
require 'HTMLPurifier/Arborize.php';
require 'HTMLPurifier/AttrCollections.php';
require 'HTMLPurifier/AttrDef.php';
require 'HTMLPurifier/AttrTransform.php';
require 'HTMLPurifier/AttrTypes.php';
require 'HTMLPurifier/AttrValidator.php';
require 'HTMLPurifier/Bootstrap.php';
require 'HTMLPurifier/Definition.php';
require 'HTMLPurifier/CSSDefinition.php';
require 'HTMLPurifier/ChildDef.php';
require 'HTMLPurifier/Config.php';
require 'HTMLPurifier/ConfigSchema.php';
require 'HTMLPurifier/ContentSets.php';
require 'HTMLPurifier/Context.php';
require 'HTMLPurifier/DefinitionCache.php';
require 'HTMLPurifier/DefinitionCacheFactory.php';
require 'HTMLPurifier/Doctype.php';
require 'HTMLPurifier/DoctypeRegistry.php';
require 'HTMLPurifier/ElementDef.php';
require 'HTMLPurifier/Encoder.php';
require 'HTMLPurifier/EntityLookup.php';
require 'HTMLPurifier/EntityParser.php';
require 'HTMLPurifier/ErrorCollector.php';
require 'HTMLPurifier/ErrorStruct.php';
require 'HTMLPurifier/Exception.php';
require 'HTMLPurifier/Filter.php';
require 'HTMLPurifier/Generator.php';
require 'HTMLPurifier/HTMLDefinition.php';
require 'HTMLPurifier/HTMLModule.php';
require 'HTMLPurifier/HTMLModuleManager.php';
require 'HTMLPurifier/IDAccumulator.php';
require 'HTMLPurifier/Injector.php';
require 'HTMLPurifier/Language.php';
require 'HTMLPurifier/LanguageFactory.php';
require 'HTMLPurifier/Length.php';
require 'HTMLPurifier/Lexer.php';
require 'HTMLPurifier/Node.php';
require 'HTMLPurifier/PercentEncoder.php';
require 'HTMLPurifier/PropertyList.php';
require 'HTMLPurifier/PropertyListIterator.php';
require 'HTMLPurifier/Queue.php';
require 'HTMLPurifier/Strategy.php';
require 'HTMLPurifier/StringHash.php';
require 'HTMLPurifier/StringHashParser.php';
require 'HTMLPurifier/TagTransform.php';
require 'HTMLPurifier/Token.php';
require 'HTMLPurifier/TokenFactory.php';
require 'HTMLPurifier/URI.php';
require 'HTMLPurifier/URIDefinition.php';
require 'HTMLPurifier/URIFilter.php';
require 'HTMLPurifier/URIParser.php';
require 'HTMLPurifier/URIScheme.php';
require 'HTMLPurifier/URISchemeRegistry.php';
require 'HTMLPurifier/UnitConverter.php';
require 'HTMLPurifier/VarParser.php';
require 'HTMLPurifier/VarParserException.php';
require 'HTMLPurifier/Zipper.php';
require 'HTMLPurifier/AttrDef/CSS.php';
require 'HTMLPurifier/AttrDef/Clone.php';
require 'HTMLPurifier/AttrDef/Enum.php';
require 'HTMLPurifier/AttrDef/Integer.php';
require 'HTMLPurifier/AttrDef/Lang.php';
require 'HTMLPurifier/AttrDef/Switch.php';
require 'HTMLPurifier/AttrDef/Text.php';
require 'HTMLPurifier/AttrDef/URI.php';
require 'HTMLPurifier/AttrDef/CSS/Number.php';
require 'HTMLPurifier/AttrDef/CSS/AlphaValue.php';
require 'HTMLPurifier/AttrDef/CSS/Background.php';
require 'HTMLPurifier/AttrDef/CSS/BackgroundPosition.php';
require 'HTMLPurifier/AttrDef/CSS/Border.php';
require 'HTMLPurifier/AttrDef/CSS/Color.php';
require 'HTMLPurifier/AttrDef/CSS/Composite.php';
require 'HTMLPurifier/AttrDef/CSS/DenyElementDecorator.php';
require 'HTMLPurifier/AttrDef/CSS/Filter.php';
require 'HTMLPurifier/AttrDef/CSS/Font.php';
require 'HTMLPurifier/AttrDef/CSS/FontFamily.php';
require 'HTMLPurifier/AttrDef/CSS/Ident.php';
require 'HTMLPurifier/AttrDef/CSS/ImportantDecorator.php';
require 'HTMLPurifier/AttrDef/CSS/Length.php';
require 'HTMLPurifier/AttrDef/CSS/ListStyle.php';
require 'HTMLPurifier/AttrDef/CSS/Multiple.php';
require 'HTMLPurifier/AttrDef/CSS/Percentage.php';
require 'HTMLPurifier/AttrDef/CSS/TextDecoration.php';
require 'HTMLPurifier/AttrDef/CSS/URI.php';
require 'HTMLPurifier/AttrDef/HTML/Bool.php';
require 'HTMLPurifier/AttrDef/HTML/Nmtokens.php';
require 'HTMLPurifier/AttrDef/HTML/Class.php';
require 'HTMLPurifier/AttrDef/HTML/Color.php';
require 'HTMLPurifier/AttrDef/HTML/FrameTarget.php';
require 'HTMLPurifier/AttrDef/HTML/ID.php';
require 'HTMLPurifier/AttrDef/HTML/Pixels.php';
require 'HTMLPurifier/AttrDef/HTML/Length.php';
require 'HTMLPurifier/AttrDef/HTML/LinkTypes.php';
require 'HTMLPurifier/AttrDef/HTML/MultiLength.php';
require 'HTMLPurifier/AttrDef/URI/Email.php';
require 'HTMLPurifier/AttrDef/URI/Host.php';
require 'HTMLPurifier/AttrDef/URI/IPv4.php';
require 'HTMLPurifier/AttrDef/URI/IPv6.php';
require 'HTMLPurifier/AttrDef/URI/Email/SimpleCheck.php';
require 'HTMLPurifier/AttrTransform/Background.php';
require 'HTMLPurifier/AttrTransform/BdoDir.php';
require 'HTMLPurifier/AttrTransform/BgColor.php';
require 'HTMLPurifier/AttrTransform/BoolToCSS.php';
require 'HTMLPurifier/AttrTransform/Border.php';
require 'HTMLPurifier/AttrTransform/EnumToCSS.php';
require 'HTMLPurifier/AttrTransform/ImgRequired.php';
require 'HTMLPurifier/AttrTransform/ImgSpace.php';
require 'HTMLPurifier/AttrTransform/Input.php';
require 'HTMLPurifier/AttrTransform/Lang.php';
require 'HTMLPurifier/AttrTransform/Length.php';
require 'HTMLPurifier/AttrTransform/Name.php';
require 'HTMLPurifier/AttrTransform/NameSync.php';
require 'HTMLPurifier/AttrTransform/Nofollow.php';
require 'HTMLPurifier/AttrTransform/SafeEmbed.php';
require 'HTMLPurifier/AttrTransform/SafeObject.php';
require 'HTMLPurifier/AttrTransform/SafeParam.php';
require 'HTMLPurifier/AttrTransform/ScriptRequired.php';
require 'HTMLPurifier/AttrTransform/TargetBlank.php';
require 'HTMLPurifier/AttrTransform/TargetNoopener.php';
require 'HTMLPurifier/AttrTransform/TargetNoreferrer.php';
require 'HTMLPurifier/AttrTransform/Textarea.php';
require 'HTMLPurifier/ChildDef/Chameleon.php';
require 'HTMLPurifier/ChildDef/Custom.php';
require 'HTMLPurifier/ChildDef/Empty.php';
require 'HTMLPurifier/ChildDef/List.php';
require 'HTMLPurifier/ChildDef/Required.php';
require 'HTMLPurifier/ChildDef/Optional.php';
require 'HTMLPurifier/ChildDef/StrictBlockquote.php';
require 'HTMLPurifier/ChildDef/Table.php';
require 'HTMLPurifier/DefinitionCache/Decorator.php';
require 'HTMLPurifier/DefinitionCache/Null.php';
require 'HTMLPurifier/DefinitionCache/Serializer.php';
require 'HTMLPurifier/DefinitionCache/Decorator/Cleanup.php';
require 'HTMLPurifier/DefinitionCache/Decorator/Memory.php';
require 'HTMLPurifier/HTMLModule/Bdo.php';
require 'HTMLPurifier/HTMLModule/CommonAttributes.php';
require 'HTMLPurifier/HTMLModule/Edit.php';
require 'HTMLPurifier/HTMLModule/Forms.php';
require 'HTMLPurifier/HTMLModule/Hypertext.php';
require 'HTMLPurifier/HTMLModule/Iframe.php';
require 'HTMLPurifier/HTMLModule/Image.php';
require 'HTMLPurifier/HTMLModule/Legacy.php';
require 'HTMLPurifier/HTMLModule/List.php';
require 'HTMLPurifier/HTMLModule/Name.php';
require 'HTMLPurifier/HTMLModule/Nofollow.php';
require 'HTMLPurifier/HTMLModule/NonXMLCommonAttributes.php';
require 'HTMLPurifier/HTMLModule/Object.php';
require 'HTMLPurifier/HTMLModule/Presentation.php';
require 'HTMLPurifier/HTMLModule/Proprietary.php';
require 'HTMLPurifier/HTMLModule/Ruby.php';
require 'HTMLPurifier/HTMLModule/SafeEmbed.php';
require 'HTMLPurifier/HTMLModule/SafeObject.php';
require 'HTMLPurifier/HTMLModule/SafeScripting.php';
require 'HTMLPurifier/HTMLModule/Scripting.php';
require 'HTMLPurifier/HTMLModule/StyleAttribute.php';
require 'HTMLPurifier/HTMLModule/Tables.php';
require 'HTMLPurifier/HTMLModule/Target.php';
require 'HTMLPurifier/HTMLModule/TargetBlank.php';
require 'HTMLPurifier/HTMLModule/TargetNoopener.php';
require 'HTMLPurifier/HTMLModule/TargetNoreferrer.php';
require 'HTMLPurifier/HTMLModule/Text.php';
require 'HTMLPurifier/HTMLModule/Tidy.php';
require 'HTMLPurifier/HTMLModule/XMLCommonAttributes.php';
require 'HTMLPurifier/HTMLModule/Tidy/Name.php';
require 'HTMLPurifier/HTMLModule/Tidy/Proprietary.php';
require 'HTMLPurifier/HTMLModule/Tidy/XHTMLAndHTML4.php';
require 'HTMLPurifier/HTMLModule/Tidy/Strict.php';
require 'HTMLPurifier/HTMLModule/Tidy/Transitional.php';
require 'HTMLPurifier/HTMLModule/Tidy/XHTML.php';
require 'HTMLPurifier/Injector/AutoParagraph.php';
require 'HTMLPurifier/Injector/DisplayLinkURI.php';
require 'HTMLPurifier/Injector/Linkify.php';
require 'HTMLPurifier/Injector/PurifierLinkify.php';
require 'HTMLPurifier/Injector/RemoveEmpty.php';
require 'HTMLPurifier/Injector/RemoveSpansWithoutAttributes.php';
require 'HTMLPurifier/Injector/SafeObject.php';
require 'HTMLPurifier/Lexer/DOMLex.php';
require 'HTMLPurifier/Lexer/DirectLex.php';
require 'HTMLPurifier/Node/Comment.php';
require 'HTMLPurifier/Node/Element.php';
require 'HTMLPurifier/Node/Text.php';
require 'HTMLPurifier/Strategy/Composite.php';
require 'HTMLPurifier/Strategy/Core.php';
require 'HTMLPurifier/Strategy/FixNesting.php';
require 'HTMLPurifier/Strategy/MakeWellFormed.php';
require 'HTMLPurifier/Strategy/RemoveForeignElements.php';
require 'HTMLPurifier/Strategy/ValidateAttributes.php';
require 'HTMLPurifier/TagTransform/Font.php';
require 'HTMLPurifier/TagTransform/Simple.php';
require 'HTMLPurifier/Token/Comment.php';
require 'HTMLPurifier/Token/Tag.php';
require 'HTMLPurifier/Token/Empty.php';
require 'HTMLPurifier/Token/End.php';
require 'HTMLPurifier/Token/Start.php';
require 'HTMLPurifier/Token/Text.php';
require 'HTMLPurifier/URIFilter/DisableExternal.php';
require 'HTMLPurifier/URIFilter/DisableExternalResources.php';
require 'HTMLPurifier/URIFilter/DisableResources.php';
require 'HTMLPurifier/URIFilter/HostBlacklist.php';
require 'HTMLPurifier/URIFilter/MakeAbsolute.php';
require 'HTMLPurifier/URIFilter/Munge.php';
require 'HTMLPurifier/URIFilter/SafeIframe.php';
require 'HTMLPurifier/URIScheme/data.php';
require 'HTMLPurifier/URIScheme/file.php';
require 'HTMLPurifier/URIScheme/ftp.php';
require 'HTMLPurifier/URIScheme/http.php';
require 'HTMLPurifier/URIScheme/https.php';
require 'HTMLPurifier/URIScheme/mailto.php';
require 'HTMLPurifier/URIScheme/news.php';
require 'HTMLPurifier/URIScheme/nntp.php';
require 'HTMLPurifier/URIScheme/tel.php';
require 'HTMLPurifier/VarParser/Flexible.php';
require 'HTMLPurifier/VarParser/Native.php';

View file

@ -0,0 +1,30 @@
<?php
/**
* @file
* Emulation layer for code that used kses(), substituting in HTML Purifier.
*/
require_once dirname(__FILE__) . '/HTMLPurifier.auto.php';
function kses($string, $allowed_html, $allowed_protocols = null)
{
$config = HTMLPurifier_Config::createDefault();
$allowed_elements = array();
$allowed_attributes = array();
foreach ($allowed_html as $element => $attributes) {
$allowed_elements[$element] = true;
foreach ($attributes as $attribute => $x) {
$allowed_attributes["$element.$attribute"] = true;
}
}
$config->set('HTML.AllowedElements', $allowed_elements);
$config->set('HTML.AllowedAttributes', $allowed_attributes);
if ($allowed_protocols !== null) {
$config->set('URI.AllowedSchemes', $allowed_protocols);
}
$purifier = new HTMLPurifier($config);
return $purifier->purify($string);
}
// vim: et sw=4 sts=4

View file

@ -0,0 +1,11 @@
<?php
/**
* @file
* Convenience stub file that adds HTML Purifier's library file to the path
* without any other side-effects.
*/
set_include_path(dirname(__FILE__) . PATH_SEPARATOR . get_include_path() );
// vim: et sw=4 sts=4

View file

@ -0,0 +1,292 @@
<?php
/*! @mainpage
*
* HTML Purifier is an HTML filter that will take an arbitrary snippet of
* HTML and rigorously test, validate and filter it into a version that
* is safe for output onto webpages. It achieves this by:
*
* -# Lexing (parsing into tokens) the document,
* -# Executing various strategies on the tokens:
* -# Removing all elements not in the whitelist,
* -# Making the tokens well-formed,
* -# Fixing the nesting of the nodes, and
* -# Validating attributes of the nodes; and
* -# Generating HTML from the purified tokens.
*
* However, most users will only need to interface with the HTMLPurifier
* and HTMLPurifier_Config.
*/
/*
HTML Purifier 4.9.3 - Standards Compliant HTML Filtering
Copyright (C) 2006-2008 Edward Z. Yang
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
/**
* Facade that coordinates HTML Purifier's subsystems in order to purify HTML.
*
* @note There are several points in which configuration can be specified
* for HTML Purifier. The precedence of these (from lowest to
* highest) is as follows:
* -# Instance: new HTMLPurifier($config)
* -# Invocation: purify($html, $config)
* These configurations are entirely independent of each other and
* are *not* merged (this behavior may change in the future).
*
* @todo We need an easier way to inject strategies using the configuration
* object.
*/
class HTMLPurifier
{
/**
* Version of HTML Purifier.
* @type string
*/
public $version = '4.9.3';
/**
* Constant with version of HTML Purifier.
*/
const VERSION = '4.9.3';
/**
* Global configuration object.
* @type HTMLPurifier_Config
*/
public $config;
/**
* Array of extra filter objects to run on HTML,
* for backwards compatibility.
* @type HTMLPurifier_Filter[]
*/
private $filters = array();
/**
* Single instance of HTML Purifier.
* @type HTMLPurifier
*/
private static $instance;
/**
* @type HTMLPurifier_Strategy_Core
*/
protected $strategy;
/**
* @type HTMLPurifier_Generator
*/
protected $generator;
/**
* Resultant context of last run purification.
* Is an array of contexts if the last called method was purifyArray().
* @type HTMLPurifier_Context
*/
public $context;
/**
* Initializes the purifier.
*
* @param HTMLPurifier_Config|mixed $config Optional HTMLPurifier_Config object
* for all instances of the purifier, if omitted, a default
* configuration is supplied (which can be overridden on a
* per-use basis).
* The parameter can also be any type that
* HTMLPurifier_Config::create() supports.
*/
public function __construct($config = null)
{
$this->config = HTMLPurifier_Config::create($config);
$this->strategy = new HTMLPurifier_Strategy_Core();
}
/**
* Adds a filter to process the output. First come first serve
*
* @param HTMLPurifier_Filter $filter HTMLPurifier_Filter object
*/
public function addFilter($filter)
{
trigger_error(
'HTMLPurifier->addFilter() is deprecated, use configuration directives' .
' in the Filter namespace or Filter.Custom',
E_USER_WARNING
);
$this->filters[] = $filter;
}
/**
* Filters an HTML snippet/document to be XSS-free and standards-compliant.
*
* @param string $html String of HTML to purify
* @param HTMLPurifier_Config $config Config object for this operation,
* if omitted, defaults to the config object specified during this
* object's construction. The parameter can also be any type
* that HTMLPurifier_Config::create() supports.
*
* @return string Purified HTML
*/
public function purify($html, $config = null)
{
// :TODO: make the config merge in, instead of replace
$config = $config ? HTMLPurifier_Config::create($config) : $this->config;
// implementation is partially environment dependant, partially
// configuration dependant
$lexer = HTMLPurifier_Lexer::create($config);
$context = new HTMLPurifier_Context();
// setup HTML generator
$this->generator = new HTMLPurifier_Generator($config, $context);
$context->register('Generator', $this->generator);
// set up global context variables
if ($config->get('Core.CollectErrors')) {
// may get moved out if other facilities use it
$language_factory = HTMLPurifier_LanguageFactory::instance();
$language = $language_factory->create($config, $context);
$context->register('Locale', $language);
$error_collector = new HTMLPurifier_ErrorCollector($context);
$context->register('ErrorCollector', $error_collector);
}
// setup id_accumulator context, necessary due to the fact that
// AttrValidator can be called from many places
$id_accumulator = HTMLPurifier_IDAccumulator::build($config, $context);
$context->register('IDAccumulator', $id_accumulator);
$html = HTMLPurifier_Encoder::convertToUTF8($html, $config, $context);
// setup filters
$filter_flags = $config->getBatch('Filter');
$custom_filters = $filter_flags['Custom'];
unset($filter_flags['Custom']);
$filters = array();
foreach ($filter_flags as $filter => $flag) {
if (!$flag) {
continue;
}
if (strpos($filter, '.') !== false) {
continue;
}
$class = "HTMLPurifier_Filter_$filter";
$filters[] = new $class;
}
foreach ($custom_filters as $filter) {
// maybe "HTMLPurifier_Filter_$filter", but be consistent with AutoFormat
$filters[] = $filter;
}
$filters = array_merge($filters, $this->filters);
// maybe prepare(), but later
for ($i = 0, $filter_size = count($filters); $i < $filter_size; $i++) {
$html = $filters[$i]->preFilter($html, $config, $context);
}
// purified HTML
$html =
$this->generator->generateFromTokens(
// list of tokens
$this->strategy->execute(
// list of un-purified tokens
$lexer->tokenizeHTML(
// un-purified HTML
$html,
$config,
$context
),
$config,
$context
)
);
for ($i = $filter_size - 1; $i >= 0; $i--) {
$html = $filters[$i]->postFilter($html, $config, $context);
}
$html = HTMLPurifier_Encoder::convertFromUTF8($html, $config, $context);
$this->context =& $context;
return $html;
}
/**
* Filters an array of HTML snippets
*
* @param string[] $array_of_html Array of html snippets
* @param HTMLPurifier_Config $config Optional config object for this operation.
* See HTMLPurifier::purify() for more details.
*
* @return string[] Array of purified HTML
*/
public function purifyArray($array_of_html, $config = null)
{
$context_array = array();
foreach ($array_of_html as $key => $html) {
$array_of_html[$key] = $this->purify($html, $config);
$context_array[$key] = $this->context;
}
$this->context = $context_array;
return $array_of_html;
}
/**
* Singleton for enforcing just one HTML Purifier in your system
*
* @param HTMLPurifier|HTMLPurifier_Config $prototype Optional prototype
* HTMLPurifier instance to overload singleton with,
* or HTMLPurifier_Config instance to configure the
* generated version with.
*
* @return HTMLPurifier
*/
public static function instance($prototype = null)
{
if (!self::$instance || $prototype) {
if ($prototype instanceof HTMLPurifier) {
self::$instance = $prototype;
} elseif ($prototype) {
self::$instance = new HTMLPurifier($prototype);
} else {
self::$instance = new HTMLPurifier();
}
}
return self::$instance;
}
/**
* Singleton for enforcing just one HTML Purifier in your system
*
* @param HTMLPurifier|HTMLPurifier_Config $prototype Optional prototype
* HTMLPurifier instance to overload singleton with,
* or HTMLPurifier_Config instance to configure the
* generated version with.
*
* @return HTMLPurifier
* @note Backwards compatibility, see instance()
*/
public static function getInstance($prototype = null)
{
return HTMLPurifier::instance($prototype);
}
}
// vim: et sw=4 sts=4

View file

@ -0,0 +1,228 @@
<?php
/**
* @file
* This file was auto-generated by generate-includes.php and includes all of
* the core files required by HTML Purifier. This is a convenience stub that
* includes all files using dirname(__FILE__) and require_once. PLEASE DO NOT
* EDIT THIS FILE, changes will be overwritten the next time the script is run.
*
* Changes to include_path are not necessary.
*/
$__dir = dirname(__FILE__);
require_once $__dir . '/HTMLPurifier.php';
require_once $__dir . '/HTMLPurifier/Arborize.php';
require_once $__dir . '/HTMLPurifier/AttrCollections.php';
require_once $__dir . '/HTMLPurifier/AttrDef.php';
require_once $__dir . '/HTMLPurifier/AttrTransform.php';
require_once $__dir . '/HTMLPurifier/AttrTypes.php';
require_once $__dir . '/HTMLPurifier/AttrValidator.php';
require_once $__dir . '/HTMLPurifier/Bootstrap.php';
require_once $__dir . '/HTMLPurifier/Definition.php';
require_once $__dir . '/HTMLPurifier/CSSDefinition.php';
require_once $__dir . '/HTMLPurifier/ChildDef.php';
require_once $__dir . '/HTMLPurifier/Config.php';
require_once $__dir . '/HTMLPurifier/ConfigSchema.php';
require_once $__dir . '/HTMLPurifier/ContentSets.php';
require_once $__dir . '/HTMLPurifier/Context.php';
require_once $__dir . '/HTMLPurifier/DefinitionCache.php';
require_once $__dir . '/HTMLPurifier/DefinitionCacheFactory.php';
require_once $__dir . '/HTMLPurifier/Doctype.php';
require_once $__dir . '/HTMLPurifier/DoctypeRegistry.php';
require_once $__dir . '/HTMLPurifier/ElementDef.php';
require_once $__dir . '/HTMLPurifier/Encoder.php';
require_once $__dir . '/HTMLPurifier/EntityLookup.php';
require_once $__dir . '/HTMLPurifier/EntityParser.php';
require_once $__dir . '/HTMLPurifier/ErrorCollector.php';
require_once $__dir . '/HTMLPurifier/ErrorStruct.php';
require_once $__dir . '/HTMLPurifier/Exception.php';
require_once $__dir . '/HTMLPurifier/Filter.php';
require_once $__dir . '/HTMLPurifier/Generator.php';
require_once $__dir . '/HTMLPurifier/HTMLDefinition.php';
require_once $__dir . '/HTMLPurifier/HTMLModule.php';
require_once $__dir . '/HTMLPurifier/HTMLModuleManager.php';
require_once $__dir . '/HTMLPurifier/IDAccumulator.php';
require_once $__dir . '/HTMLPurifier/Injector.php';
require_once $__dir . '/HTMLPurifier/Language.php';
require_once $__dir . '/HTMLPurifier/LanguageFactory.php';
require_once $__dir . '/HTMLPurifier/Length.php';
require_once $__dir . '/HTMLPurifier/Lexer.php';
require_once $__dir . '/HTMLPurifier/Node.php';
require_once $__dir . '/HTMLPurifier/PercentEncoder.php';
require_once $__dir . '/HTMLPurifier/PropertyList.php';
require_once $__dir . '/HTMLPurifier/PropertyListIterator.php';
require_once $__dir . '/HTMLPurifier/Queue.php';
require_once $__dir . '/HTMLPurifier/Strategy.php';
require_once $__dir . '/HTMLPurifier/StringHash.php';
require_once $__dir . '/HTMLPurifier/StringHashParser.php';
require_once $__dir . '/HTMLPurifier/TagTransform.php';
require_once $__dir . '/HTMLPurifier/Token.php';
require_once $__dir . '/HTMLPurifier/TokenFactory.php';
require_once $__dir . '/HTMLPurifier/URI.php';
require_once $__dir . '/HTMLPurifier/URIDefinition.php';
require_once $__dir . '/HTMLPurifier/URIFilter.php';
require_once $__dir . '/HTMLPurifier/URIParser.php';
require_once $__dir . '/HTMLPurifier/URIScheme.php';
require_once $__dir . '/HTMLPurifier/URISchemeRegistry.php';
require_once $__dir . '/HTMLPurifier/UnitConverter.php';
require_once $__dir . '/HTMLPurifier/VarParser.php';
require_once $__dir . '/HTMLPurifier/VarParserException.php';
require_once $__dir . '/HTMLPurifier/Zipper.php';
require_once $__dir . '/HTMLPurifier/AttrDef/CSS.php';
require_once $__dir . '/HTMLPurifier/AttrDef/Clone.php';
require_once $__dir . '/HTMLPurifier/AttrDef/Enum.php';
require_once $__dir . '/HTMLPurifier/AttrDef/Integer.php';
require_once $__dir . '/HTMLPurifier/AttrDef/Lang.php';
require_once $__dir . '/HTMLPurifier/AttrDef/Switch.php';
require_once $__dir . '/HTMLPurifier/AttrDef/Text.php';
require_once $__dir . '/HTMLPurifier/AttrDef/URI.php';
require_once $__dir . '/HTMLPurifier/AttrDef/CSS/Number.php';
require_once $__dir . '/HTMLPurifier/AttrDef/CSS/AlphaValue.php';
require_once $__dir . '/HTMLPurifier/AttrDef/CSS/Background.php';
require_once $__dir . '/HTMLPurifier/AttrDef/CSS/BackgroundPosition.php';
require_once $__dir . '/HTMLPurifier/AttrDef/CSS/Border.php';
require_once $__dir . '/HTMLPurifier/AttrDef/CSS/Color.php';
require_once $__dir . '/HTMLPurifier/AttrDef/CSS/Composite.php';
require_once $__dir . '/HTMLPurifier/AttrDef/CSS/DenyElementDecorator.php';
require_once $__dir . '/HTMLPurifier/AttrDef/CSS/Filter.php';
require_once $__dir . '/HTMLPurifier/AttrDef/CSS/Font.php';
require_once $__dir . '/HTMLPurifier/AttrDef/CSS/FontFamily.php';
require_once $__dir . '/HTMLPurifier/AttrDef/CSS/Ident.php';
require_once $__dir . '/HTMLPurifier/AttrDef/CSS/ImportantDecorator.php';
require_once $__dir . '/HTMLPurifier/AttrDef/CSS/Length.php';
require_once $__dir . '/HTMLPurifier/AttrDef/CSS/ListStyle.php';
require_once $__dir . '/HTMLPurifier/AttrDef/CSS/Multiple.php';
require_once $__dir . '/HTMLPurifier/AttrDef/CSS/Percentage.php';
require_once $__dir . '/HTMLPurifier/AttrDef/CSS/TextDecoration.php';
require_once $__dir . '/HTMLPurifier/AttrDef/CSS/URI.php';
require_once $__dir . '/HTMLPurifier/AttrDef/HTML/Bool.php';
require_once $__dir . '/HTMLPurifier/AttrDef/HTML/Nmtokens.php';
require_once $__dir . '/HTMLPurifier/AttrDef/HTML/Class.php';
require_once $__dir . '/HTMLPurifier/AttrDef/HTML/Color.php';
require_once $__dir . '/HTMLPurifier/AttrDef/HTML/FrameTarget.php';
require_once $__dir . '/HTMLPurifier/AttrDef/HTML/ID.php';
require_once $__dir . '/HTMLPurifier/AttrDef/HTML/Pixels.php';
require_once $__dir . '/HTMLPurifier/AttrDef/HTML/Length.php';
require_once $__dir . '/HTMLPurifier/AttrDef/HTML/LinkTypes.php';
require_once $__dir . '/HTMLPurifier/AttrDef/HTML/MultiLength.php';
require_once $__dir . '/HTMLPurifier/AttrDef/URI/Email.php';
require_once $__dir . '/HTMLPurifier/AttrDef/URI/Host.php';
require_once $__dir . '/HTMLPurifier/AttrDef/URI/IPv4.php';
require_once $__dir . '/HTMLPurifier/AttrDef/URI/IPv6.php';
require_once $__dir . '/HTMLPurifier/AttrDef/URI/Email/SimpleCheck.php';
require_once $__dir . '/HTMLPurifier/AttrTransform/Background.php';
require_once $__dir . '/HTMLPurifier/AttrTransform/BdoDir.php';
require_once $__dir . '/HTMLPurifier/AttrTransform/BgColor.php';
require_once $__dir . '/HTMLPurifier/AttrTransform/BoolToCSS.php';
require_once $__dir . '/HTMLPurifier/AttrTransform/Border.php';
require_once $__dir . '/HTMLPurifier/AttrTransform/EnumToCSS.php';
require_once $__dir . '/HTMLPurifier/AttrTransform/ImgRequired.php';
require_once $__dir . '/HTMLPurifier/AttrTransform/ImgSpace.php';
require_once $__dir . '/HTMLPurifier/AttrTransform/Input.php';
require_once $__dir . '/HTMLPurifier/AttrTransform/Lang.php';
require_once $__dir . '/HTMLPurifier/AttrTransform/Length.php';
require_once $__dir . '/HTMLPurifier/AttrTransform/Name.php';
require_once $__dir . '/HTMLPurifier/AttrTransform/NameSync.php';
require_once $__dir . '/HTMLPurifier/AttrTransform/Nofollow.php';
require_once $__dir . '/HTMLPurifier/AttrTransform/SafeEmbed.php';
require_once $__dir . '/HTMLPurifier/AttrTransform/SafeObject.php';
require_once $__dir . '/HTMLPurifier/AttrTransform/SafeParam.php';
require_once $__dir . '/HTMLPurifier/AttrTransform/ScriptRequired.php';
require_once $__dir . '/HTMLPurifier/AttrTransform/TargetBlank.php';
require_once $__dir . '/HTMLPurifier/AttrTransform/TargetNoopener.php';
require_once $__dir . '/HTMLPurifier/AttrTransform/TargetNoreferrer.php';
require_once $__dir . '/HTMLPurifier/AttrTransform/Textarea.php';
require_once $__dir . '/HTMLPurifier/ChildDef/Chameleon.php';
require_once $__dir . '/HTMLPurifier/ChildDef/Custom.php';
require_once $__dir . '/HTMLPurifier/ChildDef/Empty.php';
require_once $__dir . '/HTMLPurifier/ChildDef/List.php';
require_once $__dir . '/HTMLPurifier/ChildDef/Required.php';
require_once $__dir . '/HTMLPurifier/ChildDef/Optional.php';
require_once $__dir . '/HTMLPurifier/ChildDef/StrictBlockquote.php';
require_once $__dir . '/HTMLPurifier/ChildDef/Table.php';
require_once $__dir . '/HTMLPurifier/DefinitionCache/Decorator.php';
require_once $__dir . '/HTMLPurifier/DefinitionCache/Null.php';
require_once $__dir . '/HTMLPurifier/DefinitionCache/Serializer.php';
require_once $__dir . '/HTMLPurifier/DefinitionCache/Decorator/Cleanup.php';
require_once $__dir . '/HTMLPurifier/DefinitionCache/Decorator/Memory.php';
require_once $__dir . '/HTMLPurifier/HTMLModule/Bdo.php';
require_once $__dir . '/HTMLPurifier/HTMLModule/CommonAttributes.php';
require_once $__dir . '/HTMLPurifier/HTMLModule/Edit.php';
require_once $__dir . '/HTMLPurifier/HTMLModule/Forms.php';
require_once $__dir . '/HTMLPurifier/HTMLModule/Hypertext.php';
require_once $__dir . '/HTMLPurifier/HTMLModule/Iframe.php';
require_once $__dir . '/HTMLPurifier/HTMLModule/Image.php';
require_once $__dir . '/HTMLPurifier/HTMLModule/Legacy.php';
require_once $__dir . '/HTMLPurifier/HTMLModule/List.php';
require_once $__dir . '/HTMLPurifier/HTMLModule/Name.php';
require_once $__dir . '/HTMLPurifier/HTMLModule/Nofollow.php';
require_once $__dir . '/HTMLPurifier/HTMLModule/NonXMLCommonAttributes.php';
require_once $__dir . '/HTMLPurifier/HTMLModule/Object.php';
require_once $__dir . '/HTMLPurifier/HTMLModule/Presentation.php';
require_once $__dir . '/HTMLPurifier/HTMLModule/Proprietary.php';
require_once $__dir . '/HTMLPurifier/HTMLModule/Ruby.php';
require_once $__dir . '/HTMLPurifier/HTMLModule/SafeEmbed.php';
require_once $__dir . '/HTMLPurifier/HTMLModule/SafeObject.php';
require_once $__dir . '/HTMLPurifier/HTMLModule/SafeScripting.php';
require_once $__dir . '/HTMLPurifier/HTMLModule/Scripting.php';
require_once $__dir . '/HTMLPurifier/HTMLModule/StyleAttribute.php';
require_once $__dir . '/HTMLPurifier/HTMLModule/Tables.php';
require_once $__dir . '/HTMLPurifier/HTMLModule/Target.php';
require_once $__dir . '/HTMLPurifier/HTMLModule/TargetBlank.php';
require_once $__dir . '/HTMLPurifier/HTMLModule/TargetNoopener.php';
require_once $__dir . '/HTMLPurifier/HTMLModule/TargetNoreferrer.php';
require_once $__dir . '/HTMLPurifier/HTMLModule/Text.php';
require_once $__dir . '/HTMLPurifier/HTMLModule/Tidy.php';
require_once $__dir . '/HTMLPurifier/HTMLModule/XMLCommonAttributes.php';
require_once $__dir . '/HTMLPurifier/HTMLModule/Tidy/Name.php';
require_once $__dir . '/HTMLPurifier/HTMLModule/Tidy/Proprietary.php';
require_once $__dir . '/HTMLPurifier/HTMLModule/Tidy/XHTMLAndHTML4.php';
require_once $__dir . '/HTMLPurifier/HTMLModule/Tidy/Strict.php';
require_once $__dir . '/HTMLPurifier/HTMLModule/Tidy/Transitional.php';
require_once $__dir . '/HTMLPurifier/HTMLModule/Tidy/XHTML.php';
require_once $__dir . '/HTMLPurifier/Injector/AutoParagraph.php';
require_once $__dir . '/HTMLPurifier/Injector/DisplayLinkURI.php';
require_once $__dir . '/HTMLPurifier/Injector/Linkify.php';
require_once $__dir . '/HTMLPurifier/Injector/PurifierLinkify.php';
require_once $__dir . '/HTMLPurifier/Injector/RemoveEmpty.php';
require_once $__dir . '/HTMLPurifier/Injector/RemoveSpansWithoutAttributes.php';
require_once $__dir . '/HTMLPurifier/Injector/SafeObject.php';
require_once $__dir . '/HTMLPurifier/Lexer/DOMLex.php';
require_once $__dir . '/HTMLPurifier/Lexer/DirectLex.php';
require_once $__dir . '/HTMLPurifier/Node/Comment.php';
require_once $__dir . '/HTMLPurifier/Node/Element.php';
require_once $__dir . '/HTMLPurifier/Node/Text.php';
require_once $__dir . '/HTMLPurifier/Strategy/Composite.php';
require_once $__dir . '/HTMLPurifier/Strategy/Core.php';
require_once $__dir . '/HTMLPurifier/Strategy/FixNesting.php';
require_once $__dir . '/HTMLPurifier/Strategy/MakeWellFormed.php';
require_once $__dir . '/HTMLPurifier/Strategy/RemoveForeignElements.php';
require_once $__dir . '/HTMLPurifier/Strategy/ValidateAttributes.php';
require_once $__dir . '/HTMLPurifier/TagTransform/Font.php';
require_once $__dir . '/HTMLPurifier/TagTransform/Simple.php';
require_once $__dir . '/HTMLPurifier/Token/Comment.php';
require_once $__dir . '/HTMLPurifier/Token/Tag.php';
require_once $__dir . '/HTMLPurifier/Token/Empty.php';
require_once $__dir . '/HTMLPurifier/Token/End.php';
require_once $__dir . '/HTMLPurifier/Token/Start.php';
require_once $__dir . '/HTMLPurifier/Token/Text.php';
require_once $__dir . '/HTMLPurifier/URIFilter/DisableExternal.php';
require_once $__dir . '/HTMLPurifier/URIFilter/DisableExternalResources.php';
require_once $__dir . '/HTMLPurifier/URIFilter/DisableResources.php';
require_once $__dir . '/HTMLPurifier/URIFilter/HostBlacklist.php';
require_once $__dir . '/HTMLPurifier/URIFilter/MakeAbsolute.php';
require_once $__dir . '/HTMLPurifier/URIFilter/Munge.php';
require_once $__dir . '/HTMLPurifier/URIFilter/SafeIframe.php';
require_once $__dir . '/HTMLPurifier/URIScheme/data.php';
require_once $__dir . '/HTMLPurifier/URIScheme/file.php';
require_once $__dir . '/HTMLPurifier/URIScheme/ftp.php';
require_once $__dir . '/HTMLPurifier/URIScheme/http.php';
require_once $__dir . '/HTMLPurifier/URIScheme/https.php';
require_once $__dir . '/HTMLPurifier/URIScheme/mailto.php';
require_once $__dir . '/HTMLPurifier/URIScheme/news.php';
require_once $__dir . '/HTMLPurifier/URIScheme/nntp.php';
require_once $__dir . '/HTMLPurifier/URIScheme/tel.php';
require_once $__dir . '/HTMLPurifier/VarParser/Flexible.php';
require_once $__dir . '/HTMLPurifier/VarParser/Native.php';

View file

@ -0,0 +1,71 @@
<?php
/**
* Converts a stream of HTMLPurifier_Token into an HTMLPurifier_Node,
* and back again.
*
* @note This transformation is not an equivalence. We mutate the input
* token stream to make it so; see all [MUT] markers in code.
*/
class HTMLPurifier_Arborize
{
public static function arborize($tokens, $config, $context) {
$definition = $config->getHTMLDefinition();
$parent = new HTMLPurifier_Token_Start($definition->info_parent);
$stack = array($parent->toNode());
foreach ($tokens as $token) {
$token->skip = null; // [MUT]
$token->carryover = null; // [MUT]
if ($token instanceof HTMLPurifier_Token_End) {
$token->start = null; // [MUT]
$r = array_pop($stack);
//assert($r->name === $token->name);
//assert(empty($token->attr));
$r->endCol = $token->col;
$r->endLine = $token->line;
$r->endArmor = $token->armor;
continue;
}
$node = $token->toNode();
$stack[count($stack)-1]->children[] = $node;
if ($token instanceof HTMLPurifier_Token_Start) {
$stack[] = $node;
}
}
//assert(count($stack) == 1);
return $stack[0];
}
public static function flatten($node, $config, $context) {
$level = 0;
$nodes = array($level => new HTMLPurifier_Queue(array($node)));
$closingTokens = array();
$tokens = array();
do {
while (!$nodes[$level]->isEmpty()) {
$node = $nodes[$level]->shift(); // FIFO
list($start, $end) = $node->toTokenPair();
if ($level > 0) {
$tokens[] = $start;
}
if ($end !== NULL) {
$closingTokens[$level][] = $end;
}
if ($node instanceof HTMLPurifier_Node_Element) {
$level++;
$nodes[$level] = new HTMLPurifier_Queue();
foreach ($node->children as $childNode) {
$nodes[$level]->push($childNode);
}
}
}
$level--;
if ($level && isset($closingTokens[$level])) {
while ($token = array_pop($closingTokens[$level])) {
$tokens[] = $token;
}
}
} while ($level > 0);
return $tokens;
}
}

View file

@ -0,0 +1,148 @@
<?php
/**
* Defines common attribute collections that modules reference
*/
class HTMLPurifier_AttrCollections
{
/**
* Associative array of attribute collections, indexed by name.
* @type array
*/
public $info = array();
/**
* Performs all expansions on internal data for use by other inclusions
* It also collects all attribute collection extensions from
* modules
* @param HTMLPurifier_AttrTypes $attr_types HTMLPurifier_AttrTypes instance
* @param HTMLPurifier_HTMLModule[] $modules Hash array of HTMLPurifier_HTMLModule members
*/
public function __construct($attr_types, $modules)
{
$this->doConstruct($attr_types, $modules);
}
public function doConstruct($attr_types, $modules)
{
// load extensions from the modules
foreach ($modules as $module) {
foreach ($module->attr_collections as $coll_i => $coll) {
if (!isset($this->info[$coll_i])) {
$this->info[$coll_i] = array();
}
foreach ($coll as $attr_i => $attr) {
if ($attr_i === 0 && isset($this->info[$coll_i][$attr_i])) {
// merge in includes
$this->info[$coll_i][$attr_i] = array_merge(
$this->info[$coll_i][$attr_i],
$attr
);
continue;
}
$this->info[$coll_i][$attr_i] = $attr;
}
}
}
// perform internal expansions and inclusions
foreach ($this->info as $name => $attr) {
// merge attribute collections that include others
$this->performInclusions($this->info[$name]);
// replace string identifiers with actual attribute objects
$this->expandIdentifiers($this->info[$name], $attr_types);
}
}
/**
* Takes a reference to an attribute associative array and performs
* all inclusions specified by the zero index.
* @param array &$attr Reference to attribute array
*/
public function performInclusions(&$attr)
{
if (!isset($attr[0])) {
return;
}
$merge = $attr[0];
$seen = array(); // recursion guard
// loop through all the inclusions
for ($i = 0; isset($merge[$i]); $i++) {
if (isset($seen[$merge[$i]])) {
continue;
}
$seen[$merge[$i]] = true;
// foreach attribute of the inclusion, copy it over
if (!isset($this->info[$merge[$i]])) {
continue;
}
foreach ($this->info[$merge[$i]] as $key => $value) {
if (isset($attr[$key])) {
continue;
} // also catches more inclusions
$attr[$key] = $value;
}
if (isset($this->info[$merge[$i]][0])) {
// recursion
$merge = array_merge($merge, $this->info[$merge[$i]][0]);
}
}
unset($attr[0]);
}
/**
* Expands all string identifiers in an attribute array by replacing
* them with the appropriate values inside HTMLPurifier_AttrTypes
* @param array &$attr Reference to attribute array
* @param HTMLPurifier_AttrTypes $attr_types HTMLPurifier_AttrTypes instance
*/
public function expandIdentifiers(&$attr, $attr_types)
{
// because foreach will process new elements we add, make sure we
// skip duplicates
$processed = array();
foreach ($attr as $def_i => $def) {
// skip inclusions
if ($def_i === 0) {
continue;
}
if (isset($processed[$def_i])) {
continue;
}
// determine whether or not attribute is required
if ($required = (strpos($def_i, '*') !== false)) {
// rename the definition
unset($attr[$def_i]);
$def_i = trim($def_i, '*');
$attr[$def_i] = $def;
}
$processed[$def_i] = true;
// if we've already got a literal object, move on
if (is_object($def)) {
// preserve previous required
$attr[$def_i]->required = ($required || $attr[$def_i]->required);
continue;
}
if ($def === false) {
unset($attr[$def_i]);
continue;
}
if ($t = $attr_types->get($def)) {
$attr[$def_i] = $t;
$attr[$def_i]->required = $required;
} else {
unset($attr[$def_i]);
}
}
}
}
// vim: et sw=4 sts=4

View file

@ -0,0 +1,144 @@
<?php
/**
* Base class for all validating attribute definitions.
*
* This family of classes forms the core for not only HTML attribute validation,
* but also any sort of string that needs to be validated or cleaned (which
* means CSS properties and composite definitions are defined here too).
* Besides defining (through code) what precisely makes the string valid,
* subclasses are also responsible for cleaning the code if possible.
*/
abstract class HTMLPurifier_AttrDef
{
/**
* Tells us whether or not an HTML attribute is minimized.
* Has no meaning in other contexts.
* @type bool
*/
public $minimized = false;
/**
* Tells us whether or not an HTML attribute is required.
* Has no meaning in other contexts
* @type bool
*/
public $required = false;
/**
* Validates and cleans passed string according to a definition.
*
* @param string $string String to be validated and cleaned.
* @param HTMLPurifier_Config $config Mandatory HTMLPurifier_Config object.
* @param HTMLPurifier_Context $context Mandatory HTMLPurifier_Context object.
*/
abstract public function validate($string, $config, $context);
/**
* Convenience method that parses a string as if it were CDATA.
*
* This method process a string in the manner specified at
* <http://www.w3.org/TR/html4/types.html#h-6.2> by removing
* leading and trailing whitespace, ignoring line feeds, and replacing
* carriage returns and tabs with spaces. While most useful for HTML
* attributes specified as CDATA, it can also be applied to most CSS
* values.
*
* @note This method is not entirely standards compliant, as trim() removes
* more types of whitespace than specified in the spec. In practice,
* this is rarely a problem, as those extra characters usually have
* already been removed by HTMLPurifier_Encoder.
*
* @warning This processing is inconsistent with XML's whitespace handling
* as specified by section 3.3.3 and referenced XHTML 1.0 section
* 4.7. However, note that we are NOT necessarily
* parsing XML, thus, this behavior may still be correct. We
* assume that newlines have been normalized.
*/
public function parseCDATA($string)
{
$string = trim($string);
$string = str_replace(array("\n", "\t", "\r"), ' ', $string);
return $string;
}
/**
* Factory method for creating this class from a string.
* @param string $string String construction info
* @return HTMLPurifier_AttrDef Created AttrDef object corresponding to $string
*/
public function make($string)
{
// default implementation, return a flyweight of this object.
// If $string has an effect on the returned object (i.e. you
// need to overload this method), it is best
// to clone or instantiate new copies. (Instantiation is safer.)
return $this;
}
/**
* Removes spaces from rgb(0, 0, 0) so that shorthand CSS properties work
* properly. THIS IS A HACK!
* @param string $string a CSS colour definition
* @return string
*/
protected function mungeRgb($string)
{
$p = '\s*(\d+(\.\d+)?([%]?))\s*';
if (preg_match('/(rgba|hsla)\(/', $string)) {
return preg_replace('/(rgba|hsla)\('.$p.','.$p.','.$p.','.$p.'\)/', '\1(\2,\5,\8,\11)', $string);
}
return preg_replace('/(rgb|hsl)\('.$p.','.$p.','.$p.'\)/', '\1(\2,\5,\8)', $string);
}
/**
* Parses a possibly escaped CSS string and returns the "pure"
* version of it.
*/
protected function expandCSSEscape($string)
{
// flexibly parse it
$ret = '';
for ($i = 0, $c = strlen($string); $i < $c; $i++) {
if ($string[$i] === '\\') {
$i++;
if ($i >= $c) {
$ret .= '\\';
break;
}
if (ctype_xdigit($string[$i])) {
$code = $string[$i];
for ($a = 1, $i++; $i < $c && $a < 6; $i++, $a++) {
if (!ctype_xdigit($string[$i])) {
break;
}
$code .= $string[$i];
}
// We have to be extremely careful when adding
// new characters, to make sure we're not breaking
// the encoding.
$char = HTMLPurifier_Encoder::unichr(hexdec($code));
if (HTMLPurifier_Encoder::cleanUTF8($char) === '') {
continue;
}
$ret .= $char;
if ($i < $c && trim($string[$i]) !== '') {
$i--;
}
continue;
}
if ($string[$i] === "\n") {
continue;
}
}
$ret .= $string[$i];
}
return $ret;
}
}
// vim: et sw=4 sts=4

View file

@ -0,0 +1,136 @@
<?php
/**
* Validates the HTML attribute style, otherwise known as CSS.
* @note We don't implement the whole CSS specification, so it might be
* difficult to reuse this component in the context of validating
* actual stylesheet declarations.
* @note If we were really serious about validating the CSS, we would
* tokenize the styles and then parse the tokens. Obviously, we
* are not doing that. Doing that could seriously harm performance,
* but would make these components a lot more viable for a CSS
* filtering solution.
*/
class HTMLPurifier_AttrDef_CSS extends HTMLPurifier_AttrDef
{
/**
* @param string $css
* @param HTMLPurifier_Config $config
* @param HTMLPurifier_Context $context
* @return bool|string
*/
public function validate($css, $config, $context)
{
$css = $this->parseCDATA($css);
$definition = $config->getCSSDefinition();
$allow_duplicates = $config->get("CSS.AllowDuplicates");
// According to the CSS2.1 spec, the places where a
// non-delimiting semicolon can appear are in strings
// escape sequences. So here is some dumb hack to
// handle quotes.
$len = strlen($css);
$accum = "";
$declarations = array();
$quoted = false;
for ($i = 0; $i < $len; $i++) {
$c = strcspn($css, ";'\"", $i);
$accum .= substr($css, $i, $c);
$i += $c;
if ($i == $len) break;
$d = $css[$i];
if ($quoted) {
$accum .= $d;
if ($d == $quoted) {
$quoted = false;
}
} else {
if ($d == ";") {
$declarations[] = $accum;
$accum = "";
} else {
$accum .= $d;
$quoted = $d;
}
}
}
if ($accum != "") $declarations[] = $accum;
$propvalues = array();
$new_declarations = '';
/**
* Name of the current CSS property being validated.
*/
$property = false;
$context->register('CurrentCSSProperty', $property);
foreach ($declarations as $declaration) {
if (!$declaration) {
continue;
}
if (!strpos($declaration, ':')) {
continue;
}
list($property, $value) = explode(':', $declaration, 2);
$property = trim($property);
$value = trim($value);
$ok = false;
do {
if (isset($definition->info[$property])) {
$ok = true;
break;
}
if (ctype_lower($property)) {
break;
}
$property = strtolower($property);
if (isset($definition->info[$property])) {
$ok = true;
break;
}
} while (0);
if (!$ok) {
continue;
}
// inefficient call, since the validator will do this again
if (strtolower(trim($value)) !== 'inherit') {
// inherit works for everything (but only on the base property)
$result = $definition->info[$property]->validate(
$value,
$config,
$context
);
} else {
$result = 'inherit';
}
if ($result === false) {
continue;
}
if ($allow_duplicates) {
$new_declarations .= "$property:$result;";
} else {
$propvalues[$property] = $result;
}
}
$context->destroy('CurrentCSSProperty');
// procedure does not write the new CSS simultaneously, so it's
// slightly inefficient, but it's the only way of getting rid of
// duplicates. Perhaps config to optimize it, but not now.
foreach ($propvalues as $prop => $value) {
$new_declarations .= "$prop:$value;";
}
return $new_declarations ? $new_declarations : false;
}
}
// vim: et sw=4 sts=4

View file

@ -0,0 +1,34 @@
<?php
class HTMLPurifier_AttrDef_CSS_AlphaValue extends HTMLPurifier_AttrDef_CSS_Number
{
public function __construct()
{
parent::__construct(false); // opacity is non-negative, but we will clamp it
}
/**
* @param string $number
* @param HTMLPurifier_Config $config
* @param HTMLPurifier_Context $context
* @return string
*/
public function validate($number, $config, $context)
{
$result = parent::validate($number, $config, $context);
if ($result === false) {
return $result;
}
$float = (float)$result;
if ($float < 0.0) {
$result = '0';
}
if ($float > 1.0) {
$result = '1';
}
return $result;
}
}
// vim: et sw=4 sts=4

View file

@ -0,0 +1,111 @@
<?php
/**
* Validates shorthand CSS property background.
* @warning Does not support url tokens that have internal spaces.
*/
class HTMLPurifier_AttrDef_CSS_Background extends HTMLPurifier_AttrDef
{
/**
* Local copy of component validators.
* @type HTMLPurifier_AttrDef[]
* @note See HTMLPurifier_AttrDef_Font::$info for a similar impl.
*/
protected $info;
/**
* @param HTMLPurifier_Config $config
*/
public function __construct($config)
{
$def = $config->getCSSDefinition();
$this->info['background-color'] = $def->info['background-color'];
$this->info['background-image'] = $def->info['background-image'];
$this->info['background-repeat'] = $def->info['background-repeat'];
$this->info['background-attachment'] = $def->info['background-attachment'];
$this->info['background-position'] = $def->info['background-position'];
}
/**
* @param string $string
* @param HTMLPurifier_Config $config
* @param HTMLPurifier_Context $context
* @return bool|string
*/
public function validate($string, $config, $context)
{
// regular pre-processing
$string = $this->parseCDATA($string);
if ($string === '') {
return false;
}
// munge rgb() decl if necessary
$string = $this->mungeRgb($string);
// assumes URI doesn't have spaces in it
$bits = explode(' ', $string); // bits to process
$caught = array();
$caught['color'] = false;
$caught['image'] = false;
$caught['repeat'] = false;
$caught['attachment'] = false;
$caught['position'] = false;
$i = 0; // number of catches
foreach ($bits as $bit) {
if ($bit === '') {
continue;
}
foreach ($caught as $key => $status) {
if ($key != 'position') {
if ($status !== false) {
continue;
}
$r = $this->info['background-' . $key]->validate($bit, $config, $context);
} else {
$r = $bit;
}
if ($r === false) {
continue;
}
if ($key == 'position') {
if ($caught[$key] === false) {
$caught[$key] = '';
}
$caught[$key] .= $r . ' ';
} else {
$caught[$key] = $r;
}
$i++;
break;
}
}
if (!$i) {
return false;
}
if ($caught['position'] !== false) {
$caught['position'] = $this->info['background-position']->
validate($caught['position'], $config, $context);
}
$ret = array();
foreach ($caught as $value) {
if ($value === false) {
continue;
}
$ret[] = $value;
}
if (empty($ret)) {
return false;
}
return implode(' ', $ret);
}
}
// vim: et sw=4 sts=4

View file

@ -0,0 +1,157 @@
<?php
/* W3C says:
[ // adjective and number must be in correct order, even if
// you could switch them without introducing ambiguity.
// some browsers support that syntax
[
<percentage> | <length> | left | center | right
]
[
<percentage> | <length> | top | center | bottom
]?
] |
[ // this signifies that the vertical and horizontal adjectives
// can be arbitrarily ordered, however, there can only be two,
// one of each, or none at all
[
left | center | right
] ||
[
top | center | bottom
]
]
top, left = 0%
center, (none) = 50%
bottom, right = 100%
*/
/* QuirksMode says:
keyword + length/percentage must be ordered correctly, as per W3C
Internet Explorer and Opera, however, support arbitrary ordering. We
should fix it up.
Minor issue though, not strictly necessary.
*/
// control freaks may appreciate the ability to convert these to
// percentages or something, but it's not necessary
/**
* Validates the value of background-position.
*/
class HTMLPurifier_AttrDef_CSS_BackgroundPosition extends HTMLPurifier_AttrDef
{
/**
* @type HTMLPurifier_AttrDef_CSS_Length
*/
protected $length;
/**
* @type HTMLPurifier_AttrDef_CSS_Percentage
*/
protected $percentage;
public function __construct()
{
$this->length = new HTMLPurifier_AttrDef_CSS_Length();
$this->percentage = new HTMLPurifier_AttrDef_CSS_Percentage();
}
/**
* @param string $string
* @param HTMLPurifier_Config $config
* @param HTMLPurifier_Context $context
* @return bool|string
*/
public function validate($string, $config, $context)
{
$string = $this->parseCDATA($string);
$bits = explode(' ', $string);
$keywords = array();
$keywords['h'] = false; // left, right
$keywords['v'] = false; // top, bottom
$keywords['ch'] = false; // center (first word)
$keywords['cv'] = false; // center (second word)
$measures = array();
$i = 0;
$lookup = array(
'top' => 'v',
'bottom' => 'v',
'left' => 'h',
'right' => 'h',
'center' => 'c'
);
foreach ($bits as $bit) {
if ($bit === '') {
continue;
}
// test for keyword
$lbit = ctype_lower($bit) ? $bit : strtolower($bit);
if (isset($lookup[$lbit])) {
$status = $lookup[$lbit];
if ($status == 'c') {
if ($i == 0) {
$status = 'ch';
} else {
$status = 'cv';
}
}
$keywords[$status] = $lbit;
$i++;
}
// test for length
$r = $this->length->validate($bit, $config, $context);
if ($r !== false) {
$measures[] = $r;
$i++;
}
// test for percentage
$r = $this->percentage->validate($bit, $config, $context);
if ($r !== false) {
$measures[] = $r;
$i++;
}
}
if (!$i) {
return false;
} // no valid values were caught
$ret = array();
// first keyword
if ($keywords['h']) {
$ret[] = $keywords['h'];
} elseif ($keywords['ch']) {
$ret[] = $keywords['ch'];
$keywords['cv'] = false; // prevent re-use: center = center center
} elseif (count($measures)) {
$ret[] = array_shift($measures);
}
if ($keywords['v']) {
$ret[] = $keywords['v'];
} elseif ($keywords['cv']) {
$ret[] = $keywords['cv'];
} elseif (count($measures)) {
$ret[] = array_shift($measures);
}
if (empty($ret)) {
return false;
}
return implode(' ', $ret);
}
}
// vim: et sw=4 sts=4

View file

@ -0,0 +1,56 @@
<?php
/**
* Validates the border property as defined by CSS.
*/
class HTMLPurifier_AttrDef_CSS_Border extends HTMLPurifier_AttrDef
{
/**
* Local copy of properties this property is shorthand for.
* @type HTMLPurifier_AttrDef[]
*/
protected $info = array();
/**
* @param HTMLPurifier_Config $config
*/
public function __construct($config)
{
$def = $config->getCSSDefinition();
$this->info['border-width'] = $def->info['border-width'];
$this->info['border-style'] = $def->info['border-style'];
$this->info['border-top-color'] = $def->info['border-top-color'];
}
/**
* @param string $string
* @param HTMLPurifier_Config $config
* @param HTMLPurifier_Context $context
* @return bool|string
*/
public function validate($string, $config, $context)
{
$string = $this->parseCDATA($string);
$string = $this->mungeRgb($string);
$bits = explode(' ', $string);
$done = array(); // segments we've finished
$ret = ''; // return value
foreach ($bits as $bit) {
foreach ($this->info as $propname => $validator) {
if (isset($done[$propname])) {
continue;
}
$r = $validator->validate($bit, $config, $context);
if ($r !== false) {
$ret .= $r . ' ';
$done[$propname] = true;
break;
}
}
}
return rtrim($ret);
}
}
// vim: et sw=4 sts=4

View file

@ -0,0 +1,161 @@
<?php
/**
* Validates Color as defined by CSS.
*/
class HTMLPurifier_AttrDef_CSS_Color extends HTMLPurifier_AttrDef
{
/**
* @type HTMLPurifier_AttrDef_CSS_AlphaValue
*/
protected $alpha;
public function __construct()
{
$this->alpha = new HTMLPurifier_AttrDef_CSS_AlphaValue();
}
/**
* @param string $color
* @param HTMLPurifier_Config $config
* @param HTMLPurifier_Context $context
* @return bool|string
*/
public function validate($color, $config, $context)
{
static $colors = null;
if ($colors === null) {
$colors = $config->get('Core.ColorKeywords');
}
$color = trim($color);
if ($color === '') {
return false;
}
$lower = strtolower($color);
if (isset($colors[$lower])) {
return $colors[$lower];
}
if (preg_match('#(rgb|rgba|hsl|hsla)\(#', $color, $matches) === 1) {
$length = strlen($color);
if (strpos($color, ')') !== $length - 1) {
return false;
}
// get used function : rgb, rgba, hsl or hsla
$function = $matches[1];
$parameters_size = 3;
$alpha_channel = false;
if (substr($function, -1) === 'a') {
$parameters_size = 4;
$alpha_channel = true;
}
/*
* Allowed types for values :
* parameter_position => [type => max_value]
*/
$allowed_types = array(
1 => array('percentage' => 100, 'integer' => 255),
2 => array('percentage' => 100, 'integer' => 255),
3 => array('percentage' => 100, 'integer' => 255),
);
$allow_different_types = false;
if (strpos($function, 'hsl') !== false) {
$allowed_types = array(
1 => array('integer' => 360),
2 => array('percentage' => 100),
3 => array('percentage' => 100),
);
$allow_different_types = true;
}
$values = trim(str_replace($function, '', $color), ' ()');
$parts = explode(',', $values);
if (count($parts) !== $parameters_size) {
return false;
}
$type = false;
$new_parts = array();
$i = 0;
foreach ($parts as $part) {
$i++;
$part = trim($part);
if ($part === '') {
return false;
}
// different check for alpha channel
if ($alpha_channel === true && $i === count($parts)) {
$result = $this->alpha->validate($part, $config, $context);
if ($result === false) {
return false;
}
$new_parts[] = (string)$result;
continue;
}
if (substr($part, -1) === '%') {
$current_type = 'percentage';
} else {
$current_type = 'integer';
}
if (!array_key_exists($current_type, $allowed_types[$i])) {
return false;
}
if (!$type) {
$type = $current_type;
}
if ($allow_different_types === false && $type != $current_type) {
return false;
}
$max_value = $allowed_types[$i][$current_type];
if ($current_type == 'integer') {
// Return value between range 0 -> $max_value
$new_parts[] = (int)max(min($part, $max_value), 0);
} elseif ($current_type == 'percentage') {
$new_parts[] = (float)max(min(rtrim($part, '%'), $max_value), 0) . '%';
}
}
$new_values = implode(',', $new_parts);
$color = $function . '(' . $new_values . ')';
} else {
// hexadecimal handling
if ($color[0] === '#') {
$hex = substr($color, 1);
} else {
$hex = $color;
$color = '#' . $color;
}
$length = strlen($hex);
if ($length !== 3 && $length !== 6) {
return false;
}
if (!ctype_xdigit($hex)) {
return false;
}
}
return $color;
}
}
// vim: et sw=4 sts=4

View file

@ -0,0 +1,48 @@
<?php
/**
* Allows multiple validators to attempt to validate attribute.
*
* Composite is just what it sounds like: a composite of many validators.
* This means that multiple HTMLPurifier_AttrDef objects will have a whack
* at the string. If one of them passes, that's what is returned. This is
* especially useful for CSS values, which often are a choice between
* an enumerated set of predefined values or a flexible data type.
*/
class HTMLPurifier_AttrDef_CSS_Composite extends HTMLPurifier_AttrDef
{
/**
* List of objects that may process strings.
* @type HTMLPurifier_AttrDef[]
* @todo Make protected
*/
public $defs;
/**
* @param HTMLPurifier_AttrDef[] $defs List of HTMLPurifier_AttrDef objects
*/
public function __construct($defs)
{
$this->defs = $defs;
}
/**
* @param string $string
* @param HTMLPurifier_Config $config
* @param HTMLPurifier_Context $context
* @return bool|string
*/
public function validate($string, $config, $context)
{
foreach ($this->defs as $i => $def) {
$result = $this->defs[$i]->validate($string, $config, $context);
if ($result !== false) {
return $result;
}
}
return false;
}
}
// vim: et sw=4 sts=4

Some files were not shown because too many files have changed in this diff Show more