--- /dev/null
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
+ "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
+<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
+ width="713.000000pt" height="461.000000pt" viewBox="0 0 713.000000 461.000000"
+ preserveAspectRatio="xMidYMid meet">
+<metadata>
+Created by potrace 1.13, written by Peter Selinger 2001-2015
+</metadata>
+<g transform="translate(0.000000,461.000000) scale(0.100000,-0.100000)"
+fill="#000000" stroke="none">
+<path d="M2670 4535 c0 -51 3 -65 15 -65 12 0 15 14 15 65 0 51 -3 65 -15 65
+-12 0 -15 -14 -15 -65z"/>
+<path d="M1790 4333 c-6 -32 -14 -68 -17 -80 -3 -13 -1 -23 5 -23 5 0 15 28
+21 63 7 34 14 70 17 80 3 9 1 17 -5 17 -5 0 -15 -26 -21 -57z"/>
+<path d="M2670 4325 c0 -51 3 -65 15 -65 12 0 15 14 15 65 0 51 -3 65 -15 65
+-12 0 -15 -14 -15 -65z"/>
+<path d="M1260 4323 c-6 -32 -14 -66 -16 -75 -3 -10 -1 -18 4 -18 6 0 14 17
+19 37 l9 37 23 -37 c31 -50 48 -47 19 4 l-23 41 34 30 c18 16 30 32 27 36 -4
+3 -23 -10 -42 -29 l-37 -34 6 33 c4 17 2 32 -3 32 -5 0 -14 -26 -20 -57z"/>
+<path d="M2970 4323 c-14 -64 -6 -86 29 -91 39 -6 68 23 80 78 13 62 14 70 2
+70 -5 0 -12 -23 -16 -50 -8 -57 -27 -83 -59 -78 -23 3 -27 32 -13 96 3 17 2
+32 -3 32 -5 0 -14 -26 -20 -57z"/>
+<path d="M1371 4321 c-28 -28 -28 -77 -1 -86 22 -7 60 2 60 14 0 4 -13 6 -30
+3 -18 -3 -30 0 -30 7 0 6 11 11 24 11 28 0 49 22 44 47 -5 26 -43 28 -67 4z
+m52 -16 c1 -5 -11 -12 -27 -13 -27 -3 -28 -2 -16 13 14 17 40 17 43 0z"/>
+<path d="M1476 4320 c-13 -47 -16 -90 -6 -90 5 0 10 10 10 23 0 28 26 67 46
+67 8 0 14 4 14 10 0 15 -60 6 -64 -10z"/>
+<path d="M1551 4291 c-13 -63 -13 -61 -1 -61 6 0 10 10 10 23 0 29 26 67 47
+67 12 0 14 -8 9 -45 -4 -26 -3 -45 2 -45 12 0 26 86 17 100 -8 13 -42 13 -51
+-1 -5 -8 -9 -8 -14 1 -5 8 -12 -8 -19 -39z"/>
+<path d="M1681 4321 c-28 -28 -28 -77 -1 -86 22 -7 60 2 60 14 0 4 -13 6 -30
+3 -18 -3 -30 0 -30 7 0 6 11 11 24 11 28 0 49 22 44 47 -5 26 -43 28 -67 4z
+m52 -16 c1 -5 -11 -12 -27 -13 -27 -3 -28 -2 -16 13 14 17 40 17 43 0z"/>
+<path d="M1922 4328 c-18 -18 -15 -36 8 -48 31 -17 25 -33 -11 -26 -22 4 -29
+2 -26 -7 6 -19 58 -15 71 6 9 16 7 22 -11 34 -28 19 -30 35 -3 31 10 -2 20 2
+22 7 4 15 -35 18 -50 3z"/>
+<path d="M1997 4273 c-20 -84 -20 -83 -8 -83 5 0 11 10 13 23 2 17 8 21 30 19
+31 -4 58 28 58 71 0 32 -24 46 -51 29 -13 -9 -19 -8 -22 1 -2 7 -11 -20 -20
+-60z m71 21 c-4 -33 -32 -54 -49 -37 -9 9 -8 18 5 37 22 35 48 34 44 0z"/>
+<path d="M2124 4316 c-8 -14 -14 -37 -12 -53 3 -25 7 -28 41 -28 39 -1 41 1
+52 65 6 34 5 35 -29 37 -28 2 -39 -2 -52 -21z m61 -6 c9 -15 -22 -60 -40 -60
+-18 0 -20 41 -3 58 15 15 35 15 43 2z"/>
+<path d="M2250 4320 c-15 -15 -20 -31 -18 -53 3 -28 7 -32 32 -32 16 0 31 5
+33 11 2 7 -6 10 -22 7 -21 -5 -25 -2 -25 20 0 31 23 51 51 44 13 -3 19 -1 16
+6 -6 21 -45 19 -67 -3z"/>
+<path d="M2351 4321 c-28 -28 -28 -77 -1 -86 22 -7 60 2 60 14 0 4 -13 6 -30
+3 -18 -3 -30 0 -30 7 0 6 11 11 24 11 28 0 49 22 44 47 -5 26 -43 28 -67 4z
+m52 -16 c1 -5 -11 -12 -27 -13 -27 -3 -28 -2 -16 13 14 17 40 17 43 0z"/>
+<path d="M3122 4328 c-18 -18 -15 -36 8 -48 31 -17 25 -33 -11 -26 -22 4 -29
+2 -26 -7 6 -19 58 -15 71 6 9 16 7 22 -11 34 -28 19 -30 35 -3 31 10 -2 20 2
+22 7 4 15 -35 18 -50 3z"/>
+<path d="M3211 4321 c-28 -28 -28 -77 -1 -86 22 -7 60 2 60 14 0 4 -13 6 -30
+3 -18 -3 -30 0 -30 7 0 6 11 11 24 11 28 0 49 22 44 47 -5 26 -43 28 -67 4z
+m52 -16 c1 -5 -11 -12 -27 -13 -27 -3 -28 -2 -16 13 14 17 40 17 43 0z"/>
+<path d="M3316 4320 c-13 -47 -16 -90 -6 -90 5 0 10 10 10 23 0 28 26 67 46
+67 8 0 14 4 14 10 0 15 -60 6 -64 -10z"/>
+<path d="M3472 4328 c-18 -18 -15 -36 8 -48 31 -17 25 -33 -11 -26 -22 4 -29
+2 -26 -7 6 -19 58 -15 71 6 9 16 7 22 -11 34 -28 19 -30 35 -3 31 10 -2 20 2
+22 7 4 15 -35 18 -50 3z"/>
+<path d="M3547 4273 c-20 -84 -20 -83 -8 -83 5 0 11 10 13 23 2 17 8 21 30 19
+31 -4 58 28 58 71 0 32 -24 46 -51 29 -13 -9 -19 -8 -22 1 -2 7 -11 -20 -20
+-60z m71 21 c-4 -33 -32 -54 -49 -37 -9 9 -8 18 5 37 22 35 48 34 44 0z"/>
+<path d="M3674 4316 c-8 -14 -14 -37 -12 -53 3 -25 7 -28 41 -28 39 -1 41 1
+52 65 6 34 5 35 -29 37 -28 2 -39 -2 -52 -21z m61 -6 c9 -15 -22 -60 -40 -60
+-18 0 -20 41 -3 58 15 15 35 15 43 2z"/>
+<path d="M3800 4320 c-15 -15 -20 -31 -18 -53 3 -28 7 -32 32 -32 16 0 31 5
+33 11 2 7 -6 10 -22 7 -21 -5 -25 -2 -25 20 0 31 23 51 51 44 13 -3 19 -1 16
+6 -6 21 -45 19 -67 -3z"/>
+<path d="M3901 4321 c-28 -28 -28 -77 -1 -86 22 -7 60 2 60 14 0 4 -13 6 -30
+3 -18 -3 -30 0 -30 7 0 6 11 11 24 11 28 0 49 22 44 47 -5 26 -43 28 -67 4z
+m52 -16 c1 -5 -11 -12 -27 -13 -27 -3 -28 -2 -16 13 14 17 40 17 43 0z"/>
+<path d="M2670 4115 c0 -51 3 -65 15 -65 12 0 15 14 15 65 0 51 -3 65 -15 65
+-12 0 -15 -14 -15 -65z"/>
+<path d="M2670 3905 c0 -51 3 -65 15 -65 12 0 15 14 15 65 0 51 -3 65 -15 65
+-12 0 -15 -14 -15 -65z"/>
+<path d="M3530 3285 l0 -605 -415 0 c-362 0 -415 2 -415 15 0 8 -7 15 -15 15
+-8 0 -15 -7 -15 -15 0 -10 -16 -15 -57 -18 l-58 -3 58 -2 57 -2 0 -45 c0 -33
+4 -45 15 -45 11 0 15 12 15 45 l0 45 415 0 415 0 0 -785 0 -785 455 0 c297 0
+455 3 455 10 0 7 -155 10 -445 10 l-445 0 0 775 0 775 55 0 c39 0 56 -4 63
+-16 7 -13 13 -14 30 -5 11 6 23 11 26 11 3 0 6 -47 6 -105 l0 -105 715 0 715
+0 0 230 0 230 -715 0 -715 0 0 -115 0 -116 -30 16 c-27 14 -30 14 -30 0 0 -12
+-13 -15 -60 -15 l-60 0 0 595 0 595 1740 0 1740 0 0 -1375 0 -1375 -475 0
+-474 0 -4 128 -3 127 -2 -127 -2 -128 -805 0 c-530 0 -805 -3 -805 -10 0 -7
+275 -10 805 -10 l805 0 0 -175 c0 -148 -2 -175 -15 -175 -13 0 -12 -5 2 -35
+21 -43 28 -44 42 -4 14 40 14 39 -4 39 -13 0 -15 26 -15 175 l0 175 485 0 485
+0 0 1395 0 1395 -1760 0 -1760 0 0 -605z m1610 -605 l0 -210 -695 0 -695 0 0
+210 0 210 695 0 695 0 0 -210z"/>
+<path d="M4140 2740 c0 -5 5 -10 10 -10 6 0 10 5 10 10 0 6 -4 10 -10 10 -5 0
+-10 -4 -10 -10z"/>
+<path d="M4310 2740 c0 -5 5 -10 10 -10 6 0 10 5 10 10 0 6 -4 10 -10 10 -5 0
+-10 -4 -10 -10z"/>
+<path d="M4501 2678 c1 -35 4 -51 6 -35 3 17 10 27 22 27 22 0 41 19 41 41 0
+18 -19 29 -51 29 -17 0 -19 -7 -18 -62z m52 40 c7 -21 -4 -38 -24 -38 -14 0
+-19 7 -19 25 0 18 5 25 19 25 11 0 21 -6 24 -12z"/>
+<path d="M4602 2678 l1 -63 6 54 6 55 19 -52 c10 -29 22 -52 26 -52 4 0 16 23
+26 52 l19 52 6 -55 6 -54 1 63 c2 74 -13 80 -37 14 -8 -23 -18 -42 -21 -42 -3
+0 -12 19 -20 42 -24 66 -40 61 -38 -14z"/>
+<path d="M4760 2680 c0 -59 0 -60 28 -60 16 0 36 8 45 18 37 41 9 102 -46 102
+-26 0 -27 -2 -27 -60z m56 42 c35 -24 20 -92 -21 -92 -23 0 -25 3 -25 50 0 41
+3 50 18 50 9 0 22 -4 28 -8z"/>
+<path d="M4252 2714 c-7 -8 -8 -14 -3 -14 5 0 11 -17 13 -37 2 -29 8 -38 23
+-40 16 -1 16 -1 3 3 -13 4 -18 16 -18 40 0 25 4 34 18 35 13 0 14 2 2 6 -8 3
+-17 9 -20 13 -3 4 -11 2 -18 -6z"/>
+<path d="M4059 2665 c18 -50 27 -56 40 -22 19 50 23 69 13 63 -5 -3 -12 -19
+-16 -36 -7 -37 -21 -32 -29 10 -4 16 -11 30 -16 30 -4 0 -1 -20 8 -45z"/>
+<path d="M4140 2665 c0 -25 5 -45 10 -45 6 0 10 20 10 45 0 25 -4 45 -10 45
+-5 0 -10 -20 -10 -45z"/>
+<path d="M4192 2660 c1 -40 2 -41 5 -10 2 19 11 40 20 47 13 10 13 12 -6 10
+-18 -1 -21 -7 -19 -47z"/>
+<path d="M4310 2665 c0 -25 5 -45 10 -45 6 0 10 20 10 45 0 25 -4 45 -10 45
+-5 0 -10 -20 -10 -45z"/>
+<path d="M4360 2696 c-28 -35 11 -93 48 -70 35 22 22 84 -18 84 -10 0 -23 -7
+-30 -14z m55 -15 c8 -26 -4 -51 -25 -51 -10 0 -21 7 -24 16 -10 25 3 54 24 54
+10 0 21 -8 25 -19z"/>
+<path d="M4610 3715 l0 -75 35 0 c43 0 85 37 85 73 0 13 -9 36 -21 51 -16 20
+-29 26 -60 26 l-39 0 0 -75z m84 39 c35 -34 9 -94 -40 -94 -22 0 -24 3 -24 55
+0 52 2 55 24 55 14 0 32 -7 40 -16z"/>
+<path d="M4760 3715 c0 -43 4 -75 10 -75 6 0 10 13 10 29 0 24 5 30 30 34 21
+5 31 14 36 32 8 34 -11 55 -52 55 l-34 0 0 -75z m65 30 c0 -13 -8 -21 -22 -23
+-19 -3 -23 1 -23 23 0 22 4 26 23 23 14 -2 22 -10 22 -23z"/>
+<path d="M4880 3715 l0 -75 35 0 c43 0 85 37 85 73 0 13 -9 36 -21 51 -16 20
+-29 26 -60 26 l-39 0 0 -75z m84 39 c35 -34 9 -94 -40 -94 -22 0 -24 3 -24 55
+0 52 2 55 24 55 14 0 32 -7 40 -16z"/>
+<path d="M5030 3715 c0 -77 16 -105 22 -38 l3 37 25 -37 c14 -20 31 -37 38
+-37 8 0 1 16 -18 41 l-33 40 28 29 c16 17 25 33 22 37 -4 4 -21 -9 -37 -28
+l-29 -34 -1 33 c0 17 -4 32 -10 32 -6 0 -10 -32 -10 -75z"/>
+<path d="M2670 3695 c0 -51 3 -65 15 -65 12 0 15 14 15 65 0 51 -3 65 -15 65
+-12 0 -15 -14 -15 -65z"/>
+<path d="M5217 3743 c-14 -14 -6 -19 23 -15 39 6 39 -14 0 -22 -60 -12 -46
+-68 16 -63 33 2 34 4 34 43 0 22 -5 45 -12 52 -13 13 -50 16 -61 5z m51 -65
+c-5 -15 -48 -24 -48 -10 0 14 12 22 33 22 10 0 17 -5 15 -12z"/>
+<path d="M5330 3673 c0 -42 4 -73 10 -73 6 0 10 12 10 26 0 15 4 23 11 19 22
+-14 57 5 64 34 10 48 -9 71 -55 69 l-40 -1 0 -74z m75 22 c0 -25 -4 -30 -25
+-30 -16 0 -26 6 -28 18 -6 30 6 49 30 45 18 -2 23 -9 23 -33z"/>
+<path d="M5460 3673 c0 -42 4 -73 10 -73 6 0 10 12 10 26 0 15 4 23 11 19 22
+-14 57 5 64 34 10 48 -9 71 -55 69 l-40 -1 0 -74z m75 22 c0 -25 -4 -30 -25
+-30 -16 0 -26 6 -28 18 -6 30 6 49 30 45 18 -2 23 -9 23 -33z"/>
+<path d="M2670 3485 c0 -51 3 -65 15 -65 12 0 15 14 15 65 0 51 -3 65 -15 65
+-12 0 -15 -14 -15 -65z"/>
+<path d="M3730 3230 l0 -250 1520 0 1520 0 0 250 0 250 -1520 0 -1520 0 0
+-250z m3020 0 l0 -230 -1500 0 -1500 0 0 230 0 230 1500 0 1500 0 0 -230z"/>
+<path d="M4960 3230 l0 -60 33 1 c30 2 30 2 5 6 -36 6 -40 49 -5 56 l22 4 -22
+2 c-35 2 -31 39 5 44 25 4 25 4 -5 6 l-33 1 0 -60z"/>
+<path d="M5047 3283 c19 -4 23 -12 26 -61 l3 -57 2 57 c2 50 5 57 25 61 12 2
+0 4 -28 4 -27 0 -40 -2 -28 -4z"/>
+<path d="M5143 3230 c0 -36 2 -50 4 -32 4 28 8 32 33 32 25 0 29 -4 33 -32 2
+-18 4 -4 4 32 0 36 -2 53 -4 38 -4 -23 -9 -28 -33 -28 -24 0 -29 5 -33 28 -2
+15 -4 -2 -4 -38z"/>
+<path d="M5260 3230 c0 -59 0 -60 28 -60 16 0 36 8 45 18 37 41 9 102 -46 102
+-26 0 -27 -2 -27 -60z m56 42 c35 -24 20 -92 -21 -92 -23 0 -25 3 -25 50 0 41
+3 50 18 50 9 0 22 -4 28 -8z"/>
+<path d="M5380 3230 l0 -60 33 1 c30 2 30 2 5 6 -36 6 -40 49 -5 56 l22 4 -22
+2 c-35 2 -31 39 5 44 25 4 25 4 -5 6 l-33 1 0 -60z"/>
+<path d="M5460 3285 c0 -25 35 -115 45 -115 12 0 50 108 42 117 -3 2 -13 -19
+-22 -48 l-18 -52 -18 48 c-18 47 -29 66 -29 50z"/>
+<path d="M2670 3275 c0 -51 3 -65 15 -65 12 0 15 14 15 65 0 51 -3 65 -15 65
+-12 0 -15 -14 -15 -65z"/>
+<path d="M2212 3267 c-2 -39 -6 -49 -24 -57 -13 -5 -16 -9 -8 -9 32 -1 41 15
+37 65 l-3 49 -2 -48z"/>
+<path d="M1530 3266 c0 -2 9 -6 20 -9 11 -3 18 -1 14 4 -5 9 -34 13 -34 5z"/>
+<path d="M1608 3263 c7 -3 16 -2 19 1 4 3 -2 6 -13 5 -11 0 -14 -3 -6 -6z"/>
+<path d="M1668 3263 c7 -3 16 -2 19 1 4 3 -2 6 -13 5 -11 0 -14 -3 -6 -6z"/>
+<path d="M1777 3252 c-15 -16 -15 -19 6 -31 20 -13 21 -13 8 2 -11 14 -11 20
+-1 32 18 21 6 19 -13 -3z"/>
+<path d="M1828 3263 c7 -3 16 -2 19 1 4 3 -2 6 -13 5 -11 0 -14 -3 -6 -6z"/>
+<path d="M1965 3260 c-3 -6 1 -7 9 -4 18 7 21 14 7 14 -6 0 -13 -4 -16 -10z"/>
+<path d="M2028 3263 c7 -3 16 -2 19 1 4 3 -2 6 -13 5 -11 0 -14 -3 -6 -6z"/>
+<path d="M2108 3263 c7 -3 16 -2 19 1 4 3 -2 6 -13 5 -11 0 -14 -3 -6 -6z"/>
+<path d="M2178 3263 c7 -3 16 -2 19 1 4 3 -2 6 -13 5 -11 0 -14 -3 -6 -6z"/>
+<path d="M1482 3225 c0 -16 2 -22 5 -12 2 9 2 23 0 30 -3 6 -5 -1 -5 -18z"/>
+<path d="M1511 3234 c0 -11 3 -14 6 -6 3 7 2 16 -1 19 -3 4 -6 -2 -5 -13z"/>
+<path d="M1922 3225 c0 -16 2 -22 5 -12 2 9 2 23 0 30 -3 6 -5 -1 -5 -18z"/>
+<path d="M1610 3236 c0 -2 7 -7 16 -10 8 -3 12 -2 9 4 -6 10 -25 14 -25 6z"/>
+<path d="M2013 3233 c9 -2 25 -2 35 0 9 3 1 5 -18 5 -19 0 -27 -2 -17 -5z"/>
+<path d="M2085 3230 c-9 -15 4 -30 23 -29 15 1 15 2 0 6 -25 6 -22 21 5 26 22
+4 22 4 0 6 -12 0 -25 -3 -28 -9z"/>
+<path d="M1598 3203 c6 -2 18 -2 25 0 6 3 1 5 -13 5 -14 0 -19 -2 -12 -5z"/>
+<path d="M2028 3203 c6 -2 18 -2 25 0 6 3 1 5 -13 5 -14 0 -19 -2 -12 -5z"/>
+<path d="M2670 3065 c0 -51 3 -65 15 -65 12 0 15 14 15 65 0 51 -3 65 -15 65
+-12 0 -15 -14 -15 -65z"/>
+<path d="M1730 3024 c0 -8 -13 -20 -30 -25 -24 -9 -30 -17 -30 -39 0 -25 4
+-29 29 -28 26 1 30 6 36 37 3 20 8 44 11 54 3 9 1 17 -5 17 -6 0 -11 -7 -11
+-16z m-10 -54 c0 -12 -28 -25 -36 -17 -9 9 6 27 22 27 8 0 14 -5 14 -10z"/>
+<path d="M2233 2985 c-10 -58 -4 -71 15 -30 6 14 16 25 22 25 6 0 8 -10 4 -25
+-3 -14 -2 -25 4 -25 11 0 23 50 15 63 -3 5 -13 7 -22 4 -14 -3 -17 1 -13 19 2
+13 0 24 -5 24 -5 0 -14 -25 -20 -55z"/>
+<path d="M1839 3018 c0 -2 -2 -22 -5 -45 -4 -34 -2 -43 10 -43 8 0 18 5 21 10
+3 6 1 10 -4 10 -6 0 -11 7 -11 15 0 8 7 15 15 15 8 0 15 3 15 6 0 12 -38 42
+-41 32z"/>
+<path d="M2179 3018 c0 -2 -2 -22 -5 -45 -4 -34 -2 -43 10 -43 8 0 18 5 21 10
+3 6 1 10 -4 10 -6 0 -11 7 -11 15 0 8 7 15 15 15 8 0 15 3 15 6 0 12 -38 42
+-41 32z"/>
+<path d="M1763 2993 c-7 -2 -13 -18 -13 -34 0 -27 3 -29 27 -26 22 3 29 10 34
+35 6 28 4 32 -15 31 -11 0 -27 -3 -33 -6z m27 -28 c0 -8 -7 -15 -15 -15 -16 0
+-20 12 -8 23 11 12 23 8 23 -8z"/>
+<path d="M1903 2993 c-7 -2 -13 -18 -13 -34 0 -27 3 -29 27 -26 22 3 29 10 34
+35 6 28 4 32 -15 31 -11 0 -27 -3 -33 -6z m27 -28 c0 -8 -7 -15 -15 -15 -16 0
+-20 12 -8 23 11 12 23 8 23 -8z"/>
+<path d="M2015 2990 c-10 -18 -15 -90 -6 -90 6 0 11 7 11 15 0 8 9 15 20 15
+21 0 41 35 33 57 -5 12 -51 14 -58 3z m45 -19 c0 -12 -20 -25 -27 -18 -7 7 6
+27 18 27 5 0 9 -4 9 -9z"/>
+<path d="M2103 2993 c-7 -2 -13 -18 -13 -34 0 -27 3 -29 27 -26 22 3 29 10 34
+35 6 28 4 32 -15 31 -11 0 -27 -3 -33 -6z m27 -28 c0 -8 -7 -15 -15 -15 -16 0
+-20 12 -8 23 11 12 23 8 23 -8z"/>
+<path d="M70 2680 l0 -250 650 0 650 0 0 250 0 250 -650 0 -650 0 0 -250z
+m1280 0 l0 -230 -630 0 -630 0 0 230 0 230 630 0 630 0 0 -230z"/>
+<path d="M612 2714 c-7 -8 -8 -14 -3 -14 5 0 11 -17 13 -37 2 -29 8 -38 23
+-40 16 -1 16 -1 3 3 -13 4 -18 16 -18 40 0 25 4 34 18 35 13 0 14 2 2 6 -8 3
+-17 9 -20 13 -3 4 -11 2 -18 -6z"/>
+<path d="M676 2701 c-3 -4 6 -6 19 -3 18 3 25 0 25 -11 0 -9 -10 -17 -22 -19
+-15 -2 -23 -10 -23 -23 0 -16 7 -20 33 -22 30 -1 32 1 32 31 0 18 -5 37 -12
+44 -14 14 -44 16 -52 3z m44 -50 c0 -14 -18 -23 -30 -16 -6 4 -8 11 -5 16 8
+12 35 12 35 0z"/>
+<path d="M771 2645 c1 -33 4 -50 6 -38 3 14 9 20 19 16 20 -7 44 15 44 42 0
+28 -19 45 -48 42 -20 -1 -22 -6 -21 -62z m54 36 c8 -26 -5 -53 -24 -49 -29 6
+-27 68 3 68 8 0 17 -8 21 -19z"/>
+<path d="M2670 2855 c0 -51 3 -65 15 -65 12 0 15 14 15 65 0 51 -3 65 -15 65
+-12 0 -15 -14 -15 -65z"/>
+<path d="M5340 2675 l0 -235 355 0 c195 0 355 -3 355 -7 -1 -5 -7 -19 -15 -33
+-18 -32 -18 -40 0 -40 11 0 15 -18 18 -82 l3 -83 2 83 c2 65 5 82 17 82 18 0
+18 8 0 40 -8 14 -14 28 -15 33 0 4 160 7 355 7 l355 0 0 235 0 235 -715 0
+-715 0 0 -235z m1410 0 l0 -215 -695 0 -695 0 0 215 0 215 695 0 695 0 0 -215z"/>
+<path d="M5783 2685 c0 -53 1 -61 6 -30 4 27 12 41 24 43 14 3 17 -4 17 -37 0
+-23 5 -41 10 -41 15 0 12 53 -4 75 -8 11 -20 16 -29 12 -12 -4 -17 1 -20 21
+-2 15 -4 -4 -4 -43z"/>
+<path d="M6081 2678 c1 -35 4 -51 6 -35 3 17 10 27 22 27 22 0 41 19 41 41 0
+18 -19 29 -51 29 -17 0 -19 -7 -18 -62z m52 40 c7 -21 -4 -38 -24 -38 -14 0
+-19 7 -19 25 0 18 5 25 19 25 11 0 21 -6 24 -12z"/>
+<path d="M6182 2678 l1 -63 6 54 6 55 19 -52 c10 -29 22 -52 26 -52 4 0 16 23
+26 52 l19 52 6 -55 6 -54 1 63 c2 74 -13 80 -37 14 -8 -23 -18 -42 -21 -42 -3
+0 -12 19 -20 42 -24 66 -40 61 -38 -14z"/>
+<path d="M6340 2680 c0 -59 0 -60 28 -60 16 0 36 8 45 18 37 41 9 102 -46 102
+-26 0 -27 -2 -27 -60z m56 42 c35 -24 20 -92 -21 -92 -23 0 -25 3 -25 50 0 41
+3 50 18 50 9 0 22 -4 28 -8z"/>
+<path d="M5712 2714 c-7 -8 -8 -14 -3 -14 5 0 11 -17 13 -37 2 -29 8 -38 23
+-40 16 -1 16 -1 3 3 -13 4 -18 16 -18 40 0 25 4 34 18 35 13 0 14 2 2 6 -8 3
+-17 9 -20 13 -3 4 -11 2 -18 -6z"/>
+<path d="M5620 2696 c-28 -35 11 -93 48 -70 35 22 22 84 -18 84 -10 0 -23 -7
+-30 -14z m55 -15 c8 -26 -4 -51 -25 -51 -10 0 -21 7 -24 16 -10 25 3 54 24 54
+10 0 21 -8 25 -19z"/>
+<path d="M5882 2698 c-27 -27 -7 -78 29 -78 10 0 20 4 23 8 2 4 -7 8 -21 7
+-14 0 -28 6 -30 13 -3 8 6 12 26 12 31 0 36 6 25 34 -7 19 -35 21 -52 4z m46
+-15 c2 -8 -6 -13 -22 -13 -19 0 -24 4 -19 15 6 18 34 16 41 -2z"/>
+<path d="M5972 2660 c1 -40 2 -41 5 -10 2 19 11 40 20 47 13 10 13 12 -6 10
+-18 -1 -21 -7 -19 -47z"/>
+<path d="M6457 2703 c-15 -14 -6 -34 19 -43 29 -12 22 -34 -9 -26 -14 3 -17 2
+-10 -5 16 -16 47 -7 51 14 2 11 -6 20 -23 27 -29 11 -24 35 6 27 11 -3 17 -1
+13 4 -6 10 -38 12 -47 2z"/>
+<path d="M1403 2688 c-13 -6 -23 -14 -23 -17 0 -7 54 -41 64 -41 8 0 8 34 0
+54 -7 18 -11 19 -41 4z"/>
+<path d="M2670 2435 c0 -51 3 -65 15 -65 12 0 15 14 15 65 0 51 -3 65 -15 65
+-12 0 -15 -14 -15 -65z"/>
+<path d="M2670 2225 c0 -51 3 -65 15 -65 12 0 15 14 15 65 0 51 -3 65 -15 65
+-12 0 -15 -14 -15 -65z"/>
+<path d="M6064 1785 c0 -176 2 -247 3 -157 2 90 2 234 0 320 -1 86 -3 13 -3
+-163z"/>
+<path d="M2670 2015 c0 -51 3 -65 15 -65 12 0 15 14 15 65 0 51 -3 65 -15 65
+-12 0 -15 -14 -15 -65z"/>
+<path d="M2670 1805 c0 -51 3 -65 15 -65 12 0 15 14 15 65 0 51 -3 65 -15 65
+-12 0 -15 -14 -15 -65z"/>
+<path d="M2670 1595 c0 -51 3 -65 15 -65 12 0 15 14 15 65 0 51 -3 65 -15 65
+-12 0 -15 -14 -15 -65z"/>
+<path d="M4102 1540 c0 -41 2 -47 7 -25 3 17 13 30 21 30 8 0 18 -13 22 -30 6
+-29 6 -29 5 5 -2 28 -6 35 -22 35 -11 0 -23 9 -27 20 -3 11 -6 -4 -6 -35z"/>
+<path d="M4510 1572 c0 -13 -7 -18 -22 -18 -19 1 -23 -4 -23 -29 0 -26 4 -30
+28 -31 26 -1 27 1 27 47 0 27 -2 49 -5 49 -3 0 -5 -8 -5 -18z m-5 -47 c0 -11
+-8 -21 -17 -23 -14 -3 -18 3 -18 23 0 20 4 26 18 23 9 -2 17 -12 17 -23z"/>
+<path d="M4322 1564 c-7 -8 -8 -14 -2 -14 5 0 10 -13 10 -30 0 -16 3 -30 8
+-30 7 0 8 78 0 85 -1 1 -9 -3 -16 -11z"/>
+<path d="M4692 1564 c-7 -8 -8 -14 -2 -14 5 0 10 -13 10 -30 0 -16 3 -30 8
+-30 7 0 8 78 0 85 -1 1 -9 -3 -16 -11z"/>
+<path d="M4032 1530 c14 -41 26 -46 38 -15 15 39 11 55 -4 20 l-13 -30 -8 28
+c-4 15 -11 27 -16 27 -4 0 -3 -14 3 -30z"/>
+<path d="M4184 1546 c-11 -29 0 -51 26 -51 21 0 25 5 25 30 0 24 -5 31 -23 33
+-13 2 -24 -3 -28 -12z m46 -21 c0 -25 -23 -35 -35 -15 -10 16 2 40 20 40 9 0
+15 -9 15 -25z"/>
+<path d="M4264 1548 c-4 -6 0 -16 9 -23 22 -16 21 -22 0 -28 -14 -4 -12 -5 5
+-6 25 -1 31 26 7 35 -20 8 -19 21 3 27 15 4 15 5 0 6 -9 0 -20 -4 -24 -11z"/>
+<path d="M4396 1551 c-3 -5 3 -7 14 -4 11 3 20 1 20 -5 0 -5 -9 -12 -20 -15
+-30 -8 -25 -37 6 -37 23 0 25 3 22 32 -3 32 -29 50 -42 29z m29 -41 c-3 -5
+-10 -10 -16 -10 -5 0 -9 5 -9 10 0 6 7 10 16 10 8 0 12 -4 9 -10z"/>
+<path d="M4546 1551 c-3 -5 3 -7 14 -4 11 3 20 1 20 -5 0 -5 -9 -12 -20 -15
+-30 -8 -25 -37 6 -37 23 0 25 3 22 32 -3 32 -29 50 -42 29z m29 -41 c-3 -5
+-10 -10 -16 -10 -5 0 -9 5 -9 10 0 6 7 10 16 10 8 0 12 -4 9 -10z"/>
+<path d="M4611 1506 c1 -31 4 -43 7 -31 4 11 16 20 27 20 16 0 20 7 20 30 0
+26 -4 30 -27 31 -27 1 -28 -1 -27 -50z m49 19 c0 -25 -23 -35 -35 -15 -10 16
+2 40 20 40 9 0 15 -9 15 -25z"/>
+<path d="M4744 1546 c-11 -30 0 -51 29 -52 25 -1 25 -1 2 3 -33 6 -32 23 1 23
+19 0 25 5 22 18 -4 22 -46 29 -54 8z m46 -6 c0 -5 -9 -10 -21 -10 -11 0 -17 5
+-14 10 3 6 13 10 21 10 8 0 14 -4 14 -10z"/>
+<path d="M4821 1520 c1 -27 3 -29 6 -10 2 14 11 30 20 37 13 10 13 12 -6 10
+-17 -1 -21 -7 -20 -37z"/>
+<path d="M2670 1385 c0 -51 3 -65 15 -65 12 0 15 14 15 65 0 51 -3 65 -15 65
+-12 0 -15 -14 -15 -65z"/>
+<path d="M2670 1175 c0 -51 3 -65 15 -65 12 0 15 14 15 65 0 51 -3 65 -15 65
+-12 0 -15 -14 -15 -65z"/>
+<path d="M2670 965 c0 -51 3 -65 15 -65 12 0 15 14 15 65 0 51 -3 65 -15 65
+-12 0 -15 -14 -15 -65z"/>
+<path d="M70 660 l0 -250 650 0 650 0 0 250 0 250 -650 0 -650 0 0 -250z
+m1280 0 l0 -230 -630 0 -630 0 0 230 0 230 630 0 630 0 0 -230z"/>
+<path d="M463 665 c0 -53 1 -61 6 -30 4 27 12 41 24 43 14 3 17 -4 17 -37 0
+-23 5 -41 10 -41 15 0 12 53 -4 75 -8 11 -20 16 -29 12 -12 -4 -17 1 -20 21
+-2 15 -4 -4 -4 -43z"/>
+<path d="M732 694 c-7 -8 -8 -14 -3 -14 5 0 11 -17 13 -37 2 -29 8 -38 23 -40
+16 -1 16 -1 3 3 -13 4 -18 16 -18 40 0 25 4 34 18 35 13 0 14 2 2 6 -8 3 -17
+9 -20 13 -3 4 -11 2 -18 -6z"/>
+<path d="M1042 694 c-7 -8 -8 -14 -3 -14 5 0 11 -17 13 -37 2 -29 8 -38 23
+-40 16 -1 16 -1 3 3 -13 4 -18 16 -18 40 0 25 4 34 18 35 13 0 14 2 2 6 -8 3
+-17 9 -20 13 -3 4 -11 2 -18 -6z"/>
+<path d="M369 645 c18 -50 27 -56 40 -22 19 50 23 69 13 63 -5 -3 -12 -19 -16
+-36 -7 -37 -21 -32 -29 10 -4 16 -11 30 -16 30 -4 0 -1 -20 8 -45z"/>
+<path d="M560 676 c-28 -35 11 -93 48 -70 35 22 22 84 -18 84 -10 0 -23 -7
+-30 -14z m55 -15 c8 -26 -4 -51 -25 -51 -10 0 -21 7 -24 16 -10 25 3 54 24 54
+10 0 21 -8 25 -19z"/>
+<path d="M657 683 c-15 -14 -6 -34 19 -43 29 -12 22 -34 -9 -26 -14 3 -17 2
+-10 -5 16 -16 47 -7 51 14 2 11 -6 20 -23 27 -29 11 -24 35 6 27 11 -3 17 -1
+13 4 -6 10 -38 12 -47 2z"/>
+<path d="M861 640 l2 -45 6 40 c4 27 12 41 24 43 14 3 17 -4 17 -37 0 -23 5
+-41 10 -41 13 0 13 46 0 71 -7 12 -20 18 -35 17 -23 -2 -25 -6 -24 -48z"/>
+<path d="M962 678 c-15 -15 -15 -51 0 -66 14 -14 44 -16 52 -4 2 4 -7 8 -21 7
+-14 0 -28 6 -30 13 -3 8 6 12 26 12 31 0 36 6 25 34 -7 19 -35 21 -52 4z m46
+-15 c2 -8 -6 -13 -22 -13 -19 0 -24 4 -19 15 6 18 34 16 41 -2z"/>
+<path d="M798 643 c6 -2 18 -2 25 0 6 3 1 5 -13 5 -14 0 -19 -2 -12 -5z"/>
+<path d="M3533 835 c-5 -30 -6 -55 -2 -55 9 0 15 19 25 73 3 21 2 37 -3 37 -5
+0 -14 -25 -20 -55z"/>
+<path d="M3833 835 c-10 -58 -4 -71 15 -30 6 14 16 25 22 25 6 0 8 -10 4 -25
+-3 -14 -2 -25 4 -25 11 0 23 50 15 63 -3 5 -13 7 -22 4 -14 -3 -17 1 -13 19 2
+13 0 24 -5 24 -5 0 -14 -25 -20 -55z"/>
+<path d="M3339 868 c0 -2 -2 -22 -5 -45 -4 -34 -2 -43 10 -43 8 0 18 5 21 10
+3 6 1 10 -4 10 -6 0 -11 7 -11 15 0 8 7 15 15 15 8 0 15 3 15 6 0 12 -38 42
+-41 32z"/>
+<path d="M3779 868 c0 -2 -2 -22 -5 -45 -4 -34 -2 -43 10 -43 8 0 18 5 21 10
+3 6 1 10 -4 10 -6 0 -11 7 -11 15 0 8 7 15 15 15 8 0 15 3 15 6 0 12 -38 42
+-41 32z"/>
+<path d="M3112 838 c-6 -6 -12 -23 -12 -36 0 -18 5 -23 22 -20 12 2 23 9 26
+16 2 7 -2 10 -12 6 -11 -4 -16 -1 -16 10 0 9 6 16 14 14 8 -2 15 2 16 7 2 15
+-24 17 -38 3z"/>
+<path d="M3182 838 c-7 -7 -12 -22 -12 -35 0 -18 6 -23 25 -23 27 0 48 30 39
+54 -7 19 -35 21 -52 4z m38 -18 c0 -12 -28 -25 -36 -17 -9 9 6 27 22 27 8 0
+14 -5 14 -10z"/>
+<path d="M3260 846 c0 -1 -4 -16 -9 -34 -11 -38 1 -43 17 -7 6 14 16 25 22 25
+6 0 8 -10 4 -25 -4 -15 -2 -25 5 -25 6 0 12 9 13 20 0 11 1 26 2 33 1 6 -11
+12 -26 13 -16 1 -28 1 -28 0z"/>
+<path d="M3395 835 c-17 -57 -8 -76 13 -30 6 14 16 25 22 25 5 0 10 4 10 9 0
+13 -42 9 -45 -4z"/>
+<path d="M3462 838 c-7 -7 -12 -22 -12 -35 0 -18 6 -23 25 -23 27 0 48 30 39
+54 -7 19 -35 21 -52 4z m38 -18 c0 -12 -28 -25 -36 -17 -9 9 6 27 22 27 8 0
+14 -5 14 -10z"/>
+<path d="M3615 840 c-10 -18 -15 -90 -6 -90 6 0 11 7 11 15 0 8 9 15 20 15 21
+0 41 35 33 57 -5 12 -51 14 -58 3z m45 -19 c0 -12 -20 -25 -27 -18 -7 7 6 27
+18 27 5 0 9 -4 9 -9z"/>
+<path d="M3703 843 c-7 -2 -13 -18 -13 -34 0 -27 3 -29 27 -26 22 3 29 10 34
+35 6 28 4 32 -15 31 -11 0 -27 -3 -33 -6z m27 -28 c0 -8 -7 -15 -15 -15 -16 0
+-20 12 -8 23 11 12 23 8 23 -8z"/>
+<path d="M2670 755 c0 -51 3 -65 15 -65 12 0 15 14 15 65 0 51 -3 65 -15 65
+-12 0 -15 -14 -15 -65z"/>
+<path d="M2670 545 c0 -51 3 -65 15 -65 12 0 15 14 15 65 0 51 -3 65 -15 65
+-12 0 -15 -14 -15 -65z"/>
+<path d="M6440 525 c0 -31 3 -35 25 -35 22 0 25 4 25 35 0 31 -3 35 -25 35
+-22 0 -25 -4 -25 -35z"/>
+<path d="M5780 520 c0 -5 25 -10 55 -10 30 0 55 5 55 10 0 6 -25 10 -55 10
+-30 0 -55 -4 -55 -10z"/>
+<path d="M5900 495 l0 -35 55 0 55 0 0 35 0 35 -55 0 -55 0 0 -35z"/>
+<path d="M6020 495 l0 -35 55 0 55 0 0 35 0 35 -55 0 -55 0 0 -35z"/>
+<path d="M6200 400 l0 -130 85 0 85 0 0 130 0 130 -85 0 -85 0 0 -130z"/>
+<path d="M6440 445 c0 -31 3 -35 25 -35 22 0 25 4 25 35 0 31 -3 35 -25 35
+-22 0 -25 -4 -25 -35z"/>
+<path d="M5780 430 c0 -5 25 -10 55 -10 30 0 55 5 55 10 0 6 -25 10 -55 10
+-30 0 -55 -4 -55 -10z"/>
+<path d="M5900 405 l0 -35 55 0 55 0 0 35 0 35 -55 0 -55 0 0 -35z"/>
+<path d="M6020 405 l0 -35 55 0 55 0 0 35 0 35 -55 0 -55 0 0 -35z"/>
+<path d="M2670 335 c0 -51 3 -65 15 -65 12 0 15 14 15 65 0 51 -3 65 -15 65
+-12 0 -15 -14 -15 -65z"/>
+<path d="M6440 360 c0 -25 4 -30 25 -30 21 0 25 5 25 30 0 25 -4 30 -25 30
+-21 0 -25 -5 -25 -30z"/>
+<path d="M5780 340 c0 -5 25 -10 55 -10 30 0 55 5 55 10 0 6 -25 10 -55 10
+-30 0 -55 -4 -55 -10z"/>
+<path d="M5900 315 l0 -35 55 0 55 0 0 35 0 35 -55 0 -55 0 0 -35z"/>
+<path d="M6020 315 l0 -35 55 0 55 0 0 35 0 35 -55 0 -55 0 0 -35z"/>
+<path d="M6440 280 c0 -25 4 -30 25 -30 21 0 25 5 25 30 0 25 -4 30 -25 30
+-21 0 -25 -5 -25 -30z"/>
+<path d="M2670 160 c0 -20 5 -30 15 -30 10 0 15 10 15 30 0 20 -5 30 -15 30
+-10 0 -15 -10 -15 -30z"/>
+</g>
+</svg>
--- /dev/null
+.. BSD LICENSE
+ Copyright(c) 2016 Intel Corporation. All rights reserved.
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+ * Neither the name of Intel Corporation nor the names of its
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+.. _virtio_user_as_excpetional_path:
+
+Virtio_user as Exceptional Path
+===============================
+
+The virtual device, virtio-user, was originally introduced with vhost-user
+backend, as a high performance solution for IPC (Inter-Process Communication)
+and user space container networking.
+
+Virtio_user with vhost-kernel backend is a solution for exceptional path,
+such as KNI which exchanges packets with kernel networking stack. This
+solution is very promising in:
+
+* Maintenance
+
+ All kernel modules needed by this solution, vhost and vhost-net (kernel),
+ are upstreamed and extensively used kernel module.
+
+* Features
+
+ vhost-net is born to be a networking solution, which has lots of networking
+ related featuers, like multi queue, tso, multi-seg mbuf, etc.
+
+* Performance
+
+ similar to KNI, this solution would use one or more kthreads to
+ send/receive packets from user space DPDK applications, which has little
+ impact on user space polling thread (except that it might enter into kernel
+ space to wake up those kthreads if necessary).
+
+The overview of an application using virtio-user as exceptional path is shown
+in :numref:`figure_virtio_user_as_exceptional_path`.
+
+.. _figure_virtio_user_as_exceptional_path:
+
+.. figure:: img/virtio_user_as_exceptional_path.*
+
+ Overview of a DPDK app using virtio-user as excpetional path
+
+
+Sample Usage
+------------
+
+As a prerequisite, the vhost/vhost-net kernel CONFIG should be chosen before
+compiling the kernel and those kernel modules should be inserted.
+
+#. Compile DPDK and bind a physical NIC to igb_uio/uio_pci_generic/vfio-pci.
+
+ This physical NIC is for communicating with outside.
+
+#. Run testpmd.
+
+ .. code-block:: console
+
+ $(testpmd) -c 0xc -n 4 \
+ --vdev=virtio_user0,path=/dev/vhost-net,queue_size=1024 \
+ -- -i --txqflags=0x0 --disable-hw-vlan --enable-lro --crc-strip
+ --enable-rx-cksum --rxd=1024 --txd=1024
+
+ This command runs testpmd with two ports, one physical NIC to communicate
+ with outside, and one virtio-user to communicate with kernel.
+
+* ``--enable-lro``
+
+ This is used to negotiate VIRTIO_NET_F_GUEST_TSO4 and
+ VIRTIO_NET_F_GUEST_TSO6 feature so that large packets from kernel can be
+ transmitted DPDK application and further TSOed by physical NIC.
+
+* ``--enable-rx-cksum``
+
+ This is used to negotiate VIRTIO_NET_F_GUEST_CSUM so that packets from
+ kernel can be deemed as valid Rx checksumed.
+
+* ``queue_size``
+
+ 256 by default. To avoid shortage of descriptors, we can increase it to 1024.
+
+* ``queues``
+
+ Number of multi-queues. Each qeueue will be served by a kthread. For example:
+
+ .. code-block:: console
+
+ $(testpmd) -c 0xc -n 4 \
+ --vdev=virtio_user0,path=/dev/vhost-net,queues=2,queue_size=1024 \
+ -- -i --txqflags=0x0 --disable-hw-vlan --enable-lro \
+ --crc-strip --enable-rx-cksum --txq=2 --rxq=2 --rxd=1024 \
+ --txd=1024
+
+#. Start testpmd:
+
+ .. code-block:: console
+
+ (testpmd) start
+
+#. Configure IP address and start tap:
+
+ .. code-block:: console
+
+ ifconfig tap0 1.1.1.1/24 up
+
+.. note::
+
+ The tap device will be named tap0, tap1, etc, by kernel.
+
+Then, all traffic from physical NIC can be forwarded into kernel stack, and all
+traffic on the tap0 can be sent out from physical NIC.
+
+Limitations
+-----------
+
+This solution is only available on Linux systems.