-<svg width="298" height="144" viewBox="0 0 298 144" xmlns="http://www.w3.org/2000/svg">
+<svg viewBox="0 0 298 144" xmlns="http://www.w3.org/2000/svg">
<path d="M92.056 39.544H86.68L68.536 66.616V80.056H78.712V91H46.072V80.056H55.672V66.52L36.952 39.544H31.384V28.6H57.208V39.544H52.024L62.488 55.288H63.064L73.432 39.544H67.48V28.6H92.056V39.544ZM134.601 69.4C134.601 76.248 132.361 81.72 127.881 85.816C123.401 89.912 117.705 91.96 110.793 91.96C104.137 91.96 98.6965 90.04 94.4725 86.2C90.3125 82.296 88.2325 76.856 88.2325 69.88C88.2325 63.544 90.1525 58.104 93.9925 53.56C97.8325 49.016 103.657 46.744 111.465 46.744C119.273 46.744 125.065 49.016 128.841 53.56C132.681 58.04 134.601 63.32 134.601 69.4ZM121.833 69.016C121.833 64.6 120.809 61.368 118.761 59.32C116.713 57.272 114.217 56.248 111.273 56.248C108.073 56.248 105.545 57.4 103.689 59.704C101.897 61.944 101.001 65.112 101.001 69.208C101.001 72.92 101.833 76.056 103.497 78.616C105.225 81.176 107.785 82.456 111.177 82.456C114.377 82.456 116.937 81.272 118.857 78.904C120.841 76.472 121.833 73.176 121.833 69.016ZM191.379 91H172.755V84.376C169.875 89.368 165.235 91.864 158.835 91.864C154.739 91.864 151.187 90.648 148.179 88.216C145.171 85.784 143.667 82.008 143.667 76.888V57.016H137.907V47.704H156.051V72.088C156.051 75.864 156.659 78.552 157.875 80.152C159.155 81.688 161.011 82.456 163.443 82.456C166.387 82.456 168.659 81.496 170.259 79.576C171.923 77.656 172.755 75.192 172.755 72.184V57.016H165.747V47.704H185.139V81.688H191.379V91ZM222.863 47.128C224.079 47.128 225.423 47.32 226.895 47.704C228.431 48.024 229.935 48.632 231.407 49.528L233.327 64.696L223.919 65.752L222.287 58.36C221.007 57.592 219.887 57.208 218.927 57.208C217.519 57.208 216.271 57.752 215.183 58.84C214.159 59.928 213.647 61.528 213.647 63.64V81.688H221.327V91H195.503V81.688H201.263V57.112H195.023V47.704H212.687V55.96C213.391 53.464 214.511 51.384 216.047 49.72C217.647 47.992 219.919 47.128 222.863 47.128Z" fill="#004887"/>
<path d="M37.568 124.032C36.0747 125.44 33.9413 126.571 31.168 127.424C28.4373 128.235 25.6 128.64 22.656 128.64C16.64 128.64 11.6693 126.699 7.744 122.816C3.86133 118.891 1.92 113.856 1.92 107.712C1.92 104.256 2.64533 100.843 4.096 97.472C5.54667 94.1013 7.808 91.3067 10.88 89.088C13.952 86.8693 17.8773 85.76 22.656 85.76C26.1547 85.76 29.1413 86.2507 31.616 87.232C34.0907 88.2133 36.0533 89.3653 37.504 90.688L38.592 99.712L32.768 100.288L31.744 94.528C29.184 92.864 26.112 92.032 22.528 92.032C18.6027 92.032 15.4453 93.3973 13.056 96.128C10.7093 98.8587 9.536 102.592 9.536 107.328C9.536 112.277 10.7947 116.032 13.312 118.592C15.8293 121.109 19.136 122.368 23.232 122.368C26.6453 122.368 29.44 121.771 31.616 120.576L32.64 114.368L38.464 114.944L37.568 124.032ZM72.802 113.664C72.802 118.144 71.3727 121.771 68.514 124.544C65.698 127.275 62.0287 128.64 57.506 128.64C53.1113 128.64 49.57 127.317 46.882 124.672C44.2367 122.027 42.914 118.443 42.914 113.92C42.914 109.739 44.1727 106.155 46.69 103.168C49.2073 100.139 52.9407 98.624 57.89 98.624C62.882 98.624 66.6153 100.117 69.09 103.104C71.5647 106.091 72.802 109.611 72.802 113.664ZM65.698 113.472C65.698 110.4 64.9513 108.053 63.458 106.432C62.0073 104.811 60.1087 104 57.762 104C55.33 104 53.4313 104.875 52.066 106.624C50.7007 108.331 50.018 110.635 50.018 113.536C50.018 116.267 50.658 118.571 51.938 120.448C53.2607 122.325 55.202 123.264 57.762 123.264C60.2367 123.264 62.178 122.368 63.586 120.576C64.994 118.741 65.698 116.373 65.698 113.472ZM129.478 128H116.806V122.752H118.406V111.488C118.406 108.757 117.915 106.837 116.934 105.728C115.995 104.576 114.651 104 112.902 104C110.64 104 108.976 104.768 107.91 106.304C106.886 107.84 106.352 109.589 106.31 111.552V122.752H110.597V128H97.9255V122.752H99.4615V111.488C99.4615 108.757 98.9708 106.837 97.9895 105.728C97.0508 104.576 95.7282 104 94.0215 104C91.8028 104 90.1602 104.768 89.0935 106.304C88.0268 107.797 87.4722 109.525 87.4295 111.488V122.752H92.8055V128H76.2935V122.752H80.5815V104.576H76.3575V99.264H87.4295V104C88.3255 102.421 89.5202 101.141 91.0135 100.16C92.5068 99.1787 94.3202 98.688 96.4535 98.688C98.5868 98.688 100.507 99.2213 102.214 100.288C103.92 101.312 105.115 102.933 105.798 105.152C106.651 103.189 107.888 101.632 109.51 100.48C111.131 99.2853 113.115 98.688 115.462 98.688C118.064 98.688 120.347 99.52 122.31 101.184C124.272 102.848 125.254 105.451 125.254 108.992V122.752H129.478V128ZM164.428 112.896C164.428 116.992 163.34 120.64 161.164 123.84C159.03 127.04 155.724 128.64 151.244 128.64C147.105 128.64 144.097 127.147 142.22 124.16V136.256H147.916V141.632H131.084V136.256H135.372V104.512H130.892V99.264H142.22V104.96C143.03 103.253 144.204 101.781 145.74 100.544C147.318 99.3067 149.43 98.688 152.076 98.688C155.745 98.688 158.71 99.9467 160.972 102.464C163.276 104.939 164.428 108.416 164.428 112.896ZM157.324 113.6C157.324 110.528 156.62 108.203 155.212 106.624C153.804 105.003 152.012 104.192 149.836 104.192C147.532 104.192 145.718 105.067 144.396 106.816C143.073 108.565 142.369 110.613 142.284 112.96L142.22 115.2C142.22 117.589 142.902 119.509 144.268 120.96C145.676 122.411 147.468 123.136 149.644 123.136C152.076 123.136 153.953 122.283 155.276 120.576C156.641 118.869 157.324 116.544 157.324 113.6ZM170.922 101.376C173.055 100.352 174.954 99.648 176.618 99.264C178.282 98.88 180.202 98.688 182.378 98.688C185.578 98.688 188.202 99.4987 190.25 101.12C192.341 102.741 193.386 105.173 193.386 108.416V121.344C193.386 123.051 194.09 123.904 195.498 123.904C195.882 123.904 196.373 123.819 196.97 123.648L197.034 127.424C195.626 128.235 194.09 128.64 192.426 128.64C188.799 128.64 186.837 126.741 186.538 122.944V122.816C185.685 124.309 184.469 125.653 182.89 126.848C181.354 128.043 179.434 128.64 177.13 128.64C175.125 128.64 173.141 128.043 171.178 126.848C169.258 125.611 168.298 123.477 168.298 120.448C168.298 116.907 169.706 114.581 172.522 113.472C175.338 112.32 178.389 111.744 181.674 111.744C182.485 111.744 183.317 111.765 184.17 111.808C185.023 111.851 185.813 111.915 186.538 112V110.4C186.538 108.693 186.239 107.157 185.642 105.792C185.045 104.427 183.551 103.744 181.162 103.744C180.266 103.744 179.413 103.808 178.602 103.936C177.834 104.064 177.087 104.32 176.362 104.704L175.21 109.12L169.706 108.544L170.922 101.376ZM186.538 116.608V115.584C185.813 115.499 185.066 115.413 184.298 115.328C183.53 115.243 182.741 115.2 181.93 115.2C180.223 115.2 178.687 115.499 177.322 116.096C175.999 116.693 175.338 117.888 175.338 119.68C175.338 122.283 176.725 123.584 179.498 123.584C181.119 123.584 182.655 123.008 184.106 121.856C185.557 120.661 186.367 118.912 186.538 116.608ZM234.863 128H219.503V122.752H223.727V111.488C223.727 108.757 223.236 106.837 222.255 105.728C221.273 104.576 219.908 104 218.159 104C215.983 104 214.255 104.704 212.975 106.112C211.737 107.52 211.097 109.248 211.055 111.296V122.752H215.343V128H199.919V122.752H204.207V104.576H199.727V99.264H211.055V103.936C213.06 100.437 216.239 98.688 220.591 98.688C223.321 98.688 225.668 99.52 227.631 101.184C229.593 102.848 230.575 105.451 230.575 108.992V122.752H234.863V128ZM267.085 104.512H264.077L254.477 128L251.277 136.256H255.501V141.632H240.141V136.256H245.005L247.821 128.256L237.645 104.512H234.509V99.264H248.653V104.512H245.005L251.661 120.064H252.045L257.421 104.512H254.157V99.264H267.085V104.512ZM275.625 98.688L270.121 98.176L271.145 89.152C273.15 88.0427 275.22 87.2107 277.353 86.656C279.486 86.1013 281.449 85.824 283.241 85.824C286.825 85.824 289.812 86.6347 292.201 88.256C294.633 89.8347 295.849 92.032 295.849 94.848C295.849 97.024 295.209 98.7947 293.929 100.16C292.649 101.483 291.177 102.592 289.513 103.488C287.892 104.384 286.441 105.237 285.161 106.048C283.881 106.859 283.241 107.84 283.241 108.992C283.241 110.4 284.201 111.104 286.121 111.104V115.456C279.252 116.139 275.817 114.24 275.817 109.76C275.817 107.755 276.436 106.197 277.673 105.088C278.91 103.936 280.34 102.976 281.961 102.208C283.582 101.44 285.012 100.608 286.249 99.712C287.486 98.7733 288.105 97.536 288.105 96C288.105 93.3547 286.206 92.032 282.409 92.032C281.428 92.032 280.382 92.16 279.273 92.416C278.206 92.672 277.289 93.056 276.521 93.568L275.625 98.688ZM277.673 128V119.872H285.865V128H277.673Z" fill="#004887"/>
</svg>
-<svg width="298" height="144" viewBox="0 0 298 144" fill="none" xmlns="http://www.w3.org/2000/svg">
+<svg viewBox="0 0 298 144" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M92.056 39.544H86.68L68.536 66.616V80.056H78.712V91H46.072V80.056H55.672V66.52L36.952 39.544H31.384V28.6H57.208V39.544H52.024L62.488 55.288H63.064L73.432 39.544H67.48V28.6H92.056V39.544ZM134.601 69.4C134.601 76.248 132.361 81.72 127.881 85.816C123.401 89.912 117.705 91.96 110.793 91.96C104.137 91.96 98.6965 90.04 94.4725 86.2C90.3125 82.296 88.2325 76.856 88.2325 69.88C88.2325 63.544 90.1525 58.104 93.9925 53.56C97.8325 49.016 103.657 46.744 111.465 46.744C119.273 46.744 125.065 49.016 128.841 53.56C132.681 58.04 134.601 63.32 134.601 69.4ZM121.833 69.016C121.833 64.6 120.809 61.368 118.761 59.32C116.713 57.272 114.217 56.248 111.273 56.248C108.073 56.248 105.545 57.4 103.689 59.704C101.897 61.944 101.001 65.112 101.001 69.208C101.001 72.92 101.833 76.056 103.497 78.616C105.225 81.176 107.785 82.456 111.177 82.456C114.377 82.456 116.937 81.272 118.857 78.904C120.841 76.472 121.833 73.176 121.833 69.016ZM191.379 91H172.755V84.376C169.875 89.368 165.235 91.864 158.835 91.864C154.739 91.864 151.187 90.648 148.179 88.216C145.171 85.784 143.667 82.008 143.667 76.888V57.016H137.907V47.704H156.051V72.088C156.051 75.864 156.659 78.552 157.875 80.152C159.155 81.688 161.011 82.456 163.443 82.456C166.387 82.456 168.659 81.496 170.259 79.576C171.923 77.656 172.755 75.192 172.755 72.184V57.016H165.747V47.704H185.139V81.688H191.379V91ZM222.863 47.128C224.079 47.128 225.423 47.32 226.895 47.704C228.431 48.024 229.935 48.632 231.407 49.528L233.327 64.696L223.919 65.752L222.287 58.36C221.007 57.592 219.887 57.208 218.927 57.208C217.519 57.208 216.271 57.752 215.183 58.84C214.159 59.928 213.647 61.528 213.647 63.64V81.688H221.327V91H195.503V81.688H201.263V57.112H195.023V47.704H212.687V55.96C213.391 53.464 214.511 51.384 216.047 49.72C217.647 47.992 219.919 47.128 222.863 47.128Z" fill="white"/>
<path d="M37.568 124.032C36.0747 125.44 33.9413 126.571 31.168 127.424C28.4373 128.235 25.6 128.64 22.656 128.64C16.64 128.64 11.6693 126.699 7.744 122.816C3.86133 118.891 1.92 113.856 1.92 107.712C1.92 104.256 2.64533 100.843 4.096 97.472C5.54667 94.1013 7.808 91.3067 10.88 89.088C13.952 86.8693 17.8773 85.76 22.656 85.76C26.1547 85.76 29.1413 86.2507 31.616 87.232C34.0907 88.2133 36.0533 89.3653 37.504 90.688L38.592 99.712L32.768 100.288L31.744 94.528C29.184 92.864 26.112 92.032 22.528 92.032C18.6027 92.032 15.4453 93.3973 13.056 96.128C10.7093 98.8587 9.536 102.592 9.536 107.328C9.536 112.277 10.7947 116.032 13.312 118.592C15.8293 121.109 19.136 122.368 23.232 122.368C26.6453 122.368 29.44 121.771 31.616 120.576L32.64 114.368L38.464 114.944L37.568 124.032ZM72.802 113.664C72.802 118.144 71.3727 121.771 68.514 124.544C65.698 127.275 62.0287 128.64 57.506 128.64C53.1113 128.64 49.57 127.317 46.882 124.672C44.2367 122.027 42.914 118.443 42.914 113.92C42.914 109.739 44.1727 106.155 46.69 103.168C49.2073 100.139 52.9407 98.624 57.89 98.624C62.882 98.624 66.6153 100.117 69.09 103.104C71.5647 106.091 72.802 109.611 72.802 113.664ZM65.698 113.472C65.698 110.4 64.9513 108.053 63.458 106.432C62.0073 104.811 60.1087 104 57.762 104C55.33 104 53.4313 104.875 52.066 106.624C50.7007 108.331 50.018 110.635 50.018 113.536C50.018 116.267 50.658 118.571 51.938 120.448C53.2607 122.325 55.202 123.264 57.762 123.264C60.2367 123.264 62.178 122.368 63.586 120.576C64.994 118.741 65.698 116.373 65.698 113.472ZM129.478 128H116.806V122.752H118.406V111.488C118.406 108.757 117.915 106.837 116.934 105.728C115.995 104.576 114.651 104 112.902 104C110.64 104 108.976 104.768 107.91 106.304C106.886 107.84 106.352 109.589 106.31 111.552V122.752H110.597V128H97.9255V122.752H99.4615V111.488C99.4615 108.757 98.9708 106.837 97.9895 105.728C97.0508 104.576 95.7282 104 94.0215 104C91.8028 104 90.1602 104.768 89.0935 106.304C88.0268 107.797 87.4722 109.525 87.4295 111.488V122.752H92.8055V128H76.2935V122.752H80.5815V104.576H76.3575V99.264H87.4295V104C88.3255 102.421 89.5202 101.141 91.0135 100.16C92.5068 99.1787 94.3202 98.688 96.4535 98.688C98.5868 98.688 100.507 99.2213 102.214 100.288C103.92 101.312 105.115 102.933 105.798 105.152C106.651 103.189 107.888 101.632 109.51 100.48C111.131 99.2853 113.115 98.688 115.462 98.688C118.064 98.688 120.347 99.52 122.31 101.184C124.272 102.848 125.254 105.451 125.254 108.992V122.752H129.478V128ZM164.428 112.896C164.428 116.992 163.34 120.64 161.164 123.84C159.03 127.04 155.724 128.64 151.244 128.64C147.105 128.64 144.097 127.147 142.22 124.16V136.256H147.916V141.632H131.084V136.256H135.372V104.512H130.892V99.264H142.22V104.96C143.03 103.253 144.204 101.781 145.74 100.544C147.318 99.3067 149.43 98.688 152.076 98.688C155.745 98.688 158.71 99.9467 160.972 102.464C163.276 104.939 164.428 108.416 164.428 112.896ZM157.324 113.6C157.324 110.528 156.62 108.203 155.212 106.624C153.804 105.003 152.012 104.192 149.836 104.192C147.532 104.192 145.718 105.067 144.396 106.816C143.073 108.565 142.369 110.613 142.284 112.96L142.22 115.2C142.22 117.589 142.902 119.509 144.268 120.96C145.676 122.411 147.468 123.136 149.644 123.136C152.076 123.136 153.953 122.283 155.276 120.576C156.641 118.869 157.324 116.544 157.324 113.6ZM170.922 101.376C173.055 100.352 174.954 99.648 176.618 99.264C178.282 98.88 180.202 98.688 182.378 98.688C185.578 98.688 188.202 99.4987 190.25 101.12C192.341 102.741 193.386 105.173 193.386 108.416V121.344C193.386 123.051 194.09 123.904 195.498 123.904C195.882 123.904 196.373 123.819 196.97 123.648L197.034 127.424C195.626 128.235 194.09 128.64 192.426 128.64C188.799 128.64 186.837 126.741 186.538 122.944V122.816C185.685 124.309 184.469 125.653 182.89 126.848C181.354 128.043 179.434 128.64 177.13 128.64C175.125 128.64 173.141 128.043 171.178 126.848C169.258 125.611 168.298 123.477 168.298 120.448C168.298 116.907 169.706 114.581 172.522 113.472C175.338 112.32 178.389 111.744 181.674 111.744C182.485 111.744 183.317 111.765 184.17 111.808C185.023 111.851 185.813 111.915 186.538 112V110.4C186.538 108.693 186.239 107.157 185.642 105.792C185.045 104.427 183.551 103.744 181.162 103.744C180.266 103.744 179.413 103.808 178.602 103.936C177.834 104.064 177.087 104.32 176.362 104.704L175.21 109.12L169.706 108.544L170.922 101.376ZM186.538 116.608V115.584C185.813 115.499 185.066 115.413 184.298 115.328C183.53 115.243 182.741 115.2 181.93 115.2C180.223 115.2 178.687 115.499 177.322 116.096C175.999 116.693 175.338 117.888 175.338 119.68C175.338 122.283 176.725 123.584 179.498 123.584C181.119 123.584 182.655 123.008 184.106 121.856C185.557 120.661 186.367 118.912 186.538 116.608ZM234.863 128H219.503V122.752H223.727V111.488C223.727 108.757 223.236 106.837 222.255 105.728C221.273 104.576 219.908 104 218.159 104C215.983 104 214.255 104.704 212.975 106.112C211.737 107.52 211.097 109.248 211.055 111.296V122.752H215.343V128H199.919V122.752H204.207V104.576H199.727V99.264H211.055V103.936C213.06 100.437 216.239 98.688 220.591 98.688C223.321 98.688 225.668 99.52 227.631 101.184C229.593 102.848 230.575 105.451 230.575 108.992V122.752H234.863V128ZM267.085 104.512H264.077L254.477 128L251.277 136.256H255.501V141.632H240.141V136.256H245.005L247.821 128.256L237.645 104.512H234.509V99.264H248.653V104.512H245.005L251.661 120.064H252.045L257.421 104.512H254.157V99.264H267.085V104.512ZM275.625 98.688L270.121 98.176L271.145 89.152C273.15 88.0427 275.22 87.2107 277.353 86.656C279.486 86.1013 281.449 85.824 283.241 85.824C286.825 85.824 289.812 86.6347 292.201 88.256C294.633 89.8347 295.849 92.032 295.849 94.848C295.849 97.024 295.209 98.7947 293.929 100.16C292.649 101.483 291.177 102.592 289.513 103.488C287.892 104.384 286.441 105.237 285.161 106.048C283.881 106.859 283.241 107.84 283.241 108.992C283.241 110.4 284.201 111.104 286.121 111.104V115.456C279.252 116.139 275.817 114.24 275.817 109.76C275.817 107.755 276.436 106.197 277.673 105.088C278.91 103.936 280.34 102.976 281.961 102.208C283.582 101.44 285.012 100.608 286.249 99.712C287.486 98.7733 288.105 97.536 288.105 96C288.105 93.3547 286.206 92.032 282.409 92.032C281.428 92.032 280.382 92.16 279.273 92.416C278.206 92.672 277.289 93.056 276.521 93.568L275.625 98.688ZM277.673 128V119.872H285.865V128H277.673Z" fill="white"/>
</svg>
utm_campaign = "hugosponsor"
[[banners]]
- name = "ButterCMS"
- link = "https://buttercms.com/hugo-cms/"
- logo = "images/sponsors/butter-light.svg"
- utm_campaign = "sponsorship"
- bgcolor = "#131A3E"
+ name = "Your Company?"
+ link = "https://bep.is/en/hugo-sponsor-2023-01/"
+ logo = "/images/sponsors/your-company.svg"
+ utm_campaign = "hugosponsor"
+ show_on_hover = true
+ bgcolor = "#004887"
[[banners]]
- name = "Gravity Kit"
- link = "https://www.gravitykit.com/"
- logo = "images/sponsors/graitykit-dark.svg"
- query_params = "ref=532&campaign=hugo&"
- utm_campaign = "hugosponsor"
- bgcolor = "#e0ecf3"
-
- #hugohome
- #hugofooter
- #hugogithub
+ name = "Your Company?"
+ link = "https://bep.is/en/hugo-sponsor-2023-01/"
+ logo = "/images/sponsors/your-company.svg"
+ utm_campaign = "hugosponsor"
+ show_on_hover = true
+ bgcolor = "#004887"
{{ $isFooter := (eq $gtag "footer") }}
{{ $utmSource := cond $isFooter "hugofooter" "hugohome" }}
{{ with .cx.Site.Data.sponsors }}
+ <style>
+ a.show-on-hover {
+ opacity: 0;
+ }
+ a.show-on-hover:hover {
+ opacity: 1;
+ }
+ </style>
<section
class="{{ $.classes_section | default "bg-primary-color-dark b--dark-gray bb bt ph5 pv4 w-100" }}">
<div class="center mw9">
<a
href="{{ $url }}"
onclick="trackOutboundLink({{ printf "'%s', '%s'" $gtagID $url | safeJS }});"
- class="w-100 grow pa3">
+ class="w-100 grow pa3{{ if .show_on_hover }}
+ show-on-hover
+ {{ end }}"
+ style="">
{{ $logo.Content | safeHTML }}
</a>
{{ else }}
- <a href="{{ $url }}" class="w-100 grow pa3" style="">
+ <a
+ href="{{ $url }}"
+ class="w-100 grow pa3{{ if .show_on_hover }}
+ show-on-hover
+ {{ end }}">
{{ $logo.Content | safeHTML }}
</a>
{{ end }}
-# github.com/gohugoio/gohugoioTheme v0.0.0-20230124135550-462d5fe4a87f
+# github.com/gohugoio/gohugoioTheme v0.0.0-20230418063032-99f9185b8e11
---
-linktitle: ""
+title: {{ replace .Name "-" " " | title }}
description: ""
-categories: [functions]
-tags: []
-ns: ""
signature: []
-hugoversion: ""
-aliases: []
+categories: [functions]
+keywords: []
+menu:
+ docs:
+ parent: functions
relatedfuncs: []
-toc: false
---
title: About Hugo
linktitle: Overview
description: Hugo's features, roadmap, license, and motivation.
-date: 2017-02-01
-publishdate: 2017-02-01
-lastmod: 2017-02-01
categories: []
keywords: []
menu:
docs:
- parent: "about"
+ parent: about
weight: 1
weight: 1
-draft: false
aliases: [/about-hugo/,/docs/]
-toc: false
---
Hugo is not your average static site generator.
title: The Benefits of Static Site Generators
linktitle: The Benefits of Static
description: Improved performance, security and ease of use are just a few of the reasons static site generators are so appealing.
-date: 2017-02-01
-publishdate: 2017-02-01
-lastmod: 2017-02-01
keywords: [ssg,static,performance,security]
menu:
docs:
- parent: "about"
+ parent: about
weight: 30
weight: 30
-sections_weight: 30
-draft: false
-aliases: []
-toc: false
---
The purpose of website generators is to render content into HTML files. Most are "dynamic site generators." That means the HTTP server---i.e., the program that sends files to the browser to be viewed---runs the generator to create a new HTML file every time an end user requests a page.
---
title: Hugo Features
-linktitle: Hugo Features
description: Hugo boasts blistering speed, robust content management, and a powerful templating language making it a great fit for all kinds of static websites.
-date: 2017-02-01
-publishdate: 2017-02-01
-lastmod: 2017-02-01
menu:
docs:
- parent: "about"
+ parent: about
weight: 20
weight: 20
-sections_weight: 20
-draft: false
toc: true
---
title: Hugo and the General Data Protection Regulation (GDPR)
linktitle: Hugo and GDPR
description: About how to configure your Hugo site to meet the new regulations.
-date: 2018-05-25
layout: single
keywords: ["GDPR", "Privacy", "Data Protection"]
menu:
docs:
- parent: "about"
+ parent: about
weight: 5
weight: 5
-sections_weight: 5
-draft: false
aliases: [/privacy/,/gdpr/]
toc: true
---
privacyEnhanced = false
{{< /code-toggle >}}
-
## Disable All Services
An example Privacy Config that disables all the relevant services in Hugo. With this configuration, the other settings will not matter.
useSessionStorage
: Enabling this will disable the use of Cookies and use Session Storage to Store the GA Client ID.
-{{% warning %}}
+{{% note %}}
`useSessionStorage` is not supported when using Google Analytics v4 (gtag.js).
-{{% /warning %}}
+{{% /note %}}
### Instagram
title: Apache License
linktitle: License
description: Hugo v0.15 and later are released under the Apache 2.0 license.
-date: 2016-02-01
-publishdate: 2016-02-01
-lastmod: 2016-03-02
categories: ["about hugo"]
keywords: ["License","apache"]
menu:
docs:
- parent: "about"
+ parent: about
weight: 60
weight: 60
-sections_weight: 60
aliases: [/meta/license]
toc: true
---
{{% note %}}
Hugo v0.15 and later are released under the Apache 2.0 license.
-Earlier versions of Hugo were released under the [Simple Public License](https://opensource.org/licenses/Simple-2.0).
+Earlier versions of Hugo were released under the [Simple Public License](https://opensource.org/license/simpl-2-0-html/).
{{% /note %}}
_Version 2.0, January 2004_ <br>
To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets `[]` replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same “printed page” as the copyright notice for easier identification within third-party archives.
-{{< code file="apache-notice.txt" download="apache-notice.txt" >}}
+{{< code file="apache-notice.txt" >}}
Copyright [yyyy] [name of copyright owner]
Licensed under the Apache License, Version 2.0 (the "License");
---
title: Hugo's Security Model
description: A summary of Hugo's security model.
-date: 2019-10-01
layout: single
keywords: ["Security", "Privacy"]
menu:
docs:
- parent: "about"
+ parent: about
weight: 4
weight: 5
-sections_weight: 5
aliases: [/security/]
toc: true
---
---
title: What is Hugo
-linktitle: What is Hugo
description: Hugo is a fast and modern static site generator written in Go, and designed to make website creation fun again.
-date: 2017-02-01
-publishdate: 2017-02-01
-lastmod: 2017-02-01
layout: single
menu:
docs:
- parent: "about"
+ parent: about
weight: 10
weight: 10
-sections_weight: 10
-draft: false
aliases: [/overview/introduction/,/about/why-i-built-hugo/]
toc: true
---
--ignoreVendorPaths string ignores any _vendor for module paths matching the given Glob pattern
--invalidateCDN invalidate the CDN cache listed in the deployment target (default true)
--maxDeletes int maximum # of files to delete, or -1 to disable (default 256)
+ --workers int number of workers to transfer files. (default 10)
-s, --source string filesystem path to read files relative from
--target string target deployment from deployments section in config file; defaults to the first one
--themesDir string filesystem path to themes directory
weight: 10
keywords: [source, organization]
categories: [content management]
-toc: false
weight: 10
aliases: [/content/,/content/organization]
---
---
title: Archetypes
-linkTitle: Archetypes
description: Archetypes are templates used when creating new content.
keywords: [archetypes,generators,metadata,front matter]
categories: [content management]
#### publishResources
-If set to true the [Bundle's Resources]({{< relref "content-management/page-bundles" >}}) will be published.
+If set to true the [Bundle's Resources](/content-management/page-bundles) will be published.
Setting this to false will still publish Resources on demand (when a resource's `.Permalink` or `.RelPermalink` is invoked from the templates) but will skip the others.
{{% note %}}
-Any page, regardless of their build options, will always be available using the [`.GetPage`]({{< relref "functions/GetPage" >}}) methods.
+Any page, regardless of their build options, will always be available using the [`.GetPage`](/functions/getpage) methods.
{{% /note %}}
-------
-
### Illustrative use cases
#### Not publishing a page
Project needs a "Who We Are" content file for Front Matter and body to be used by the homepage but nowhere else.
-```yaml
-# content/who-we-are.md`
+{{< code-toggle file="content/who-we-are.md" fm=true copy=false >}}
title: Who we are
_build:
list: false
render: false
-```
+{{< /code-toggle >}}
-```go-html-template
-{{/* layouts/index.html */}}
+{{< code file="layouts/index.html" copy=false >}}
<section id="who-we-are">
-{{ with site.GetPage "who-we-are" }}
- {{ .Content }}
-{{ end }}
+ {{ with site.GetPage "who-we-are" }}
+ {{ .Content }}
+ {{ end }}
</section>
-```
+{{< /code >}}
#### Listing pages without publishing them
Website needs to showcase a few of the hundred "testimonials" available as content files without publishing any of them.
-To avoid setting the build options on every testimonials, one can use [`cascade`]({{< relref "/content-management/front-matter#front-matter-cascade" >}}) on the testimonial section's content file.
+To avoid setting the build options on every testimonials, one can use [`cascade`](/content-management/front-matter#front-matter-cascade) on the testimonial section's content file.
{{< code-toggle >}}
title: Testimonials
list: true # default
{{< /code-toggle >}}
-```go-html-template
-{{/* layouts/_defaults/testimonials.html */}}
+{{< code file="layouts/_defaults/testimonials.html" copy=false >}}
<section id="testimonials">
-{{ range first 5 .Pages }}
- <blockquote cite="{{ .Params.cite }}">
- {{ .Content }}
- </blockquote>
-{{ end }}
+ {{ range first 5 .Pages }}
+ <blockquote cite="{{ .Params.cite }}">
+ {{ .Content }}
+ </blockquote>
+ {{ end }}
</section>
+{{< /code >}}
---
title: Comments
-linkTitle: Comments
description: Hugo ships with an internal Disqus template, but this isn't the only commenting system that will work with your new Hugo website.
keywords: [sections,content,organization]
categories: [project organization, fundamentals]
Disqus comments require you set a single value in your [site's configuration file][configuration] like so:
-{{< code-toggle copy="false" >}}
+{{< code-toggle copy=false >}}
disqusShortname = "yourDisqusShortname"
{{</ code-toggle >}}
---
title: Diagrams
-LinkTitle: Diagrams
description: Use fenced code blocks and markdown render hooks to display diagrams.
categories: [content management]
keywords: [diagrams,drawing]
```go-html-template
{{ if .Page.Store.Get "hasMermaid" }}
- <script src="https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.js"></script>
- <script>
+ <script type="module">
+ import mermaid from 'https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.esm.min.mjs';
mermaid.initialize({ startOnLoad: true });
</script>
{{ end }}
With that you can use the `mermaid` language in Markdown code blocks:
+````
```mermaid
sequenceDiagram
participant Alice
John->>Bob: How about you?
Bob-->>John: Jolly good!
```
+````
## Goat Ascii Diagram Examples
- `rst2html`: `--leave-comments --initial-header-level=2`
- `pandoc`: `--mathjax`
-{{% warning "Performance of External Helpers" %}}
+{{% note %}}
Because additional formats are external commands, generation performance will rely heavily on the performance of the external tool you are using. As this feature is still in its infancy, feedback is welcome.
-{{% /warning %}}
+{{% /note %}}
### External Helper AsciiDoc
---
title: Front Matter
-linkTitle: Front Matter
description: Hugo allows you to add front matter in yaml, toml, or json to your content files.
-lastmod: 2017-02-24
categories: [content management]
keywords: ["front matter", "yaml", "toml", "json", "metadata", "archetypes"]
menu:
There are a few predefined variables that Hugo is aware of. See [Page Variables][pagevars] for how to call many of these predefined variables in your templates.
aliases
-: an array of one or more aliases (e.g., old published paths of renamed content) that will be created in the output directory structure . See [Aliases][aliases] for details.
+: An array of one or more aliases (e.g., old published paths of renamed content) that will be created in the output directory structure . See [Aliases][aliases] for details.
audio
-: an array of paths to audio files related to the page; used by the `opengraph` [internal template](/templates/internal) to populate `og:audio`.
+: An array of paths to audio files related to the page; used by the `opengraph` [internal template](/templates/internal) to populate `og:audio`.
cascade
-: a map of Front Matter keys whose values are passed down to the page's descendants unless overwritten by self or a closer ancestor's cascade. See [Front Matter Cascade](#front-matter-cascade) for details.
+: A map of front matter keys whose values are passed down to the page's descendants unless overwritten by self or a closer ancestor's cascade. See [Front Matter Cascade](#front-matter-cascade) for details.
date
-: the datetime assigned to this page. This is usually fetched from the `date` field in front matter, but this behavior is configurable.
+: The datetime assigned to this page. This is usually fetched from the `date` field in front matter, but this behavior is configurable.
description
-: the description for the content.
+: The description for the content.
draft
-: if `true`, the content will not be rendered unless the `--buildDrafts` flag is passed to the `hugo` command.
+: If `true`, the content will not be rendered unless the `--buildDrafts` flag is passed to the `hugo` command.
expiryDate
-: the datetime at which the content should no longer be published by Hugo; expired content will not be rendered unless the `--buildExpired` flag is passed to the `hugo` command.
+: The datetime at which the content should no longer be published by Hugo; expired content will not be rendered unless the `--buildExpired` flag is passed to the `hugo` command.
headless
-: if `true`, sets a leaf bundle to be [headless][headless-bundle].
+: If `true`, sets a leaf bundle to be [headless][headless-bundle].
images
-: an array of paths to images related to the page; used by [internal templates](/templates/internal) such as `_internal/twitter_cards.html`.
+: An array of paths to images related to the page; used by [internal templates](/templates/internal) such as `_internal/twitter_cards.html`.
isCJKLanguage
-: if `true`, Hugo will explicitly treat the content as a CJK language; both `.Summary` and `.WordCount` work properly in CJK languages.
+: If `true`, Hugo will explicitly treat the content as a CJK language; both `.Summary` and `.WordCount` work properly in CJK languages.
keywords
-: the meta keywords for the content.
+: The meta keywords for the content.
layout
-: the layout Hugo should select from the [lookup order][lookup] when rendering the content. If a `type` is not specified in the front matter, Hugo will look for the layout of the same name in the layout directory that corresponds with a content's section. See [Content Types][content type].
+: The layout Hugo should select from the [lookup order][lookup] when rendering the content. If a `type` is not specified in the front matter, Hugo will look for the layout of the same name in the layout directory that corresponds with a content's section. See [Content Types][content type].
lastmod
-: the datetime at which the content was last modified.
+: The datetime at which the content was last modified.
linkTitle
-: used for creating links to content; if set, Hugo defaults to using the `linktitle` before the `title`. Hugo can also [order lists of content by `linktitle`][bylinktitle].
+: Used for creating links to content; if set, Hugo defaults to using the `linktitle` before the `title`. Hugo can also [order lists of content by `linktitle`][bylinktitle].
markup
: **experimental**; specify `"rst"` for reStructuredText (requires`rst2html`) or `"md"` (default) for Markdown.
outputs
-: allows you to specify output formats specific to the content. See [output formats][outputs].
+: Allows you to specify output formats specific to the content. See [output formats][outputs].
publishDate
-: if in the future, content will not be rendered unless the `--buildFuture` flag is passed to `hugo`.
+: If in the future, content will not be rendered unless the `--buildFuture` flag is passed to `hugo`.
resources
-: used for configuring page bundle resources. See [Page Resources][page-resources].
+: Used for configuring page bundle resources. See [Page Resources][page-resources].
series
-: an array of series this page belongs to, as a subset of the `series` [taxonomy](/content-management/taxonomies/); used by the `opengraph` [internal template](/templates/internal) to populate `og:see_also`.
+: An array of series this page belongs to, as a subset of the `series` [taxonomy](/content-management/taxonomies/); used by the `opengraph` [internal template](/templates/internal) to populate `og:see_also`.
slug
-: appears as the tail of the output URL. A value specified in front matter will override the segment of the URL based on the filename.
+: Overrides the last segment of the URL path. Not applicable to section pages. See [URL Management](/content-management/urls/#slug) for details.
summary
-: text used when providing a summary of the article in the `.Summary` page variable; details available in the [content-summaries](/content-management/summaries/) section.
+: Text used when providing a summary of the article in the `.Summary` page variable; details available in the [content-summaries](/content-management/summaries/) section.
title
-: the title for the content.
+: The title for the content.
type
-: the type of the content; this value will be automatically derived from the directory (i.e., the [section]) if not specified in front matter.
+: The type of the content; this value will be automatically derived from the directory (i.e., the [section]) if not specified in front matter.
url
-: the full path to the content from the web root. It makes no assumptions about the path of the content file. See [URL Management](/content-management/urls/#set-url-in-front-matter).
+: Overrides the entire URL path. Applicable to regular pages and section pages. See [URL Management](/content-management/urls/#url) for details.
videos
-: an array of paths to videos related to the page; used by the `opengraph` [internal template](/templates/internal) to populate `og:video`.
+: An array of paths to videos related to the page; used by the `opengraph` [internal template](/templates/internal) to populate `og:video`.
weight
: used for [ordering your content in lists][ordering]. Lower weight gets higher precedence. So content with lower weight will come first. If set, weights should be non-zero, as 0 is interpreted as an *unset* weight.
\<taxonomies\>
-: field name of the *plural* form of the index. See `tags` and `categories` in the above front matter examples. *Note that the plural form of user-defined taxonomies cannot be the same as any of the predefined front matter variables.*
+: Field name of the *plural* form of the index. See `tags` and `categories` in the above front matter examples. *Note that the plural form of user-defined taxonomies cannot be the same as any of the predefined front matter variables.*
-{{% note "Hugo's Default URL Destinations" %}}
+{{% note %}}
If neither `slug` nor `url` is present and [permalinks are not configured otherwise in your site `config` file](/content-management/urls/#permalinks), Hugo will use the filename of your content to create the output URL. See [Content Organization](/content-management/organization) for an explanation of paths in Hugo and [URL Management](/content-management/urls/) for ways to customize Hugo's default behaviors.
{{% /note %}}
The following fields can be accessed via `.Params.include_toc` and `.Params.show_comments`, respectively. The [Variables] section provides more information on using Hugo's page- and site-level variables in your templates.
-{{< code-toggle copy="false" >}}
+{{< code-toggle copy=false >}}
include_toc: true
show_comments: false
{{</ code-toggle >}}
The `cascade` block can be a slice with a optional `_target` keyword, allowing for multiple `cascade` values targeting different page sets.
-{{< code-toggle copy="false" >}}
+{{< code-toggle copy=false >}}
title ="Blog"
[[cascade]]
background = "yosemite.jpg"
In `content/blog/_index.md`
-{{< code-toggle copy="false" >}}
+{{< code-toggle copy=false >}}
title: Blog
cascade:
banner: images/typewriter.jpg
---
title: Image Processing
-linkTitle: Image Processing
description: Resize, crop, rotate, filter, and convert images.
categories: [content management]
keywords: [resources, images]
hugo --gc
```
-[`anchor`]: {{< relref "content-management/image-processing#anchor" >}}
-[`lang.FormatNumber`]: {{< relref "functions/lang#langformatnumber" >}}
-[Exif]: <https://en.wikipedia.org/wiki/Exif>
-[filters]: {{< relref "functions/images" >}}
+[time.Format]: /functions/dateformat
+[`anchor`]: /content-management/image-processing#anchor
+[mounted]: /hugo-modules/configuration#module-config-mounts
+[page bundle]: /content-management/page-bundles
+[`lang.FormatNumber`]: /functions/lang
+[filters]: /functions/images
[github.com/disintegration/imaging]: <https://github.com/disintegration/imaging#image-resizing>
-[mounted]: {{< relref "hugo-modules/configuration#module-config-mounts">}}
-[page bundle]: {{< relref "content-management/page-bundles" >}}
[Smartcrop]: <https://github.com/muesli/smartcrop#smartcrop>
-[time.Format]: {{< relref "functions/dateformat" >}}
+[Exif]: <https://en.wikipedia.org/wiki/Exif>
[`Colors`]: #colors
[`Crop`]: #crop
[`Exif`]: #exif
---
title: Menus
-linkTitle: Menus
-description: Hugo has a simple yet powerful menu system.
+description: Create menus by defining entries, localizing each entry, and rendering the resulting data structure.
categories: [content management]
keywords: [menus]
menu:
aliases: [/extras/menus/]
---
-{{% note "Lazy Blogger"%}}
-If all you want is a simple menu for your sections, see the ["Section Menu for Lazy Bloggers" in Menu Templates](/templates/menu-templates/#section-menu-for-lazy-bloggers).
-{{% /note %}}
+## Overview
+
+To create a menu for your site:
-You can do this:
+1. Define the menu entries
+2. [Localize] each entry
+3. Render the menu with a [template]
-* Place content in one or many menus
-* Handle nested menus with unlimited depth
-* Create menu entries without being attached to any content
-* Distinguish active element (and active branch)
+Create multiple menus, either flat or nested. For example, create a main menu for the header, and a separate menu for the footer.
-## What is a Menu in Hugo?
+There are three ways to define menu entries:
-A **menu** is a named array of menu entries accessible by name via the [`.Site.Menus` site variable][sitevars]. For example, you can access your site's `main` menu via `.Site.Menus.main`.
+1. Automatically
+1. In front matter
+1. In site configuration
-{{% note "Menus on Multilingual Sites" %}}
-If you make use of the [multilingual feature](/content-management/multilingual/), you can define language-independent menus.
+{{% note %}}
+Although you can use these methods in combination when defining a menu, the menu will be easier to conceptualize and maintain if you use one method throughout the site.
{{% /note %}}
-See the [Menu Entry Properties][me-props] for all the variables and functions related to a menu entry.
+## Define automatically
-## Add content to menus
+To automatically define menu entries for each top-level section of your site, enable the section pages menu in your site configuration.
-Hugo allows you to add content to a menu via the content's [front matter](/content-management/front-matter/).
+{{< code-toggle file="config" copy=false >}}
+sectionPagesMenu = "main"
+{{< /code-toggle >}}
-### Simple
+This creates a menu structure that you can access with `site.Menus.main` in your templates. See [menu templates] for details.
-If all you need to do is add an entry to a menu, the simple form works well.
+## Define in front matter
-#### A Single Menu
+To add a page to the "main" menu:
-{{< code-toggle >}}
-menu: "main"
+{{< code-toggle file="content/about.md" copy=false fm=true >}}
+title = 'About'
+menu = 'main'
{{< /code-toggle >}}
-#### Multiple Menus
+Access the entry with `site.Menus.main` in your templates. See [menu templates] for details.
+
+To add a page to the "main" and "footer" menus:
-{{< code-toggle >}}
-menu: ["main", "footer"]
+{{< code-toggle file="content/contact.md" copy=false fm=true >}}
+title = 'Contact'
+menu = ['main','footer']
{{< /code-toggle >}}
-#### Advanced
+Access the entry with `site.Menus.main` and `site.Menus.footer` in your templates. See [menu templates] for details.
-{{< code-toggle >}}
-menu:
- docs:
- parent: 'extras'
- weight: 20
+### Properties {#properties-front-matter}
+
+Use these properties when defining menu entries in front matter:
+
+identifier
+: (`string`) Required when two or more menu entries have the same `name`, or when localizing the `name` using translation tables. Must start with a letter, followed by letters, digits, or underscores.
+
+name
+: (`string`) The text to display when rendering the menu entry.
+
+params
+: (`map`) User-defined properties for the menu entry.
+
+parent
+: (`string`) The `identifier` of the parent menu entry. If `identifier` is not defined, use `name`. Required for child entries in a nested menu.
+
+post
+: (`string`) The HTML to append when rendering the menu entry.
+
+pre
+: (`string`) The HTML to prepend when rendering the menu entry.
+
+title
+: (`string`) The HTML `title` attribute of the rendered menu entry.
+
+weight
+: (`int`) A non-zero integer indicating the entry's position relative the root of the menu, or to its parent for a child entry. Lighter entries float to the top, while heavier entries sink to the bottom.
+
+### Example {#example-front-matter}
+
+This front matter menu entry demonstrates some of the available properties:
+
+{{< code-toggle file="content/products/software.md" copy=false fm=true >}}
+title = 'Software'
+[menu.main]
+parent = 'Products'
+weight = 20
+pre = '<i class="fa-solid fa-code"></i>'
+[menu.main.params]
+class = 'center'
{{< /code-toggle >}}
-## Add Non-content Entries to a Menu
+Access the entry with `site.Menus.main` in your templates. See [menu templates] for details.
+
-You can also add entries to menus that aren’t attached to a piece of content. This takes place in your Hugo project's [`config` file][config] (see [Menu Entry Properties][me-props] for full details of available variables).
+## Define in site configuration
-Here’s an example snippet pulled from a configuration file:
+To define entries for the "main" menu:
-{{< code-toggle file="config" >}}
+{{< code-toggle file="config" copy=false >}}
[[menu.main]]
- name = "about hugo"
- pre = "<i class='fa fa-heart'></i>"
- weight = -110
- identifier = "about"
- url = "/about/"
+name = 'Home'
+pageRef = '/'
+weight = 10
+
[[menu.main]]
- name = "getting started"
- pre = "<i class='fa fa-road'></i>"
- post = "<span class='alert'>New!</span>"
- weight = -100
- url = "/getting-started/"
+name = 'Products'
+pageRef = '/products'
+weight = 20
+
+[[menu.main]]
+name = 'Services'
+pageRef = '/services'
+weight = 30
+{{< /code-toggle >}}
+
+This creates a menu structure that you can access with `site.Menus.main` in your templates. See [menu templates] for details.
+
+To define entries for the "footer" menu:
+
+{{< code-toggle file="config" copy=false >}}
+[[menu.footer]]
+name = 'Terms'
+pageRef = '/terms'
+weight = 10
+
+[[menu.footer]]
+name = 'Privacy'
+pageRef = '/privacy'
+weight = 20
{{< /code-toggle >}}
+This creates a menu structure that you can access with `site.Menus.footer` in your templates. See [menu templates] for details.
+
+### Properties {#properties-site-configuration}
+
{{% note %}}
-The URLs must be relative to the context root. If the `baseURL` is `https://example.com/mysite/`, then the URLs in the menu must not include the context root `mysite`. Using an absolute URL will override the baseURL. If the value used for `URL` in the above example is `https://subdomain.example.com/`, the output will be `https://subdomain.example.com`.
+The [properties available to entries defined in front matter] are also available to entries defined in site configuration.
+
+[properties available to entries defined in front matter]: /content-management/menus/#properties-front-matter
{{% /note %}}
-## Nesting
+Each menu entry defined in site configuration requires two or more properties:
-All nesting of content is done via the `parent` field.
+- Specify `name` and `pageRef` for internal links
+- Specify `name` and `url` for external links
-The parent of an entry should be the identifier of another entry. The identifier should be unique (within a menu).
+pageRef
+: (`string`) The file path of the target page, relative to the `content` directory. Omit language code and file extension. Required for *internal* links.
-The following order is used to determine an Identifier:
+Kind|pageRef
+:--|:--
+home|`/`
+page|`/books/book-1`
+section|`/books`
+taxonomy|`/tags`
+term|`/tags/foo`
-`.Name > .LinkTitle > .Title`
+url
+: (`string`) Required for *external* links.
-This means that `.Title` will be used unless `.LinkTitle` is present, etc. In practice, `.Name` and `.Identifier` are only used to structure relationships and therefore never displayed.
+### Example {#example-site-configuration}
-In this example, the top level of the menu is defined in your [site `config` file][config]. All content entries are attached to one of these entries via the `.Parent` field.
+This nested menu demonstrates some of the available properties:
-## Params
+{{< code-toggle file="config" copy=false >}}
+[[menu.main]]
+name = 'Products'
+pageRef = '/products'
+weight = 10
-You can also add user-defined content to menu items via the `params` field.
+[[menu.main]]
+name = 'Hardware'
+pageRef = '/products/hardware'
+parent = 'Products'
+weight = 1
-A common use case is to define a custom param to add a css class to a specific menu item.
+[[menu.main]]
+name = 'Software'
+pageRef = '/products/software'
+parent = 'Products'
+weight = 2
+
+[[menu.main]]
+name = 'Services'
+pageRef = '/services'
+weight = 20
-{{< code-toggle file="config" >}}
[[menu.main]]
- name = "about hugo"
- pre = "<i class='fa fa-heart'></i>"
- weight = -110
- identifier = "about"
- url = "/about/"
- [menu.main.params]
- class = "highlight-menu-item"
-{{</ code-toggle >}}
-
-## Render Menus
-
-See [Menu Templates](/templates/menu-templates/) for information on how to render your site menus within your templates.
-
-[config]: /getting-started/configuration/
-[multilingual]: /content-management/multilingual/
-[sitevars]: /variables/
-[me-props]: /variables/menus/
+name = 'Hugo'
+pre = '<i class="fa fa-heart"></i>'
+url = 'https://gohugo.io/'
+weight = 30
+[menu.main.params]
+rel = 'external'
+{{< /code-toggle >}}
+
+This creates a menu structure that you can access with `site.Menus.main` in your templates. See [menu templates] for details.
+
+## Localize
+
+Hugo provides two methods to localize your menu entries. See [multilingual].
+
+## Render
+
+See [menu templates].
+
+[localize]: /content-management/multilingual/#menus
+[menu templates]: /templates/menu-templates/
+[multilingual]: /content-management/multilingual/#menus
+[template]: /templates/menu-templates/
You should define the available languages in a `languages` section in your site configuration.
-> Also See [Hugo Multilingual Part 1: Content translation]
+Also See [Hugo Multilingual Part 1: Content translation].
## Configure Languages
**Please note:** use lowercase language codes, even when using regional languages (ie. use pt-pt instead of pt-PT). Currently Hugo language internals lowercase language codes, which can cause conflicts with settings like `defaultContentLanguage` which are not lowercased. Please track the evolution of this issue in [Hugo repository issue tracker](https://github.com/gohugoio/hugo/issues/7344)
+### Changes in Hugo 0.112.0
+
+{{< new-in "0.112.0" >}}
+
+In version `0.112.0` of Hugo we did a major we consolidated all configuration options, but also improved how the languages and their params gets merged with the main configuration. But while testing this on Hugo sites out there, we got some error reports.
+
+1. `site.Language.Params` is deprecated. Use `site.Params` directly.
+1. The `params` sections on site and language is the only place to put custom user parameters, and `site.Params` will only contain these user defined parameters (see example below).
+
+```toml
+title = "My blog"
+languageCode = "en-us"
+
+[languages]
+[languages.sv]
+title = "Min blogg"
+languageCode = "sv"
+[languages.en.params]
+color = "blue"
+```
+
+In the example above, all the settings exept the `color` below `params` maps to predefined configuration options in Hguo for the site and its language, and should be accessed via the documented accessors:
+
+```
+{{ site.Title }}
+{{ site.LanguageCode }}
+{{ site.Params.color }}
+```
+
### Disable a Language
You can disable one or more languages. This can be useful when working on a new translation.
This means that you can now configure a `baseURL` per `language`:
-> If a `baseURL` is set on the `language` level, then all languages must have one and they must all be different.
+{{% note %}}
+If a `baseURL` is set on the `language` level, then all languages must have one and they must all be different.
+{{% /note %}}
Example:
By having the same **path and base filename**, the content pieces are __linked__ together as translated pages.
-{{< note >}}
+{{% note %}}
If a file has no language code, it will be assigned the default language.
-{{</ note >}}
+{{% /note %}}
### Translation by content directory
Because paths and filenames are used to handle linking, all translated pages will share the same URL (apart from the language subdirectory).
-To localize the URLs, the [`slug`]({{< ref "/content-management/organization/index.md#slug" >}}) or [`url`]({{< ref "/content-management/organization/index.md#url" >}}) front matter param can be set in any of the non-default language file.
+To localize URLs:
-For example, a French translation (`content/about.fr.md`) can have its own localized slug.
+- For a regular page, set either [`slug`] or [`url`] in front matter
+- For a section page, set [`url`] in front matter
-{{< code-toggle >}}
-Title: A Propos
+[`slug`]: /content-management/urls/#slug
+[`url`]: /content-management/urls/#url
+
+For example, a French translation can have its own localized slug.
+
+{{< code-toggle file="content/about.fr.md" fm=true copy=false >}}
+title: A Propos
slug: "a-propos"
{{< /code-toggle >}}
-At render, Hugo will build both `/about/` and `/fr/a-propos/` while maintaining their translation linking.
+At render, Hugo will build both `/about/` and `/fr/a-propos/` without affecting the translation link.
### Page Bundles
{{< code-toggle file="i18n/en-US" >}}
[readingTime]
one = "One minute to read"
-other = "{{.Count}} minutes to read"
+other = "{{ .Count }} minutes to read"
{{< /code-toggle >}}
Assuming `.ReadingTime.Count` in the context has value is 525600. The result will be:
## Menus
-You can define your menus for each language independently. Creating multilingual menus works just like [creating regular menus][menus], except they're defined in language-specific blocks in the configuration file:
-
-{{< code-toggle file="config" >}}
-defaultContentLanguage = "en"
-
-[languages.en]
-weight = 0
-languageName = "English"
+Localization of menu entries depends on the how you define them:
-[[languages.en.menu.main]]
-url = "/"
-name = "Home"
-weight = 0
+- When you define menu entries [automatically] using the section pages menu, you must use translation tables to localize each entry.
+- When you define menu entries [in front matter], they are already localized based on the front matter itself. If the front matter values are insufficient, use translation tables to localize each entry.
+- When you define menu entries [in site configuration], you can (a) use translation tables, or (b) create language-specific menu entries under each language key.
-[languages.de]
-weight = 10
-languageName = "Deutsch"
+### Use translation tables
-[[languages.de.menu.main]]
-url = "/"
-name = "Startseite"
-weight = 0
-{{< /code-toggle >}}
-
-The rendering of the main navigation works as usual. `.Site.Menus` will just contain the menu in the current language. Note that `absLangURL` below will link to the correct locale of your website. Without it, menu entries in all languages would link to the English version, since it's the default content language that resides in the root directory.
+When rendering the text that appears in menu each entry, the [example menu template] does this:
```go-html-template
-<ul>
- {{- $currentPage := . -}}
- {{ range .Site.Menus.main -}}
- <li class="{{ if $currentPage.IsMenuCurrent "main" . }}active{{ end }}">
- <a href="{{ .URL | absLangURL }}">{{ .Name }}</a>
- </li>
- {{- end }}
-</ul>
+{{ or (T .Identifier) .Name | safeHTML }}
```
-### Dynamically localizing menus with i18n
+It queries the translation table for the current language using the menu entry's `identifier` and returns the translated string. If the translation table does not exist, or if the `identifier` key is not present in the translation table, it falls back to `name`.
-While customizing menus per language is useful, your config file can become hard to maintain if you have a lot of languages
+The `identifier` depends on how you define menu entries:
-If your menus are the same in all languages (ie. if the only thing that changes is the translated name) you can use the `.Identifier` as a translation key for the menu name:
+- If you define the menu entry [automatically] using the section pages menu, the `identifier` is the page's `.Section`.
+- If you define the menu entry [in site configuration] or [in front matter], set the `identifier` property to the desired value.
-{{< code-toggle file="config" >}}
+For example, if you define menu entries in site configuration:
+
+{{< code-toggle file="config" copy=false >}}
+[[menu.main]]
+ identifier = 'products'
+ name = 'Products'
+ pageRef = '/products'
+ weight = 10
[[menu.main]]
-name = "About me"
-url = "about"
+ identifier = 'services'
+ name = 'Services'
+ pageRef = '/services'
+ weight = 20
+{{< / code-toggle >}}
+
+Create corresponding entries in the translation tables:
+
+{{< code-toggle file="i18n/de" copy=false >}}
+products = 'Produkte'
+services = 'Leistungen'
+{{< / code-toggle >}}
+
+[example menu template]: /templates/menu-templates/#example
+[automatically]: /content-management/menus/#define-automatically
+[in front matter]: /content-management/menus/#define-in-front-matter
+[in site configuration]: /content-management/menus/#define-in-site-configuration
+
+### Create language-specific menu entries
+
+For example:
+
+{{< code-toggle file="config" copy=false >}}
+[languages.de]
+languageCode = 'de-DE'
+languageName = 'Deutsch'
weight = 1
-identifier = "about"
-{{< /code-toggle >}}
-You now need to specify the translations for the menu keys in the i18n files:
+[[languages.de.menu.main]]
+name = 'Produkte'
+pageRef = '/products'
+weight = 10
-{{< code file="i18n/pt.toml" >}}
-[about]
-other="Sobre mim"
-{{< /code >}}
+[[languages.de.menu.main]]
+name = 'Leistungen'
+pageRef = '/services'
+weight = 20
-And do the appropriate changes in the menu code to use the `i18n` tag with the `.Identifier` as a key. You will also note that here we are using a `default` to fall back to `.Name`, in case the `.Identifier` key is also not present in the language specified in the `defaultContentLanguage` configuration.
+[languages.en]
+languageCode = 'en-US'
+languageName = 'English'
+weight = 2
-{{< code file="layouts/partials/menu.html" >}}
-<ul>
- {{- $currentPage := . -}}
- {{ range .Site.Menus.main -}}
- <li class="{{ if $currentPage.IsMenuCurrent "main" . }}active{{ end }}">
- <a href="{{ .URL | absLangURL }}">{{ i18n .Identifier | default .Name}}</a>
- </li>
- {{- end }}
-</ul>
-{{< /code >}}
+[[languages.en.menu.main]]
+name = 'Products'
+pageRef = '/products'
+weight = 10
+
+[[languages.en.menu.main]]
+name = 'Services'
+pageRef = '/services'
+weight = 20
+{{< /code-toggle >}}
+
+For a simple menu with two languages, these menu entries are easy to create and maintain. For a larger menu, or with more than two languages, using translation tables as described above is preferable.
## Missing Translations
[homepage]: /templates/homepage/
[Hugo Multilingual Part 1: Content translation]: https://regisphilibert.com/blog/2018/08/hugo-multilingual-part-1-managing-content-translation/
[i18func]: /functions/i18n/
-[lang.FormatAccounting]: /functions/lang/#langformataccounting
-[lang.FormatCurrency]: /functions/lang/#langformatcurrency
-[lang.FormatNumber]: /functions/lang/#langformatnumber
-[lang.FormatNumberCustom]: /functions/lang/#langformatnumbercustom
-[lang.FormatPercent]: /functions/lang/#langformatpercent
+[lang.FormatAccounting]: /functions/lang
+[lang.FormatCurrency]: /functions/lang
+[lang.FormatNumber]: /functions/lang
+[lang.FormatNumberCustom]: /functions/lang
+[lang.FormatPercent]: /functions/lang
[lang.Merge]: /functions/lang.merge/
[menus]: /content-management/menus/
[OS environment]: /getting-started/configuration/#configure-with-environment-variables
Hugo `0.32` announced page-relative images and other resources packaged into `Page Bundles`.
-These terms are connected, and you also need to read about [Page Resources]({{< relref "/content-management/page-resources" >}}) and [Image Processing]({{< relref "/content-management/image-processing" >}}) to get the full picture.
+These terms are connected, and you also need to read about [Page Resources](/content-management/page-resources) and [Image Processing](/content-management/image-processing) to get the full picture.
{{< imgproc 1-featured Resize "300x" >}}
The illustration shows three bundles. Note that the home page bundle cannot contain other content pages, although other files (images etc.) are allowed.
### `slug`
-A content's `slug` is either `name.extension` or `name/`. The value for `slug` is determined by
-
-* the name of the content file (e.g., `lollapalooza.md`) OR
-* front matter overrides
+The `slug` is the last segment of the URL path, defined by the file name and optionally overridden by a `slug` value in front matter. See [URL Management](/content-management/urls/#slug) for details.
### `path`
### `url`
-The `url` is the relative URL for the piece of content. The `url`
-
-* is based on the content item's location within the directory structure OR
-* is defined in front matter, in which case it *overrides all the above*
-
-## Override Destination Paths via Front Matter
-
-Hugo assumes that your content is organized with a purpose. The same structure that you use to organize your source content is used to organize the rendered site. As displayed above, the organization of the source content will be mirrored at the destination.
-
-There are times when you may need more fine-grained control over the content organization. In such cases, the front matter field can be used to determine the destination of a specific piece of content.
-
-The following items are defined in a specific order for a reason: items explained lower down in the list override higher items. Note that not all items can be defined in front matter.
-
-### `filename`
-
-`filename` is not a front matter field. It is the actual file name, minus the extension. This will be the name of the file in the destination (e.g., `content/posts/my-post.md` becomes `example.com/posts/my-post/`).
-
-### `slug`
-
-When defined in the front matter, the `slug` can take the place of the filename in the destination.
-
-{{< code file="content/posts/old-post.md" >}}
----
-title: A new post with the filename old-post.md
-slug: "new-post"
----
-{{< /code >}}
-
-This will render to the following destination according to Hugo's default behavior:
-
-```txt
-example.com/posts/new-post/
-```
-
-### `section`
-
-`section` is determined by a content item's location on disk and *cannot* be specified in the front matter. See [sections] for more information.
-
-### `type`
-
-A content item's `type` is also determined by its location on disk but, unlike `section`, it *can* be specified in the front matter. See [types]. This can come in especially handy when you want a piece of content to render using a different layout. In the following example, you can create a layout at `layouts/new/mylayout.html` that Hugo will use to render this piece of content, even in the midst of many other posts.
-
-{{< code file="content/posts/my-post.md" >}}
----
-title: My Post
-type: new
-layout: mylayout
----
-{{< /code >}}
-<!-- See https://discourse.gohugo.io/t/path-not-works/6387 -->
-<!-- ### `path`-->
-
-<!--`path` can be provided in the front matter. This will replace the actual path to the file on disk. Destination will create the destination with the same path, including the section. -->
-
-### `url`
-
-A complete URL can be provided. This will override all the above as it pertains to the end destination. This must be the path from the baseURL (starting with a `/`). `url` will be used exactly as it is defined in the front matter, and will ignore the `--uglyURLs` setting in your site configuration:
-
-{{< code file="content/posts/old-url.md" >}}
----
-title: Old URL
-url: /blog/new-url/
----
-{{< /code >}}
-
-Assuming your `baseURL` is [configured][config] to `https://example.com`, the addition of `url` to the front matter will make `old-url.md` render to the following destination:
-
-```txt
-https://example.com/blog/new-url/
-```
-
-You can see more information on how to control output paths in [URL Management][urls].
+The `url` is the entire URL path, defined by the file path and optionally overridden by a `url` value in front matter. See [URL Management](/content-management/urls/#slug) for details.
[config]: /getting-started/configuration/
[formats]: /content-management/formats/
[homepage template]: /templates/homepage/
[homepage]: /templates/homepage/
[lists]: /templates/lists/
-[pretty]: /content-management/urls/#pretty-urls
+[pretty]: /content-management/urls/#appearance
[section templates]: /templates/section-templates/
[sections]: /content-management/sections/
[singles]: /templates/single-page-templates/
---
title: Page Bundles
-linkTitle: Page Bundles
description: Content organization using Page Bundles
-linkTitle: Page Bundles
keywords: [page, bundle, leaf, branch]
categories: [content management]
menu :
docs:
- identifier: "page-bundles"
- parent: "content-management"
+ parent: content-management
weight: 30
toc: true
weight: 30
A leaf bundle can be made headless by adding below in the Front Matter
(in the `index.md`):
-```toml
+{{< code-toggle file="content/headless/index.md" fm=true copy=false >}}
headless = true
-```
+{{< /code-toggle >}}
There are many use cases of such headless page bundles:
---
title: Page Resources
-linkTitle: Page Resources
description: Page resources -- images, other pages, documents, etc. -- have page-relative URLs and their own metadata.
categories: [content management]
keywords: [bundle,content,resources]
toc: true
weight: 80
---
-Page resources are only accessible from [page bundles]({{< relref
-"/content-management/page-bundles" >}}), those directories with `index.md` or
+Page resources are only accessible from [page bundles](/content-management/page-bundles), those directories with `index.md` or
`_index.md` files at their root. Page resources are only available to the
page with which they are bundled.
name
: Sets the value returned in `Name`.
-{{% warning %}}
+{{% note %}}
The methods `Match`, `Get` and `GetMatch` use `Name` to match the resources.
-{{%/ warning %}}
+{{% /note %}}
title
: Sets the value returned in `Title`
### Resources metadata example
-{{< code-toggle copy="false">}}
+{{< code-toggle copy=false >}}
title: Application
date : 2018-01-25
resources :
- All `PDF` files will get a new `Name`. The `name` parameter contains a special placeholder [`:counter`](#the-counter-placeholder-in-name-and-title), so the `Name` will be `pdf-file-1`, `pdf-file-2`, `pdf-file-3`.
- Every docx in the bundle will receive the `word` icon.
-{{% warning %}}
+{{% note %}}
The __order matters__ --- Only the **first set** values of the `title`, `name` and `params`-**keys** will be used. Consecutive parameters will be set only for the ones not already set. In the above example, `.Params.icon` is first set to `"photo"` in `src = "documents/photo_specs.pdf"`. So that would not get overridden to `"pdf"` by the later set `src = "**.pdf"` rule.
-{{%/ warning %}}
+{{% /note %}}
### The `:counter` placeholder in `name` and `title`
For example, if a bundle has the resources `photo_specs.pdf`, `other_specs.pdf`, `guide.pdf` and `checklist.pdf`, and the front matter has specified the `resources` as:
-{{< code-toggle copy="false">}}
+{{< code-toggle copy=false >}}
[[resources]]
src = "*specs.pdf"
title = "Specification #:counter"
---
title: Related Content
-linkTitle: Related Content
description: List related content in "See Also" sections.
categories: [content management]
keywords: [content]
{{ end }}
{{< /code >}}
-### Methods
+The `Related` method takes one argument which may be a `Page` or a options map. The options map have these options:
-Here is the list of "Related" methods available on a page collection such `.RegularPages`.
+indices
+: The indices to search in.
-#### .Related PAGE
+document
+: The document to search for related content for.
-Returns a collection of pages related the given one.
+namedSlices
+: The keywords to search for.
+
+fragments
+: Fragments holds a a list of special keywords that is used for indices configured as type "fragments". This will match the fragment identifiers of the documents.
+
+A fictional example using all of the above options:
```go-html-template
-{{ $related := site.RegularPages.Related . }}
+{{ $page := . }}
+{{ $opts :=
+ "indices" (slice "tags" "keywords")
+ "document" $page
+ "namedSlices" (slice (keyVals "tags" "hugo" "rocks") (keyVals "date" $page.Date))
+ "fragments" (slice "heading-1" "heading-2")
+}}
```
-#### .RelatedIndices PAGE INDICE1 [INDICE2 ...]
+{{% note %}}
+We improved and simplified this feature in Hugo 0.111.0. Before this we had 3 different methods: `Related`, `RelatedTo` and `RelatedIndicies`. Now we have only one method: `Related`. The old methods are still available but deprecated. Also see [this blog article](https://regisphilibert.com/blog/2018/04/hugo-optmized-relashionships-with-related-content/) for a great explanation of more advanced usage of this feature.
+{{% /note %}}
-Returns a collection of pages related to a given one restricted to a list of indices.
+## Index Content Headings in Related Content
-```go-html-template
-{{ $related := site.RegularPages.RelatedIndices . "tags" "date" }}
-```
+{{< new-in "0.111.0" >}}
-#### .RelatedTo KEYVALS [KEYVALS2 ...]
+Hugo can index the headings in your content and use this to find related content. You can enable this by adding a index of type `fragments` to your `related` configuration:
-Returns a collection of pages related together by a set of indices and their match.
+{{< code-toggle file="config" copy=false >}}
+[related]
+threshold = 20
+includeNewer = true
+toLower = false
+[[related.indices]]
+name = "fragmentrefs"
+type = "fragments"
+applyFilter = false
+weight = 80
+{{< /code-toggle >}}
-In order to build those set and pass them as argument, one must use the `keyVals` function where the first argument would be the `indice` and the consecutive ones its potential `matches`.
+* The `name` maps to a optional front matter slice attribute that can be used to link from the page level down to the fragment/heading level.
+* If `applyFilter`is enabled, the `.HeadingsFiltered` on each page in the result will reflect the filtered headings. This is useful if you want to show the headings in the related content listing:
```go-html-template
-{{ $related := site.RegularPages.RelatedTo ( keyVals "tags" "hugo" "rocks") ( keyVals "date" .Date ) }}
+{{ $related := .Site.RegularPages.Related . | first 5 }}
+{{ with $related }}
+ <h2>See Also</h2>
+ <ul>
+ {{ range $i, $p := . }}
+ <li>
+ <a href="{{ .RelPermalink }}">{{ .Title }}</a>
+ {{ with .HeadingsFiltered }}
+ <ul>
+ {{ range . }}
+ {{ $link := printf "%s#%s" $p.RelPermalink .ID | safeURL }}
+ <li>
+ <a href="{{ $link }}">{{ .Title }}</a>
+ </li>
+ {{ end }}
+ </ul>
+ {{ end }}
+ </li>
+ {{ end }}
+ </ul>
+{{ end }}
```
-{{% note %}}
-Read [this blog article](https://regisphilibert.com/blog/2018/04/hugo-optmized-relashionships-with-related-content/) for a great explanation of more advanced usage of this feature.
-{{% /note %}}
-
## Configure Related Content
Hugo provides a sensible default configuration of Related Content, but you can fine-tune this in your configuration, on the global or language level if needed.
name
: The index name. This value maps directly to a page param. Hugo supports string values (`author` in the example) and lists (`tags`, `keywords` etc.) and time and date objects.
+type
+: {{< new-in "0.111.0" >}}. One of `basic`(default) or `fragments`.
+
+applyFilter
+: {{< new-in "0.111.0" >}}. Apply a `type` specific filter to the result of a search. This is currently only used for the `fragments` type.
+
weight
: An integer weight that indicates _how important_ this parameter is relative to the other parameters. It can be 0, which has the effect of turning this index off, or even negative. Test with different values to see what fits your content best.
+
+cardinalityThreshold (default 0)
+: {{< new-in "0.111.0" >}}. A percentage (0-100) used to remove common keywords from the index. As an example, setting this to 50 will remove all keywords that are used in more than 50% of the documents in the index.
+
pattern
: This is currently only relevant for dates. When listing related content, we may want to list content that is also close in time. Setting "2006" (default value for date indexes) as the pattern for a date index will add weight to pages published in the same year. For busier blogs, "200601" (year and month) may be a better default.
title: Content Sections
linkTitle: Sections
description: Hugo generates a **section tree** that matches your content.
-date: 2017-02-01
-publishdate: 2017-02-01
-lastmod: 2017-02-01
categories: [content management]
keywords: [lists,sections,content types,organization]
menu:
With the available [section variables and methods](#section-page-variables-and-methods) you can build powerful navigation. One common example would be a partial to show Breadcrumb navigation:
-{{< code file="layouts/partials/breadcrumb.html" download="breadcrumb.html" >}}
-<ol class="nav navbar-nav">
-<ul>
-{{- range .Ancestors.Reverse }}
-<li><a href="{{ .Permalink }}">{{ .Title }}</a></li>
-{{- end }}
-<li class="active" aria-current="page">
-<a href="{{ .Permalink }}">{{ .Title }}</a>
-</li>
-</ul>
-</ol>
+{{< code file="layouts/partials/breadcrumb.html" >}}
+<nav aria-label="breadcrumb">
+ <ol>
+ {{ range .Ancestors.Reverse }}
+ <li>
+ <a href="{{ .Permalink }}">{{ .LinkTitle }}</a>
+ </li>
+ {{ end }}
+ <li class="active">
+ <a aria-current="page" href="{{ .Permalink }}">{{ .LinkTitle }}</a>
+ </li>
+ </ol>
+</nav>
{{< /code >}}
## Section Page Variables and Methods
---
title: Shortcodes
-linkTitle: Shortcodes
description: Shortcodes are simple snippets inside your content files calling built-in or custom templates.
categories: [content management]
keywords: [markdown,content,shortcodes]
#### Example `figure` Input
{{< code file="figure-input-example.md" >}}
-{{</* figure src="/media/spf13.jpg" title="Steve Francia" */>}}
+{{</* figure src="elephant.jpg" title=">An elephant at sunset" */>}}
{{< /code >}}
#### Example `figure` Output
-{{< output file="figure-output-example.html" >}}
+```html
<figure>
- <img src="/media/spf13.jpg" />
- <figcaption>
- <h4>Steve Francia</h4>
- </figcaption>
+ <img src="elephant.jpg">
+ <figcaption>An elephant at sunset</figcaption>
</figure>
-{{< /output >}}
+```
### `gist`
-Bloggers often want to include GitHub gists when writing posts. Let's suppose we want to use the [gist at the following url][examplegist]:
+To display a GitHub [gist] with this URL:
-```txt
-https://gist.github.com/spf13/7896402
+[gist]: https://docs.github.com/en/get-started/writing-on-github/editing-and-sharing-content-with-gists
+
+```text
+https://gist.github.com/user/50a7482715eac222e230d1e64dd9a89b
```
-We can embed the gist in our content via username and gist ID pulled from the URL:
+Include this in your markdown:
-```go-html-template
-{{</* gist spf13 7896402 */>}}
+```text
+{{</* gist user 50a7482715eac222e230d1e64dd9a89b */>}}
```
-#### Example `gist` Input
-
-If the gist contains several files and you want to quote just one of them, you can pass the filename (quoted) as an optional third argument:
+This will display all files in the gist alphabetically by file name.
-{{< code file="gist-input.md" >}}
-{{</* gist spf13 7896402 "img.html" */>}}
-{{< /code >}}
+{{< gist jmooring 50a7482715eac222e230d1e64dd9a89b >}}
-#### Example `gist` Output
+To display a specific file within the gist:
-{{< output file="gist-output.html" >}}
-{{< gist spf13 7896402 >}}
-{{< /output >}}
-
-#### Example `gist` Display
+```text
+{{</* gist user 50a7482715eac222e230d1e64dd9a89b 1-template.html */>}}
+```
-To demonstrate the remarkable efficiency of Hugo's shortcode feature, we have embedded the `spf13` `gist` example in this page. The following simulates the experience for visitors to your website. Naturally, the final display will depend on your stylesheets and surrounding markup.
+Rendered:
-{{< gist spf13 7896402 >}}
+{{< gist jmooring 50a7482715eac222e230d1e64dd9a89b 1-template.html >}}
### `highlight`
-This shortcode will convert the source code provided into syntax-highlighted HTML. Read more on [highlighting](/content-management/syntax-highlighting/). `highlight` takes exactly one required `language` parameter and requires a closing shortcode.
-
-#### Example `highlight` Input
+To display a highlighted code sample:
-{{< code file="content/tutorials/learn-html.md" >}}
-{{</* highlight html */>}}
-<section id="main">
- <div>
- <h1 id="title">{{ .Title }}</h1>
- {{ range .Pages }}
- {{ .Render "summary"}}
- {{ end }}
- </div>
-</section>
+```text
+{{</* highlight go-html-template */>}}
+{{ range .Pages }}
+ <h2><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></h2>
+{{ end }}
{{</* /highlight */>}}
-{{< /code >}}
-
-#### Example `highlight` Output
-
-The `highlight` shortcode example above would produce the following HTML when the site is rendered:
+```
-{{< output file="tutorials/learn-html/index.html" >}}
-<span style="color: #f92672"><section</span> <span style="color: #a6e22e">id=</span><span style="color: #e6db74">"main"</span><span style="color: #f92672">></span>
- <span style="color: #f92672"><div></span>
- <span style="color: #f92672"><h1</span> <span style="color: #a6e22e">id=</span><span style="color: #e6db74">"title"</span><span style="color: #f92672">></span>{{ .Title }}<span style="color: #f92672"></h1></span>
- {{ range .Pages }}
- {{ .Render "summary"}}
- {{ end }}
- <span style="color: #f92672"></div></span>
-<span style="color: #f92672"></section></span>
-{{< /output >}}
+Rendered:
-{{% note "More on Syntax Highlighting" %}}
-To see even more options for adding syntax-highlighted code blocks to your website, see [Syntax Highlighting in Developer Tools](/tools/syntax-highlighting/).
-{{% /note %}}
+{{< highlight go-html-template >}}
+{{ range .Pages }}
+ <h2><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></h2>
+{{ end }}
+{{< /highlight >}}
-### `instagram`
+To specify one or more [highlighting options], include a quotation-encapsulated, comma-separated list:
-If you'd like to embed a photo from [Instagram], you only need the photo's ID. You can discern an Instagram photo ID from the URL:
+[highlighting options]: /functions/highlight/
-```txt
-https://www.instagram.com/p/BWNjjyYFxVx/
+```text
+{{</* highlight go-html-template "lineNos=inline, lineNoStart=42" */>}}
+{{ range .Pages }}
+ <h2><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></h2>
+{{ end }}
+{{</* /highlight */>}}
```
-#### Example `instagram` Input
+Rendered:
-{{< code file="instagram-input.md" >}}
-{{</* instagram BWNjjyYFxVx */>}}
-{{< /code >}}
+{{< highlight go-html-template "lineNos=inline, lineNoStart=42" >}}
+{{ range .Pages }}
+ <h2><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></h2>
+{{ end }}
+{{< /highlight >}}
-You also have the option to hide the caption:
+### `instagram`
-{{< code file="instagram-input-hide-caption.md" >}}
-{{</* instagram BWNjjyYFxVx hidecaption */>}}
-{{< /code >}}
+The `instagram` shortcode uses Facebook's **oEmbed Read** feature. The Facebook [developer documentation] states:
-#### Example `instagram` Output
+- This permission or feature requires successful completion of the App Review process before your app can access live data. [Learn More]
+- This permission or feature is only available with business verification. You may also need to sign additional contracts before your app can access data. [Learn More Here]
-By adding the preceding `hidecaption` example, the following HTML will be added to your rendered website's markup:
+[developer documentation]: https://developers.facebook.com/docs/features-reference/oembed-read
+[Learn More]: https://developers.facebook.com/docs/app-review
+[Learn More Here]: https://developers.facebook.com/docs/development/release/business-verification
-{{< output file="instagram-hide-caption-output.html" >}}
-{{< instagram BWNjjyYFxVx hidecaption >}}
-{{< /output >}}
+You must obtain an Access Token to use the `instagram` shortcode.
-#### Example `instagram` Display
+If your site configuration is private:
-Using the preceding `instagram` with `hidecaption` example above, the following simulates the displayed experience for visitors to your website. Naturally, the final display will be contingent on your style sheets and surrounding markup.
+{{< code-toggle file=config copy=false >}}
+[services.instagram]
+accessToken = 'xxx'
+{{< /code-toggle >}}
-{{< instagram BWNjjyYFxVx hidecaption >}}
+If your site configuration is _not_ private, set the Access Token with an environment variable:
+```text
+HUGO_SERVICES_INSTAGRAM_ACCESSTOKEN=xxx hugo --gc --minify
+```
{{% note %}}
-The `instagram`-shortcode refers an endpoint of Instagram's API, that's deprecated since October 24th, 2020. Thus, no images can be fetched from this API endpoint, resulting in an error when the `instagram`-shortcode is used. For more information please have a look at GitHub issue [#7879](https://github.com/gohugoio/hugo/issues/7879).
+If you are using a Client Access Token, you must combine the Access Token with your App ID using a pipe symbol (`APPID|ACCESSTOKEN`).
{{% /note %}}
+To display an Instagram post with this URL:
+
+```text
+https://www.instagram.com/p/BWNjjyYFxVx/
+```
+
+Include this in your markdown:
+
+```text
+{{</* instagram BWNjjyYFxVx */>}}
+```
+
### `param`
Gets a value from the current `Page's` params set in front matter, with a fallback to the site param value. It will log an `ERROR` if the param with the given key could not be found in either.
`ref` and `relref` also make it possible to make fragmentary links that work for the header links generated by Hugo.
-{{% note "More on Cross References" %}}
+{{% note %}}
Read a more extensive description of `ref` and `relref` in the [cross references](/content-management/cross-references/) documentation.
{{% /note %}}
### `tweet`
-You want to include a single tweet into your blog post? Everything you need is the URL of the tweet:
+To display a Twitter post with this URL:
```txt
https://twitter.com/SanDiegoZoo/status/1453110110599868418
```
-#### Example `tweet` Input
+Include this in your markdown:
-Pass the tweet's user (case-insensitive) and ID from the URL as parameters to the `tweet` shortcode.
-
-{{< code file="example-tweet-input.md" >}}
+```text
{{</* tweet user="SanDiegoZoo" id="1453110110599868418" */>}}
-{{< /code >}}
-
-#### Example `tweet` Output
-
-Using the preceding `tweet` example, the following HTML will be added to your rendered website's markup:
-
-{{< output file="example-tweet-output.html" >}}
-{{< tweet user="SanDiegoZoo" id="1453110110599868418" >}}
-{{< /output >}}
-
-#### Example `tweet` Display
+```
-Using the preceding `tweet` example, the following simulates the displayed experience for visitors to your website. Naturally, the final display will be contingent on your stylesheets and surrounding markup.
+Rendered:
{{< tweet user="SanDiegoZoo" id="1453110110599868418" >}}
### `vimeo`
-Adding a video from [Vimeo] is equivalent to the [YouTube Input shortcode].
+To display a Vimeo video with this URL:
-```txt
-https://vimeo.com/channels/staffpicks/146022717
+```text
+https://vimeo.com/channels/staffpicks/55073825
```
-#### Example `vimeo` Input
-
-Extract the ID from the video's URL and pass it to the `vimeo` shortcode:
-
-{{< code file="example-vimeo-input.md" >}}
-{{</* vimeo 146022717 */>}}
-{{< /code >}}
+Include this in your markdown:
-#### Example `vimeo` Output
+```text
+{{</* vimeo 55073825 */>}}
+```
-Using the preceding `vimeo` example, the following HTML will be added to your rendered website's markup:
+Rendered:
-{{< output file="example-vimeo-output.html" >}}
-{{< vimeo 146022717 >}}
-{{< /output >}}
+{{< vimeo 55073825 >}}
-{{% tip %}}
+{{% note %}}
If you want to further customize the visual styling of the YouTube or Vimeo output, add a `class` named parameter when calling the shortcode. The new `class` will be added to the `<div>` that wraps the `<iframe>` *and* will remove the inline styles. Note that you will need to call the `id` as a named parameter as well. You can also give the vimeo video a descriptive title with `title`.
```go
{{</* vimeo id="146022717" class="my-vimeo-wrapper-class" title="My vimeo video" */>}}
```
-{{% /tip %}}
-
-#### Example `vimeo` Display
-
-Using the preceding `vimeo` example, the following simulates the displayed experience for visitors to your website. Naturally, the final display will be contingent on your stylesheets and surrounding markup.
-
-{{< vimeo 146022717 >}}
+{{% /note %}}
### `youtube`
Here's an example of setting `staticDir` and `staticDir2` for a
multi-language site:
-{{< code-toggle copy="false" file="config" >}}
+{{< code-toggle copy=false file="config" >}}
staticDir = ["static1", "static2"]
[languages]
Content that comes before the summary divider will be used as that content's summary and stored in the `.Summary` page variable with all HTML formatting intact.
-{{% note "Summary Divider"%}}
+{{% note %}}
The concept of a *summary divider* is not unique to Hugo. It is also called the "more tag" or "excerpt separator" in other literature.
{{% /note %}}
{{% warning "Be Precise with the Summary Divider" %}}
Be careful to enter <code><!--more--></code> exactly; i.e., all lowercase and with no whitespace.
-{{% /warning %}}
+{{% /note %}}
### Front Matter Summary
{{% warning "Competing selections" %}}
Hugo uses the _first_ of the above steps that returns text. So if, for example, your article has both `summary` variable in its front matter and a <code><!--more--></code> summary divider Hugo will use the manual summary split method.
-{{% /warning %}}
+{{% /note %}}
## Example: First 10 Articles with Summaries
---
title: Syntax Highlighting
-linkTitle: Syntax Highlighting
description: Hugo comes with really fast syntax highlighting from Chroma.
keywords: [highlighting,chroma,code blocks,syntax]
categories: [content management]
}
```
-The options are the same as in the [highlighting shortcode](/content-management/syntax-highlighting/#highlight-shortcode),including `linenos=false`, but note the slightly different Markdown attribute syntax.
+The options are the same as in the [highlighting shortcode](/content-management/syntax-highlighting/#highlight-shortcode), including `linenos=false`, but note the slightly different Markdown attribute syntax.
## List of Chroma Highlighting Languages
---
title: Taxonomies
-linkTitle: Taxonomies
description: Hugo includes support for user-defined taxonomies.
keywords: [taxonomies,metadata,front matter,terms]
categories: [content management]
Without adding a single line to your [site config][config] file, Hugo will automatically create taxonomies for `tags` and `categories`. That would be the same as manually [configuring your taxonomies](#configure-taxonomies) as below:
-{{< code-toggle copy="false" >}}
+{{< code-toggle file="config" copy=false >}}
[taxonomies]
tag = "tags"
category = "categories"
If you do not want Hugo to create any taxonomies, set `disableKinds` in your [site config][config] to the following:
-{{< code-toggle copy="false" >}}
+{{< code-toggle file="config" copy=false >}}
disableKinds = ["taxonomy","term"]
{{</ code-toggle >}}
## Configure Taxonomies
-Custom taxonomies other than the [defaults]({{< relref "taxonomies.md#default-taxonomies" >}}) must be defined in your [site config][config] before they can be used throughout the site. You need to provide both the plural and singular labels for each taxonomy. For example, `singular key = "plural value"` for TOML and `singular key: "plural value"` for YAML.
+Custom taxonomies other than the [defaults](#default-taxonomies) must be defined in your [site config][config] before they can be used throughout the site. You need to provide both the plural and singular labels for each taxonomy. For example, `singular key = "plural value"` for TOML and `singular key: "plural value"` for YAML.
### Example: Adding a custom taxonomy named "series"
While adding custom taxonomies, you need to put in the default taxonomies too, _if you want to keep them_.
{{% /note %}}
-{{< code-toggle copy="false" >}}
+{{< code-toggle file="config" copy=false >}}
[taxonomies]
tag = "tags"
category = "categories"
If you want to have just the default `tags` taxonomy, and remove the `categories` taxonomy for your site, you can do so by modifying the `taxonomies` value in your [site config][config].
-{{< code-toggle copy="false" >}}
+{{< code-toggle file="config" copy=false >}}
[taxonomies]
tag = "tags"
{{</ code-toggle >}}
-If you want to disable all taxonomies altogether, see the use of `disableKinds` in [Hugo Taxonomy Defaults]({{< relref "taxonomies.md#default-taxonomies" >}}).
+If you want to disable all taxonomies altogether, see the use of `disableKinds` in [Hugo Taxonomy Defaults](#default-taxonomies).
{{% note %}}
You can add content and front matter to your taxonomy list and taxonomy terms pages. See [Content Organization](/content-management/organization/) for more information on how to add an `_index.md` for this purpose.
Much like regular pages, taxonomy list [permalinks](/content-management/urls/) are configurable, but taxonomy term page permalinks are not.
{{% /note %}}
-{{% warning %}}
+{{% note %}}
The configuration option `preserveTaxonomyNames` was removed in Hugo 0.55.
You can now use `.Page.Title` on the relevant taxonomy node to get the original value.
-{{% /warning %}}
+{{% /note %}}
## Add Taxonomies to Content
### Example: Front Matter with Taxonomies
-{{< code-toggle copy="false">}}
+{{< code-toggle file="content/example.md" fm=true copy=false >}}
title = "Hugo: A fast and flexible static site generator"
tags = [ "Development", "Go", "fast", "Blogging" ]
categories = [ "Development" ]
### Example: Taxonomic `weight`
-{{< code-toggle copy="false" >}}
+{{< code-toggle copy=false >}}
title = "foo"
tags = [ "a", "b", "c" ]
tags_weight = 22
By using taxonomic weight, the same piece of content can appear in different positions in different taxonomies.
-{{% note "Limits to Ordering Taxonomies" %}}
+{{% note %}}
Currently taxonomies only support the [default `weight => date` ordering of list content](/templates/lists/#default-weight--date--linktitle--filepath). For more information, see the documentation on [taxonomy templates](/templates/taxonomy-templates/).
{{% /note %}}
If you need to add custom metadata to your taxonomy terms, you will need to create a page for that term at `/content/<TAXONOMY>/<TERM>/_index.md` and add your metadata in its front matter. Continuing with our 'Actors' example, let's say you want to add a Wikipedia page link to each actor. Your terms pages would be something like this:
-{{< code file="/content/actors/bruce-willis/_index.md" >}}
----
+{{< code-toggle file="content/actors/bruce-willis/_index.md" fm=true copy=false >}}
title: "Bruce Willis"
wikipedia: "https://en.wikipedia.org/wiki/Bruce_Willis"
----
-{{< /code >}}
-
+{{< /code-toggle >}}
[`urlize` template function]: /functions/urlize/
[content section]: /content-management/sections/
---
title: Table of Contents
-linkTitle: Table of Contents
description: Hugo can automatically parse Markdown content and create a Table of Contents you can use in your templates.
categories: [content management]
keywords: [table of contents, toc]
aliases: [/extras/toc/]
---
-{{% note "TOC Heading Levels are Fixed" %}}
+{{% note %}}
-Previously, there was no out-of-the-box way to specify which heading levels you want the TOC to render. [See the related GitHub discussion (#1778)](https://github.com/gohugoio/hugo/issues/1778). As such, the resulting `<nav id="TableOfContents"><ul></ul></nav>` was going to start at `<h1>` when pulling from `{{.Content}}`.
+Previously, there was no out-of-the-box way to specify which heading levels you want the TOC to render. [See the related GitHub discussion (#1778)](https://github.com/gohugoio/hugo/issues/1778). As such, the resulting `<nav id="TableOfContents"><ul></ul></nav>` was going to start at `<h1>` when pulling from `{{ .Content }}`.
Hugo [v0.60.0](https://github.com/gohugoio/hugo/releases/tag/v0.60.0) made a switch to [Goldmark](https://github.com/yuin/goldmark/) as the default library for Markdown which has improved and configurable implementation of TOC. Take a look at [how to configure TOC](/getting-started/configuration-markup/#table-of-contents) for Goldmark renderer.
The following is an example of a very basic [single page template]:
-{{< code file="layout/_default/single.html" download="single.html" >}}
+{{< code file="layout/_default/single.html" >}}
{{ define "main" }}
<main>
<article>
The following is a [partial template][partials] that adds slightly more logic for page-level control over your table of contents. It assumes you are using a `toc` field in your content's [front matter] that, unless specifically set to `false`, will add a TOC to any page with a `.WordCount` (see [Page Variables][pagevars]) greater than 400. This example also demonstrates how to use [conditionals] in your templating:
-{{< code file="layouts/partials/toc.html" download="toc.html" >}}
+{{< code file="layouts/partials/toc.html" >}}
{{ if and (gt .WordCount 400 ) (.Params.toc) }}
<aside>
<header>
- <h2>{{.Title}}</h2>
+ <h2>{{ .Title }}</h2>
</header>
- {{.TableOfContents}}
+ {{ .TableOfContents }}
</aside>
{{ end }}
{{< /code >}}
{{% note %}}
-With the preceding example, even pages with > 400 words *and* `toc` not set to `false` will not render a table of contents if there are no headings in the page for the `{{.TableOfContents}}` variable to pull from.
+With the preceding example, even pages with > 400 words *and* `toc` not set to `false` will not render a table of contents if there are no headings in the page for the `{{ .TableOfContents }}` variable to pull from.
{{% /note %}}
## Usage with AsciiDoc
---
title: Content Types
-linkTitle: Content Types
description: Hugo is built around content organized in sections.
categories: [content management]
keywords: [lists, sections, content types, types, organization]
---
title: URL Management
-linkTitle: URL Management
-description: Hugo supports permalinks, aliases, link canonicalization, and multiple options for handling relative vs absolute URLs.
+description: Control the structure and appearance of URLs through front matter entries and settings in your site configuration.
categories: [content management]
keywords: [aliases,redirects,permalinks,urls]
menu:
aliases: [/extras/permalinks/,/extras/aliases/,/extras/urls/,/doc/redirects/,/doc/alias/,/doc/aliases/]
---
-## Permalinks
+## Overview
-The default Hugo target directory for your built website is `public/`. However, you can change this value by specifying a different `publishDir` in your [site configuration][config]. The directories created at build time for a section reflect the position of the content's directory within the `content` folder and namespace matching its layout within the `contentdir` hierarchy.
+By default, when Hugo renders a page, the resulting URL matches the file path within the `content` directory. For example:
-The `permalinks` option in your [site configuration][config] allows you to adjust the directory paths (i.e., the URLs) on a per-section basis. This will change where the files are written to and will change the page's internal "canonical" location, such that template references to `.RelPermalink` will honor the adjustments made as a result of the mappings in this option.
+```text
+content/posts/post-1.md → https://example.org/posts/post-1/
+```
+
+You can change the structure and appearance of URLs with front matter values and site configuration options.
+
+## Front matter
+
+### `slug`
+
+Set the `slug` in front matter to override the last segment of the path. The `slug` value does not affect section pages.
+
+{{< code-toggle file="content/posts/post-1.md" copy=false fm=true >}}
+title = 'My First Post'
+slug = 'my-first-post'
+{{< /code-toggle >}}
+
+The resulting URL will be:
+
+```text
+https://example.org/posts/my-first-post/
+```
+
+### `url`
+
+Set the `url` in front matter to override the entire path. Use this with either regular pages or section pages.
+
+With this front matter:
+
+{{< code-toggle file="content/posts/post-1.md" copy=false fm=true >}}
+title = 'My First Article'
+url = '/articles/my-first-article'
+{{< /code-toggle >}}
+
+The resulting URL will be:
+
+```text
+https://example.org/articles/my-first-article/
+```
+
+If you include a file extension:
+
+{{< code-toggle file="content/posts/post-1.md" copy=false fm=true >}}
+title = 'My First Article'
+url = '/articles/my-first-article.html'
+{{< /code-toggle >}}
+
+The resulting URL will be:
+
+```text
+https://example.org/articles/my-first-article.html
+```
+
+In a monolingual site, a `url` value with or without a leading slash is relative to the `baseURL`.
+
+In a multilingual site:
+
+- A `url` value with a leading slash is relative to the `baseURL`.
+- A `url` value without a leading slash is relative to the `baseURL` plus the language prefix.
+
+Site type|Front matter `url`|Resulting URL
+:--|:--|:--
+monolingual|`/about`|`https://example.org/about/`
+monolingual|`about`|`https://example.org/about/`
+multilingual|`/about`|`https://example.org/about/`
+multilingual|`about`|`https://example.org/de/about/`
-{{% note "Default Publish and Content Folders" %}}
-These examples use the default values for `publishDir` and `contentDir`; i.e., `public` and `content`, respectively. You can override the default values in your [site's `config` file](/getting-started/configuration/).
+If you set both `slug` and `url` in front matter, the `url` value takes precedence.
+
+## Site configuration
+
+### Permalinks
+
+In your site configuration, set a URL pattern for regular pages within a top-level section. This is recursive, affecting descendant regular pages.
+
+{{% note %}}
+The `permalinks` defined in your site configuration do not apply to section pages. To adjust the URL for section pages, set `url` in front matter.
{{% /note %}}
-For example, if one of your [sections] is called `posts` and you want to adjust the canonical path to be hierarchical based on the year, month, and post title, you could set up the following configurations in YAML and TOML, respectively.
+#### Examples {#permalinks-examples}
-### Permalinks Configuration Example
+With this content structure:
-{{< code-toggle file="config" copy="false" >}}
-permalinks:
- posts: /:year/:month/:title/
+```text
+content/
+├── posts/
+│ ├── _index.md
+│ ├── post-1.md
+│ └── post-2.md
+└── _index.md
+```
+
+Create a date-based hierarchy, recursively, for regular pages within the `posts` section:
+
+{{< code-toggle file="config" copy=false >}}
+[permalinks]
+ posts = '/posts/:year/:month/:title/'
{{< /code-toggle >}}
-Only the content under `posts/` will have the new URL structure. For example, the file `content/posts/sample-entry.md` with `date: 2017-02-27T19:20:00-05:00` in its front matter will render to `public/2017/02/sample-entry/index.html` at build time and therefore be reachable at `https://example.com/2017/02/sample-entry/`.
+The structure of the published site will be:
+
+```text
+public/
+├── posts/
+│ ├── 2023/
+│ │ └── 03/
+│ │ ├── post-1/
+│ │ │ └── index.html
+│ │ └── post-2/
+│ │ └── index.html
+│ └── index.html
+├── favicon.ico
+└── index.html
+```
-To configure the `permalinks` option for pages in the "root" section, use **/** as the key:
+To create a date-based hierarchy for regular pages in the content root:
-{{< code-toggle file="config" copy="false" >}}
-permalinks:
- /: /:year/:month/:filename/
+{{< code-toggle file="config" copy=false >}}
+[permalinks]
+ '/' = '/:year/:month/:title/'
{{< /code-toggle >}}
-If the standard date-based permalink configuration does not meet your needs, you can also format URL segments using [Go time formatting directives](https://pkg.go.dev/time#Time.Format). For example, a URL structure with two digit years and month and day digits without zero padding can be accomplished with:
+{{% note %}}
+A URL pattern defined for the content root is not recursive.
+{{% /note %}}
-{{< code-toggle file="config" copy="false" >}}
-permalinks:
- posts: /:06/:1/:2/:title/
+Use the same approach with taxonomies. For example, to omit the taxonomy segment of the URL:
+
+{{< code-toggle file="config" copy=false >}}
+[permalinks]
+ 'tags' = '/:title/'
{{< /code-toggle >}}
-You can also configure permalinks of taxonomies with the same syntax, by using the plural form of the taxonomy instead of the section. You will probably only want to use the configuration values `:slug` or `:title`.
+Front matter `url` values take precedence over URL patterns defined in `permalinks`.
-### Permalink Configuration Values
+#### Tokens
-The following is a list of values that can be used in a `permalink` definition in your site `config` file. All references to time are dependent on the content's date.
+Use these tokens when defining the URL pattern. The `date` field in front matter determines the value of time-related tokens.
`:year`
: the 4-digit year
`:filename`
: the content's filename (without extension)
-Additionally, a Go time format string prefixed with `:` may be used.
+For time-related values, you can also use the layout string components defined in Go's [time package]. For example:
-## Aliases
-
-Aliases can be used to create redirects to your page from other URLs.
-
-Aliases comes in two forms:
-
-1. Starting with a `/` meaning they are relative to the `BaseURL`, e.g. `/posts/my-blogpost/`
-2. They are relative to the `Page` they're defined in, e.g. `my-blogpost` or even something like `../blog/my-blogpost` (new in Hugo 0.55).
-
-### Example: Aliases
-
-Let's assume you create a new piece of content at `content/posts/my-awesome-blog-post.md`. The content is a revision of your previous post at `content/posts/my-original-url.md`. You can create an `aliases` field in the front matter of your new `my-awesome-blog-post.md` where you can add previous paths. The following examples show how to create this field in TOML and YAML front matter, respectively.
-
-#### TOML Front Matter
+[time package]: https://pkg.go.dev/time#pkg-constants
-{{< code file="content/posts/my-awesome-post.md" copy="false" >}}
-+++
-aliases = [
- "/posts/my-original-url/",
- "/2010/01/01/even-earlier-url.html"
-]
-+++
-{{< /code >}}
-
-#### YAML Front Matter
-
-{{< code file="content/posts/my-awesome-post.md" copy="false" >}}
----
-aliases:
- - /posts/my-original-url/
- - /2010/01/01/even-earlier-url.html
----
-{{< /code >}}
+{{< code-toggle file="config" copy=false >}}
+permalinks:
+ posts: /:06/:1/:2/:title/
+{{< /code-toggle >}}
-Now when you visit any of the locations specified in aliases---i.e., _assuming the same site domain_---you'll be redirected to the page they are specified on. For example, a visitor to `example.com/posts/my-original-url/` will be immediately redirected to `example.com/posts/my-awesome-post/`.
+### Appearance
-### Example: Aliases in Multilingual
+The appearance of a URL is either ugly or pretty.
-On [multilingual sites][multilingual], each translation of a post can have unique aliases. To use the same alias across multiple languages, prefix it with the language code.
+Type|Path|URL
+:--|:--|:--
+ugly|content/about.md|`https://example.org/about.html`
+pretty|content/about.md|`https://example.org/about/`
-In `/posts/my-new-post.es.md`:
+By default, Hugo produces pretty URLs. To generate ugly URLs, change your site configuration:
-```md
----
-aliases:
- - /es/posts/my-original-post/
----
-```
+{{< code-toggle file="config" copy=false >}}
+uglyURLs = true
+{{< /code-toggle >}}
-From Hugo 0.55 you can also have page-relative aliases, so `/es/posts/my-original-post/` can be simplified to the more portable `my-original-post/`
+### Post-processing
-### How Hugo Aliases Work
+Hugo provides two mutually exclusive configuration options to alter URLs _after_ it renders a page.
-When aliases are specified, Hugo creates a directory to match the alias entry. Inside the directory, Hugo creates an `.html` file specifying the canonical URL for the page and the new redirect target.
+#### Canonical URLs
-For example, a content file at `posts/my-intended-url.md` with the following in the front matter:
+{{% note %}}
+This is a legacy configuration option, superseded by template functions and markdown render hooks, and will likely be [removed in a future release].
-```yml
----
-title: My New post
-aliases: [/posts/my-old-url/]
----
-```
+[removed in a future release]: https://github.com/gohugoio/hugo/issues/4733
+{{% /note %}}
-Assuming a `baseURL` of `example.com`, the contents of the auto-generated alias `.html` found at `https://example.com/posts/my-old-url/` will contain the following:
+If enabled, Hugo performs a search and replace _after_ it renders the page. It searches for site-relative URLs (those with a leading slash) associated with `action`, `href`, `src`, `srcset`, and `url` attributes. It then prepends the `baseURL` to create absolute URLs.
-```html
-<!DOCTYPE html>
-<html>
- <head>
- <title>https://example.com/posts/my-intended-url</title>
- <link rel="canonical" href="https://example.com/posts/my-intended-url"/>
- <meta name="robots" content="noindex">
- <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
- <meta http-equiv="refresh" content="0; url=https://example.com/posts/my-intended-url"/>
- </head>
-</html>
+```text
+<a href="/about"> → <a href="https://example.org/about/">
+<img src="/a.gif"> → <img src="https://example.org/a.gif">
```
-The `http-equiv="refresh"` line is what performs the redirect, in 0 seconds in this case. If an end user of your website goes to `https://example.com/posts/my-old-url`, they will now be automatically redirected to the newer, correct URL. The addition of `<meta name="robots" content="noindex">` lets search engine bots know that they should not index your alias page (`https://example.com/posts/my-old-url/`).
-
-### Customize
+This is an imperfect, brute force approach that can affect content as well as HTML attributes. As noted above, this is a legacy configuration option that will likely be removed in a future release.
-You may customize this alias page by creating an `alias.html` template in the
-layouts folder of your site (i.e., `layouts/alias.html`). In this case, the data passed to the template is
-
-`Permalink`
-: the link to the page being aliased
+To enable:
-`Page`
-: the Page data for the page being aliased
-
-### Important Behaviors of Aliases
+{{< code-toggle file="config" copy=false >}}
+canonifyURLs = true
+{{< /code-toggle >}}
-1. Hugo makes no assumptions about aliases. They also do not change based
-on your UglyURLs setting. You need to provide absolute paths to your web root
-and the complete filename or directory.
-2. Aliases are rendered *before* any content are rendered and therefore will be overwritten by any content with the same location.
+#### Relative URLs
-## Pretty URLs
+{{% note %}}
+Do not enable this option unless you are creating a serverless site, navigable via the file system.
+{{% /note %}}
-Hugo's default behavior is to render your content with "pretty" URLs. No non-standard server-side configuration is required for these pretty URLs to work.
+If enabled, Hugo performs a search and replace _after_ it renders the page. It searches for site-relative URLs (those with a leading slash) associated with `action`, `href`, `src`, `srcset`, and `url` attributes. It then transforms the URL to be relative to the current page.
-The following demonstrates the concept:
+For example, when rendering `content/posts/post-1`:
-```txt
-content/posts/_index.md
-=> example.com/posts/
-content/posts/post-1.md
-=> example.com/posts/post-1/
+```text
+<a href="/about"> → <a href="../../about">
+<img src="/a.gif"> → <img src="../../a.gif">
```
-## Ugly URLs
+This is an imperfect, brute force approach that can affect content as well as HTML attributes. As noted above, do not enable this option unless you are creating a serverless site.
-If you would like to have what are often referred to as "ugly URLs" (e.g., example.com/urls.html), set `uglyurls = true` or `uglyurls: true` in your site's `config.toml` or `config.yaml`, respectively. You can also set the `HUGO_UGLYURLS` environment variable to `true` when running `hugo` or `hugo server`.
+To enable:
-If you want a specific piece of content to have an exact URL, you can specify this in the [front matter] under the `url` key. The following are examples of the same content directory and what the eventual URL structure will be when Hugo runs with its default behavior.
+{{< code-toggle file="config" copy=false >}}
+relativeURLs = true
+{{< /code-toggle >}}
-See [Content Organization][contentorg] for more details on paths.
+## Aliases
-```txt
-.
-└── content
- └── about
- | └── _index.md // <- https://example.com/about/
- ├── posts
- | ├── firstpost.md // <- https://example.com/posts/firstpost/
- | ├── happy
- | | └── ness.md // <- https://example.com/posts/happy/ness/
- | └── secondpost.md // <- https://example.com/posts/secondpost/
- └── quote
- ├── first.md // <- https://example.com/quote/first/
- └── second.md // <- https://example.com/quote/second/
-```
+Create redirects from old URLs to new URLs with aliases:
-Here's the same organization run with `hugo --uglyURLs`:
-
-```txt
-.
-└── content
- └── about
- | └── _index.md // <- https://example.com/about.html
- ├── posts
- | ├── firstpost.md // <- https://example.com/posts/firstpost.html
- | ├── happy
- | | └── ness.md // <- https://example.com/posts/happy/ness.html
- | └── secondpost.md // <- https://example.com/posts/secondpost.html
- └── quote
- ├── first.md // <- https://example.com/quote/first.html
- └── second.md // <- https://example.com/quote/second.html
-```
+- An alias with a leading slash is relative to the `baseURL`
+- An alias without a leading slash is relative to the current directory
-## Canonicalization
+### Examples {#alias-examples}
-By default, all relative URLs encountered in the input are left unmodified, e.g. `/css/foo.css` would stay as `/css/foo.css`. The `canonifyURLs` field in your site `config` has a default value of `false`.
+Change the file name of an existing page, and create an alias from the previous URL to the new URL:
-By setting `canonifyURLs` to `true`, all relative URLs would instead be *canonicalized* using `baseURL`. For example, assuming you have `baseURL = https://example.com/`, the relative URL `/css/foo.css` would be turned into the absolute URL `https://example.com/css/foo.css`.
+{{< code-toggle file="content/posts/new-file-name.md" copy=false >}}
+aliases = ['/posts/previous-file-name']
+{{< /code-toggle >}}
-Benefits of canonicalization include fixing all URLs to be absolute, which may aid with some parsing tasks. Note, however, that all modern browsers handle this on the client without issue.
+Each of these directory-relative aliases is equivalent to the site-relative alias above:
-Benefits of non-canonicalization include being able to have scheme-relative resource inclusion; e.g., so that `http` vs `https` can be decided according to how the page was retrieved.
+- `previous-file-name`
+- `./previous-file-name`
+- `../posts/previous-file-name`
-{{% note "`canonifyURLs` default change" %}}
-In the May 2014 release of Hugo v0.11, the default value of `canonifyURLs` was switched from `true` to `false`, which we think is the better default and should continue to be the case going forward. Please verify and adjust your website accordingly if you are upgrading from v0.10 or older versions.
-{{% /note %}}
+You can create more than one alias to the current page:
-To find out the current value of `canonifyURLs` for your website, you may use the handy `hugo config` command added in v0.13.
+{{< code-toggle file="content/posts/new-file-name.md" copy=false >}}
+aliases = ['previous-file-name','original-file-name']
+{{< /code-toggle >}}
-```txt
-hugo config | grep -i canon
-```
+In a multilingual site, use a directory-relative alias, or include the language prefix with a site-relative alias:
-Or, if you are on Windows and do not have `grep` installed:
+{{< code-toggle file="content/posts/new-file-name.de.md" copy=false >}}
+aliases = ['/de/posts/previous-file-name']
+{{< /code-toggle >}}
-```txt
-hugo config | FINDSTR /I canon
-```
+### How Aliases Work
-## Set URL in Front Matter
+Using the first example above, Hugo generates the following site structure:
-In addition to specifying permalink values in your site configuration for different content sections, Hugo provides even more granular control for individual pieces of content.
+```text
+public/
+├── posts/
+│ ├── new-file-name/
+│ │ └── index.html
+│ ├── previous-file-name/
+│ │ └── index.html
+│ └── index.html
+└── index.html
+```
-Both `slug` and `url` can be defined in individual front matter. For more information on content destinations at build time, see [Content Organization][contentorg].
+The alias from the previous URL to the new URL is a client-side redirect:
-From Hugo 0.55, you can use URLs relative to the current site context (the language), which makes it simpler to maintain. For a Japanese translation, both of the following examples would get the same URL:
+{{< code file="posts/previous-file-name/index.html" copy=false >}}
+<!DOCTYPE html>
+<html lang="en-us">
+ <head>
+ <title>https://example.org/posts/new-file-name/</title>
+ <link rel="canonical" href="https://example.org/posts/new-file-name/">
+ <meta name="robots" content="noindex">
+ <meta charset="utf-8">
+ <meta http-equiv="refresh" content="0; url=https://example.org/posts/new-file-name/">
+ </head>
+</html>
+{{< /code >}}
-```markdown
----
-title: "Custom URL!"
-url: "/jp/custom/foo"
----
-```
+Collectively, the elements in the `head` section:
-```markdown
----
-title: "Custom URL!"
-url: "custom/foo"
----
-```
+- Tell search engines that the new URL is canonical
+- Tell search engines not to index the previous URL
+- Tell the browser to redirect to the new URL
-## Relative URLs
+Hugo renders alias files before rendering pages. A new page with the previous file name will overwrite the alias, as expected.
-By default, all relative URLs are left unchanged by Hugo, which can be problematic when you want to make your site browsable from a local file system.
+### Customize
-Setting `relativeURLs` to `true` in your [site configuration][config] will cause Hugo to rewrite all relative URLs to be relative to the current content.
+Create a new template (`layouts/alias.html`) to customize the content of the alias files. The template receives the following context:
-For example, if your `/posts/first/` page contains a link to `/about/`, Hugo will rewrite the URL to `../../about/`.
+`Permalink`
+: the link to the page being aliased
-[config]: /getting-started/configuration/
-[contentorg]: /content-management/organization/
-[front matter]: /content-management/front-matter/
-[multilingual]: /content-management/multilingual/
-[sections]: /content-management/sections/
-[usage]: /getting-started/usage/
+`Page`
+: the Page data for the page being aliased
title: Contribute to the Hugo Project
linktitle: Contribute to Hugo
description: Contribute to Hugo development and documentation.
-date: 2017-02-01
-publishdate: 2017-02-01
-lastmod: 2017-02-01
categories: [contribute]
keywords: []
menu:
docs:
- parent: "contribute"
+ parent: contribute
weight: 01
-weight: 01 #rem
-draft: false
-slug:
+weight: 01
aliases: [/tutorials/how-to-contribute-to-hugo/,/community/contributing/]
-toc: false
---
Hugo relies heavily on the enthusiasm and participation of the open-source community. We need your support in both its development and documentation.
title: Contribute to Hugo Development
linktitle: Development
description: Hugo relies heavily on contributions from the open source community.
-date: 2017-02-01
-publishdate: 2017-02-01
categories: [contribute]
keywords: [dev,open source]
-authors: [digitalcraftsman]
menu:
docs:
- parent: "contribute"
+ parent: contribute
weight: 10
weight: 10
-sections_weight: 10
toc: true
---
* You are new to Git or open-source projects in general
* You are a fan of Hugo and enthusiastic about contributing to the project
-{{% note "Additional Questions?" %}}
+{{% note %}}
If you're struggling at any point in this contribution guide, reach out to the Hugo community in [Hugo's Discussion forum](https://discourse.gohugo.io).
{{% /note %}}
We assume that you've set up your `GOPATH` (see the section above if you're unsure about this). You should now copy the Hugo repository down to your computer. You'll hear this called "clone the repo". GitHub's [help pages](https://help.github.com/articles/cloning-a-repository/) give us a short explanation:
-> When you create a repository on GitHub, it exists as a remote repository. You can create a local clone of your repository on your computer and sync between the two locations.
+{{% note %}}
+When you create a repository on GitHub, it exists as a remote repository. You can create a local clone of your repository on your computer and sync between the two locations.
+{{% /note %}}
We're going to clone the [master Hugo repository](https://github.com/gohugoio/hugo). That seems counter-intuitive, since you won't have commit rights on it. But it's required for the Go workflow. You'll work on a copy of the master and push your changes to your own repository on GitHub.
git clone https://github.com/gohugoio/hugo.git
```
-> Since Hugo 0.48, Hugo uses the Go Modules support built into Go 1.11 to build.
-> The easiest is to clone Hugo in a directory outside of GOPATH
+Since Hugo 0.48, Hugo uses the Go Modules support built into Go 1.11 to build. The easiest is to clone Hugo in a directory outside of GOPATH
And then, install dependencies of Hugo by running the following in the cloned directory:
If you're not familiar with this term, GitHub's [help pages](https://help.github.com/articles/fork-a-repo/) provide again a simple explanation:
-> A fork is a copy of a repository. Forking a repository allows you to freely experiment with changes without affecting the original project.
+{{% note %}}
+A fork is a copy of a repository. Forking a repository allows you to freely experiment with changes without affecting the original project.
+{{% /note %}}
#### Fork by hand
{{% warning "Be Careful Modifying Multiple Commits"%}}
Modifications such as those described in this section can have serious unintended consequences. Skip this section if you're not sure!
-{{% /warning %}}
+{{% /note %}}
This is a bit more advanced. Git allows you to [rebase](https://git-scm.com/docs/git-rebase) commits interactively. In other words: it allows you to rewrite the commit history.
[docscontrib]: /contribute/documentation/
[forums]: https://discourse.gohugo.io
[gitbook]: https://git-scm.com/
-[gobootcamp]: https://www.golangbootcamp.com/book/get_setup
+[gobootcamp]: https://www.golang-book.com/guides/machine_setup
[godl]: https://go.dev/dl/
[goinstall]: https://go.dev/doc/install
[gvm]: https://github.com/moovweb/gvm
---
title: Contribute to the Hugo Docs
linktitle: Documentation
-description: Documentation is an integral part of any open source project. The Hugo docs are as much a work in progress as the source it attempts to cover.
-date: 2017-02-01
-publishdate: 2017-02-01
+description: Documentation is an integral part of any open source project. The Hugo documentation is as much a work in progress as the source it attempts to cover.
categories: [contribute]
keywords: [docs,documentation,community, contribute]
menu:
docs:
- parent: "contribute"
+ parent: contribute
weight: 20
+toc: true
weight: 20
-sections_weight: 20
aliases: [/contribute/docs/]
-toc: true
---
-## Create Your Fork
-
-It's best to make changes to the Hugo docs on your local machine to check for consistent visual styling. Make sure you've created a fork of [hugoDocs](https://github.com/gohugoio/hugoDocs) on GitHub and cloned the repository locally on your machine. For more information, you can see [GitHub's documentation on "forking"][ghforking] or follow along with [Hugo's development contribution guide][hugodev].
-
-You can then create a separate branch for your additions. Be sure to choose a descriptive branch name that best fits the type of content. The following is an example of a branch name you might use for adding a new website to the showcase:
-
-```txt
-git checkout -b jon-doe-showcase-addition
-```
+## GitHub workflow
-## Add New Content
+Step 1
+: Fork the [documentation repository].
-The Hugo docs make heavy use of Hugo's [archetypes] feature. All content sections in Hugo documentation have an assigned archetype.
+Step 2
+: Clone your fork.
-Adding new content to the Hugo docs follows the same pattern, regardless of the content section:
+Step 3
+: Create a new branch with a descriptive name.
-```txt
-hugo new <DOCS-SECTION>/<new-content-lowercase>.md
+```bash
+git checkout -b fix/typos-site-variables
```
-### Add a New Function
-
-Once you have cloned the Hugo repository, you can create a new function via the following command. Keep the filename lowercase.
+Step 4
+: Make changes.
-```txt
-hugo new functions/newfunction.md
-```
+Step 5
+: Commit your changes with a descriptive commit message, typically 50 characters or less. Included the "Closes" keyword if your change addresses one or more open [issues].
-The archetype for `functions` according to the Hugo docs is as follows:
-
-{{< code file="archetypes/functions.md" >}}
-{{< readfile file="/archetypes/functions.md">}}
-{{< /code >}}
+```bash
+git commit -m "Fix typos on site variables page
-#### New Function Required Fields
-
-Here is a review of the front matter fields automatically generated for you using `hugo new functions/*`:
-
-***`title`***
-: this will be auto-populated in all lowercase when you use `hugo new` generator.
-
-***`linktitle`***
-: the function's actual casing (e.g., `replaceRE` rather than `replacere`).
-
-***`description`***
-: a brief description used to populate the [Functions Quick Reference](/functions/).
-
-`categories`
-: currently auto-populated with 'functions` for future-proofing and portability reasons only; ignore this field.
-
-`tags`
-: only if you think it will help end users find other related functions
-
-`signature`
-: this is a signature/syntax definition for calling the function (e.g., `apply SEQUENCE FUNCTION [PARAM...]`).
+Closes #1234
+Closes #5678"
+```
-`workson`
-: acceptable values include `lists`,`taxonomies`, `terms`, `groups`, and `files`.
+Step 5
+: Push the new branch to your fork of the documentation repository.
-`hugoversion`
-: the version of Hugo that will ship with this new function.
+Step 6
+: Visit the [documentation repository] and create a pull request (PR).
-`relatedfuncs`
-: other [templating functions] you feel are related to your new function to help fellow Hugo users.
+[documentation repository]: https://github.com/gohugoio/hugoDocs/
+[issues]: https://github.com/gohugoio/hugoDocs/issues
-`{{.Content}}`
-: an extended description of the new function; examples are not only welcomed but encouraged.
+Step 7
+: A project maintainer will review your PR, and may request changes. You may delete your branch after the maintainer merges your PR.
-In the body of your function, expand the short description used in the front matter. Include as many examples as possible, and leverage the Hugo docs [`code` shortcode](#add-code-blocks). If you are unable to add examples but would like to solicit help from the Hugo community, add `needsexample: true` to your front matter.
+## Including sample code
-## Add Code Blocks
+{{% note %}}
+Use this syntax to include shortcodes calls within your code samples:
-Code blocks are crucial for providing examples of Hugo's new features to end users of the Hugo docs. Whenever possible, create examples that you think Hugo users will be able to implement in their own projects.
+`{{</*/* foo */*/>}}`\
+`{{%/*/* foo */*/%}}`
+{{% /note %}}
-### Standard Syntax
+### Fenced code blocks
-Across many pages on the Hugo docs, the typical triple-back-tick Markdown syntax (```` ``` ````) is used. If you do not want to take the extra time to implement the following code block shortcodes, please use standard GitHub-flavored Markdown.
+Include the language when using a fenced code block.
-````txt
+````text
```go-html-template
-{{ range site.RegularPages }}
- <h2><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></h2>
+{{ if eq $foo "bar" }}
+ {{ print "foo is bar" }}
{{ end }}
```
````
-
-### Code Block Shortcode
-
-The Hugo documentation comes with a very robust shortcode for adding interactive code blocks.
-
-{{% note %}}
-With the `code` shortcodes, *you must include triple back ticks and a language declaration*. This was done by design so that the shortcode wrappers were easily added to legacy documentation and will be that much easier to remove if needed in future versions of the Hugo docs.
-{{% /note %}}
-
-### `code`
-
-`code` is the Hugo docs shortcode you'll use most often. `code` requires has only one named parameter: `file`. Here is the pattern:
+Rendered:
```go-html-template
-{{%/* code file="smart/file/name/with/path.html" download="download.html" copy="true" */%}}
-A whole bunch of coding going on up in here!
-{{%/* /code */%}}
+{{ if eq $foo "bar" }}
+ {{ print "foo is bar" }}
+{{ end }}
```
-The following are the arguments passed into `code`:
+### The code shortcode
-***`file`***
-: the only *required* argument. `file` is needed for styling but also plays an important role in helping users create a mental model around Hugo's directory structure. Visually, this will be displayed as text in the top left of the code block.
+Use the `code` shortcode to include the file name and a copy-to-clipboard button. This shortcode accepts these optional parameters:
-`download`
-: if omitted, this will have no effect on the rendered shortcode. When a value is added to `download`, it's used as the filename for a downloadable version of the code block.
+copy
+: (`bool`) If `true`, displays a copy-to-clipboard button. Default is `true`.
-`copy`
-: a copy button is added automatically to all `code` shortcodes. If you want to keep the filename and styling of `code` but don't want to encourage readers to copy the code (e.g., a "Do not do" snippet in a tutorial), use `copy="false"`.
+file
+: (`string`) The file name to display. If you do not provide a `lang` parameter, the file extension determines the code language.
-#### Example `code` Input
+lang
+: (`string`) The code language. Default is `text`.
-This example HTML code block tells Hugo users the following:
-
-1. This file *could* live in `layouts/_default`, as demonstrated by `layouts/_default/single.html` as the value for `file`.
-2. This snippet is complete enough to be downloaded and implemented in a Hugo project, as demonstrated by `download="single.html"`.
-
-```go-html-template
-{{</* code file="layouts/_default/single.html" download="single.html" */>}}
-{{ define "main" }}
-<main>
- <article>
- <header>
- <h1>{{.Title}}</h1>
- {{with .Params.subtitle}}
- <span>{{.}}</span>
- </header>
- <div>
- {{.Content}}
- </div>
- <aside>
- {{.TableOfContents}}
- </aside>
- </article>
-</main>
+````text
+{{</* code file="layouts/_default_/single.html" */>}}
+{{ if eq $foo "bar" }}
+ {{ print "foo is bar" }}
{{ end }}
{{</* /code */>}}
-```
-##### Example 'code' Display
-
-The output of this example will render to the Hugo docs as follows:
-
-{{< code file="layouts/_default/single.html" download="single.html" >}}
-{{ define "main" }}
-<main>
- <article>
- <header>
- <h1>{{.Title}}</h1>
- {{with .Params.subtitle}}
- <span>{{.}}</span>
- </header>
- <div>
- {{.Content}}
- </div>
- <aside>
- {{.TableOfContents}}
- </aside>
- </article>
-</main>
+````
+
+Rendered:
+
+{{< code file="layouts/_default_/single.html" >}}
+{{ if eq $foo "bar" }}
+ {{ print "foo is bar" }}
{{ end }}
{{< /code >}}
-<!-- #### Output Code Block
+### The code-toggle shortcode
-The `output` shortcode is almost identical to the `code` shortcode but only takes and requires `file`. The purpose of `output` is to show *rendered* HTML and therefore almost always follows another basic code block *or* and instance of the `code` shortcode:
+Use the `code-toggle` shortcode to display examples of site configuration, front matter, or data files. This shortcode accepts these optional parameters:
-```
-{{%/* output file="posts/my-first-post/index.html" */%}}
-<h1>This is my First Hugo Blog Post</h1>
-<p>I am excited to be using Hugo.</p>
-{{%/* /output */%}}
-```
+copy
+: (`bool`) If `true`, displays a copy-to-clipboard button. Default is `true`.
-The preceding `output` example will render as follows to the Hugo docs:
+file
+: (`string`) The file name to display. Omit the file extension for site configuration and data file examples.
-{{< output file="posts/my-first-post/index.html" >}}
-<h1>This is my First Hugo Blog Post</h1>
-<p>I am excited to be using Hugo.</p>
-{{< /output >}} -->
+fm
+: (`bool`) If `true`, displays the code as front matter. Default is `false`.
-## Blockquotes
+#### Site configuration example
-Blockquotes can be added to the Hugo documentation using [typical Markdown blockquote syntax][bqsyntax]:
-
-```md
-> Without the threat of punishment, there is no joy in flight.
+```text
+{{</* code-toggle file="config" */>}}
+baseURL = 'https://example.org'
+languageCode = 'en-US'
+title = "Example Site"
+{{</* /code-toggle */>}}
```
-The preceding blockquote will render as follows in the Hugo docs:
+Rendered:
-> Without the threat of punishment, there is no joy in flight.
+{{< code-toggle file="config" >}}
+baseURL = 'https://example.org'
+languageCode = 'en-US'
+title = "Example Site"
+{{< /code-toggle >}}
-However, you can add a quick and easy `<cite>` element (added on the client via JavaScript) by separating your main blockquote and the citation with a hyphen with a single space on each side:
+#### Front matter example
-```md
-> Without the threat of punishment, there is no joy in flight. - [Kobo Abe](https://en.wikipedia.org/wiki/Kobo_Abe)
+```text
+{{</* code-toggle file="content/about.md" fm=true */>}}
+title = "About"
+date = 2023-04-02T12:47:24-07:00
+draft = false
+{{</* /code-toggle */>}}
```
-Which will render as follows in the Hugo docs:
-
-> Without the threat of punishment, there is no joy in flight. - [Kobo Abe][abe]
+Rendered:
-{{% note "Blockquotes `!=` Admonitions" %}}
-Previous versions of Hugo documentation used blockquotes to draw attention to text. This is *not* the [intended semantic use of `<blockquote>`](https://html5doctor.com/cite-and-blockquote-reloaded/). Use blockquotes when quoting. To note or warn your user of specific information, use the admonition shortcodes that follow.
-{{% /note %}}
+{{< code-toggle file="content/about.md" fm=true >}}
+title = "About"
+date = 2023-04-02T12:47:24-07:00
+draft = false
+{{< /code-toggle >}}
## Admonitions
-**Admonitions** are common in technical documentation. The most popular is that seen in [reStructuredText Directives][sourceforge]. From the SourceForge documentation:
-
-> Admonitions are specially marked "topics" that can appear anywhere an ordinary body element can. They contain arbitrary body elements. Typically, an admonition is rendered as an offset block in a document, sometimes outlined or shaded, with a title matching the admonition type. - [SourceForge][sourceforge]
-
-The Hugo docs contain three admonitions: `note`, `tip`, and `warning`.
+Use the `note` shortcode to draw attention to content. Use the `{{%/* */%}}` notation when calling this shortcode.
-### `note` Admonition
-
-Use the `note` shortcode when you want to draw attention to information subtly. `note` is intended to be less of an interruption in content than is `warning`.
-
-#### Example `note` Input
-
-{{< code file="note-with-heading.md" >}}
+```text
{{%/* note */%}}
-Here is a piece of information I would like to draw your **attention** to.
+This is **bold** text.
{{%/* /note */%}}
-{{< /code >}}
-
-#### Example `note` Output
-
-{{< output file="note-with-heading.html" >}}
-{{% note %}}
-Here is a piece of information I would like to draw your **attention** to.
-{{% /note %}}
-{{< /output >}}
-
-#### Example `note` Display
+```
{{% note %}}
-Here is a piece of information I would like to draw your **attention** to.
-{{% /note %}}
-
-### `tip` Admonition
-
-Use the `tip` shortcode when you want to give the reader advice. `tip`, like `note`, is intended to be less of an interruption in content than is `warning`.
-
-#### Example `tip` Input
-
-{{< code file="using-tip.md" >}}
-{{%/* tip */%}}
-Here's a bit of advice to improve your productivity with Hugo.
-{{%/* /tip */%}}
-{{< /code >}}
-
-#### Example `tip` Output
-
-{{< output file="tip-output.html" >}}
-{{% tip %}}
-Here's a bit of advice to improve your productivity with Hugo.
-{{% /tip %}}
-{{< /output >}}
-
-#### Example `tip` Display
-
-{{% tip %}}
-Here's a bit of advice to improve your productivity with Hugo.
-{{% /tip %}}
-
-### `warning` Admonition
-
-Use the `warning` shortcode when you want to draw the user's attention to something important. A good usage example is for articulating breaking changes in Hugo versions, known bugs, or templating "gotchas."
-
-#### Example `warning` Input
-
-{{< code file="warning-admonition-input.md" >}}
-{{%/* warning */%}}
-This is a warning, which should be reserved for *important* information like breaking changes.
-{{%/* /warning */%}}
-{{< /code >}}
-
-#### Example `warning` Output
-
-{{< output file="warning-admonition-output.html" >}}
-{{% warning %}}
-This is a warning, which should be reserved for *important* information like breaking changes.
-{{% /warning %}}
-{{< /output >}}
-
-#### Example `warning` Display
-
-{{% warning %}}
-This is a warning, which should be reserved for *important* information like breaking changes.
-{{% /warning %}}
-
-{{% note "Pull Requests and Branches" %}}
-Similar to [contributing to Hugo development](/contribute/development/), the Hugo team expects you to create a separate branch/fork when you make your contributions to the Hugo docs.
+This is **bold** text.
{{% /note %}}
-
-[abe]: https://en.wikipedia.org/wiki/Kobo_Abe
-[archetypes]: /content-management/archetypes/
-[bqsyntax]: https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet#blockquotes
-[charcount]: https://www.lettercount.com/
-[`docs/static/images/showcase/`]: https://github.com/gohugoio/hugo/tree/master/docs/static/images/showcase/
-[ghforking]: https://help.github.com/articles/fork-a-repo/
-[hugodev]: /contribute/development/
-[shortcodeparams]: content-management/shortcodes/#shortcodes-without-markdown
-[sourceforge]: https://docutils.sourceforge.io/docs/ref/rst/directives.html#admonitions
-[templating function]: /functions/
title: Add Your Hugo Theme to the Showcase
linktitle: Themes
description: If you've built a Hugo theme and want to contribute back to the Hugo Community, share it with us.
-date: 2017-02-01
-publishdate: 2017-02-01
categories: [contribute]
keywords: [contribute,themes,design]
-authors: [digitalcraftsman]
menu:
docs:
- parent: "contribute"
+ parent: contribute
weight: 30
weight: 30
-sections_weight: 30
aliases: [/contribute/theme/]
-wip: true
toc: true
---
title: Hugo Documentation
linktitle: Hugo
description: Hugo is the world's fastest static website engine. It's written in Go (aka Golang) and developed by bep, spf13 and friends.
-date: 2017-02-01
-publishdate: 2017-02-01
menu:
main:
- parent: "section name"
weight: 01
-weight: 01 #rem
-draft: false
-slug:
-aliases: []
-toc: false
+weight: 01
layout: documentation-home
---
---
title: .GetPage
description: "Gets a `Page` of a given `path`."
-date: 2017-02-01
-publishdate: 2017-02-01
-lastmod: 2017-02-01
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
keywords: [sections,lists,indexes]
signature: [".GetPage PATH"]
-workson: []
-hugoversion:
relatedfuncs: []
-deprecated: false
-aliases: []
---
`.GetPage` returns a page of a given `path`. Both `Site` and `Page` implements this method. The `Page` variant will, if given a relative path -- i.e. a path without a leading `/` -- try look for the page relative to the current page.
---
title: .RenderString
description: "Renders markup to HTML."
-date: 2019-12-18
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
keywords: [markdown,goldmark,render]
signature: [".RenderString MARKUP"]
---
{{ $optBlock := dict "display" "block" }}
{{ $optOrg := dict "markup" "org" }}
{{ "**Bold Markdown**" | $p.RenderString }}
-{{ "**Bold Block Markdown**" | $p.RenderString $optBlock }}
-{{ "/italic org mode/" | $p.RenderString $optOrg }}
+{{ "**Bold Block Markdown**" | $p.RenderString $optBlock }}
+{{ "/italic org mode/" | $p.RenderString $optOrg }}
```
{{< new-in "0.93.0" >}} **Note**: [markdownify](/functions/markdownify/) uses this function in order to support [Render Hooks](/getting-started/configuration-markup/#markdown-render-hooks).
---
title: Functions Quick Reference
-linktitle: Functions Quick Reference
description: Comprehensive list of Hugo templating functions, including basic and advanced usage examples.
-date: 2017-02-01
-publishdate: 2017-02-01
-lastmod: 2017-02-01
keywords: []
menu:
docs:
- parent: "functions"
-weight: 01 #rem
-draft: false
+ parent: functions
+weight: 01
aliases: [/layout/functions/,/templates/functions]
---
---
title: .AddDate
description: Returns the time corresponding to adding the given number of years, months, and days to the given time.Time value.
-date: 2017-02-01
-publishdate: 2017-02-01
-lastmod: 2017-02-01
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
keywords: [dates,time]
signature: [".AddDate YEARS MONTHS DAYS"]
-workson: [times]
-hugoversion:
relatedfuncs: [now]
-deprecated: false
-aliases: []
---
```go-html-template
---
title: after
description: "`after` slices an array to only the items after the <em>N</em>th item."
-date: 2017-02-01
-publishdate: 2017-02-01
-lastmod: 2017-02-01
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
keywords: [iteration]
signature: ["after INDEX COLLECTION"]
-workson: []
-hugoversion:
relatedfuncs: [last,first,seq]
-deprecated: false
-aliases: []
---
The following shows `after` being used in conjunction with the [`slice` function][slice]:
-```
+```go-html-template
{{ $data := slice "one" "two" "three" "four" }}
{{ range after 2 $data }}
{{ . }}
1. The top row is titled "Featured" and shows only the most recently published article (i.e. by `publishdate` in the content files' front matter).
2. The second row is titled "Recent Articles" and shows only the 2nd- to 4th-most recently published articles.
-{{< code file="layouts/section/articles.html" download="articles.html" >}}
+{{< code file="layouts/section/articles.html" >}}
{{ define "main" }}
<section class="row featured-article">
- <h2>Featured Article</h2>
- {{ range first 1 .Pages.ByPublishDate.Reverse }}
- <header>
- <h3><a href="{{.Permalink}}">{{.Title}}</a></h3>
- </header>
- <p>{{.Description}}</p>
- {{ end }}
+ <h2>Featured Article</h2>
+ {{ range first 1 .Pages.ByPublishDate.Reverse }}
+ <header>
+ <h3><a href="{{ . Permalink }}">{{ .Title }}</a></h3>
+ </header>
+ <p>{{ .Description }}</p>
+{{ end }}
</section>
<div class="row recent-articles">
- <h2>Recent Articles</h2>
- {{ range first 3 (after 1 .Pages.ByPublishDate.Reverse) }}
- <section class="recent-article">
- <header>
- <h3><a href="{{.Permalink}}">{{.Title}}</a></h3>
- </header>
- <p>{{.Description}}</p>
- </section>
- {{ end }}
+ <h2>Recent Articles</h2>
+ {{ range first 3 (after 1 .Pages.ByPublishDate.Reverse) }}
+ <section class="recent-article">
+ <header>
+ <h3><a href="{{ .Permalink }}">{{ .Title }}</a></h3>
+ </header>
+ <p>{{ .Description }}</p>
+ </section>
+ {{ end }}
</div>
{{ end }}
{{< /code >}}
---
title: anchorize
description: Takes a string and sanitizes it the same way as the [`defaultMarkdownHandler`](https://gohugo.io/getting-started/configuration-markup#configure-markup) does for markdown headers.
-date: 2018-10-13
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
keywords: [markdown,strings]
signature: ["anchorize INPUT"]
-hugoversion: "0.39"
-workson: []
relatedfuncs: [humanize]
---
---
title: append
description: "`append` appends one or more values to a slice and returns the resulting slice."
-date: 2018-09-14
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
keywords: [collections]
signature: ["COLLECTION | append VALUE [VALUE]...", "COLLECTION | append COLLECTION"]
-workson: []
-hugoversion: "0.49"
relatedfuncs: [last,first,where,slice]
-aliases: []
---
An example appending single values:
---
title: apply
description: Given a map, array, or slice, `apply` returns a new slice with a function applied over it.
-date: 2017-02-01
-publishdate: 2017-02-01
-lastmod: 2017-02-01
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
keywords: [advanced]
signature: ["apply COLLECTION FUNCTION [PARAM...]"]
-workson: []
-hugoversion:
relatedfuncs: []
-deprecated: false
-draft: false
-aliases: []
---
-{{< todo >}}
-POTENTIAL NEW CONTENT: see apply/sequence discussion: https://discourse.gohugo.io/t/apply-printf-on-a-sequence/5722;
-{{< /todo >}}
-
`apply` expects at least three parameters, depending on the function being applied.
1. The first parameter is the sequence to operate on.
Here is an example of a content file with `names:` as a front matter field:
-```
-+++
+{{< code-toggle file="content/example.md" fm=true copy=false >}}
+title: Example
names: [ "Derek Perkins", "Joe Bergevin", "Tanner Linsley" ]
-+++
-```
+{{< /code-toggle >}}
You can then use `apply` as follows:
-```
+```go-html-template
{{ apply .Params.names "urlize" "." }}
```
This is *roughly* equivalent to using the following with [range]:
-```
+```go-html-template
{{ range .Params.names }}{{ . | urlize }}{{ end }}
```
If you have `post-tag-list.html` and `post-tag-link.html` as [partials], you *could* use the following snippets, respectively:
-{{< code file="layouts/partials/post-tag-list.html" copy="false" >}}
+{{< code file="layouts/partials/post-tag-list.html" copy=false >}}
{{ with .Params.tags }}
-<div class="tags-list">
- Tags:
- {{ $len := len . }}
- {{ if eq $len 1 }}
- {{ partial "post-tag-link.html" (index . 0) }}
- {{ else }}
- {{ $last := sub $len 1 }}
- {{ range first $last . }}
- {{ partial "post-tag-link.html" . }},
+ <div class="tags-list">
+ Tags:
+ {{ $len := len . }}
+ {{ if eq $len 1 }}
+ {{ partial "post-tag-link.html" (index . 0) }}
+ {{ else }}
+ {{ $last := sub $len 1 }}
+ {{ range first $last . }}
+ {{ partial "post-tag-link.html" . }},
+ {{ end }}
+ {{ partial "post-tag-link.html" (index . $last) }}
{{ end }}
- {{ partial "post-tag-link.html" (index . $last) }}
- {{ end }}
-</div>
+ </div>
{{ end }}
{{< /code >}}
-{{< code file="layouts/partials/post-tag-link.html" copy="false" >}}
+{{< code file="layouts/partials/post-tag-link.html" copy=false >}}
<a class="post-tag post-tag-{{ . | urlize }}" href="/tags/{{ . | urlize }}">{{ . }}</a>
{{< /code >}}
This first version of `layouts/partials/post-tag-list.html` separates all of the operations for ease of reading. The combined and DRYer version is shown next:
-```
+```go-html-template
{{ with .Params.tags }}
- <div class="tags-list">
- Tags:
- {{ $sort := sort . }}
- {{ $links := apply $sort "partial" "post-tag-link.html" "." }}
- {{ $clean := apply $links "chomp" "." }}
- {{ delimit $clean ", " }}
- </div>
+ <div class="tags-list">
+ Tags:
+ {{ $sort := sort . }}
+ {{ $links := apply $sort "partial" "post-tag-link.html" "." }}
+ {{ $clean := apply $links "chomp" "." }}
+ {{ delimit $clean ", " }}
+ </div>
{{ end }}
```
Now in the completed version, you can sort the tags, convert the tags to links with `layouts/partials/post-tag-link.html`, [chomp] off stray newlines, and join the tags together in a delimited list for presentation. Here is an even DRYer version of the preceding example:
-{{< code file="layouts/partials/post-tag-list.html" download="post-tag-list.html" >}}
- {{ with .Params.tags }}
- <div class="tags-list">
- Tags:
- {{ delimit (apply (apply (sort .) "partial" "post-tag-link.html" ".") "chomp" ".") ", " }}
- </div>
- {{ end }}
+{{< code file="layouts/partials/post-tag-list.html" >}}
+{{ with .Params.tags }}
+ <div class="tags-list">
+ Tags:
+ {{ delimit (apply (apply (sort .) "partial" "post-tag-link.html" ".") "chomp" ".") ", " }}
+ </div>
+{{ end }}
{{< /code >}}
{{% note %}}
---
title: base64
description: "`base64Encode` and `base64Decode` let you easily decode content with a base64 encoding and vice versa through pipes."
-date: 2017-02-01
-publishdate: 2017-02-01
-lastmod: 2017-02-01
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
keywords: []
relatedfuncs: []
signature: ["base64Decode INPUT", "base64Encode INPUT"]
-workson: []
-hugoversion:
-deprecated: false
-draft: false
-aliases: []
---
-An example:
-
-{{< code file="base64-input.html" >}}
-<p>Hello world = {{ "Hello world" | base64Encode }}</p>
-<p>SGVsbG8gd29ybGQ = {{ "SGVsbG8gd29ybGQ=" | base64Decode }}</p>
-{{< /code >}}
-
-{{< output file="base-64-output.html" >}}
-<p>Hello world = SGVsbG8gd29ybGQ=</p>
-<p>SGVsbG8gd29ybGQ = Hello world</p>
-{{< /output >}}
-
-You can also pass other data types as arguments to the template function which tries to convert them. The following will convert *42* from an integer to a string because both `base64Encode` and `base64Decode` always return a string.
-
-```
-{{ 42 | base64Encode | base64Decode }}
-=> "42" rather than 42
+```go-html-template
+{{ "Hugo" | base64Encode }} → "SHVnbw=="
+{{ "SHVnbw==" | base64Decode }} → "Hugo"
```
## `base64` with APIs
Using base64 to decode and encode becomes really powerful if we have to handle
responses from APIs.
-```
-{{ $resp := getJSON "https://api.github.com/repos/gohugoio/hugo/readme" }}
+```go-html-template
+{{ $resp := getJSON "https://api.github.com/repos/gohugoio/hugo/readme" }}
{{ $resp.content | base64Decode | markdownify }}
```
title: chomp
toc: true
description: Removes any trailing newline characters.
-date: 2017-02-01
-publishdate: 2017-02-01
-lastmod: 2017-02-01
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
keywords: [trim]
signature:
- "chomp INPUT"
- "strings.Chomp INPUT"
-workson: []
-hugoversion:
relatedfuncs: [truncate]
-deprecated: false
---
Useful in a pipeline to remove newlines added by other processing (e.g., [`markdownify`](/functions/markdownify/)).
-```
-{{chomp "<p>Blockhead</p>\n"}} → "<p>Blockhead</p>"
+```go-html-template
+{{ chomp "<p>Blockhead</p>\n" }} → "<p>Blockhead</p>"
```
- "complement COLLECTION [COLLECTION]..."
- "collections.Complement COLLECTION [COLLECTION]..."
relatedfuncs: [intersect,symdiff,union]
-aliases: []
---
To find the elements within `$c3` that do not exist in `$c1` or `$c2`:
```go-html-template
{{ $c1 := slice 3 }}
-{{ $c2 := slice 4 5 }}
+{{ $c2 := slice 4 5 }}
{{ $c3 := slice 1 2 3 4 5 }}
{{ complement $c1 $c2 $c3 }} → [1 2]
---
-title: "cond"
-date: 2017-09-08
+title: cond
description: "Return one of two arguments, depending on the value of a third argument."
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
signature: ["cond CONTROL VAR1 VAR2"]
-hugoversion: 0.27
relatedfuncs: [default]
-toc: false
-draft: false
---
`cond` returns *VAR1* if *CONTROL* is true, or *VAR2* if it is not.
Example:
-```
+```go-html-template
{{ cond (eq (len $geese) 1) "goose" "geese" }}
```
Would emit "goose" if the `$geese` array has exactly 1 item, or "geese" otherwise.
-{{% warning %}}
+{{% note %}}
Whenever you use a `cond` function, *both* variable expressions are *always* evaluated. This means that a usage like `cond false (div 1 0) 27` will throw an error because `div 1 0` will be evaluated *even though the condition is false*.
In other words, the `cond` function does *not* provide [short-circuit evaluation](https://en.wikipedia.org/wiki/Short-circuit_evaluation) and does *not* work like a normal [ternary operator](https://en.wikipedia.org/wiki/%3F:) that will pass over the first expression if the condition returns `false`.
-{{% /warning %}}
+{{% /note %}}
---
title: countrunes
description: Determines the number of runes in a string excluding any whitespace.
-date: 2017-02-01
-publishdate: 2017-02-01
-lastmod: 2017-02-01
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
keywords: [counting, word count]
signature:
- "countrunes INPUT"
- "strings.CountRunes INPUT"
-workson: []
-hugoversion:
relatedfuncs: []
-deprecated: false
---
In contrast with `countwords` function, which counts every word in a string, the `countrunes` function determines the number of runes in the content and excludes any whitespace. This has specific utility if you are dealing with CJK-like languages.
-```
+```go-html-template
{{ "Hello, 世界" | countrunes }}
<!-- outputs a content length of 8 runes. -->
```
---
title: countwords
description: Counts the number of words in a string.
-date: 2017-02-01
-publishdate: 2017-02-01
-lastmod: 2017-02-01
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
keywords: [counting, word count]
signature: ["countwords INPUT"]
-workson: []
-hugoversion:
relatedfuncs: [countrunes]
-deprecated: false
---
The template function works similar to the [.WordCount page variable][pagevars].
-```
+```go-html-template
{{ "Hugo is a static site generator." | countwords }}
<!-- outputs a content length of 6 words. -->
```
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
keywords: [crypto hash FNV32 Fowler-Noll-Vo]
signature: ["crypto.FNV32a STRING"]
-aliases: []
---
This function calculates the 32 bit [FNV1a hash](https://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function#FNV-1a_hash) of a given string according to the [specification](https://datatracker.ietf.org/doc/html/draft-eastlake-fnv-12):
---
title: time.Format
description: Converts a date/time to a localized string.
-date: 2017-02-01
-publishdate: 2017-02-01
-lastmod: 2017-02-01
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
keywords: [dates,time,strings]
signature:
- "time.Format LAYOUT INPUT"
- "dateFormat LAYOUT INPUT"
-workson: []
-hugoversion:
relatedfuncs: [Format,now,Unix,time]
-deprecated: false
---
`time.Format` (alias `dateFormat`) converts either a `time.Time` object (e.g. `.Date`) or a timestamp string `INPUT` into the format specified by the `LAYOUT` string.
title: default
description: Allows setting a default value that can be returned if a first value is not set.
qref: "Returns a default value if a value is not set when checked."
-date: 2017-02-01
-publishdate: 2017-02-01
-lastmod: 2017-02-01
keywords: [defaults]
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
toc:
signature: ["default DEFAULT INPUT"]
-workson: []
-hugoversion:
relatedfuncs: []
-deprecated: false
-draft: false
-aliases: []
---
`default` checks whether a given value is set and returns a default value if it is not. *Set* in this context means different things depending on the data type:
`default` can be written in more than one way:
-```
-{{ index .Params "font" | default "Roboto" }}
-{{ default "Roboto" (index .Params "font") }}
+```go-html-template
+{{ .Params.font | default "Roboto" }}
+{{ default "Roboto" .Params.font }}
```
Both of the above `default` function calls return `Roboto`.
A `default` value, however, does not need to be hard coded like the previous example. The `default` value can be a variable or pulled directly from the front matter using dot notation:
-{{< code file="variable-as-default-value.html" nocopy="true" >}}
-{{$old := .Params.oldparam }}
+```go-html-template
+{{ $old := .Params.oldparam }}
<p>{{ .Params.newparam | default $old }}</p>
-{{< /code >}}
+```
Which would return:
-```
+```html
<p>The default function helps make your templating DRYer.</p>
```
And then using dot notation
-{{< code file="dot-notation-default-value.html" >}}
+```go-html-template
<title>{{ .Params.seo_title | default .Title }}</title>
-{{< /code >}}
+```
Which would return
-{{< output file="dot-notation-default-return-value.html" >}}
+```html
<title>Sane Defaults</title>
-{{< /output >}}
+```
The following have equivalent return values but are far less terse. This demonstrates the utility of `default`:
Using `if`:
-{{< code file="if-instead-of-default.html" nocopy="true" >}}
-<title>{{if .Params.seo_title}}{{.Params.seo_title}}{{else}}{{.Title}}{{end}}</title>
+```go-html-template
+<title>{{ if .Params.seo_title }}{{ .Params.seo_title }}{{ else }}{{ .Title }}{{ end }}</title>
=> Sane Defaults
-{{< /code >}}
+```
Using `with`:
-{{< code file="with-instead-of-default.html" nocopy="true" >}}
-<title>{{with .Params.seo_title}}{{.}}{{else}}{{.Title}}{{end}}</title>
+```go-html-template
+<title>{{ with .Params.seo_title }}{{ . }}{{ else }}{{ .Title }}{{ end }}</title>
=> Sane Defaults
-{{< /code >}}
+```
---
title: delimit
description: Loops through any array, slice, or map and returns a string of all the values separated by a delimiter.
-date: 2017-02-01
-publishdate: 2017-02-01
-lastmod: 2017-02-01
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
keywords: [iteration]
-toc: false
-signature: ["delimit COLLECTION DELIMIT LAST"]
-workson: [lists,taxonomies,terms]
-hugoversion:
+signature: ["delimit COLLECTION DELIMITER [LAST]"]
relatedfuncs: []
-deprecated: false
-draft: false
-aliases: []
---
-`delimit` called in your template takes the form of
+Delimit a slice:
+```go-html-template
+{{ $s := slice "b" "a" "c" }}
+{{ delimit $s ", " }} → "b, a, c"
+{{ delimit $s ", " " and "}} → "b, a and c"
```
-{{ delimit array/slice/map delimiter optionallastdelimiter}}
-```
-
-`delimit` loops through any array, slice, or map and returns a string of all the values separated by a delimiter, the second argument in the function call. There is an optional third parameter that lets you choose a different delimiter to go between the last two values in the loop.
-
-To maintain a consistent output order, maps will be sorted by keys and only a slice of the values will be returned.
-
-The examples of `delimit` that follow all use the same front matter:
-
-{{< code file="delimit-example-front-matter.toml" nocopy="true" >}}
-+++
-title: I love Delimit
-tags: [ "tag1", "tag2", "tag3" ]
-+++
-{{< /code >}}
-{{< code file="delimit-page-tags-input.html" >}}
-<p>Tags: {{ delimit .Params.tags ", " }}</p>
-{{< /code >}}
+Delimit a map:
-{{< output file="delimit-page-tags-output.html" >}}
-<p>Tags: tag1, tag2, tag3</p>
-{{< /output >}}
+{{% note %}}
+The `delimit` function sorts maps by key, returning the values.
+{{% /note %}}
-Here is the same example but with the optional "last" delimiter:
-
-{{< code file="delimit-page-tags-final-and-input.html" >}}
-Tags: {{ delimit .Params.tags ", " ", and " }}
-{{< /code >}}
-
-{{< output file="delimit-page-tags-final-and-output.html" >}}
-<p>Tags: tag1, tag2, and tag3</p>
-{{< /output >}}
-
-
-[lists]: /templates/lists/
-[taxonomies]: /templates/taxonomy-templates/#taxonomy-list-templates
-[terms]: /templates/taxonomy-templates/#terms-list-templates
+```go-html-template
+{{ $m := dict "b" 2 "a" 1 "c" 3 }}
+{{ delimit $m ", " }} → "1, 2, 3"
+{{ delimit $m ", " " and "}} → "1, 2 and 3"
+```
---
title: dict
description: Creates a dictionary from a list of key and value pairs.
-date: 2017-02-01
-publishdate: 2017-02-01
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
keywords: [dictionary]
signature: ["dict KEY VALUE [KEY VALUE]..."]
-workson: []
-hugoversion:
relatedfuncs: []
-deprecated: false
-aliases: []
---
`dict` is especially useful for passing more than one value to a partial template.
### Partial definition
-{{< code file="layouts/partials/svgs/external-links.svg" download="external-links.svg" >}}
+{{< code file="layouts/partials/svgs/external-links.svg" >}}
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
fill="{{ .fill }}" width="{{ .width }}" height="{{ .height }}" viewBox="0 0 32 32" aria-label="External Link">
<path d="M25.152 16.576v5.696q0 2.144-1.504 3.648t-3.648 1.504h-14.848q-2.144 0-3.648-1.504t-1.504-3.648v-14.848q0-2.112 1.504-3.616t3.648-1.536h12.576q0.224 0 0.384 0.16t0.16 0.416v1.152q0 0.256-0.16 0.416t-0.384 0.16h-12.576q-1.184 0-2.016 0.832t-0.864 2.016v14.848q0 1.184 0.864 2.016t2.016 0.864h14.848q1.184 0 2.016-0.864t0.832-2.016v-5.696q0-0.256 0.16-0.416t0.416-0.16h1.152q0.256 0 0.416 0.16t0.16 0.416zM32 1.152v9.12q0 0.48-0.352 0.8t-0.8 0.352-0.8-0.352l-3.136-3.136-11.648 11.648q-0.16 0.192-0.416 0.192t-0.384-0.192l-2.048-2.048q-0.192-0.16-0.192-0.384t0.192-0.416l11.648-11.648-3.136-3.136q-0.352-0.352-0.352-0.8t0.352-0.8 0.8-0.352h9.12q0.48 0 0.8 0.352t0.352 0.8z"></path>
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
keywords: [time duration]
signature: ["duration TIME_UNIT DURATION_NUMBER"]
-aliases: []
---
`time.Duration` converts a given number into a [`time.Duration`](https://pkg.go.dev/time#Duration) structure so you can access its fields. E.g. you can perform [time operations](https://pkg.go.dev/time#Duration) on the returned `time.Duration` value:
---
title: echoParam
description: Prints a parameter if it is set.
-date: 2017-02-01
-publishdate: 2017-02-01
-lastmod: 2017-02-01
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
keywords: []
signature: ["echoParam DICTIONARY KEY"]
-workson: []
-hugoversion:
relatedfuncs: []
-deprecated: false
-draft: false
-aliases: []
---
-```
+```go-html-template
{{ echoParam .Params "project_url" }}
```
---
title: emojify
description: Runs a string through the Emoji emoticons processor.
-date: 2017-02-01
-publishdate: 2017-02-01
-lastmod: 2017-02-01
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
keywords: [strings,emojis]
signature: ["emojify INPUT"]
-workson: []
-hugoversion:
relatedfuncs: []
-deprecated: false
---
`emojify` runs a passed string through the Emoji emoticons processor.
---
title: eq
-linktitle: eq
description: Returns the boolean truth of arg1 == arg2.
-date: 2017-02-01
-publishdate: 2017-02-01
-lastmod: 2017-02-01
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
keywords: [operators,logic]
signature: ["eq ARG1 ARG2"]
-workson: []
-hugoversion:
relatedfuncs: []
-deprecated: false
-aliases: []
---
-```
+```go-html-template
{{ if eq .Section "blog" }}current{{ end }}
```
---
title: errorf and warnf
description: Log ERROR or WARNING from the templates.
-date: 2017-09-30
-publishdate: 2017-09-30
-lastmod: 2017-09-30
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
keywords: [strings, log, error]
signature: ["errorf FORMAT INPUT"]
-workson: []
-hugoversion:
relatedfuncs: [printf]
-deprecated: false
---
`errorf` or `warnf` will evaluate a format string, then output the result to the ERROR or WARNING log (and only once per error message to avoid flooding the log).
Both functions return an empty string, so the messages are only printed to the console.
-```
+```go-html-template
{{ errorf "Failed to handle page %q" .Path }}
```
-```
+```go-html-template
{{ warnf "You should update the shortcodes in %q" .Path }}
```
You can do this by using the `erroridf` function. This functions takes an error ID as the first argument.
-```
+```go-html-template
{{ erroridf "my-custom-error" "You should consider fixing this." }}
```
---
-title: "fileExists"
-linktitle: "fileExists"
-date: 2017-08-31T22:38:22+02:00
+title: fileExists
description: Checks for file or directory existence.
-publishdate: 2017-08-31T22:38:22+02:00
-lastmod: 2021-11-26
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
signature: ["os.FileExists PATH","fileExists PATH"]
-workson: []
-hugoversion:
relatedfuncs: ['os.ReadDir','os.ReadFile','os.Stat']
-deprecated: false
-aliases: []
---
-The `os.FileExists` function attempts to resolve the path relative to the root of your project directory. If a matching file or directory is not found, it will attempt to resolve the path relative to the [`contentDir`]({{< relref "getting-started/configuration#contentdir">}}). A leading path separator (`/`) is optional.
+The `os.FileExists` function attempts to resolve the path relative to the root of your project directory. If a matching file or directory is not found, it will attempt to resolve the path relative to the [`contentDir`](/getting-started/configuration#contentdir). A leading path separator (`/`) is optional.
With this directory structure:
signature:
- "findRE PATTERN INPUT [LIMIT]"
- "strings.FindRE PATTERN INPUT [LIMIT]"
-relatedfuncs: [replaceRE]
-aliases: []
+relatedfuncs: [findRESubmatch, replaceRE]
---
-By default, the `findRE` function finds all matches. You can limit the number of matches with an optional LIMIT parameter.
+By default, `findRE` finds all matches. You can limit the number of matches with an optional LIMIT parameter.
When specifying the regular expression, use a raw [string literal] (backticks) instead of an interpreted string literal (double quotes) to simplify the syntax. With an interpreted string literal you must escape backslashes.
-The syntax of the regular expression is the same general syntax used by Perl, Python, and other languages. More precisely, it is the syntax accepted by [RE2] except for `\C`.
+[string literal]: https://go.dev/ref/spec#String_literals
+
+This function uses the [RE2] regular expression library. See the [RE2 syntax documentation] for details. Note that the RE2 `\C` escape sequence is not supported.
+
+[RE2]: https://github.com/google/re2/
+[RE2 syntax documentation]: https://github.com/google/re2/wiki/Syntax/
+
+{{% note %}}
+The RE2 syntax is a subset of that accepted by [PCRE], roughly speaking, and with various [caveats].
+
+[caveats]: https://swtch.com/~rsc/regexp/regexp3.html#caveats
+[PCRE]: https://www.pcre.org/
+{{% /note %}}
This example returns a slice of all second level headings (`h2` elements) within the rendered `.Content`:
{{% note %}}
You can write and test your regular expression using [regex101.com](https://regex101.com/). Be sure to select the Go flavor before you begin.
{{% /note %}}
-
-## findRESubmatch
-
-In Hugo 0.110.0 we added a variant of `findRe` that returns a slice of strings holding the text of the leftmost match of the regular expression in s and the matches, if any, of its subexpressions.
-
-This:
-
-```go-html-template
-{{ findRESubmatch §§<a\s*href="(.+?)">(.+?)</a>§§ §§<li><a href="#foo">Foo</a></li> <li><a href="#bar">Bar</a></li>§§ | print | safeHTML }}
-```
-
-Will print:
-
-```
-[[<a href=\"#foo\">Foo</a> #foo Foo] [<a href=\"#bar\">Bar</a> #bar Bar]]
-```
-
-{{< new-in "0.110.0" >}}
-
-
-[RE2]: https://github.com/google/re2/wiki/Syntax
-[string literal]: https://go.dev/ref/spec#String_literals
--- /dev/null
+---
+title: findRESubmatch
+description: Returns a slice of all successive matches of the regular expression. Each element is a slice of strings holding the text of the leftmost match of the regular expression and the matches, if any, of its subexpressions.
+categories: [functions]
+menu:
+ docs:
+ parent: functions
+keywords: [regex]
+signature:
+ - "findRESubmatch PATTERN INPUT [LIMIT]"
+ - "strings.FindRESubmatch PATTERN INPUT [LIMIT]"
+relatedfuncs: [findRE, replaceRE]
+---
+
+By default, `findRESubmatch` finds all matches. You can limit the number of matches with an optional LIMIT parameter. A return value of nil indicates no match.
+
+When specifying the regular expression, use a raw [string literal] (backticks) instead of an interpreted string literal (double quotes) to simplify the syntax. With an interpreted string literal you must escape backslashes.
+
+[string literal]: https://go.dev/ref/spec#String_literals
+
+This function uses the [RE2] regular expression library. See the [RE2 syntax documentation] for details. Note that the RE2 `\C` escape sequence is not supported.
+
+[RE2]: https://github.com/google/re2/
+[RE2 syntax documentation]: https://github.com/google/re2/wiki/Syntax/
+
+{{% note %}}
+The RE2 syntax is a subset of that accepted by [PCRE], roughly speaking, and with various [caveats].
+
+[caveats]: https://swtch.com/~rsc/regexp/regexp3.html#caveats
+[PCRE]: https://www.pcre.org/
+{{% /note %}}
+
+## Demonstrative examples
+
+```go-html-template
+{{ findRESubmatch `a(x*)b` "-ab-" }} → [["ab" ""]]
+{{ findRESubmatch `a(x*)b` "-axxb-" }} → [["axxb" "xx"]]
+{{ findRESubmatch `a(x*)b` "-ab-axb-" }} → [["ab" ""] ["axb" "x"]]
+{{ findRESubmatch `a(x*)b` "-axxb-ab-" }} → [["axxb" "xx"] ["ab" ""]]
+{{ findRESubmatch `a(x*)b` "-axxb-ab-" 1 }} → [["axxb" "xx"]]
+```
+
+## Practical example
+
+This markdown:
+
+```text
+- [Example](https://example.org)
+- [Hugo](https://gohugo.io)
+```
+
+Produces this HTML:
+
+```html
+<ul>
+ <li><a href="https://example.org">Example</a></li>
+ <li><a href="https://gohugo.io">Hugo</a></li>
+</ul>
+```
+
+To match the anchor elements, capturing the link destination and text:
+
+```go-html-template
+{{ $regex := `<a\s*href="(.+?)">(.+?)</a>` }}
+{{ $matches := findRESubmatch $regex .Content }}
+```
+
+Viewed as JSON, the data structure of `$matches` in the code above is:
+
+```json
+[
+ [
+ "<a href=\"https://example.org\"></a>Example</a>",
+ "https://example.org",
+ "Example"
+ ],
+ [
+ "<a href=\"https://gohugo.io\">Hugo</a>",
+ "https://gohugo.io",
+ "Hugo"
+ ]
+]
+```
+
+To render the `href` attributes:
+
+```go-html-template
+{{ range $matches }}
+ {{ index . 1 }}
+{{ end }}
+```
+
+Result:
+
+```text
+https://example.org
+https://gohugo.io
+```
+
+{{% note %}}
+You can write and test your regular expression using [regex101.com](https://regex101.com/). Be sure to select the Go flavor before you begin.
+{{% /note %}}
---
title: first
-linktitle: first
description: "Slices an array to only the first _N_ elements."
-date: 2017-02-01
-publishdate: 2017-02-01
-lastmod: 2017-02-01
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
keywords: [iteration]
signature: ["first LIMIT COLLECTION"]
-workson: [lists,taxonomies,terms,groups]
-hugoversion:
relatedfuncs: [after,last]
-deprecated: false
-aliases: []
---
`first` works in a similar manner to the [`limit` keyword in
---
title: float
-linktitle: float
-description: Creates a `float` from the argument passed into the function.
-date: 2017-09-28
-publishdate: 2017-09-28
-lastmod: 2017-09-28
+description: Casts a value to a decimal (base 10) floating point value.
categories: [functions]
menu:
docs:
- parent: "functions"
-keywords: [strings,floats]
+ parent: functions
+keywords: [cast,strings,floats]
signature: ["float INPUT"]
-workson: []
-hugoversion:
relatedfuncs: []
-deprecated: false
-aliases: []
---
-Useful for turning strings into floating point numbers.
+With a decimal (base 10) input:
+```go-html-template
+{{ float 11 }} → 11 (float64)
+{{ float "11" }} → 11 (float64)
+
+{{ float 11.1 }} → 11.1 (float64)
+{{ float "11.1" }} → 11.1 (float64)
+
+{{ float 11.9 }} → 11.9 (float64)
+{{ float "11.9" }} → 11.9 (float64)
+```
+
+With a binary (base 2) input:
+
+```go-html-template
+{{ float 0b11 }} → 3 (float64)
```
-{{ float "1.23" }} → 1.23
+
+With an octal (base 8) input (use either notation):
+
+```go-html-template
+{{ float 011 }} → 9 (float64)
+{{ float "011" }} → 11 (float64)
+
+{{ float 0o11 }} → 9 (float64)
+```
+
+With a hexadecimal (base 16) input:
+
+```go-html-template
+{{ float 0x11 }} → 17 (float64)
```
---
title: .Format
description: Formats built-in Hugo dates---`.Date`, `.PublishDate`, and `.Lastmod`---according to Go's layout string.
-date: 2017-02-01
-publishdate: 2017-02-01
-lastmod: 2017-02-01
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
keywords: [dates,time]
signature: [".Format FORMAT"]
-workson: [times]
-hugoversion:
relatedfuncs: [dateFormat,now,Unix,time]
-deprecated: false
-aliases: []
toc: true
---
Assuming a key-value of `date: 2017-03-03` in a content file's front matter, your can run the date through `.Format` followed by a layout string for your desired output at build time:
-```
+```go-html-template
{{ .PublishDate.Format "January 2, 2006" }} => March 3, 2017
```
Use the [`humanize`](/functions/humanize) function to render the day of the month as an ordinal number:
-```
+```go-html-template
{{ humanize .Date.Day }} of {{ .Date.Format "January 2006" }}
```
---
title: ge
-linktitle: ge
description: Returns the boolean truth of arg1 >= arg2.
-date: 2017-07-26
-publishdate: 2017-07-26
-lastmod: 2017-07-26
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
keywords: [operators,logic]
signature: ["ge ARG1 ARG2"]
-workson: []
-hugoversion:
relatedfuncs: []
-deprecated: false
-aliases: []
---
-```
+```go-html-template
{{ if ge 10 5 }}true{{ end }}
```
---
title: .Get
description: Accesses positional and ordered parameters in shortcode declaration.
-date: 2017-02-01
-publishdate: 2017-02-01
-lastmod: 2017-02-01
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
keywords: [shortcodes]
signature: [".Get INDEX", ".Get KEY"]
-workson: []
-hugoversion:
relatedfuncs: []
-deprecated: false
-aliases: []
-needsexample: true
---
`.Get` is specifically used when creating your own [shortcode template][sc], to access the [positional and named](/templates/shortcode-templates/#positional-vs-named-parameters) parameters passed to it. When used with a numeric INDEX, it queries positional parameters (starting with 0). With a string KEY, it queries named parameters.
---
title: getenv
description: Returns the value of an environment variable, or an empty string if the environment variable is not set.
-date: 2017-02-01
-publishdate: 2017-02-01
-lastmod: 2021-11-26
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
keywords: []
signature: ["os.Getenv VARIABLE", "getenv VARIABLE"]
-workson: []
-hugoversion:
relatedfuncs: []
-deprecated: false
-aliases: []
---
Examples:
```
With Hugo v0.91.0 and later, you must explicitly allow access to environment variables. For details, review [Hugo's Security Policy](/about/security-model/#security-policy). By default, environment variables beginning with `HUGO_` are allowed when using the `os.Getenv` function.
-
---
title: group
description: "`group` groups a list of pages."
-date: 2018-09-14
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
keywords: [collections]
signature: ["PAGES | group KEY"]
-hugoversion: "0.49"
---
{{< code file="layouts/partials/groups.html" >}}
---
title: gt
-linktitle: gt
description: Returns the boolean truth of arg1 > arg2.
-date: 2017-07-26
-publishdate: 2017-07-26
-lastmod: 2017-07-26
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
keywords: [operators,logic]
signature: ["gt ARG1 ARG2"]
-workson: []
-hugoversion:
relatedfuncs: []
-deprecated: false
-aliases: []
---
-```
+```go-html-template
{{ if gt 10 5 }}true{{ end }}
```
+++ /dev/null
----
-title: hasprefix
-linktitle: hasPrefix
-description: Tests whether a string begins with prefix.
-date: 2017-02-01
-publishdate: 2017-02-01
-lastmod: 2017-02-01
-categories: [functions]
-menu:
- docs:
- parent: "functions"
-keywords: []
-signature: ["hasPrefix STRING PREFIX"]
-workson: []
-hugoversion:
-relatedfuncs: []
-deprecated: false
-aliases: []
----
-
-* `{{ hasPrefix "Hugo" "Hu" }}` → true
---
title: .HasMenuCurrent
description:
-date: 2017-02-01
-publishdate: 2017-02-01
-lastmod: 2017-02-01
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
keywords: [menus]
signature: ["PAGE.HasMenuCurrent MENU MENUENTRY"]
-workson: [menus]
-hugoversion:
relatedfuncs: ["IsMenuCurrent"]
-deprecated: false
-toc: false
-draft: false
-aliases: []
---
`.HasMenuCurrent` is a method in `Page` object returning a _boolean_ value. It
---
title: highlight
-linktitle: highlight
description: Renders code with a syntax highlighter.
-date: 2017-02-01
-publishdate: 2017-02-01
-lastmod: 2021-12-06
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
keywords: [highlighting,code blocks,syntax]
signature: ["transform.Highlight INPUT LANG [OPTIONS]","highlight INPUT LANG [OPTIONS]"]
relatedfuncs: []
-deprecated: false
toc: true
---
The `highlight` function uses the [Chroma] syntax highlighter, supporting over 200 languages with more than 40 available styles.
```
[Chroma]: https://github.com/alecthomas/chroma
-[hugo client]: {{< relref "commands/hugo_gen_chromastyles" >}}
-[options]: {{< relref "#options" >}}
-[site configuration]: {{< relref "getting-started/configuration-markup#highlight">}}
+[hugo client]: /commands/hugo_gen_chromastyles
+[options]: #options
+[site configuration]: /getting-started/configuration-markup#highlight
[style gallery]: https://xyproto.github.io/splash/docs/
-[supported languages]: {{< relref "content-management/syntax-highlighting#list-of-chroma-highlighting-languages" >}}
+[supported languages]: /content-management/syntax-highlighting#list-of-chroma-highlighting-languages
---
title: hmac
-linktitle: hmac
description: Returns a cryptographic hash that uses a key to sign a message.
-date: 2020-05-29
-publishdate: 2020-05-29
-lastmod: 2020-05-29
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
keywords: [hmac,checksum]
signature: ["crypto.HMAC HASH_TYPE KEY MESSAGE [ENCODING]","hmac HASH_TYPE KEY MESSAGE [ENCODING]" ]
-workson: []
-hugoversion:
relatedfuncs: [hmac]
-deprecated: false
-aliases: []
---
Set the `HASH_TYPE` argument to `md5`, `sha1`, `sha256`, or `sha512`.
---
title: htmlEscape
-linktitle:
description: Returns the given string with the reserved HTML codes escaped.
-date: 2017-02-01
-publishdate: 2017-02-01
-lastmod: 2017-02-01
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
keywords: [strings, html]
signature: ["htmlEscape INPUT"]
-workson: []
-hugoversion:
relatedfuncs: [htmlUnescape]
-deprecated: false
-aliases: []
---
In the result `&` becomes `&` and so on. It escapes only: `<`, `>`, `&`, `'` and `"`.
-```
+```go-html-template
{{ htmlEscape "Hugo & Caddy > WordPress & Apache" }} → "Hugo & Caddy > WordPress & Apache"
```
---
title: htmlUnescape
-linktitle: htmlUnescape
description: Returns the given string with HTML escape codes un-escaped.
-date: 2017-02-01
-publishdate: 2017-02-01
-lastmod: 2017-02-01
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
keywords: []
signature: ["htmlUnescape INPUT"]
-workson: []
-hugoversion:
relatedfuncs: [htmlEscape]
-deprecated: false
-aliases: []
---
`htmlUnescape` returns the given string with HTML escape codes un-escaped.
Remember to pass the output of this to `safeHTML` if fully un-escaped characters are desired. Otherwise, the output will be escaped again as normal.
-```
+```go-html-template
{{ htmlUnescape "Hugo & Caddy > WordPress & Apache" }} → "Hugo & Caddy > WordPress & Apache"
```
---
title: hugo
-linktitle: hugo
description: The `hugo` function provides easy access to Hugo-related data.
-date: 2019-01-31
-publishdate: 2019-01-31
keywords: []
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
toc:
signature: ["hugo"]
-workson: []
-hugoversion:
relatedfuncs: []
-deprecated: false
-draft: false
-aliases: []
---
`hugo` returns an instance that contains the following functions:
hugo.IsProduction
: returns true if `hugo.Environment` is set to the production environment
-{{% note "Use the Hugo Generator Tag" %}}
-We highly recommend using `hugo.Generator` in your website's `<head>`. `hugo.Generator` is included by default in all themes hosted on [themes.gohugo.io](https://themes.gohugo.io). The generator tag allows the Hugo team to track the usage and popularity of Hugo.
-{{% /note %}}
-
hugo.Deps
: See [hugo.Deps](#hugodeps)
{{ range $index, $element := hugo.Deps }}
<tr>
<th scope="row">{{ add $index 1 }}</th>
- <td>{{ with $element.Owner }}{{.Path }}{{ end }}</td>
+ <td>{{ with $element.Owner }}{{ .Path }}{{ end }}</td>
<td>
{{ $element.Path }}
- {{ with $element.Replace}}
+ {{ with $element.Replace }}
=> {{ .Path }}
{{ end }}
</td>
---
title: humanize
-linktitle:
description: Returns the humanized version of an argument with the first letter capitalized.
-date: 2017-02-01
-publishdate: 2017-02-01
-lastmod: 2017-02-01
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
keywords: [strings,casing]
signature: ["humanize INPUT"]
-workson: []
-hugoversion:
relatedfuncs: [anchorize]
-deprecated: false
-aliases: []
---
If the input is either an int64 value or the string representation of an integer, humanize returns the number with the proper ordinal appended.
-```
-{{humanize "my-first-post"}} → "My first post"
-{{humanize "myCamelPost"}} → "My camel post"
-{{humanize "52"}} → "52nd"
-{{humanize 103}} → "103rd"
+```go-html-template
+{{ humanize "my-first-post" }} → "My first post"
+{{ humanize "myCamelPost" }} → "My camel post"
+{{ humanize "52" }} → "52nd"
+{{ humanize 103 }} → "103rd"
```
---
title: i18n
-linktitle: i18n
description: Translates a piece of content based on your i18n configuration files.
-date: 2017-02-01
-publishdate: 2017-02-01
-lastmod: 2017-02-01
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
keywords: [internationalization,i18n,multilingual]
signature:
- "i18n KEY"
- "T KEY"
- "lang.Translate KEY"
-workson: []
-hugoversion:
relatedfuncs: []
-deprecated: false
-aliases: []
---
This translates a piece of content based on your `i18n/en-US.toml` files. You can use the [go-i18n](https://github.com/nicksnyder/go-i18n) tools to manage your translations. The translations can exist in both the theme and at the root of your repository.
-```
+```go-html-template
{{ i18n "translation_id" }}
```
-{{% note "Alias `T`" %}}
+{{% note %}}
`T` is an alias to `i18n`. E.g. `{{ T "translation_id" }}`.
{{% /note %}}
Often you will want to use the page variables in the translation strings. To do so, pass the `.` context when calling `i18n`:
-```
+```go-html-template
{{ i18n "wordCount" . }}
```
---
title: Image Filters
description: The images namespace provides a list of filters and other image related functions.
-date: 2017-02-01
categories: [functions]
aliases: [/functions/imageconfig/]
menu:
docs:
- parent: "functions"
+ parent: functions
keywords: [images]
toc: true
---
The following example will add the text `Hugo rocks!` to the image with the specified color, size and position.
```go-html-template
-{{ $img := resources.Get "/images/background.png"}}
+{{ $img := resources.Get "/images/background.png" }}
{{ $img = $img.Filter (images.Text "Hugo rocks!" (dict
"color" "#ffffff"
"size" 60
```go-html-template
{{ $font := resources.GetRemote "https://github.com/google/fonts/raw/main/apache/roboto/static/Roboto-Black.ttf" }}
-{{ $img := resources.Get "/images/background.png"}}
+{{ $img := resources.Get "/images/background.png" }}
{{ $img = $img.Filter (images.Text "Hugo rocks!" (dict
"font" $font
))}}
```go-html-template
{{ with (imageConfig "favicon.ico") }}
-favicon.ico: {{.Width}} x {{.Height}}
+favicon.ico: {{ .Width }} x {{ .Height }}
{{ end }}
```
---
title: in
-linktitle:
description: Checks if an element is in an array or slice--or a substring in a string---and returns a boolean.
-date: 2017-02-01
-publishdate: 2017-02-01
-lastmod: 2017-02-01
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
keywords: [strings]
signature: ["in SET ITEM"]
-workson: []
-hugoversion:
relatedfuncs: []
-deprecated: false
-aliases: []
---
The elements supported are strings, integers and floats, although only float64 will match as expected.
In addition, `in` can also check if a substring exists in a string.
-```
+```go-html-template
{{ if in .Params.tags "Git" }}Follow me on GitHub!{{ end }}
```
-```
+```go-html-template
{{ if in "this string contains a substring" "substring" }}Substring found!{{ end }}
```
---
title: index
-linktitle: index
description: Looks up the index(es) or key(s) of the data structure passed into it.
-date: 2017-02-01
-publishdate: 2017-02-01
-lastmod: 2017-02-01
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
keywords: []
signature: ["index COLLECTION INDEXES", "index COLLECTION KEYS"]
-workson: []
-hugoversion:
relatedfuncs: []
-deprecated: false
aliases: [/functions/index/]
-needsexample: true
---
The `index` functions returns the result of indexing its first argument by the following arguments. Each indexed item must be a map or a slice, e.g.:
Here is an example:
-{{< code-toggle file="data/locations/oslo" >}}
+{{< code-toggle file="data/locations/oslo" copy=false >}}
website = "https://www.oslo.kommune.no"
pop_city = 658390
pop_metro = 1717900
The example we will use will be an article on Oslo, whose front matter should be set to exactly the same name as the corresponding file name in `data/locations/`:
-```
+{{< code-toggle file="content/articles/oslo.md" fm=true copy=false >}}
title = "My Norwegian Vacation"
location = "oslo"
-```
+{{< /code-toggle >}}
The content of `oslo.toml` can be accessed from your template using the following node path: `.Site.Data.locations.oslo`. However, the specific file you need is going to change according to the front matter.
1. The node path
2. A string corresponding to the desired data; e.g.—
-```
-{{ index .Site.Data.locations “oslo” }}
+```go-html-template
+{{ index .Site.Data.locations "oslo" }}
```
The variable for `.Params.location` is a string and can therefore replace `oslo` in the example above:
-```
+```go-html-template
{{ index .Site.Data.locations .Params.location }}
=> map[website:https://www.oslo.kommune.no pop_city:658390 pop_metro:1717900]
```
Now the call will return the specific file according to the location specified in the content's front matter, but you will likely want to write specific properties to the template. You can do this by continuing down the node path via dot notation (`.`):
-```
+```go-html-template
{{ (index .Site.Data.locations .Params.location).pop_city }}
=> 658390
```
---
title: int
-linktitle: int
-description: Creates an `int` from the argument passed into the function.
-date: 2017-02-01
-publishdate: 2017-02-01
-lastmod: 2017-02-01
+description: Casts a value to a decimal (base 10) integer.
categories: [functions]
menu:
docs:
- parent: "functions"
-keywords: [strings,integers]
+ parent: functions
+keywords: [cast,strings,integers]
signature: ["int INPUT"]
-workson: []
-hugoversion:
relatedfuncs: []
-deprecated: false
-aliases: []
---
-Useful for turning strings into numbers.
+With a decimal (base 10) input:
+```go-html-template
+{{ int 11 }} → 11 (int)
+{{ int "11" }} → 11 (int)
+
+{{ int 11.1 }} → 11 (int)
+{{ int 11.9 }} → 11 (int)
```
-{{ int "123" }} → 123
+
+With a binary (base 2) input:
+
+```go-html-template
+{{ int 0b11 }} → 3 (int)
+{{ int "0b11" }} → 3 (int)
```
-{{% note "Usage Note" %}}
-If the input string is supposed to represent a decimal number, and if it has
-leading 0's, then those 0's will have to be removed before passing the string
-to the `int` function, else that string will be tried to be parsed as an octal
-number representation.
+With an octal (base 8) input (use either notation):
-The [`strings.TrimLeft` function](/functions/strings.trimleft/) can be used for
-this purpose.
+```go-html-template
+{{ int 011 }} → 9 (int)
+{{ int "011" }} → 9 (int)
-```
-{{ int ("0987" | strings.TrimLeft "0") }}
-{{ int ("00987" | strings.TrimLeft "0") }}
+{{ int 0o11 }} → 9 (int)
+{{ int "0o11" }} → 9 (int)
```
-### Explanation
+With a hexadecimal (base 16) input:
-The `int` function eventually calls the `ParseInt` function from the Go library
-`strconv`.
+```go-html-template
+{{ int 0x11 }} → 17 (int)
+{{ int "0x11" }} → 17 (int)
+```
-From its [documentation](https://golang.org/pkg/strconv/#ParseInt):
+{{% note %}}
+Values with a leading zero are octal (base 8). When casting a string representation of a decimal (base 10) number, remove leading zeros:
-> the base is implied by the string's prefix: base 16 for "0x", base 8 for "0",
-> and base 10 otherwise.
+`{{ strings.TrimLeft "0" "0011" | int }} → 11`
{{% /note %}}
---
title: intersect
-linktitle: intersect
description: Returns the common elements of two arrays or slices, in the same order as the first array.
-date: 2017-02-01
-publishdate: 2017-02-01
-lastmod: 2017-02-01
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
keywords: [collections,intersect,union,complement,symdiff]
signature: ["intersect SET1 SET2"]
-workson: []
-hugoversion:
relatedfuncs: []
-deprecated: false
-aliases: []
---
A useful example is to use it as `AND` filters when combined with where:
## AND filter in where query
-```
+```go-html-template
{{ $pages := where .Site.RegularPages "Type" "not in" (slice "page" "about") }}
{{ $pages := $pages | union (where .Site.RegularPages "Params.pinned" true) }}
{{ $pages := $pages | intersect (where .Site.RegularPages "Params.images" "!=" nil) }}
---
title: .IsMenuCurrent
description:
-date: 2017-02-01
-publishdate: 2017-02-01
-lastmod: 2017-02-01
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
keywords: [menus]
signature: ["PAGE.IsMenuCurrent MENU MENUENTRY"]
-workson: [menus]
-hugoversion:
relatedfuncs: ["HasMenuCurrent"]
-deprecated: false
-draft: false
-aliases: []
-needsexample: true
---
`.IsMenuCurrent` is a method in `Page` object returning a _boolean_ value. It
---
title: isset
-linktitle: isset
description: Returns true if the parameter is set.
-date: 2017-02-01
-publishdate: 2017-02-01
-lastmod: 2017-02-01
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
keywords: []
signature: ["isset COLLECTION INDEX", "isset COLLECTION KEY"]
-workson: []
-hugoversion:
relatedfuncs: []
-deprecated: false
-aliases: []
---
Takes either a slice, array, or channel and an index or a map and a key as input.
-```
+```go-html-template
{{ if isset .Params "project_url" }} {{ index .Params "project_url" }}{{ end }}
```
-{{% warning %}}
-All site-level configuration keys are stored as lower case. Therefore, a `myParam` key-value set in your [site configuration file](/getting-started/configuration/) needs to be accessed with `{{if isset .Site.Params "myparam"}}` and *not* with `{{if isset .Site.Params "myParam"}}`. Note that you can still access the same config key with `.Site.Params.myParam` *or* `.Site.Params.myparam`, for example, when using [`with`](/functions/with).
+{{% note %}}
+All site-level configuration keys are stored as lower case. Therefore, a `myParam` key-value set in your [site configuration file](/getting-started/configuration/) needs to be accessed with `{{ if isset .Site.Params "myparam" }}` and *not* with `{{ if isset .Site.Params "myParam" }}`. Note that you can still access the same config key with `.Site.Params.myParam` *or* `.Site.Params.myparam`, for example, when using [`with`](/functions/with).
This restriction also applies when accessing page-level front matter keys from within [shortcodes](/content-management/shortcodes/).
-{{% /warning %}}
+{{% /note %}}
---
title: jsonify
-linktitle: jsonify
description: Encodes a given object to JSON.
-date: 2017-02-01
-publishdate: 2017-02-01
-lastmod: 2020-04-13
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
keywords: [strings,json]
signature: ["jsonify INPUT", "jsonify OPTIONS INPUT"]
-workson: []
-hugoversion:
relatedfuncs: [plainify]
-deprecated: false
-aliases: []
---
Jsonify encodes a given object to JSON.
more copies of *indent* according to the indentation nesting.
-```
+```go-html-template
{{ dict "title" .Title "content" .Plain | jsonify }}
{{ dict "title" .Title "content" .Plain | jsonify (dict "indent" " ") }}
{{ dict "title" .Title "content" .Plain | jsonify (dict "prefix" " " "indent" " ") }}
---
title: lang.Merge
description: "Merge missing translations from other languages."
-date: 2018-03-16
categories: [functions]
keywords: [multilingual]
menu:
docs:
- parent: "functions"
-toc: false
+ parent: functions
signature: ["lang.Merge FROM TO"]
-workson: []
-hugoversion:
relatedfuncs: []
-deprecated: false
-draft: false
-aliases: []
comments:
---
title: lang
package: lang
description: "TODO.."
-date: 2021-07-28
categories: [functions]
keywords: [numbers]
menu:
docs:
- parent: "functions"
+ parent: functions
signature: ["lang.NumFmt PRECISION NUMBER [OPTIONS [DELIMITER]]"]
aliases: ['/functions/numfmt/']
type: 'template-func'
-
---
-
---
title: last
-linktitle: last
description: "slices an array to only the last <em>N</em>th elements."
-date: 2017-02-01
-publishdate: 2017-02-01
-lastmod: 2017-02-01
keywords: []
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
toc:
signature: ["last INDEX COLLECTION"]
-workson: [lists, taxonomies, terms, groups]
-hugoversion:
relatedfuncs: []
-deprecated: false
-draft: false
-aliases: []
---
-```
+```go-html-template
{{ range last 10 .Pages }}
- {{ .Render "summary" }}
+ {{ .Render "summary" }}
{{ end }}
```
---
title: le
-linktitle: le
description: Returns the boolean truth of arg1 <= arg2.
-date: 2017-07-26
-publishdate: 2017-07-26
-lastmod: 2017-07-26
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
keywords: [operators,logic]
signature: ["le ARG1 ARG2"]
-workson: []
-hugoversion:
relatedfuncs: []
-deprecated: false
-aliases: []
---
-```
+```go-html-template
{{ if le 5 10 }}true{{ end }}
```
---
title: len
-linktitle: len
-description: Returns the length of a variable according to its type.
-date: 2017-02-01
-publishdate: 2017-02-01
-lastmod: 2017-04-18
+description: Returns the length of a string, slice, map, or collection.
categories: [functions]
menu:
docs:
- parent: "functions"
-keywords: []
+ parent: functions
+keywords: [length]
signature: ["len INPUT"]
-workson: [lists,taxonomies,terms]
-hugoversion:
relatedfuncs: []
-deprecated: false
-toc: false
-aliases: []
---
-`len` is a built-in function in Go that returns the length of a variable according to its type. From the Go documentation:
+With a string:
-> Array: the number of elements in v.
->
-> Pointer to array: the number of elements in *v (even if v is nil).
->
-> Slice, or map: the number of elements in v; if v is nil, len(v) is zero.
->
-> String: the number of bytes in v.
->
-> Channel: the number of elements queued (unread) in the channel buffer; if v is nil, len(v) is zero.
+```go-html-template
+{{ "ab" | len }} → 2
+{{ "" | len }} → 0
+```
-`len` is also considered a [fundamental function for Hugo templating].
+With a slice:
-## `len` Example 1: Longer Headings
+```go-html-template
+{{ slice "a" "b" | len }} → 2
+{{ slice | len }} → 0
+```
-You may want to append a class to a heading according to the length of the string therein. The following templating checks to see if the title's length is greater than 80 characters and, if so, adds a `long-title` class to the `<h1>`:
+With a map:
-{{< code file="check-title-length.html" >}}
-<header>
- <h1{{if gt (len .Title) 80}} class="long-title"{{end}}>{{.Title}}</h1>
-</header>
-{{< /code >}}
+```go-html-template
+{{ dict "a" 1 "b" 2 | len }} → 2
+{{ dict | len }} → 0
+```
-## `len` Example 2: Counting Pages with `where`
+With a collection:
-The following templating uses [`where`] in conjunction with `len` to
-figure out the total number of content pages in a `posts` [section]:
+```go-html-template
+{{ site.RegularPages | len }} → 42
+```
-{{< code file="how-many-posts.html" >}}
-{{ $posts := (where .Site.RegularPages "Section" "==" "posts") }}
-{{ $postCount := len $posts }}
-{{< /code >}}
+You may also determine the number of pages in a collection with:
-Note the use of `.RegularPages`, a [site variable] that counts all regular content pages but not the `_index.md` pages used to add front matter and content to [list templates].
-
-
-[fundamental function for Hugo templating]: /templates/introduction/
-[list templates]: /templates/lists/
-[section]: /content-management/sections/
-[site variable]: /variables/site/
-[`where`]: /functions/where/
+```go-html-template
+{{ site.RegularPages.Len }} → 42
+```
---
title: lower
-linktitle: lower
description: Converts all characters in the provided string to lowercase.
-date: 2017-02-01
-publishdate: 2017-02-01
-lastmod: 2017-02-01
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
keywords: [strings,casing]
signature:
- "lower INPUT"
- "strings.ToLower INPUT"
-workson: []
-hugoversion:
relatedfuncs: []
-deprecated: false
-aliases: []
---
---
title: lt
-linktitle: lt
description: Returns the boolean truth of arg1 < arg2.
-date: 2017-07-26
-publishdate: 2017-07-26
-lastmod: 2017-07-26
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
keywords: [operators,logic]
signature: ["lt ARG1 ARG2"]
-workson: []
-hugoversion:
relatedfuncs: []
-deprecated: false
-aliases: []
---
-```
+```go-html-template
{{ if lt 5 10 }}true{{ end }}
```
---
title: markdownify
-linktitle: markdownify
-description: Runs the provided string through the Markdown processor.
-date: 2017-02-01
-publishdate: 2017-02-01
-lastmod: 2023-02-09
+description: Renders markdown to HTML.
keywords: [markdown,content]
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
signature: ["markdownify INPUT"]
-workson: []
-hugoversion:
relatedfuncs: []
-deprecated: false
-aliases: []
---
-
-```
+```go-html-template
{{ .Title | markdownify }}
```
-{{< new-in "0.93.0" >}} **Note**: `markdownify` now supports [Render Hooks] just like [`.Page.RenderString`]. However, if you use more complicated [Render Hooks] relying on page context, use [`.Page.RenderString`] instead. See [GitHub issue #9692](https://github.com/gohugoio/hugo/issues/9692) for more details.
+If the resulting HTML is a single paragraph, Hugo removes the wrapping `p` tags to produce inline HTML as required per the example above.
+
+To keep the wrapping `p` tags for a single paragraph, use the [`.Page.RenderString`] method, setting the `display` option to `block`.
+
+If the resulting HTML is two or more paragraphs, Hugo leaves the wrapping `p` tags in place.
-[Render Hooks]: /templates/render-hooks/
[`.Page.RenderString`]: /functions/renderstring/
+
+{{% note %}}
+Although the `markdownify` function honors [markdown render hooks] when rendering markdown to HTML, use the `.Page.RenderString` method instead of `markdownify` if a render hook accesses `.Page` context. See issue [#9692] for details.
+
+[markdown render hooks]: /templates/render-hooks/
+[#9692]: https://github.com/gohugoio/hugo/issues/9692
+{{% /note %}}
---
title: Math
description: Hugo provides mathematical operators in templates.
-date: 2017-02-01
-publishdate: 2017-02-01
-lastmod: 2020-02-23
keywords: [math, operators]
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
toc:
signature: []
-workson: []
-hugoversion:
relatedfuncs: []
-deprecated: false
-draft: false
-aliases: []
---
-| Function | Description | Example |
-|--------------|-----------------------------------------------------------------------------|----------------------------------|
-| `add` | Adds two numbers. | `{{add 1 2}}` → `3` |
-| | *If one of the numbers is a float, the result is a float.* | `{{add 1.1 2}}` → `3.1` |
-| `sub` | Subtracts two numbers. | `{{sub 3 2}}` → `1` |
-| | *If one of the numbers is a float, the result is a float.* | `{{sub 3 2.5}}` → `0.5` |
-| `mul` | Multiplies two numbers. | `{{mul 2 3}}` → `6` |
-| | *If one of the numbers is a float, the result is a float.* | `{{mul 2 3.1}}` → `6.2` |
-| `div` | Divides two numbers. | `{{div 6 3}}` → `2` |
-| | | `{{div 6 4}}` → `1` |
-| | *If one of the numbers is a float, the result is a float.* | `{{div 6 4.0}}` → `1.5` |
-| `mod` | Modulus of two integers. | `{{mod 15 3}}` → `0` |
-| `modBool` | Boolean of modulus of two integers. Evaluates to `true` if result equals 0. | `{{modBool 15 3}}` → `true` |
-| `math.Ceil` | Returns the least integer value greater than or equal to the given number. | `{{math.Ceil 2.1}}` → `3` |
-| `math.Floor` | Returns the greatest integer value less than or equal to the given number. | `{{math.Floor 1.9}}` → `1` |
-| `math.Log` | Returns the natural logarithm of the given number. | `{{math.Log 42}}` → `3.737` |
-| `math.Max` | Returns the greater of two numbers. | `{{math.Max 1 2}}` → `2` |
-| `math.Min` | Returns the smaller of two numbers. | `{{math.Min 1 2}}` → `1` |
-| `math.Pow` | Returns the first number raised to the power of the second number. | `{{math.Pow 2 3}}` → `8` |
-| `math.Round` | Returns the nearest integer, rounding half away from zero. | `{{math.Round 1.5}}` → `2` |
-| `math.Sqrt` | Returns the square root of the given number. | `{{math.Sqrt 81}}` → `9` |
+| Function | Description | Example |
+|--------------|-----------------------------------------------------------------------------|-------------------------------------|
+| `add` | Adds two or more numbers. | `{{ add 12 3 2 }}` → `17` |
+| | *If one of the numbers is a float, the result is a float.* | `{{ add 1.1 2 }}` → `3.1` |
+| `sub` | Subtracts one or more numbers from the first number. | `{{ sub 12 3 2 }}` → `7` |
+| | *If one of the numbers is a float, the result is a float.* | `{{ sub 3 2.5 }}` → `0.5` |
+| `mul` | Multiplies two or more numbers. | `{{ mul 12 3 2 }}` → `72` |
+| | *If one of the numbers is a float, the result is a float.* | `{{ mul 2 3.1 }}` → `6.2` |
+| `div` | Divides the first number by one or more numbers. | `{{ div 12 3 2 }}` → `2` |
+| | *If one of the numbers is a float, the result is a float.* | `{{ div 6 4.0 }}` → `1.5` |
+| `mod` | Modulus of two integers. | `{{ mod 15 3 }}` → `0` |
+| `modBool` | Boolean of modulus of two integers. Evaluates to `true` if result equals 0. | `{{ modBool 15 3 }}` → `true` |
+| `math.Ceil` | Returns the least integer value greater than or equal to the given number. | `{{ math.Ceil 2.1 }}` → `3` |
+| `math.Floor` | Returns the greatest integer value less than or equal to the given number. | `{{ math.Floor 1.9 }}` → `1` |
+| `math.Log` | Returns the natural logarithm of the given number. | `{{ math.Log 42 }}` → `3.737` |
+| `math.Max` | Returns the greater of two or more numbers. | `{{ math.Max 12 3 2 }}` → `12` |
+| `math.Min` | Returns the smaller of two or more numbers. | `{{ math.Min 12 3 2 }}` → `2` |
+| `math.Pow` | Returns the first number raised to the power of the second number. | `{{ math.Pow 2 3 }}` → `8` |
+| `math.Round` | Returns the nearest integer, rounding half away from zero. | `{{ math.Round 1.5 }}` → `2` |
+| `math.Sqrt` | Returns the square root of the given number. | `{{ math.Sqrt 81 }}` → `9` |
---
title: md5
-linktitle: md5
description: hashes the given input and returns its MD5 checksum.
-date: 2017-02-01
-publishdate: 2017-02-01
-lastmod: 2017-02-01
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
keywords: []
signature: ["md5 INPUT"]
-workson: []
-hugoversion:
relatedfuncs: [sha]
-deprecated: false
-aliases: []
---
-```
+```go-html-template
{{ md5 "Hello world, gophers!" }}
<!-- returns the string "b3029f756f98f79e7f1b7f1d1f0dd53b" -->
```
---
title: merge
description: "Returns the result of merging two or more maps."
-date: 2019-08-08
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
keywords: [dictionary]
signature: ["collections.Merge MAP MAP...", "merge MAP MAP..."]
-workson: []
-hugoversion: "0.56.0"
relatedfuncs: [dict, append, reflect.IsMap, reflect.IsSlice]
-aliases: []
---
Returns the result of merging two or more maps from left to right. If a key already exists, `merge` updates its value. If a key is absent, `merge` inserts the value under the new key.
```
{{% note %}}
-Regardless of depth, merging only applies to maps. For slices, use [append]({{< ref "functions/append" >}}).
+Regardless of depth, merging only applies to maps. For slices, use [append](/functions/append).
{{% /note %}}
---
title: ne
-linktitle: ne
description: Returns the boolean truth of arg1 != arg2.
-date: 2017-07-26
-publishdate: 2017-07-26
-lastmod: 2017-07-26
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
keywords: [operators,logic]
signature: ["ne ARG1 ARG2"]
-workson: []
-hugoversion:
relatedfuncs: []
-deprecated: false
-aliases: []
---
-```
+```go-html-template
{{ if ne .Section "blog" }}current{{ end }}
```
---
title: now
-linktitle: now
description: Returns the current local time
-date: 2017-02-01
-publishdate: 2017-02-01
-lastmod: 2017-04-30
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
keywords: [dates,time]
signature: ["now"]
-workson: []
-hugoversion:
relatedfuncs: [Unix,dateFormat]
-deprecated: false
-aliases: []
---
See [`time.Time`](https://godoc.org/time#Time).
For example, building your site on June 24, 2017, with the following templating:
-```
+```go-html-template
<div>
- <small>© {{ now.Format "2006"}}</small>
+ <small>© {{ now.Format "2006" }}</small>
</div>
```
would produce the following:
-```
+```html
<div>
<small>© 2017</small>
</div>
---
title: os.Stat
description: Returns a FileInfo structure describing a file or directory.
-date: 2018-08-07
-publishdate: 2018-08-07
-lastmod: 2021-11-26
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
keywords: [files]
signature: ["os.Stat PATH"]
-workson: []
-hugoversion:
relatedfuncs: ['os.FileExists','os.ReadDir','os.ReadFile']
-deprecated: false
-aliases: []
---
-The `os.Stat` function attempts to resolve the path relative to the root of your project directory. If a matching file or directory is not found, it will attempt to resolve the path relative to the [`contentDir`]({{< relref "getting-started/configuration#contentdir">}}). A leading path separator (`/`) is optional.
+The `os.Stat` function attempts to resolve the path relative to the root of your project directory. If a matching file or directory is not found, it will attempt to resolve the path relative to the [`contentDir`](/getting-started/configuration#contentdir). A leading path separator (`/`) is optional.
```go-html-template
{{ $f := os.Stat "README.md" }}
keywords: ['front matter', 'params']
menu:
docs:
- parent: 'functions'
-aliases: []
+ parent: functions
---
The `.Param` method on `.Page` looks for the given `KEY` in page parameters, and returns the corresponding value. If it cannot find the `KEY` in page parameters, it looks for the `KEY` in site parameters. If it cannot find the `KEY` in either location, the `.Param` method returns `nil`.
**Content**
-{{< code-toggle file="content/about.md" fm=true copy=false >}}
-title = 'About'
+{{< code-toggle file="content/example.md" fm=true copy=false >}}
+title = 'Example'
date = 2023-01-01
draft = false
display_toc = false
**Template**
-{{< code file="layouts/_default/single.html" copy="false" >}}
+{{< code file="layouts/_default/single.html" copy=false >}}
{{ if .Param "display_toc" }}
{{ .TableOfContents }}
{{ end }}
The `.Param` method returns the value associated with the given `KEY`, regardless of whether the value is truthy or falsy. If you need to ignore falsy values, use this construct instead:
-{{< code file="layouts/_default/single.html" copy="false" >}}
+{{< code file="layouts/_default/single.html" copy=false >}}
{{ or .Params.foo site.Params.foo }}
{{< /code >}}
---
title: partialCached
-linktitle: partialCached
description: Allows for caching of partials that do not need to be re-rendered on every invocation.
-date: 2017-02-01
-publishdate: 2017-02-01
-lastmod: 2017-02-01
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
keywords: [performance]
signature: ["partialCached LAYOUT INPUT [VARIANT...]"]
-workson: []
-hugoversion:
relatedfuncs: []
-deprecated: false
-aliases: []
---
The `partialCached` template function can offer significant performance gains for complex templates that don't need to be re-rendered on every invocation.
Here is the simplest usage:
-```
+```go-html-template
{{ partialCached "footer.html" . }}
```
If you need to pass additional parameters to create unique variants, you can pass as many variant parameters as you need:
-```
+```go-html-template
{{ partialCached "footer.html" . .Params.country .Params.province }}
```
Note that the variant parameters are not made available to the underlying partial template. They are only use to create a unique cache key. Since Hugo `0.61.0` you can use any object as cache key(s), not just strings.
-
-> See also [The Full Partial Series Part 1: Caching!](https://regisphilibert.com/blog/2019/12/hugo-partial-series-part-1-caching-with-partialcached/)
+See also [The Full Partial Series Part 1: Caching!](https://regisphilibert.com/blog/2019/12/hugo-partial-series-part-1-caching-with-partialcached/).
---
title: path.Base
description: Base returns the last element of a path.
-date: 2018-11-28
-publishdate: 2018-11-28
-lastmod: 2018-11-28
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
keywords: [path, base]
signature: ["path.Base PATH"]
-workson: []
-hugoversion: "0.40"
relatedfuncs: [path.BaseName, path.Clean, path.Dir, path.Ext, path.Join, path.Split]
-deprecated: false
---
`path.Base` returns the last element of `PATH`.
**Note:** On Windows, `PATH` is converted to slash (`/`) separators.
-```
+```go-html-template
{{ path.Base "a/news.html" }} → "news.html"
{{ path.Base "news.html" }} → "news.html"
{{ path.Base "a/b/c" }} → "c"
---
title: path.BaseName
description: BaseName returns the last element of a path, removing the extension if present.
-date: 2022-06-04
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
keywords: [path, base]
signature: ["path.BaseName PATH"]
relatedfuncs: [path.Base, path.Clean, path.Dir, path.Ext, path.Join, path.Split]
-deprecated: false
---
If `PATH` is empty, `.` is returned.
---
title: path.Clean
description: Replaces path separators with slashes (`/`) and removes extraneous separators.
-date: 2021-10-08
-# publishdate: 2018-11-28
-# lastmod: 2018-11-28
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
keywords: [path, clean]
signature: ["path.Clean PATH"]
relatedfuncs: [path.Base, path.BaseName, path.Dir, path.Ext, path.Join, path.Split]
`path.Clean` replaces path separators with slashes (`/`) and removes extraneous separators, including trailing separators.
-```
+```go-html-template
{{ path.Clean "foo//bar" }} → "foo/bar"
{{ path.Clean "/foo/bar/" }} → "/foo/bar"
```
On a Windows system, if `.File.Path` is `foo\bar.md`, then:
-```
+```go-html-template
{{ path.Clean .File.Path }} → "foo/bar.md"
```
---
title: path.Dir
description: Dir returns all but the last element of a path.
-date: 2018-11-28
-publishdate: 2018-11-28
-lastmod: 2018-11-28
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
keywords: [path, dir]
signature: ["path.Dir PATH"]
-workson: []
-hugoversion: "0.40"
relatedfuncs: [path.Base, path.BaseName, path.Clean, path.Ext, path.Join, path.Split]
-deprecated: false
---
`path.Dir` returns all but the last element of `PATH`, typically `PATH`'s directory.
**Note:** On Windows, `PATH` is converted to slash (`/`) separators.
-```
+```go-html-template
{{ path.Dir "a/news.html" }} → "a"
{{ path.Dir "news.html" }} → "."
{{ path.Dir "a/b/c" }} → "a/b"
---
title: path.Ext
description: Ext returns the file name extension of a path.
-date: 2018-11-28
-publishdate: 2018-11-28
-lastmod: 2018-11-28
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
keywords: [path, ext, extension]
signature: ["path.Ext PATH"]
-workson: []
-hugoversion: "0.40"
relatedfuncs: [path.Base, path.BaseName, path.Clean, path.Dir, path.Join, path.Split]
-deprecated: false
---
`path.Ext` returns the file name extension `PATH`.
**Note:** On Windows, `PATH` is converted to slash (`/`) separators.
-```
+```go-html-template
{{ path.Ext "a/b/c/news.html" }} → ".html"
```
---
title: path.Join
description: Join path elements into a single path.
-date: 2018-11-28
-publishdate: 2018-11-28
-lastmod: 2018-11-28
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
keywords: [path, join]
signature: ["path.Join ELEMENT..."]
-workson: []
-hugoversion: "0.39"
relatedfuncs: [path.Base, path.BaseName, path.Clean, path.Dir, path.Ext, path.Split]
-deprecated: false
---
`path.Join` joins path elements into a single path, adding a separating slash if necessary.
**Note:** All path elements on Windows are converted to slash ('/') separators.
-```
+```go-html-template
{{ path.Join "partial" "news.html" }} → "partial/news.html"
{{ path.Join "partial/" "news.html" }} → "partial/news.html"
{{ path.Join "foo/baz" "bar" }} → "foo/baz/bar"
---
title: path.Split
description: Split path immediately following the final slash.
-date: 2018-11-28
-publishdate: 2018-11-28
-lastmod: 2018-11-28
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
keywords: [path, split]
signature: ["path.Split PATH"]
-workson: []
-hugoversion: "0.39"
relatedfuncs: [path.Base, path.BaseName, path.Clean, path.Dir, path.Ext, path.Join]
-deprecated: false
---
`path.Split` splits `PATH` immediately following the final slash, separating it into a directory and a base component.
**Note:** On Windows, `PATH` is converted to slash (`/`) separators.
-```
+```go-html-template
{{ $dirFile := path.Split "a/news.html" }} → $dirFile.Dir → "a/", $dirFile.File → "news.html"
{{ $dirFile := path.Split "news.html" }} → $dirFile.Dir → "", $dirFile.File → "news.html"
{{ $dirFile := path.Split "a/b/c" }} → $dirFile.Dir → "a/b/", $dirFile.File → "c"
---
title: plainify
-linktitle: plainify
description: Strips any HTML and returns the plain text version of the provided string.
-date: 2017-02-01
-publishdate: 2017-02-01
-lastmod: 2017-04-30
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
keywords: [strings]
signature: ["plainify INPUT"]
-workson: []
-hugoversion:
relatedfuncs: [jsonify]
-deprecated: false
-aliases: []
---
-```
+```go-html-template
{{ "<b>BatMan</b>" | plainify }} → "BatMan"
```
---
title: pluralize
-linktitle: pluralize
description: Pluralizes the given word according to a set of common English pluralization rules
-date: 2017-02-01
-publishdate: 2017-02-01
-lastmod: 2017-02-01
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
keywords: [strings]
signature: ["pluralize INPUT"]
-workson: []
-hugoversion:
relatedfuncs: []
-deprecated: false
-aliases: []
---
-```
+```go-html-template
{{ "cat" | pluralize }} → "cats"
```
---
title: print
-linktitle: print
description: Prints the default representation of the given arguments using the standard `fmt.Print` function.
-date: 2017-02-01
-publishdate: 2017-02-01
-lastmod: 2017-02-01
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
keywords: [strings]
signature: ["print INPUT"]
-workson: []
-hugoversion:
relatedfuncs: []
-deprecated: false
---
See [the go doc](https://golang.org/pkg/fmt/) for additional information.
-```
+```go-html-template
{{ print "foo" }} → "foo"
{{ print "foo" "bar" }} → "foobar"
{{ print (slice 1 2 3) }} → [1 2 3]
---
title: printf
-linktitle: printf
description: Formats a string using the standard `fmt.Sprintf` function.
-date: 2017-02-01
-publishdate: 2017-02-01
-lastmod: 2017-02-01
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
keywords: [strings]
signature: ["printf FORMAT INPUT"]
-workson: []
-hugoversion:
relatedfuncs: []
-deprecated: false
---
See [the go doc](https://golang.org/pkg/fmt/) for additional information.
-```
+```go-html-template
{{ i18n ( printf "combined_%s" $var ) }}
```
-```
+```go-html-template
{{ printf "formatted %.2f" 3.1416 }}
```
---
title: println
-linktitle: println
description: Prints the default representation of the given argument using the standard `fmt.Print` function and enforces a linebreak.
-date: 2017-02-01
-publishdate: 2017-02-01
-lastmod: 2017-02-01
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
keywords: [strings]
signature: ["println INPUT"]
-workson: []
-hugoversion:
relatedfuncs: []
-deprecated: false
---
See [the go doc](https://golang.org/pkg/fmt/) for additional information. `\n` denotes the linebreak but isn't printed in the templates as seen below:
-```
+```go-html-template
{{ println "foo" }} → "foo\n"
```
---
title: querify
-linktitle: querify
description: Takes a set or slice of key-value pairs and returns a query string to be appended to URLs.
-date: 2017-02-01
-publishdate: 2017-02-01
-lastmod: 2017-02-01
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
keywords: [urls]
signature: ["querify KEY VALUE [KEY VALUE]...", "querify COLLECTION"]
-hugoversion:
-deprecated: false
-workson: []
relatedfuncs: []
-aliases: []
---
`querify` takes a set or slice of key-value pairs and returns a [query string](https://en.wikipedia.org/wiki/Query_string) that can be appended to a URL.
---
title: range
-linktitle:
description: Iterates over a map, array, or slice.
-date: 2017-02-01
-publishdate: 2017-02-01
-lastmod: 2017-02-01
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
keywords: [iteration]
signature: ["range COLLECTION"]
-workson: []
-hugoversion:
relatedfuncs: []
-deprecated: false
-draft: false
-aliases: []
---
Just like in the Go programming language, Go and Hugo templates make heavy use of `range` to iterate over a map, array or slice. Other templating languages use a foreach for the equivalent functionality.
---
title: readDir
description: Returns an array of FileInfo structures sorted by filename, one element for each directory entry.
-publishdate: 2017-02-01
-lastmod: 2021-11-26
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
keywords: [files]
signature: ["os.ReadDir PATH", "readDir PATH"]
-workson: []
-hugoversion:
relatedfuncs: ['os.FileExists','os.ReadFile','os.Stat']
-deprecated: false
-aliases: []
---
The `os.ReadDir` function resolves the path relative to the root of your project directory. A leading path separator (`/`) is optional.
Details of the `FileInfo` structure are available in the [Go documentation](https://pkg.go.dev/io/fs#FileInfo).
-For more information on using `readDir` and `readFile` in your templates, see [Local File Templates]({{< relref "/templates/files" >}}).
+For more information on using `readDir` and `readFile` in your templates, see [Local File Templates](/templates/files).
---
title: readFile
description: Returns the contents of a file.
-date: 2017-02-01
-publishdate: 2017-02-01
-lastmod: 2021-11-26
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
keywords: [files]
signature: ["os.ReadFile PATH", "readFile PATH"]
-workson: []
-hugoversion:
relatedfuncs: ['os.FileExists','os.ReadDir','os.Stat']
-deprecated: false
-aliases: []
---
-The `os.ReadFile` function attempts to resolve the path relative to the root of your project directory. If a matching file is not found, it will attempt to resolve the path relative to the [`contentDir`]({{< relref "getting-started/configuration#contentdir">}}). A leading path separator (`/`) is optional.
+The `os.ReadFile` function attempts to resolve the path relative to the root of your project directory. If a matching file is not found, it will attempt to resolve the path relative to the [`contentDir`](/getting-started/configuration#contentdir). A leading path separator (`/`) is optional.
With a file named README.md in the root of your project directory:
Note that `os.ReadFile` returns raw (uninterpreted) content.
-For more information on using `readDir` and `readFile` in your templates, see [Local File Templates]({{< relref "/templates/files" >}}).
+For more information on using `readDir` and `readFile` in your templates, see [Local File Templates](/templates/files).
---
title: ref
-linktitle: ref
description: Returns the absolute permalink to a page.
-date: 2017-02-01
-publishdate: 2017-02-01
-lastmod: 2020-09-05
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
keywords: [cross references, anchors]
signature: ["ref . PAGE"]
-workson: []
-hugoversion:
relatedfuncs: [relref]
-deprecated: false
-aliases: []
---
This function takes two parameters:
---
title: reflect.IsMap
description: Reports if a value is a map.
-date: 2018-11-28
-publishdate: 2018-11-28
-lastmod: 2018-11-28
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
keywords: [reflect, reflection, kind]
signature: ["reflect.IsMap INPUT"]
-workson: []
-hugoversion: "v0.53"
relatedfuncs: [reflect.IsSlice]
-deprecated: false
---
`reflect.IsMap` reports if `VALUE` is a map. Returns a boolean.
-```
+```go-html-template
{{ reflect.IsMap (dict "key" "value") }} → true
{{ reflect.IsMap "yo" }} → false
```
---
title: reflect.IsSlice
description: Reports if a value is a slice.
-date: 2018-11-28
-publishdate: 2018-11-28
-lastmod: 2018-11-28
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
keywords: [reflect, reflection, kind]
signature: ["reflect.IsSlice INPUT"]
-workson: []
-hugoversion: "0.53"
relatedfuncs: [reflect.IsMap]
-deprecated: false
---
`reflect.IsSlice` reports if `VALUE` is a slice. Returns a boolean.
-```
+```go-html-template
{{ reflect.IsSlice (slice 1 2 3) }} → true
{{ reflect.IsSlice "yo" }} → false
```
---
title: relref
-linktitle: relref
description: Returns the relative permalink to a page.
-date: 2017-02-01
-publishdate: 2017-02-01
-lastmod: 2020-09-05
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
keywords: [cross references, anchors]
signature: ["relref . PAGE"]
-workson: []
-hugoversion:
relatedfuncs: [ref]
-deprecated: false
-aliases: []
---
This function takes two parameters:
---
title: .Render
description: Takes a view to apply when rendering content.
-date: 2017-02-01
-publishdate: 2017-02-01
-lastmod: 2017-02-01
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
keywords: [views]
signature: [".Render LAYOUT"]
-workson: []
-hugoversion:
relatedfuncs: []
-deprecated: false
-aliases: []
---
The view is an alternative layout and should be a file name that points to a template in one of the locations specified in the documentation for [Content Views](/templates/views).
This example could render a piece of content using the content view located at `/layouts/_default/summary.html`:
-```
+```go-html-template
{{ range .Pages }}
- {{ .Render "summary"}}
+ {{ .Render "summary" }}
{{ end }}
```
---
title: replace
description: Replaces all occurrences of the search string with the replacement string.
-date: 2017-02-01
-publishdate: 2017-02-01
-lastmod: 2020-09-07
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
keywords: [replace]
signature:
- "replace INPUT OLD NEW [LIMIT]"
- "strings.Replace INPUT OLD NEW [LIMIT]"
-workson: []
-hugoversion:
relatedfuncs: [replaceRE]
-deprecated: false
-aliases: []
---
Replace returns a copy of `INPUT` with all occurrences of `OLD` replaced with `NEW`.
menu:
docs:
parent: functions
-keywords: [replace regex]
+keywords: [regex]
signature:
- "replaceRE PATTERN REPLACEMENT INPUT [LIMIT]"
- "strings.ReplaceRE PATTERN REPLACEMENT INPUT [LIMIT]"
-relatedfuncs: [replace,findRE]
-aliases: []
+relatedfuncs: [findRE, FindRESubmatch, replace]
---
-By default, the `replaceRE` function replaces all matches. You can limit the number of matches with an optional LIMIT parameter.
+By default, `replaceRE` replaces all matches. You can limit the number of matches with an optional LIMIT parameter.
When specifying the regular expression, use a raw [string literal] (backticks) instead of an interpreted string literal (double quotes) to simplify the syntax. With an interpreted string literal you must escape backslashes.
-The syntax of the regular expression is the same general syntax used by Perl, Python, and other languages. More precisely, it is the syntax accepted by [RE2] except for `\C`.
+[string literal]: https://go.dev/ref/spec#String_literals
+
+This function uses the [RE2] regular expression library. See the [RE2 syntax documentation] for details. Note that the RE2 `\C` escape sequence is not supported.
+
+[RE2]: https://github.com/google/re2/
+[RE2 syntax documentation]: https://github.com/google/re2/wiki/Syntax/
+
+{{% note %}}
+The RE2 syntax is a subset of that accepted by [PCRE], roughly speaking, and with various [caveats].
+
+[caveats]: https://swtch.com/~rsc/regexp/regexp3.html#caveats
+[PCRE]: https://www.pcre.org/
+{{% /note %}}
This example replaces two or more consecutive hyphens with a single hyphen:
---
title: safeCSS
description: Declares the provided string as a known "safe" CSS string.
-date: 2017-02-01
-publishdate: 2017-02-01
-lastmod: 2017-02-26
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
keywords: [style,css,strings]
signature: ["safeCSS INPUT"]
-workson: []
-hugoversion:
relatedfuncs: [safeHTML,safeHTMLAttr,]
-deprecated: false
-aliases: []
---
In this context, *safe* means CSS content that matches any of the following:
* <span class="good">`<p style="{{ .Params.style | safeCSS }}">…</p>` → `<p style="color: red;">…</p>`</span>
* <span class="bad">`<p style="{{ .Params.style }}">…</p>` → `<p style="ZgotmplZ">…</p>`</span>
-{{% note "ZgotmplZ" %}}
+{{% note %}}
"ZgotmplZ" is a special value that indicates that unsafe content reached a CSS or URL context.
{{% /note %}}
---
title: safeHTML
-# linktitle:
description: Declares a provided string as a "safe" HTML document to avoid escaping by Go templates.
-date: 2017-02-01
-publishdate: 2017-02-01
-lastmod: 2017-02-01
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
keywords: [strings]
signature: ["safeHTML INPUT"]
-workson: []
-hugoversion:
relatedfuncs: []
-deprecated: false
---
It should not be used for HTML from a third-party, or HTML with unclosed tags or comments.
However, without the `safeHTML` function, html/template assumes `.Site.Copyright` to be unsafe and therefore escapes all HTML tags and renders the whole string as plain text:
-```
+```html
<p>© 2015 Jane Doe. <a href="https://creativecommons.org/licenses by/4.0/">Some rights reserved</a>.</p>
```
keywords: [strings]
signature: ["safeHTMLAttr INPUT"]
relatedfuncs: []
-aliases: []
---
Given a site configuration that contains this menu entry:
---
title: safeJS
-# linktitle:
description: Declares the provided string as a known safe JavaScript string.
-date: 2017-02-01
-publishdate: 2017-02-01
-lastmod: 2017-02-01
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
keywords: [strings]
signature: ["safeJS INPUT"]
-workson: []
-hugoversion:
relatedfuncs: []
-deprecated: false
-draft: false
-aliases: []
---
In this context, *safe* means the string encapsulates a known safe EcmaScript5 Expression (e.g., `(x + y * z())`).
---
title: safeURL
description: Declares the provided string as a safe URL or URL substring.
-date: 2017-02-01
-publishdate: 2017-02-01
-lastmod: 2017-02-01
keywords: [strings,urls]
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
signature: ["safeURL INPUT"]
-workson: []
-hugoversion:
relatedfuncs: []
-deprecated: false
-aliases: []
---
`safeURL` declares the provided string as a "safe" URL or URL substring (see [RFC 3986]). A URL like `javascript:checkThatFormNotEditedBeforeLeavingPage()` from a trusted source should go in the page, but by default dynamic `javascript:` URLs are filtered out since they are a frequently exploited injection vector.
The following examples use a [site `config.toml`][configuration] with the following [menu entry][menus]:
-{{< code file="config.toml" copy="false" >}}
+{{< code-toggle file="config" copy=false >}}
[[menu.main]]
- name = "IRC: #golang at freenode"
- url = "irc://irc.freenode.net/#golang"
-{{< /code >}}
+name = "IRC: #golang at freenode"
+url = "irc://irc.freenode.net/#golang"
+{{< /code-toggle >}}
The following is an example of a sidebar partial that may be used in conjunction with the preceding front matter example:
-{{< code file="layouts/partials/bad-url-sidebar-menu.html" copy="false" >}}
+{{< code file="layouts/partials/bad-url-sidebar-menu.html" copy=false >}}
<!-- This unordered list may be part of a sidebar menu -->
<ul>
{{ range .Site.Menus.main }}
- <li><a href="{{ .URL }}">{{ .Name }}</a></li>
+ <li><a href="{{ .URL }}">{{ .Name }}</a></li>
{{ end }}
</ul>
{{< /code >}}
This partial would produce the following HTML output:
-{{< output file="bad-url-sidebar-menu-output.html" >}}
+```html
<!-- This unordered list may be part of a sidebar menu -->
<ul>
- <li><a href="#ZgotmplZ">IRC: #golang at freenode</a></li>
+ <li><a href="#ZgotmplZ">IRC: #golang at freenode</a></li>
</ul>
-{{< /output >}}
+```
The odd output can be remedied by adding ` | safeURL` to our `.URL` page variable:
-{{< code file="layouts/partials/correct-url-sidebar-menu.html" copy="false" >}}
+{{< code file="layouts/partials/correct-url-sidebar-menu.html" copy=false >}}
<!-- This unordered list may be part of a sidebar menu -->
<ul>
<li><a href="{{ .URL | safeURL }}">{{ .Name }}</a></li>
With the `.URL` page variable piped through `safeURL`, we get the desired output:
-{{< output file="correct-url-sidebar-menu-output.html" >}}
+```html
<ul class="sidebar-menu">
- <li><a href="irc://irc.freenode.net/#golang">IRC: #golang at freenode</a></li>
+ <li><a href="irc://irc.freenode.net/#golang">IRC: #golang at freenode</a></li>
</ul>
-{{< /output >}}
+```
[configuration]: /getting-started/configuration/
[menus]: /content-management/menus/
---
title: .Scratch
description: Acts as a "scratchpad" to store and manipulate data.
-date: 2017-02-01
-publishdate: 2017-02-01
-lastmod: 2017-02-01
keywords: [iteration]
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
toc:
signature: []
-workson: []
-hugoversion:
relatedfuncs: []
-deprecated: false
-draft: false
aliases: [/extras/scratch/,/doc/scratch/]
---
---
title: seq
-# linktitle:
-description: Creates a sequence of integers.
-date: 2017-02-01
-publishdate: 2017-02-01
-lastmod: 2017-02-01
+description: Returns a slice of integers.
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
keywords: []
signature: ["seq LAST", "seq FIRST LAST", "seq FIRST INCREMENT LAST"]
-workson: []
-hugoversion:
relatedfuncs: []
-deprecated: false
-draft: false
-aliases: []
---
-It's named and used in the model of [GNU's seq].
-
-```
-3 → 1, 2, 3
-1 2 4 → 1, 3
--3 → -1, -2, -3
-1 4 → 1, 2, 3, 4
-1 -2 → 1, 0, -1, -2
+```go-html-template
+{{ seq 2 }} → [1 2]
+{{ seq 0 2 }} → [0 1 2]
+{{ seq -2 2 }} → [-2 -1 0 1 2]
+{{ seq -2 2 2 }} → [-2 0 2]
```
-## Example: `seq` with `range` and `after`
-
-You can use `seq` in combination with `range` and `after`. The following will return 19 elements:
+Iterate over a sequence of integers:
-```
-{{ range after 1 (seq 20)}}
+```go-html-template
+{{ $product := 1 }}
+{{ range seq 4 }}
+ {{ $product = mul $product . }}
{{ end }}
+{{ $product }} → 24
```
-
-However, when ranging with an index, the following may be less confusing in that `$indexStartingAt1` and `$num` will return `1,2,3 ... 20`:
-
-```
-{{ range $index, $num := (seq 20) }}
-$indexStartingAt1 := (add $index 1)
-{{ end }}
-```
-
-
-[GNU's seq]: https://www.gnu.org/software/coreutils/manual/html_node/seq-invocation.html#seq-invocation
---
title: sha
-# linktitle: sha
description: Hashes the given input and returns either an SHA1 or SHA256 checksum.
-date: 2017-02-01
-publishdate: 2017-02-01
-lastmod: 2017-02-01
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
keywords: [sha,checksum]
signature: ["sha1 INPUT", "sha256 INPUT"]
-workson: []
-hugoversion:
relatedfuncs: [md5]
-deprecated: false
aliases: [sha1, sha256]
---
`sha1` hashes the given input and returns its SHA1 checksum.
-```
+```go-html-template
{{ sha1 "Hello world, gophers!" }}
<!-- returns the string "c8b5b0e33d408246e30f53e32b8f7627a7a649d4" -->
```
`sha256` hashes the given input and returns its SHA256 checksum.
-```
+```go-html-template
{{ sha256 "Hello world, gophers!" }}
<!-- returns the string "6ec43b78da9669f50e4e422575c54bf87536954ccd58280219c393f2ce352b46" -->
```
---
title: shuffle
-# linktitle:
description: Returns a random permutation of a given array or slice.
-date: 2017-02-01
-publishdate: 2017-02-01
-lastmod: 2017-04-30
keywords: [ordering]
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
signature: ["shuffle COLLECTION"]
-workson: []
-hugoversion:
relatedfuncs: [seq]
-deprecated: false
-draft: false
-aliases: []
---
-{{< code file="shuffle-input.html" >}}
-<!-- Shuffled sequence = -->
-<div>{{ shuffle (seq 1 5) }}</div>
-<!-- Shuffled slice = -->
-<div>{{ shuffle (slice "foo" "bar" "buzz") }}</div>
-{{< /code >}}
-This example would return the following:
+```go-html-template
+{{ shuffle (seq 1 2 3) }} → [3 1 2]
+{{ shuffle (slice "a" "b" "c") }} → [b a c]
+```
-{{< output file="shuffle-output.html" >}}
-<!-- Shuffled sequence = -->
-<div>2 5 3 1 4</div>
-<!-- Shuffled slice = -->
-<div>buzz foo bar</div>
-{{< /output >}}
-
-This example also makes use of the [slice](/functions/slice/) and [seq](/functions/seq/) functions.
+The result will vary from one build to the next.
---
title: singularize
-# linktitle: singularize
description: Converts a word according to a set of common English singularization rules.
-date: 2017-02-01
-publishdate: 2017-02-01
-lastmod: 2017-02-01
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
keywords: [strings,singular]
signature: ["singularize INPUT"]
-workson: []
-hugoversion:
relatedfuncs: []
-deprecated: false
-aliases: []
---
`{{ "cats" | singularize }}` → "cat"
---
title: site
-linktitle: site
description: The `site` function provides global access to the same data as the `.Site` page method.
-date: 2021-02-11
-publishdate: 2021-02-11
-lastmod: 2021-02-11
keywords: []
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
toc:
signature: ["site"]
-workson: []
-hugoversion:
relatedfuncs: ["hugo"]
-deprecated: false
-draft: false
-aliases: []
---
-`site` is a global function which returns the same data as the `.Site` page method. See: [Site Variables]({{< relref "/variables/site" >}}).
+`site` is a global function which returns the same data as the `.Site` page method. See: [Site Variables](/variables/site).
---
title: slice
-# linktitle: slice
description: Creates a slice (array) of all passed arguments.
-date: 2017-02-01
-publishdate: 2017-02-01
-lastmod: 2017-02-01
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
keywords: [slice, array, interface]
signature: ["slice ITEM..."]
-workson: []
-hugoversion:
relatedfuncs: []
-deprecated: false
-draft: false
-aliases: []
-toc: false
---
One use case is the concatenation of elements in combination with the [`delimit` function]:
---
title: slicestr
-# linktitle:
description: Creates a slice of a half-open range, including start and end indices.
-date: 2017-02-01
-publishdate: 2017-02-01
-lastmod: 2017-02-01
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
keywords: [strings]
signature:
- "slicestr STRING START [END]"
- "strings.SliceString STRING START [END]"
-workson: []
-hugoversion:
relatedfuncs: []
-deprecated: false
-aliases: []
---
For example, 1 and 4 creates a slice including elements 1 through 3.
The `end` index can be omitted; it defaults to the string's length.
-* `{{slicestr "BatMan" 3}}` → "Man"
-* `{{slicestr "BatMan" 0 3}}` → "Bat"
+* `{{ slicestr "BatMan" 3 }}` → "Man"
+* `{{ slicestr "BatMan" 0 3 }}` → "Bat"
---
title: sort
-# linktitle: sort
-description: Sorts maps, arrays, and slices and returns a sorted slice.
-date: 2017-02-01
-publishdate: 2017-02-01
-lastmod: 2017-02-01
+description: Sorts slices, maps, and page collections.
categories: [functions]
+signature: ["sort COLLECTION [KEY] [ORDER]"]
menu:
docs:
- parent: "functions"
+ parent: functions
keywords: [ordering,sorting,lists]
-signature: []
-workson: [lists,taxonomies,terms,groups]
-hugoversion:
-relatedfuncs: []
-deprecated: false
-aliases: []
+toc: true
---
-A sorted array of map values will be returned with the keys eliminated. There are two optional arguments: `sortByField` and `sortAsc`. If left blank, sort will sort by keys (for maps) in ascending order as its default behavior.
+The `KEY` is optional when sorting slices in ascending order, otherwise it is required. When sorting slices, use the literal `value` in place of the `KEY`. See examples below.
-```
----
-tags: ["tag3", "tag1", "tag2"]
----
+The `ORDER` may be either `asc` (ascending) or `desc` (descending). The default sort order is ascending.
+
+## Sort a slice
+
+The examples below assume this site configuration:
+
+{{< code-toggle file="config" copy=false >}}
+[params]
+grades = ['b','a','c']
+{{< /code-toggle >}}
+
+### Ascending order {#slice-ascending-order}
+
+Sort slice elements in ascending order using either of these constructs:
+
+{{< code file="layouts/_default/single.html" copy=false >}}
+{{ sort site.Params.grades }} → [a b c]
+{{ sort site.Params.grades "value" "asc" }} → [a b c]
+{{< /code >}}
+
+In the examples above, `value` is the `KEY` representing the value of the slice element.
+
+### Descending order {#slice-descending-order}
+
+Sort slice elements in descending order:
+
+{{< code file="layouts/_default/single.html" copy=false >}}
+{{ sort site.Params.grades "value" "desc" }} → [c b a]
+{{< /code >}}
+
+In the example above, `value` is the `KEY` representing the value of the slice element.
-// Site config
-+++
-[params.authors]
- [params.authors.Joe]
- firstName = "Joe"
- lastName = "Bergevin"
- [params.authors.Derek]
- firstName = "Derek"
- lastName = "Perkins"
- [params.authors.Tanner]
- firstName = "Tanner"
- lastName = "Linsley"
-+++
+## Sort a map
+
+The examples below assume this site configuration:
+
+{{< code-toggle file="config" copy=false >}}
+[params.authors.a]
+firstName = "Marius"
+lastName = "Pontmercy"
+[params.authors.b]
+firstName = "Victor"
+lastName = "Hugo"
+[params.authors.c]
+firstName = "Jean"
+lastName = "Valjean"
+{{< /code-toggle >}}
+
+{{% note %}}
+When sorting maps, the `KEY` argument must be lowercase.
+{{% /note %}}
+
+### Ascending order {#map-ascending-order}
+
+Sort map objects in ascending order using either of these constructs:
+
+{{< code file="layouts/_default/single.html" copy=false >}}
+{{ range sort site.Params.authors "firstname" }}
+ {{ .firstName }}
+{{ end }}
+
+{{ range sort site.Params.authors "firstname" "asc" }}
+ {{ .firstName }}
+{{ end }}
+{{< /code >}}
+
+These produce:
+
+```text
+Jean Marius Victor
```
+### Descending order {#map-descending-order}
+
+Sort map objects in descending order:
+
+{{< code file="layouts/_default/single.html" copy=false >}}
+{{ range sort site.Params.authors "firstname" "desc" }}
+ {{ .firstName }}
+{{ end }}
+{{< /code >}}
+
+This produces:
+
+```text
+Victor Marius Jean
```
-// Sort by value, ascending (default for lists)
-Tags: {{ range sort .Params.tags }}{{ . }} {{ end }}
-→ Outputs Tags: tag1 tag2 tag3
+## Sort a page collection
-// Sort by value, descending
-Tags: {{ range sort .Params.tags "value" "desc" }}{{ . }} {{ end }}
+Although you can use the `sort` function to sort a page collection, Hugo provides [built-in methods for sorting page collections] by:
-→ Outputs Tags: tag3 tag2 tag1
+- weight
+- linktitle
+- title
+- front matter parameter
+- date
+- expiration date
+- last modified date
+- publish date
+- length
-// Sort by key, ascending (default for maps)
-Authors: {{ range sort .Site.Params.authors }}{{ .firstName }} {{ end }}
+In this contrived example, sort the site's regular pages by `.Type` in descending order:
-→ Outputs Authors: Derek Joe Tanner
+{{< code file="layouts/_default/home.html" copy=false >}}
+{{ range sort site.RegularPages "Type" "desc" }}
+ <h2><a href="{{ .RelPermalink }}">{{ .Title }}</a></h2>
+{{ end }}
+{{< /code >}}
-// Sort by field, descending
-Authors: {{ range sort .Site.Params.authors "lastName" "desc" }}{{ .lastName }} {{ end }}
-→ Outputs Authors: Perkins Linsley Bergevin
-```
+[built-in methods for sorting page collections]: /templates/lists/#order-content
---
title: split
description: Returns a slice of strings by splitting STRING by DELIM.
-date: 2017-02-01
-publishdate: 2017-02-01
-lastmod: 2022-11-06
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
keywords: [strings]
signature: ["split STRING DELIM"]
-workson: []
-hugoversion:
relatedfuncs: []
-deprecated: false
-aliases: []
---
Examples:
{{% note %}}
-`split` essentially does the opposite of [delimit]({{< ref "functions/delimit" >}}). While `split` creates a slice from a string, `delimit` creates a string from a slice.
+`split` essentially does the opposite of [delimit](/functions/delimit). While `split` creates a slice from a string, `delimit` creates a string from a slice.
{{% /note %}}
--- /dev/null
+---
+title: .Store
+description: Returns a Scratch that is not reset on server rebuilds.
+categories: [functions]
+menu:
+ docs:
+ parent: functions
+keywords: [scratch]
+signature: []
+---
+
+The `.Store` method on `.Page` returns a [Scratch] to store and manipulate data. In contrast to the `.Scratch` method, this Scratch is not reset on server rebuilds.
+
+[Scratch]: /functions/scratch/
+
+### Methods
+
+#### .Set
+
+Sets the value of a given key.
+
+```go-html-template
+{{ .Store.Set "greeting" "Hello" }}
+```
+
+#### .Get
+
+Gets the value of a given key.
+
+```go-html-template
+{{ .Store.Set "greeting" "Hello" }}
+
+{{ .Store.Get "greeting" }} → Hello
+```
+
+#### .Add
+
+Adds a given value to existing value(s) of the given key.
+
+For single values, `Add` accepts values that support Go's `+` operator. If the first `Add` for a key is an array or slice, the following adds will be appended to that list.
+
+```go-html-template
+{{ .Store.Add "greetings" "Hello" }}
+{{ .Store.Add "greetings" "Welcome" }}
+
+{{ .Store.Get "greetings" }} → HelloWelcome
+```
+
+```go-html-template
+{{ .Store.Add "total" 3 }}
+{{ .Store.Add "total" 7 }}
+
+{{ .Store.Get "total" }} → 10
+```
+
+```go-html-template
+{{ .Store.Add "greetings" (slice "Hello") }}
+{{ .Store.Add "greetings" (slice "Welcome" "Cheers") }}
+
+{{ .Store.Get "greetings" }} → []interface {}{"Hello", "Welcome", "Cheers"}
+```
+
+#### .SetInMap
+
+Takes a `key`, `mapKey` and `value` and adds a map of `mapKey` and `value` to the given `key`.
+
+```go-html-template
+{{ .Store.SetInMap "greetings" "english" "Hello" }}
+{{ .Store.SetInMap "greetings" "french" "Bonjour" }}
+
+{{ .Store.Get "greetings" }} → map[french:Bonjour english:Hello]
+```
+
+#### .DeleteInMap
+
+Takes a `key` and `mapKey` and removes the map of `mapKey` from the given `key`.
+
+```go-html-template
+{{ .Store.SetInMap "greetings" "english" "Hello" }}
+{{ .Store.SetInMap "greetings" "french" "Bonjour" }}
+{{ .Store.DeleteInMap "greetings" "english" }}
+
+{{ .Store.Get "greetings" }} → map[french:Bonjour]
+```
+
+#### .GetSortedMapValues
+
+Returns an array of values from `key` sorted by `mapKey`.
+
+```go-html-template
+{{ .Store.SetInMap "greetings" "english" "Hello" }}
+{{ .Store.SetInMap "greetings" "french" "Bonjour" }}
+
+{{ .Store.GetSortedMapValues "greetings" }} → [Hello Bonjour]
+```
+
+#### .Delete
+
+Removes the given key.
+
+```go-html-template
+{{ .Store.Set "greeting" "Hello" }}
+
+{{ .Store.Delete "greeting" }}
+```
---
title: string
-# linktitle: string
-description: Creates a string from the argument passed to the function
-date: 2017-02-01
-publishdate: 2017-02-01
-lastmod: 2017-02-01
+description: Cast a value to a string.
categories: [functions]
menu:
docs:
- parent: "functions"
-keywords: [strings]
+ parent: functions
+keywords: [cast,strings]
signature: ["string INPUT"]
-workson: []
-hugoversion:
relatedfuncs: []
-deprecated: false
-aliases: []
---
-* `{{string "BatMan"}}` → "BatMan"
+With a decimal (base 10) input:
+
+```go-html-template
+{{ string 11 }} → 11 (string)
+{{ string "11" }} → 11 (string)
+
+{{ string 11.1 }} → 11.1 (string)
+{{ string "11.1" }} → 11.1 (string)
+
+{{ string 11.9 }} → 11.9 (string)
+{{ string "11.9" }} → 11.9 (string)
+```
+
+With a binary (base 2) input:
+
+```go-html-template
+{{ string 0b11 }} → 3 (string)
+{{ string "0b11" }} → 0b11 (string)
+```
+
+With an octal (base 8) input (use either notation):
+
+```go-html-template
+{{ string 011 }} → 9 (string)
+{{ string "011" }} → 011 (string)
+
+{{ string 0o11 }} → 9 (string)
+{{ string "0o11" }} → 0o11 (string)
+```
+
+With a hexadecimal (base 16) input:
+
+```go-html-template
+{{ string 0x11 }} → 17 (string)
+{{ string "0x11" }} → 0x11 (string)
+```
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
keywords: [string strings substring contains]
signature: ["strings.Contains STRING SUBSTRING"]
-aliases: []
relatedfuncs: [strings.ContainsAny]
---
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
keywords: [string strings substring contains any]
signature: ["strings.ContainsAny STRING CHARACTERS"]
-aliases: []
relatedfuncs: [strings.Contains]
---
---
title: strings.Count
description: Returns the number of non-overlapping instances of a substring within a string.
-date: 2020-09-07
-publishdate: 2020-09-07
-lastmod: 2020-09-07
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
keywords: [count, counting, character count]
signature: ["strings.Count SUBSTR STRING"]
-workson: []
-hugoversion:
relatedfuncs: []
-deprecated: false
-aliases: []
---
If `SUBSTR` is an empty string, this function returns 1 plus the number of Unicode code points in `STRING`.
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
keywords: [strings capitalize uppercase first]
signature: ["strings.FirstUpper STRING"]
-hugoversion:
-aliases: []
---
{{ strings.FirstUpper "foo" }} → "Foo"
--- /dev/null
+---
+title: strings.HasPrefix
+description: Tests whether a string begins with prefix.
+categories: [functions]
+menu:
+ docs:
+ parent: functions
+keywords: [strings]
+signature: ["hasPrefix STRING PREFIX","strings.HasPrefix STRING PREFIX"]
+relatedfuncs: [hasSuffix]
+aliases: [/functions/hasprefix/]
+---
+
+```go-html-template
+{{ hasPrefix "Hugo" "Hu" }} → true
+```
---
title: strings.HasSuffix
-description: Determine whether a given string ends with the provided trailing suffix string.
-date: 2019-08-13
-publishdate: 2019-08-13
-lastmod: 2019-08-13
+description: Tests whether a string ends with suffix.
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
keywords: [strings]
-signature: ["strings.HasSuffix STRING SUFFIX"]
-workson: []
-hugoversion:
+signature: ["hasSuffix STRING SUFFIX","strings.HasSuffix STRING SUFFIX"]
relatedfuncs: [hasPrefix]
-deprecated: false
-aliases: []
+aliases: [/functions/hassuffix/]
---
- {{ $pdfPath := "/path/to/some.pdf" }}
- {{ strings.HasSuffix $pdfPath "pdf" }} → true
- {{ strings.HasSuffix $pdfPath "txt" }} → false
+```go-html-template
+{{ hasSuffix "Hugo" "go" }} → true
+```
---
title: strings.Repeat
-# linktitle:
description: Returns INPUT repeated COUNT times.
-date: 2018-05-31
-publishdate: 2018-05-31
-lastmod: 2018-05-31
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
keywords: [strings]
signature: ["strings.Repeat COUNT INPUT"]
-workson: []
-hugoversion:
relatedfuncs: []
-deprecated: false
---
-```
+```go-html-template
{{ strings.Repeat 3 "yo" }} → "yoyoyo"
{{ "yo" | strings.Repeat 3 }} → "yoyoyo"
```
---
title: strings.RuneCount
description: Determines the number of runes in a string.
-date: 2018-06-01
-publishdate: 2018-06-01
-lastmod: 2018-06-01
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
keywords: [counting, character count, length, rune length, rune count]
signature: ["strings.RuneCount INPUT"]
-workson: []
-hugoversion:
relatedfuncs: ["len", "countrunes"]
-deprecated: false
-aliases: []
---
In contrast with `strings.CountRunes` function, which strips HTML and whitespace before counting runes, `strings.RuneCount` simply counts all the runes in a string. It relies on the Go [`utf8.RuneCountInString`] function.
-```
+```go-html-template
{{ "Hello, 世界" | strings.RuneCount }}
<!-- outputs a content length of 9 runes. -->
```
---
title: strings.TrimLeft
description: Returns a slice of a given string with all leading characters contained in the cutset removed.
-date: 2017-02-01
-publishdate: 2017-02-01
-lastmod: 2017-02-01
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
keywords: [strings]
signature: ["strings.TrimLeft CUTSET STRING"]
-workson: []
-hugoversion:
relatedfuncs: [strings.TrimRight]
-deprecated: false
-aliases: []
---
Given the string `"abba"`, leading `"a"`'s can be removed a follows:
---
title: strings.TrimPrefix
description: Returns a given string s without the provided leading prefix string. If s doesn't start with prefix, s is returned unchanged.
-date: 2017-02-01
-publishdate: 2017-02-01
-lastmod: 2017-02-01
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
keywords: [strings]
signature: ["strings.TrimPrefix PREFIX STRING"]
-workson: []
-hugoversion:
relatedfuncs: [strings.TrimSuffix]
-deprecated: false
-aliases: []
---
Given the string `"aabbaa"`, the specified prefix is only removed if `"aabbaa"` starts with it:
---
title: strings.TrimRight
description: Returns a slice of a given string with all trailing characters contained in the cutset removed.
-date: 2017-02-01
-publishdate: 2017-02-01
-lastmod: 2017-02-01
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
keywords: [strings]
signature: ["strings.TrimRight CUTSET STRING"]
-workson: []
-hugoversion:
relatedfuncs: [strings.TrimRight]
-deprecated: false
-aliases: []
---
Given the string `"abba"`, trailing `"a"`'s can be removed a follows:
---
title: strings.TrimSuffix
description: Returns a given string s without the provided trailing suffix string. If s doesn't end with suffix, s is returned unchanged.
-date: 2017-02-01
-publishdate: 2017-02-01
-lastmod: 2017-02-01
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
keywords: [strings]
signature: ["strings.TrimSuffix SUFFIX STRING"]
-workson: []
-hugoversion:
relatedfuncs: [strings.TrimPrefix]
-deprecated: false
-aliases: []
---
Given the string `"aabbaa"`, the specified suffix is only removed if `"aabbaa"` ends with it:
---
title: substr
-# linktitle:
description: Extracts parts of a string from a specified character's position and returns the specified number of characters.
-date: 2017-02-01
-publishdate: 2017-02-01
-lastmod: 2017-02-01
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
keywords: [strings]
-aliases: []
signature:
- "substr STRING START [LENGTH]"
- "strings.Substr STRING START [LENGTH]"
-workson: []
-hugoversion:
relatedfuncs: []
-deprecated: false
---
It normally takes two parameters: `start` and `length`. It can also take one parameter: `start`, i.e. `length` is omitted, in which case the substring starting from start until the end of the string will be returned.
If `length` is given and is negative, that number of characters will be omitted from the end of string.
-```
+```go-html-template
{{ substr "abcdef" 0 }} → "abcdef"
{{ substr "abcdef" 1 }} → "bcdef"
---
-title: "symdiff"
+title: symdiff
description: "`collections.SymDiff` (alias `symdiff`) returns the symmetric difference of two collections."
-date: 2018-11-07
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
keywords: [collections,intersect,union,complement]
signature: ["COLLECTION | symdiff COLLECTION" ]
-hugoversion: "0.51"
-aliases: []
---
Example:
---
title: templates.Exists
-linktitle: ""
description: "Checks whether a template file exists under the given path relative to the `layouts` directory."
-date: 2018-11-01
-publishdate: 2018-11-01
-lastmod: 2018-11-01
categories: [functions]
tags: []
menu:
docs:
- parent: "functions"
+ parent: functions
ns: ""
keywords: ["templates", "template", "layouts"]
signature: ["templates.Exists PATH"]
-workson: []
-hugoversion: "0.46"
-aliases: []
relatedfuncs: []
-toc: false
-deprecated: false
---
A template file is any file living below the `layouts` directories of either the project or any of its theme components including partials and shortcodes.
{{ else }}
{{ partial "headers/default.html" . }}
{{ end }}
-
```
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
keywords: [time parse duration]
signature: ["time.ParseDuration DURATION"]
-hugoversion:
-aliases: []
---
`time.ParseDuration` parses a duration string into a [`time.Duration`](https://pkg.go.dev/time#Duration) structure so you can access its fields.
---
title: time
-linktitle:
description: Converts a timestamp string into a `time.Time` structure.
-date: 2017-02-01
-publishdate: 2017-02-01
-lastmod: 2017-02-01
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
keywords: [dates,time,location]
signature: ["time INPUT [TIMEZONE]"]
-workson: []
-hugoversion: "v0.77.0"
relatedfuncs: []
-deprecated: false
-aliases: []
---
`time` converts a timestamp string with an optional default location into a [`time.Time`](https://godoc.org/time#Time) structure so you can access its fields:
-```
+```go-html-template
{{ time "2016-05-28" }} → "2016-05-28T00:00:00Z"
{{ (time "2016-05-28").YearDay }} → 149
{{ mul 1000 (time "2016-05-28T10:30:00.00+10:00").Unix }} → 1464395400000, or Unix time in milliseconds
If no `TIMEZONE` is set, the `timeZone` from site configuration will be used.
-```
+```go-html-template
{{ time "2020-10-20" }} → 2020-10-20 00:00:00 +0000 UTC
{{ time "2020-10-20" "America/Los_Angeles" }} → 2020-10-20 00:00:00 -0700 PDT
{{ time "2020-01-20" "America/Los_Angeles" }} → 2020-01-20 00:00:00 -0800 PST
The following example may be useful when setting up [multilingual sites][multilingual]:
{{< code file="unix-to-month-integer.html" >}}
-{{$time := time (int .Params.addDate)}}
+{{ $time := time (int .Params.addDate)}}
=> $time = 1489276800
-{{$time.Month}}
+{{ $time.Month }}
=> "March"
-{{$monthindex := printf "%d" $time.Month }}
+{{ $monthindex := printf "%d" $time.Month }}
=> $monthindex = 3
{{< /code >}}
---
title: title
-# linktitle:
-description: Converts all characters in the provided string to title case.
-date: 2017-02-01
-publishdate: 2017-02-01
-lastmod: 2017-02-01
+description: Converts the provided string to title case.
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
keywords: [strings]
signature:
- - "title INPUT"
- - "strings.Title INPUT"
-workson: []
-hugoversion:
+ - "title STRING"
+ - "strings.Title STRING"
relatedfuncs: []
-deprecated: false
-aliases: []
---
-
-```
-{{title "BatMan"}}` → "Batman"
-```
-
-Can be combined in pipes. In the following snippet, the link text is cleaned up using `humanize` to remove dashes and `title` to convert the value of `$name` to Initial Caps.
-
-```
-{{ range $name, $items := .Site.Taxonomies.categories }}
- <li><a href="{{ printf "%s/%s" "categories" ($name | urlize | lower) | absURL }}">{{ $name | humanize | title }} ({{ len $items }})</a></li>
-{{ end }}
+```go-html-template
+{{ title "table of contents (TOC)" }} → "Table of Contents (TOC)"
```
-## Configure Title Case
+By default, Hugo adheres to the capitalization rules in the [Associated Press (AP) Stylebook]. Change your [site configuration] if you would prefer to follow the [Chicago Manual of Style], or to use Go's convention of capitalizing every word.
-The default is AP Stylebook, but you can [configure it](/getting-started/configuration/#configure-title-case).
+[Associated Press (AP) Stylebook]: https://www.apstylebook.com/
+[Chicago Manual of Style]: https://www.chicagomanualofstyle.org/home.html
+[site configuration]: /getting-started/configuration/#configure-title-case
---
-title: "transform.Unmarshal"
+title: transform.Unmarshal
description: "`transform.Unmarshal` (alias `unmarshal`) parses the input and converts it into a map or an array. Supported formats are JSON, TOML, YAML, XML and CSV."
-date: 2018-12-23
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
keywords: []
signature: ["RESOURCE or STRING | transform.Unmarshal [OPTIONS]"]
-hugoversion: "0.53"
-aliases: []
---
The function accepts either a `Resource` created in [Hugo Pipes](/hugo-pipes/) or via [Page Bundles](/content-management/page-bundles/), or simply a string. The two examples below will produce the same map:
To get the contents of `<title>` in the document below, you use `{{ .message.title }}`:
-```
+```xml
<root>
<message>
<title>Hugo rocks!</title>
The following example lists the items of an RSS feed:
-```
+```go-html-template
{{ with resources.Get "https://example.com/rss.xml" | transform.Unmarshal }}
{{ range .channel.item }}
<strong>{{ .title | plainify | htmlUnescape }}</strong><br />
---
title: trim
-# linktitle:
description: Returns a slice of a passed string with all leading and trailing characters from cutset removed.
-date: 2017-02-01
-publishdate: 2017-02-01
-lastmod: 2017-02-01
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
keywords: [strings]
signature:
- "trim INPUT CUTSET"
- "strings.Trim INPUT CUTSET"
-workson: []
-hugoversion:
relatedfuncs: []
-deprecated: false
---
-```
+```go-html-template
{{ trim "++Batman--" "+-" }} → "Batman"
```
`trim` *requires* the second argument, which tells the function specifically what to remove from the first argument. There is no default value for the second argument, so **the following usage will not work**:
-```
-{{ trim .Inner}}
+```go-html-template
+{{ trim .Inner }}
```
Instead, the following example tells `trim` to remove extra new lines from the content contained in the [shortcode `.Inner` variable][shortcodevars]:
-```
+```go-html-template
{{ trim .Inner "\n" }}
```
---
title: truncate
-# linktitle: truncate
description: Truncates a text to a max length without cutting words or leaving unclosed HTML tags.
-date: 2017-02-01
-publishdate: 2017-02-01
-lastmod: 2017-02-01
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
keywords: [strings]
signature:
- "truncate SIZE [ELLIPSIS] INPUT"
- "strings.Truncate SIZE [ELLIPSIS] INPUT"
-workson: []
-hugoversion: 19
relatedfuncs: []
-deprecated: false
---
Since Go templates are HTML-aware, `truncate` will intelligently handle normal strings vs HTML strings:
-```
+```go-html-template
{{ "<em>Keep my HTML</em>" | safeHTML | truncate 10 }}` → <em>Keep my …</em>`
```
---
title: union
-# linktitle: union
description: Given two arrays or slices, returns a new array that contains the elements or objects that belong to either or both arrays/slices.
-date: 2017-02-01
-publishdate: 2017-02-01
-lastmod: 2017-03-12
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
keywords: [collections,intersect,union,complement]
signature: ["union SET1 SET2"]
-workson: []
-hugoversion: 0.20
relatedfuncs: [intersect,where]
-deprecated: false
-aliases: []
---
Given two arrays (or slices) A and B, this function will return a new array that contains the elements or objects that belong to either A or to B or to both. The elements supported are strings, integers, and floats (only float64).
-```
+```go-html-template
{{ union (slice 1 2 3) (slice 3 4 5) }}
<!-- returns [1 2 3 4 5] -->
This is also very useful to use as `OR` filters when combined with where:
-```
+```go-html-template
{{ $pages := where .Site.RegularPages "Type" "not in" (slice "page" "about") }}
{{ $pages = $pages | union (where .Site.RegularPages "Params.pinned" true) }}
{{ $pages = $pages | intersect (where .Site.RegularPages "Params.images" "!=" nil) }}
---
title: uniq
-linktitle: uniq
description: Takes in a slice or array and returns a slice with duplicate elements removed.
categories: [functions]
menu:
parent: functions
keywords: [multilingual,i18n,urls]
signature: [uniq SET]
-aliases: []
---
-```
+```go-html-template
{{ slice 1 3 2 1 | uniq }} --> [1 3 2]
-
```
---
title: .Unix
description: Converts a time.Time value to the number of seconds elapsed since the Unix epoch, excluding leap seconds. The Unix epoch is 00:00:00 UTC on 1 January 1970.
-date: 2017-02-01
keywords: [dates,time]
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
signature: [".Unix",".UnixMilli",".UnixMicro",".UnixNano"]
relatedfuncs: [Format,dateFormat,now,time]
---
---
title: upper
-# linktitle: upper
description: Converts all characters in a string to uppercase
-date: 2017-02-01
-publishdate: 2017-02-01
-lastmod: 2017-02-01
keywords: []
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
toc:
signature:
- "upper INPUT"
- "strings.ToUpper INPUT"
-workson: []
-hugoversion:
relatedfuncs: []
-deprecated: false
-draft: false
-aliases: []
---
Note that `upper` can be applied in your templates in more than one way:
---
title: urlize
-# linktitle: urlize
description: Takes a string, sanitizes it for usage in URLs, and converts spaces to hyphens.
-date: 2017-02-01
-publishdate: 2017-02-01
-lastmod: 2017-02-01
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
keywords: [urls,strings]
signature: ["urlize INPUT"]
-hugoversion:
-deprecated: false
-workson: []
relatedfuncs: []
---
The following examples pull from a content file with the following front matter:
-{{< code file="content/blog/greatest-city.md" copy="false">}}
-+++
+{{< code-toggle file="content/blog/greatest-city.md" fm=true copy=false >}}
title = "The World's Greatest City"
location = "Chicago IL"
tags = ["pizza","beer","hot dogs"]
-+++
-{{< /code >}}
+{{< /code-toggle >}}
The following might be used as a partial within a [single page template][singletemplate]:
-{{< code file="layouts/partials/content-header.html" download="content-header.html" >}}
+{{< code file="layouts/partials/content-header.html" >}}
<header>
- <h1>{{.Title}}</h1>
+ <h1>{{ .Title }}</h1>
{{ with .Params.location }}
- <div><a href="/locations/{{ . | urlize}}">{{.}}</a></div>
+ <div><a href="/locations/{{ . | urlize }}">{{ . }}</a></div>
{{ end }}
<!-- Creates a list of tags for the content and links to each of their pages -->
{{ with .Params.tags }}
<ul>
- {{range .}}
+ {{ range .}}
<li>
<a href="/tags/{{ . | urlize }}">{{ . }}</a>
</li>
- {{end}}
+ {{ end }}
</ul>
{{ end }}
</header>
{{< /code >}}
-The preceding partial would then output to the rendered page as follows, assuming the page is being built with Hugo's default pretty URLs.
+The preceding partial would then output to the rendered page as follows:
-{{< output file="/blog/greatest-city/index.html" >}}
+```html
<header>
- <h1>The World's Greatest City</h1>
- <div><a href="/locations/chicago-il">Chicago IL</a></div>
- <ul>
- <li>
- <a href="/tags/pizza">pizza</a>
- </li>
- <li>
- <a href="/tags/beer">beer</a>
- </li>
- <li>
- <a href="/tags/hot-dogs">hot dogs</a>
- </li>
- </ul>
+ <h1>The World's Greatest City</h1>
+ <div><a href="/locations/chicago-il">Chicago IL</a></div>
+ <ul>
+ <li>
+ <a href="/tags/pizza">pizza</a>
+ </li>
+ <li>
+ <a href="/tags/beer">beer</a>
+ </li>
+ <li>
+ <a href="/tags/hot-dogs">hot dogs</a>
+ </li>
+ </ul>
</header>
-{{< /output >}}
+```
[singletemplate]: /templates/single-page-templates/
---
title: urlquery
-linktitle: urlquery
description: Returns the escaped value of the textual representation of its arguments in a form suitable for embedding in a URL query.
-date: 2022-01-18
-publishdate: 2022-01-18
-lastmod: 2022-01-18
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
keywords: [urls]
signature: ["urlquery INPUT [INPUT]..."]
-hugoversion:
-deprecated: false
-workson: []
relatedfuncs: []
-aliases: []
---
---
title: urls.Parse
-description: Parse parses a given URL, which may be relative or absolute, into a URL structure.
-date: 2017-09-25
-publishdate: 2017-09-25
-lastmod: 2017-09-25
+description: Parses a URL into a URL structure.
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
keywords: [urls]
signature: ["urls.Parse URL"]
-workson: []
-hugoversion:
-deprecated: false
-aliases: []
---
-`urls.Parse` takes a url as input
+The `urls.Parse` function parses a URL into a [URL structure](https://godoc.org/net/url#URL). The URL may be relative (a path, without a host) or absolute (starting with a [scheme]). Hugo throws an error when parsing an invalid URL.
+[scheme]: https://www.iana.org/assignments/uri-schemes/uri-schemes.xhtml#uri-schemes-1
-```go-html-template
-{{ $url := urls.Parse "http://www.gohugo.io" }}
-```
-
-and returns a [URL](https://godoc.org/net/url#URL) structure. The struct fields are accessed via the `.` notation:
```go-html-template
-{{ $url.Scheme }} → "http"
-{{ $url.Host }} → "www.gohugo.io"
+{{ $url := "https://example.org:123/foo?a=6&b=7#bar" }}
+{{ $u := urls.Parse $url }}
+
+{{ $u.IsAbs }} → true
+{{ $u.Scheme }} → https
+{{ $u.Host }} → example.org:123
+{{ $u.Hostname }} → example.org
+{{ $u.RequestURI }} → /foo?a=6&b=7
+{{ $u.Path }} → /foo
+{{ $u.Query }} → map[a:[6] b:[7]]
+{{ $u.Query.a }} → [6]
+{{ $u.Query.Get "a" }} → 6
+{{ $u.Query.Has "b" }} → true
+{{ $u.Fragment }} → bar
```
---
title: where
-# linktitle: where
description: Filters an array to only the elements containing a matching value for a given field.
-date: 2017-02-01
-publishdate: 2017-02-01
-lastmod: 2017-02-01
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
keywords: [filtering]
signature: ["where COLLECTION KEY [OPERATOR] MATCH"]
-workson: [lists,taxonomies,terms,groups]
-hugoversion:
relatedfuncs: [intersect,first,after,last]
-deprecated: false
toc: true
-needsexample: true
---
`where` filters an array to only the elements containing a matching
It can be used by dot-chaining the second argument to refer to a nested element of a value.
-```
-+++
+{{< code-toggle file="content/example.md" fm=true copy=false >}}
+title: Example
series: golang
-+++
-```
+{{< /code-toggle >}}
```go-html-template
{{ range where .Site.Pages "Params.series" "golang" }}
## Use `where` with `Booleans`
When using booleans you should not put quotation marks.
```go-html-template
-{{range where .Pages "Draft" true}}
- <p>{{.Title}}</p>
-{{end}}
+{{ range where .Pages "Draft" true }}
+ <p>{{ .Title }}</p>
+{{ end }}
```
Using `first` and `where` together can be very
powerful. Below snippet gets a list of posts only from [**main
-sections**]({{< relref "where.md#mainsections" >}}), sorts it using the [default
+sections**](#mainsections), sorts it using the [default
ordering](/templates/lists/) for lists (i.e., `weight => date`), and
then ranges through only the first 5 posts in that list:
---
title: with
-# linktitle: with
description: Rebinds the context (`.`) within its scope and skips the block if the variable is absent or empty.
-date: 2017-02-01
-publishdate: 2017-02-01
-lastmod: 2017-03-12
categories: [functions]
menu:
docs:
- parent: "functions"
+ parent: functions
keywords: [conditionals]
signature: ["with INPUT"]
-workson: []
-hugoversion:
relatedfuncs: []
-deprecated: false
---
An alternative way of writing an `if` statement and then referencing the same value is to use `with` instead. `with` rebinds the context (`.`) within its scope and skips the block if the variable is absent, unset or empty.
The following example checks for a [user-defined site variable](/variables/site/) called `twitteruser`. If the key-value is not set, the following will render nothing:
{{< code file="layouts/partials/twitter.html" >}}
-{{with .Site.Params.twitteruser}}<span class="twitter">
-<a href="https://twitter.com/{{.}}" rel="author">
-<img src="/images/twitter.png" width="48" height="48" title="Twitter: {{.}}"
+{{ with .Site.Params.twitteruser }}<span class="twitter">
+<a href="https://twitter.com/{{ . }}" rel="author">
+<img src="/images/twitter.png" width="48" height="48" title="Twitter: {{ . }}"
alt="Twitter"></a>
-</span>{{end}}
+</span>{{ end }}
{{< /code >}}
title: Get Started
linktitle: Get Started Overview
description: Quick start and guides for installing Hugo on your preferred operating system.
-date: 2017-02-01
-publishdate: 2017-02-01
categories: [getting started]
keywords: [usage,docs]
menu:
docs:
- parent: "getting-started"
+ parent: getting-started
weight: 1
-weight: 0001 #rem
+weight: 0001
aliases: [/overview/introduction/]
-toc: false
---
If this is your first time using Hugo and you've [already installed Hugo on your machine][installed], we recommend the [quick start]. You can also use [external learning resources] to learn Hugo.
---
title: Configure Markup
description: How to handle Markdown and other markup related configuration.
-date: 2019-11-15
categories: [getting started,fundamentals]
keywords: [configuration,highlighting]
weight: 65
-sections_weight: 65
slug: configuration-markup
toc: true
---
title: Configure Hugo
linktitle: Configuration
description: How to configure your Hugo site.
-date: 2013-07-01
-publishdate: 2017-01-02
categories: [getting started,fundamentals]
keywords: [configuration,toml,yaml,json]
menu:
docs:
- parent: "getting-started"
+ parent: getting-started
weight: 60
weight: 60
-sections_weight: 60
aliases: [/overview/source-directory/,/overview/configuration/]
toc: true
---
Multiple site config files can be specified as a comma-separated string to the `--config` switch.
{{% /note %}}
-{{< todo >}}TODO: distinct config.toml and others (the root object files){{< /todo >}}
-
## hugo.toml vs config.toml
-In Hugo 0.110.0 we changed the default config base filename to `hugo`, e.g. `hugo.toml`. We will still look for `config.toml` etc., but we recommend you eventually rename it (but you need to wait if you want to support older Hugo versions). The main reason we're doing this is to make it easier code editors and build tools to identify this as a Hugo configuration file and project.
+In Hugo 0.110.0 we changed the default config base filename to `hugo`, e.g. `hugo.toml`. We will still look for `config.toml` etc., but we recommend you eventually rename it (but you need to wait if you want to support older Hugo versions). The main reason we're doing this is to make it easier for code editors and build tools to identify this as a Hugo configuration file and project.
{{< new-in "0.110.0" >}}
- `G-SSSSSSSS` for staging
This is how you need to configure your `config.toml` files considering the above scenario:
-1. In `_default/config.toml` you don't need to mention `googleAnalytics` parameter at all. This ensures that no Google Analytics code is loaded in your development server i.e. when you run `hugo serve`. This works since, by default Hugo sets `Environment=development` when you run `hugo serve` which uses the config files from `_default` folder
+1. In `_default/config.toml` you don't need to mention `googleAnalytics` parameter at all. This ensures that no Google Analytics code is loaded in your development server i.e. when you run `hugo server`. This works since, by default Hugo sets `Environment=development` when you run `hugo server` which uses the config files from `_default` folder
2. In `production/config.toml` you just need to have one line:
```googleAnalytics = "G-PPPPPPPP"```
### baseURL
-Hostname (and path) to the root, e.g. https://bep.is/
+The absolute URL (protocol, host, path, and trailing slash) of your published site (e.g., `https://www.example.org/docs/`).
### build
### menus
-See [Add Non-content Entries to a Menu](/content-management/menus/#add-non-content-entries-to-a-menu).
+See [Menus](/content-management/menus/#define-in-site-configuration).
### minify
### sectionPagesMenu
-See ["Section Menu for Lazy Bloggers"](/templates/menu-templates/#section-menu-for-lazy-bloggers).
+See [Menus](/content-management/menus/#define-in-site-configuration).
### security
Hugo will, by default, render all 404 errors when running `hugo server` with the `404.html` template. Note that if you have already added one or more redirects to your [Server Config](#configure-server), you need to add the 404 redirect explicitly, e.g:
-```toml
+{{< code-toggle file="config/development/server" copy=false >}}
[[redirects]]
- from = "/**"
- to = "/404.html"
- status = 404
-```
+from = "/**"
+to = "/404.html"
+status = 404
+{{< /code-toggle >}}
## Configure Title Case
-Set `titleCaseStyle` to specify the title style used by the [title](/functions/title/) template function and the automatic section titles in Hugo. It defaults to [AP Stylebook](https://www.apstylebook.com/) for title casing, but you can also set it to `Chicago` or `Go` (every word starts with a capital letter).
+Set `titleCaseStyle` to specify the title style used by the [title](/functions/title/) template function and the automatic section titles in Hugo.
+
+By default, Hugo adheres to the capitalization rules in the [Associated Press (AP) Stylebook]. Set `titleCaseStyle` to `chicago` if you would prefer to follow the [Chicago Manual of Style], or set if to `go` to use Go's convention of capitalizing every word.
+
+[Associated Press (AP) Stylebook]: https://www.apstylebook.com/
+[Chicago Manual of Style]: https://www.chicagomanualofstyle.org/home.html
+[site configuration]: /getting-started/configuration/#configure-title-case
## Configuration Environment Variables
This is really useful if you use a service such as Netlify to deploy your site. Look at the Hugo docs [Netlify configuration file](https://github.com/gohugoio/hugoDocs/blob/master/netlify.toml) for an example.
-{{% note "Setting Environment Variables" %}}
+{{% note %}}
Names must be prefixed with `HUGO_` and the configuration key must be set in uppercase when setting operating system environment variables.
To set config params, prefix the name with `HUGO_PARAMS_`
**Note:** This works, but we recommend you use the newer and more powerful [includeFiles and excludeFiles](https://gohugo.io/hugo-modules/configuration/#module-config-mounts) mount options.
-To exclude specific files from the `content` and `data` directories when rendering your site, set `ignoreFiles` to one or more regular expressions to match against the absolute file path.
+To exclude specific files from the `content`, `data`, and `i18n` directories when rendering your site, set `ignoreFiles` to one or more regular expressions to match against the absolute file path.
To ignore files ending with `.foo` or `.boo`:
-{{< code-toggle copy="false" >}}
+{{< code-toggle copy=false >}}
ignoreFiles = ['\.foo$', '\.boo$']
{{< /code-toggle >}}
To ignore a file using the absolute file path:
-{{< code-toggle copy="false" >}}
+{{< code-toggle copy=false >}}
ignoreFiles = ['^/home/user/project/content/test\.md$']
{{< /code-toggle >}}
---
title: Directory Structure
-linktitle: Directory Structure
description: Hugo's CLI scaffolds a project directory structure and then takes that single directory and uses it as the input to create a complete website.
-date: 2017-01-02
-publishdate: 2017-02-01
categories: [getting started,fundamentals]
keywords: [source, organization, directories]
menu:
docs:
- parent: "getting-started"
+ parent: getting-started
weight: 50
weight: 50
-sections_weight: 50
aliases: [/overview/source-directory/]
toc: true
---
: Caches some files to speed up generation. Can be also used by template authors to distribute built Sass files, so you don't have to have the preprocessor installed. Note: resources directory is not created by default.
[archetypes]: /content-management/archetypes/
-[`assets`]: /hugo-pipes/introduction#asset-directory/
+[`assets`]: /hugo-pipes/introduction#asset-directory
[configuration directives]: /getting-started/configuration/#all-configuration-settings
[`content`]: /content-management/organization/
[content section]: /content-management/sections/
[`layouts`]: /templates/
[`static`]: /content-management/static-files/
[`resources`]: /getting-started/configuration/#configure-file-caches
-[lists]: /templates/list/
+[lists]: /templates/lists/
[pagevars]: /variables/page/
[partials]: /templates/partials/
[searchconsole]: https://support.google.com/webmasters/answer/9008080#zippy=%2Chtml-file-upload
---
title: External Learning Resources
-linktitle: External Learning Resources
description: A list of tutorials and books on Hugo.
-date: 2019-10-20
-publishdate: 2019-10-20
-lastmod: 2019-10-20
keywords: [books, tutorials, learning, usage]
menu:
docs:
- parent: "getting-started"
+ parent: getting-started
weight: 70
weight: 70
-sections_weight: 70
-draft: false
-toc: false
---
## Books
---
title: Quick Start
-linktitle: Quick Start
description: Learn to create a Hugo site in minutes.
categories: [getting started]
keywords: [quick start,usage]
---
title: Basic usage
-linktitle: Basic usage
description: Hugo's command line interface (CLI) is fully featured but simple to use, even for those with limited experience working from the command line.
categories: [getting started]
keywords: [usage,livereload,command,flags]
menu:
docs:
- parent: "getting-started"
+ parent: getting-started
weight: 40
weight: 40
-sections_weight: 40
aliases: [/overview/usage/,/extras/livereload/,/doc/usage/,/usage/]
toc: true
---
title: Hosting & Deployment
linktitle: Hosting & Deployment Overview
description: Site builds, automated deployments, and popular hosting solutions.
-date: 2016-11-01
-publishdate: 2016-11-01
-lastmod: 2016-11-01
categories: [hosting and deployment]
keywords: []
menu:
docs:
- parent: "hosting-and-deployment"
+ parent: hosting-and-deployment
weight: 01
-weight: 01 #rem
-draft: false
-aliases: []
-toc: false
+weight: 01
---
Because Hugo renders *static* websites, you can host your new Hugo website virtually anywhere. The following represent only a few of the more popular hosting and automated deployment solutions used by the Hugo community.
---
title: Deployment with Rclone
-linktitle: Deployment with Rclone
description: If you have access to your web host with SFTP/FTP/SSH/HTTP(DAV), you can use rclone to incrementally deploy your entire Hugo website.
-date: 2021-08-09
-publishdate: 2021-08-09
-lastmod: 2021-08-09
categories: [hosting and deployment]
keywords: [rclone,sftp,deployment]
-authors: [Daniel F. Dickinson]
menu:
docs:
- parent: "hosting-and-deployment"
+ parent: hosting-and-deployment
weight: 80
weight: 80
-sections_weight: 80
-draft: false
aliases: [/tutorials/deployment-with-rclone/]
toc: true
-notesforauthors:
---
## Assumptions
---
title: Deployment with Rsync
-linktitle: Deployment with Rsync
description: If you have access to your web host with SSH, you can use a simple rsync one-liner to incrementally deploy your entire Hugo website.
-date: 2017-02-01
-publishdate: 2017-02-01
categories: [hosting and deployment]
keywords: [rsync,deployment]
-authors: [Adrien Poupin]
menu:
docs:
- parent: "hosting-and-deployment"
+ parent: hosting-and-deployment
weight: 70
weight: 70
-sections_weight: 70
-draft: false
aliases: [/tutorials/deployment-with-rsync/]
toc: true
-notesforauthors:
---
## Assumptions
To make logging in to your server more secure and less interactive, you can upload your SSH key. If you have already installed your SSH key to your server, you can move on to the next section.
-First, install the ssh client. On Debian/Ubuntu/derivates, use the following command:
+First, install the ssh client. On Debian distributions, use the following command:
{{< code file="install-openssh.sh" >}}
sudo apt-get install openssh-client
---
title: Host on 21YunBox
-linktitle: Host on 21YunBox
description: Host your Hugo site with 21YunBox's blazing fast Chinese CDN, fully-managed SSL and auto deploys from Gitee.
-date: 2021-01-06
-publishdate: 2021-01-06
categories: [hosting and deployment]
keywords: [21yunbox,hosting,deployment]
-authors: [Toby Glei]
menu:
docs:
- parent: "hosting-and-deployment"
+ parent: hosting-and-deployment
weight: 10
weight: 10
-sections_weight: 10
-draft: false
-aliases: []
toc: true
---
---
title: Host on AWS Amplify
-linktitle: Host on AWS Amplify
description: Develop and deploy a cloud-powered web app with AWS Amplify.
-date: 2018-01-31
-publishdate: 2018-01-31
categories: [hosting and deployment]
keywords: [amplify,hosting,deployment]
-authors: [Nikhil Swaminathan]
menu:
docs:
- parent: "hosting-and-deployment"
+ parent: hosting-and-deployment
weight: 10
weight: 10
-sections_weight: 10
-aliases: []
toc: true
---
---
title: Hosting on Azure Static Web Apps
-linktitle: Hosting on Azure Static Web Apps
description: Learn how to deploy a Hugo application to Azure Static Web Apps.
-date: 2022-05-09
-publishdate: 2022-05-09
categories: [hosting and deployment]
keywords: [hosting,Azure Static Web Apps]
-authors: [Azure Static Web Apps]
menu:
docs:
- parent: "hosting-and-deployment"
+ parent: hosting-and-deployment
weight: 200
weight: 200
-sections_weight: 200
-draft: false
toc: true
-aliases: []
---
You can create and deploy a Hugo web application to Azure Static Web Apps. The final result is a new Azure Static Web App with associated GitHub Actions that give you control over how the app is built and published. You'll learn how to create a Hugo app, set up an Azure Static Web App and deploy the Hugo app to Azure.
---
title: Host on Azure Static Web Apps
-linktitle: Host on Azure Static Web Apps
-description: Deploy Hugo to Azure Static Web Apps and automate the whole process with Github Action Workflow
-date: 2021-03-12
-publishdate: 2021-03-12
+description: Deploy Hugo to Azure Static Web Apps and automate the whole process with GitHub Action Workflow
categories: [hosting and deployment]
keywords: [azure,git,deployment,hosting]
-authors: [Aaron Powell]
menu:
docs:
- parent: "hosting-and-deployment"
+ parent: hosting-and-deployment
weight: 10
weight: 10
-sections_weight: 10
toc: true
---
1. You have Git 2.8 or greater [installed on your machine][installgit].
2. You have a GitHub account. [Signing up][ghsignup] for GitHub is free.
-3. You have an Azure account. You can sign up for a [Free Trail][azuretrial].
+3. You have an Azure account. You can sign up for a [Free Trial][azuretrial].
4. You have a ready-to-publish Hugo website or have at least completed the [Quick Start].
## Deploy Hugo to Azure Static Web Apps
---
title: Host on Cloudflare Pages
-linktitle: Host on Cloudflare Pages
description: Cloudflare Pages can host your Hugo site with CDN, continuous deployment, 1-click HTTPS, an admin GUI, and its own environment variables.
-date: 2022-04-07
-publishdate: 2022-04-07
categories: [hosting and deployment]
menu:
docs:
- parent: "hosting-and-deployment"
+ parent: hosting-and-deployment
weight: 50
weight: 50
-sections_weight: 50
toc: true
---
-[Cloudflare Pages](https://developers.cloudflare.com/pages/) are super fast, always up-to-date, and deployed directly from your Git provider (currently supports only GitHub and GitLab).
+[Cloudflare Pages](https://developers.cloudflare.com/pages/) are super fast, always up-to-date, and deployed directly from your [Git provider](https://developers.cloudflare.com/pages/get-started/#connect-your-git-provider-to-pages).
Cloudflare Pages docs have a detailed tutorial on [how to deploy a Hugo site](https://developers.cloudflare.com/pages/framework-guides/deploy-a-hugo-site/).
---
title: Host on Firebase
-linktitle: Host on Firebase
description: You can use Firebase's free tier to host your static website; this also gives you access to Firebase's NOSQL API.
-date: 2017-03-12
-publishdate: 2017-03-12
categories: [hosting and deployment]
keywords: [hosting,firebase]
-authors: [Michel Racic]
menu:
docs:
- parent: "hosting-and-deployment"
+ parent: hosting-and-deployment
weight: 20
weight: 20
-sections_weight: 20
toc: true
-aliases: []
---
## Assumptions
4. Accept the default for the publish directory, which is `public`
5. Choose "No" in the question if you are deploying a single-page app
-## Using Firebase & Github CI/CD
+## Using Firebase & GitHub CI/CD
In new versions of Firebase, some other questions apply:
7. For which GitHub repository would you like to set up a GitHub workflow? (format: user/repository)
Include the repository you will use in the format above (Account/Repo)
-Firebase script with retrive credentials, create a service account you can later manage in your github settings.
+Firebase script with retrive credentials, create a service account you can later manage in your GitHub settings.
8. Set up the workflow to run a build script before every deploy?
hugo && firebase deploy
```
-With this you will have the app initialized manually. After that you can manage and fix your github workflow from: https://github.com/your-account/yout-repo/actions
+With this you will have the app initialized manually. After that you can manage and fix your GitHub workflow from: https://github.com/your-account/your-repo/actions
Don't forget to update your static pages before push!
+++ /dev/null
----
-title: Host on GitHub
-linktitle: Host on GitHub
-description: Deploy Hugo as a GitHub Pages project or personal/organizational site and automate the whole process with Github Action Workflow
-date: 2014-03-21
-publishdate: 2014-03-21
-categories: [hosting and deployment]
-keywords: [github,git,deployment,hosting]
-authors: [Spencer Lyon, Gunnar Morling]
-menu:
- docs:
- parent: "hosting-and-deployment"
- weight: 30
-weight: 30
-sections_weight: 30
-toc: true
-aliases: [/tutorials/github-pages-blog/]
----
-
-GitHub provides free and fast static hosting over SSL for personal, organization, or project pages directly from a GitHub repository via its [GitHub Pages service] and automating development workflows and build with [GitHub Actions].
-
-## Assumptions
-
-1. You have Git 2.8 or greater [installed on your machine][installgit].
-2. You have a GitHub account. [Signing up][ghsignup] for GitHub is free.
-3. You have a ready-to-publish Hugo website or have at least completed the [Quick Start].
-
-## Types of GitHub Pages
-
-There are two types of GitHub Pages:
-
-- User/Organization Pages (`https://<USERNAME|ORGANIZATION>.github.io/`)
-- Project Pages (`https://<USERNAME|ORGANIZATION>.github.io/<PROJECT>/`)
-
-Please refer to the [GitHub Pages documentation][ghorgs] to decide which type of site you would like to create as it will determine which of the below methods to use.
-
-## Branches for GitHub Actions
-
-The GitHub Actions used in these instructions pull source content from the `main` branch and then commit the generated content to the `gh-pages` branch. This applies regardless of what type of GitHub Pages you are using. This is a clean setup as your Hugo files are stored in one branch and your generated files are published into a separate branch.
-
-## GitHub User or Organization Pages
-
-As mentioned in the [GitHub Pages documentation][ghorgs], you can host a user/organization page in addition to project pages. Here are the key differences in GitHub Pages websites for Users and Organizations:
-
-1. You must create a repository named `<USERNAME>.github.io` or `<ORGANIZATION>.github.io` to host your pages
-2. By default, content from the `main` branch is used to publish GitHub Pages - rather than the `gh-pages` branch which is the default for project sites. However, the GitHub Actions in these instructions publish to the `gh-pages` branch. Therefore, if you are publishing GitHub pages for a user or organization, you will need to change the publishing branch to `gh-pages`. See the instructions later in this document.
-
-## Build Hugo With GitHub Action
-
-GitHub executes your software development workflows. Every time you push your code on the GitHub repository, GitHub Actions will build the site automatically.
-
-Create a file in `.github/workflows/gh-pages.yml` containing the following content (based on [actions-hugo](https://github.com/marketplace/actions/hugo-setup)):
-
-```yml
-name: github pages
-
-on:
- push:
- branches:
- - main # Set a branch that will trigger a deployment
- pull_request:
-
-jobs:
- deploy:
- runs-on: ubuntu-22.04
- steps:
- - uses: actions/checkout@v3
- with:
- submodules: true # Fetch Hugo themes (true OR recursive)
- fetch-depth: 0 # Fetch all history for .GitInfo and .Lastmod
-
- - name: Setup Hugo
- uses: peaceiris/actions-hugo@v2
- with:
- hugo-version: 'latest'
- # extended: true
-
- - name: Build
- run: hugo --minify
-
- - name: Deploy
- uses: peaceiris/actions-gh-pages@v3
- if: github.ref == 'refs/heads/main'
- with:
- github_token: ${{ secrets.GITHUB_TOKEN }}
- publish_dir: ./public
-```
-
-For more advanced settings [actions-hugo](https://github.com/marketplace/actions/hugo-setup) and [actions-gh-pages](https://github.com/marketplace/actions/github-pages-action).
-
-## GitHub pages setting
-
-By default, the GitHub action pushes the generated content to the `gh-pages` branch. This means GitHub has to serve your `gh-pages` branch as a GitHub Pages branch. You can change this setting by going to Settings > GitHub Pages, and change the source branch to `gh-pages`.
-
-## Change baseURL in config.toml
-
-Don't forget to rename your `baseURL` in `config.toml` with the value `https://<USERNAME>.github.io` for your user repository or `https://<USERNAME>.github.io/<REPOSITORY_NAME>` for a project repository.
-
-Unless this is present in your `config.toml`, your website won't work.
-
-## Use a Custom Domain
-
-If you'd like to use a custom domain for your GitHub Pages site, create a file `static/CNAME`. Your custom domain name should be the only contents inside `CNAME`. Since it's inside `static`, the published site will contain the CNAME file at the root of the published site, which is a requirement of GitHub Pages.
-
-Refer to the [official documentation for custom domains][domains] for further information.
-
-[config]: /getting-started/configuration/
-[domains]: https://help.github.com/articles/using-a-custom-domain-with-github-pages/
-[ghorgs]: https://help.github.com/articles/user-organization-and-project-pages/#user--organization-pages
-[ghpfromdocs]: https://help.github.com/articles/configuring-a-publishing-source-for-github-pages/
-[ghsignup]: https://github.com/join
-[GitHub Pages service]: https://help.github.com/articles/what-is-github-pages/
-[installgit]: https://git-scm.com/downloads
-[orphan branch]: https://git-scm.com/docs/git-checkout/#Documentation/git-checkout.txt---orphanltnewbranchgt
-[Quick Start]: /getting-started/quick-start/
-[submodule]: https://github.com/blog/2104-working-with-submodules
-[worktree feature]: https://git-scm.com/docs/git-worktree
-[GitHub Actions]: https://docs.github.com/en/actions
--- /dev/null
+---
+title: Host on GitHub
+description: Deploy Hugo as a GitHub Pages project or personal/organizational site and automate the whole process with Github Actions
+categories: [hosting and deployment]
+keywords: [github,git,deployment,hosting]
+menu:
+ docs:
+ parent: hosting-and-deployment
+ weight: 30
+weight: 30
+toc: true
+aliases: [/tutorials/github-pages-blog/]
+---
+
+GitHub provides free and fast static hosting over SSL for personal, organization, or project pages directly from a GitHub repository via its GitHub Pages service and automating development workflows and build with GitHub Actions.
+
+## Prerequisites
+
+1. [Create a GitHub account]
+2. [Install Git]
+3. [Create a Hugo site] and test it locally with `hugo server`.
+
+[Create a GitHub account]: https://github.com/signup
+[Install Git]: https://git-scm.com/book/en/v2/Getting-Started-Installing-Git
+[Create a Hugo site]: /getting-started/quick-start/
+
+## Types of sites
+
+There are three types of GitHub Pages sites: project, user, and organization. Project sites are connected to a specific project hosted on GitHub. User and organization sites are connected to a specific account on GitHub.com.
+
+{{% note %}}
+See the [GitHub Pages documentation] to understand the requirements for repository ownership and naming.
+
+[GitHub Pages documentation]: https://docs.github.com/en/pages/getting-started-with-github-pages/about-github-pages#types-of-github-pages-sites
+{{% /note %}}
+
+
+[GitHub Pages documentation]: https://docs.github.com/en/pages/getting-started-with-github-pages/about-github-pages#types-of-github-pages-sites
+
+## Procedure
+
+Step 1
+: Create a GitHub repository.
+
+Step 2
+: Push your local repository to GitHub.
+
+Step 3
+: Visit your GitHub repository. From the main menu choose **Settings** > **Pages**. In then center of your screen you will see this:
+
+
+{style="max-width: 280px"}
+
+Step 4
+: Change the **Source** to `GitHub Actions`. The change is immediate; you do not have to press a Save button.
+
+
+{style="max-width: 280px"}
+
+Step 5
+: Create an empty file in your local repository.
+
+```text
+.github/workflows/hugo.yaml
+```
+
+Step 6
+: Copy and paste the YAML below into the file you created. Change the branch name and Hugo version as needed.
+
+{{< code file=".github/workflows/hugo.yaml" >}}
+# Sample workflow for building and deploying a Hugo site to GitHub Pages
+name: Deploy Hugo site to Pages
+
+on:
+ # Runs on pushes targeting the default branch
+ push:
+ branches:
+ - main
+
+ # Allows you to run this workflow manually from the Actions tab
+ workflow_dispatch:
+
+# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
+permissions:
+ contents: read
+ pages: write
+ id-token: write
+
+# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
+# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
+concurrency:
+ group: "pages"
+ cancel-in-progress: false
+
+# Default to bash
+defaults:
+ run:
+ shell: bash
+
+jobs:
+ # Build job
+ build:
+ runs-on: ubuntu-latest
+ env:
+ HUGO_VERSION: 0.111.3
+ steps:
+ - name: Install Hugo CLI
+ run: |
+ wget -O ${{ runner.temp }}/hugo.deb https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_extended_${HUGO_VERSION}_linux-amd64.deb \
+ && sudo dpkg -i ${{ runner.temp }}/hugo.deb
+ - name: Install Dart Sass Embedded
+ run: sudo snap install dart-sass-embedded
+ - name: Checkout
+ uses: actions/checkout@v3
+ with:
+ submodules: recursive
+ fetch-depth: 0
+ - name: Setup Pages
+ id: pages
+ uses: actions/configure-pages@v3
+ - name: Install Node.js dependencies
+ run: "[[ -f package-lock.json || -f npm-shrinkwrap.json ]] && npm ci || true"
+ - name: Build with Hugo
+ env:
+ # For maximum backward compatibility with Hugo modules
+ HUGO_ENVIRONMENT: production
+ HUGO_ENV: production
+ run: |
+ hugo \
+ --gc \
+ --minify \
+ --baseURL "${{ steps.pages.outputs.base_url }}/"
+ - name: Upload artifact
+ uses: actions/upload-pages-artifact@v1
+ with:
+ path: ./public
+
+ # Deployment job
+ deploy:
+ environment:
+ name: github-pages
+ url: ${{ steps.deployment.outputs.page_url }}
+ runs-on: ubuntu-latest
+ needs: build
+ steps:
+ - name: Deploy to GitHub Pages
+ id: deployment
+ uses: actions/deploy-pages@v2
+{{< /code >}}
+
+Step 7
+: Commit the change to your local repository with a commit message of something like "Add workflow", and push to GitHub.
+
+Step 8
+: From GitHub's main menu, choose **Actions**. You will see something like this:
+
+
+{style="max-width: 350px"}
+
+Step 9
+: When GitHub has finished building and deploying your site, the color of the status indicator will change to green.
+
+
+{style="max-width: 350px"}
+
+Step 10
+: Click on the commit message as shown above. You will see this:
+
+
+{style="max-width: 611px"}
+
+Under the deploy step, you will see a link to your live site.
+
+In the future, whenever you push a change from your local repository, GitHub will rebuild your site and deploy the changes.
+
+## Additional resources
+
+- [Learn more about GitHub Actions](https://docs.github.com/en/actions)
+- [Caching dependencies to speed up workflows](https://docs.github.com/en/actions/using-workflows/caching-dependencies-to-speed-up-workflows)
+- [Manage a custom domain for your GitHub Pages site](https://docs.github.com/en/pages/configuring-a-custom-domain-for-your-github-pages-site/about-custom-domains-and-github-pages)
---
title: Host on GitLab
-linktitle: Host on GitLab
description: GitLab makes it easy to build, deploy, and host your Hugo website via their free GitLab Pages service, which provides native support for Hugo.
-date: 2016-06-23
-publishdate: 2016-06-23
-lastmod: 2017-11-16
categories: [hosting and deployment]
keywords: [hosting,deployment,git,gitlab]
-authors: [Riku-Pekka Silvola]
menu:
docs:
- parent: "hosting-and-deployment"
+ parent: hosting-and-deployment
weight: 40
weight: 40
-sections_weight: 40
-draft: false
toc: true
-wip: false
aliases: [/tutorials/hosting-on-gitlab/]
---
---
title: "Host on KeyCDN"
-date: 2017-09-12
description: "Accelerate your Hugo site globally with a KeyCDN integration. This tutorial shows you how to set up your static site as a GitLab page behind a KeyCDN pull zone."
categories: [hosting and deployment]
keywords: [keycdn,hosting,deployment,cdn]
menu:
docs:
- parent: "hosting-and-deployment"
+ parent: hosting-and-deployment
weight: 40
-slug: ""
-aliases: []
-toc: false
---
[KeyCDN](https://www.keycdn.com/) provides a multitude of features to help accelerate and secure your Hugo site globally including Brotli compression, Let's Encrypt support, Origin Shield, and more.
git push -u origin master
```
-You can watch the progress and CI job output in your Gitlab project under “Pipelines”.
+You can watch the progress and CI job output in your GitLab project under “Pipelines”.
After verifying your CI job ran without issues, first check that your GitLab page shows up under `https://youruser.gitlab.io/reponame/` (it might look broken depending on your browser settings as all links point to your KeyCDN zone – don’t worry about that) and then by heading to whatever Zone alias / Zone URL you defined.
---
title: Host on Netlify
-linktitle: Host on Netlify
description: Netlify can host your Hugo site with CDN, continuous deployment, 1-click HTTPS, an admin GUI, and its own CLI.
-date: 2017-02-01
-publishdate: 2017-02-01
categories: [hosting and deployment]
keywords: [netlify,hosting,deployment]
-authors: [Ryan Watters, Seth MacLeod]
menu:
docs:
- parent: "hosting-and-deployment"
+ parent: hosting-and-deployment
weight: 10
weight: 10
-sections_weight: 10
-aliases: []
toc: true
---
For production:
-{{< code file="netlify.toml" codeLang="toml" >}}
+{{< code file="netlify.toml" >}}
[context.production.environment]
HUGO_VERSION = "0.99.1"
{{< /code >}}
For testing:
-{{< code file="netlify.toml" codeLang="toml" >}}
+{{< code file="netlify.toml" >}}
[context.deploy-preview.environment]
HUGO_VERSION = "0.99.1"
{{< /code >}}
The Netlify configuration file can be a little hard to understand and get right for the different environment, and you may get some inspiration and tips from this site's `netlify.toml`:
-{{< code file="netlify.toml" nocode="true" >}}
{{< readfile file="netlify.toml" highlight="toml" >}}
-{{< /code >}}
## Build and Deploy Site
## Use Hugo Themes with Netlify
-The [`git clone` method for installing themes][installthemes] is not supported by Netlify. If you were to use `git clone`, it would require you to recursively remove the `.git` subdirectory from the theme folder and would therefore prevent compatibility with future versions of the theme.
+The `git clone` method for installing themes is not supported by Netlify. If you were to use `git clone`, it would require you to recursively remove the `.git` subdirectory from the theme folder and would therefore prevent compatibility with future versions of the theme.
A *better* approach is to install a theme as a proper git submodule. You can [read the GitHub documentation for submodules][ghsm] or those found on [Git's website][gitsm] for more information, but the command is similar to that of `git clone`:
3. [Redirects and Rewrite Rules]
[app.netlify.com]: https://app.netlify.com
-[build command]: /getting-started/usage/#the-hugo-command
+[build command]: /getting-started/usage/#build-your-site
[config]: /getting-started/configuration/
[ghsm]: https://github.com/blog/2104-working-with-submodules
[gitsm]: https://git-scm.com/book/en/v2/Git-Tools-Submodules
[httpscustom]: https://www.netlify.com/docs/ssl/
[hugoversions]: https://github.com/netlify/build-image/blob/master/Dockerfile#L216
-[installthemes]: /themes/installing/
[netlify]: https://www.netlify.com/
[netlifysignup]: https://app.netlify.com/signup
[Quick Start]: /getting-started/quick-start/
---
title: Host on Render
-linktitle: Host on Render
description: Host your Hugo site for free with Render's global CDN, fully-managed SSL and auto deploys from GitHub.
-date: 2019-06-06
-publishdate: 2019-06-06
categories: [hosting and deployment]
keywords: [hosting,deployment]
-authors: [Anurag Goel]
menu:
docs:
- parent: "hosting-and-deployment"
+ parent: hosting-and-deployment
weight: 10
weight: 10
-sections_weight: 10
-draft: false
-aliases: []
toc: true
---
You can set up a Hugo site on Render in two quick steps:
-1. Create a new **Static Site** on Render, and give Render permission to access your GitHub/Gitlab repo.
+1. Create a new **Static Site** on Render, and give Render permission to access your GitHub/GitLab repo.
2. Use the following values during creation:
Field | Value
## Continuous Deploys
-Now that Render is connected to your repo, it will **automatically build and publish your site** any time you push to your GitHub/Gitlab.
+Now that Render is connected to your repo, it will **automatically build and publish your site** any time you push to your GitHub/GitLab.
You can choose to disable auto deploys under the **Settings** section for your site and deploy it manually from the Render dashboard.
---
title: Hugo Deploy
-linktitle: Hugo Deploy
description: You can upload your site to GCS, S3, or Azure using the Hugo CLI.
-date: 2019-05-30
-publishdate: 2019-05-30
-lastmod: 2021-05-03
categories: [hosting and deployment]
keywords: [s3,gcs,azure,hosting,deployment]
-authors: [Robert van Gent]
menu:
docs:
- parent: "hosting-and-deployment"
+ parent: hosting-and-deployment
weight: 2
weight: 2
-sections_weight: 2
-draft: false
-aliases: []
toc: true
---
title: Hugo Modules
linktitle: Hugo Modules Overview
description: How to use Hugo Modules.
-date: 2017-02-01
-publishdate: 2017-02-01
menu:
docs:
- parent: "modules"
+ parent: modules
weight: 01
weight: 01
-sections_weight: 01
categories: [hugo modules]
keywords: [themes,modules]
-draft: false
aliases: [/themes/overview/,/themes/]
toc: true
---
---
title: Configure Modules
-linktitle: Configure Modules
description: This page describes the configuration options for a module.
-date: 2019-07-24
categories: [hugo modules]
keywords: [themes, source, organization, directories]
menu:
docs:
- parent: "modules"
+ parent: modules
weight: 10
weight: 10
-sections_weight: 10
toc: true
---
: The workspace file to use. This enables Go workspace mode. Note that this can also be set via OS env, e.g. `export HUGO_MODULE_WORKSPACE=/my/hugo.work` This only works with Go 1.18+. In Hugo `v0.109.0` we changed the default to `off` and we now resolve any relative work filenames relative to the working directory.
replacements
-: A comma separated (or a slice) list of module path to directory replacement mapping, e.g. `github.com/bep/my-theme -> ../..,github.com/bep/shortcodes -> /some/path`. This is mostly useful for temporary locally development of a module, and then it makes sense to set it as an OS environment variable, e.g: `env HUGO_MODULE_REPLACEMENTS="github.com/bep/my-theme -> ../.."`. Any relative path is relate to [themesDir](https://gohugo.io/getting-started/configuration/#all-configuration-settings), and absolute paths are allowed.
+: A comma-separated list of mappings from module paths to directories, e.g. `github.com/bep/my-theme -> ../..,github.com/bep/shortcodes -> /some/path`. This is mostly useful for temporary local development of a module, in which case you might want to save it as an environment variable, e.g: `env HUGO_MODULE_REPLACEMENTS="github.com/bep/my-theme -> ../.."`. Relative paths are relative to [themesDir](https://gohugo.io/getting-started/configuration/#all-configuration-settings). Absolute paths are allowed.
Note that the above terms maps directly to their counterparts in Go Modules. Some of these setting may be natural to set as OS environment variables. To set the proxy server to use, as an example:
When the `mounts` config was introduced in Hugo 0.56.0, we were careful to preserve the existing `contentDir`, `staticDir`, and similar configuration to make sure all existing sites just continued to work. But you should not have both: if you add a `mounts` section you should remove the old `contentDir`, `staticDir`, etc. settings.
{{% /note %}}
-{{% warning %}}
+{{% note %}}
When you add a mount, the default mount for the concerned target root is ignored: be sure to explicitly add it.
-{{% /warning %}}
+{{% /note %}}
**Default mounts**
{{< code-toggle file="config">}}
excludeFiles (string or slice)
: One or more glob patterns matching files to exclude.
+
+**Example**
+{{< code-toggle file="config">}}
+[module]
+[[module.mounts]]
+ source="content"
+ target="content"
+ excludeFiles="docs/*"
+[[module.mounts]]
+ source="node_modules"
+ target="assets"
+[[module.mounts]]
+ source="assets"
+ target="assets"
+{{< /code-toggle >}}
---
title: Theme Components
-linktitle: Theme Components
description: Hugo provides advanced theming support with Theme Components.
-date: 2017-02-01
categories: [hugo modules]
keywords: [themes, theme, source, organization, directories]
menu:
docs:
- parent: "modules"
+ parent: modules
weight: 50
weight: 50
-sections_weight: 50
-draft: false
aliases: [/themes/customize/,/themes/customizing/]
toc: true
---
---
title: Use Hugo Modules
-linktitle: Use Hugo Modules
description: How to use Hugo Modules to build and manage your site.
-date: 2019-07-24
categories: [hugo modules]
keywords: [install, themes, source, organization, directories,usage,modules]
menu:
docs:
- parent: "modules"
+ parent: modules
weight: 20
weight: 20
-sections_weight: 20
-draft: false
aliases: [/themes/usage/,/themes/installing/,/installing-and-using-themes/]
toc: true
---
```
The `--ignoreVendorPaths` flag is added above to ignore any of the vendored dependencies inside `_vendor`. If you don't use vendoring, you don't need that flag. But now the server is set up watching the files and directories in the workspace and you can see your local edits reloaded.
-
---
title: Hugo Pipes Overview
-date: 2018-07-14
-publishdate: 2018-07-14
categories: [asset management]
keywords: []
menu:
docs:
- parent: "pipes"
+ parent: pipes
weight: 10
weight: 10
-sections_weight: 10
----
\ No newline at end of file
+---
---
title: Babel
description: Hugo Pipes can process JS files with Babel.
-date: 2019-03-21
-publishdate: 2019-03-21
categories: [asset management]
keywords: []
menu:
docs:
- parent: "pipes"
+ parent: pipes
weight: 48
weight: 48
-sections_weight: 48
+signature: ["resources.Babel RESOURCE [OPTIONS]", "babel RESOURCE [OPTIONS]"]
---
+## Usage
+
Any JavaScript resource file can be transpiled to another JavaScript version using `resources.Babel` which takes for argument the resource object and an optional dict of options listed below. Babel uses the [babel cli](https://babeljs.io/docs/en/babel-cli).
---
-title: Asset bundling
-description: Hugo Pipes can bundle any number of assets together.
-date: 2018-07-14
-publishdate: 2018-07-14
-lastmod: 2018-07-14
+title: Concat
+linkTitle: Concatenating assets
+description: Bundle any number of assets into one resource.
categories: [asset management]
keywords: []
menu:
docs:
- parent: "pipes"
+ parent: pipes
weight: 60
weight: 60
-sections_weight: 60
+signature: ["resources.Concat TARGET_PATH SLICE_RESOURCES"]
---
-Asset files of the same MIME type can be bundled into one resource using `resources.Concat` which takes two arguments, a target path and a slice of resource objects.
+## Usage
+
+Asset files of the same MIME type can be bundled into one resource using `resources.Concat` which takes two arguments, the target path for the created resource bundle and a slice of resource objects to be concatenated.
```go-html-template
{{ $plugins := resources.Get "js/plugins.js" }}
---
-title: Fingerprinting and SRI
-description: Hugo Pipes allows Fingerprinting and Subresource Integrity.
-date: 2018-07-14
-publishdate: 2018-07-14
+title: Fingerprint
+linkTitle: Fingerprinting and SRI
+description: Process a given resource, adding a hash string of the resource's content.
categories: [asset management]
keywords: []
menu:
docs:
- parent: "pipes"
+ parent: pipes
weight: 70
weight: 70
-sections_weight: 70
+signature: ["resources.Fingerprint RESOURCE [ALGORITHM]", "fingerprint RESOURCE [ALGORITHM]"]
---
-Fingerprinting and [SRI](https://developer.mozilla.org/en-US/docs/Web/Security/Subresource_Integrity) can be applied to any asset file using `resources.Fingerprint` which takes two arguments, the resource object and a [hash function](https://en.wikipedia.org/wiki/Cryptographic_hash_function).
+## Usage
-The default hash function is `sha256`. Other available functions are `sha384` (from Hugo `0.55`), `sha512` and `md5`.
+Fingerprinting and [SRI](https://developer.mozilla.org/en-US/docs/Web/Security/Subresource_Integrity) can be applied to any asset file using `resources.Fingerprint` which takes two arguments, the resource object and an optional [hash algorithm](https://en.wikipedia.org/wiki/Secure_Hash_Algorithms).
-Any so processed asset will bear a `.Data.Integrity` property containing an integrity string, which is made up of the name of the hash function, one hyphen and the base64-encoded hash sum.
+The default hash algorithm is `sha256`. Other available algorithms are `sha384` and (as of Hugo `0.55`) `sha512` and `md5`.
+
+Any so processed asset will bear a `.Data.Integrity` property containing an integrity string, which is made up of the name of the hash algorithm, one hyphen and the base64-encoded hash sum.
```go-html-template
{{ $js := resources.Get "js/global.js" }}
title: Hugo Pipes Introduction
linkTitle: Hugo Pipes
description: Hugo Pipes is Hugo's asset processing set of functions.
-date: 2018-07-14
-publishdate: 2018-07-14
categories: [asset management]
keywords: []
menu:
docs:
- parent: "pipes"
+ parent: pipes
weight: 20
weight: 01
-sections_weight: 01
-draft: false
toc: true
aliases: [/assets/]
---
ContentType
: The content type, e.g. "text/html"
-
-## Copy a Resource
-
-{{< new-in "0.100.0" >}}
-
-`resources.Copy` allows you to copy almost any Hugo `Resource` (the one exception is the `Page`), possibly most useful for renaming things:
-
-```go-html-template
-{{ $resized := $image.Resize "400x400" | resources.Copy "images/mynewname.jpg" }}
-<img src="{{ $resized.RelPermalink }}">
-```
-
### Caching
By default, Hugo calculates a cache key based on the `URL` and the `options` (e.g. headers) given.
### Remote Options
-When fetching a remote `Resource`, `resources.GetRemote` takes an optional options map as the last argument, e.g.:
+When fetching a remote `Resource`, `resources.GetRemote` takes an optional options map as the second argument, e.g.:
```go-html-template
-{{ $resource := resources.GetRemote "https://example.org/api" (dict "headers" (dict "Authorization" "Bearer abcd")) }}
+{{ $resource := resources.GetRemote "https://example.org/api" (dict "headers" (dict "Authorization" "Bearer abcd")) }}
```
If you need multiple values for the same header key, use a slice:
```go-html-template
-{{ $resource := resources.GetRemote "https://example.org/api" (dict "headers" (dict "X-List" (slice "a" "b" "c"))) }}
+{{ $resource := resources.GetRemote "https://example.org/api" (dict "headers" (dict "X-List" (slice "a" "b" "c"))) }}
```
You can also change the request method and set the request body:
Remote resources fetched with `resources.GetRemote` will be cached on disk. See [Configure File Caches](/getting-started/configuration/#configure-file-caches) for details.
-
## Copy a Resource
{{< new-in "0.100.0" >}}
---
-title: JavaScript Building
-description: Hugo Pipes can process JavaScript files with [ESBuild](https://github.com/evanw/esbuild).
-date: 2020-07-20
-publishdate: 2020-07-20
+title: js.Build
+linkTitle: JavaScript Building
+description: Process a JavaScript file with [ESBuild](https://github.com/evanw/esbuild).
categories: [asset management]
keywords: []
menu:
docs:
- parent: "pipes"
+ parent: pipes
weight: 45
weight: 45
-sections_weight: 45
+signature: ["js.Build RESOURCE [OPTIONS]"]
---
+## Usage
+
Any JavaScript resource file can be transpiled and "tree shaken" using `js.Build` which takes for argument either a string for the filepath or a dict of options listed below.
### Options
---
-title: Asset minification
-description: Hugo Pipes allows the minification of any CSS, JS, JSON, HTML, SVG or XML resource.
-date: 2018-07-14
-publishdate: 2018-07-14
+title: Minify
+linkTitle: Asset minification
+description: Minifies a given resource.
categories: [asset management]
keywords: []
menu:
docs:
- parent: "pipes"
+ parent: pipes
weight: 50
weight: 50
-sections_weight: 50
+signature: ["resources.Minify RESOURCE", "minify RESOURCE"]
---
-Any resource of the aforementioned types can be minified using `resources.Minify` which takes for argument the resource object.
+## Usage
+
+Any CSS, JS, JSON, HTML, SVG or XML resource can be minified using `resources.Minify` which takes for argument the resource object.
```go-html-template
{{ $css := resources.Get "css/main.css" }}
---
title: PostCSS
-description: Hugo Pipes can process CSS files with PostCSS.
+description: Process CSS files with PostCSS, using any of the available plugins.
categories: [asset management]
keywords: []
menu:
docs:
- parent: "pipes"
+ parent: pipes
weight: 40
+toc: true
weight: 40
+signature: ["resources.PostCSS RESOURCE [OPTIONS]", "postCSS RESOURCE [OPTIONS]"]
---
-Any asset file can be processed using `resources.PostCSS` which takes for argument the resource object and a slice of options listed below.
+## Setup
-The resource will be processed using the project's or theme's own `postcss.config.js` or any file set with the `config` option.
+Follow the steps below to transform CSS using any of the [available PostCSS plugins](https://www.postcss.parts/).
-```go-html-template
-{{ $css := resources.Get "css/main.css" }}
-{{ $style := $css | resources.PostCSS }}
-```
+Step 1
+: Install [Node.js](https://nodejs.org/en/download).
-You must install the required Node.js packages to use the PostCSS feature. For example, to use the `autoprefixer` package, run these commands from the root of your project:
+Step 2
+: Install the required Node.js packages in the root of your project. For example, to add vendor prefixes to CSS rules:
-```text
+```bash
npm install postcss postcss-cli autoprefixer
```
-### Options
+Step 3
+: Create a PostCSS configuration file in the root of your project. You must name this file `postcss.config.js` or one of the other [supported file names]. For example:
+
+[supported file names]: https://github.com/postcss/postcss-load-config#usage
+
+{{< code file="postcss.config.js" >}}
+module.exports = {
+ plugins: [
+ require('autoprefixer')
+ ]
+};
+{{< /code >}}
+
+{{% note %}}
+If you are a Windows user, and the path to your project contains a space, you must place the PostCSS configuration within the package.json file. See [this example](https://github.com/postcss/postcss-load-config#packagejson) and issue [#7333](https://github.com/gohugoio/hugo/issues/7333).
+{{% /note %}}
+
+Step 4
+: Place your CSS file within the `assets` directory.
+
+Step 5
+: Capture the CSS file as a resource and pipe it through `resources.PostCSS` (alias `postCSS`):
-config [string]
-: Set a custom directory to look for a config file
+{{< code file="layouts/partials/css.html" >}}
+{{ with resources.Get "css/main.css" | postCSS }}
+ <link rel="stylesheet" href="{{ .RelPermalink }}">
+{{ end }}
+{{< /code >}}
-noMap [bool]
-: Default is `false`. Disable the default inline sourcemaps
+If starting with a Sass file within the `assets` directory:
-inlineImports [bool]
-: Default is `false`. Enable inlining of @import statements. It does so recursively, but will only import a file once.
+{{< code file="layouts/partials/css.html" >}}
+{{ with resources.Get "sass/main.scss" | toCSS | postCSS }}
+ <link rel="stylesheet" href="{{ .RelPermalink }}">
+{{ end }}
+{{< /code >}}
+
+## Options
+
+The `resources.PostCSS` method takes an optional map of options.
+
+config
+: (`string`) The directory that contains the PostCSS configuration file. Default is the root of the project directory.
+
+noMap
+: (`bool`) Default is `false`. If `true`, disables inline sourcemaps.
+
+inlineImports
+: (`bool`) Default is `false`. Enable inlining of @import statements. It does so recursively, but will only import a file once.
URL imports (e.g. `@import url('https://fonts.googleapis.com/css?family=Open+Sans&display=swap');`) and imports with media queries will be ignored.
Note that this import routine does not care about the CSS spec, so you can have @import anywhere in the file.
Hugo will look for imports relative to the module mount and will respect theme overrides.
-skipInlineImportsNotFound [bool] {{< new-in "0.99.0" >}}
-: Default is `false`. Before Hugo 0.99.0 when `inlineImports` was enabled and we failed to resolve an import, we logged it as a warning. We now fail the build. If you have regular CSS imports in your CSS that you want to preserve, you can either use imports with URL or media queries (Hugo does not try to resolve those) or set `skipInlineImportsNotFound` to true.
+skipInlineImportsNotFound {{< new-in "0.99.0" >}}
+: (`bool`) Default is `false`. Before Hugo 0.99.0 when `inlineImports` was enabled and we failed to resolve an import, we logged it as a warning. We now fail the build. If you have regular CSS imports in your CSS that you want to preserve, you can either use imports with URL or media queries (Hugo does not try to resolve those) or set `skipInlineImportsNotFound` to true.
-_If no configuration file is used:_
+{{< code file="layouts/partials/css.html" >}}
+{{ $opts := dict "config" "config-directory" "noMap" true }}
+{{ with resources.Get "css/main.css" | postCSS $opts }}
+ <link rel="stylesheet" href="{{ .RelPermalink }}">
+{{ end }}
+{{< /code >}}
-use [string]
-: Space-delimited list of PostCSS plugins to use
+## No configuration file
-parser [string]
-: Custom PostCSS parser
+To avoid using a PostCSS configuration file, you can specify a minimal configuration using the options map.
-stringifier [string]
-: Custom PostCSS stringifier
+use
+: (`string`) A space-delimited list of PostCSS plugins to use.
-syntax [string]
-: Custom postcss syntax
+parser
+: (`string`) A custom PostCSS parser.
-```go-html-template
-{{ $options := dict "config" "/path/to/custom-config-directory" "noMap" true }}
-{{ $style := resources.Get "css/main.css" | resources.PostCSS $options }}
+stringifier
+: (`string`) A custom PostCSS stringifier.
-{{ $options := dict "use" "autoprefixer postcss-color-alpha" }}
-{{ $style := resources.Get "css/main.css" | resources.PostCSS $options }}
-```
+syntax
+: (`string`) Custom postcss syntax.
-## Check Hugo Environment from postcss.config.js
+{{< code file="layouts/partials/css.html" >}}
+{{ $opts := dict "use" "autoprefixer postcss-color-alpha" }}
+{{ with resources.Get "css/main.css" | postCSS $opts }}
+ <link rel="stylesheet" href="{{ .RelPermalink }}">
+{{ end }}
+{{< /code >}}
+
+## Check Hugo environment
The current Hugo environment name (set by `--environment` or in config or OS environment) is available in the Node context, which allows constructs like this:
-```js
+{{< code file="postcss.config.js" >}}
module.exports = {
plugins: [
require('autoprefixer'),
: []
]
}
-```
+{{< /code >}}
---
title: PostProcess
description: Allows delaying of resource transformations to after the build.
-date: 2020-04-09
categories: [asset management]
keywords: []
menu:
docs:
- parent: "pipes"
+ parent: pipes
weight: 39
weight: 39
-sections_weight: 39
+signature: ["resources.PostProcess RESOURCE"]
---
+## Usage
+
Marking a resource with `resources.PostProcess` delays any transformations to after the build, typically because one or more of the steps in the transformation chain depends on the result of the build (e.g. files in `public`).
A prime use case for this is [CSS purging with PostCSS](#css-purging-with-postcss).
: The value e.g. set with `hugo -e production` (defaults to `production` for `hugo` and `development` for `hugo server`).
HUGO_PUBLISHDIR
-: {{ new-in "0.109.0" }} The absolute path to the publish directory (the `public` directory). Note that the value will always point to a directory on disk even when running `hugo server` in memory mode. If you write to this folder from PostCSS when running the server, you could run the server with one of these flags:
+: {{< new-in "0.109.0" >}} The absolute path to the publish directory (the `public` directory). Note that the value will always point to a directory on disk even when running `hugo server` in memory mode. If you write to this folder from PostCSS when running the server, you could run the server with one of these flags:
```
hugo server --renderToDisk
Also, Hugo will add environment variables for all files mounted below `assets/_jsconfig`. A default mount will be set up with files in the project root matching this regexp: `(babel|postcss|tailwind)\.config\.js`.
-These will get environment variables named on the form `HUGO_FILE_:filename:` where `:filename:` is all upper case with periods replaced with underscore. This allows you do do this and similar:
+These will get environment variables named on the form `HUGO_FILE_:filename:` where `:filename:` is all upper case with periods replaced with underscore. This allows you to do this and similar:
```js
let tailwindConfig = process.env.HUGO_FILE_TAILWIND_CONFIG_JS || './tailwind.config.js';
```
-
---
-title: Creating a resource from a string
+title: FromString
linkTitle: Resource from String
-description: Hugo Pipes allows the creation of a resource from a string.
-date: 2018-07-14
-publishdate: 2018-07-14
+description: Creates a resource from a string.
categories: [asset management]
keywords: []
menu:
docs:
- parent: "pipes"
+ parent: pipes
weight: 90
weight: 90
-sections_weight: 90
+signature: ["resources.FromString TARGET_PATH CONTENT"]
---
-It is possible to create a resource directly from the template using `resources.FromString` which takes two arguments, the given string and the resource target path.
+## Usage
+
+It is possible to create a resource directly from the template using `resources.FromString` which takes two arguments, the target path for the created resource and the given content string.
The following example creates a resource file containing localized variables for every project's languages.
---
-title: Creating a resource from template
+title: ExecuteAsTemplate
linkTitle: Resource from Template
-description: Hugo Pipes allows the creation of a resource from an asset file using Go Template.
-date: 2018-07-14
-publishdate: 2018-07-14
+description: Creates a resource from a template
categories: [asset management]
keywords: []
menu:
docs:
- parent: "pipes"
+ parent: pipes
weight: 80
weight: 80
-sections_weight: 80
+signature: ["resources.ExecuteAsTemplate TARGET_PATH CONTEXT RESOURCE"]
---
+## Usage
+
In order to use Hugo Pipes function on an asset file containing Go Template magic the function `resources.ExecuteAsTemplate` must be used.
-The function takes three arguments: the resource target path, the template context, and the resource object.
+The function takes three arguments: the target path for the created resource, the template context, and the resource object.
```go-html-template
// assets/sass/template.scss
+++ /dev/null
----
-title: Sass / SCSS
-description: Hugo Pipes allows the processing of Sass and SCSS files.
-date: 2018-07-14
-publishdate: 2018-07-14
-categories: [asset management]
-keywords: []
-menu:
- docs:
- parent: "pipes"
- weight: 30
-weight: 02
-sections_weight: 02
----
-
-Any Sass or SCSS file can be transformed into a CSS file using `resources.ToCSS` which takes two arguments, the resource object and a map of options listed below.
-
-```go-html-template
-{{ $sass := resources.Get "sass/main.scss" }}
-{{ $style := $sass | resources.ToCSS }}
-```
-
-### Options
-
-transpiler [string]
-
-: The `transpiler` to use, valid values are `libsass` (default) and `dartsass`. If you want to use Hugo with Dart Sass you need to download a release binary from [Embedded Dart Sass](https://github.com/sass/dart-sass-embedded/releases) and make sure it's in your PC's `$PATH` (or `%PATH%` on Windows).
-
-targetPath [string]
-: If not set, the resource's target path will be the asset file original path with its extension replaced by `.css`.
-
-vars [map]
-: Map of key/value pairs that will be available in the `hugo:vars` namespace, e.g. with `@use "hugo:vars" as v;` or (globally) with `@import "hugo:vars";` {{< new-in "0.109.0" >}}
-
-outputStyle [string]
-: Default is `nested` (LibSass) and `expanded` (Dart Sass). Other available output styles for LibSass are `expanded`, `compact` and `compressed`. Dart Sass only supports `expanded` and `compressed`.
-
-precision [int]
-: Precision of floating point math. **Note:** This option is not supported by Dart Sass.
-
-enableSourceMap [bool]
-: When enabled, a source map will be generated.
-
-sourceMapIncludeSources [bool]
-: When enabled, sources will be embedded in the generated source map. (Dart Sass only). {{< new-in "0.108.0" >}}
-
-includePaths [string slice]
-: Additional SCSS/Sass include paths. Paths must be relative to the project directory.
-
-```go-html-template
-{{ $options := (dict "targetPath" "style.css" "outputStyle" "compressed" "enableSourceMap" (not hugo.IsProduction) "includePaths" (slice "node_modules/myscss")) }}
-{{ $style := resources.Get "sass/main.scss" | resources.ToCSS $options }}
-```
-
-{{% note %}}
-Setting `outputStyle` to `compressed` will handle Sass/SCSS files minification better than the more generic [`resources.Minify`]({{< ref "minification">}}).
-{{% /note %}}
--- /dev/null
+---
+title: ToCSS
+linkTitle: Transpile Sass to SCSS
+description: Transpile Sass to CSS.
+categories: [asset management]
+keywords: []
+menu:
+ docs:
+ parent: pipes
+ weight: 30
+weight: 02
+signature: ["resources.ToCSS RESOURCE [OPTIONS]", "toCSS RESOURCE [OPTIONS]"]
+---
+
+## Usage
+
+Any Sass or SCSS file can be transformed into a CSS file using `resources.ToCSS` which takes two arguments, the resource object and a map of options listed below.
+
+```go-html-template
+{{ $sass := resources.Get "sass/main.scss" }}
+{{ $style := $sass | resources.ToCSS }}
+```
+
+### Options
+
+transpiler [string]
+
+: The `transpiler` to use, valid values are `libsass` (default) and `dartsass`. If you want to use Hugo with Dart Sass you need to download a release binary from [Embedded Dart Sass](https://github.com/sass/dart-sass-embedded/releases) and make sure it's in your PC's `$PATH` (or `%PATH%` on Windows).
+
+targetPath [string]
+: If not set, the transformed resource's target path will be the asset file original path with its extension replaced by `.css`.
+
+vars [map]
+: Map of key/value pairs that will be available in the `hugo:vars` namespace, e.g. with `@use "hugo:vars" as v;` or (globally) with `@import "hugo:vars";` {{< new-in "0.109.0" >}}
+
+outputStyle [string]
+: Default is `nested` (LibSass) and `expanded` (Dart Sass). Other available output styles for LibSass are `expanded`, `compact` and `compressed`. Dart Sass only supports `expanded` and `compressed`.
+
+precision [int]
+: Precision of floating point math. **Note:** This option is not supported by Dart Sass.
+
+enableSourceMap [bool]
+: When enabled, a source map will be generated.
+
+sourceMapIncludeSources [bool]
+: When enabled, sources will be embedded in the generated source map. (Dart Sass only). {{< new-in "0.108.0" >}}
+
+includePaths [string slice]
+: Additional SCSS/Sass include paths. Paths must be relative to the project directory.
+
+```go-html-template
+{{ $options := (dict "targetPath" "style.css" "outputStyle" "compressed" "enableSourceMap" (not hugo.IsProduction) "includePaths" (slice "node_modules/myscss")) }}
+{{ $style := resources.Get "sass/main.scss" | resources.ToCSS $options }}
+```
+
+{{% note %}}
+Setting `outputStyle` to `compressed` will handle Sass/SCSS files minification better than the more generic [`resources.Minify`](/hugo-pipes/minification).
+{{% /note %}}
docs:
parent: installation
weight: 10
-toc: false
---
{{% param "description" %}}
---
title: BSD
-linkTitle: BSD
description: Install Hugo on BSD derivatives.
categories: [installation]
menu:
---
title: Linux
-linkTitle: Linux
description: Install Hugo on Linux.
categories: [installation]
menu:
### Snap
-[Snap] is a free and open source package manager for Linux. Available for [most distributions], Snap packages are simple to install and are automatically updated. This will install the extended edition of Hugo:
+[Snap] is a free and open source package manager for Linux. Available for [most distributions], snap packages are simple to install and are automatically updated.
+
+The Hugo snap package is [strictly confined]. Strictly confined snaps run in complete isolation, up to a minimal access level that’s deemed always safe. The sites you create and build must be located within your home directory, or on removable media.
+
+This will install the extended edition of Hugo:
```sh
sudo snap install hugo
```
[most distributions]: https://snapcraft.io/docs/installing-snapd
+[strictly confined]: https://snapcraft.io/docs/snap-confinement
[Snap]: https://snapcraft.io/
{{% readfile file="/installation/common/homebrew.md" %}}
sudo eopkg install hugo
```
-[Solus]: https://getsol.us/home/
+[Solus]: https://getsol.us/
{{% readfile file="/installation/common/04-docker.md" %}}
---
title: macOS
-linkTitle: macOS
description: Install Hugo on macOS.
categories: [installation]
menu:
---
title: Windows
-linkTitle: Windows
description: Install Hugo on Windows.
categories: [installation]
menu:
[Scoop]: https://scoop.sh/
+### Winget
+
+[Winget] is Microsoft's official free and open source package manager for Windows. This will install the extended edition of Hugo:
+
+```sh
+winget install Hugo.Hugo.Extended
+```
+
+[Winget]: https://learn.microsoft.com/en-us/windows/package-manager/
+
{{% readfile file="/installation/common/04-docker.md" %}}
{{% readfile file="/installation/common/05-build-from-source.md" %}}
---
title: Maintenance
description: Some lists useful for the maintenance of the Hugo docs site.
-date: 2018-02-09
categories: [maintenance]
keywords: [maintenance]
menu:
docs:
weight: 200
-slug:
-aliases: []
toc: true
---
-
- [Live Reload](/getting-started/usage/#livereload). Hugo will automatically reload the browser when the build is complete
- Theme engine w/[Theme Repository](http://github.com/spf13/hugoThemes)
- [Menu system](/content-management/menus/) with support for active page
-- [Builders](/extras/builders) to quickly create a new site, content or theme
-- [XML sitemap](/templates/sitemap) generation
-- [Integrated Disqus](/extras/comments) support
-- Streamlined [template organization](/templates/overview)
+- [Builders](/commands/hugo_new) to quickly create a new site, content or theme
+- [XML sitemap](/templates/sitemap-template) generation
+- [Integrated Disqus](/content-management/comments) support
+- Streamlined [template organization](/templates/introduction)
- Brand new docs site
- Support for publishDate which allows for posts to be dated in the future
-- More [sort](/functions/sort/#readout) options
+- More [sort](/functions/sort) options
- Logging support
- Much better error handling
- More informative verbose output
-- Renamed Indexes > [Taxonomies](/taxonomies/overview)
+- Renamed Indexes > [Taxonomies](/content-management/taxonomies/)
- Renamed Chrome > [Partials](/templates/partials)
- 10 [new themes](https://github.com/spf13/hugoThemes) created by the community
- fully themable [partials](/templates/partials/)
- [404 template](/templates/404/) support in themes
-- [shortcode](/extras/shortcodes/) support in themes
+- [shortcode](/content-management/shortcodes/) support in themes
- [views](/templates/views/) support in themes
-- inner [shortcode](/extras/shortcodes/) content now treated as markdown
+- inner [shortcode](/content-management/shortcodes) content now treated as markdown
- support for header ids in markdown (# header {#myid})
- [where](/functions/where/) template function to filter lists of content, taxonomies, etc.
-- [groupby](/templates/list) & [groupbydate](/templates/list) methods to group pages
-- taxonomy [pages list](/taxonomies/methods/) now sortable, filterable, limitable & groupable
+- [groupby](/templates/lists#by-page-field) & [groupbydate](/templates/lists/#by-date-1) methods to group pages
+- taxonomy [pages list](/templates/taxonomy-templates#taxonomy-methods) now sortable, filterable, limitable & groupable
- general cleanup to taxonomies & documentation to make it more clear and consistent
- [showcase](/showcase/) returned and has been expanded
- pretty links now always have trailing slashes
-- [baseurl](/overview/configuration/) can now include a subdirectory
+- [baseurl](/getting-started/configuration#baseurl) can now include a subdirectory
- better feedback about draft & future post rendering
- a variety of improvements to [the website](/)
Big shout out to [@bep](https://github.com/bep) who led the development of Hugo this release, [@anthonyfok](https://github.com/anthonyfok), [@eparis](https://github.com/eparis), [@SchumacherFM](https://github.com/SchumacherFM), [@RickCogley](https://github.com/RickCogley) & [@mdhender](https://github.com/mdhender) for their significant contributions and [@tatsushid](https://github.com/tatsushid) for his continuous improvements to the templates. Also a big thanks to all the theme creators. 11 new themes have been added since last release and the [hugoThemes repo now has previews of all of them](https://github.com/spf13/hugoThemes/blob/master/README.md#theme-list).
Hugo also depends on a lot of other great projects. A big thanks to all of our dependencies inclding:
-[cobra](https://github.com/spf13/cobra), [viper](https://github.com/spf13/viper), [blackfriday](https://github.com/russross/blackfriday), [pflag](https://github.com/spf13/pflag), [HugoThemes](https://github.com/spf13/hugothemes), [BurntSushi/Toml](github.com/BurntSushi/toml), [goYaml](https://github.com/go-yaml/yaml/tree/v2), and the Go standard library.
+[cobra](https://github.com/spf13/cobra), [viper](https://github.com/spf13/viper), [blackfriday](https://github.com/russross/blackfriday), [pflag](https://github.com/spf13/pflag), [HugoThemes](https://github.com/spf13/hugothemes), [BurntSushi/Toml](https://github.com/BurntSushi/toml), [goYaml](https://github.com/go-yaml/yaml/tree/v2), and the Go standard library.
## New features
- Support for all file types in content directory.
---
-author: bep
categories: ["Releases"]
date: 2016-10-07T13:54:06-04:00
description: "Hugo now supports multilingual sites with the most simple and elegant experience."
link: ""
title: "0.17: Hugo is going global"
-draft: false
aliases: [/0-17/]
---
Hugo is going global with our 0.17 release. We put a lot of thought into how we could extend Hugo
description: "The primary new feature in Hugo 0.18 is that every piece of content is now a Page."
link: ""
title: "Hugo 0.18"
-draft: false
-author: bep
aliases: [/0-18/]
---
description: "Hugo 0.19 brings native Emacs Org-mode content support, and Hugo has its own Twitter account"
link: ""
title: "Hugo 0.19"
-draft: false
-author: budparr
aliases: [/0-19/]
---
description: "Hugo 0.20 introduces the powerful and long sought after feature Custom Output Formats"
link: ""
title: "Hugo 0.20"
-draft: false
-author: bep
aliases: [/0-20/]
---
-Hugo `0.20` introduces the powerful and long sought after feature [Custom Output Formats](http://gohugo.io/extras/output-formats/); Hugo isn’t just that “static HTML with an added RSS feed” anymore. _Say hello_ to calendars, e-book formats, Google AMP, and JSON search indexes, to name a few ( [#2828](//github.com/gohugoio/hugo/issues/2828) ).
+Hugo `0.20` introduces the powerful and long sought after feature [Custom Output Formats](http://gohugo.io/extras/output-formats/); Hugo isn’t just that “static HTML with an added RSS feed” anymore. _Say hello_ to calendars, e-book formats, Google AMP, and JSON search indexes, to name a few ( [#2828](https://github.com/gohugoio/hugo/issues/2828) ).
This release represents **over 180 contributions by over 30 contributors** to the main Hugo code base. Since last release Hugo has **gained 1100 stars, 20 new contributors and 5 additional themes.**
* 495+ contributors
* 156+ themes
-[@bep](//github.com/bep) still leads the Hugo development with his witty Norwegian humor, and once again contributed a significant amount of additions. Also a big shoutout to [@digitalcraftsman](//github.com/digitalcraftsman) for his relentless work on keeping the documentation and the themes site in pristine condition, and [@moorereason](//github.com/moorereason) and [@bogem](//github.com/bogem) for their ongoing contributions.
+[@bep](https://github.com/bep) still leads the Hugo development with his witty Norwegian humor, and once again contributed a significant amount of additions. Also a big shoutout to [@digitalcraftsman](https://github.com/digitalcraftsman) for his relentless work on keeping the documentation and the themes site in pristine condition, and [@moorereason](https://github.com/moorereason) and [@bogem](https://github.com/bogem) for their ongoing contributions.
## Other Highlights
-[@bogem](//github.com/bogem) has also contributed TOML as an alternative and much simpler format for language/i18n files ([#3200](//github.com/gohugoio/hugo/issues/3200)). A feature you will appreciate when you start to work on larger translations.
+[@bogem](https://github.com/bogem) has also contributed TOML as an alternative and much simpler format for language/i18n files ([#3200](https://github.com/gohugoio/hugo/issues/3200)). A feature you will appreciate when you start to work on larger translations.
-Also, there have been some important updates in the Emacs Org-mode handling: [@chaseadamsio](//github.com/chaseadamsio) has fixed the newline-handling ( [#3126](//github.com/gohugoio/hugo/issues/3126) ) and [@clockoon](//github.com/clockoon) has added basic footnote support.
+Also, there have been some important updates in the Emacs Org-mode handling: [@chaseadamsio](https://github.com/chaseadamsio) has fixed the newline-handling ( [#3126](https://github.com/gohugoio/hugo/issues/3126) ) and [@clockoon](https://github.com/clockoon) has added basic footnote support.
-Worth mentioning is also the ongoing work that [@rdwatters](//github.com/rdwatters) and [@budparr](//github.com/budparr) is doing to re-do the [gohugo.io](https://gohugo.io/) site, including a total restructuring and partial rewrite of the documentation. It is getting close to finished, and it looks fantastic!
+Worth mentioning is also the ongoing work that [@rdwatters](https://github.com/rdwatters) and [@budparr](https://github.com/budparr) is doing to re-do the [gohugo.io](https://gohugo.io/) site, including a total restructuring and partial rewrite of the documentation. It is getting close to finished, and it looks fantastic!
## Notes
* The deprecated `.RSSlink` is now removed. Use `.RSSLink`.
* `RSSUri` is deprecated and will be removed in a future Hugo version, replace it with an output format definition.
* The deprecated `.Site.GetParam` is now removed, use `.Site.Param`.
-* Hugo does no longer append missing trailing slash to `baseURL` set as a command line parameter, making it consistent with how it behaves from site config. [#3262](//github.com/gohugoio/hugo/issues/3262)
+* Hugo does no longer append missing trailing slash to `baseURL` set as a command line parameter, making it consistent with how it behaves from site config. [#3262](https://github.com/gohugoio/hugo/issues/3262)
## Enhancements
* Hugo `0.20` is built with Go 1.8.1.
-* Add `.Site.Params.mainSections` that defaults to the section with the most pages. Plan is to get themes to use this instead of the hardcoded `blog` in `where` clauses. [#3206](//github.com/gohugoio/hugo/issues/3206)
-* File extension is now configurable. [#320](//github.com/gohugoio/hugo/issues/320)
-* Improve `markdownify` template function performance. [#3292](//github.com/gohugoio/hugo/issues/3292)
-* Add taxonomy terms’ pages to `.Data.Pages` [#2826](//github.com/gohugoio/hugo/issues/2826)
+* Add `.Site.Params.mainSections` that defaults to the section with the most pages. Plan is to get themes to use this instead of the hardcoded `blog` in `where` clauses. [#3206](https://github.com/gohugoio/hugo/issues/3206)
+* File extension is now configurable. [#320](https://github.com/gohugoio/hugo/issues/320)
+* Improve `markdownify` template function performance. [#3292](https://github.com/gohugoio/hugo/issues/3292)
+* Add taxonomy terms’ pages to `.Data.Pages` [#2826](https://github.com/gohugoio/hugo/issues/2826)
* Change `RSS` description from full `.Content` to `.Summary`.
-* Ignore “.” dirs in `hugo --cleanDestinationDir` [#3202](//github.com/gohugoio/hugo/issues/3202)
-* Allow `jekyll import` to accept both `2006-01-02` and `2006-1-2` date format [#2738](//github.com/gohugoio/hugo/issues/2738)
-* Raise the default `rssLimit` [#3145](//github.com/gohugoio/hugo/issues/3145)
-* Unify section list vs single template lookup order [#3116](//github.com/gohugoio/hugo/issues/3116)
-* Allow `apply` to be used with the built-in Go template funcs `print`, `printf` and `println`. [#3139](//github.com/gohugoio/hugo/issues/3139)
+* Ignore “.” dirs in `hugo --cleanDestinationDir` [#3202](https://github.com/gohugoio/hugo/issues/3202)
+* Allow `jekyll import` to accept both `2006-01-02` and `2006-1-2` date format [#2738](https://github.com/gohugoio/hugo/issues/2738)
+* Raise the default `rssLimit` [#3145](https://github.com/gohugoio/hugo/issues/3145)
+* Unify section list vs single template lookup order [#3116](https://github.com/gohugoio/hugo/issues/3116)
+* Allow `apply` to be used with the built-in Go template funcs `print`, `printf` and `println`. [#3139](https://github.com/gohugoio/hugo/issues/3139)
## Fixes
-* Fix deadlock in `getJSON` [#3211](//github.com/gohugoio/hugo/issues/3211)
-* Make sure empty terms pages are created. [#2977](//github.com/gohugoio/hugo/issues/2977)
-* Fix base template lookup order for sections [#2995](//github.com/gohugoio/hugo/issues/2995)
+* Fix deadlock in `getJSON` [#3211](https://github.com/gohugoio/hugo/issues/3211)
+* Make sure empty terms pages are created. [#2977](https://github.com/gohugoio/hugo/issues/2977)
+* Fix base template lookup order for sections [#2995](https://github.com/gohugoio/hugo/issues/2995)
* `URL` fixes:
- * Fix pagination URLs with `baseURL` with sub-root and `canonifyUrls=false` [#1252](//github.com/gohugoio/hugo/issues/1252)
- * Fix pagination URL for resources with “.” in name [#2110](//github.com/gohugoio/hugo/issues/2110) [#2374](//github.com/gohugoio/hugo/issues/2374) [#1885](//github.com/gohugoio/hugo/issues/1885)
- * Handle taxonomy names with period [#3169](//github.com/gohugoio/hugo/issues/3169)
- * Handle `uglyURLs` ambiguity in `Permalink` [#3102](//github.com/gohugoio/hugo/issues/3102)
- * Fix `Permalink` for language-roots wrong when `uglyURLs` is `true` [#3179](//github.com/gohugoio/hugo/issues/3179)
- * Fix misc case issues for `URLs` [#1641](//github.com/gohugoio/hugo/issues/1641)
- * Fix for taxonomies URLs when `uglyUrls=true` [#1989](//github.com/gohugoio/hugo/issues/1989)
- * Fix empty `RSSLink` for list pages with content page. [#3131](//github.com/gohugoio/hugo/issues/3131)
-* Correctly identify regular pages on the form “my_index_page.md” [#3234](//github.com/gohugoio/hugo/issues/3234)
-* `Exit -1` on `ERROR` in global logger [#3239](//github.com/gohugoio/hugo/issues/3239)
-* Document hugo `help command` [#2349](//github.com/gohugoio/hugo/issues/2349)
-* Fix internal `Hugo` version handling for bug fix releases. [#3025](//github.com/gohugoio/hugo/issues/3025)
-* Only return `RSSLink` for pages that actually have a RSS feed. [#1302](//github.com/gohugoio/hugo/issues/1302)
\ No newline at end of file
+ * Fix pagination URLs with `baseURL` with sub-root and `canonifyUrls=false` [#1252](https://github.com/gohugoio/hugo/issues/1252)
+ * Fix pagination URL for resources with “.” in name [#2110](https://github.com/gohugoio/hugo/issues/2110) [#2374](https://github.com/gohugoio/hugo/issues/2374) [#1885](https://github.com/gohugoio/hugo/issues/1885)
+ * Handle taxonomy names with period [#3169](https://github.com/gohugoio/hugo/issues/3169)
+ * Handle `uglyURLs` ambiguity in `Permalink` [#3102](https://github.com/gohugoio/hugo/issues/3102)
+ * Fix `Permalink` for language-roots wrong when `uglyURLs` is `true` [#3179](https://github.com/gohugoio/hugo/issues/3179)
+ * Fix misc case issues for `URLs` [#1641](https://github.com/gohugoio/hugo/issues/1641)
+ * Fix for taxonomies URLs when `uglyUrls=true` [#1989](https://github.com/gohugoio/hugo/issues/1989)
+ * Fix empty `RSSLink` for list pages with content page. [#3131](https://github.com/gohugoio/hugo/issues/3131)
+* Correctly identify regular pages on the form “my_index_page.md” [#3234](https://github.com/gohugoio/hugo/issues/3234)
+* `Exit -1` on `ERROR` in global logger [#3239](https://github.com/gohugoio/hugo/issues/3239)
+* Document hugo `help command` [#2349](https://github.com/gohugoio/hugo/issues/2349)
+* Fix internal `Hugo` version handling for bug fix releases. [#3025](https://github.com/gohugoio/hugo/issues/3025)
+* Only return `RSSLink` for pages that actually have a RSS feed. [#1302](https://github.com/gohugoio/hugo/issues/1302)
description: "Hugo 0.20.1 is a bug fix release, fixing some important regressions introduced in 0.20"
link: ""
title: "Hugo 0.20.1"
-draft: false
-author: bep
aliases: [/0-20-1/]
---
-* Fix logic for base template in work dir vs in the theme [#3323](//github.com/gohugoio/hugo/issues/3323)
-* camelCased templates (partials, shortcodes etc.) not found [#3333](//github.com/gohugoio/hugo/issues/3333)
-* Live-reload fails with `_index.md` with paginator [#3315](//github.com/gohugoio/hugo/issues/3315)
-* `rssURI` WARNING always shown [#3319](//github.com/gohugoio/hugo/issues/3319)
\ No newline at end of file
+* Fix logic for base template in work dir vs in the theme [#3323](https://github.com/gohugoio/hugo/issues/3323)
+* camelCased templates (partials, shortcodes etc.) not found [#3333](https://github.com/gohugoio/hugo/issues/3333)
+* Live-reload fails with `_index.md` with paginator [#3315](https://github.com/gohugoio/hugo/issues/3315)
+* `rssURI` WARNING always shown [#3319](https://github.com/gohugoio/hugo/issues/3319)
description: "Hugo 0.20.2 adds support for plain text partials included into HTML templates"
link: ""
title: "Hugo 0.20.2"
-draft: false
-author: bep
aliases: [/0-20-2/]
---
-Hugo `0.20.2` adds support for plain text partials included into `HTML` templates. This was a side-effect of the big new [Custom Output Format](https://gohugo.io/extras/output-formats/) feature in `0.20`, and while the change was intentional and there was an ongoing discussion about fixing it in [#3273](//github.com/gohugoio/hugo/issues/3273), it did break some themes. There were valid workarounds for these themes, but we might as well get it right.
+Hugo `0.20.2` adds support for plain text partials included into `HTML` templates. This was a side-effect of the big new [Custom Output Format](https://gohugo.io/extras/output-formats/) feature in `0.20`, and while the change was intentional and there was an ongoing discussion about fixing it in [#3273](https://github.com/gohugoio/hugo/issues/3273), it did break some themes. There were valid workarounds for these themes, but we might as well get it right.
The most obvious use case for this is inline `CSS` styles, which you now can do without having to name your partials with a `html` suffix.
{{ with .OutputFormats.Get "css" }}
<link rel="{{ .Rel }}" type="{{ .MediaType.Type }}" href="{{ .Permalink | safeURL }}">
- {{ end }}`
\ No newline at end of file
+ {{ end }}`
description: "This is a bug-fix release with one important fix. But it also adds some harness around GoReleaser"
link: ""
title: "Hugo 0.20.3"
-draft: false
-author: bep
aliases: [/0-20-3/]
---
## Fix
-* Fix handling of zero-length files [9bf5c381](https://github.com/gohugoio/hugo/commit/9bf5c381b6b3e69d4d8dbfd7a40074ac44792bbf) [@bep](https://github.com/bep) [#3355](https://github.com/gohugoio/hugo/issues/3355)
\ No newline at end of file
+* Fix handling of zero-length files [9bf5c381](https://github.com/gohugoio/hugo/commit/9bf5c381b6b3e69d4d8dbfd7a40074ac44792bbf) [@bep](https://github.com/bep) [#3355](https://github.com/gohugoio/hugo/issues/3355)
description: "This is the second bug-fix release of the day, fixing a couple of issues related to the new release scripts"
link: ""
title: "Hugo 0.20.4"
-draft: false
-author: bep
aliases: [/0-20-4/]
---
* Fix statically linked binaries [275bcf56](https://github.com/gohugoio/hugo/commit/275bcf566c7cb72367d4423cf4810319311ff680) [@munnerz](https://github.com/munnerz) [#3382](https://github.com/gohugoio/hugo/issues/3382)
* Filename change in Hugo 0.20.3 binaries [#3385](https://github.com/gohugoio/hugo/issues/3385)
-* Fix version calculation [cb3c6b6f](https://github.com/gohugoio/hugo/commit/cb3c6b6f7670f85189a4a3637e7132901d1ed6e9) [@bep](https://github.com/bep)
\ No newline at end of file
+* Fix version calculation [cb3c6b6f](https://github.com/gohugoio/hugo/commit/cb3c6b6f7670f85189a4a3637e7132901d1ed6e9) [@bep](https://github.com/bep)
description: ""
link: ""
title: "Hugo 0.20.5"
-draft: false
-author: bep
aliases: [/0-20-5/]
---
-This is a bug-fix release which fixes the version number of `0.20.4` (which wrongly shows up as `0.21-DEV`) ([#3388](https://github.com/gohugoio/hugo/issues/3388)).
\ No newline at end of file
+This is a bug-fix release which fixes the version number of `0.20.4` (which wrongly shows up as `0.21-DEV`) ([#3388](https://github.com/gohugoio/hugo/issues/3388)).
description: ""
link: ""
title: "Hugo 0.20.6"
-draft: false
-author: bep
aliases: [/0-20-6/]
---
* Avoid index.md in /index/index.html [#3396](https://github.com/gohugoio/hugo/issues/3396)
* Make missing GitInfo a WARNING [b30ca4be](https://github.com/gohugoio/hugo/commit/b30ca4bec811dbc17e9fd05925544db2b75e0e49) [@bep](https://github.com/bep) [#3376](https://github.com/gohugoio/hugo/issues/3376)
-* Fix some of the fpm fields for deb [3bd1d057](https://github.com/gohugoio/hugo/commit/3bd1d0571d5f2f6bf0dc8f90a8adf2dbfcb2fdfd) [@anthonyfok](https://github.com/anthonyfok)
\ No newline at end of file
+* Fix some of the fpm fields for deb [3bd1d057](https://github.com/gohugoio/hugo/commit/3bd1d0571d5f2f6bf0dc8f90a8adf2dbfcb2fdfd) [@anthonyfok](https://github.com/anthonyfok)
description: "This just fixes an issue with the release scripts, no change in the binaries"
link: ""
title: "Hugo 0.20.7"
-draft: false
-author: bep
aliases: [/0-20-7/]
---
## Fix
-* Push the tag before goreleaser is run [3682bf52](https://github.com/gohugoio/hugo/commit/3682bf527989e86d9da32d76809306cb576383e8) [@bep](https://github.com/bep) [#3405](https://github.com/gohugoio/hugo/issues/3405)
\ No newline at end of file
+* Push the tag before goreleaser is run [3682bf52](https://github.com/gohugoio/hugo/commit/3682bf527989e86d9da32d76809306cb576383e8) [@bep](https://github.com/bep) [#3405](https://github.com/gohugoio/hugo/issues/3405)
description: "Hugo 0.21 brings full support for shortcodes per Output Format, the last vital piece of that puzzle"
link: ""
title: "Hugo 0.21"
-draft: false
-author: bep
aliases: [/0-21/]
---
### Other
* Fix data race in live-reload close, avoiding some rare panics [355736ec](https://github.com/gohugoio/hugo/commit/355736ec357c81dfb2eb6851ee019d407090c5ec) [@bep](https://github.com/bep) [#2625](https://github.com/gohugoio/hugo/issues/2625)
-* Skip `.git` directories in file scan [94b5be67](https://github.com/gohugoio/hugo/commit/94b5be67fc73b87d114d94a7bb1a33ab997f30f1) [@bogem](https://github.com/bogem) [#3468](https://github.com/gohugoio/hugo/issues/3468)
\ No newline at end of file
+* Skip `.git` directories in file scan [94b5be67](https://github.com/gohugoio/hugo/commit/94b5be67fc73b87d114d94a7bb1a33ab997f30f1) [@bogem](https://github.com/bogem) [#3468](https://github.com/gohugoio/hugo/issues/3468)
description: "Hugo 0.22 brings nested sections, by popular demand and a long sought after feature"
link: ""
title: "Hugo 0.22"
-draft: false
-author: bep
aliases: [/0-22/]
---
### Docs
-* Fix parameter name in `YouTube` shortcode section [37e37877](https://github.com/gohugoio/hugo/commit/37e378773fbc127863f2b7a389d5ce3a14674c73) [@zivbk1](https://github.com/zivbk1)
\ No newline at end of file
+* Fix parameter name in `YouTube` shortcode section [37e37877](https://github.com/gohugoio/hugo/commit/37e378773fbc127863f2b7a389d5ce3a14674c73) [@zivbk1](https://github.com/zivbk1)
description: "Hugo 0.22.1 fixes a couple of issues reported after the 0.22 release"
link: ""
title: "Hugo 0.22.1"
-draft: false
-author: bep
aliases: [/0-22-1/]
---
* Support sub-sections in permalink settings [1f26420d](https://github.com/gohugoio/hugo/commit/1f26420d392a5ab4c7b7fe1911c0268b45d01ab8) [@bep](https://github.com/bep) [#3580](https://github.com/gohugoio/hugo/issues/3580)
* Adjust rlimit to 64000 [ff54b6bd](https://github.com/gohugoio/hugo/commit/ff54b6bddcefab45339d8dc2b13776b92bdc04b9) [@bep](https://github.com/bep) [#3582](https://github.com/gohugoio/hugo/issues/3582)
* Make error on setting rlimit a warning only [629e1439](https://github.com/gohugoio/hugo/commit/629e1439e819a7118ae483381d4634f16d3474dd) [@bep](https://github.com/bep) [#3582](https://github.com/gohugoio/hugo/issues/3582)
-* Revert: Remove the rlimit tweaking on macOS [26aa06a3](https://github.com/gohugoio/hugo/commit/26aa06a3db57ab7134a900d641fa2976f7971520) [@bep](https://github.com/bep) [#3582](https://github.com/gohugoio/hugo/issues/3582)
\ No newline at end of file
+* Revert: Remove the rlimit tweaking on macOS [26aa06a3](https://github.com/gohugoio/hugo/commit/26aa06a3db57ab7134a900d641fa2976f7971520) [@bep](https://github.com/bep) [#3582](https://github.com/gohugoio/hugo/issues/3582)
description: "Hugo 0.23 is mainly a release that handles all the small changes needed to get Hugo moved to a GitHub organisation"
link: ""
title: "Hugo 0.23"
-draft: false
-author: bep
aliases: [/0-23/]
---
* Update README to point to gohugoio/hugo [93643860](https://github.com/gohugoio/hugo/commit/93643860c9db10c6c32176b17cc83f1c317279bd) [@bep](https://github.com/bep)
* Update examples to point to gohugoio/hugo [db46bcf8](https://github.com/gohugoio/hugo/commit/db46bcf82d060656d4bc731550e63ec9cf8576f2) [@bep](https://github.com/bep)
* Update textual references in Go source to point to gohugoio/hugo [c17ad675](https://github.com/gohugoio/hugo/commit/c17ad675e8fcdb2db40fc50816b8f016bc14294c) [@bep](https://github.com/bep)
-* Update import paths to gohugoio/hugo [d8717cd4](https://github.com/gohugoio/hugo/commit/d8717cd4c74e80ea8e20adead9321412a2d76022) [@bep](https://github.com/bep)
\ No newline at end of file
+* Update import paths to gohugoio/hugo [d8717cd4](https://github.com/gohugoio/hugo/commit/d8717cd4c74e80ea8e20adead9321412a2d76022) [@bep](https://github.com/bep)
description: "The Revival of the Archetypes!"
link: ""
title: "Hugo 0.24"
-draft: false
-author: bep
aliases: [/0-24/]
---
## Fixes
* Fix error handling for `JSON` front matter [fb53987a](https://github.com/gohugoio/hugo/commit/fb53987a4ff2acb9da8dec6ec7b11924d37352ce) [@bep](https://github.com/bep) [#3610](https://github.com/gohugoio/hugo/issues/3610)
-* Fix handling of quoted brackets in `JSON` front matter [3183b9a2](https://github.com/gohugoio/hugo/commit/3183b9a29d8adac962fbc73f79b04542f4c4c55d) [@bep](https://github.com/bep) [#3511](https://github.com/gohugoio/hugo/issues/3511)
\ No newline at end of file
+* Fix handling of quoted brackets in `JSON` front matter [3183b9a2](https://github.com/gohugoio/hugo/commit/3183b9a29d8adac962fbc73f79b04542f4c4c55d) [@bep](https://github.com/bep) [#3511](https://github.com/gohugoio/hugo/issues/3511)
description: "This release fixes some important archetype-related regressions from Hugo 0.24"
link: ""
title: "Hugo 0.24.1"
-draft: false
-author: bep
aliases: [/0-24-1/]
---
## Enhancements
-* Create default archetype on new site [bfa336d9](https://github.com/gohugoio/hugo/commit/bfa336d96173377b9bbe2298dbd101f6a718c174) [@bep](https://github.com/bep) [#3626](https://github.com/gohugoio/hugo/issues/3626)
\ No newline at end of file
+* Create default archetype on new site [bfa336d9](https://github.com/gohugoio/hugo/commit/bfa336d96173377b9bbe2298dbd101f6a718c174) [@bep](https://github.com/bep) [#3626](https://github.com/gohugoio/hugo/issues/3626)
description: "Hugo 0.25 automatically opens the page you're working on in the browser"
link: ""
title: "Hugo 0.25"
-draft: false
-author: bep
aliases: [/0-25/]
---
### Other
* Fix handling of `JSON` front matter with escaped quotes [e10e51a0](https://github.com/gohugoio/hugo/commit/e10e51a00827b9fdc1bee51439fef05afc529831) [@bep](https://github.com/bep) [#3661](https://github.com/gohugoio/hugo/issues/3661)
-* Fix typo in code comment [56d82aa0](https://github.com/gohugoio/hugo/commit/56d82aa025f4d2edb1dc6315132cd7ab52df649a) [@dvic](https://github.com/dvic)
\ No newline at end of file
+* Fix typo in code comment [56d82aa0](https://github.com/gohugoio/hugo/commit/56d82aa025f4d2edb1dc6315132cd7ab52df649a) [@dvic](https://github.com/dvic)
---
-date: 2017-07-10T17:53:58-04:00
categories: ["Releases"]
description: "This is a bug-fix release with a couple of important fixes"
link: ""
title: "Hugo 0.25.1"
-draft: false
-author: bep
aliases: [/0-25-1/]
---
* Fix union when the first slice is empty [dbbc5c48](https://github.com/gohugoio/hugo/commit/dbbc5c4810a04ac06fad7500d88cf5c3bfe0c7fd) [@bep](https://github.com/bep) [#3686](https://github.com/gohugoio/hugo/issues/3686)
* Navigate to changed on CREATE When working with content from IntelliJ IDE, like WebStorm, every file save is followed by two events: "RENAME" and then "CREATE". [7bcc1ce6](https://github.com/gohugoio/hugo/commit/7bcc1ce659710f2220b400ce3b76e50d2e48b241) [@miltador](https://github.com/miltador)
* Final (!) fix for issue with escaped JSON front matter [7f82b41a](https://github.com/gohugoio/hugo/commit/7f82b41a24af0fd04d28fbfebf9254766a3c6e6f) [@bep](https://github.com/bep) [#3682](https://github.com/gohugoio/hugo/issues/3682)
-* Fix issue with escaped JSON front matter [84db6c74](https://github.com/gohugoio/hugo/commit/84db6c74a084d2b52117b999d4ec343cd3389a68) [@bep](https://github.com/bep) [#3682](https://github.com/gohugoio/hugo/issues/3682)
\ No newline at end of file
+* Fix issue with escaped JSON front matter [84db6c74](https://github.com/gohugoio/hugo/commit/84db6c74a084d2b52117b999d4ec343cd3389a68) [@bep](https://github.com/bep) [#3682](https://github.com/gohugoio/hugo/issues/3682)
Another useful addon is the `$pages.Next` and `$pages.Prev` methods on the core page collections in Hugo. These works the same way as the built-in static variants one `Page`, e.g. `.Next` and `.NextInSection`:
```
-{{with .Site.RegularPages.Next . }}{{.RelPermalink}}{{end}}
+{{ with .Site.RegularPages.Next . }}{{ .RelPermalink }}{{ end }}
```
The above is a functionally equivalent (but slightly slower) variant of:
```
-{{with .Next }}{{.RelPermalink}}{{end}}
+{{ with .Next }}{{ .RelPermalink }}{{ end }}
```
See [Pages Methods](https://gohugo.io/variables/pages/) for more information.
* Fix cache key transformed resources [6dec671f](https://github.com/gohugoio/hugo/commit/6dec671fb930029e18ba9aa5135b3a27adcddb21) [@bep](https://github.com/bep) [#6348](https://github.com/gohugoio/hugo/issues/6348)
* Fix cache keys for bundled resoures in transform.Unmarshal [c0d75736](https://github.com/gohugoio/hugo/commit/c0d7573677e9726c14749ccd432dccb75e0d194d) [@bep](https://github.com/bep) [#6327](https://github.com/gohugoio/hugo/issues/6327)
* Fix concat with fingerprint regression [3be2c253](https://github.com/gohugoio/hugo/commit/3be2c25351b421a26ee1ff2a38cbab00280c0583) [@bep](https://github.com/bep) [#6309](https://github.com/gohugoio/hugo/issues/6309)
-
-
-
-
-
categories: ["Releases"]
---
-**Note:** There is already a [patch release](/news/0.63.1-relnotes/) with some fixes.
-
Hugo `0.63` is, in general, **considerably faster and more memory effective** (see the site-building benchmarks below comparing it to `v0.62`). Not that we are particularly concerned about Hugo's build speed. We leave that to others. But we would hate if it got slower, so we have a comprehensive benchmark suite. And when we needed to simplify the template handling code to solve a concurrency issue, it also became more effective. And as a bonus, we also finally got the [base template lookup order](https://gohugo.io/templates/base/#base-template-lookup-order) that you really, really wanted!
```bash
* Fix 0.62.1 server rebuild slowdown regression [17af79a0](https://github.com/gohugoio/hugo/commit/17af79a03e249a731cf5634ffea23ca00774333d) [@bep](https://github.com/bep) [#6784](https://github.com/gohugoio/hugo/issues/6784)
* Fix blog not building [d61bee5e](https://github.com/gohugoio/hugo/commit/d61bee5e0916b5d2b388e66ef85c336312a21a06) [@colonelpopcorn](https://github.com/colonelpopcorn) [#6752](https://github.com/gohugoio/hugo/issues/6752)
-
-
-
-
-
categories: ["Releases"]
---
-The last Hugo release of the year brings a new [images.Overlay](https://gohugo.io/functions/images/#overlay) filter to overlay an image on top of another, e.g. for watermarking, and [Dart Sass](https://gohugo.io/hugo-pipes/scss-sass/#options) support.
+The last Hugo release of the year brings a new [images.Overlay](https://gohugo.io/functions/images/#overlay) filter to overlay an image on top of another, e.g. for watermarking, and [Dart Sass](https://gohugo.io/hugo-pipes/toCSS/#options) support.
This release represents **29 contributions by 12 contributors** to the main Hugo code base. [@bep](https://github.com/bep) leads the Hugo development with a significant amount of contributions, but also a big shoutout to [@moorereason](https://github.com/moorereason), and [@davidsneighbour](https://github.com/davidsneighbour) for their ongoing contributions.
And a big thanks to [@digitalcraftsman](https://github.com/digitalcraftsman) for his relentless work on keeping the themes site in pristine condition and to [@davidsneighbour](https://github.com/davidsneighbour), [@coliff](https://github.com/coliff) and [@kaushalmodi](https://github.com/kaushalmodi) for all the great work on the documentation site.
## Notes
-* We have updated to Beta 6 of the Dart Sass Protocol which is not backwards compatible, so if you use Dart Sass you need to also update [that binary](https://gohugo.io/hugo-pipes/scss-sass/#options).
+* We have updated to Beta 6 of the Dart Sass Protocol which is not backwards compatible, so if you use Dart Sass you need to also update [that binary](https://gohugo.io/hugo-pipes/toCSS/#options).
* `hugo gen autocomplete` now default to `stdout`; you can change this by setting `--completionfile`. As an added bonus we now also support auto completion for zsh, fish and powershell.
## Changelog
title: "Let’s celebrate Hugo’s 5th birthday"
description: "How a side project became one of the most popular frameworks for building websites."
categories: [blog]
-author: bep
---
_By Bjørn Erik Pedersen ([@bepsays](https://twitter.com/bepsays) / [@bep](https://github.com/bep)), Hugo Lead_
These are the items that first come to mind if you ask me to think even further ahead:
Dependency manager for Theme Components
-: In Hugo `0.42` we added [Theme Components](/themes/theme-components/) and Theme Inheritance. With SCSS support in Hugo `0.43`, which also follows the same project/themes precedence order (add `_variables.scss` to your project, configure SASS colour variables in `config.toml`), we have a solid foundation for creating easy to use and extensible themes. But we are missing some infrastructure around this. We have a site with 235+ [themes](https://themes.gohugo.io/)[^themes] listed, but you currently need to do some added work to get the theme up and running for your site. In the Go world, we don't have NPM to use, which is a curse and a blessing, but I have some ideas about building a simple dependency manager into Hugo, modelled after how Go is doing it (`hugo install`). You should be able to configure what theme and theme components you want to use, and Hugo should handle the installation of the correct versions. This should make it easier for the user, but it would also enable community driven and even commercial "theme stores".
+: In Hugo `0.42` we added [Theme Components](/hugo-modules/theme-components) and Theme Inheritance. With SCSS support in Hugo `0.43`, which also follows the same project/themes precedence order (add `_variables.scss` to your project, configure SASS colour variables in `config.toml`), we have a solid foundation for creating easy to use and extensible themes. But we are missing some infrastructure around this. We have a site with 235+ [themes](https://themes.gohugo.io/)[^themes] listed, but you currently need to do some added work to get the theme up and running for your site. In the Go world, we don't have NPM to use, which is a curse and a blessing, but I have some ideas about building a simple dependency manager into Hugo, modelled after how Go is doing it (`hugo install`). You should be able to configure what theme and theme components you want to use, and Hugo should handle the installation of the correct versions. This should make it easier for the user, but it would also enable community driven and even commercial "theme stores".
{{< imgproc graph-themes Fit "600x400" >}}
To continue with the example above:
```go-html-template
-{{.Date.Format "Jan 2nd 2006"}}
+{{ .Date.Format "Jan 2nd 2006" }}
```
Hugo assumes you want to append `nd` as a string to the day of the month and outputs the following:
```txt
-Mar 3nd 2017
+Mar 2nd 2017
```
### Use `.Local` and `.UTC`
title: Custom 404 Page
linktitle: 404 Page
description: If you know how to create a single page template, you have unlimited options for creating a custom 404.
-date: 2017-02-01
-publishdate: 2017-02-01
categories: [templates]
keywords: [404, page not found]
menu:
docs:
- parent: "templates"
+ parent: templates
weight: 120
-weight: 120 #rem
-draft: false
-aliases: []
-toc: false
+weight: 120
---
When using Hugo with [GitHub Pages](https://pages.github.com/), you can provide your own template for a [custom 404 error page](https://docs.github.com/en/pages/getting-started-with-github-pages/creating-a-custom-404-page-for-your-github-pages-site) by creating a 404.html template file in the root of your `layouts` folder. When Hugo generates your site, the `404.html` file will be placed in the root.
This is a basic example of a 404.html template:
-{{< code file="layouts/404.html" download="404.html" >}}
-{{ define "main"}}
- <main id="main">
- <div>
- <h1 id="title"><a href="{{ "" | relURL }}">Go Home</a></h1>
- </div>
- </main>
+{{< code file="layouts/404.html" >}}
+{{ define "main" }}
+ <main id="main">
+ <div>
+ <h1 id="title"><a href="{{ "" | relURL }}">Go Home</a></h1>
+ </div>
+ </main>
{{ end }}
{{< /code >}}
Your 404.html file can be set to load automatically when a visitor enters a mistaken URL path, dependent upon the web serving environment you are using. For example:
-* [GitHub Pages](/hosting-and-deployment/hosting-on-github/) and [GitLab Pages](/hosting-and-deployment/hosting-on-gitlab/). The 404 page is automatic.
+* [GitHub Pages](/hosting-and-deployment/hosting-on-github/), [GitLab Pages](/hosting-and-deployment/hosting-on-gitlab/) and [Cloudflare Pages](/hosting-and-deployment/hosting-on-cloudflare-pages/). The 404 page is automatic.
* Apache. You can specify `ErrorDocument 404 /404.html` in an `.htaccess` file in the root of your site.
* Nginx. You might specify `error_page 404 /404.html;` in your `nginx.conf` file. [Details here](https://nginx.org/en/docs/http/ngx_http_core_module.html#error_page).
* Amazon AWS S3. When setting a bucket up for static web serving, you can specify the error file from within the S3 GUI.
* DigitalOcean App Platform. You can specify `error_document` in your app specification file or use control panel to set up error document. [Details here](https://docs.digitalocean.com/products/app-platform/how-to/manage-static-sites/#configure-a-static-site).
* [Firebase Hosting](https://firebase.google.com/docs/hosting/full-config#404): `/404.html` automatically gets used as the 404 page.
-{{% note %}}
-`hugo server` will not automatically load your custom `404.html` file, but you
-can test the appearance of your custom "not found" page by navigating your
-browser to `/404.html`.
-{{% /note %}}
-
[pagevars]: /variables/page/
title: Templates
linktitle: Templates Overview
description: Go templating, template types and lookup order, shortcodes, and data.
-date: 2017-02-01
-publishdate: 2017-02-01
-lastmod: 2017-02-01
menu:
docs:
- parent: "templates"
+ parent: templates
weight: 01
-weight: 01 #rem
+weight: 01
categories: [templates]
keywords: []
-draft: false
aliases: [/templates/overview/,/templates/content]
-toc: false
-notesforauthors:
---
---
title: Base Templates and Blocks
-linktitle:
description: The base and block constructs allow you to define the outer shell of your master templates (i.e., the chrome of the page).
-date: 2017-02-01
-publishdate: 2017-02-01
categories: [templates,fundamentals]
keywords: [blocks,base]
menu:
docs:
- parent: "templates"
+ parent: templates
weight: 20
weight: 20
-sections_weight: 20
-draft: false
aliases: [/templates/blocks/,/templates/base-templates-and-blocks/]
toc: true
---
The following defines a simple base template at `_default/baseof.html`. As a default template, it is the shell from which all your pages will be rendered unless you specify another `*baseof.html` closer to the beginning of the lookup order.
-{{< code file="layouts/_default/baseof.html" download="baseof.html" >}}
+{{< code file="layouts/_default/baseof.html" >}}
<!DOCTYPE html>
<html>
<head>
From the above base template, you can define a [default list template][hugolists]. The default list template will inherit all of the code defined above and can then implement its own `"main"` block from:
-{{< code file="layouts/_default/list.html" download="list.html" >}}
+{{< code file="layouts/_default/list.html" >}}
{{ define "main" }}
<h1>Posts</h1>
{{ range .Pages }}
This replaces the contents of our (basically empty) "main" block with something useful for the list template. In this case, we didn't define a `"title"` block, so the contents from our base template remain unchanged in lists.
-{{% warning %}}
+{{% note %}}
Code that you put outside the block definitions *can* break your layout. This even includes HTML comments. For example:
```go-html-template
{{ end }}
```
[See this thread from the Hugo discussion forums.](https://discourse.gohugo.io/t/baseof-html-block-templates-and-list-types-results-in-empty-pages/5612/6)
-{{% /warning %}}
+{{% /note %}}
The following shows how you can override both the `"main"` and `"title"` block areas from the base template with code unique to your [default single page template][singletemplate]:
-{{< code file="layouts/_default/single.html" download="single.html" >}}
+{{< code file="layouts/_default/single.html" >}}
{{ define "title" }}
- <!-- This will override the default value set in baseof.html; i.e., "{{.Site.Title}}" in the original example-->
+ <!-- This will override the default value set in baseof.html; i.e., "{{ .Site.Title }}" in the original example-->
{{ .Title }} – {{ .Site.Title }}
{{ end }}
{{ define "main" }}
---
title: Data Templates
-linktitle:
description: In addition to Hugo's built-in variables, you can specify your own custom data in templates or shortcodes that pull from both local and dynamic sources.
-date: 2017-02-01
-publishdate: 2017-02-01
categories: [templates]
keywords: [data,dynamic,csv,json,toml,yaml,xml]
menu:
docs:
- parent: "templates"
+ parent: templates
weight: 80
weight: 80
-sections_weight: 80
aliases: [/extras/datafiles/,/extras/datadrivencontent/,/doc/datafiles/]
toc: true
---
## Data Files in Themes
-Data Files can also be used in [Hugo themes][themes].
+Data Files can also be used in themes.
However, note that the theme data files are merged with the project directory taking precedence. That is, Given two files with the same name and relative path, the data in the file in the root project `data` directory will override the data from the file in the `themes/<THEME>/data` directory *for keys that are duplicated*).
You can use the following code to render the `Short Description` in your layout:
```go-html-template
-<div>Short Description of {{.Site.Data.User0123.Name}}: <p>{{ index .Site.Data.User0123 "Short Description" | markdownify }}</p></div>
+<div>Short Description of {{ .Site.Data.User0123.Name }}: <p>{{ index .Site.Data.User0123 "Short Description" | markdownify }}</p></div>
```
Note the use of the [`markdownify` template function][markdownify]. This will send the description through the Markdown rendering engine.
Both `getJSON` and `getCSV` takes an optional map as the last argument, e.g.:
```go-html-template
-{{ $data := getJSON "https://example.org/api" (dict "Authorization" "Bearer abcd") }}
+{{ $data := getJSON "https://example.org/api" (dict "Authorization" "Bearer abcd") }}
```
If you need multiple values for the same header key, use a slice:
```go-html-template
-{{ $data := getJSON "https://example.org/api" (dict "X-List" (slice "a" "b" "c")) }}
+{{ $data := getJSON "https://example.org/api" (dict "X-List" (slice "a" "b" "c")) }}
```
### Example for CSV files
</table>
{{< /code >}}
-The expression `{{index $r number}}` must be used to output the nth-column from the current row.
+The expression `{{ index $r number }}` must be used to output the nth-column from the current row.
### Cache URLs
{{% warning "URL Data and LiveReload" %}}
If you change any local file and the LiveReload is triggered, Hugo will read the data-driven (URL) content from the cache. If you have disabled the cache (i.e., by running the server with `hugo server --ignoreCache`), Hugo will re-download the content every time LiveReload triggers. This can create *huge* traffic. You may reach API limits quickly.
-{{% /warning %}}
+{{% /note %}}
## Examples of Data-driven Content
[config]: /getting-started/configuration/
[csv]: https://tools.ietf.org/html/rfc4180
-[customize]: /themes/customizing/
+[customize]: /hugo-modules/theme-components/
[json]: https://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf "Specification for JSON, JavaScript Object Notation"
[LiveReload]: /getting-started/usage/#livereload
[lookup]: /templates/lookup-order/
[markdownify]: /functions/markdownify/
[OAuth]: https://en.wikipedia.org/wiki/OAuth
[partials]: /templates/partials/
-[themes]: /themes/
[toml]: https://github.com/toml-lang/toml
[variadic]: https://en.wikipedia.org/wiki/Variadic_function
[vars]: /variables/
---
title: Local File Templates
-linktitle: Local File Templates
description: Hugo's `readDir` and `readFile` functions make it easy to traverse your project's directory structure and write file contents to your templates.
-date: 2017-02-01
-publishdate: 2017-02-01
-lastmod: 2017-02-01
categories: [templates]
keywords: [files,directories]
menu:
docs:
- parent: "templates"
+ parent: templates
weight: 110
weight: 110
-sections_weight: 110
-draft: false
aliases: [/extras/localfiles/,/templates/local-files/]
toc: true
---
{{</* readfile file="/path/to/local/file.txt" markdown="true" */>}}
```
-{{% warning %}}
+{{% note %}}
If you are going to create [custom shortcodes](/templates/shortcode-templates/) with `readFile` for a theme, note that usage of the shortcode will refer to the project root and *not* your `themes` directory.
-{{% /warning %}}
+{{% /note %}}
[called directly in the Hugo docs]: https://github.com/gohugoio/hugoDocs/blob/master/content/en/templates/files.md
-[dirindex]: https://github.com/gohugoio/hugo/blob/master/docs/layouts/shortcodes/directoryindex.html
[osfileinfo]: https://golang.org/pkg/os/#FileInfo
[readDir]: /functions/readdir/
[readFile]: /functions/readfile/
title: Homepage Template
linktitle: Homepage Template
description: The homepage of a website is often formatted differently than the other pages. For this reason, Hugo makes it easy for you to define your new site's homepage as a unique template.
-date: 2017-02-01
-publishdate: 2017-02-01
-lastmod: 2017-02-01
categories: [templates]
keywords: [homepage]
menu:
docs:
- parent: "templates"
+ parent: templates
weight: 30
weight: 30
-sections_weight: 30
-draft: false
aliases: [/layout/homepage/,/templates/homepage-template/]
toc: true
---
Homepage is a `Page` and therefore has all the [page variables][pagevars] and [site variables][sitevars] available for use.
-{{% note "The Only Required Template" %}}
+{{% note %}}
The homepage template is the *only* required template for building a site and therefore useful when bootstrapping a new site and template. It is also the only required template if you are developing a single-page website.
{{% /note %}}
## Example Homepage Template
-The following is an example of a homepage template that uses [partial][partials], [base] templates, and a content file at `content/_index.md` to populate the `{{.Title}}` and `{{.Content}}` [page variables][pagevars].
+The following is an example of a homepage template that uses [partial][partials], [base] templates, and a content file at `content/_index.md` to populate the `{{ .Title }}` and `{{ .Content }}` [page variables][pagevars].
-{{< code file="layouts/index.html" download="index.html" >}}
+{{< code file="layouts/index.html" >}}
{{ define "main" }}
- <main aria-role="main">
- <header class="homepage-header">
- <h1>{{.Title}}</h1>
- {{ with .Params.subtitle }}
- <span class="subtitle">{{.}}</span>
- {{ end }}
- </header>
- <div class="homepage-content">
- <!-- Note that the content for index.html, as a sort of list page, will pull from content/_index.md -->
- {{.Content}}
- </div>
- <div>
- {{ range first 10 .Site.RegularPages }}
- {{ .Render "summary"}}
- {{ end }}
- </div>
- </main>
+ <main aria-role="main">
+ <header class="homepage-header">
+ <h1>{{ .Title }}</h1>
+ {{ with .Params.subtitle }}
+ <span class="subtitle">{{ . }}</span>
+ {{ end }}
+ </header>
+ <div class="homepage-content">
+ <!-- Note that the content for index.html, as a sort of list page, will pull from content/_index.md -->
+ {{ .Content }}
+ </div>
+ <div>
+ {{ range first 10 .Site.RegularPages }}
+ {{ .Render "summary" }}
+ {{ end }}
+ </div>
+ </main>
{{ end }}
{{< /code >}}
---
title: Internal Templates
-linktitle: Internal Templates
description: Hugo ships with a group of boilerplate templates that cover the most common use cases for static websites.
-date: 2017-03-06
-publishdate: 2017-03-06
-lastmod: 2017-03-06
categories: [templates]
keywords: [internal, analytics,]
menu:
docs:
- parent: "templates"
+ parent: templates
weight: 168
weight: 168
-sections_weight: 168
-draft: false
-aliases: []
toc: true
-wip: true
---
<!-- reference: https://discourse.gohugo.io/t/lookup-order-for-partials/5705/6
code: https://github.com/gohugoio/hugo/blob/e445c35d6a0c7f5fc2f90f31226cd1d46e048bbc/tpl/template_embedded.go#L147 -->
-{{% warning %}}
+{{% note %}}
While the following internal templates are called similar to partials, they do *not* observe the partial template lookup order.
-{{% /warning %}}
+{{% /note %}}
## Google Analytics
You can create the following `layouts/partials/disqus.html`:
-{{< code file="layouts/partials/disqus.html" download="disqus.html" >}}
+{{< code file="layouts/partials/disqus.html" >}}
<div id="disqus_thread"></div>
<script type="text/javascript">
title: Introduction to Hugo Templating
linktitle: Templating
description: Hugo uses Go's `html/template` and `text/template` libraries as the basis for the templating.
-date: 2017-02-01
-publishdate: 2017-02-01
-lastmod: 2022-09-20
categories: [templates,fundamentals]
keywords: [go]
menu:
docs:
- parent: "templates"
+ parent: templates
weight: 10
weight: 10
-sections_weight: 10
-draft: false
aliases: [/layouts/introduction/,/layout/introduction/, /templates/go-templates/]
toc: true
---
### Access a Predefined Variable
A _predefined variable_ could be a variable already existing in the
-current scope (like the `.Title` example in the [Variables]({{< relref
-"#variables" >}}) section below) or a custom variable (like the
+current scope (like the `.Title` example in the [Variables](#variables) section below) or a custom variable (like the
`$address` example in that same section).
Note that both examples make use of Go Template's [math][math] functions.
-{{% note "Additional Boolean Operators" %}}
+{{% note %}}
There are more boolean operators than those listed in the Hugo docs in the [Go Template documentation](https://golang.org/pkg/text/template/#hdr-Functions).
{{% /note %}}
```go-html-template
{{ range $array }}
{{ . }}
-{{else}}
+{{ else }}
<!-- This is only evaluated if $array is empty -->
{{ end }}
```
{{< /code >}}
{{% note %}}
-Notice how once we have entered the loop (i.e. `range`), the value of `{{ . }}` has changed. We have defined a variable outside the loop (`{{$title}}`) that we've assigned a value so that we have access to the value from within the loop as well.
+Notice how once we have entered the loop (i.e. `range`), the value of `{{ . }}` has changed. We have defined a variable outside the loop (`{{ $title }}`) that we've assigned a value so that we have access to the value from within the loop as well.
{{% /note %}}
### 2. Use `$.` to Access the Global Context
{{% warning "Don't Redefine the Dot" %}}
The built-in magic of `$` would cease to work if someone were to mischievously redefine the special character; e.g. `{{ $ := .Site }}`. *Don't do it.* You may, of course, recover from this mischief by using `{{ $ := . }}` in a global context to reset `$` to its default value.
-{{% /warning %}}
+{{% /note %}}
## Whitespace
## Hugo Parameters
-Hugo provides the option of passing values to your template layer through your [site configuration][config] (i.e. for site-wide values) or through the metadata of each specific piece of content (i.e. the [front matter]). You can define any values of any type and use them however you want in your templates, as long as the values are supported by the [front matter format]({{< ref "front-matter.md#front-matter-formats" >}}).
+Hugo provides the option of passing values to your template layer through your [site configuration][config] (i.e. for site-wide values) or through the metadata of each specific piece of content (i.e. the [front matter]). You can define any values of any type and use them however you want in your templates, as long as the values are supported by the [front matter format](/content-management/front-matter#front-matter-formats).
## Use Content (`Page`) Parameters
An example of this is used in the Hugo docs. Most of the pages benefit from having the table of contents provided, but sometimes the table of contents doesn't make a lot of sense. We've defined a `notoc` variable in our front matter that will prevent a table of contents from rendering when specifically set to `true`.
-Here is the example front matter (YAML):
+Here is the example front matter:
-```yml
----
-title: Roadmap
-lastmod: 2017-03-05
-date: 2013-11-18
+{{< code-toggle file="content/example.md" fm=true copy=false >}}
+title: Example
notoc: true
----
-```
+{{< /code-toggle >}}
Here is an example of corresponding code that could be used inside a `toc.html` [partial template][partials]:
-{{< code file="layouts/partials/toc.html" download="toc.html" >}}
+{{< code file="layouts/partials/toc.html" >}}
{{ if not .Params.notoc }}
<aside>
<header>
- <a href="#{{.Title | urlize}}">
- <h3>{{.Title}}</h3>
+ <a href="#{{ .Title | urlize }}">
+ <h3>{{ .Title }}</h3>
</a>
</header>
- {{.TableOfContents}}
+ {{ .TableOfContents }}
</aside>
<a href="#" id="toc-toggle"></a>
{{ end }}
```go-html-template
{{ if .Site.Params.copyrighthtml }}
<footer>
- <div class="text-center">{{.Site.Params.CopyrightHTML | safeHTML}}</div>
+ <div class="text-center">{{ .Site.Params.CopyrightHTML | safeHTML }}</div>
</footer>
{{ end }}
```
{{< code file="layouts/partials/twitter.html" >}}
{{ with .Site.Params.twitteruser }}
<div>
- <a href="https://twitter.com/{{.}}" rel="author">
- <img src="/images/twitter.png" width="48" height="48" title="Twitter: {{.}}" alt="Twitter"></a>
+ <a href="https://twitter.com/{{ . }}" rel="author">
+ <img src="/images/twitter.png" width="48" height="48" title="Twitter: {{ . }}" alt="Twitter"></a>
</div>
{{ end }}
{{< /code >}}
<h1>Recent Posts</h1>
<ul>
{{- range first .Site.Params.SidebarRecentLimit .Site.Pages -}}
- <li><a href="{{.RelPermalink}}">{{.Title}}</a></li>
+ <li><a href="{{ .RelPermalink }}">{{ .Title }}</a></li>
{{- end -}}
</ul>
</nav>
└── event-3.md
```
-{{< code-toggle file="content/events/event-1.md" copy="false" >}}
+{{< code-toggle file="content/events/event-1.md" copy=false >}}
title = 'Event 1'
date = 2021-12-06T10:37:16-08:00
draft = false
</ul>
{{< /code >}}
-[config]: {{< relref "getting-started/configuration" >}}
[dotdoc]: https://golang.org/pkg/text/template/#hdr-Variables
-[first]: {{< relref "functions/first" >}}
-[front matter]: {{< relref "content-management/front-matter" >}}
-[functions]: {{< relref "functions" >}}
-[internal templates]: {{< relref "templates/internal" >}}
-[isset]: {{< relref "functions/isset" >}}
-[math]: {{< relref "functions/math" >}}
-[pagevars]: {{< relref "variables/page" >}}
-[param]: {{< relref "functions/param" >}}
-[partials]: {{< relref "templates/partials" >}}
-[relpermalink]: {{< relref "variables/page#page-variables" >}}
-[safehtml]: {{< relref "functions/safehtml" >}}
-[sitevars]: {{< relref "variables/site" >}}
-[variables]: {{< relref "variables" >}}
-[with]: {{< relref "functions/with" >}}
+[config]: /getting-started/configuration
+[first]: /functions/first
+[front matter]: /content-management/front-matter
+[functions]: /functions
+[internal templates]: /templates/internal
+[isset]: /functions/isset
+[math]: /functions/math
+[pagevars]: /variables/page
+[param]: /functions/param
+[partials]: /templates/partials
+[relpermalink]: /variables/page#page-variables
+[safehtml]: /functions/safehtml
+[sitevars]: /variables/site
+[variables]: /variables
+[with]: /functions/with
+++ /dev/null
----
-title: Lists of Content in Hugo
-linktitle: List Templates
-description: Lists have a specific meaning and usage in Hugo when it comes to rendering your site homepage, section page, taxonomy list, or taxonomy terms list.
-date: 2017-02-01
-publishdate: 2017-02-01
-lastmod: 2017-02-01
-categories: [templates]
-keywords: [lists,sections,rss,taxonomies,terms]
-menu:
- docs:
- parent: "templates"
- weight: 22
-weight: 22
-sections_weight: 22
-draft: false
-aliases: [/templates/list/,/layout/indexes/]
-toc: true
----
-
-## What is a List Page Template?
-
-{{< youtube 8b2YTSMdMps >}}
-
-A list page template is a template used to render multiple pieces of content in a single HTML page. The exception to this rule is the homepage, which is still a list but has its own [dedicated template][homepage].
-
-Hugo uses the term *list* in its truest sense; i.e. a sequential arrangement of material, especially in alphabetical or numerical order. Hugo uses list templates on any output HTML page where content is traditionally listed:
-
-* [Taxonomy terms pages][taxterms]
-* [Taxonomy list pages][taxlists]
-* [Section list pages][sectiontemps]
-* [RSS][rss]
-
-For template lookup order, see [Template Lookup](/templates/lookup-order/).
-
-The idea of a list page comes from the [hierarchical mental model of the web][mentalmodel] and is best demonstrated visually:
-
-[](/images/site-hierarchy.svg)
-
-## List Defaults
-
-### Default Templates
-
-Since section lists and taxonomy lists (N.B., *not* [taxonomy terms lists][taxterms]) are both *lists* with regards to their templates, both have the same terminating default of `_default/list.html` or `themes/<THEME>/layouts/_default/list.html` in their lookup order. In addition, both [section lists][sectiontemps] and [taxonomy lists][taxlists] have their own default list templates in `_default`.
-
-See [Template Lookup Order](/templates/lookup-order/) for the complete reference.
-
-## Add Content and Front Matter to List Pages
-
-Since v0.18, [everything in Hugo is a `Page`][bepsays]. This means list pages and the homepage can have associated content files (i.e. `_index.md`) that contain page metadata (i.e., front matter) and content.
-
-This new model allows you to include list-specific front matter via `.Params` and also means that list templates (e.g., `layouts/_default/list.html`) have access to all [page variables][pagevars].
-
-{{% note %}}
-It is important to note that all `_index.md` content files will render according to a *list* template and not according to a [single page template](/templates/single-page-templates/).
-{{% /note %}}
-
-### Example Project Directory
-
-The following is an example of a typical Hugo project directory's content:
-
-```txt
-.
-...
-├── content
-| ├── posts
-| | ├── _index.md
-| | ├── post-01.md
-| | └── post-02.md
-| └── quote
-| | ├── quote-01.md
-| | └── quote-02.md
-...
-```
-
-Using the above example, let's assume you have the following in `content/posts/_index.md`:
-
-{{< code file="content/posts/_index.md" >}}
----
-title: My Go Journey
-date: 2017-03-23
-publishdate: 2017-03-24
----
-
-I decided to start learning Go in March 2017.
-
-Follow my journey through this new blog.
-{{< /code >}}
-
-You can now access this `_index.md`'s' content in your list template:
-
-{{< code file="layouts/_default/list.html" download="list.html" >}}
-{{ define "main" }}
-<main>
- <article>
- <header>
- <h1>{{.Title}}</h1>
- </header>
- <!-- "{{.Content}}" pulls from the markdown content of the corresponding _index.md -->
- {{.Content}}
- </article>
- <ul>
- <!-- Ranges through content/posts/*.md -->
- {{ range .Pages }}
- <li>
- <a href="{{.Permalink}}">{{.Date.Format "2006-01-02"}} | {{.Title}}</a>
- </li>
- {{ end }}
- </ul>
-</main>
-{{ end }}
-{{< /code >}}
-
-This above will output the following HTML:
-
-{{< code file="example.com/posts/index.html" copy="false" >}}
-<!--top of your baseof code-->
-<main>
- <article>
- <header>
- <h1>My Go Journey</h1>
- </header>
- <p>I decided to start learning Go in March 2017.</p>
- <p>Follow my journey through this new blog.</p>
- </article>
- <ul>
- <li><a href="/posts/post-01/">Post 1</a></li>
- <li><a href="/posts/post-02/">Post 2</a></li>
- </ul>
-</main>
-<!--bottom of your baseof-->
-{{< /code >}}
-
-### List Pages Without `_index.md`
-
-You do *not* have to create an `_index.md` file for every list page (i.e. section, taxonomy, taxonomy terms, etc) or the homepage. If Hugo does not find an `_index.md` within the respective content section when rendering a list template, the page will be created but with no `{{.Content}}` and only the default values for `.Title` etc.
-
-Using this same `layouts/_default/list.html` template and applying it to the `quotes` section above will render the following output. Note that `quotes` does not have an `_index.md` file to pull from:
-
-{{< code file="example.com/quote/index.html" copy="false" >}}
-<!--baseof-->
-<main>
- <article>
- <header>
- <!-- Hugo assumes that .Title is the name of the section since there is no _index.md content file from which to pull a "title:" field -->
- <h1>Quotes</h1>
- </header>
- </article>
- <ul>
- <li><a href="https://example.com/quote/quotes-01/">Quote 1</a></li>
- <li><a href="https://example.com/quote/quotes-02/">Quote 2</a></li>
- </ul>
-</main>
-<!--baseof-->
-{{< /code >}}
-
-{{% note %}}
-The default behavior of Hugo is to pluralize list titles; hence the inflection of the `quote` section to "Quotes" when called with the `.Title` [page variable](/variables/page/). You can change this via the `pluralizeListTitles` directive in your [site configuration](/getting-started/configuration/).
-{{% /note %}}
-
-## Example List Templates
-
-### Section Template
-
-This list template has been modified slightly from a template originally used in [spf13.com](https://spf13.com/). It makes use of [partial templates][partials] for the chrome of the rendered page rather than using a [base template][base]. The examples that follow also use the [content view templates][views] `li.html` or `summary.html`.
-
-{{< code file="layouts/section/posts.html" >}}
-{{ partial "header.html" . }}
-{{ partial "subheader.html" . }}
-<main>
- <div>
- <h1>{{ .Title }}</h1>
- <ul>
- <!-- Renders the li.html content view for each content/posts/*.md -->
- {{ range .Pages }}
- {{ .Render "li"}}
- {{ end }}
- </ul>
- </div>
-</main>
-{{ partial "footer.html" . }}
-{{< /code >}}
-
-### Taxonomy Template
-
-{{< code file="layouts/_default/taxonomy.html" download="taxonomy.html" >}}
-{{ define "main" }}
-<main>
- <div>
- <h1>{{ .Title }}</h1>
- <!-- ranges through each of the content files associated with a particular taxonomy term and renders the summary.html content view -->
- {{ range .Pages }}
- {{ .Render "summary"}}
- {{ end }}
- </div>
-</main>
-{{ end }}
-{{< /code >}}
-
-## Order Content
-
-Hugo lists render the content based on metadata you provide in [front matter]. In addition to sane defaults, Hugo also ships with multiple methods to make quick work of ordering content inside list templates:
-
-### Default: Weight > Date > LinkTitle > FilePath
-
-{{< code file="layouts/partials/default-order.html" >}}
-<ul>
- {{ range .Pages }}
- <li>
- <h1><a href="{{ .Permalink }}">{{ .Title }}</a></h1>
- <time>{{ .Date.Format "Mon, Jan 2, 2006" }}</time>
- </li>
- {{ end }}
-</ul>
-{{< /code >}}
-
-### By Weight
-
-Lower weight gets higher precedence. So content with lower weight will come first.
-
-{{< code file="layouts/partials/by-weight.html" >}}
-<ul>
- {{ range .Pages.ByWeight }}
- <li>
- <h1><a href="{{ .Permalink }}">{{ .Title }}</a></h1>
- <time>{{ .Date.Format "Mon, Jan 2, 2006" }}</time>
- </li>
- {{ end }}
-</ul>
-{{< /code >}}
-
-### By Date
-
-{{< code file="layouts/partials/by-date.html" >}}
-<ul>
- <!-- orders content according to the "date" field in front matter -->
- {{ range .Pages.ByDate }}
- <li>
- <h1><a href="{{ .Permalink }}">{{ .Title }}</a></h1>
- <time>{{ .Date.Format "Mon, Jan 2, 2006" }}</time>
- </li>
- {{ end }}
-</ul>
-{{< /code >}}
-
-### By Publish Date
-
-{{< code file="layouts/partials/by-publish-date.html" >}}
-<ul>
- <!-- orders content according to the "publishdate" field in front matter -->
- {{ range .Pages.ByPublishDate }}
- <li>
- <h1><a href="{{ .Permalink }}">{{ .Title }}</a></h1>
- <time>{{ .Date.Format "Mon, Jan 2, 2006" }}</time>
- </li>
- {{ end }}
-</ul>
-{{< /code >}}
-
-### By Expiration Date
-
-{{< code file="layouts/partials/by-expiry-date.html" >}}
-<ul>
- {{ range .Pages.ByExpiryDate }}
- <li>
- <h1><a href="{{ .Permalink }}">{{ .Title }}</a></h1>
- <time>{{ .Date.Format "Mon, Jan 2, 2006" }}</time>
- </li>
- {{ end }}
-</ul>
-{{< /code >}}
-
-### By Last Modified Date
-
-{{< code file="layouts/partials/by-last-mod.html" >}}
-<ul>
- <!-- orders content according to the "lastmod" field in front matter -->
- {{ range .Pages.ByLastmod }}
- <li>
- <h1><a href="{{ .Permalink }}">{{ .Title }}</a></h1>
- <time>{{ .Date.Format "Mon, Jan 2, 2006" }}</time>
- </li>
- {{ end }}
-</ul>
-{{< /code >}}
-
-### By Length
-
-{{< code file="layouts/partials/by-length.html" >}}
-<ul>
- <!-- orders content according to content length in ascending order (i.e., the shortest content will be listed first) -->
- {{ range .Pages.ByLength }}
- <li>
- <h1><a href="{{ .Permalink }}">{{ .Title }}</a></h1>
- <time>{{ .Date.Format "Mon, Jan 2, 2006" }}</time>
- </li>
- {{ end }}
-</ul>
-{{< /code >}}
-
-### By Title
-
-{{< code file="layouts/partials/by-title.html" >}}
-<ul>
- <!-- ranges through content in ascending order according to the "title" field set in front matter -->
- {{ range .Pages.ByTitle }}
- <li>
- <h1><a href="{{ .Permalink }}">{{ .Title }}</a></h1>
- <time>{{ .Date.Format "Mon, Jan 2, 2006" }}</time>
- </li>
- {{ end }}
-</ul>
-{{< /code >}}
-
-### By Link Title
-
-{{< code file="layouts/partials/by-link-title.html" >}}
-<ul>
- <!-- ranges through content in ascending order according to the "linktitle" field in front matter. If a "linktitle" field is not set, the range will start with content that only has a "title" field and use that value for .LinkTitle -->
- {{ range .Pages.ByLinkTitle }}
- <li>
- <h1><a href="{{ .Permalink }}">{{ .LinkTitle }}</a></h1>
- <time>{{ .Date.Format "Mon, Jan 2, 2006" }}</time>
- </li>
- {{ end }}
-</ul>
-{{< /code >}}
-
-### By Parameter
-
-Order based on the specified front matter parameter. Content that does not have the specified front matter field will use the site's `.Site.Params` default. If the parameter is not found at all in some entries, those entries will appear together at the end of the ordering.
-
-{{< code file="layouts/partials/by-rating.html" >}}
-<!-- Ranges through content according to the "rating" field set in front matter -->
-{{ range (.Pages.ByParam "rating") }}
- <!-- ... -->
-{{ end }}
-{{< /code >}}
-
-If the targeted front matter field is nested beneath another field, you can access the field using dot notation.
-
-{{< code file="layouts/partials/by-nested-param.html" >}}
-{{ range (.Pages.ByParam "author.last_name") }}
- <!-- ... -->
-{{ end }}
-{{< /code >}}
-
-### Reverse Order
-
-Reversing order can be applied to any of the above methods. The following uses `ByDate` as an example:
-
-{{< code file="layouts/partials/by-date-reverse.html" >}}
-<ul>
- {{ range .Pages.ByDate.Reverse }}
- <li>
- <h1><a href="{{ .Permalink }}">{{ .Title }}</a></h1>
- <time>{{ .Date.Format "Mon, Jan 2, 2006" }}</time>
- </li>
- {{ end }}
-</ul>
-{{< /code >}}
-
-## Group Content
-
-Hugo provides some functions for grouping pages by Section, Type, Date, etc.
-
-### By Page Field
-
-{{< code file="layouts/partials/by-page-field.html" >}}
-<!-- Groups content according to content section. The ".Key" in this instance will be the section's title. -->
-{{ range .Pages.GroupBy "Section" }}
-<h3>{{ .Key }}</h3>
-<ul>
- {{ range .Pages }}
- <li>
- <a href="{{ .Permalink }}">{{ .Title }}</a>
- <div class="meta">{{ .Date.Format "Mon, Jan 2, 2006" }}</div>
- </li>
- {{ end }}
-</ul>
-{{ end }}
-{{< /code >}}
-
-In the above example, you may want `{{.Title}}` to point the `title` field you have added to your `_index.md` file instead. You can access this value using the [`.GetPage` function][getpage]:
-
-{{< code file="layouts/partials/by-page-field.html" >}}
-<!-- Groups content according to content section.-->
-{{ range .Pages.GroupBy "Section" }}
-<!-- Checks for existence of _index.md for a section; if available, pulls from "title" in front matter -->
-{{ with $.Site.GetPage "section" .Key }}
-<h3>{{.Title}}</h3>
-{{ else }}
-<!-- If no _index.md is available, ".Key" defaults to the section title and filters to title casing -->
-<h3>{{ .Key | title }}</h3>
-{{ end }}
-<ul>
- {{ range .Pages }}
- <li>
- <a href="{{ .Permalink }}">{{ .Title }}</a>
- <div class="meta">{{ .Date.Format "Mon, Jan 2, 2006" }}</div>
- </li>
- {{ end }}
-</ul>
-{{ end }}
-{{< /code >}}
-
-### By Date
-
-{{< code file="layouts/partials/by-page-date.html" >}}
-<!-- Groups content by month according to the "date" field in front matter -->
-{{ range .Pages.GroupByDate "2006-01" }}
-<h3>{{ .Key }}</h3>
-<ul>
- {{ range .Pages }}
- <li>
- <a href="{{ .Permalink }}">{{ .Title }}</a>
- <div class="meta">{{ .Date.Format "Mon, Jan 2, 2006" }}</div>
- </li>
- {{ end }}
-</ul>
-{{ end }}
-{{< /code >}}
-
-{{< new-in "0.97.0" >}} `GroupByDate` accepts the same time layouts as in [time.Format](/functions/dateformat/) and The `.Key` in the result will be localized for the current language.
-
-### By Publish Date
-
-{{< code file="layouts/partials/by-page-publish-date.html" >}}
-<!-- Groups content by month according to the "publishDate" field in front matter -->
-{{ range .Pages.GroupByPublishDate "2006-01" }}
-<h3>{{ .Key }}</h3>
-<ul>
- {{ range .Pages }}
- <li>
- <a href="{{ .Permalink }}">{{ .Title }}</a>
- <div class="meta">{{ .PublishDate.Format "Mon, Jan 2, 2006" }}</div>
- </li>
- {{ end }}
-</ul>
-{{ end }}
-{{< /code >}}
-
-{{< new-in "0.97.0" >}} `GroupByDate` accepts the same time layouts as in [time.Format](/functions/dateformat/) and The `.Key` in the result will be localized for the current language.
-
-### By Lastmod
-
-{{< code file="layouts/partials/by-page-lastmod.html" >}}
-<!-- Groups content by month according to the "lastMod" field in front matter -->
-{{ range .Pages.GroupByLastmod "2006-01" }}
-<h3>{{ .Key }}</h3>
-<ul>
- {{ range .Pages }}
- <li>
- <a href="{{ .Permalink }}">{{ .Title }}</a>
- <div class="meta">{{ .Lastmod.Format "Mon, Jan 2, 2006" }}</div>
- </li>
- {{ end }}
-</ul>
-{{ end }}
-{{< /code >}}
-
-{{< new-in "0.97.0" >}} `GroupByDate` accepts the same time layouts as in [time.Format](/functions/dateformat/) and The `.Key` in the result will be localized for the current language.
-
-### By Expiry Date
-
-{{< code file="layouts/partials/by-page-expiry-date.html" >}}
-<!-- Groups content by month according to the "expiryDate" field in front matter -->
-{{ range .Pages.GroupByExpiryDate "2006-01" }}
-<h3>{{ .Key }}</h3>
-<ul>
- {{ range .Pages }}
- <li>
- <a href="{{ .Permalink }}">{{ .Title }}</a>
- <div class="meta">{{ .ExpiryDate.Format "Mon, Jan 2, 2006" }}</div>
- </li>
- {{ end }}
-</ul>
-{{ end }}
-{{< /code >}}
-
-{{< new-in "0.97.0" >}} `GroupByDate` accepts the same time layouts as in [time.Format](/functions/dateformat/) and The `.Key` in the result will be localized for the current language.
-
-### By Page Parameter
-
-{{< code file="layouts/partials/by-page-param.html" >}}
-<!-- Groups content according to the "param_key" field in front matter -->
-{{ range .Pages.GroupByParam "param_key" }}
-<h3>{{ .Key }}</h3>
-<ul>
- {{ range .Pages }}
- <li>
- <a href="{{ .Permalink }}">{{ .Title }}</a>
- <div class="meta">{{ .Date.Format "Mon, Jan 2, 2006" }}</div>
- </li>
- {{ end }}
-</ul>
-{{ end }}
-{{< /code >}}
-
-### By Page Parameter in Date Format
-
-The following template takes grouping by `date` a step further and uses Go's layout string. See the [`Format` function] for more examples of how to use Go's layout string to format dates in Hugo.
-
-{{< code file="layouts/partials/by-page-param-as-date.html" >}}
-<!-- Groups content by month according to the "param_key" field in front matter -->
-{{ range .Pages.GroupByParamDate "param_key" "2006-01" }}
-<h3>{{ .Key }}</h3>
-<ul>
- {{ range .Pages }}
- <li>
- <a href="{{ .Permalink }}">{{ .Title }}</a>
- <div class="meta">{{ .Date.Format "Mon, Jan 2, 2006" }}</div>
- </li>
- {{ end }}
-</ul>
-{{ end }}
-{{< /code >}}
-
-### Reverse Key Order
-
-Ordering of groups is performed by keys in alphanumeric order (A–Z, 1–100) and in reverse chronological order (i.e., with the newest first) for dates.
-
-While these are logical defaults, they are not always the desired order. There are two different syntaxes to change Hugo's default ordering for groups, both of which work the same way.
-
-#### 1. Adding the Reverse Method
-
-```go-html-template
-{{ range (.Pages.GroupBy "Section").Reverse }}
-```
-
-```go-html-template
-{{ range (.Pages.GroupByDate "2006-01").Reverse }}
-```
-
-#### 2. Providing the Alternate Direction
-
-```go-html-template
-{{ range .Pages.GroupByDate "2006-01" "asc" }}
-```
-
-```go-html-template
-{{ range .Pages.GroupBy "Section" "desc" }}
-```
-
-### Order Within Groups
-
-Because Grouping returns a `{{.Key}}` and a slice of pages, all the ordering methods listed above are available.
-
-Here is the ordering for the example that follows:
-
-1. Content is grouped by month according to the `date` field in front matter.
-2. Groups are listed in ascending order (i.e., the oldest groups first)
-3. Pages within each respective group are ordered alphabetically according to the `title`.
-
-{{< code file="layouts/partials/by-group-by-page.html" >}}
-{{ range .Pages.GroupByDate "2006-01" "asc" }}
-<h3>{{ .Key }}</h3>
-<ul>
- {{ range .Pages.ByTitle }}
- <li>
- <a href="{{ .Permalink }}">{{ .Title }}</a>
- <div class="meta">{{ .Date.Format "Mon, Jan 2, 2006" }}</div>
- </li>
- {{ end }}
-</ul>
-{{ end }}
-{{< /code >}}
-
-## Filtering and Limiting Lists {#filtering-and-limiting-lists}
-
-Sometimes you only want to list a subset of the available content. A
-common is to only display posts from [**main sections**][mainsections]
-on the blog's homepage.
-
-See the documentation on [`where` function][wherefunction] and
-[`first` function][firstfunction] for further details.
-
-[base]: /templates/base/
-[bepsays]: https://bepsays.com/en/2016/12/19/hugo-018/
-[directorystructure]: /getting-started/directory-structure/
-[`Format` function]: /functions/format/
-[front matter]: /content-management/front-matter/
-[getpage]: /functions/getpage/
-[homepage]: /templates/homepage/
-[homepage]: /templates/homepage/
-[mentalmodel]: https://webstyleguide.com/wsg3/3-information-architecture/3-site-structure.html
-[pagevars]: /variables/page/
-[partials]: /templates/partials/
-[RSS 2.0]: https://cyber.harvard.edu/rss/rss.html "RSS 2.0 Specification"
-[rss]: /templates/rss/
-[sections]: /content-management/sections/
-[sectiontemps]: /templates/section-templates/
-[sitevars]: /variables/site/
-[taxlists]: /templates/taxonomy-templates/#taxonomy-list-templates
-[taxterms]: /templates/taxonomy-templates/#taxonomy-terms-templates
-[taxvars]: /variables/taxonomy/
-[views]: /templates/views/
-[wherefunction]: /functions/where/
-[firstfunction]: /functions/first/
-[mainsections]: /functions/where/#mainsections
--- /dev/null
+---
+title: Lists of Content in Hugo
+linktitle: List Templates
+description: Lists have a specific meaning and usage in Hugo when it comes to rendering your site homepage, section page, taxonomy list, or taxonomy terms list.
+categories: [templates]
+keywords: [lists,sections,rss,taxonomies,terms]
+menu:
+ docs:
+ parent: templates
+ weight: 22
+weight: 22
+aliases: [/templates/list/,/layout/indexes/]
+toc: true
+---
+
+## What is a List Page Template?
+
+{{< youtube 8b2YTSMdMps >}}
+
+A list page template is a template used to render multiple pieces of content in a single HTML page. The exception to this rule is the homepage, which is still a list but has its own [dedicated template][homepage].
+
+Hugo uses the term *list* in its truest sense; i.e. a sequential arrangement of material, especially in alphabetical or numerical order. Hugo uses list templates on any output HTML page where content is traditionally listed:
+
+* [Taxonomy terms pages][taxterms]
+* [Taxonomy list pages][taxlists]
+* [Section list pages][sectiontemps]
+* [RSS][rss]
+
+For template lookup order, see [Template Lookup](/templates/lookup-order/).
+
+The idea of a list page comes from the [hierarchical mental model of the web][mentalmodel] and is best demonstrated visually:
+
+[](site-hierarchy.svg)
+
+## List Defaults
+
+### Default Templates
+
+Since section lists and taxonomy lists (N.B., *not* [taxonomy terms lists][taxterms]) are both *lists* with regards to their templates, both have the same terminating default of `_default/list.html` or `themes/<THEME>/layouts/_default/list.html` in their lookup order. In addition, both [section lists][sectiontemps] and [taxonomy lists][taxlists] have their own default list templates in `_default`.
+
+See [Template Lookup Order](/templates/lookup-order/) for the complete reference.
+
+## Add Content and Front Matter to List Pages
+
+Since v0.18, [everything in Hugo is a `Page`][bepsays]. This means list pages and the homepage can have associated content files (i.e. `_index.md`) that contain page metadata (i.e., front matter) and content.
+
+This new model allows you to include list-specific front matter via `.Params` and also means that list templates (e.g., `layouts/_default/list.html`) have access to all [page variables][pagevars].
+
+{{% note %}}
+It is important to note that all `_index.md` content files will render according to a *list* template and not according to a [single page template](/templates/single-page-templates/).
+{{% /note %}}
+
+### Example Project Directory
+
+The following is an example of a typical Hugo project directory's content:
+
+```txt
+.
+...
+├── content
+| ├── posts
+| | ├── _index.md
+| | ├── post-01.md
+| | └── post-02.md
+| └── quote
+| | ├── quote-01.md
+| | └── quote-02.md
+...
+```
+
+Using the above example, let's assume you have the following in `content/posts/_index.md`:
+
+{{< code file="content/posts/_index.md" >}}
+---
+title: My Go Journey
+date: 2017-03-23
+publishdate: 2017-03-24
+---
+
+I decided to start learning Go in March 2017.
+
+Follow my journey through this new blog.
+{{< /code >}}
+
+You can now access this `_index.md`'s' content in your list template:
+
+{{< code file="layouts/_default/list.html" >}}
+{{ define "main" }}
+<main>
+ <article>
+ <header>
+ <h1>{{ .Title} }</h1>
+ </header>
+ <!-- "{{ .Content} }" pulls from the markdown content of the corresponding _index.md -->
+ {{ .Content }}
+ </article>
+ <ul>
+ <!-- Ranges through content/posts/*.md -->
+ {{ range .Pages }}
+ <li>
+ <a href="{{ .Permalink }}">{{ .Date.Format "2006-01-02" }} | {{ .Title }}</a>
+ </li>
+ {{ end }}
+ </ul>
+</main>
+{{ end }}
+{{< /code >}}
+
+This above will output the following HTML:
+
+{{< code file="example.com/posts/index.html" copy=false >}}
+<!--top of your baseof code-->
+<main>
+ <article>
+ <header>
+ <h1>My Go Journey</h1>
+ </header>
+ <p>I decided to start learning Go in March 2017.</p>
+ <p>Follow my journey through this new blog.</p>
+ </article>
+ <ul>
+ <li><a href="/posts/post-01/">Post 1</a></li>
+ <li><a href="/posts/post-02/">Post 2</a></li>
+ </ul>
+</main>
+<!--bottom of your baseof-->
+{{< /code >}}
+
+### List Pages Without `_index.md`
+
+You do *not* have to create an `_index.md` file for every list page (i.e. section, taxonomy, taxonomy terms, etc) or the homepage. If Hugo does not find an `_index.md` within the respective content section when rendering a list template, the page will be created but with no `{{ .Content }}` and only the default values for `.Title` etc.
+
+Using this same `layouts/_default/list.html` template and applying it to the `quotes` section above will render the following output. Note that `quotes` does not have an `_index.md` file to pull from:
+
+{{< code file="example.com/quote/index.html" copy=false >}}
+<!--baseof-->
+<main>
+ <article>
+ <header>
+ <!-- Hugo assumes that .Title is the name of the section since there is no _index.md content file from which to pull a "title:" field -->
+ <h1>Quotes</h1>
+ </header>
+ </article>
+ <ul>
+ <li><a href="https://example.com/quote/quotes-01/">Quote 1</a></li>
+ <li><a href="https://example.com/quote/quotes-02/">Quote 2</a></li>
+ </ul>
+</main>
+<!--baseof-->
+{{< /code >}}
+
+{{% note %}}
+The default behavior of Hugo is to pluralize list titles; hence the inflection of the `quote` section to "Quotes" when called with the `.Title` [page variable](/variables/page/). You can change this via the `pluralizeListTitles` directive in your [site configuration](/getting-started/configuration/).
+{{% /note %}}
+
+## Example List Templates
+
+### Section Template
+
+This list template has been modified slightly from a template originally used in [spf13.com](https://spf13.com/). It makes use of [partial templates][partials] for the chrome of the rendered page rather than using a [base template][base]. The examples that follow also use the [content view templates][views] `li.html` or `summary.html`.
+
+{{< code file="layouts/section/posts.html" >}}
+{{ partial "header.html" . }}
+{{ partial "subheader.html" . }}
+<main>
+ <div>
+ <h1>{{ .Title }}</h1>
+ <ul>
+ <!-- Renders the li.html content view for each content/posts/*.md -->
+ {{ range .Pages }}
+ {{ .Render "li" }}
+ {{ end }}
+ </ul>
+ </div>
+</main>
+{{ partial "footer.html" . }}
+{{< /code >}}
+
+### Taxonomy Template
+
+{{< code file="layouts/_default/taxonomy.html" >}}
+{{ define "main" }}
+<main>
+ <div>
+ <h1>{{ .Title }}</h1>
+ <!-- ranges through each of the content files associated with a particular taxonomy term and renders the summary.html content view -->
+ {{ range .Pages }}
+ {{ .Render "summary" }}
+ {{ end }}
+ </div>
+</main>
+{{ end }}
+{{< /code >}}
+
+## Order Content
+
+Hugo lists render the content based on metadata you provide in [front matter]. In addition to sane defaults, Hugo also ships with multiple methods to make quick work of ordering content inside list templates:
+
+### Default: Weight > Date > LinkTitle > FilePath
+
+{{< code file="layouts/partials/default-order.html" >}}
+<ul>
+ {{ range .Pages }}
+ <li>
+ <h1><a href="{{ .Permalink }}">{{ .Title }}</a></h1>
+ <time>{{ .Date.Format "Mon, Jan 2, 2006" }}</time>
+ </li>
+ {{ end }}
+</ul>
+{{< /code >}}
+
+### By Weight
+
+Lower weight gets higher precedence. So content with lower weight will come first.
+
+{{< code file="layouts/partials/by-weight.html" >}}
+<ul>
+ {{ range .Pages.ByWeight }}
+ <li>
+ <h1><a href="{{ .Permalink }}">{{ .Title }}</a></h1>
+ <time>{{ .Date.Format "Mon, Jan 2, 2006" }}</time>
+ </li>
+ {{ end }}
+</ul>
+{{< /code >}}
+
+### By Date
+
+{{< code file="layouts/partials/by-date.html" >}}
+<ul>
+ <!-- orders content according to the "date" field in front matter -->
+ {{ range .Pages.ByDate }}
+ <li>
+ <h1><a href="{{ .Permalink }}">{{ .Title }}</a></h1>
+ <time>{{ .Date.Format "Mon, Jan 2, 2006" }}</time>
+ </li>
+ {{ end }}
+</ul>
+{{< /code >}}
+
+### By Publish Date
+
+{{< code file="layouts/partials/by-publish-date.html" >}}
+<ul>
+ <!-- orders content according to the "publishdate" field in front matter -->
+ {{ range .Pages.ByPublishDate }}
+ <li>
+ <h1><a href="{{ .Permalink }}">{{ .Title }}</a></h1>
+ <time>{{ .Date.Format "Mon, Jan 2, 2006" }}</time>
+ </li>
+ {{ end }}
+</ul>
+{{< /code >}}
+
+### By Expiration Date
+
+{{< code file="layouts/partials/by-expiry-date.html" >}}
+<ul>
+ {{ range .Pages.ByExpiryDate }}
+ <li>
+ <h1><a href="{{ .Permalink }}">{{ .Title }}</a></h1>
+ <time>{{ .Date.Format "Mon, Jan 2, 2006" }}</time>
+ </li>
+ {{ end }}
+</ul>
+{{< /code >}}
+
+### By Last Modified Date
+
+{{< code file="layouts/partials/by-last-mod.html" >}}
+<ul>
+ <!-- orders content according to the "lastmod" field in front matter -->
+ {{ range .Pages.ByLastmod }}
+ <li>
+ <h1><a href="{{ .Permalink }}">{{ .Title }}</a></h1>
+ <time>{{ .Date.Format "Mon, Jan 2, 2006" }}</time>
+ </li>
+ {{ end }}
+</ul>
+{{< /code >}}
+
+### By Length
+
+{{< code file="layouts/partials/by-length.html" >}}
+<ul>
+ <!-- orders content according to content length in ascending order (i.e., the shortest content will be listed first) -->
+ {{ range .Pages.ByLength }}
+ <li>
+ <h1><a href="{{ .Permalink }}">{{ .Title }}</a></h1>
+ <time>{{ .Date.Format "Mon, Jan 2, 2006" }}</time>
+ </li>
+ {{ end }}
+</ul>
+{{< /code >}}
+
+### By Title
+
+{{< code file="layouts/partials/by-title.html" >}}
+<ul>
+ <!-- ranges through content in ascending order according to the "title" field set in front matter -->
+ {{ range .Pages.ByTitle }}
+ <li>
+ <h1><a href="{{ .Permalink }}">{{ .Title }}</a></h1>
+ <time>{{ .Date.Format "Mon, Jan 2, 2006" }}</time>
+ </li>
+ {{ end }}
+</ul>
+{{< /code >}}
+
+### By Link Title
+
+{{< code file="layouts/partials/by-link-title.html" >}}
+<ul>
+ <!-- ranges through content in ascending order according to the "linktitle" field in front matter. If a "linktitle" field is not set, the range will start with content that only has a "title" field and use that value for .LinkTitle -->
+ {{ range .Pages.ByLinkTitle }}
+ <li>
+ <h1><a href="{{ .Permalink }}">{{ .LinkTitle }}</a></h1>
+ <time>{{ .Date.Format "Mon, Jan 2, 2006" }}</time>
+ </li>
+ {{ end }}
+</ul>
+{{< /code >}}
+
+### By Parameter
+
+Order based on the specified front matter parameter. Content that does not have the specified front matter field will use the site's `.Site.Params` default. If the parameter is not found at all in some entries, those entries will appear together at the end of the ordering.
+
+{{< code file="layouts/partials/by-rating.html" >}}
+<!-- Ranges through content according to the "rating" field set in front matter -->
+{{ range (.Pages.ByParam "rating") }}
+ <!-- ... -->
+{{ end }}
+{{< /code >}}
+
+If the targeted front matter field is nested beneath another field, you can access the field using dot notation.
+
+{{< code file="layouts/partials/by-nested-param.html" >}}
+{{ range (.Pages.ByParam "author.last_name") }}
+ <!-- ... -->
+{{ end }}
+{{< /code >}}
+
+### Reverse Order
+
+Reversing order can be applied to any of the above methods. The following uses `ByDate` as an example:
+
+{{< code file="layouts/partials/by-date-reverse.html" >}}
+<ul>
+ {{ range .Pages.ByDate.Reverse }}
+ <li>
+ <h1><a href="{{ .Permalink }}">{{ .Title }}</a></h1>
+ <time>{{ .Date.Format "Mon, Jan 2, 2006" }}</time>
+ </li>
+ {{ end }}
+</ul>
+{{< /code >}}
+
+## Group Content
+
+Hugo provides some functions for grouping pages by Section, Type, Date, etc.
+
+### By Page Field
+
+{{< code file="layouts/partials/by-page-field.html" >}}
+<!-- Groups content according to content section. The ".Key" in this instance will be the section's title. -->
+{{ range .Pages.GroupBy "Section" }}
+<h3>{{ .Key }}</h3>
+<ul>
+ {{ range .Pages }}
+ <li>
+ <a href="{{ .Permalink }}">{{ .Title }}</a>
+ <div class="meta">{{ .Date.Format "Mon, Jan 2, 2006" }}</div>
+ </li>
+ {{ end }}
+</ul>
+{{ end }}
+{{< /code >}}
+
+In the above example, you may want `{{ .Title }}` to point the `title` field you have added to your `_index.md` file instead. You can access this value using the [`.GetPage` function][getpage]:
+
+{{< code file="layouts/partials/by-page-field.html" >}}
+<!-- Groups content according to content section.-->
+{{ range .Pages.GroupBy "Section" }}
+<!-- Checks for existence of _index.md for a section; if available, pulls from "title" in front matter -->
+{{ with $.Site.GetPage "section" .Key }}
+<h3>{{ .Title }}</h3>
+{{ else }}
+<!-- If no _index.md is available, ".Key" defaults to the section title and filters to title casing -->
+<h3>{{ .Key | title }}</h3>
+{{ end }}
+<ul>
+ {{ range .Pages }}
+ <li>
+ <a href="{{ .Permalink }}">{{ .Title }}</a>
+ <div class="meta">{{ .Date.Format "Mon, Jan 2, 2006" }}</div>
+ </li>
+ {{ end }}
+</ul>
+{{ end }}
+{{< /code >}}
+
+### By Date
+
+{{< code file="layouts/partials/by-page-date.html" >}}
+<!-- Groups content by month according to the "date" field in front matter -->
+{{ range .Pages.GroupByDate "2006-01" }}
+<h3>{{ .Key }}</h3>
+<ul>
+ {{ range .Pages }}
+ <li>
+ <a href="{{ .Permalink }}">{{ .Title }}</a>
+ <div class="meta">{{ .Date.Format "Mon, Jan 2, 2006" }}</div>
+ </li>
+ {{ end }}
+</ul>
+{{ end }}
+{{< /code >}}
+
+{{< new-in "0.97.0" >}} `GroupByDate` accepts the same time layouts as in [time.Format](/functions/dateformat/) and The `.Key` in the result will be localized for the current language.
+
+### By Publish Date
+
+{{< code file="layouts/partials/by-page-publish-date.html" >}}
+<!-- Groups content by month according to the "publishDate" field in front matter -->
+{{ range .Pages.GroupByPublishDate "2006-01" }}
+<h3>{{ .Key }}</h3>
+<ul>
+ {{ range .Pages }}
+ <li>
+ <a href="{{ .Permalink }}">{{ .Title }}</a>
+ <div class="meta">{{ .PublishDate.Format "Mon, Jan 2, 2006" }}</div>
+ </li>
+ {{ end }}
+</ul>
+{{ end }}
+{{< /code >}}
+
+{{< new-in "0.97.0" >}} `GroupByDate` accepts the same time layouts as in [time.Format](/functions/dateformat/) and The `.Key` in the result will be localized for the current language.
+
+### By Lastmod
+
+{{< code file="layouts/partials/by-page-lastmod.html" >}}
+<!-- Groups content by month according to the "lastMod" field in front matter -->
+{{ range .Pages.GroupByLastmod "2006-01" }}
+<h3>{{ .Key }}</h3>
+<ul>
+ {{ range .Pages }}
+ <li>
+ <a href="{{ .Permalink }}">{{ .Title }}</a>
+ <div class="meta">{{ .Lastmod.Format "Mon, Jan 2, 2006" }}</div>
+ </li>
+ {{ end }}
+</ul>
+{{ end }}
+{{< /code >}}
+
+{{< new-in "0.97.0" >}} `GroupByDate` accepts the same time layouts as in [time.Format](/functions/dateformat/) and The `.Key` in the result will be localized for the current language.
+
+### By Expiry Date
+
+{{< code file="layouts/partials/by-page-expiry-date.html" >}}
+<!-- Groups content by month according to the "expiryDate" field in front matter -->
+{{ range .Pages.GroupByExpiryDate "2006-01" }}
+<h3>{{ .Key }}</h3>
+<ul>
+ {{ range .Pages }}
+ <li>
+ <a href="{{ .Permalink }}">{{ .Title }}</a>
+ <div class="meta">{{ .ExpiryDate.Format "Mon, Jan 2, 2006" }}</div>
+ </li>
+ {{ end }}
+</ul>
+{{ end }}
+{{< /code >}}
+
+{{< new-in "0.97.0" >}} `GroupByDate` accepts the same time layouts as in [time.Format](/functions/dateformat/) and The `.Key` in the result will be localized for the current language.
+
+### By Page Parameter
+
+{{< code file="layouts/partials/by-page-param.html" >}}
+<!-- Groups content according to the "param_key" field in front matter -->
+{{ range .Pages.GroupByParam "param_key" }}
+<h3>{{ .Key }}</h3>
+<ul>
+ {{ range .Pages }}
+ <li>
+ <a href="{{ .Permalink }}">{{ .Title }}</a>
+ <div class="meta">{{ .Date.Format "Mon, Jan 2, 2006" }}</div>
+ </li>
+ {{ end }}
+</ul>
+{{ end }}
+{{< /code >}}
+
+### By Page Parameter in Date Format
+
+The following template takes grouping by `date` a step further and uses Go's layout string. See the [`Format` function] for more examples of how to use Go's layout string to format dates in Hugo.
+
+{{< code file="layouts/partials/by-page-param-as-date.html" >}}
+<!-- Groups content by month according to the "param_key" field in front matter -->
+{{ range .Pages.GroupByParamDate "param_key" "2006-01" }}
+<h3>{{ .Key }}</h3>
+<ul>
+ {{ range .Pages }}
+ <li>
+ <a href="{{ .Permalink }}">{{ .Title }}</a>
+ <div class="meta">{{ .Date.Format "Mon, Jan 2, 2006" }}</div>
+ </li>
+ {{ end }}
+</ul>
+{{ end }}
+{{< /code >}}
+
+### Reverse Key Order
+
+Ordering of groups is performed by keys in alphanumeric order (A–Z, 1–100) and in reverse chronological order (i.e., with the newest first) for dates.
+
+While these are logical defaults, they are not always the desired order. There are two different syntaxes to change Hugo's default ordering for groups, both of which work the same way.
+
+#### 1. Adding the Reverse Method
+
+```go-html-template
+{{ range (.Pages.GroupBy "Section").Reverse }}
+```
+
+```go-html-template
+{{ range (.Pages.GroupByDate "2006-01").Reverse }}
+```
+
+#### 2. Providing the Alternate Direction
+
+```go-html-template
+{{ range .Pages.GroupByDate "2006-01" "asc" }}
+```
+
+```go-html-template
+{{ range .Pages.GroupBy "Section" "desc" }}
+```
+
+### Order Within Groups
+
+Because Grouping returns a `{{ .Key }}` and a slice of pages, all the ordering methods listed above are available.
+
+Here is the ordering for the example that follows:
+
+1. Content is grouped by month according to the `date` field in front matter.
+2. Groups are listed in ascending order (i.e., the oldest groups first)
+3. Pages within each respective group are ordered alphabetically according to the `title`.
+
+{{< code file="layouts/partials/by-group-by-page.html" >}}
+{{ range .Pages.GroupByDate "2006-01" "asc" }}
+<h3>{{ .Key }}</h3>
+<ul>
+ {{ range .Pages.ByTitle }}
+ <li>
+ <a href="{{ .Permalink }}">{{ .Title }}</a>
+ <div class="meta">{{ .Date.Format "Mon, Jan 2, 2006" }}</div>
+ </li>
+ {{ end }}
+</ul>
+{{ end }}
+{{< /code >}}
+
+## Filtering and Limiting Lists {#filtering-and-limiting-lists}
+
+Sometimes you only want to list a subset of the available content. A
+common is to only display posts from [**main sections**][mainsections]
+on the blog's homepage.
+
+See the documentation on [`where` function][wherefunction] and
+[`first` function][firstfunction] for further details.
+
+[base]: /templates/base/
+[bepsays]: https://bepsays.com/en/2016/12/19/hugo-018/
+[directorystructure]: /getting-started/directory-structure/
+[`Format` function]: /functions/format/
+[front matter]: /content-management/front-matter/
+[getpage]: /functions/getpage/
+[homepage]: /templates/homepage/
+[homepage]: /templates/homepage/
+[mentalmodel]: https://webstyleguide.com/wsg3/3-information-architecture/3-site-structure.html
+[pagevars]: /variables/page/
+[partials]: /templates/partials/
+[RSS 2.0]: https://cyber.harvard.edu/rss/rss.html "RSS 2.0 Specification"
+[rss]: /templates/rss/
+[sections]: /content-management/sections/
+[sectiontemps]: /templates/section-templates/
+[sitevars]: /variables/site/
+[taxlists]: /templates/taxonomy-templates/#taxonomy-list-templates
+[taxterms]: /templates/taxonomy-templates/#taxonomy-terms-templates
+[taxvars]: /variables/taxonomy/
+[views]: /templates/views/
+[wherefunction]: /functions/where/
+[firstfunction]: /functions/first/
+[mainsections]: /functions/where/#mainsections
--- /dev/null
+<svg height="446" viewBox="0 0 1730 446" width="1730" xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd" transform="translate(.538462 .461538)"><g transform="translate(2.996935 .388277)"><path d="m64.0494614 5.00059856 58.8489506 34.18916364v67.3333318l-58.8489506 33.404195-58.75248965-33.404195v-67.3333318z" fill="#ff4088"/><path d="m126.283637 35.8185172 1.230228 2.1375217v69.8133611l-1.253295 2.152899-60.9934622 34.621142h-2.4387878l-60.89490434-34.623239-1.25189712-2.1522v-69.8112641l1.22883034-2.1368227 60.89280732-35.43476985h2.4891154zm-116.37121203 6.0253228v61.994421l54.13913343 30.780872 54.2320996-30.782969v-61.990227l-54.2320996-31.5064271z" fill="#c9177e"/></g><path d="m60.4490685 78.3838073h-16.0432056v-32.93617h-27.9340521v32.93617h-16.04320555v-77.90259702h16.04320555v32.56189542h27.9340521v-32.56189542h16.0432056z" fill="#fff" fill-rule="nonzero" transform="translate(35.169824 33.865851)"/><g transform="translate(329.992265 24.431705)"><path d="m.21765.21067h263.332986v115.673517h-263.332986z" fill="#0083c0"/><path d="m263.550636 115.884187h-263.33298624v-115.6735171h263.33298624zm-260.79463916-113.13482905v110.59614105h258.25629216v-110.59614105z" fill="#000"/></g><g fill="#f2f2f2" fill-rule="nonzero" transform="translate(352.419436 42.870159)"><path d="m22.7288949.05688029h3.6312065v31.52968501h-3.6312065v-14.4804699h-18.90904412v14.4804699h-3.58685032v-31.52968501h3.58685032v13.99359541h18.90904412z"/><path d="m37.3865286 30.4794869c-1.5939528-.9445259-2.826533-2.2879966-3.6974799-4.0296294-.8709468-1.7418937-1.3064203-3.7788866-1.3064203-6.1112394 0-2.332092.4354735-4.3693457 1.3064203-6.1109785.8709469-1.7418937 2.1035271-3.0851036 3.6974799-4.0298904 1.5942137-.94478689 3.4394312-1.41704986 5.5356526-1.41704986 2.0959605 0 3.941178.47226297 5.5353917 1.41704986 1.5942137.9447868 2.826533 2.2879967 3.6974799 4.0298904.8709468 1.7416328 1.3064203 3.7788865 1.3064203 6.1109785 0 2.3323528-.4354735 4.3693457-1.3064203 6.1112394-.8709469 1.7416328-2.1032662 3.0851035-3.6974799 4.0296294-1.5942137.9447869-3.4394312 1.4170499-5.5353917 1.4170499-2.0962214 0-3.9414389-.472263-5.5356526-1.4170499zm10.6280042-3.741836c1.1809184-1.461406 1.7713776-3.594417 1.7713776-6.3990328 0-2.7159035-.6050707-4.8194306-1.8154728-6.3103205-1.2104022-1.4908898-2.8933283-2.2363347-5.0482564-2.2363347-2.1846728 0-3.8822104.7454449-5.0926125 2.2363347-1.2104022 1.4908899-1.8157337 3.594417-1.8157337 6.3103205 0 2.8046158.5977649 4.9376268 1.7935556 6.3990328 1.1955298 1.461406 2.9006339 2.1919786 5.1147906 2.1919786s3.9116942-.7305726 5.0923516-2.1919786z"/><path d="m91.1464927 17.5929699v13.9935954h-3.5868503v-13.8164316c0-2.0959605-.3616334-3.6163341-1.0849002-4.561121-.7232669-.9447869-1.8968795-1.4170498-3.520577-1.4170498-1.8893128 0-3.3655912.6348153-4.4283133 1.9041851-1.0627222 1.2693698-1.5942137 2.9966521-1.5942137 5.181064v12.7093533h-3.5868503v-13.8164316c0-2.0664767-.3692001-3.5795446-1.1070784-4.5389429-.7381392-.9593983-1.9190575-1.4392279-3.542755-1.4392279-1.8893128 0-3.3728969.6348153-4.4504915 1.9041851-1.0775945 1.2693698-1.6163917 2.9966521-1.6163917 5.181064v12.7093533h-3.5868504v-16.0305883c0-2.3026081-.1181962-4.3839571-.3543276-6.24378613h3.4099473l.3540668 3.89682183c.619943-1.4170498 1.5425518-2.5092558 2.7678263-3.27687883 1.2252746-.76762302 2.6496301-1.15143453 4.2733276-1.15143453 1.7713775 0 3.2179112.35432769 4.3398619 1.06272215 1.1216898.70865541 1.9482805 1.80086131 2.479772 3.27713971.6789106-1.3285983 1.6753594-2.3840148 2.9890854-3.16624924 1.313726-.78249538 2.7973101-1.17361262 4.4504915-1.17361262 4.930321 0 7.3952206 2.93742346 7.3952206 8.81227056z"/><path d="m116.609555 20.3386181h-16.340559c.029483 2.8340996.686477 4.9744163 1.970458 6.4212109 1.284242 1.4465336 3.151638 2.1698005 5.601926 2.1698005 2.597968 0 4.989289-.8709469 7.173962-2.6128406l1.19553 2.6128406c-.974271.915303-2.221463 1.6385698-3.741837 2.1698004-1.520373.5314916-3.077797.7971069-4.672011.7971069-3.483526 0-6.214302-1.0259326-8.1923275-3.0775369-1.9780252-2.0518652-2.9669073-4.8637868-2.9669073-8.4360256 0-2.2731244.4427791-4.2882 1.3283374-6.0447052.8858192-1.7565051 2.1257054-3.121893 3.7199194-4.0961637 1.594213-.97427072 3.409686-1.46140606 5.44694-1.46140606 2.952035 0 5.269515.96696496 6.952441 2.90063396 1.682665 1.933669 2.524128 4.5979105 2.524128 7.9929856zm-13.971417-7.0852492c-1.166046 1.1216898-1.911491 2.701292-2.236335 4.7382848h12.974969c-.177164-2.0959604-.789801-3.6901741-1.837651-4.782641-1.048111-1.092206-2.50195-1.6385699-4.36204-1.6385699-1.859829 0-3.372897.5609754-4.538943 1.6829261z"/><path d="m138.352699 10.2421054c1.505502.9742707 2.671548 2.3396586 3.498399 4.0961637.826591 1.7565052 1.239886 3.7861923 1.239886 6.0890613 0 2.3026082-.413295 4.3174229-1.239886 6.0444443-.826851 1.7272822-1.985592 3.0631863-3.476221 4.0077122-1.49089.9447869-3.225478 1.4170499-5.203503 1.4170499-1.741632 0-3.262006-.3838115-4.561121-1.1511736-1.298853-.767623-2.287996-1.8600899-2.966907-3.2771398v13.683624h-3.587111v-25.5958704c0-2.3026081-.117936-4.3839571-.354067-6.24378613h3.409686l.354328 4.29550573c.619943-1.5352461 1.60152-2.7234701 2.944729-3.5649332 1.343471-.841463 2.930118-1.26206406 4.760463-1.26206406 1.948542 0 3.675563.48713534 5.181325 1.46140606zm-.774929 16.4733674c1.19553-1.4760175 1.793295-3.5722389 1.793295-6.2881424 0-2.7161643-.60507-4.8343029-1.815473-6.3546766-1.210402-1.5203736-2.893328-2.2806909-5.048256-2.2806909-2.214418 0-3.911694.7381392-5.092613 2.2141566-1.180918 1.4760175-1.771377 3.5868504-1.771377 6.3324986s.590459 4.8637867 1.771377 6.3546766c1.180919 1.4908898 2.878195 2.2363348 5.092613 2.2363348 2.184412 0 3.874644-.7381392 5.070434-2.2141567z"/><path d="m168.243032 9.31219087v22.27437443h-3.540668v-4.0296295c-.649688 1.387566-1.633352 2.4575939-2.945773 3.2103445-1.313987.7530116-2.841666 1.1292565-4.58356 1.1292565-1.978025 0-3.712352-.472263-5.203242-1.4170499-1.49089-.9445259-2.642325-2.28043-3.454043-4.0077122-.811979-1.7270214-1.217969-3.7418361-1.217969-6.0444443 0-2.302869.413296-4.3325561 1.239886-6.0890613.826852-1.7565051 1.985592-3.121893 3.476221-4.0961637 1.49089-.97427072 3.210606-1.46140606 5.159147-1.46140606 1.741894 0 3.262267.38381151 4.560077 1.15143453 1.299376.76762303 2.288258 1.84521753 2.969256 3.23252263v-3.85246563zm-5.312307 17.38110383c1.179353-1.4908899 1.771639-3.6090284 1.771639-6.3546766s-.592286-4.8564811-1.771639-6.3324986c-1.181962-1.4760174-2.864627-2.2141566-5.0493-2.2141566-2.184412 0-3.889516.7603173-5.114529 2.2806909-1.225275 1.5203737-1.837912 3.6385123-1.837912 6.3546766 0 2.7159035.605331 4.8121249 1.815734 6.2881424 1.210402 1.4760175 2.922551 2.2141567 5.136707 2.2141567 2.184673 0 3.867338-.745445 5.0493-2.2363348z"/><path d="m195.034171 9.31219087v22.09721053c0 3.3066236-.847986 5.8085737-2.543958 7.5061112-1.698581 1.6975375-4.200792 2.5463063-7.506633 2.5463063-3.394553 0-6.319453-.7676231-8.76948-2.3028691l.620987-2.9225511c1.416789.7971068 2.752693 1.3726936 4.007712 1.7270213s2.63528.5314915 4.140781.5314915c2.155189 0 3.778104-.568281 4.871353-1.7051041 1.090641-1.1365622 1.63857-2.826533 1.63857-5.0704345v-5.2695154c-.680998 1.4170498-1.675098 2.5165615-2.990129 3.2990569-1.315031.7822345-2.870106 1.1733517-4.670446 1.1733517-1.949063 0-3.684173-.4573906-5.205329-1.3726936-1.518548-.9150422-2.692682-2.2141567-3.519795-3.8968219-.827112-1.682926-1.239364-3.616595-1.239364-5.8012679 0-2.1846728.412252-4.1183418 1.239364-5.801007.827113-1.682926 2.001247-2.9817797 3.519795-3.8970827 1.521156-.91504214 3.256266-1.37269366 5.205329-1.37269366 1.769029 0 3.313668.38381151 4.62609 1.15143453 1.31503.76762303 2.309131 1.84521753 2.990129 3.23252263v-3.85246563zm-5.424501 16.45118933c1.226318-1.4319222 1.839477-3.4023808 1.839477-5.9118975 0-2.5092558-.613159-4.4799752-1.839477-5.9116365-1.223709-1.4319222-2.914463-2.1478833-5.069652-2.1478833-2.18389 0-3.903345.7159611-5.158364 2.1478833-1.255019 1.4316613-1.881224 3.4023807-1.881224 5.9116365 0 2.5095167.626205 4.4799753 1.881224 5.9118975s2.974474 2.1476224 5.158364 2.1476224c2.155189 0 3.845943-.7157002 5.069652-2.1476224z"/><path d="m220.585946 20.3386181h-16.338733c.028701 2.8340996.686216 4.9744163 1.969936 6.4212109 1.283721 1.4465336 3.151899 2.1698005 5.601926 2.1698005 2.598751 0 4.988767-.8709469 7.172657-2.6128406l1.195008 2.6128406c-.973227.915303-2.220419 1.6385698-3.741575 2.1698004-1.518547.5314916-3.076232.7971069-4.670446.7971069-3.483266 0-6.215085-1.0259326-8.192849-3.0775369-1.977765-2.0518652-2.966647-4.8637868-2.966647-8.4360256 0-2.2731244.443562-4.2882 1.328077-6.0447052.887124-1.7565051 2.126488-3.121893 3.720701-4.0961637 1.594214-.97427072 3.410209-1.46140606 5.445375-1.46140606 2.953601 0 5.270559.96696496 6.953485 2.90063396s2.523085 4.5979105 2.523085 7.9929856zm-13.969591-7.0852492c-1.166307 1.1216898-1.912535 2.701292-2.236074 4.7382848h12.972881c-.177424-2.0959604-.787974-3.6901741-1.836868-4.782641-1.048893-1.092206-2.502211-1.6385699-4.362562-1.6385699-1.86035 0-3.37107.5609754-4.537377 1.6829261z"/></g><g fill="#f2f2f2" fill-rule="nonzero" transform="translate(347.017193 95.746626)"><path d="m.13103057 17.5444886 1.30960428-16.95274668h3.09535177l-1.16678937 14.42893518h7.92875255l-.1903731 2.5238115z"/><path d="m13.2028032 17.5444886.9524268-12.02408921h2.9762458l-.9524267 12.02408921zm1.1904984-17.47658839h3.3095741l-.2142224 2.92868762h-3.3095741z"/><path d="m18.7267099 16.2111754 1.0238341-2.0715176c1.3493063.936574 2.7858728 1.404861 4.3096994 1.404861 1.5396794 0 2.3095892-.4444378 2.3095892-1.3334535 0-.412592-.202438-.7261395-.6071738-.9405021-.4047358-.2142224-1.0516115-.4563624-1.940487-.7261395-.8413173-.2380716-1.5398197-.4762835-2.0953669-.7143551-.5555471-.2380716-1.0277622-.5833245-1.4166453-1.0357588-.388883-.452294-.5833245-1.04361503-.5833245-1.77382287 0-1.14279984.4602905-2.06352109 1.3808714-2.76188318.9207213-.69850237 2.1429251-1.04768342 3.6667517-1.04768342.8890158 0 1.7461858.13495869 2.5715101.40473576.8254645.26991737 1.5159704.64294766 2.0715176 1.11909088l-.999985 2.0238191c-1.1904983-.90472823-2.4206986-1.35716248-3.6906009-1.35716248-.7460606 0-1.3174605.11910595-1.71434.35717755-.3968796.23807161-.5952492.58725266-.5952492 1.04768343 0 .42858501.202438.74998869.6071738.96421105.4047358.21436265 1.0594677.45636238 1.9643363.72627978.8730227.2539243 1.5793813.4960643 2.1190758.7261394.5396944.2302154 1.0040533.5754683 1.3929363 1.0357588.388883.4604308.5833246 1.0556799.5833246 1.7857475 0 1.1587929-.4602905 2.0635211-1.3810118 2.714325-.9207212.6508038-2.1587778.9762759-3.7143099.9762759-1.9525519 0-3.7064536-.5079889-5.262126-1.5238266z"/><path d="m35.3699775 13.1396729c-.1111094 1.4127172.4841397 2.1190758 1.7857475 2.1190758.3651741 0 .7777661-.0555547 1.2381968-.1666642l-.1905134 2.3334385c-.5238417.1903731-1.1746456.2856298-1.9524116.2856298-1.2540496 0-2.2143325-.3294002-2.8809891-.9880603-.6667969-.6588004-1.0001253-1.6151552-1.0001253-2.8690645 0-.2382119.0079966-.4207288.0238493-.547691l.428585-5.54775586h-2.3095892l.1905134-2.23818175h2.28574l.2380716-2.92854732 3.0476532-1.00012522-.309479 3.92867254h3.2143174l-.1903731 2.23818175h-3.1906085z"/><path d="m39.5605709 16.2111754 1.0238342-2.0715176c1.349166.936574 2.7857324 1.404861 4.309559 1.404861 1.5398197 0 2.3095893-.4444378 2.3095893-1.3334535 0-.412592-.2022978-.7261395-.6071738-.9405021-.4047358-.2142224-1.0516116-.4563624-1.9404871-.7261395-.8413172-.2380716-1.5396793-.4762835-2.0952265-.7143551s-1.0279026-.5833245-1.4167856-1.0357588c-.388883-.452294-.5833246-1.04361503-.5833246-1.77382287 0-1.14279984.4602905-2.06352109 1.3810118-2.76188318.9207212-.69850237 2.142925-1.04768342 3.6667517-1.04768342.8888754 0 1.7460455.13495869 2.57151.40473576.8253243.26991737 1.5158301.64294766 2.0715176 1.11909088l-1.0001252 2.0238191c-1.1904983-.90472823-2.4206986-1.35716248-3.6904606-1.35716248-.7460606 0-1.3176008.11910595-1.7143401.35717755-.3968795.23807161-.5952492.58725266-.5952492 1.04768343 0 .42858501.2022978.74998869.6071738.96421105.4047358.21436265 1.0594678.45636238 1.964196.72627978.8731631.2539243 1.5795217.4960643 2.1192161.7261394.5396945.2302154 1.003913.5754683 1.3927961 1.0357588.388883.4604308.5833245 1.0556799.5833245 1.7857475 0 1.1587929-.4602905 2.0635211-1.3808714 2.714325-.9207213.6508038-2.1587778.9762759-3.7144502.9762759-1.9524117 0-3.7064537-.5079889-5.2619858-1.5238266z"/><path d="m58.3943218 15.592077.7380641-1.4999774c.8413173.7142148 1.6984873 1.2222038 2.57151 1.5238266.8730228.3016229 1.8890008.4524343 3.0476533.4524343 1.365159 0 2.4167706-.2659893 3.1548346-.7976872.7382044-.5318382 1.1071663-1.2818269 1.1071663-2.2501064 0-.5713999-.1784485-1.0357588-.5356261-1.392796-.3571775-.3571776-.8254645-.6390196-1.4048609-.8452454-.5793965-.2063662-1.3532344-.4207288-2.3215139-.6429477-1.3016077-.2857701-2.3730001-.59524916-3.2143174-.92857747s-1.5238266-.81353993-2.0476684-1.44049456c-.5238417-.62695464-.7857625-1.44849108-.7857625-2.46432874 0-.96827945.2540646-1.82152136.7619133-2.55958543.507989-.73820436 1.2262722-1.31353239 2.1548497-1.72626467.9285774-.41273227 2.0120347-.61909841 3.2500913-.61909841 1.1746456 0 2.2698872.18265718 3.2857249.54769096 1.0159779.36503378 1.8731479.896872 2.57151 1.59523409l-.7619133 1.50011768c-.7936188-.68264964-1.5991622-1.18264211-2.4166302-1.50011768-.8174681-.31747557-1.710412-.47614322-2.6786914-.47614322-1.3174605 0-2.3492912.28170171-3.0953518.8452454s-1.1190909 1.33738164-1.1190909 2.32151383c0 .85717002.3254721 1.49997739.976276 1.9285624s1.6507888.8016153 3.0000951 1.11909087c1.4602754.34918105 2.6071436.67058473 3.4404644.96435135.833461.29362633 1.527895.73806407 2.0834422 1.3333132.5555472.5952492.8333208 1.3849399.8333208 2.3690721 0 .9524267-.2539244 1.7896756-.7619133 2.5120272-.507989.7222113-1.2341285 1.2816866-2.1785587 1.6785662-.9445705.3968795-2.0517367.5952491-3.3214987.5952491-2.6509141 0-4.7619934-.7143551-6.3335185-2.142925z"/><path d="m83.9663269 11.4967403h-8.7859225c.0158527 1.5238266.3691021 2.674623 1.059608 3.4525293.6905059.7777661 1.6944189 1.1666491 3.0118794 1.1666491 1.3968645 0 2.6826195-.468287 3.8572651-1.404861l.6429477 1.404861c-.5238417.4921362-1.1945668.8810193-2.0120348 1.1666491-.817468.2857701-1.6547169.428585-2.5118869.428585-1.873148 0-3.3414199-.5516191-4.4049561-1.6547169-1.0635361-1.1032382-1.5952341-2.6151402-1.5952341-4.5358464 0-1.2222038.2380716-2.30566106.7143551-3.25009127.4761433-.94443021 1.1427999-1.67856617 1.9999699-2.20240788s1.833446-.78576257 2.9286876-.78576257c1.5872376 0 2.8334309.5199136 3.7381591 1.55960051.9047283 1.03968691 1.3571625 2.47218496 1.3571625 4.29763441zm-7.5120921-3.80956661c-.6269547.60310539-1.0277623 1.45241918-1.202423 2.54766081h6.9763258c-.0951164-1.1269471-.4245166-1.98411712-.9880603-2.57151006-.5635437-.58725265-1.3452378-.88101927-2.345363-.88101927-.999985 0-1.8135249.30162284-2.4404795.90486852z"/><path d="m88.8830598 16.9492395c-.8650263-.5078487-1.5316829-1.2261319-1.9999699-2.1548497-.468287-.9285775-.7024305-2.0118945-.7024305-3.249951 0-1.2381968.2380716-2.32951036.7143551-3.27394057.4761433-.94443021 1.1547245-1.67856617 2.0357438-2.20240788.8808789-.52384171 1.9087815-.78576257 3.0834271-.78576257.8094715 0 1.591306.1388868 2.3452228.41666039.7540571.27777359 1.3770836.66272851 1.8690796 1.15486475l-.6428074 1.42856993c-.6032457-.4762835-1.1865702-.82546455-1.7501139-1.04768342s-1.1388717-.33332831-1.7262647-.33332831c-1.2222038 0-2.1824867.40880417-2.8809891 1.2262722-.6983621.81746804-1.0475431 1.95633978-1.0475431 3.41675548 0 1.4444227.3452529 2.5674416 1.0356185 3.3690569.6905059.8016153 1.6548572 1.202423 2.8929137 1.202423.587393 0 1.162721-.1111094 1.7262647-.3333283s1.1468682-.5713999 1.7501139-1.0476834l.6428074 1.4285699c-.507989.4762835-1.1468683.8532419-1.9166378 1.1310155-.7699098.2777736-1.567597.4166604-2.3929213.4166604-1.1587928 0-2.1707024-.2539244-3.0358689-.7619133z"/><path d="m101.276251 7.09192453v6.54774077c0 .8888755.182517 1.511902.547691 1.8690796.365034.3571776.880879.5357663 1.547536.5357663.444437 0 .873023-.0714074 1.285755-.2143626v1.6429326c-.491996.1588079-1.047543.2380716-1.666642.2380716-1.14294 0-2.035743-.3214037-2.678691-.9642111-.6428075-.6429476-.9642112-1.591306-.9642112-2.8453555v-6.80966167h-2.3334385v-1.52382664h2.3334385v-3.07150253l1.9285622-.69050586v3.76200839h3.42868v1.52382664z"/><path d="m107.038229 17.5444886v-11.97639071h1.928703v11.97639071zm-.190373-17.04800338h2.357148v2.19062355h-2.357148z"/><path d="m114.681352 16.9492395c-.85717-.5078487-1.519898-1.2302003-1.988185-2.166634-.468287-.936574-.702431-2.0318157-.702431-3.2858652 0-1.2539093.234144-2.3492912.702431-3.2857249.468287-.93657398 1.131015-1.65878532 1.988185-2.1667743.85717-.50798897 1.849159-.76191332 2.976246-.76191332 1.126947 0 2.119076.25392435 2.976246.76191332.85717.50798898 1.519898 1.23020032 1.988185 2.1667743.468147.9364337.702291 2.0318156.702291 3.2857249 0 1.2540495-.234144 2.3492912-.702291 3.2858652-.468287.9364337-1.131015 1.6587853-1.988185 2.166634-.85717.5079889-1.849299.7619133-2.976246.7619133-1.127087 0-2.119076-.2539244-2.976246-.7619133zm5.71442-2.0118945c.634951-.7857626.952287-1.9326308.952287-3.4406047 0-1.4602754-.325332-2.59129092-.976136-3.39290622-.650804-.80161531-1.555532-1.20242296-2.714325-1.20242296-1.174646 0-2.08737.40080765-2.738174 1.20242296-.650804.8016153-.976276 1.93263082-.976276 3.39290622 0 1.5079739.321544 2.6548421.964351 3.4406047.642808.7857626 1.559601 1.1785737 2.750099 1.1785737s2.103223-.3928111 2.738174-1.1785737z"/><path d="m136.610315 10.0204719v7.5240167h-1.928563v-7.42876c0-1.11109441-.222219-1.92463434-.666656-2.44047953-.444438-.5158452-1.142941-.77383795-2.095367-.77383795-1.111095 0-1.99997.34132482-2.666627 1.02383418-.666656.68250935-1.000125 1.6032306-1.000125 2.7620235v6.8572198h-1.928562v-8.61925838c0-1.23805653-.063411-2.35714741-.190514-3.35713233h1.833446l.190514 2.14292505c.365033-.77790635.912724-1.37708362 1.642792-1.79767212.730208-.42072879 1.563529-.63102304 2.500102-.63102304 2.873133 0 4.30956 1.57938136 4.30956 4.73814412z"/><path d="m139.515153 16.1634769.642948-1.4285699c.650803.5079889 1.309464.8730227 1.97626 1.0952416.666517.2222189 1.412858.3333283 2.237761.3333283.904869 0 1.590885-.1547395 2.059453-.4642186s.702851-.7579852.702851-1.3452379c0-.4762835-.158527-.85717-.475582-1.1429401-.318457-.2857701-.841738-.507989-1.572647-.6666566l-2.022977-.4762835c-1.000406-.2222189-1.774104-.6189581-2.321795-1.1904983-.547691-.5713999-.821396-1.2539093-.821396-2.04766838 0-1.04754313.420588-1.90078504 1.261906-2.55958543.841317-.65866011 1.952832-.98806031 3.333283-.98806031.841738 0 1.635778.13495869 2.380716.40473577.746341.26991736 1.373436.65880039 1.881285 1.16678937l-.642527 1.40472069c-1.127929-.93657399-2.333018-1.40472069-3.619474-1.40472069-.85717 0-1.519338.16259575-1.987905.48806784-.468427.32533179-.702571.78169416-.702571 1.3690871 0 .49199596.146883.88101927.44051 1.16664909.294328.28577005.765701.50798895 1.416645.66665665l2.02438.4999924c1.111095.2540647 1.935998.6468758 2.476113 1.178714.540116.531698.809472 1.2261319.809472 2.083302 0 1.0318306-.420869 1.8571549-1.262607 2.4762533-.840336.6190984-1.983697.9285775-3.42868.9285775-2.015402 0-3.610776-.5158452-4.785422-1.5476759z"/><path d="m171.469076 17.5444886-1.857435-4.3572575h-8.857891l-1.881285 4.3572575h-2.022977l7.452188-16.95274668h1.71434l7.452189 16.95274668zm-10.025101-5.9763409h7.476038l-3.737318-8.71437478z"/><path d="m178.348883 15.0920845v1.7381893c0 .6666566-.110829 1.2777585-.332487 1.8333057-.22306.5555472-.596231 1.0952416-1.119511 1.6190833l-.904869-.6905058c.618678-.7142148.967999-1.3968645 1.047964-2.0476684h-1.143361v-2.4524041z"/><path d="m200.064324 10.2943173c.540116.7063586.809472 1.5834498.809472 2.6309929 0 1.4762685-.492417 2.6151402-1.475848 3.4167555-.984833.8016153-2.373701 1.2024229-4.166603 1.2024229h-7.048155v-16.95274668h6.809662c1.729772 0 3.07515.38495492 4.036134 1.15486475.959582.76976954 1.439373 1.86108306 1.439373 3.27380026 0 .90486851-.232881 1.68656268-.701449 2.34536307-.468567.65866011-1.12372 1.14686824-1.964055 1.46420352.967998.26991737 1.721354.75798521 2.261469 1.46434378zm-9.95215-2.1785586h4.570638c1.269622 0 2.230606-.25406463 2.88155-.76191332.650944-.50798897.976416-1.25404956.976416-2.23818175 0-1.93655891-1.286456-2.90483837-3.857966-2.90483837h-4.570638zm7.892698 7.0596579c.627095-.4999925.939941-1.2658339.939941-2.2976646 0-2.0793738-1.293471-3.11906071-3.880413-3.11906071h-4.952226v6.16671401h4.952226c1.332752 0 2.313377-.2499962 2.940472-.7499887z"/><path d="m206.064515 15.0920845v1.7381893c0 .6666566-.110829 1.2777585-.33389 1.8333057-.221658.5555472-.594828 1.0952416-1.118109 1.6190833l-.904868-.6905058c.618677-.7142148.967999-1.3968645 1.046561-2.0476684h-1.141958v-2.4524041z"/><path d="m218.957137 16.6873186c-1.182642-.6983621-2.090316-1.7024154-2.725828-3.0118794-.635513-1.3096043-.952567-2.853352-.952567-4.63110303 0-1.77789127.317054-3.31364253.952567-4.60725378.635512-1.29361125 1.543186-2.28966807 2.725828-2.98817045 1.182642-.69836209 2.575719-1.04768342 4.17923-1.04768342 1.174225 0 2.250247.17858878 3.226663.53576634.975013.35717755 1.82096.89294389 2.535035 1.60715871l-.737924 1.50011768c-.809471-.69850238-1.60772-1.19849484-2.393342-1.50011768s-1.654016-.45229397-2.606583-.45229397c-1.857435 0-3.29821.60310539-4.322325 1.80945645-1.022712 1.20635107-1.534769 2.92069111-1.534769 5.14302012 0 2.23818173.507848 3.96430613 1.523546 5.17865373 1.015697 1.2143476 2.460681 1.8215213 4.333548 1.8215213.952567 0 1.820961-.1508114 2.606583-.4524342.785622-.3016229 1.583871-.8016153 2.393342-1.4999774l.737924 1.4999774c-.714075.7143551-1.560022 1.2499811-2.535035 1.6071587-.976416.3571776-2.052438.5357663-3.226663.5357663-1.603511 0-2.996588-.349181-4.17923-1.0476834z"/></g><g transform="translate(.267895 224.553185)"><path d="m.21765.193821h263.332986v106.422426h-263.332986z" fill="#c9177e"/><path d="m263.550636 106.616248h-263.33298624v-106.42242661h263.33298624zm-260.79463916-103.88400537v101.34558437h258.25629216v-101.34558437z" fill="#000"/></g><g transform="translate(.968438 362.150954)"><path d="m.058374.14766h70.625927v81.076506h-70.625927z" fill="#00a88a"/><path d="m70.6843004 81.224166h-70.62592672v-81.07650576h70.62592672zm-68.08746821-78.53804774v75.99958964h65.54828551v-75.99958964z" fill="#000"/></g><g transform="translate(97.321977 362.150954)"><path d="m.058374.14766h70.625927v81.076506h-70.625927z" fill="#00a88a"/><path d="m70.6843004 81.224166h-70.62592672v-81.07650576h70.62592672zm-68.08746821-78.53804774v75.99958964h65.54828551v-75.99958964z" fill="#000"/></g><g transform="translate(193.675515 362.150954)"><path d="m.058374.14766h70.625927v81.076506h-70.625927z" fill="#00a88a"/><path d="m70.6843004 81.224166h-70.62592672v-81.07650576h70.62592672zm-68.08746821-78.53804774v75.99958964h65.54828551v-75.99958964z" fill="#000"/></g><g transform="translate(329.309669 362.924954)"><path d="m.058374.14766h70.625927v81.076506h-70.625927z" fill="#00a88a"/><path d="m70.6843004 81.224166h-70.62592672v-81.07650576h70.62592672zm-68.08746821-78.53804774v75.99958964h65.54828551v-75.99958964z" fill="#000"/></g><g transform="translate(425.663669 362.924954)"><path d="m.058374.14766h70.625927v81.076506h-70.625927z" fill="#00a88a"/><path d="m70.6843004 81.224166h-70.62592672v-81.07650576h70.62592672zm-68.08746821-78.53804774v75.99958964h65.54828551v-75.99958964z" fill="#000"/></g><g transform="translate(523.997669 362.924954)"><path d="m.058374.14766h70.625927v81.076506h-70.625927z" fill="#00a88a"/><path d="m70.6843004 81.224166h-70.62592672v-81.07650576h70.62592672zm-68.08746821-78.53804774v75.99958964h65.54828551v-75.99958964z" fill="#000"/></g><g transform="translate(660.171823 361.893877)"><path d="m.058374.14766h70.625927v81.076506h-70.625927z" fill="#00a88a"/><path d="m70.6843004 81.224166h-70.62592672v-81.07650576h70.62592672zm-68.08746821-78.53804774v75.99958964h65.54828551v-75.99958964z" fill="#000"/></g><g transform="translate(756.527208 361.893877)"><path d="m.058374.14766h70.625927v81.076506h-70.625927z" fill="#00a88a"/><path d="m70.6843004 81.224166h-70.62592672v-81.07650576h70.62592672zm-68.08746821-78.53804774v75.99958964h65.54828551v-75.99958964z" fill="#000"/></g><g transform="translate(852.877977 361.893877)"><path d="m.058374.14766h70.625927v81.076506h-70.625927z" fill="#00a88a"/><path d="m70.6843004 81.224166h-70.62592672v-81.07650576h70.62592672zm-68.08746821-78.53804774v75.99958964h65.54828551v-75.99958964z" fill="#000"/></g><g fill="#f2f2f2" fill-rule="nonzero" transform="translate(26.69736 242.51167)"><path d="m.00427353 31.0947909 1.49915514-3.0461739c1.70855821 1.4504369 3.44902547 2.4820676 5.22225648 3.0946072 1.7729461.6125397 3.83592255.9188095 6.18921435.9188095 2.772098 0 4.9077245-.5401745 6.4068797-1.6199537 1.4988702-1.080064 2.2484478-2.6031509 2.2484478-4.5695456 0-1.1604065-.3626805-2.1034326-1.0880414-2.8285086-.7253608-.7253609-1.6763642-1.2977293-2.8527252-1.7165355-1.1766459-.419091-2.7481662-.8544215-4.7145609-1.3057065-2.6433221-.5803457-4.8194048-1.2088399-6.52767811-1.8857674-1.70855822-.6769275-3.0948921-1.6521476-4.15843184-2.9253753-1.06382464-1.2732277-1.59573696-2.9416147-1.59573696-5.0045912 0-1.96639471.51567289-3.69916961 1.54730359-5.19803984 1.0316307-1.49915513 2.49004483-2.66753887 4.37609709-3.505721 1.88576735-.83818214 4.08578183-1.25727321 6.60004333-1.25727321 2.3854857 0 4.6097168.37094261 6.6729782 1.11225801 2.0629765.74131541 3.8037287 1.82137947 5.2222565 3.23962239l-1.5473036 3.04645873c-1.6119764-1.38633388-3.2478846-2.40172515-4.9080094-3.04645873-1.6601249-.64473357-3.4735271-.96695791-5.4399217-.96695791-2.6755162 0-4.7706866.57208353-6.28579626 1.71653548-1.51510965 1.14445195-2.27266448 2.71597223-2.27266448 4.71456088 0 1.7407521.6606881 3.0461738 1.98234919 3.9165499 1.32166109.870376 3.35272854 1.6279309 6.09263255 2.2726645 2.9658314.7091214 5.2949065 1.3618322 6.9872253 1.9584174 1.6923188.5963002 3.1025845 1.4988702 4.230797 2.70771 1.1284974 1.2088399 1.6926037 2.8125541 1.6926037 4.8111427 0 1.9342007-.5159578 3.6344968-1.5473036 5.101458-1.0316307 1.4666763-2.5065691 2.602866-4.4245304 3.4088542s-4.1664091 1.2088399-6.7453434 1.2088399c-5.38322623 0-9.67071874-1.4507218-12.86219267-4.3518804z"/><path d="m51.9362381 22.7779272h-17.8425672c.0324789 3.0946072.7495776 5.4316596 2.151866 7.011442 1.4022884 1.5794975 3.4413331 2.3692463 6.1168493 2.3692463 2.8367707 0 5.4478989-.9510034 7.8330998-2.8530102l1.3057065 2.8530102c-1.0638246.9994368-2.4256569 1.7891855-4.0857817 2.3692463-1.6604098.5803457-3.3607058.8703761-5.101458.8703761-3.8037287 0-6.7855146-1.1202353-8.9453578-3.3604209-2.1598433-2.2404705-3.2399073-5.310861-3.2399073-9.2114564 0-2.4820676.4837638-4.6823669 1.4507217-6.6003282s2.3210979-3.4088543 4.06185-4.4726789c1.7404673-1.0638247 3.7231014-1.595737 5.9473325-1.595737 3.2236679 0 5.7541688 1.0558474 7.5915028 3.1672572 1.8376189 2.1114099 2.7561434 5.0205458 2.7561434 8.7276926zm-15.2553707-7.736518c-1.2735126 1.2247944-2.0874781 2.949592-2.4418964 5.1738231h14.1676144c-.1934486-2.288619-.8623989-4.0293711-2.0068508-5.2222565-1.1441671-1.1926004-2.7319268-1.7891855-4.7627093-1.7891855-2.0307826 0-3.6829302.6125397-4.9561579 1.8376189z"/><path d="m61.9214888 33.8509343c-1.7569916-1.0313458-3.1108466-2.4900448-4.06185-4.3760971-.9510034-1.8857673-1.4265051-4.0857818-1.4265051-6.6000433 0-2.5145464.4837639-4.7308002 1.4507218-6.6487615s2.3453145-3.4088543 4.1342152-4.4726789c1.7891855-1.0638247 3.8763787-1.595737 6.2618644-1.595737 1.6441703 0 3.2316451.2820531 4.7627093.8461594 1.5313491.5641063 2.7965995 1.3458778 3.7960363 2.3453145l-1.3057066 2.9011587c-1.2247943-.9672429-2.4097024-1.6763643-3.5538694-2.1276493-1.144452-.451285-2.3131206-.6769276-3.505721-.6769276-2.4820676 0-4.4325078.8302049-5.8507507 2.4903298-1.4185278 1.6601248-2.1276493 3.9729605-2.1276493 6.9387919 0 2.9333526.7011442 5.2139943 2.1034326 6.8419253 1.4022884 1.6279309 3.3604209 2.4418963 5.8749674 2.4418963 1.1926004 0 2.361269-.2256425 3.505721-.6769275 1.144167-.451285 2.3290751-1.1604065 3.5538694-2.1276493l1.3057066 2.9011586c-1.0316307.9672429-2.3290751 1.7327749-3.8926181 2.2968812-1.5635431.5641063-3.1832118.8461594-4.8595761.8461594-2.3532918 0-4.408291-.5156729-6.1649977-1.5473036z"/><path d="m87.0894602 13.8325694v13.2972382c0 1.80514.3709426 3.0703905 1.112258 3.7957514s1.7891855 1.0880413 3.1430406 1.0880413c.90257 0 1.7729461-.1450152 2.6111282-.4353305v3.3364892c-.9994368.3225092-2.1276493.4834789-3.3849225.4834789-2.3208129 0-4.1342151-.6527108-5.4396368-1.9581325-1.3057066-1.3057066-1.9584174-3.2316451-1.9584174-5.7783855v-13.8291505h-4.7387775v-3.0946072h4.7387775v-6.23764778l3.9165499-1.4022884v7.63993618h6.9630086v3.0946072z"/><path d="m98.7912464 35.0597742v-24.321812h3.9165496v24.321812zm-.3868972-34.62130978h4.7869258v4.44874713h-4.7869258z"/><path d="m114.312716 33.8509343c-1.740752-1.0313458-3.08663-2.498307-4.037634-4.4000289-.950718-1.9020067-1.42622-4.1262378-1.42622-6.6729782 0-2.5464555.475502-4.7709715 1.42622-6.6726933.951004-1.9020068 2.296882-3.3686831 4.037634-4.4003138s3.75558-1.5473036 6.044199-1.5473036c2.288904 0 4.303447.5156729 6.044199 1.5473036s3.08663 2.498307 4.037633 4.4003138c.951004 1.9017218 1.426505 4.1262378 1.426505 6.6726933 0 2.5467404-.475501 4.7709715-1.426505 6.6729782-.951003 1.9017219-2.296881 3.3686831-4.037633 4.4000289-1.740752 1.0316307-3.755295 1.5473036-6.044199 1.5473036-2.288619 0-4.303447-.5156729-6.044199-1.5473036zm11.604919-4.0857818c1.289467-1.5957369 1.934201-3.924812 1.934201-6.9872253 0-2.9655465-.660973-5.2624277-1.982634-6.8903586s-3.158995-2.4418964-5.512287-2.4418964c-2.385486 0-4.239059.8139655-5.56072 2.4418964s-1.98235 3.9248121-1.98235 6.8903586c0 3.0624133.652711 5.3914884 1.958133 6.9872253 1.305707 1.595737 3.167257 2.393463 5.584937 2.393463s4.271253-.797726 5.56072-2.393463z"/><path d="m158.846626 19.7799018v15.2798724h-3.916835v-15.0864238c0-2.2564251-.451285-3.9085727-1.353855-4.9561579s-2.320813-1.5715203-4.255013-1.5715203c-2.256425 0-4.06185.693167-5.415705 2.079216-1.353856 1.3860489-2.030783 3.2558618-2.030783 5.6091536v13.9257324h-3.91655v-17.5041035c0-2.5142615-.129061-4.786926-.386897-6.8177085h3.723101l.386897 4.3518804c.741316-1.5797825 1.853574-2.7965996 3.33649-3.6507362 1.482915-.8544216 3.175234-1.2814899 5.076956-1.2814899 5.834796 0 8.752194 3.2074284 8.752194 9.6222853z"/><path d="m205.653771 35.0597742-3.772105-8.848776h-17.988722l-3.817689 8.848776h-4.111138l15.134003-34.42786122h3.481504l15.134002 34.42786122zm-20.359108-12.1368318h15.185285l-7.592643-17.69726709z"/></g><g fill="#f2f2f2" fill-rule="nonzero" transform="translate(22.788376 290.137172)"><path d="m.04658391 21.7701602 1.62834138-20.70276002h4.56506199l-1.36656882 17.01005832h9.24650314l-.2907867 3.6927017z"/><path d="m16.3006611 21.7701602 1.1629859-14.74195382h4.3906544l-1.1629859 14.74195382zm1.5119622-21.66232409h4.7104554l-.319801 4.12904304h-4.7104553z"/><path d="m23.395439 20.2000084 1.4247584-3.0530998c.8141707.5622308 1.6863698.9935752 2.6169196 1.2940334.9303887.3004581 1.8609386.4506872 2.7913273.4506872.8141707 0 1.415087-.1163792 1.8027489-.3489764.387662-.2325971.5815736-.5427267.5815736-.9303886 0-.407166-.2277615-.7269669-.6832845-.9595641-.4555229-.2325972-1.1969969-.5040411-2.224422-.8141707-1.0661106-.2907868-1.9384709-.5815735-2.6169196-.8723603-.6784487-.2907867-1.2648579-.72197-1.7590665-1.2938721-.4943697-.5719021-.741474-1.3133761-.741474-2.224422 0-.9498927.2664471-1.78340617.7995024-2.50054048.5330554-.7172955 1.2891976-1.27936503 2.2681045-1.68653097.9789069-.40700475 2.0983714-.61058772 3.3583937-.61058772 1.1047962 0 2.1855752.16473618 3.2420144.49436973 1.0564393.32947236 1.9433067.7753239 2.6606022 1.33755462l-1.3957442 2.93672062c-.7172955-.5233839-1.4732766-.9208785-2.2679433-1.1921612-.7948279-.27144401-1.5701518-.40716599-2.3262941-.40716599-.7946667 0-1.395583.11637918-1.802749.34897639-.4070047.2325971-.6105877.5523981-.6105877.959564 0 .4265088.2422686.7656525.7269669 1.0177537.4845371.25194 1.2211754.5135513 2.2097537.7849953 1.0662719.3101296 1.9336353.6105877 2.6024126.9013745.6687773.2907867 1.2503508.7221312 1.7447205 1.2938721.4942086.5719021.7413128 1.3133761.7413128 2.224422 0 1.4539338-.5765766 2.5927412-1.7300522 3.4165832-1.1533145.8238421-2.7089592 1.2356826-4.6667729 1.2356826-2.5200445 0-4.768645-.6009163-6.7458015-1.802749z"/><path d="m44.7087867 16.0421124c-.0581896.8141707.1065466 1.415087.4942086 1.8027489.3878231.387662.9208784.5815736 1.5993272.5815736.4458515 0 .94006-.0776936 1.482948-.2327584l-.2907868 3.4020761c-.6591059.271444-1.5119622.4070048-2.5587301.4070048-1.6671881 0-2.9417175-.4458516-3.8237491-1.3375546-.8818705-.8915419-1.3228864-2.1515642-1.3228864-3.7799055 0-.3296336.0096714-.5815736.0290142-.7559811l.4651944-5.8154129h-2.7913273l.2616114-3.28569692h2.7914884l.2616114-3.46010454 4.5070336-1.42475841-.3779906 4.88486295h3.7508913l-.2617725 3.28569692h-3.7508913z"/><path d="m49.3900667 20.2000084 1.4247584-3.0530998c.8141707.5622308 1.686531.9935752 2.6169197 1.2940334.9305498.3004581 1.8609385.4506872 2.7914884.4506872.8141707 0 1.415087-.1163792 1.802749-.3489764.3876619-.2325971.5815735-.5427267.5815735-.9303886 0-.407166-.2277615-.7269669-.6832844-.9595641-.4556842-.2325972-1.196997-.5040411-2.224422-.8141707-1.0661107-.2907868-1.938471-.5815735-2.6169197-.8723603-.6784487-.2907867-1.2648579-.72197-1.7592276-1.2938721-.4942086-.5719021-.741474-1.3133761-.741474-2.224422 0-.9498927.2666082-1.78340617.7996635-2.50054048.5330554-.7172955 1.2890365-1.27936503 2.2679433-1.68653097.9789069-.40700475 2.0983715-.61058772 3.3583937-.61058772 1.1049574 0 2.1857364.16473618 3.2421757.49436973 1.0564392.32947236 1.9433066.7753239 2.6604409 1.33755462l-1.395583 2.93672062c-.7172955-.5233839-1.4732766-.9208785-2.2681045-1.1921612-.7946667-.27144401-1.5701518-.40716599-2.3261329-.40716599-.7948279 0-1.3957442.11637918-1.802749.34897639-.4070047.2325971-.6105877.5523981-.6105877.959564 0 .4265088.2422686.7656525.7269669 1.0177537.4845372.25194 1.2211755.5135513 2.2097537.7849953 1.0661107.3101296 1.9336353.6105877 2.6024126.9013745.6687773.2907867 1.2503508.7221312 1.7445594 1.2938721.4943697.5719021.741474 1.3133761.741474 2.224422 0 1.4539338-.5767379 2.5927412-1.7300523 3.4165832-1.1533145.8238421-2.7089592 1.2356826-4.6667729 1.2356826-2.5200445 0-4.768645-.6009163-6.7459627-1.802749z"/><path d="m73.2145935 2.29179942h7.7695192c2.0061707 0 3.5700361.48340881 4.6917573 1.44990405 1.12156.96665643 1.68234 2.29808583 1.68234 3.9942882 0 1.69604118-.5652933 3.03198393-1.6960412 4.00782813-1.1307478.9756831-2.6900999 1.4636052-4.6780561 1.4636052h-5.526238v8.5627352h-2.2432812zm7.5778643 9.05533178c1.4408774 0 2.5260084-.3101295 3.2555544-.9302274.7295459-.62009798 1.0943189-1.51373534 1.0943189-2.68091213 0-1.16733798-.364773-2.05646202-1.0943189-2.66737212-.729546-.61107129-1.814677-.91652634-3.2555544-.91652634h-5.3345831v7.19503799z"/><path d="m102.432215 8.0095311v13.7606291h-2.188638v-2.4894183c-.4012015.8572084-1.0075983 1.5182486-1.8193511 1.9832817-.8115916.4651944-1.7553591.6976303-2.8314635.6976303-1.2218202 0-2.2934114-.2917539-3.214451-.8754229-.9210397-.5835078-1.63221-1.4088006-2.1338332-2.4758784-.5016233-1.0669166-.7522738-2.3116257-.7522738-3.7341275 0-1.4226629.255325-2.6765599.7659749-3.761691s1.2264947-1.92863838 2.1475344-2.53052184c.9210396-.60188346 1.9834429-.90282519 3.1870487-.90282519 1.0761044 0 2.0153585.23711049 2.8179235.71133147.8024039.47422098 1.4134752 1.13993568 1.8328911 1.99698296v-2.3799704zm-3.2829565 10.7376719c.729546-.9210397 1.0943185-2.2295801 1.0943185-3.9257825s-.3647725-3.0002295-1.0943185-3.9120813c-.7295459-.91185183-1.7690602-1.36785834-3.1187041-1.36785834s-2.4028593.46970764-3.1598076 1.40896184c-.756787.9392541-1.1352611 2.2477945-1.1352611 3.9257824 0 1.6778267.3737996 2.9728272 1.12156 3.884679s1.8056504 1.3678583 3.1735087 1.3678583c1.3496439 0 2.3891582-.4605198 3.1187041-1.3815594z"/><path d="m118.983366 8.0095311v13.6511811c0 2.0427609-.524351 3.5884118-1.573054 4.6371139-1.048702 1.0487022-2.594514 1.5730532-4.637113 1.5730532-2.097405 0-3.903055-.4742209-5.41679-1.4226629l.382987-1.8054892c.875423.4924355 1.700716.8480206 2.475878 1.0669166.775163.218896 1.627697.328344 2.557925.328344 1.331429 0 2.334514-.3510718 3.009256-1.0533766.674902-.7021436 1.012273-1.7461713 1.012273-3.1324053v-3.2553932c-.419417.8754229-1.035001 1.5546775-1.846593 2.0380863-.811591.4832477-1.773735.7248715-2.886268.7248715-1.203606 0-2.275197-.2825661-3.214451-.8480206-.939254-.5652933-1.664287-1.3678584-2.174937-2.4073727-.51065-1.0396755-.765974-2.2342546-.765974-3.5838984 0-1.3496439.255324-2.544223.765974-3.5837373.51065-1.0396755 1.235683-1.84207932 2.174937-2.40753384.939254-.56529333 2.010845-.84802059 3.214451-.84802059 1.094319 0 2.047274.23711049 2.858866.71133147s1.427176 1.13993568 1.846593 1.99698296v-2.3799704zm-3.351302 10.1631907c.756787-.8846107 1.135262-2.1019176 1.135262-3.652243 0-1.5501643-.378475-2.7676323-1.135262-3.6520819-.756948-.88461068-1.800976-1.32691604-3.132405-1.32691604-1.349644 0-2.412047.44230536-3.18721 1.32691604-.775001.8844496-1.162663 2.1019176-1.162663 3.6520819 0 1.5503254.387662 2.7676323 1.162663 3.652243.775163.8846107 1.837566 1.3267549 3.18721 1.3267549 1.331429 0 2.375457-.4421442 3.132405-1.3267549z"/><path d="m134.76838 14.8214205h-10.094846c.018375 1.7508458.424091 3.0730874 1.217468 3.9668859.793377.8936374 1.947014 1.340456 3.460749 1.340456 1.604969 0 3.082275-.5380522 4.431758-1.6141566l.738734 1.6141566c-.601884.5654546-1.372372 1.0122732-2.311626 1.3404561-.939415.328344-1.901397.4924354-2.886268.4924354-2.152048 0-3.839062-.633799-5.061044-1.901236-1.221981-1.2675982-1.833052-3.0047428-1.833052-5.2115951 0-1.4042873.2737-2.6491576.820779-3.7342887s1.313215-1.92863838 2.298086-2.53052184c.98471-.60188346 2.106431-.90282519 3.364841-.90282519 1.823865 0 3.255555.59737014 4.295069 1.79194923 1.039675 1.1945791 1.559352 2.8404902 1.559352 4.9378945zm-8.63108-4.3771144c-.720519.6929558-1.181039 1.6688-1.381559 2.9272104h8.015656c-.109448-1.2948393-.487922-2.2797102-1.135422-2.9546127-.647339-.67474139-1.545651-1.01227325-2.694614-1.01227325-1.148962 0-2.083703.3465585-2.804061 1.03967555z"/><path d="m137.285362 20.1834059.738572-1.6413978c.747761.583669 1.504709 1.0030854 2.270684 1.2584103.765975.255325 1.623506.3829875 2.571303.3829875 1.039675 0 1.827894-.1777926 2.366269-.5333778.538375-.3555851.807562-.8709095.807562-1.5456509 0-.54724-.182145-.9848709-.546434-1.3132149-.365901-.328344-.96714-.583669-1.80694-.7659749l-2.32436-.54724c-1.149446-.255325-2.03857-.7111703-2.667856-1.3678584-.629124-.6565268-.943767-1.4407162-.943767-2.3527292 0-1.2036057.483248-2.18396332 1.449904-2.94091156.966656-.75678705 2.243926-1.13526117 3.830036-1.13526117.96714 0 1.877863.15506478 2.735394.46503315.857531.31012956 1.57805.75694824 2.161558 1.34061723l-.73825 1.61399545c-1.295968-1.0761044-2.682202-1.61399545-4.158702-1.61399545-.984871 0-1.745688.18681921-2.284063.56078005-.538213.3737996-.807239.8981506-.807239 1.5730532 0 .5652933.168605 1.0122732.505975 1.340456.336726.328344.879936.583669 1.627858.7659749l2.325972.5744812c1.276625.291915 2.224422.743247 2.845003 1.3543183.61897.6109101.930067 1.4088006.930067 2.3936715 0 1.1855525-.48357 2.1338333-1.45071 2.8451647-.965529.7113315-2.279227 1.0669166-3.939484 1.0669166-2.315817 0-4.148708-.5926956-5.498352-1.778248z"/><path d="m166.776845 19.8826253h4.294102v1.8875349h-10.860982v-1.8875349h4.295713v-14.8003046l-3.994288 2.54422296v-2.16123552l4.979159-3.17350872h1.286296z"/><path d="m177.692632 18.9523978v1.9971441c0 .7659749-.128952 1.4681185-.383632 2.1064309s-.683446 1.2584104-1.286296 1.8602938l-1.039676-.7933771c.71246-.8206183 1.113823-1.6049689 1.20409-2.3527293h-1.313699v-2.8177624z"/><path d="m194.243621 19.8826253v1.8875349h-12.529298v-1.6960412l6.811889-7.5506231c.910724-1.0214611 1.576438-1.9425007 1.997144-2.76311902.419094-.82077948.628641-1.64139777.628641-2.46217725 0-1.07610444-.311096-1.90139724-.930066-2.4758784-.620582-.57448116-1.505515-.86172174-2.654799-.86172174-1.860133 0-3.700923.74776041-5.525594 2.24328123l-.847859-1.72344348c.765652-.72954594 1.732792-1.31321493 2.899808-1.75084578 1.167016-.43779204 2.343703-.65668806 3.530061-.65668806 1.785985 0 3.199622.46051983 4.239297 1.38155949 1.039676.92103966 1.560319 2.16574884 1.560319 3.73428873 0 1.11253338-.251456 2.18396331-.752757 3.21445098-.501301 1.0304877-1.336265 2.1841245-2.503281 3.4607493l-5.552995 6.0186734z"/><path d="m200.425258 18.9523978v1.9971441c0 .7659749-.12734 1.4681185-.38202 2.1064309-.256292.6383124-.683446 1.2584104-1.286297 1.8602938l-1.039675-.7933771c.710848-.8206183 1.112211-1.6049689 1.204089-2.3527293h-1.313698v-2.8177624z"/><path d="m215.691563 13.4535622c.601239.802565.902664 1.814677.902664 3.0366584 0 1.6962023-.575448 3.0321451-1.723121 4.0078281-1.149285.9758443-2.709604 1.4636052-4.679346 1.4636052-1.257282 0-2.466207-.2097082-3.623551-.6291245-1.158956-.4195776-2.138991-1.0122732-2.941718-1.7782481l.875262-1.7236047c1.805328 1.495682 3.684803 2.2434424 5.635202 2.2434424 1.386234 0 2.440417-.3101295 3.160936-.9302275.72052-.6200979 1.079973-1.5319497 1.079973-2.7357166 0-2.3891582-1.495843-3.5837373-4.485917-3.5837373h-2.243765v-1.8876961h1.805328c1.441038 0 2.54519-.3191562 3.310842-.9574686.765653-.63847359 1.149285-1.55032542 1.149285-2.73571668 0-1.05788997-.315932-1.86948162-.944573-2.43493614-.628641-.56529333-1.51841-.84802059-2.667695-.84802059-1.860132 0-3.702534.74776041-5.525593 2.24328123l-.847859-1.72344348c.783383-.74776041 1.745687-1.33594272 2.885301-1.76454693 1.141225-.42860421 2.330807-.64298691 3.570358-.64298691 1.752135 0 3.151265.44681868 4.200612 1.34061723 1.047735.89363736 1.571602 2.09740428 1.571602 3.61113957 0 1.11253338-.272411 2.08821645-.820457 2.9272104-.546434.838994-1.304027 1.4408774-2.269555 1.8054892 1.147673.328344 2.022934.8937985 2.625785 1.6962024z"/></g><g transform="translate(329.992265 224.553185)"><path d="m.21765.193821h263.332986v106.422426h-263.332986z" fill="#c9177e"/><path d="m263.550636 106.616248h-263.33298624v-106.42242661h263.33298624zm-260.79463916-103.88400537v101.34558437h258.25629216v-101.34558437z" fill="#000"/></g><g fill="#f2f2f2" fill-rule="nonzero" transform="translate(359.320353 242.51167)"><path d="m.14615481 31.0947909 1.49887023-3.0461739c1.70855821 1.4504369 3.44931037 2.4820676 5.22225648 3.0946072 1.7729461.6125397 3.83620748.9188095 6.18921438.9188095 2.7723829 0 4.9080094-.5401745 6.4068796-1.6199537 1.4991552-1.080064 2.2484478-2.6031509 2.2484478-4.5695456 0-1.1604065-.3623955-2.1034326-1.0877564-2.8285086-.7253609-.7253609-1.6763643-1.2977293-2.8530102-1.7165355-1.1766458-.419091-2.7481661-.8544215-4.7145608-1.3057065-2.6433222-.5803457-4.81911993-1.2088399-6.52767814-1.8857674-1.70855822-.6769275-3.0946072-1.6521476-4.15843184-2.9253753s-1.59573696-2.9416147-1.59573696-5.0045912c0-1.96639471.5159578-3.69916961 1.54730359-5.19803984 1.0316307-1.49915513 2.49032973-2.66753887 4.37609709-3.505721 1.88576735-.83818214 4.08606666-1.25727321 6.60032816-1.25727321 2.3854858 0 4.6097169.37094261 6.6726934 1.11225801 2.0632614.74131541 3.8040135 1.82137947 5.2222565 3.23962239l-1.5473036 3.04645873c-1.6116915-1.38633388-3.2475997-2.40172515-4.9077245-3.04645873-1.6601249-.64473357-3.4735271-.96695791-5.4399218-.96695791-2.6755161 0-4.77097143.57208353-6.28608109 1.71653548-1.51510965 1.14445195-2.27266448 2.71597223-2.27266448 4.71456088 0 1.7407521.660973 3.0461738 1.98263409 3.9165499 1.32166109.870376 3.35244368 1.6279309 6.09263258 2.2726645 2.9655465.7091214 5.2946216 1.3618322 6.9869404 1.9584174 1.6926037.5963002 3.1028694 1.4988702 4.2310819 2.70771 1.1282125 1.2088399 1.6923188 2.8125541 1.6923188 4.8111427 0 1.9342007-.5156729 3.6344968-1.5473036 5.101458-1.0316307 1.4666763-2.5062843 2.602866-4.4242456 3.4088542-1.9182462.8059882-4.166694 1.2088399-6.7453434 1.2088399-5.38351106 0-9.67071867-1.4507218-12.86219259-4.3518804z"/><path d="m52.0781194 22.7779272h-17.8425672c.032194 3.0946072.7495776 5.4316596 2.151866 7.011442 1.4022884 1.5794975 3.4410482 2.3692463 6.1165643 2.3692463 2.8367708 0 5.447899-.9510034 7.8333847-2.8530102l1.3057066 2.8530102c-1.0638246.9994368-2.4259418 1.7891855-4.0860667 2.3692463-1.6601248.5803457-3.3604209.8703761-5.101173.8703761-3.8040136 0-6.7857995-1.1202353-8.9456428-3.3604209-2.1598432-2.2404705-3.2396224-5.310861-3.2396224-9.2114564 0-2.4820676.483479-4.6823669 1.4507218-6.6003282.9669579-1.9179613 2.320813-3.4088543 4.0615651-4.4726789 1.7407522-1.0638247 3.7233863-1.595737 5.9476174-1.595737 3.2233829 0 5.7541688 1.0558474 7.5915028 3.1672572 1.837334 2.1114099 2.7561434 5.0205458 2.7561434 8.7276926zm-15.2556556-7.736518c-1.2732277 1.2247944-2.0871932 2.949592-2.4418964 5.1738231h14.1676143c-.1931636-2.288619-.8621139-4.0293711-2.0065658-5.2222565-1.144452-1.1926004-2.7319268-1.7891855-4.7627094-1.7891855-2.0310674 0-3.683215.6125397-4.9564427 1.8376189z"/><path d="m62.0630852 33.8509343c-1.7567067-1.0313458-3.1105617-2.4900448-4.0615651-4.3760971-.9510034-1.8857673-1.4265051-4.0857818-1.4265051-6.6000433 0-2.5145464.483479-4.7308002 1.4507218-6.6487615.9669579-1.9179613 2.3450296-3.4088543 4.1342151-4.4726789 1.7889007-1.0638247 3.8763787-1.595737 6.2618645-1.595737 1.6438854 0 3.2316451.2820531 4.7627093.8461594 1.531349.5641063 2.7965995 1.3458778 3.7957514 2.3453145l-1.3054217 2.9011587c-1.2250793-.9672429-2.4097024-1.6763643-3.5541544-2.1276493-1.144167-.451285-2.3128357-.6769276-3.505721-.6769276-2.4820675 0-4.4322228.8302049-5.8507506 2.4903298-1.4182429 1.6601248-2.1273644 3.9729605-2.1273644 6.9387919 0 2.9333526.7011442 5.2139943 2.1031477 6.8419253 1.4022884 1.6279309 3.3607058 2.4418963 5.8749673 2.4418963 1.1928853 0 2.361554-.2256425 3.505721-.6769275 1.144452-.451285 2.3290751-1.1604065 3.5541544-2.1276493l1.3054217 2.9011586c-1.0316307.9672429-2.3290751 1.7327749-3.8923333 2.2968812-1.563543.5641063-3.1834966.8461594-4.859576.8461594-2.3532918 0-4.408291-.5156729-6.1652826-1.5473036z"/><path d="m87.2313415 13.8325694v13.2972382c0 1.80514.3706577 3.0703905 1.112258 3.7957514.7413154.7253609 1.7889006 1.0880413 3.1427556 1.0880413.9025701 0 1.7729461-.1450152 2.6111283-.4353305v3.3364892c-.9991519.3225092-2.1273644.4834789-3.3846376.4834789-2.3210979 0-4.1342152-.6527108-5.4399217-1.9581325-1.3054217-1.3057066-1.9581325-3.2316451-1.9581325-5.7783855v-13.8291505h-4.7387776v-3.0946072h4.7387776v-6.23764778l3.9165499-1.4022884v7.63993618h6.9630086v3.0946072z"/><path d="m98.9328427 35.0597742v-24.321812h3.9168353v24.321812zm-.3866122-34.62130978h4.7869255v4.44874713h-4.7869255z"/><path d="m114.454597 33.8509343c-1.740752-1.0313458-3.08663-2.498307-4.037633-4.4000289-.951004-1.9020067-1.426505-4.1262378-1.426505-6.6729782 0-2.5464555.475501-4.7709715 1.426505-6.6726933.951003-1.9020068 2.296881-3.3686831 4.037633-4.4003138s3.755295-1.5473036 6.044199-1.5473036c2.288619 0 4.303447.5156729 6.044199 1.5473036 1.740753 1.0316307 3.08663 2.498307 4.037634 4.4003138.950718 1.9017218 1.42622 4.1262378 1.42622 6.6726933 0 2.5467404-.475502 4.7709715-1.42622 6.6729782-.951004 1.9017219-2.296881 3.3686831-4.037634 4.4000289-1.740752 1.0316307-3.75558 1.5473036-6.044199 1.5473036-2.288904 0-4.303447-.5156729-6.044199-1.5473036zm11.604919-4.0857818c1.289468-1.5957369 1.933916-3.924812 1.933916-6.9872253 0-2.9655465-.660688-5.2624277-1.982349-6.8903586s-3.158995-2.4418964-5.512287-2.4418964c-2.385486 0-4.239059.8139655-5.56072 2.4418964s-1.982634 3.9248121-1.982634 6.8903586c0 3.0624133.652996 5.3914884 1.958417 6.9872253 1.305707 1.595737 3.167257 2.393463 5.584937 2.393463s4.271253-.797726 5.56072-2.393463z"/><path d="m158.988222 19.7799018v15.2798724h-3.916549v-15.0864238c0-2.2564251-.451285-3.9085727-1.353856-4.9561579-.90257-1.0475852-2.321097-1.5715203-4.255298-1.5715203-2.256425 0-4.061565.693167-5.41542 2.079216-1.353855 1.3860489-2.031068 3.2558618-2.031068 5.6091536v13.9257324h-3.91655v-17.5041035c0-2.5142615-.128775-4.786926-.386897-6.8177085h3.723387l.386897 4.3518804c.741315-1.5797825 1.853573-2.7965996 3.336204-3.6507362 1.482916-.8544216 3.175234-1.2814899 5.077241-1.2814899 5.834796 0 8.751909 3.2074284 8.751909 9.6222853z"/><path d="m203.619569 20.3360308c1.096874 1.4344824 1.643886 3.2156906 1.643886 5.343055 0 2.9980254-1.000007 5.3108611-3.00002 6.938792-1.997164 1.6279309-4.817695 2.4418964-8.461594 2.4418964h-14.310635v-34.42786122h13.82915c3.512844 0 6.245056.78177151 8.196635 2.34531453 1.948731 1.56325812 2.923097 3.77951197 2.923097 6.64847666 0 1.83761893-.475787 3.42509373-1.424511 4.76299423-.951573 1.3376156-2.282066 2.3290751-3.991479 2.9735238 1.968673.5481517 3.498598 1.5393263 4.595471 2.9738086zm-20.213807-4.4242455h9.284961c2.578364 0 4.529944-.5159578 5.85189-1.5473036 1.321946-1.0316307 1.982919-2.5467404 1.982919-4.54532897 0-3.93278933-2.612553-5.899184-7.834809-5.899184h-9.284961zm16.031444 14.3368462c1.273512-1.0153913 1.908844-2.5706722 1.908844-4.6661275 0-4.2228197-2.626798-6.3342296-7.880393-6.3342296h-10.059895v12.523444h10.059895c2.70657 0 4.698036-.5076956 5.971549-1.5230869z"/></g><g fill="#f2f2f2" fill-rule="nonzero" transform="translate(356.809897 292.199308)"><path d="m.10689318 19.8854177 1.48742717-18.91226722h4.17039899l-1.24844346 15.53895012h8.44675212l-.2655896 3.3733171z"/><path d="m14.955185 19.8854177 1.0625151-13.46697537h4.01092l-1.0625151 13.46697537zm1.3811601-19.78885388h4.3031155l-.2921955 3.77193628h-4.3031156z"/><path d="m21.436386 18.4510458 1.3014988-2.7889259c.7437136.5134941 1.540639.9074182 2.3906198 1.1819286.8499807.2745105 1.6999614.4117657 2.5499422.4117657.7437136 0 1.2927345-.1062672 1.6469061-.3188015.3541717-.2125343.5311793-.495809.5311793-.8499807 0-.3718568-.2079956-.6640524-.6241435-.8765867-.4161478-.2123778-1.0935031-.4602823-2.0320659-.7437136-.973933-.2655896-1.7708584-.5311792-2.3906197-.7967689-.6197613-.2657461-1.1554793-.6596702-1.6069973-1.1820852-.451518-.5224149-.6773553-1.1997702-.6773553-2.0320659 0-.86766582.2435224-1.62906451.7305671-2.28435256.4868883-.65513154 1.1775465-1.16862571 2.0718183-1.5404825s1.916878-.5579417 3.0679751-.5579417c1.0093032 0 1.9965392.15055818 2.9615514.45167454.9651687.30095986 1.7752405.70834338 2.4305286 1.22183754l-1.2750494 2.68281528c-.6551315-.47812392-1.3457898-.84121642-2.0718183-1.08912095s-1.4343718-.37185679-2.1250301-.37185679c-.7260285 0-1.2748928.10626716-1.6467496.31880147-.3718568.21237781-.5577852.50457336-.5577852.87643017 0 .3896984.2212986.6995791.6640523.9297985.4425972.2302194 1.1155704.4692031 2.0186065.7171076.9740895.2832748 1.7664762.5577852 2.3773168.8233749.610997.2657461 1.1421763.6596702 1.5938508 1.1820851.451518.522415.6773553 1.1997703.6773553 2.032066 0 1.3281047-.5269536 2.3683959-1.5805479 3.1210303-1.0535942.7526344-2.4746631 1.1288734-4.2632067 1.1288734-2.3020377 0-4.3561708-.5490209-6.1623995-1.6469062z"/><path d="m40.9064384 14.6526601c-.0530553.7437136.0973463 1.2927345.451518 1.6469062s.8412165.5311793 1.4609778.5311793c.407227 0 .8589015-.0707405 1.3547106-.2123778l-.2657461 3.1077274c-.6020763.2479045-1.3811601.3718568-2.337408.3718568-1.5229539 0-2.6871974-.407227-3.4928871-1.2218376-.8056897-.8146105-1.2085346-1.9655511-1.2085346-3.4531348 0-.3009598.0087643-.5311792.0264494-.6906582l.4250686-5.31241881h-2.5499422l.2389837-3.00146026h2.5499422l.2391403-3.16093925 4.1170306-1.30149878-.3452509 4.46243803h3.4265289l-.2389837 3.00146026h-3.4265289z"/><path d="m45.182948 18.4510458 1.3014988-2.7889259c.7438701.5134941 1.540639.9074182 2.3906198 1.1819286.8499807.2745105 1.6999614.4117657 2.5499422.4117657.7438701 0 1.2927345-.1062672 1.6469062-.3188015.3541716-.2125343.5313357-.495809.5313357-.8499807 0-.3718568-.2081521-.6640524-.6242999-.8765867-.4161479-.2123778-1.0935032-.4602823-2.032066-.7437136-.973933-.2655896-1.7707019-.5311792-2.3904632-.7967689-.6199178-.2657461-1.1554793-.6596702-1.6069973-1.1820852-.4516745-.5224149-.6773553-1.1997702-.6773553-2.0320659 0-.86766582.2433659-1.62906451.7304106-2.28435256.4868883-.65513154 1.1775465-1.16862571 2.0718183-1.5404825s1.916878-.5579417 3.0679751-.5579417c1.0093032 0 1.9965392.15055818 2.9617079.45167454.9650122.30095986 1.7752405.70834338 2.4303721 1.22183754l-1.2748929 2.68281528c-.655288-.47812392-1.3459463-.84121642-2.0719748-1.08912095-.7260284-.24790453-1.4343718-.37185679-2.1248736-.37185679-.7260284 0-1.2750493.10626716-1.6469061.31880147-.3718568.21237781-.5577852.50457336-.5577852.87643017 0 .3896984.2212986.6995791.6640523.9297985.4427538.2302194 1.1155704.4692031 2.018763.7171076.973933.2832748 1.7663198.5577852 2.3773168.8233749.6108405.2657461 1.1421763.6596702 1.5936943 1.1820851.451518.522415.6773553 1.1997703.6773553 2.032066 0 1.3281047-.5267971 2.3683959-1.5805479 3.1210303-1.0535942.7526344-2.4746631 1.1288734-4.2632066 1.1288734-2.3020378 0-4.3561709-.5490209-6.1623996-1.6469062z"/><path d="m67.4951382.97315048h7.543716c1.9478661 0 3.4664378.46935965 4.5554023 1.40776594 1.0891209.93856279 1.6336032 2.23129726 1.6336032 3.87820343 0 1.64674965-.5490209 2.94386628-1.6469062 3.89134985-1.0978853.9473271-2.6119184 1.4210689-4.5420993 1.4210689h-5.3654741v8.3138791h-2.1782419zm7.3577876 8.7921595c1.3990017 0 2.4525959-.30111636 3.1609393-.90319258.7083434-.60207621 1.062515-1.46974206 1.062515-2.60299755 0-1.133412-.3541716-1.9966957-1.062515-2.58985111-.7083434-.59331191-1.7619376-.88988961-3.1609393-.88988961h-5.1795457v6.98593085z"/><path d="m95.8636172 6.52470948v13.36070822h-2.1250301v-2.4170692c-.3895419.8322956-.9783152 1.4741242-1.7663198 1.9256423-.7880046.4516745-1.7043436.6773553-2.7491736.6773553-1.1864673 0-2.2267586-.2832748-3.1210303-.8499808-.8942718-.5665495-1.5849301-1.367857-2.0718183-2.4039227-.4870448-1.0359091-.7305671-2.2444437-.7305671-3.6256037 0-1.3813166.2479045-2.5987719.7437135-3.65236619.4959656-1.05359425 1.191006-1.87258693 2.0852778-2.45697803.8941152-.58439111 1.9256422-.87658666 3.0944244-.87658666 1.04483 0 1.9567869.23021942 2.7358707.69065826.7792403.46043884 1.3723957 1.10680608 1.7796227 1.93894521v-2.31080201zm-3.1873886 10.42560622c.7083433-.8942718 1.0623585-2.1647825 1.0623585-3.8116887 0-1.6469061-.3540152-2.9130347-1.0623585-3.79838565-.7083434-.88535096-1.7178031-1.32810469-3.0280662-1.32810469-1.3104196 0-2.3331823.45605669-3.0679751 1.36801357-.7349493.91195687-1.1024239 2.18246757-1.1024239 3.81168867 0 1.6290645.3630925 2.8864288 1.089121 3.7717797.7260284.885351 1.7530168 1.3281047 3.081278 1.3281047 1.3102631 0 2.3197228-.4471359 3.0280662-1.3414076z"/><path d="m111.933747 6.52470948v13.25444102c0 1.9833927-.509112 3.4841229-1.527336 4.5023469s-2.518955 1.5273361-4.502191 1.5273361c-2.036448 0-3.789621-.4604389-5.259363-1.3813166l.371857-1.7530168c.84998.478124 1.651288.8233749 2.403922 1.0359092.752478.2125343 1.580392.3188014 2.483584.3188014 1.292578 0 2.266511-.3408687 2.921799-1.0227627.655132-.6817374.982854-1.6954228.982854-3.0413691v-3.1607827c-.407384.8499807-1.005078 1.5094944-1.793082 1.978854-.788005.4692032-1.722029.7038048-2.802229.7038048-1.168782 0-2.209074-.274354-3.12103-.8233749-.911957-.5488644-1.615919-1.3281047-2.1117276-2.3374079-.4958091-1.0094597-.7437136-2.1693211-.7437136-3.4797407s.2479045-2.470281.7437136-3.47958423c.4958086-1.00945973 1.1997706-1.78854354 2.1117276-2.33756443.911956-.54886438 1.952248-.82337482 3.12103-.82337482 1.062515 0 1.987775.23021942 2.775779.69065826.788005.46043884 1.385543 1.10680608 1.792926 1.93894521v-2.31080201zm-3.253904 9.86782102c.734949-.8589016 1.102424-2.0408302 1.102424-3.546099 0-1.5051123-.367475-2.6871975-1.102424-3.54594251-.734793-.85890155-1.748634-1.28835233-3.041369-1.28835233-1.31042 0-2.34179.42945078-3.094424 1.28835233-.752635.85874501-1.128874 2.04083021-1.128874 3.54594251 0 1.5052688.376239 2.6871974 1.128874 3.546099.752634.8589015 1.784004 1.2881958 3.094424 1.2881958 1.292735 0 2.306576-.4292943 3.041369-1.2881958z"/><path d="m127.260162 13.138627h-9.801462c.017685 1.6999615.411765 2.9837752 1.182085 3.8515976.770319.8676658 1.890272 1.3014987 3.360014 1.3014987 1.558324 0 2.992696-.5224149 4.303116-1.5672449l.717264 1.5672449c-.584391.5490209-1.332644.9828538-2.244601 1.3014988-.911956.3188015-1.845981.478124-2.802228.478124-2.08966 0-3.727646-.6153792-4.914113-1.8459811-1.186467-1.2307583-1.779623-2.9174168-1.779623-5.060132 0-1.363475.26559-2.572166.796926-3.62576029.531179-1.05359425 1.274893-1.87258693 2.23114-2.45697803.956248-.58439111 2.045369-.87658666 3.267207-.87658666 1.770702 0 3.160939.58000895 4.170242 1.73987036 1.009304 1.1598614 1.514033 2.75793792 1.514033 4.79438592zm-8.380393-4.24990368c-.699423.67281665-1.146559 1.62030028-1.341408 2.84213778h7.7827c-.106111-1.2572078-.473586-2.21345565-1.102268-2.8687437-.628682-.65513154-1.50073-.98285381-2.616457-.98285381-1.11557 0-2.023145.33648658-2.722567 1.00945973z"/><path d="m129.703837 18.3447787.717265-1.5936944c.726028.566706 1.460821.973933 2.204691 1.2218376.743714.2479045 1.576009.3718568 2.496261.3718568 1.00946 0 1.776336-.1726255 2.297499-.5178764.522728-.3452508.784092-.8455986.784092-1.5007301 0-.5313358-.176851-.9562479-.530553-1.2750494-.355268-.3188014-.939033-.566706-1.752861-.7437135l-2.258529-.5313358c-1.115727-.2479046-1.97901-.6905018-2.589851-1.3281047-.610997-.6374465-.916339-1.3988452-.916339-2.2843526 0-1.16862572.469203-2.12049147 1.407766-2.85544076.938563-.73479278 2.178085-1.10226742 3.718411-1.10226742.939033 0 1.824853.15055818 2.655897.45151803.832608.30111636 1.532187.73494929 2.098737 1.30165528l-.716795 1.56708842c-1.256738-1.04482995-2.602684-1.56708842-4.037839-1.56708842-.955934 0-1.695266.18138975-2.217681.54448224-.522415.36293598-.783622.872048-.783622 1.52733603 0 .5488644.163861.9828538.491427 1.3014988.327565.3188015.854362.566706 1.580391.7437136l2.258216.5577852c1.239523.2834312 2.159774.7216463 2.76232 1.3149582.602546.5931554.903036 1.3678571.903036 2.324105 0 1.1510971-.469516 2.0718183-1.408548 2.7624765-.937467.6906583-2.212986 1.0359092-3.824992 1.0359092-2.248356 0-4.027979-.5754703-5.338399-1.7265674z"/><path d="m163.62325 13.9621584v1.8062286h-2.868744v4.1170307h-2.17699v-4.1170307h-8.712655v-1.6469061l9.110179-13.14833042h1.779466v12.98900792zm-11.500016 0h6.454282v-9.29688939z"/><path d="m168.936607 17.149547v1.9391018c0 .7437135-.123639 1.425451-.372483 2.0452123-.247278.6197613-.663582 1.2218376-1.247347 1.8062287l-1.011025-.7703195c.691754-.796769 1.081452-1.5583242 1.169095-2.2843526h-1.273954v-2.7358707z"/><path d="m182.52284 8.76915321c.893645.50472986 1.580704 1.20853458 2.058046 2.11172719.478906.903036.718359 1.947866.718359 3.1343333s-.261364 2.2400616-.784092 3.1609393c-.522728.9207211-1.266128 1.6336032-2.231766 2.1381765-.964074.5047299-2.094043.7570166-3.386777.7570166-1.150315 0-2.283414-.2079957-3.399297-.6241435s-2.054916-.987236-2.815532-1.7132645l.823218-1.673512c1.752861 1.4522134 3.551108 2.1782419 5.391611 2.1782419 1.328731 0 2.369492-.3763954 3.122282-1.1290298.751226-.7524779 1.128404-1.7752406 1.128404-3.0678186 0-1.2573642-.372483-2.2710496-1.115883-3.0413691-.743401-.7703195-1.735645-1.15547928-2.975168-1.15547928-1.806072 0-3.249051.73479278-4.328938 2.20469138h-1.514973v-11.07651212h11.341946v1.80622865h-9.163391v6.74679062c1.045456-1.00930322 2.382012-1.51403309 4.011233-1.51403309 1.186311 0 2.227072.25228668 3.120718.75701655z"/><path d="m191.010127 17.149547v1.9391018c0 .7437135-.125205 1.425451-.372483 2.0452123-.247279.6197613-.663583 1.2218376-1.248913 1.8062287l-1.00946-.7703195c.691754-.796769 1.081452-1.5583242 1.169095-2.2843526h-1.275518v-2.7358707z"/><path d="m204.543147 8.76915321c.893646.50472986 1.58853 1.21307323 2.084652 2.12503009.496122.9119569.743401 1.9522482.743401 3.1210304s-.259799 2.2134557-.782527 3.1343333c-.522728.9208777-1.244218 1.6423675-2.166035 2.1647825-.920251.522415-1.964142.7836225-3.133238.7836225-2.284978 0-4.047229-.7969254-5.286751-2.3906198-1.239523-1.5936943-1.859284-3.8603618-1.859284-6.7998459 0-2.12503014.287969-3.94894389.863909-5.47189779.57594-1.52279739 1.406984-2.6828153 2.496261-3.47958421 1.089278-.79692542 2.396098-1.19538813 3.918895-1.19538813 1.097103 0 2.164469.20377001 3.200535.61099702s1.943797.98285382 2.721629 1.7265674l-.823219 1.67335558c-.88582-.74371359-1.735644-1.29273448-2.549472-1.64690617-.813828-.35401518-1.646437-.53117927-2.496261-.53117927-1.629221 0-2.89535.72602848-3.798386 2.17808544-.903036 1.45205695-1.355336 3.48850502-1.355336 6.10934423v.3984627c.406914-1.0094598 1.072061-1.80622867 1.992313-2.39061978s1.975098-.87658666 3.161409-.87658666c1.150314 0 2.172295.25228668 3.067505.75701655zm-.438215 8.34048499c.743401-.770163 1.115884-1.7929257 1.115884-3.0678186 0-1.2573642-.377178-2.2710496-1.129969-3.0413691s-1.73095-1.15547928-2.934476-1.15547928c-1.239523 0-2.248983.38954188-3.028379 1.16878218-.779397.7790838-1.169096 1.7883871-1.169096 3.0280662 0 1.2572078.389699 2.2754318 1.169096 3.0546721.779396.7790838 1.796681 1.1686257 3.054985 1.1686257 1.203526 0 2.178555-.3851597 2.921955-1.1554792z"/></g><g transform="translate(660.011742 224.553185)"><path d="m.21765.193821h263.332986v106.422426h-263.332986z" fill="#c9177e"/><path d="m263.550636 106.616248h-263.33298624v-106.42242661h263.33298624zm-260.79463916-103.88400537v101.34558437h258.25629216v-101.34558437z" fill="#000"/></g><g fill="#f2f2f2" fill-rule="nonzero" transform="translate(688.758199 242.51167)"><path d="m.07350476 31.0947909 1.49915513-3.0461739c1.70855822 1.4504369 3.44902547 2.4820676 5.22225648 3.0946072 1.7729461.6125397 3.83592263.9188095 6.18921443.9188095 2.7720979 0 4.9077245-.5401745 6.4068796-1.6199537 1.4988702-1.080064 2.2484478-2.6031509 2.2484478-4.5695456 0-1.1604065-.3626804-2.1034326-1.0880413-2.8285086-.7253609-.7253609-1.6763643-1.2977293-2.8527253-1.7165355-1.1766459-.419091-2.7481662-.8544215-4.7145608-1.3057065-2.6433222-.5803457-4.81940488-1.2088399-6.52767819-1.8857674-1.70855822-.6769275-3.0948921-1.6521476-4.15843184-2.9253753-1.06382464-1.2732277-1.59573696-2.9416147-1.59573696-5.0045912 0-1.96639471.5156729-3.69916961 1.5473036-5.19803984 1.0316307-1.49915513 2.49004482-2.66753887 4.37609708-3.505721 1.88576736-.83818214 4.08578181-1.25727321 6.60004331-1.25727321 2.3854857 0 4.6097168.37094261 6.6729782 1.11225801 2.0629765.74131541 3.8037287 1.82137947 5.2222565 3.23962239l-1.5473036 3.04645873c-1.6119764-1.38633388-3.2478845-2.40172515-4.9080094-3.04645873-1.6601248-.64473357-3.473527-.96695791-5.4399217-.96695791-2.6755161 0-4.77068658.57208353-6.28579623 1.71653548-1.51510966 1.14445195-2.27266449 2.71597223-2.27266449 4.71456088 0 1.7407521.6606881 3.0461738 1.98234919 3.9165499 1.32166109.870376 3.35272853 1.6279309 6.09263253 2.2726645 2.9658315.7091214 5.2949066 1.3618322 6.9872254 1.9584174 1.6923187.5963002 3.1025844 1.4988702 4.2307969 2.70771 1.1284975 1.2088399 1.6926037 2.8125541 1.6926037 4.8111427 0 1.9342007-.5159578 3.6344968-1.5473036 5.101458-1.0316307 1.4666763-2.5065691 2.602866-4.4245304 3.4088542s-4.1664091 1.2088399-6.7453434 1.2088399c-5.3832262 0-9.67071872-1.4507218-12.86219264-4.3518804z"/><path d="m52.0054694 22.7779272h-17.8425672c.0324788 3.0946072.7495775 5.4316596 2.1518659 7.011442 1.4022884 1.5794975 3.4413332 2.3692463 6.1168493 2.3692463 2.8367707 0 5.447899-.9510034 7.8330998-2.8530102l1.3057066 2.8530102c-1.0638247.9994368-2.425657 1.7891855-4.0857818 2.3692463-1.6604098.5803457-3.3607058.8703761-5.101458.8703761-3.8037286 0-6.7855146-1.1202353-8.9453578-3.3604209-2.1598432-2.2404705-3.2399073-5.310861-3.2399073-9.2114564 0-2.4820676.4837639-4.6823669 1.4507218-6.6003282s2.3210978-3.4088543 4.06185-4.4726789c1.7407521-1.0638247 3.7231013-1.595737 5.9473324-1.595737 3.2236679 0 5.7541688 1.0558474 7.5915028 3.1672572 1.8376189 2.1114099 2.7561435 5.0205458 2.7561435 8.7276926zm-15.2553708-7.736518c-1.2735126 1.2247944-2.0874781 2.949592-2.4418963 5.1738231h14.1676143c-.1934486-2.288619-.8623988-4.0293711-2.0068508-5.2222565-1.144167-1.1926004-2.7319268-1.7891855-4.7627093-1.7891855-2.0307826 0-3.6829301.6125397-4.9561579 1.8376189z"/><path d="m61.99072 33.8509343c-1.7569915-1.0313458-3.1108466-2.4900448-4.06185-4.3760971-.9510034-1.8857673-1.426505-4.0857818-1.426505-6.6000433 0-2.5145464.4837638-4.7308002 1.4507217-6.6487615s2.3453146-3.4088543 4.1342152-4.4726789c1.7891855-1.0638247 3.8763787-1.595737 6.2618644-1.595737 1.6441703 0 3.2316451.2820531 4.7629942.8461594 1.5310642.5641063 2.7963147 1.3458778 3.7957514 2.3453145l-1.3057066 2.9011587c-1.2247943-.9672429-2.4097024-1.6763643-3.5538694-2.1276493-1.144452-.451285-2.3131206-.6769276-3.505721-.6769276-2.4820676 0-4.4325077.8302049-5.8507507 2.4903298-1.4185278 1.6601248-2.1276492 3.9729605-2.1276492 6.9387919 0 2.9333526.7011442 5.2139943 2.1034326 6.8419253 1.4022884 1.6279309 3.3604209 2.4418963 5.8749673 2.4418963 1.1926004 0 2.361269-.2256425 3.505721-.6769275 1.144167-.451285 2.3290751-1.1604065 3.5538694-2.1276493l1.3057066 2.9011586c-1.0316307.9672429-2.3290751 1.7327749-3.8926181 2.2968812s-3.1832118.8461594-4.859576.8461594c-2.3532918 0-4.4082911-.5156729-6.1649978-1.5473036z"/><path d="m87.1586914 13.8325694v13.2972382c0 1.80514.3709426 3.0703905 1.112258 3.7957514s1.7891856 1.0880413 3.1430406 1.0880413c.90257 0 1.7729461-.1450152 2.6111282-.4353305v3.3364892c-.9994367.3225092-2.1276493.4834789-3.3849225.4834789-2.3208129 0-4.1342151-.6527108-5.4396368-1.9581325-1.3057066-1.3057066-1.9584174-3.2316451-1.9584174-5.7783855v-13.8291505h-4.7387775v-3.0946072h4.7387775v-6.23764778l3.9165499-1.4022884v7.63993618h6.9630087v3.0946072z"/><path d="m98.8604776 35.0597742v-24.321812h3.9165494v24.321812zm-.3868971-34.62130978h4.7869255v4.44874713h-4.7869255z"/><path d="m114.381947 33.8509343c-1.740752-1.0313458-3.08663-2.498307-4.037633-4.4000289-.950719-1.9020067-1.426221-4.1262378-1.426221-6.6729782 0-2.5464555.475502-4.7709715 1.426221-6.6726933.951003-1.9020068 2.296881-3.3686831 4.037633-4.4003138s3.75558-1.5473036 6.044199-1.5473036c2.288904 0 4.303447.5156729 6.044199 1.5473036s3.08663 2.498307 4.037634 4.4003138c.951003 1.9017218 1.426505 4.1262378 1.426505 6.6726933 0 2.5467404-.475502 4.7709715-1.426505 6.6729782-.951004 1.9017219-2.296882 3.3686831-4.037634 4.4000289-1.740752 1.0316307-3.755295 1.5473036-6.044199 1.5473036-2.288619 0-4.303447-.5156729-6.044199-1.5473036zm11.604919-4.0857818c1.289468-1.5957369 1.934201-3.924812 1.934201-6.9872253 0-2.9655465-.660973-5.2624277-1.982634-6.8903586s-3.158995-2.4418964-5.512287-2.4418964c-2.385486 0-4.239059.8139655-5.56072 2.4418964s-1.982349 3.9248121-1.982349 6.8903586c0 3.0624133.652711 5.3914884 1.958132 6.9872253 1.305707 1.595737 3.167257 2.393463 5.584937 2.393463s4.271253-.797726 5.56072-2.393463z"/><path d="m158.915857 19.7799018v15.2798724h-3.916835v-15.0864238c0-2.2564251-.451285-3.9085727-1.353855-4.9561579s-2.320812-1.5715203-4.255013-1.5715203c-2.256425 0-4.06185.693167-5.415705 2.079216-1.353855 1.3860489-2.030783 3.2558618-2.030783 5.6091536v13.9257324h-3.91655v-17.5041035c0-2.5142615-.12906-4.786926-.386897-6.8177085h3.723101l.386898 4.3518804c.741315-1.5797825 1.853573-2.7965996 3.336489-3.6507362 1.482915-.8544216 3.175234-1.2814899 5.076956-1.2814899 5.834796 0 8.752194 3.2074284 8.752194 9.6222853z"/><path d="m185.630847 33.319022c-2.401725-1.4182429-4.247891-3.4572876-5.535648-6.1165644-1.290607-2.6595616-1.934486-5.7946249-1.934486-9.404905 0-3.6105649.643879-6.7293888 1.934486-9.35647159 1.287757-2.62708276 3.133923-4.64988805 5.535648-6.06841587 2.401726-1.41824292 5.230804-2.12764929 8.487236-2.12764929 2.384631 0 4.56983.36268044 6.552749 1.08804133 1.98007.72536088 3.69803 1.81340221 5.148182 3.26383907l-1.498585 3.04645873c-1.643886-1.41852782-3.264979-2.4339191-4.860431-3.04645873s-3.358996-.91852454-5.293482-.91852454c-3.772105 0-6.69805 1.22479436-8.777835 3.67466798-2.079786 2.44987362-3.11683 5.93137791-3.11683 10.44451291 0 4.545329 1.031346 8.0507651 3.094037 10.5168782 2.062692 2.466113 4.997184 3.6991695 8.800628 3.6991695 1.934486 0 3.69803-.3062698 5.293482-.9188094 1.595452-.6125397 3.216545-1.6279309 4.860431-3.0461739l1.498585 3.0461739c-1.450152 1.4507217-3.168112 2.5384782-5.148182 3.263839-1.982919.7253609-4.168118 1.0880414-6.552749 1.0880414-3.256432 0-6.08551-.7091215-8.487236-2.1276493z"/></g><g fill="#f2f2f2" fill-rule="nonzero" transform="translate(683.970025 292.181215)"><path d="m.10947429 20.3655834 1.52334352-19.36893462h4.27110005l-1.27858915 15.91416332h8.65071269l-.2720028 3.4547713z"/><path d="m15.3163023 20.3655834 1.0881712-13.79215735h4.1077702l-1.0881712 13.79215735zm1.4145104-20.26668789h4.4070212l-.2992511 3.86301581h-4.4070212z"/><path d="m21.9540024 18.8965763 1.3329256-2.8562691c.7616718.5258933 1.5778402.9293293 2.4483451 1.2104683.870505.2811389 1.7410099.4217084 2.6115148.4217084.7616717 0 1.3239496-.1088332 1.6866734-.3264995.3627237-.2176663.5440054-.5077811.5440054-.8705049 0-.3808359-.213018-.680087-.6392144-.8977533-.4261964-.217506-1.1199075-.4713966-2.0811335-.7616717-.9974502-.2720027-1.8136186-.5440055-2.4483451-.8160082-.6347265-.272163-1.1833802-.675599-1.6458009-1.2106285-.4624206-.5350296-.6937111-1.2287407-.6937111-2.0811335 0-.88861705.2494026-1.66840095.7482079-2.33951199.4986449-.67095076 1.2059803-1.19684408 2.1218457-1.57767996s1.963164-.5714141 3.1420563-.5714141c1.0336745 0 2.0447488.15419365 3.0330628.46258095.9884743.30822702 1.8181067.72544747 2.4892177 1.25134079l-1.3058375 2.74759621c-.6709507-.489669-1.3782861-.86152895-2.1218457-1.11541954-.7435596-.25389058-1.4690071-.38083588-2.1763424-.38083588-.7435596 0-1.3056772.10883315-1.6865131.32649945-.3808359.21750602-.5712538.51675707-.5712538.89759297 0 .3991083.2266422.7164716.6800869.95225.4532845.2357784 1.1425077.4805328 2.067349.7344234.9976105.2901149 1.8091307.5712538 2.434721.8432566.6257505.272163 1.169756.675599 1.6323369 1.2106285.4624207.5350295.6937112 1.2287407.6937112 2.0811334 0 1.360174-.5396778 2.4255848-1.6187128 3.1963928s-2.5344179 1.1561318-4.3661487 1.1561318c-2.3576242 0-4.4613577-.5622779-6.3112007-1.6866734z"/><path d="m41.8941909 15.0064724c-.0543365.7616718.0996969 1.3239497.4624206 1.6866734.3627238.3627238.861529.5440055 1.4962555.5440055.4170601 0 .8796411-.0724486 1.3874223-.217506l-.272163 3.1827685c-.6166144.2538906-1.4145104.3808359-2.3938485.3808359-1.5597281 0-2.7520842-.4170602-3.5772286-1.2513408s-1.2377166-2.0130125-1.2377166-3.5365164c0-.308227.0089759-.5440054.0270881-.7073353l.4353326-5.44069574h-2.6115148l.2447544-3.07393541h2.6115147l.2449147-3.23726527 4.216443-1.33292558-.3535875 4.57019085h3.509268l-.2447544 3.07393541h-3.509268z"/><path d="m46.2739638 18.8965763 1.3329255-2.8562691c.7618321.5258933 1.5778403.9293293 2.4483452 1.2104683.8705049.2811389 1.7410098.4217084 2.6115147.4217084.7618321 0 1.3239497-.1088332 1.6866734-.3264995.3627238-.2176663.5441658-.5077811.5441658-.8705049 0-.3808359-.2131784-.680087-.6393748-.8977533-.4261963-.217506-1.1199075-.4713966-2.0811334-.7616717-.9974502-.2720027-1.8134584-.5440055-2.4481849-.8160082-.6348867-.272163-1.1833801-.675599-1.6458008-1.2106285-.462581-.5350296-.6937112-1.2287407-.6937112-2.0811335 0-.88861705.2492424-1.66840095.7480476-2.33951199.498645-.67095076 1.2059803-1.19684408 2.1218457-1.57767996s1.9631641-.5714141 3.1420563-.5714141c1.0336745 0 2.0447489.15419365 3.0332232.46258095.988314.30822702 1.8181066.72544747 2.4890574 1.25134079l-1.3056773 2.74759621c-.671111-.489669-1.3784463-.86152895-2.1220059-1.11541954-.7435597-.25389058-1.4690071-.38083588-2.1761822-.38083588-.7435596 0-1.3058375.10883315-1.6866734.32649945-.3808358.21750602-.5712538.51675707-.5712538.89759297 0 .3991083.2266422.7164716.680087.95225.4534447.2357784 1.1425076.4805328 2.0675093.7344234.9974502.2901149 1.8089704.5712538 2.4347209.8432566.6255903.272163 1.169756.675599 1.6321767 1.2106285s.6937111 1.2287407.6937111 2.0811334c0 1.360174-.5395175 2.4255848-1.6187127 3.1963928-1.079035.770808-2.5344179 1.1561318-4.3661488 1.1561318-2.3576241 0-4.4613577-.5622779-6.3112006-1.6866734z"/><path d="m69.124918.99664878h7.7258714c1.9949004 0 3.5501405.4806931 4.6653998 1.44175873 1.1154195.96122592 1.6730492 2.28517557 1.6730492 3.97184896 0 1.6865131-.5622779 3.01495072-1.6866734 3.98531283-1.1243955.9702019-2.6749874 1.4553829-4.6517756 1.4553829h-5.4950322v8.5146312h-2.2308392zm7.5354534 9.00446052c1.4327828 0 2.5118178-.30838734 3.2372653-.92500167.7254475-.61661432 1.0881712-1.50523137 1.0881712-2.66585116 0-1.16078007-.3627237-2.04490916-1.0881712-2.65238727-.7254475-.60763839-1.8044825-.91137745-3.2372653-.91137745h-5.3046142v7.15461755z"/><path d="m98.1784001 6.6822592v13.6833242h-2.1763424v-2.4754332c-.3989481.8523927-1.0019382 1.5097193-1.8089705 1.97214-.8070322.4625809-1.7454977.6937111-2.8155568.6937111-1.2151165 0-2.2805273-.2901148-3.1963927-.8705049-.9158655-.5802297-1.6232008-1.4008862-2.1218457-2.4619693-.4988053-1.0609229-.7482079-2.2986395-.7482079-3.7131498 0-1.4146707.2538906-2.6615235.7616717-3.74055852.5079415-1.07903499 1.2197648-1.91780358 2.1356302-2.51630576.9157051-.59850218 1.97214-.89775327 3.1691444-.89775327 1.0700591 0 2.0040366.23577845 2.8019327.70733533.7980563.47155689 1.4055344 1.13353171 1.8225946 1.9857642v-2.36660008zm-3.2643534 10.6773494c.7254475-.9158654 1.088011-2.2170547 1.088011-3.9037281 0-1.6866733-.3625635-2.9833746-1.088011-3.89010384-.7254474-.90672919-1.7592822-1.36017394-3.1011837-1.36017394-1.3420618 0-2.3895208.46706892-3.1420563 1.40104648-.7526958.9339776-1.1290438 2.2351668-1.1290438 3.9037281 0 1.6684009.37186 2.9561263 1.1154196 3.8628555s1.7953463 1.3601739 3.1556805 1.3601739c1.3419015 0 2.3757363-.4579327 3.1011837-1.3737981z"/><path d="m114.636569 6.6822592v13.574491c0 2.031285-.521405 3.5682527-1.564216 4.6110634s-2.579779 1.5642161-4.610903 1.5642161c-2.085622 0-3.881128-.4715569-5.38636-1.4146707l.380836-1.7953462c.870505.489669 1.691162.8432565 2.46197 1.0609228.770647.2176663 1.618552.3264995 2.543554.3264995 1.323789 0 2.321239-.3490996 2.99235-1.047459.670951-.6981991 1.006587-1.7363615 1.006587-3.1148079v-3.237105c-.417221.8705049-1.029347 1.5459436-1.836379 2.0266367-.807033.4805329-1.76361.7207993-2.869894.7207993-1.197004 0-2.262415-.2809787-3.196392-.8432566-.933978-.5621176-1.654937-1.3601739-2.162719-2.3938484-.507781-1.0338348-.761671-2.2217029-.761671-3.5637647s.25389-2.52993.761671-3.56360448c.507782-1.03383477 1.228741-1.83173082 2.162719-2.39400871.933977-.56211761 1.999388-.84325656 3.196392-.84325656 1.088172 0 2.035773.23577845 2.842806.70733533.807032.47155689 1.418998 1.13353171 1.836218 1.9857642v-2.36660008zm-3.332474 10.1060956c.752695-.8796411 1.129043-2.0901094 1.129043-3.6317253 0-1.5414557-.376348-2.7520842-1.129043-3.63156509-.752536-.87964112-1.790859-1.31946169-3.114808-1.31946169-1.342062 0-2.398337.43982057-3.169145 1.31946169-.770808.87948089-1.156131 2.09010939-1.156131 3.63156509 0 1.5416159.385323 2.7520842 1.156131 3.6317253s1.827083 1.3193014 3.169145 1.3193014c1.323949 0 2.362272-.4396603 3.114808-1.3193014z"/><path d="m130.333066 13.4558805h-10.038135c.018112 1.7410099.421708 3.0558233 1.210628 3.9446006.788921.8886171 1.935916 1.3329256 3.441148 1.3329256 1.595952 0 3.064959-.5350295 4.407021-1.6050886l.734584 1.6050886c-.598503.5622779-1.364823 1.0065864-2.2988 1.3329256-.933978.3264995-1.890555.489669-2.869893.489669-2.140119 0-3.817656-.6302385-5.032772-1.8905552-1.215117-1.260477-1.822595-2.9878626-1.822595-5.1823172 0-1.3963982.272003-2.6342751.816169-3.71331012.544005-1.07903499 1.305677-1.91780358 2.285015-2.51630576s2.094757-.89775327 3.346098-.89775327c1.813459 0 3.237266.59401422 4.27094 1.78188236 1.033675 1.18786815 1.550592 2.82453279 1.550592 4.91015419zm-8.582752-4.35252451c-.716311.6890629-1.174244 1.65942501-1.373798 2.91076581h7.970625c-.108672-1.2875651-.48502-2.26690312-1.128883-2.93801417-.643863-.67095075-1.536968-1.00658641-2.679636-1.00658641-1.142507 0-2.071997.34461159-2.788308 1.03383477z"/><path d="m132.835747 18.7877432.734584-1.6321767c.74356.58039 1.496095.9974502 2.257927 1.2513408.761672.2538906 1.614065.3808359 2.556538.3808359 1.033834 0 1.819228-.1767938 2.352975-.5303813.535351-.3535875.803026-.866017.803026-1.5369677 0-.5441658-.181122-.9793381-.543365-1.3058375-.363845-.3264995-.961706-.5803901-1.795186-.7616718l-2.313065-.5441657c-1.142668-.2538906-2.026797-.7071751-2.652387-1.360174-.625751-.6528386-.938466-1.4326225-.938466-2.339512 0-1.19684406.480533-2.17169415 1.441759-2.92438998.961226-.75253555 2.230679-1.12888347 3.808199-1.12888347.961706 0 1.868917.15419366 2.720027.46242067.852713.30838731 1.569185.75269584 2.149415 1.33308587l-.734103 1.60492831c-1.287084-1.07005906-2.665531-1.60492831-4.135339-1.60492831-.979018 0-1.736202.18576969-2.271231.55762964-.53503.37169967-.802544.89310502-.802544 1.56421607 0 .5621176.167817 1.0065864.503293 1.3329256.335475.3264994.874993.58039 1.618552.7616717l2.312745.5712539c1.269453.2902751 2.211925.7390716 2.829021 1.34671.617095.6074781.924841 1.4008862.924841 2.3802243 0 1.1788922-.480854 2.1218457-1.44256 2.829181-.960104.7073353-2.266423 1.0609228-3.917353 1.0609228-2.302646 0-4.125241-.5893659-5.467303-1.7682581z"/><path d="m153.917963.99664878h12.785891v1.65942503l-9.084923 17.70950959h-2.39465l9.032029-17.49184329h-10.338347z"/><path d="m173.015856 17.5636507v1.9859245c0 .7616718-.126624 1.4598709-.381477 2.0945973-.253249.6347265-.679606 1.2513408-1.277467 1.849843l-1.035437-.7889201c.708457-.8160082 1.107565-1.5959524 1.197324-2.339512h-1.304715v-2.8019327z"/><path d="m188.807081 12.1909156c.698841.8434168 1.048261 1.8543309 1.048261 3.0332231 0 1.6502888-.626712 2.9516384-1.878534 3.9037281-1.250219.9520897-2.938014 1.4281345-5.058578 1.4281345-2.122166 0-3.809961-.4760448-5.06018-1.4281345-1.251822-.9520897-1.876931-2.2534393-1.876931-3.9037281 0-1.1788922.357434-2.1944545 1.073906-3.0468473.716471-.8523928 1.700618-1.4417587 2.95244-1.7682582-1.16046-.3444513-2.050039-.91121715-2.667134-1.70013727-.615492-.78892012-.924841-1.71840971-.924841-2.78830849 0-1.03383478.272483-1.93607601.815848-2.70688399.544967-.77064769 1.311127-1.36914987 2.300082-1.79534625.987352-.42619638 2.117357-.63937472 3.38681-.63937472s2.397856.21317834 3.386811.63937472c.987352.42619638 1.753512 1.02469856 2.298479 1.79534625.543365.77080798.815848 1.67304921.815848 2.70688399 0 1.06989878-.312555 1.99938837-.939267 2.78830849-.625109.78892012-1.500262 1.35568597-2.623856 1.70013727 1.269452.3446116 2.251996.9386258 2.950836 1.7818824zm-9.004781-3.59085282c.770969.64386269 1.809612 1.03832275 3.11593 1.18338018 1.304716-.14505743 2.343359-.53951749 3.114327-1.18338018.770969-.64386268 1.155651-1.48263127 1.155651-2.51630576 0-1.07005906-.376668-1.91331562-1.128402-2.52992994-.753337-.61661432-1.799995-.92500163-3.141576-.92500163-1.343183 0-2.389841.30838731-3.143178.92500163-.751734.61661432-1.128403 1.45987088-1.128403 2.52992994 0 1.03367449.384683 1.87244308 1.155651 2.51630576zm6.624557 9.18125422c.815848-.6166143 1.224574-1.5143676 1.224574-2.6932598 0-1.0698988-.431166-1.9267795-1.291893-2.5706422-.862331-.6438627-2.009967-1.0383227-3.441308-1.1833802-1.432943.1450575-2.580579.5395175-3.441307 1.1833802-.86233.6438627-1.293496 1.5007434-1.293496 2.5706422 0 1.1788922.408726 2.0766455 1.224574 2.6932598s1.985924.9248414 3.510229.9248414c1.522703 0 2.692779-.3082271 3.508627-.9248414z"/><path d="m195.622377 17.5636507v1.9859245c0 .7616718-.128228 1.4598709-.381477 2.0945973-.25325.6347265-.679606 1.2513408-1.27907 1.849843l-1.033835-.7889201c.708457-.8160082 1.107566-1.5959524 1.197325-2.339512h-1.306318v-2.8019327z"/><path d="m210.339696 3.22732763c1.26785 1.63217667 1.902577 3.95357653 1.902577 6.96419957 0 3.2824655-.657167 5.8351558-1.971499 7.6577504-1.314333 1.8225946-3.151193 2.7339721-5.508977 2.7339721-1.105963 0-2.189486-.2085301-3.250569-.6257505-1.061083-.4170602-1.998747-1.0064262-2.816198-1.7680979l.871947-1.7139218c.924842.7799442 1.803201 1.3465498 2.638283 1.7002976.833479.3535875 1.676575.5303813 2.529288.5303813 1.668562 0 2.960454-.7435596 3.877282-2.2306789.915224-1.4871192 1.373637-3.5727406 1.373637-6.2568642v-.35358755c-.416739 1.01556235-1.097948 1.81810665-2.040421 2.40747265-.944075.5895262-2.02279.8841291-3.237746.8841291-1.178091 0-2.221543-.2583786-3.128753-.775296-.905607-.5167571-1.614064-1.2422046-2.120563-2.1761821-.508102-.93413786-.762954-1.99954868-.762954-3.19655303 0-1.19684408.267675-2.26690314.803025-3.21001692.53535-.94295348 1.274262-1.68202514 2.216734-2.21705467.944076-.53502953 2.013173-.8025443 3.210498-.8025443 2.340153 0 4.143353.81616848 5.414409 2.44834515zm-2.176663 6.85536647c.796614-.79805638 1.195722-1.83173087 1.195722-3.10118381 0-1.28772536-.399108-2.33053607-1.195722-3.12843212-.798217-.79805633-1.841668-1.19700436-3.128753-1.19700436-1.232587 0-2.231159.39446006-2.992511 1.18338018-.761351.78892012-1.142828 1.83621879-1.142828 3.1420563 0 1.28756508.381477 2.32588782 1.142828 3.11480791.761352.7889202 1.767938 1.1833802 3.01976 1.1833802 1.269453 0 2.303287-.3991083 3.101504-1.1970043z"/></g><path d="m17.8381448 46.9715784h11.4351924v5.0258027h-28.91585333v-5.0258027h11.43519243v-39.40433576l-10.63396507 6.77374006v-5.75407418l13.25608567-8.44915063h3.4233479z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(21.524072 376.769072)"/><path d="m35.1591611 47.829883v5.0258027h-33.35886717v-4.5159698l18.13640567-20.1027815c2.4277146-2.719109 4.2001136-5.1712853 5.3167679-7.3565289 1.1170835-2.1848144 1.6754107-4.3700579 1.6754107-6.5553015 0-2.8645916-.8256891-5.06185144-2.476638-6.59135026-1.6509489-1.52992798-4.0057077-2.29467739-7.0651345-2.29467739-4.9528467 0-9.85677016 1.99083755-14.71262852 5.97294185l-2.25819944-4.58892566c2.03976092-1.94234334 4.61295815-3.4958747 7.72087917-4.66145237 3.10749189-1.16557766 6.23944539-1.74793734 9.39586059-1.74793734 4.7584408 0 8.5216774 1.22608814 11.2897098 3.67826442 2.7676032 2.45217629 4.1516194 5.76609041 4.1516194 9.94174235 0 2.9620092-.667761 5.8150138-2.003283 8.5585845-1.3350928 2.7431415-3.5568143 5.8145846-6.6643061 9.2134709l-14.7855845 16.024118z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(113.15712 375.910768)"/><path d="m32.1649655 30.7131432c1.6024547 2.1367493 2.403682 4.8318258 2.403682 8.0848003 0 4.5159698-1.5294988 8.0727841-4.5884964 10.6708722-3.0594268 2.5976589-7.2110463 3.8967029-12.4548583 3.8967029-3.3508212 0-6.5677469-.5587563-9.65077711-1.6754106-3.08345933-1.1166543-5.69356366-2.6950765-7.82988385-4.7344083l2.33072618-4.5884964c4.806935 3.9816751 9.80827598 5.9725126 15.00402298 5.9725126 3.6902807 0 6.494791-.825689 8.4126727-2.4766379 1.9178817-1.650949 2.8770371-4.0786636 2.8770371-7.283573 0-6.3608955-3.9816751-9.5413433-11.9450254-9.5413433h-5.9729418v-5.0258026h4.8073642c3.8361924 0 6.77374-.8497216 8.8130718-2.5491647 2.0393317-1.6994432 3.0594268-4.1275869 3.0594268-7.283573 0-2.8165266-.8377053-4.97730847-2.513116-6.48234561-1.6749814-1.50546629-4.0421855-2.25819944-7.1016123-2.25819944-4.9528468 0-9.85677025 1.99083755-14.71262861 5.97294185l-2.25819944-4.58892566c2.08825513-1.99083756 4.6494361-3.55681433 7.68440122-4.69793031 3.03496513-1.14111599 6.20339663-1.7114594 9.50529443-1.7114594 4.6614524 0 8.388211 1.18961019 11.180276 3.56883059 2.7920649 2.37922039 4.1880973 5.58412982 4.1880973 9.61429918 0 2.9620092-.7287006 5.5596681-2.1852435 7.7934059-1.456543 2.2337377-3.4718422 3.8361925-6.0454686 4.8073641 3.0589977.8737541 5.390153 2.3792204 6.9921786 4.5155406z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(210.490122 375.910768)"/><path d="m37.9113149 35.7548245v4.9528468h-7.8663618v11.2897098h-5.9725127v-11.2897098h-23.89005067v-4.5159697l24.98267247-36.05394371h4.8798909v35.61706661zm-31.53797398 0h17.69909948v-25.4925054z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(344.333123 377.543534)"/><path d="m27.0614862 21.5151218c2.4521763 1.3840162 4.3340092 3.3143433 5.6450695 5.7905521 1.3110603 2.4766379 1.9663758 5.3412296 1.9663758 8.5946332 0 3.2534037-.7162552 6.142457-2.1487656 8.6675892-1.4320812 2.5251322-3.4718421 4.4794918-6.1179953 5.863508-2.6465822 1.383587-5.7420578 2.0758097-9.2868559 2.0758097-3.1559861 0-6.2634779-.5707726-9.32290473-1.7118886-3.05899765-1.1411159-5.63262403-2.7070927-7.72045001-4.6979303l2.25777029-4.5884964c4.80736415 3.9816751 9.73574925 5.9725126 14.78558445 5.9725126 3.6422156 0 6.494791-1.0316821 8.5585845-3.0954756 2.0633643-2.0637934 3.0954756-4.8678746 3.0954756-8.4126727 0-3.4473804-1.0196659-6.2274291-3.0589977-8.3397168-2.0397609-2.1122876-4.7588699-3.1684314-8.1577562-3.1684314-4.9528468 0-8.91048936 2.0152992-11.87249858 6.0454685h-4.15161943v-30.37282541h31.10109691v4.95284678h-25.12858424v18.50075603c2.86502084-2.7680324 6.53126894-4.1520486 10.99831534-4.1520486 3.2534036 0 6.105979.6922227 8.5581553 2.0758097z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(442.786269 377.543534)"/><path d="m28.6326128 22.3734264c2.4521763 1.3840162 4.3580417 3.3263595 5.7175962 5.82703s2.0393318 5.3536751 2.0393318 8.5581554c0 3.2049094-.7162552 6.0699302-2.1487656 8.5946332-1.4320813 2.5251322-3.4109026 4.5039535-5.9360347 5.9364639-2.5247031 1.4320813-5.3897239 2.1483365-8.5946333 2.1483365-6.2639071 0-11.09530378-2.1848144-14.49419005-6.5553015-3.39931543-4.370058-5.09875857-10.5854709-5.09875857-18.6458095 0-5.82703.78921109-10.828371 2.36720413-15.004023 1.57799303-4.1760811 3.86022501-7.35652885 6.84669592-9.5417724 2.98604177-2.18524355 6.56731777-3.27743617 10.74339887-3.27743617 3.0105034 0 5.9360347.55832715 8.7765938 1.67498145 2.8405592 1.11708346 5.3292134 2.69507649 7.4655336 4.73440826l-2.2577703 4.58892566c-2.4277146-2.03976095-4.7584408-3.5447981-6.9921786-4.51596977-2.2337377-.97117167-4.5159697-1.45697208-6.8466959-1.45697208-4.4670463 0-7.9388885 1.99083755-10.41552648 5.97294185-2.47620881 3.9816751-3.71474237 9.5653758-3.71474237 16.7519603v1.0926218c1.11708345-2.7676033 2.93797669-4.9528468 5.46267975-6.5553015 2.5251321-1.6024547 5.4141855-2.4036821 8.6675891-2.4036821 3.1564153 0 5.9604964.6922227 8.4126727 2.0758097zm-1.2016264 22.8708139c2.0393317-2.1122876 3.0589976-4.9163688 3.0589976-8.4126726 0-3.4473805-1.0321113-6.2274292-3.0954756-8.3397168-2.0637934-2.1122877-4.7464245-3.1684315-8.0483224-3.1684315-3.3993154 0-6.1669186 1.0681601-8.303668 3.2049094-2.13632016 2.1363202-3.20448025 4.9043526-3.20448025 8.3032389 0 3.4473804 1.06816009 6.2394454 3.20448025 8.3761947 2.1367494 2.1363202 4.9288143 3.2049094 8.3761948 3.2049094 3.3018978 0 5.9725126-1.0561438 8.0122736-3.1684315z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(539.405045 376.685229)"/><path d="m.06008132.13775789h34.23305048v4.44301384l-24.32735691 47.41660937h-6.40938972l24.18144513-46.83382053h-27.67774898z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(678.757195 376.512457)"/><path d="m34.6622027 30.9684888c1.8693875 2.2577703 2.8040812 4.9648631 2.8040812 8.1208491 0 4.4189814-1.6749814 7.9028398-5.0253735 10.4520045-3.3508212 2.5495939-7.8663618 3.8241762-13.5474801 3.8241762-5.6815474 0-10.19708794-1.2745823-13.54748-3.8241762-3.35082122-2.5491647-5.02580268-6.0330231-5.02580268-10.4520045 0-3.155986.95872626-5.875095 2.87703707-8.157327 1.91788167-2.282232 4.55201853-3.8606542 7.90241061-4.7344083-3.10749187-.9226774-5.48671227-2.44016-7.1376612-4.5524477-1.65094892-2.1122876-2.47663796-4.6005127-2.47663796-7.4655335 0-2.7676032.72870062-5.18373073 2.18524355-7.24709502 1.45654293-2.06379345 3.50832011-3.66624817 6.15447324-4.80736415 2.64658227-1.14111599 5.66910197-1.7114594 9.06841737-1.7114594 3.3988863 0 6.421406.57034341 9.0679883 1.7114594 2.6461531 1.14111598 4.6979303 2.7435707 6.1544733 4.80736415 1.456972 2.06336429 2.1852435 4.47949182 2.1852435 7.24709502 0 2.8650208-.8377053 5.3532459-2.5131159 7.4655335-1.6749815 2.1122877-4.0177239 3.6297703-7.0286565 4.5524477 3.3993154.9226775 6.0334523 2.5126868 7.9028397 4.7708862zm-24.1084891-9.6147283c2.0633642 1.7239048 4.8434129 2.7800487 8.3397167 3.1684315 3.4958747-.3883828 6.2759234-1.4445267 8.3397168-3.1684315 2.0633643-1.7234756 3.0954756-3.9692297 3.0954756-6.7372621 0-2.8645916-1.0076496-5.12279105-3.0229488-6.77373998-2.0148701-1.65094892-4.8193804-2.47620881-8.4122436-2.47620881-3.5932922 0-6.3978026.82525989-8.4126726 2.47620881-2.01529928 1.65094893-3.0229489 3.90914838-3.0229489 6.77373998 0 2.7680324 1.0321113 5.0137865 3.0959048 6.7372621zm17.7355774 24.5822734c2.1848144-1.650949 3.2774361-4.054631 3.2774361-7.2106171 0-2.8650208-1.1531322-5.1592691-3.4598259-6.8831739-2.3062645-1.7239048-5.3777075-2.7800486-9.2134709-3.1684315-3.8361924.3883829-6.9076355 1.4445267-9.2139 3.1684315-2.30669365 1.7239048-3.4598259 4.0181531-3.4598259 6.8831739 0 3.1559861 1.09262177 5.5596681 3.27786532 7.2106171 2.18481438 1.6509489 5.31676798 2.4766379 9.39586058 2.4766379 4.0786636 0 7.2106171-.825689 9.3958607-2.4766379z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(773.608278 376.236614)"/><path d="m31.3560134 6.96900432c3.3988862 4.37005798 5.0987585 10.58547078 5.0987585 18.64580948 0 8.7890393-1.7603827 15.6232898-5.2807191 20.5031806-3.5203364 4.8803201-8.4367052 7.320051-14.7495357 7.320051-2.9620092 0-5.8630788-.5583272-8.70363793-1.6749815-2.84055913-1.1170835-5.35367504-2.6950765-7.53848944-4.7344083l2.33072618-4.5884964c2.47620882 2.0878259 4.83139668 3.6053085 7.06513445 4.5520185 2.23330864.94671 4.49150804 1.4204941 6.77374004 1.4204941 4.4670464 0 7.9268723-1.9908375 10.3790485-5.9725126 2.4521763-3.9821043 3.6782645-9.565805 3.6782645-16.7523895v-.9471392c-1.1170835 2.7195382-2.9379767 4.8678747-5.4626798 6.4462969-2.5251321 1.577993-5.4141855 2.3672041-8.6675891 2.3672041-3.1564152 0-5.9484801-.6922227-8.37619475-2.0758097-2.42771461-1.3840162-4.32156374-3.3263596-5.68111825-5.8270301s-2.03933177-5.353675-2.03933177-8.5581553c0-3.2049094.7162552-6.0699302 2.14833645-8.59463325 1.43251041-2.52513218 3.4113317-4.50395347 5.93646388-5.93646387 2.52470304-1.43208125 5.38972384-2.14833645 8.59463324-2.14833645 6.2639071 0 11.0953038 2.18481439 14.4941901 6.55530149zm-5.8270301 18.35441508c2.1367494-2.1363202 3.2049095-4.9043526 3.2049095-8.3032389 0-3.4473805-1.0681601-6.2394454-3.2049095-8.37619472-2.1363202-2.13632019-4.9283851-3.20490943-8.3757656-3.20490943-3.3018978 0-5.9729418 1.05614383-8.01227355 3.16843149-2.03933176 2.11228766-3.05899765 4.91636886-3.05899765 8.41267266 0 3.4473805 1.01966589 6.2274292 3.05899765 8.3397168 2.03933175 2.1122877 4.73440825 3.1684315 8.08480035 3.1684315 3.3993154 0 6.1669186-1.0681601 8.3032388-3.2049094z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(867.854354 375.654152)"/><path d="m330.093135.33214542v84.43190468-42.5518783h-329.66215607v42.5518783" stroke="#000" stroke-width="2.538347" transform="translate(131.785126 139.982935)"/><path d="m.10801477.42233775h329.31542823v42.21595235" stroke="#000" stroke-width="2.538347" transform="translate(461.770246 182.108695)"/><path d="m36.186655 346.60579v15.692843" stroke="#000" stroke-width="2.540394"/><path d="m132.152376 331.426017v30.871702" stroke="#000" stroke-width="2.538347"/><path d="m228.893645 346.60579v15.692843" stroke="#000" stroke-width="2.540394"/><g transform="translate(1221.45577 24.489117)"><path d="m.197608.154988h239.084215v85.099871h-239.084215z" fill="#0083c0"/><path d="m239.281823 85.2548586h-239.08421531v-85.09987082h239.08421531zm-236.54571658-82.56147761v80.02308441h234.00574658v-80.02308441z" fill="#000"/></g><g transform="translate(956.909366 124.770501)"><path d="m.184449.095195h223.163411v52.269131h-223.163411z" fill="#c9177e"/><path d="m223.347859 52.3643259h-223.16341016v-52.26913097h223.16341016zm-220.62506465-49.73066919v47.19220749h218.08488865v-47.19220749z" fill="#000"/></g><g transform="translate(1231.923745 124.770501)"><path d="m.183618.095195h222.158079v52.269131h-222.158079z" fill="#c9177e"/><path d="m222.341696 52.3643259h-222.15807809v-52.26913097h222.15807809zm-219.61932129-49.73066919v47.19220749h217.08147629v-47.19220749z" fill="#000"/></g><path d="m91.4241325.12672749v8.67595862h-91.3476086v8.67108449" stroke="#000" stroke-width="2.539424" transform="translate(1252.516016 177.005152)"/><g transform="translate(1504.487683 124.770501)"><path d="m.182671.095195h221.012609v52.269131h-221.012609z" fill="#c9177e"/><path d="m221.19528 52.3643259h-221.01260884v-52.26913097h221.01260884zm-218.47425033-49.73066919v47.19220749h215.93589233v-47.19220749z" fill="#000"/></g><g transform="translate(1018.734446 194.392443)"><path d="m.035471.089728h42.916712v49.26713h-42.916712z" fill="#00a88a"/><path d="m42.9521838 49.3568579h-42.91671231v-49.26713035h42.91671231zm-40.37825665-46.72872807v44.19032577h37.83980095v-44.19032577z" fill="#000"/></g><path d="m19.5454361 18.6632185c.9737513 1.298422 1.4606269 2.9361183 1.4606269 4.9128281 0 2.7441845-.9294187 4.9055264-2.7882562 6.4842865-1.8590982 1.5784993-4.3818807 2.3678794-7.5683475 2.3678794-2.03616765 0-3.99097204-.3395352-5.86441318-1.0180839-1.87370191-.6785486-3.45976385-1.6376963-4.75792503-2.8769212l1.41629437-2.7882563c2.92099306 2.4195138 5.96011931 3.6292707 9.11737874 3.6292707 2.2424444 0 3.9466395-.5017401 5.1120638-1.5049595 1.1654244-1.0032194 1.7482669-2.4784499 1.7482669-4.4259525 0-3.8652762-2.4195137-5.7979144-7.2585412-5.7979144h-3.62953146v-3.0539906h2.92125384c2.33110942 0 4.11614632-.5163438 5.35537122-1.5490313 1.239225-1.0326875 1.8590983-2.5081788 1.8590983-4.4259525 0-1.71149696-.5090419-3.02452258-1.5271257-3.93907688-1.0178231-.91481507-2.4562837-1.37222261-4.315382-1.37222261-3.00965814 0-5.9895874 1.20975688-8.94030934 3.62953142l-1.37222261-2.78851699c1.26895386-1.20975688 2.82528692-2.16134189 4.66952073-2.85475502 1.84423381-.69341314 3.7695701-1.03998932 5.77600882-1.03998932 2.8325888 0 5.0971994.72288124 6.7938319 2.16864372 1.6966326 1.44576248 2.5449488 3.39326503 2.5449488 5.8422469 0 1.79990128-.4428039 3.37840058-1.32789 4.73575878-.8850862 1.3573582-2.1097076 2.3311094-3.6736032 2.9212538 1.8588374.5309474 3.2753926 1.4457625 4.2488831 2.7439237z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(1028.654902 202.599599)"/><g transform="translate(1078.488158 194.392443)"><path d="m.035471.089728h42.916712v49.26713h-42.916712z" fill="#00a88a"/><path d="m42.9521838 49.3568579h-42.91671231v-49.26713035h42.91671231zm-40.37825665-46.72872807v44.19032577h37.83980095v-44.19032577z" fill="#000"/></g><path d="m22.936251 22.0604515v3.0096581h-4.7800913v6.8603307h-3.6292707v-6.8603307h-14.51708251v-2.7441844l15.18102761-21.9086215h2.9653256v21.6431478zm-19.16443702 0h10.75507502v-15.49083387z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(1089.451732 203.121158)"/><g transform="translate(1138.52553 194.392443)"><path d="m.035471.089728h42.916712v49.26713h-42.916712z" fill="#00a88a"/><path d="m42.9521838 49.3568579h-42.91671231v-49.26713035h42.91671231zm-40.37825665-46.72872807v44.19032577h37.83980095v-44.19032577z" fill="#000"/></g><path d="m16.4136394 13.9290806c1.4900951.8410145 2.6336139 2.0140014 3.4302958 3.5187001.7966819 1.5049595 1.1948924 3.2456637 1.1948924 5.2226344s-.4352412 3.7325394-1.3057238 5.2669669c-.8702217 1.5344276-2.1097075 2.7220182-3.7176749 3.5630326-1.6082282.8407537-3.489232 1.2613913-5.643272 1.2613913-1.9177737 0-3.80607928-.346837-5.66517753-1.0402501-1.85883747-.6934131-3.42273314-1.6449981-4.69142622-2.854755l1.37196183-2.7882562c2.92125384 2.4195137 5.91604755 3.6292706 8.98464192 3.6292706 2.213237 0 3.9466395-.6269143 5.2007289-1.8810037 1.2538286-1.2540895 1.8810037-2.9580238 1.8810037-5.1120639 0-2.094843-.6196125-3.7841737-1.8588374-5.0677312-1.2394858-1.2835576-2.8917858-1.9253363-4.9571607-1.9253363-3.00965819 0-5.41456828 1.2246213-7.21446955 3.6736031h-2.52278251v-18.45642016h18.89896326v3.00965815h-15.26969262v11.24221151c1.74096506-1.6820289 3.96880576-2.5230433 6.68326132-2.5230433 1.9769707 0 3.7103731.4206376 5.2004681 1.2613912z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(1148.445985 201.599599)"/><g transform="translate(957.360703 194.392443)"><path d="m.035471.089728h42.916712v49.26713h-42.916712z" fill="#00a88a"/><path d="m42.9521838 49.3568579h-42.91671231v-49.26713035h42.91671231zm-40.37816863-46.72872807v44.19032577h37.83971293v-44.19032577z" fill="#000"/></g><path d="m10.8395677 28.5428562h6.948735v3.0539907h-17.57107324v-3.0539907h6.94873503v-23.94452832l-6.46185939 4.11614628v-3.49653379l8.05522316-5.1342301h2.08023944z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(970.410431 203.121158)"/><g transform="translate(1231.099754 194.213333)"><path d="m.035471.089728h42.916712v49.26713h-42.916712z" fill="#00a88a"/><path d="m42.9521838 49.3568579h-42.91671231v-49.26713035h42.91671231zm-40.37816863-46.72872807v44.19032577h37.83971293v-44.19032577z" fill="#000"/></g><path d="m21.3648958 29.0644155v3.0539907h-20.27092509v-2.7441844l11.02080949-12.215702c1.4752306-1.6523 2.5522507-3.142395 3.2307994-4.4702851.6788094-1.3276293 1.0180838-2.6555193 1.0180838-3.98340939 0-1.74070428-.5017401-3.07589618-1.5049595-4.00531492-1.0032194-.92967951-2.4341174-1.39438888-4.2932157-1.39438888-3.0096581 0-5.98958737 1.20975688-8.94030931 3.62953142l-1.37222261-2.78851699c1.23948576-1.18028878 2.80312065-2.12431118 4.691687-2.83258875 1.88830558-.70827758 3.79147559-1.06215559 5.70951002-1.06215559 2.891525 0 5.1783019.74504751 6.8603307 2.23514253 1.6817681 1.49009502 2.5227826 3.50383562 2.5227826 6.04122179 0 1.79990128-.4057732 3.53356448-1.2173195 5.20072888-.8112856 1.6669037-2.1613419 3.5333038-4.0496475 5.5986787l-8.98464189 9.737252z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(1241.784164 202.570441)"/><g transform="translate(1292.473373 194.213333)"><path d="m.035471.089728h42.916712v49.26713h-42.916712z" fill="#00a88a"/><path d="m42.9521838 49.3568579h-42.91671231v-49.26713035h42.91671231zm-40.37825665-46.72872807v44.19032577h37.83980095v-44.19032577z" fill="#000"/></g><path d="m23.0372759 21.726858v3.0096582h-4.7800914v6.8603307h-3.6292706v-6.8603307h-14.51708254v-2.7441845l15.18102754-21.90862143h2.9653256v21.64314773zm-19.16443705 0h10.75507505v-15.4908338z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(1301.574474 203.100332)"/><g fill="#fff" fill-rule="nonzero" transform="translate(974.127869 141.527307)"><path d="m5.47365255 15.5387394v-13.14066544h-5.07689804v-1.43299542h11.85291919v1.43299542h-5.07689802v13.14066544z"/><path d="m21.1342453 10.3380383h-7.553933c.0136476 1.3111421.3173061 2.3005913.9109757 2.9683477.5936695.6677563 1.4568786 1.0040716 2.5896274 1.0040716 1.2009866 0 2.3064402-.4045531 3.3163608-1.2087853l.5527268 1.2087853c-.45037.4240497-1.02698.7554908-1.7298302 1.0040716-.7028501.2437067-1.4227597.3655601-2.1597288.3655601-1.6104139 0-2.8728146-.472791-3.7872021-1.418373-.9143876-.9504562-1.3715814-2.25185-1.3715814-3.9041814 0-1.04793885.2047137-1.97889846.6141409-2.79287884.4094273-.80910626.9826255-1.44274368 1.7195945-1.89116402.7369691-.45329446 1.576295-.67750463 2.5179777-.67750463 1.3647575 0 2.4360922.44842033 3.214004 1.34038686.7779118.89684067 1.1668677 2.12512245 1.1668677 3.69459363zm-6.4587151-3.27541805c-.5390792.52153234-.8836805 1.24777832-1.0338038 2.19336032h5.9981094c-.0818855-.96995267-.3650727-1.70594692-.8495616-2.21285686s-1.156632-.75549078-2.0164293-.75549078c-.8597972 0-1.5592354.25832911-2.0983147.77498732z"/><path d="m29.3842046 5.11784076-.0409427 1.51585569c-.3138943-.10723095-.675555-.16572056-1.0849823-.16572056-.996273 0-1.736654.31194458-2.2211429.93095961-.4844889.62388916-.7267334 1.37937994-.7267334 2.26647234v5.87333156h-1.6581804v-7.40868379c0-1.06743536-.0545903-2.02763977-.1637709-2.8903615h1.576295l.1637709 1.90578642c.2593039-.69700117.675555-1.22828178 1.2487531-1.59871597.5731982-.36556006 1.2282818-.55077715 1.9652509-.55077715.3411894 0 .6550836.03899307.9416827.12185335z"/><path d="m45.9045945 9.07076348v6.46797592h-1.6581804v-6.38511564c0-.96995268-.1671828-1.67182798-.5015484-2.11050005-.3343655-.43867206-.8768567-.65313396-1.6274733-.65313396-.8734448 0-1.5558236.29244804-2.0471363.87734413-.4913127.58977022-.7369691 1.38425407-.7369691 2.39807396v5.87333156h-1.6581804v-6.38511564c0-.95533028-.1705947-1.65720558-.5117841-2.10075178s-.8870924-.66288223-1.637709-.66288223c-.8734448 0-1.5592355.29244804-2.057372.87734413-.4981365.58977022-.7472047 1.38425407-.7472047 2.39807396v5.87333156h-1.6581805v-7.40868379c0-1.06743536-.0545903-2.02763977-.1637709-2.8903615h1.576295l.1637709 1.8034296c.2865991-.65313396.7130858-1.1600439 1.2794602-1.51585569s1.2248699-.53128061 1.9754865-.53128061c.8188545 0 1.4875857.16572056 2.0061936.49228754s.90074.83347692 1.1463963 1.51585569c.3138943-.61414089.7744999-1.1015543 1.381817-1.46711435.6073171-.36068592 1.2931078-.54102888 2.057372-.54102888 2.2791451 0 3.4187176 1.3598834 3.4187176 4.07477607z"/><path d="m60.3369055 14.1252405h3.214004v1.4134989h-8.1271311v-1.4134989h3.214004v-11.07403258l-2.988819 1.90578642v-1.61821251l3.725788-2.37370329h.9621541z"/><path d="m66.396429 5.46877841h2.1085503v2.12512245h-2.1085503zm0 7.95946089h2.1085503v1.4963592c0 .5751478-.095533 1.0966801-.286599 1.5743453-.1910661.4776651-.5117841.945582-.9621541 1.3940023l-.7779118-.5946443c.5322554-.6141409.8325021-1.199037.90074-1.7595624h-.9826254z"/><path d="m76.2226832 15.5387394 1.1463963-14.57366086h3.214004l-.962154 11.97574736h6.5098934l-.2047136 2.5979135z"/><path d="m87.6661752 15.5387394.8188545-10.37703143h3.0911758l-.8188545 10.37703143zm1.0645108-15.25116549h3.3163608l-.225185 2.9049839h-3.3163608z"/><path d="m92.6611877 14.4323109 1.0030968-2.1494931c.5731982.3948049 1.1873391.7018753 1.8424227.9114631.6550836.2144619 1.3101672.3168187 1.9652508.3168187.5731982 0 .996273-.0828603 1.2692246-.2437067.2729515-.1657206.4094272-.3850566.4094272-.6580081 0-.2826998-.160359-.5117841-.481077-.6726305-.320718-.1657206-.8427378-.3558118-1.5660593-.5751478-.7506166-.2047136-1.3647575-.4094273-1.8424227-.6141409-.4776651-.2047136-.8905043-.5069099-1.2385174-.91146307-.3480132-.399679-.5220198-.92121134-.5220198-1.56459704 0-.66775636.1876542-1.25752658.5629625-1.75956239.3753083-.50690994.9075638-.9017148 1.5967663-1.18928871.6892026-.28757391 1.4773501-.4289238 2.3644424-.4289238.7779118 0 1.5387642.11697922 2.2825572.34606352.743793.23395844 1.368169.54590302 1.87313.94558201l-.982626 2.06663284c-.50496-.37043419-1.037216-.64825983-1.5967662-.83835106-.5595506-.19496536-1.1054536-.28757391-1.637709-.28757391-.5595506 0-.9826255.08286028-1.2692245.2437067-.2865991.16572056-.4298987.38993073-.4298987.67750464 0 .29732218.1705947.53615474.5117841.7164977.3411894.17546883.8597973.36068592 1.5558236.55077715.7506166.21933604 1.3613456.4289238 1.8321867.63363743.470842.20471359.880269.51178409 1.228282.91146309.348013.4045531.52202.9260855.52202 1.5694711 0 1.0235682-.406016 1.8229262-1.218046 2.4029481-.812031.580022-1.9072489.87247-3.285654.87247-1.7741848 0-3.3573036-.4240496-4.7493563-1.272149z"/><path d="m107.666697 11.5078305c-.040943.5702737.075062.9943234.348013 1.2672749.272952.2729515.64826.4094272 1.125925.4094272.313894 0 .661907-.0536155 1.044039-.1657205l-.204713 2.3980739c-.464018.1900913-1.064511.2875739-1.80148.2875739-1.173692 0-2.07102-.3168187-2.691984-.945582-.620965-.6238891-.931447-1.5109815-.931447-2.6612772 0-.2290843.006823-.4094272.020471-.5312806l.327542-4.09427259h-1.965251l.184242-2.31033954h1.965251l.184242-2.43706703 3.173062-1.00407162-.266128 3.44113865h2.640806l-.184243 2.31033954h-2.640805z"/><path d="m110.962586 14.4323109 1.003097-2.1494931c.573198.3948049 1.187339.7018753 1.842423.9114631.655083.2144619 1.310167.3168187 1.965251.3168187.573198 0 .996273-.0828603 1.269224-.2437067.272952-.1657206.409427-.3850566.409427-.6580081 0-.2826998-.160359-.5117841-.481077-.6726305-.320718-.1657206-.842737-.3558118-1.566059-.5751478-.750617-.2047136-1.364757-.4094273-1.842423-.6141409-.477665-.2047136-.890504-.5069099-1.238517-.91146307-.348013-.399679-.52202-.92121134-.52202-1.56459704 0-.66775636.187654-1.25752658.562963-1.75956239.375308-.50690994.907563-.9017148 1.596766-1.18928871s1.47735-.4289238 2.364442-.4289238c.777912 0 1.538765.11697922 2.282557.34606352.743793.23395844 1.36817.54590302 1.87313.94558201l-.982625 2.06663284c-.504961-.37043419-1.037216-.64825983-1.596767-.83835106-.55955-.19496536-1.105453-.28757391-1.637709-.28757391-.55955 0-.982625.08286028-1.269224.2437067-.286599.16572056-.429899.38993073-.429899.67750464 0 .29732218.170595.53615474.511784.7164977.34119.17546883.859798.36068592 1.555824.55077715.750616.21933604 1.361345.4289238 1.832187.63363743.470841.20471359.880268.51178409 1.228282.91146309.348013.4045531.522019.9260855.522019 1.5694711 0 1.0235682-.406015 1.8229262-1.218046 2.4029481-.81203.580022-1.907248.87247-3.285653.87247-1.774185 0-3.357304-.4240496-4.749357-1.272149z"/><path d="m133.890513 14.1252405h3.214004v1.4134989h-8.127131v-1.4134989h3.214004v-11.07403258l-2.988819 1.90578642v-1.61821251l3.725788-2.37370329h.962154z"/><path d="m142.058587 13.4282393v1.4963592c0 .5751478-.095533 1.0966801-.286599 1.5743453-.191066.4776651-.511784.945582-.962154 1.3940023l-.777912-.5946443c.532255-.6141409.832502-1.199037.90074-1.7595624h-.982626v-2.1105001z"/><path d="m153.481607 9.31447018c.45037.59951849.675555 1.35988342.675555 2.27134652 0 1.2721489-.429898 2.2713464-1.289696 3.0024665-.859797.726246-2.026665 1.0918061-3.500603 1.0918061-.941682 0-1.845834-.1559723-2.712455-.4679169-.866621-.3168187-1.600178-.7603649-2.200672-1.3306386l.655084-1.2916455c1.35111 1.1210508 2.75681 1.6815762 4.217101 1.6815762 1.037215 0 1.825363-.2339584 2.364442-.6970012.539079-.4630427.808619-1.1454215.808619-2.0471363 0-1.78880715-1.119101-2.68077369-3.357304-2.68077369h-1.678651v-1.41349887h1.35111c1.078158 0 1.903836-.23883257 2.477034-.71649771.573199-.47766514.859798-1.1600439.859798-2.0471363 0-.79448385-.235421-1.39887648-.706262-1.82292614-.470842-.42404966-1.136161-.63363743-1.995958-.63363743-1.392053 0-2.770458.56052542-4.135216 1.67670212l-.634612-1.28677139c.586846-.56052542 1.306756-.99919749 2.159729-1.32089033.852973-.32169285 1.743478-.48253927 2.671513-.48253927 1.310167 0 2.357619.33631525 3.142354 1.00407161.784736.66775637 1.177103 1.56947117 1.177103 2.70027027 0 .83347692-.204713 1.56459703-.61414 2.19336032-.409428.62388916-.975802 1.07718363-1.699124 1.35013514.859798.2437067 1.514881.66775636 1.965251 1.26727485z"/><path d="m159.070289 13.4282393v1.4963592c0 .5751478-.095533 1.0966801-.286599 1.5743453-.191066.4776651-.511784.945582-.962154 1.3940023l-.777912-.5946443c.532256-.6141409.832503-1.199037.90074-1.7595624h-.982625v-2.1105001z"/><path d="m171.98772 10.9716758v1.3940023h-2.210908v3.1730613h-1.678651v-3.1730613h-6.714608v-1.2672749l7.021678-10.13332466h1.371581v10.00659726zm-8.864101 0h4.974542v-7.1649771z"/><path d="m176.081992 13.4282393v1.4963592c0 .5751478-.095533 1.0966801-.286599 1.5743453-.191066.4776651-.511784.945582-.962154 1.3940023l-.777912-.5946443c.532256-.6141409.832502-1.199037.90074-1.7595624h-.982625v-2.1105001z"/><path d="m186.553094 6.9700117c.689203.38993073 1.218046.93095961 1.586531 1.62796078.368484.69700117.552727 1.50123332.552727 2.41757052 0 .911463-.201302 1.7254434-.603905 2.437067-.402604.7067494-.975802 1.2575266-1.719595 1.6474573s-1.613826.580022-2.610099.580022c-.887092 0-1.760537-.1559723-2.620334-.4776652-.859797-.3216928-1.583119-.7603649-2.169965-1.3208903l.634613-1.2916455c1.35111 1.1210508 2.736338 1.6815762 4.155686 1.6815762 1.023568 0 1.825363-.292448 2.405385-.87247.580022-.5800219.870033-1.3696316.870033-2.363955 0-.9699527-.286599-1.74981412-.859797-2.34445848-.573198-.59464435-1.337462-.89196653-2.292793-.89196653-1.392052 0-2.50433.57027369-3.336832 1.70107279h-1.166867v-8.53460874h8.741272v1.38912821h-7.062621v5.20070104c.805207-.77986145 1.835599-1.16491804 3.091176-1.16491804.914388 0 1.716183.19496536 2.405385.58002195z"/></g><g fill="#fff" fill-rule="nonzero" transform="translate(1248.643217 141.651852)"><path d="m5.47365255 15.5387394v-13.14066544h-5.07689804v-1.43299542h11.85291919v1.43299542h-5.07689802v13.14066544z"/><path d="m21.1342453 10.3380383h-7.553933c.0136476 1.3111421.3173061 2.3005913.9109757 2.9683477.5936695.6677563 1.4568786 1.0040716 2.5896274 1.0040716 1.2009866 0 2.3064402-.4045531 3.3163608-1.2087853l.5527268 1.2087853c-.45037.4240497-1.02698.7554908-1.7298302 1.0040716-.7028501.2437067-1.4227597.3655601-2.1597288.3655601-1.6104139 0-2.8728146-.472791-3.7872021-1.418373-.9143876-.9504562-1.3715814-2.25185-1.3715814-3.9041814 0-1.04793885.2047137-1.97889846.6141409-2.79287884.4094273-.80910626.9826255-1.44274368 1.7195945-1.89116402.7369691-.45329446 1.576295-.67750463 2.5179777-.67750463 1.3647575 0 2.4360922.44842033 3.214004 1.34038686.7779118.89684067 1.1668677 2.12512245 1.1668677 3.69459363zm-6.4587151-3.27541805c-.5390792.52153234-.8836805 1.24777832-1.0338038 2.19336032h5.9981094c-.0818855-.96995267-.3650727-1.70594692-.8495616-2.21285686s-1.156632-.75549078-2.0164293-.75549078c-.8597972 0-1.5592354.25832911-2.0983147.77498732z"/><path d="m29.3842046 5.11784076-.0409427 1.51585569c-.3138943-.10723095-.675555-.16572056-1.0849823-.16572056-.996273 0-1.736654.31194458-2.2211429.93095961-.4844889.62388916-.7267334 1.37937994-.7267334 2.26647234v5.87333156h-1.6581804v-7.40868379c0-1.06743536-.0545903-2.02763977-.1637709-2.8903615h1.576295l.1637709 1.90578642c.2593039-.69700117.675555-1.22828178 1.2487531-1.59871597.5731982-.36556006 1.2282818-.55077715 1.9652509-.55077715.3411894 0 .6550836.03899307.9416827.12185335z"/><path d="m45.9045945 9.07076348v6.46797592h-1.6581804v-6.38511564c0-.96995268-.1671828-1.67182798-.5015484-2.11050005-.3343655-.43867206-.8768567-.65313396-1.6274733-.65313396-.8734448 0-1.5558236.29244804-2.0471363.87734413-.4913127.58977022-.7369691 1.38425407-.7369691 2.39807396v5.87333156h-1.6581804v-6.38511564c0-.95533028-.1705947-1.65720558-.5117841-2.10075178s-.8870924-.66288223-1.637709-.66288223c-.8734448 0-1.5592355.29244804-2.057372.87734413-.4981365.58977022-.7472047 1.38425407-.7472047 2.39807396v5.87333156h-1.6581805v-7.40868379c0-1.06743536-.0545903-2.02763977-.1637709-2.8903615h1.576295l.1637709 1.8034296c.2865991-.65313396.7130858-1.1600439 1.2794602-1.51585569s1.2248699-.53128061 1.9754865-.53128061c.8188545 0 1.4875857.16572056 2.0061936.49228754s.90074.83347692 1.1463963 1.51585569c.3138943-.61414089.7744999-1.1015543 1.381817-1.46711435.6073171-.36068592 1.2931078-.54102888 2.057372-.54102888 2.2791451 0 3.4187176 1.3598834 3.4187176 4.07477607z"/><path d="m63.8784513 14.1252405v1.4134989h-9.3758843v-1.2672749l5.0973694-5.65399549c.6823788-.76036491 1.1805153-1.45249195 1.4944095-2.06663284.3138943-.61414089.4708414-1.22828178.4708414-1.84242267 0-.80423212-.2320088-1.42324715-.6960264-1.85217094-.4640175-.4289238-1.1259249-.6433857-1.9857222-.6433857-1.3920527 0-2.7704578.56052542-4.1352153 1.67670212l-.6346123-1.28677139c.5731982-.54590302 1.2965197-.98457508 2.1699645-1.31114206.8734448-.32656699 1.7537134-.49228754 2.6408058-.49228754 1.3374624 0 2.3951495.34606351 3.1730613 1.03331642.7779118.6872529 1.1668677 1.62308664 1.1668677 2.79287881 0 .83347692-.1876542 1.63770904-.5629625 2.40782222-.3753083.77011319-.9996849 1.63283491-1.8731297 2.58816519l-4.1556867 4.50369987z"/><path d="m66.396429 5.46877841h2.1085503v2.12512245h-2.1085503zm0 7.95946089h2.1085503v1.4963592c0 .5751478-.095533 1.0966801-.286599 1.5743453-.1910661.4776651-.5117841.945582-.9621541 1.3940023l-.7779118-.5946443c.5322554-.6141409.8325021-1.199037.90074-1.7595624h-.9826254z"/><path d="m76.2226832 15.5387394 1.1463963-14.57366086h3.214004l-.962154 11.97574736h6.5098934l-.2047136 2.5979135z"/><path d="m87.6661752 15.5387394.8188545-10.37703143h3.0911758l-.8188545 10.37703143zm1.0645108-15.25116549h3.3163608l-.225185 2.9049839h-3.3163608z"/><path d="m92.6611877 14.4323109 1.0030968-2.1494931c.5731982.3948049 1.1873391.7018753 1.8424227.9114631.6550836.2144619 1.3101672.3168187 1.9652508.3168187.5731982 0 .996273-.0828603 1.2692246-.2437067.2729515-.1657206.4094272-.3850566.4094272-.6580081 0-.2826998-.160359-.5117841-.481077-.6726305-.320718-.1657206-.8427378-.3558118-1.5660593-.5751478-.7506166-.2047136-1.3647575-.4094273-1.8424227-.6141409-.4776651-.2047136-.8905043-.5069099-1.2385174-.91146307-.3480132-.399679-.5220198-.92121134-.5220198-1.56459704 0-.66775636.1876542-1.25752658.5629625-1.75956239.3753083-.50690994.9075638-.9017148 1.5967663-1.18928871.6892026-.28757391 1.4773501-.4289238 2.3644424-.4289238.7779118 0 1.5387642.11697922 2.2825572.34606352.743793.23395844 1.368169.54590302 1.87313.94558201l-.982626 2.06663284c-.50496-.37043419-1.037216-.64825983-1.5967662-.83835106-.5595506-.19496536-1.1054536-.28757391-1.637709-.28757391-.5595506 0-.9826255.08286028-1.2692245.2437067-.2865991.16572056-.4298987.38993073-.4298987.67750464 0 .29732218.1705947.53615474.5117841.7164977.3411894.17546883.8597973.36068592 1.5558236.55077715.7506166.21933604 1.3613456.4289238 1.8321867.63363743.470842.20471359.880269.51178409 1.228282.91146309.348013.4045531.52202.9260855.52202 1.5694711 0 1.0235682-.406016 1.8229262-1.218046 2.4029481-.812031.580022-1.9072489.87247-3.285654.87247-1.7741848 0-3.3573036-.4240496-4.7493563-1.272149z"/><path d="m107.666697 11.5078305c-.040943.5702737.075062.9943234.348013 1.2672749.272952.2729515.64826.4094272 1.125925.4094272.313894 0 .661907-.0536155 1.044039-.1657205l-.204713 2.3980739c-.464018.1900913-1.064511.2875739-1.80148.2875739-1.173692 0-2.07102-.3168187-2.691984-.945582-.620965-.6238891-.931447-1.5109815-.931447-2.6612772 0-.2290843.006823-.4094272.020471-.5312806l.327542-4.09427259h-1.965251l.184242-2.31033954h1.965251l.184242-2.43706703 3.173062-1.00407162-.266128 3.44113865h2.640806l-.184243 2.31033954h-2.640805z"/><path d="m110.962586 14.4323109 1.003097-2.1494931c.573198.3948049 1.187339.7018753 1.842423.9114631.655083.2144619 1.310167.3168187 1.965251.3168187.573198 0 .996273-.0828603 1.269224-.2437067.272952-.1657206.409427-.3850566.409427-.6580081 0-.2826998-.160359-.5117841-.481077-.6726305-.320718-.1657206-.842737-.3558118-1.566059-.5751478-.750617-.2047136-1.364757-.4094273-1.842423-.6141409-.477665-.2047136-.890504-.5069099-1.238517-.91146307-.348013-.399679-.52202-.92121134-.52202-1.56459704 0-.66775636.187654-1.25752658.562963-1.75956239.375308-.50690994.907563-.9017148 1.596766-1.18928871s1.47735-.4289238 2.364442-.4289238c.777912 0 1.538765.11697922 2.282557.34606352.743793.23395844 1.36817.54590302 1.87313.94558201l-.982625 2.06663284c-.504961-.37043419-1.037216-.64825983-1.596767-.83835106-.55955-.19496536-1.105453-.28757391-1.637709-.28757391-.55955 0-.982625.08286028-1.269224.2437067-.286599.16572056-.429899.38993073-.429899.67750464 0 .29732218.170595.53615474.511784.7164977.34119.17546883.859798.36068592 1.555824.55077715.750616.21933604 1.361345.4289238 1.832187.63363743.470841.20471359.880268.51178409 1.228282.91146309.348013.4045531.522019.9260855.522019 1.5694711 0 1.0235682-.406015 1.8229262-1.218046 2.4029481-.81203.580022-1.907248.87247-3.285653.87247-1.774185 0-3.357304-.4240496-4.749357-1.272149z"/><path d="m137.432059 14.1252405v1.4134989h-9.375885v-1.2672749l5.09737-5.65399549c.682379-.76036491 1.180515-1.45249195 1.494409-2.06663284.313895-.61414089.470842-1.22828178.470842-1.84242267 0-.80423212-.232009-1.42324715-.696027-1.85217094-.464017-.4289238-1.125925-.6433857-1.985722-.6433857-1.392053 0-2.770458.56052542-4.135215 1.67670212l-.634612-1.28677139c.573198-.54590302 1.296519-.98457508 2.169964-1.31114206.873445-.32656699 1.753713-.49228754 2.640806-.49228754 1.337462 0 2.395149.34606351 3.173061 1.03331642.777912.6872529 1.166868 1.62308664 1.166868 2.79287881 0 .83347692-.187654 1.63770904-.562963 2.40782222-.375308.77011319-.999685 1.63283491-1.873129 2.58816519l-4.155687 4.50369987z"/><path d="m142.058587 13.4282393v1.4963592c0 .5751478-.095533 1.0966801-.286599 1.5743453-.191066.4776651-.511784.945582-.962154 1.3940023l-.777912-.5946443c.532255-.6141409.832502-1.199037.90074-1.7595624h-.982626v-2.1105001z"/><path d="m154.976017 10.9716758v1.3940023h-2.210907v3.1730613h-1.678652v-3.1730613h-6.714607v-1.2672749l7.021677-10.13332466h1.371582v10.00659726zm-8.8641 0h4.974541v-7.1649771z"/><path d="m159.070289 13.4282393v1.4963592c0 .5751478-.095533 1.0966801-.286599 1.5743453-.191066.4776651-.511784.945582-.962154 1.3940023l-.777912-.5946443c.532256-.6141409.832503-1.199037.90074-1.7595624h-.982625v-2.1105001z"/><path d="m169.541392 6.9700117c.689202.38993073 1.218046.93095961 1.58653 1.62796078.368485.69700117.552727 1.50123332.552727 2.41757052 0 .911463-.201302 1.7254434-.603905 2.437067-.402604.7067494-.975802 1.2575266-1.719595 1.6474573-.743792.3899307-1.613825.580022-2.610098.580022-.887093 0-1.760538-.1559723-2.620335-.4776652-.859797-.3216928-1.583119-.7603649-2.169964-1.3208903l.634612-1.2916455c1.35111 1.1210508 2.736339 1.6815762 4.155687 1.6815762 1.023568 0 1.825363-.292448 2.405385-.87247.580022-.5800219.870033-1.3696316.870033-2.363955 0-.9699527-.286599-1.74981412-.859798-2.34445848-.573198-.59464435-1.337462-.89196653-2.292792-.89196653-1.392053 0-2.50433.57027369-3.336832 1.70107279h-1.166868v-8.53460874h8.741272v1.38912821h-7.06262v5.20070104c.805207-.77986145 1.835599-1.16491804 3.091175-1.16491804.914388 0 1.716183.19496536 2.405386.58002195z"/><path d="m176.081992 13.4282393v1.4963592c0 .5751478-.095533 1.0966801-.286599 1.5743453-.191066.4776651-.511784.945582-.962154 1.3940023l-.777912-.5946443c.532256-.6141409.832502-1.199037.90074-1.7595624h-.982625v-2.1105001z"/><path d="m187.965618 9.38758219c.525432.63363741.788148 1.39400231.788148 2.28109471 0 1.2429042-.470842 2.2226052-1.412524 2.9391029-.941683.7164977-2.210907 1.0723095-3.807674 1.0723095-1.596766 0-2.865991-.3558118-3.807673-1.0723095-.941683-.7164977-1.412524-1.6961987-1.412524-2.9391029 0-.8870924.269539-1.6523314.808619-2.29084297.539079-.6433857 1.27946-1.0869319 2.221142-1.3306386-.873444-.25832911-1.542176-.6872529-2.006193-1.28189726-.464018-.59464435-.696026-1.29164552-.696026-2.09587764 0-.77986145.204713-1.45736609.61414-2.03738804.409428-.58002195.986038-1.02844229 1.729831-1.35013513.743792-.32169285 1.593354-.48253927 2.548684-.48253927.955331 0 1.804892.16084642 2.548685.48253927.743793.32169284 1.320403.77011318 1.72983 1.35013513s.614141 1.25752659.614141 2.03738804c0 .80423212-.235421 1.50123329-.706262 2.09587764-.470841.59464436-1.129337 1.02356815-1.975487 1.28189726.955331.2583291 1.695712.70674944 2.221143 1.34038686zm-6.776021-2.7051444c.580022.48741341 1.361346.78473559 2.343971.89196653.982626-.10723094 1.763949-.40455312 2.343971-.89196653.580022-.48253927.870033-1.11130256.870033-1.89116401 0-.80423212-.283187-1.43786955-.849561-1.90578642-.566375-.46304273-1.354522-.69212703-2.364443-.69212703-1.00992 0-1.798068.2290843-2.364442.69212703-.566375.46791687-.849562 1.1015543-.849562 1.90578642 0 .77986145.290011 1.40862474.870033 1.89116401zm4.984777 6.91152211c.614141-.4630428.921211-1.1405474.921211-2.0276398 0-.8042321-.324129-1.4476178-.972389-1.9350312-.64826-.48253927-1.511469-.77986145-2.589628-.8870924-1.078158.10723095-1.941367.40455313-2.589627.8870924-.64826.4874134-.97239 1.1307991-.97239 1.9350312 0 .8870924.307071 1.564597.921211 2.0276398.614141.4630427 1.49441.6970012 2.640806.6970012 1.146397 0 2.026665-.2339585 2.640806-.6970012z"/></g><g fill="#fff" fill-rule="nonzero" transform="translate(1520.629778 141.651852)"><path d="m5.47365255 15.5387394v-13.14066544h-5.07689804v-1.43299542h11.85291919v1.43299542h-5.07689802v13.14066544z"/><path d="m21.1342453 10.3380383h-7.553933c.0136476 1.3111421.3173061 2.3005913.9109757 2.9683477.5936695.6677563 1.4568786 1.0040716 2.5896274 1.0040716 1.2009866 0 2.3064402-.4045531 3.3163608-1.2087853l.5527268 1.2087853c-.45037.4240497-1.02698.7554908-1.7298302 1.0040716-.7028501.2437067-1.4227597.3655601-2.1597288.3655601-1.6104139 0-2.8728146-.472791-3.7872021-1.418373-.9143876-.9504562-1.3715814-2.25185-1.3715814-3.9041814 0-1.04793885.2047137-1.97889846.6141409-2.79287884.4094273-.80910626.9826255-1.44274368 1.7195945-1.89116402.7369691-.45329446 1.576295-.67750463 2.5179777-.67750463 1.3647575 0 2.4360922.44842033 3.214004 1.34038686.7779118.89684067 1.1668677 2.12512245 1.1668677 3.69459363zm-6.4587151-3.27541805c-.5390792.52153234-.8836805 1.24777832-1.0338038 2.19336032h5.9981094c-.0818855-.96995267-.3650727-1.70594692-.8495616-2.21285686s-1.156632-.75549078-2.0164293-.75549078c-.8597972 0-1.5592354.25832911-2.0983147.77498732z"/><path d="m29.3842046 5.11784076-.0409427 1.51585569c-.3138943-.10723095-.675555-.16572056-1.0849823-.16572056-.996273 0-1.736654.31194458-2.2211429.93095961-.4844889.62388916-.7267334 1.37937994-.7267334 2.26647234v5.87333156h-1.6581804v-7.40868379c0-1.06743536-.0545903-2.02763977-.1637709-2.8903615h1.576295l.1637709 1.90578642c.2593039-.69700117.675555-1.22828178 1.2487531-1.59871597.5731982-.36556006 1.2282818-.55077715 1.9652509-.55077715.3411894 0 .6550836.03899307.9416827.12185335z"/><path d="m45.9045945 9.07076348v6.46797592h-1.6581804v-6.38511564c0-.96995268-.1671828-1.67182798-.5015484-2.11050005-.3343655-.43867206-.8768567-.65313396-1.6274733-.65313396-.8734448 0-1.5558236.29244804-2.0471363.87734413-.4913127.58977022-.7369691 1.38425407-.7369691 2.39807396v5.87333156h-1.6581804v-6.38511564c0-.95533028-.1705947-1.65720558-.5117841-2.10075178s-.8870924-.66288223-1.637709-.66288223c-.8734448 0-1.5592355.29244804-2.057372.87734413-.4981365.58977022-.7472047 1.38425407-.7472047 2.39807396v5.87333156h-1.6581805v-7.40868379c0-1.06743536-.0545903-2.02763977-.1637709-2.8903615h1.576295l.1637709 1.8034296c.2865991-.65313396.7130858-1.1600439 1.2794602-1.51585569s1.2248699-.53128061 1.9754865-.53128061c.8188545 0 1.4875857.16572056 2.0061936.49228754s.90074.83347692 1.1463963 1.51585569c.3138943-.61414089.7744999-1.1015543 1.381817-1.46711435.6073171-.36068592 1.2931078-.54102888 2.057372-.54102888 2.2791451 0 3.4187176 1.3598834 3.4187176 4.07477607z"/><path d="m62.9162972 9.31447018c.45037.59951849.675555 1.35988342.675555 2.27134652 0 1.2721489-.4298986 2.2713464-1.2896959 3.0024665-.8597972.726246-2.0266649 1.0918061-3.500603 1.0918061-.9416827 0-1.8458346-.1559723-2.7124556-.4679169-.8666211-.3168187-1.6001782-.7603649-2.2006716-1.3306386l.6550837-1.2916455c1.3511099 1.1210508 2.7568102 1.6815762 4.2171007 1.6815762 1.0372158 0 1.8253632-.2339584 2.3644425-.6970012.5390792-.4630427.8086188-1.1454215.8086188-2.0471363 0-1.78880715-1.1191012-2.68077369-3.3573035-2.68077369h-1.6786518v-1.41349887h1.35111c1.0781584 0 1.9038367-.23883257 2.4770349-.71649771s.8597972-1.1600439.8597972-2.0471363c0-.79448385-.2354206-1.39887648-.706262-1.82292614-.4708413-.42404966-1.1361606-.63363743-1.9959579-.63363743-1.3920527 0-2.7704578.56052542-4.1352153 1.67670212l-.6346123-1.28677139c.5868458-.56052542 1.3067554-.99919749 2.1597288-1.32089033.8529735-.32169285 1.7434778-.48253927 2.6715129-.48253927 1.3101672 0 2.3576186.33631525 3.1423542 1.00407161.7847356.66775637 1.1771034 1.56947117 1.1771034 2.70027027 0 .83347692-.2047136 1.56459703-.6141409 2.19336032-.4094272.62388916-.9758016 1.07718363-1.6991231 1.35013514.8597972.2437067 1.5148808.66775636 1.9652508 1.26727485z"/><path d="m66.396429 5.46877841h2.1085503v2.12512245h-2.1085503zm0 7.95946089h2.1085503v1.4963592c0 .5751478-.095533 1.0966801-.286599 1.5743453-.1910661.4776651-.5117841.945582-.9621541 1.3940023l-.7779118-.5946443c.5322554-.6141409.8325021-1.199037.90074-1.7595624h-.9826254z"/><path d="m76.2226832 15.5387394 1.1463963-14.57366086h3.214004l-.962154 11.97574736h6.5098934l-.2047136 2.5979135z"/><path d="m87.6661752 15.5387394.8188545-10.37703143h3.0911758l-.8188545 10.37703143zm1.0645108-15.25116549h3.3163608l-.225185 2.9049839h-3.3163608z"/><path d="m92.6611877 14.4323109 1.0030968-2.1494931c.5731982.3948049 1.1873391.7018753 1.8424227.9114631.6550836.2144619 1.3101672.3168187 1.9652508.3168187.5731982 0 .996273-.0828603 1.2692246-.2437067.2729515-.1657206.4094272-.3850566.4094272-.6580081 0-.2826998-.160359-.5117841-.481077-.6726305-.320718-.1657206-.8427378-.3558118-1.5660593-.5751478-.7506166-.2047136-1.3647575-.4094273-1.8424227-.6141409-.4776651-.2047136-.8905043-.5069099-1.2385174-.91146307-.3480132-.399679-.5220198-.92121134-.5220198-1.56459704 0-.66775636.1876542-1.25752658.5629625-1.75956239.3753083-.50690994.9075638-.9017148 1.5967663-1.18928871.6892026-.28757391 1.4773501-.4289238 2.3644424-.4289238.7779118 0 1.5387642.11697922 2.2825572.34606352.743793.23395844 1.368169.54590302 1.87313.94558201l-.982626 2.06663284c-.50496-.37043419-1.037216-.64825983-1.5967662-.83835106-.5595506-.19496536-1.1054536-.28757391-1.637709-.28757391-.5595506 0-.9826255.08286028-1.2692245.2437067-.2865991.16572056-.4298987.38993073-.4298987.67750464 0 .29732218.1705947.53615474.5117841.7164977.3411894.17546883.8597973.36068592 1.5558236.55077715.7506166.21933604 1.3613456.4289238 1.8321867.63363743.470842.20471359.880269.51178409 1.228282.91146309.348013.4045531.52202.9260855.52202 1.5694711 0 1.0235682-.406016 1.8229262-1.218046 2.4029481-.812031.580022-1.9072489.87247-3.285654.87247-1.7741848 0-3.3573036-.4240496-4.7493563-1.272149z"/><path d="m107.666697 11.5078305c-.040943.5702737.075062.9943234.348013 1.2672749.272952.2729515.64826.4094272 1.125925.4094272.313894 0 .661907-.0536155 1.044039-.1657205l-.204713 2.3980739c-.464018.1900913-1.064511.2875739-1.80148.2875739-1.173692 0-2.07102-.3168187-2.691984-.945582-.620965-.6238891-.931447-1.5109815-.931447-2.6612772 0-.2290843.006823-.4094272.020471-.5312806l.327542-4.09427259h-1.965251l.184242-2.31033954h1.965251l.184242-2.43706703 3.173062-1.00407162-.266128 3.44113865h2.640806l-.184243 2.31033954h-2.640805z"/><path d="m110.962586 14.4323109 1.003097-2.1494931c.573198.3948049 1.187339.7018753 1.842423.9114631.655083.2144619 1.310167.3168187 1.965251.3168187.573198 0 .996273-.0828603 1.269224-.2437067.272952-.1657206.409427-.3850566.409427-.6580081 0-.2826998-.160359-.5117841-.481077-.6726305-.320718-.1657206-.842737-.3558118-1.566059-.5751478-.750617-.2047136-1.364757-.4094273-1.842423-.6141409-.477665-.2047136-.890504-.5069099-1.238517-.91146307-.348013-.399679-.52202-.92121134-.52202-1.56459704 0-.66775636.187654-1.25752658.562963-1.75956239.375308-.50690994.907563-.9017148 1.596766-1.18928871s1.47735-.4289238 2.364442-.4289238c.777912 0 1.538765.11697922 2.282557.34606352.743793.23395844 1.36817.54590302 1.87313.94558201l-.982625 2.06663284c-.504961-.37043419-1.037216-.64825983-1.596767-.83835106-.55955-.19496536-1.105453-.28757391-1.637709-.28757391-.55955 0-.982625.08286028-1.269224.2437067-.286599.16572056-.429899.38993073-.429899.67750464 0 .29732218.170595.53615474.511784.7164977.34119.17546883.859798.36068592 1.555824.55077715.750616.21933604 1.361345.4289238 1.832187.63363743.470841.20471359.880268.51178409 1.228282.91146309.348013.4045531.522019.9260855.522019 1.5694711 0 1.0235682-.406015 1.8229262-1.218046 2.4029481-.81203.580022-1.907248.87247-3.285653.87247-1.774185 0-3.357304-.4240496-4.749357-1.272149z"/><path d="m137.964314 10.9716758v1.3940023h-2.210907v3.1730613h-1.678652v-3.1730613h-6.714607v-1.2672749l7.021678-10.13332466h1.371581v10.00659726zm-8.8641 0h4.974541v-7.1649771z"/><path d="m142.058587 13.4282393v1.4963592c0 .5751478-.095533 1.0966801-.286599 1.5743453-.191066.4776651-.511784.945582-.962154 1.3940023l-.777912-.5946443c.532255-.6141409.832502-1.199037.90074-1.7595624h-.982626v-2.1105001z"/><path d="m152.488746 6.9700117c.689203.38993073 1.22487.93583374 1.607002 1.63770904.382132.70674944.573198 1.50610746.573198 2.40782226s-.201301 1.7059469-.603905 2.4126963c-.402603.7116236-.958742 1.2672749-1.668416 1.671828-.709674.399679-1.514881.6043926-2.415621.6043926-1.760537 0-3.118471-.6141409-4.073801-1.8424226-.95533-1.2282818-1.432995-2.978096-1.432995-5.24456829 0-1.63770904.221773-3.04145965.665319-4.21612596.443546-1.1746663 1.084982-2.06663284 1.924308-2.68077373s1.845835-.92121133 3.019526-.92121133c.84615 0 1.668416.15597229 2.466799.472791.798383.31194458 1.497822.75549078 2.098315 1.3306386l-.634612 1.28677139c-.682379-.57027369-1.337463-.99432335-1.965251-1.26727486-.627789-.2729515-1.269225-.40942726-1.924308-.40942726-1.255577 0-2.231379.56052542-2.927405 1.67670212-.696026 1.12105083-1.04404 2.690522-1.04404 4.7084135v.30707044c.313895-.77498731.825679-1.3891282 1.535353-1.84242267.709674-.44842033 1.521704-.6726305 2.436092-.6726305.887092 0 1.67524.19496536 2.364442.58002195zm-.337777 6.4289828c.573198-.5946443.859797-1.3793799.859797-2.363955 0-.9699527-.290011-1.74981412-.870033-2.34445848-.580022-.59464435-1.33405-.89196653-2.262086-.89196653-.95533 0-1.733242.30219631-2.333735.9017148s-.90074 1.37937991-.90074 2.33471021c0 .9699527.300247 1.7546883.90074 2.3542068.600493.5995184 1.385229.9017148 2.354207.9017148.928035 0 1.678652-.2973222 2.25185-.8919666z"/><path d="m159.070289 13.4282393v1.4963592c0 .5751478-.095533 1.0966801-.286599 1.5743453-.191066.4776651-.511784.945582-.962154 1.3940023l-.777912-.5946443c.532256-.6141409.832503-1.199037.90074-1.7595624h-.982625v-2.1105001z"/><path d="m161.711095.96507854h9.621541v1.24777832l-6.837435 13.32588254h-1.80148l6.796492-13.16503611h-7.779118z"/><path d="m176.081992 13.4282393v1.4963592c0 .5751478-.095533 1.0966801-.286599 1.5743453-.191066.4776651-.511784.945582-.962154 1.3940023l-.777912-.5946443c.532256-.6141409.832502-1.199037.90074-1.7595624h-.982625v-2.1105001z"/><path d="m187.157 2.64178066c.95533 1.22828178 1.432995 2.97322177 1.432995 5.23969411 0 2.47118593-.494725 4.39159483-1.484174 5.76610063-.989449 1.3696316-2.371266 2.0568845-4.145451 2.0568845-.832502 0-1.647945-.1608464-2.446328-.472791s-1.504645-.7554908-2.118786-1.3306386l.655084-1.2916455c.696026.5897702 1.357934 1.0138199 1.985722 1.2818973.627788.2680773 1.262401.399679 1.903837.399679 1.255577 0 2.227966-.5605255 2.917169-1.6815763.689203-1.1161767 1.033804-2.68564786 1.033804-4.70841349v-.26320324c-.313894.76523904-.825679 1.36963167-1.535352 1.80830373-.709674.44842034-1.521705.6677564-2.436093.6677564-.887092 0-1.671828-.19496539-2.354206-.58489612-.682379-.38505659-1.214635-.93583374-1.596767-1.63770904-.382132-.70187531-.573198-1.50123329-.573198-2.40294809s.201302-1.70594692.603905-2.41757049c.402604-.70674944.958743-1.26727486 1.668416-1.66695385.709674-.40455313 1.514881-.60439262 2.415621-.60439262 1.760538 0 3.118471.61414089 4.073802 1.84242267zm-1.63771 5.15683383c.600494-.59951849.90074-1.3745058.90074-2.32983608 0-.96995268-.300246-1.75468826-.90074-2.35420675-.600493-.60439262-1.385228-.9017148-2.354206-.9017148-.928035 0-1.678652.29732218-2.25185.89196653-.573198.58977023-.859797 1.37937994-.859797 2.36395502 0 .96507855.286599 1.74981413.859797 2.34445848.573198.58977022 1.330638.8870924 2.272321.8870924.95533 0 1.733242-.29732218 2.333735-.9017148z"/></g><g transform="translate(1352.227084 194.213333)"><path d="m.035471.089728h42.916712v49.26713h-42.916712z" fill="#00a88a"/><path d="m42.9521838 49.3568579h-42.91671231v-49.26713035h42.91671231zm-40.37825665-46.72872807v44.19032577h37.83980095v-44.19032577z" fill="#000"/></g><path d="m16.4442443 13.0739279c1.490095.8410144 2.6336139 2.0140013 3.4302957 3.5187.7966819 1.5049595 1.1948925 3.2456638 1.1948925 5.2226344 0 1.9769707-.4352413 3.7325394-1.3057238 5.266967-.8702218 1.5344275-2.1097075 2.7220182-3.717675 3.5630326-1.6082282.8407536-3.4892319 1.2613912-5.643272 1.2613912-1.91777365 0-3.80607922-.3468369-5.66517747-1.0402501-1.85883748-.6934131-3.42273314-1.6449981-4.69142623-2.854755l1.37196183-2.7882562c2.92125384 2.4195138 5.91604755 3.6292706 8.98464187 3.6292706 2.2132371 0 3.9466395-.6269143 5.2007289-1.8810037 1.2538287-1.2540894 1.8810038-2.9580238 1.8810038-5.1120638 0-2.0948431-.6196125-3.7841738-1.8588375-5.0677313-1.2394857-1.2835575-2.8917857-1.9253363-4.9571607-1.9253363-3.00965814 0-5.41456823 1.2246213-7.2144695 3.6736032h-2.52278251v-18.45642023h18.89896331v3.00965815h-15.26969267v11.24221148c1.74096506-1.6820289 3.96880577-2.5230433 6.68326137-2.5230433 1.9769706 0 3.7103731.4206376 5.2004681 1.2613913z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(1362.630417 203.100332)"/><g transform="translate(1412.266122 194.392443)"><path d="m.035471.089728h42.916712v49.26713h-42.916712z" fill="#00a88a"/><path d="m42.9521838 49.3568579h-42.91671231v-49.26713035h42.91671231zm-40.37825665-46.72872807v44.19032577h37.83980095v-44.19032577z" fill="#000"/></g><path d="m21.062913 18.8183824c1.1359562 1.3719618 1.7039343 3.01696 1.7039343 4.9347336 0 2.6852483-1.017823 4.8022576-3.0537299 6.3512889-2.0361676 1.549292-4.7800913 2.3238076-8.2322925 2.3238076-3.45246205 0-6.19638571-.7745156-8.23229258-2.3238076-2.03616764-1.5490313-3.05399069-3.6660406-3.05399069-6.3512889 0-1.9177736.58258178-3.5700736 1.7482669-4.9568999 1.16542433-1.3868263 2.76608993-2.3459739 4.8019968-2.8769213-1.88830558-.5606763-3.33406805-1.4827932-4.33728744-2.7663507-1.00321938-1.2835575-1.50495946-2.795558-1.50495946-4.5365231 0-1.68176807.44280388-3.1499576 1.32789007-4.40378625.88508619-1.25408942 2.13187378-2.2278407 3.73984121-2.92125383 1.60822822-.69341314 3.44489942-1.03998932 5.51053519-1.03998932 2.0653749 0 3.9020461.34657618 5.5102744 1.03998932 1.6079674.69341313 2.854755 1.66716441 3.7398412 2.92125383.8853469 1.25382865 1.32789 2.72201818 1.32789 4.40378625 0 1.7409651-.5090419 3.2529656-1.5271257 4.5365231-1.017823 1.2835575-2.4414192 2.2056744-4.2710494 2.7663507 2.0656358.5606763 3.6663014 1.526865 4.8022576 2.8990876zm-14.64981941-5.8425077c1.25382864 1.0475519 2.94315933 1.6893307 5.06773131 1.9253363 2.1243111-.2360056 3.8136418-.8777844 5.0677313-1.9253363 1.2538286-1.0472911 1.8810037-2.4119511 1.8810037-4.09397999 0-1.74070429-.6123107-3.1129269-1.836932-4.11614628-1.2243605-1.00321938-2.9285556-1.50469868-5.111803-1.50469868-2.18350818 0-3.88770331.5014793-5.11206385 1.50469868-1.22462132 1.00321938-1.83693198 2.37544199-1.83693198 4.11614628 0 1.68202889.6271751 3.04668889 1.88126452 4.09397999zm10.77724131 14.9377202c1.3276293-1.0032194 1.9915743-2.4638463 1.9915743-4.38162 0-1.7409651-.7007149-3.1350932-2.1024056-4.1826451-1.40143-1.0475519-3.2678301-1.6893307-5.5986787-1.9253363-2.33110948.2360056-4.19750956.8777844-5.59893949 1.9253363-1.40169072 1.0475519-2.10240568 2.44168-2.10240568 4.1826451 0 1.9177737.66394503 3.3784006 1.9918351 4.38162 1.32762929 1.0032193 3.2307993 1.5049594 5.70951007 1.5049594 2.4784499 0 4.38162-.5017401 5.70951-1.5049594z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(1421.105194 202.753717)"/><g transform="translate(1503.787344 194.392443)"><path d="m.035471.089728h42.916712v49.26713h-42.916712z" fill="#00a88a"/><path d="m42.9521838 49.3568579h-42.91671231v-49.26713035h42.91671231zm-40.37816863-46.72872807v44.19032577h37.83971293v-44.19032577z" fill="#000"/></g><path d="m23.0372759 21.726858v3.0096582h-4.7800914v6.8603307h-3.6292706v-6.8603307h-14.51708254v-2.7441845l15.18102754-21.90862143h2.9653256v21.64314773zm-19.16443705 0h10.75507505v-15.4908338z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(1512.887196 203.275277)"/><g transform="translate(1565.163879 194.392443)"><path d="m.035471.089728h42.916712v49.26713h-42.916712z" fill="#00a88a"/><path d="m42.9521838 49.3568579h-42.91671231v-49.26713035h42.91671231zm-40.37816863-46.72872807v44.19032577h37.83971293v-44.19032577z" fill="#000"/></g><path d="m17.3989587 13.5954872c1.490095.8410144 2.6482175 2.0213032 3.4743675 3.5408663.82615 1.5195632 1.239225 3.2532264 1.239225 5.2004682 0 1.9475025-.4352413 3.6884676-1.3057238 5.2226344-.8702218 1.5344275-2.0726768 2.7368826-3.6071044 3.6073651-1.5341668.8702218-3.2751319 1.305463-5.2226344 1.305463-3.80634005 0-6.74219755-1.3276293-8.80757252-3.9834094-2.06563575-2.6555193-3.09832323-6.4323913-3.09832323-11.330355 0-3.5408663.47957381-6.5799926 1.43846065-9.11737874.95888684-2.53764695 2.34571311-4.47028507 4.16047882-5.79817514 1.81450493-1.32789007 3.99071125-1.99157432 6.52835818-1.99157432 1.8293694 0 3.6071044.33927435 5.333205 1.01782304 1.7261006.67880948 3.2383619 1.63769632 4.5365231 2.8769213l-1.3719618 2.78851699c-1.4752306-1.23948576-2.891525-2.15404006-4.2488832-2.74418445-1.3573581-.59014439-2.7441844-.88534697-4.1604788-.88534697-2.71445553 0-4.82416305 1.20975688-6.32912251 3.62953142-1.50469868 2.41951375-2.2573088 5.81251797-2.2573088 10.17953437v.663945c.67880947-1.6817681 1.7852976-3.0096582 3.31946439-3.9834094 1.53442756-.9737513 3.28999632-1.460627 5.26696692-1.460627 1.9180345 0 3.6219688.4206377 5.1120639 1.2613913zm-.7301831 13.8977308c1.239225-1.2835575 1.8588375-2.9874918 1.8588375-5.1120638 0-2.0948431-.6271751-3.7841737-1.8810038-5.0677313-1.2540894-1.2835575-2.8842231-1.9253363-4.8906619-1.9253363-2.06563572 0-3.7474038.6490806-5.04582577 1.9475026-1.29816118 1.2981612-1.94724178 2.98019-1.94724178 5.045565 0 2.0948431.6490806 3.7914756 1.94724178 5.0898976 1.29842197 1.2981612 2.99505449 1.9475025 5.08989757 1.9475025 2.0064388 0 3.6292706-.6417787 4.8687564-1.9253363z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(1574.52451 202.753717)"/><g transform="translate(1624.915924 194.392443)"><path d="m.035471.089728h42.916712v49.26713h-42.916712z" fill="#00a88a"/><path d="m42.9521838 49.3568579h-42.91671231v-49.26713035h42.91671231zm-40.37816863-46.72872807v44.19032577h37.83971293v-44.19032577z" fill="#000"/></g><path d="m.03650915.08371027h20.80213335v2.6998519l-14.78281705 28.81328473h-3.89474434l14.69415189-28.45914594h-16.81872385z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(1635.972745 203.629332)"/><g transform="translate(1684.951213 194.392443)"><path d="m.035471.089728h42.916712v49.26713h-42.916712z" fill="#00a88a"/><path d="m42.9521838 49.3568579h-42.91671231v-49.26713035h42.91671231zm-40.37825665-46.72872807v44.19032577h37.83980095v-44.19032577z" fill="#000"/></g><path d="m19.0538664 4.23480103c2.065375 2.65551935 3.0983233 6.43239127 3.0983233 11.33035497 0 5.3407676-1.0697182 9.4936838-3.2088939 12.4590094-2.1391756 2.9655864-5.1266674 4.4481188-8.96273635 4.4481188-1.79990127 0-3.56277183-.3392743-5.28887245-1.017823-1.72610062-.6788095-3.25322635-1.6376963-4.58085564-2.8769213l1.41629437-2.7882562c1.50469869 1.2686931 2.9358575 2.19081 4.29321568 2.7660899 1.35709739.57528 2.72932.8631807 4.11614627.8631807 2.71445552 0 4.81686122-1.2097569 6.30695622-3.6292706 1.4900951-2.4197745 2.2351426-5.8127788 2.2351426-10.1797951v-.5755408c-.6788095 1.6525608-1.7852976 2.9580238-3.3194644 3.9171714-1.5344276.9588869-3.2899963 1.4384607-5.26696696 1.4384607-1.91803446 0-3.61466698-.4206376-5.08989756-1.2613913-1.47523058-.8410144-2.62605125-2.0213032-3.45220124-3.5408663s-1.23922498-3.2532264-1.23922498-5.2004681c0-1.94750259.43524126-3.68846765 1.30546302-5.22263444.87048253-1.53442756 2.07293758-2.73688261 3.60736514-3.60736514 1.53416679-.87022175 3.27513185-1.30546302 5.22263438-1.30546302 3.8063401 0 6.7421976 1.32762929 8.8075725 3.98340943zm-3.5408663 11.15328557c1.298422-1.2981611 1.9475026-2.98019 1.9475026-5.045565 0-2.09484305-.6490806-3.79147556-1.9475026-5.08989753-1.2981612-1.29816119-2.9947937-1.94750256-5.0896368-1.94750256-2.00643874 0-3.62953139.64177876-4.86875638 1.92533629-1.23922498 1.28355752-1.85883747 2.98749187-1.85883747 5.1120638 0 2.0948431.61961249 3.7841738 1.85883747 5.0677313 1.23922499 1.2835575 2.8769213 1.9253363 4.91282818 1.9253363 2.0656357 0 3.7474038-.6490806 5.045565-1.9475026z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(1694.05523 202.753717)"/><path d="m274.413747 0v15.1195638-7.54515948h-274.07401986v7.54515948" stroke="#000" stroke-width="2.539424" transform="translate(1068.761162 109.742102)"/><path d="m0 .24858084h272.688304v7.55978192" stroke="#000" stroke-width="2.539424" transform="translate(1343.17491 117.053303)"/><path d="m90.8465476.12672749v8.60284661h-90.40348881v8.7441965" stroke="#000" stroke-width="2.539424" transform="translate(978.589682 177.005152)"/><path d="m1040.343498 185.807838v8.671084" stroke="#000" stroke-width="2.539424"/><path d="m.18765416.0292448h90.06863584v8.67108449" stroke="#000" stroke-width="2.539424" transform="translate(1069.248576 185.778593)"/><path d="m1100.026783 185.807838v8.671084" stroke="#000" stroke-width="2.539424"/><path d="m1314.628568 185.807838v8.671084" stroke="#000" stroke-width="2.539424"/><path d="m.27782564.0292448h88.64587606v8.67108449" stroke="#000" stroke-width="2.539424" transform="translate(1343.662323 185.778593)"/><path d="m1373.584633 185.807838v8.671084" stroke="#000" stroke-width="2.539424"/><path d="m90.3956902.12672749v8.67595862h-90.07887149v8.67108449" stroke="#000" stroke-width="2.539424" transform="translate(1525.467524 177.005152)"/><path d="m1586.145618 185.807838v8.671084" stroke="#000" stroke-width="2.539424"/><path d="m.22421017.0292448h90.27871103v8.67108449" stroke="#000" stroke-width="2.539424" transform="translate(1615.639004 185.778593)"/><path d="m1645.921998 185.807838v8.671084" stroke="#000" stroke-width="2.539424"/><g fill="#f2f2f2" fill-rule="nonzero" transform="translate(1263.581889 37.572233)"><path d="m7.95815261 22.540308v-20.02691984h-7.73636299v-2.18343345h18.06186388v2.18343345h-7.736363v20.02691984z"/><path d="m32.5082157 6.84954575v15.69076225h-2.495645v-2.8385659c-.4572278.9772392-1.1488702 1.7313239-2.0742447 2.2615717s-2.001566.7953717-3.2285744.7953717c-1.3935212 0-2.6154113-.3326845-3.6653293-.9980533-1.0502591-.6657101-1.8613267-1.6067805-2.4332026-2.8232112-.571876-1.2164307-.857814-2.6358843-.857814-4.2580194s.2910562-3.0518251.8731686-4.2894112c.5824537-1.2372448 1.3986395-2.1991293 2.4488986-2.88531225s2.2615716-1.02944503 3.6342787-1.02944503c1.2270084 0 2.2977405.27024212 3.2128785.81106756.9151381.54082545 1.6118987 1.29968715 2.0899406 2.27726753v-2.71402246zm-3.7431262 12.24381045c.8315404-1.0502592 1.2474812-2.5423915 1.2474812-4.4763969 0-1.9340055-.4159408-3.4210195-1.2474812-4.460701-.8318817-1.04002268-2.0172619-1.55969281-3.5564818-1.55969281-1.5388787 0-2.7396136.53536601-3.602887 1.60643921-.8629322 1.0710733-1.294569 2.5632056-1.294569 4.4763969s.4265185 3.3896277 1.2788731 4.4296504c.8526958 1.0396815 2.0588901 1.5596929 3.6185829 1.5596929 1.5392199 0 2.7246001-.5251296 3.5564818-1.5753887z"/><path d="m44.8301643 14.4610241 6.4571488 8.0792839h-3.0258928l-4.9598983-6.176329-4.8974559 6.176329h-3.0883351l6.5195911-8.0792839-6.1452784-7.61147835h3.0572845l4.5541938 5.77096575 4.5545351-5.77096575h3.0879939z"/><path d="m56.3720959 21.7606322c-1.1229379-.6657101-1.9913295-1.6118987-2.6048337-2.8389071s-.9202563-2.6618166-.9202563-4.3047658.3067521-3.0777574.9202563-4.3047658c.6135042-1.22700843 1.4818958-2.17319705 2.6048337-2.83890711 1.1229379-.66536885 2.422625-.99805327 3.8994026-.99805327 1.4764365 0 2.7761236.33268442 3.8990615.99805327 1.1232791.66571006 1.9913295 1.61189868 2.6048337 2.83890711.6135042 1.2270084.9202563 2.6618166.9202563 4.3047658s-.3067521 3.0777574-.9202563 4.3047658-1.4815546 2.173197-2.6048337 2.8389071c-1.1229379.6653688-2.422625.9980533-3.8990615.9980533-1.4767776 0-2.7764647-.3326845-3.8994026-.9980533zm7.4865938-2.6358843c.8318816-1.029445 1.2478225-2.532155 1.2478225-4.5077886 0-1.9131914-.4261773-3.3950872-1.2788731-4.4453463-.8526957-1.04991795-2.0380759-1.57504751-3.5561406-1.57504751-1.5388787 0-2.7348365.52512956-3.5875323 1.57504751-.8526957 1.0502591-1.278873 2.5321549-1.278873 4.4453463 0 1.9756336.421059 3.4783436 1.2631771 4.5077886.8424594 1.0291038 2.0435354 1.543997 3.6032282 1.543997 1.5596929 0 2.7553095-.5148932 3.5871912-1.543997z"/><path d="m85.1023814 12.6829538v9.8573542h-2.5270367v-9.7324695c0-1.4559636-.2910562-2.5215774-.8731687-3.19752386-.5824536-.67594651-1.4975917-1.01374915-2.7454142-1.01374915-1.4556223 0-2.6201884.44699138-3.4936983 1.34131535-.8735098.89432396-1.3102648 2.10051826-1.3102648 3.61858286v8.9838443h-2.5266955v-11.2925036c0-1.62179388-.0832564-3.08799385-.249428-4.39825865h2.4018109l.2497692 2.80751531c.4783832-1.01886737 1.1956167-1.80400261 2.152383-2.3550645.956425-.55106189 2.0483124-.82676344 3.2753208-.82676344 3.7642815 0 5.6464223 2.0691265 5.6464223 6.20772068z"/><path d="m92.4640906 21.7606322c-1.1229379-.6657101-1.9913295-1.6118987-2.6048337-2.8389071s-.9202563-2.6618166-.9202563-4.3047658.3067521-3.0777574.9202563-4.3047658c.6135042-1.22700843 1.4818958-2.17319705 2.6048337-2.83890711 1.1229379-.66536885 2.4229662-.99805327 3.8994026-.99805327 1.4764365 0 2.7761236.33268442 3.8994028.99805327 1.122938.66571006 1.990988 1.61189868 2.604492 2.83890711.613505 1.2270084.920257 2.6618166.920257 4.3047658s-.306752 3.0777574-.920257 4.3047658c-.613504 1.2270084-1.481554 2.173197-2.604492 2.8389071-1.1232792.6653688-2.4229663.9980533-3.8994028.9980533-1.4764364 0-2.7764647-.3326845-3.8994026-.9980533zm7.4865938-2.6358843c.8318816-1.029445 1.2478226-2.532155 1.2478226-4.5077886 0-1.9131914-.426177-3.3950872-1.2788732-4.4453463-.8526958-1.04991795-2.0380759-1.57504751-3.5561406-1.57504751-1.5388787 0-2.7348365.52512956-3.5875323 1.57504751-.8526958 1.0502591-1.278873 2.5321549-1.278873 4.4453463 0 1.9756336.421059 3.4783436 1.2635183 4.5077886.8421182 1.0291038 2.0431942 1.543997 3.602887 1.543997 1.5596929 0 2.7553095-.5148932 3.5871912-1.543997z"/><path d="m130.334156 12.6829538v9.8573542h-2.526696v-9.7324695c0-1.4767777-.254546-2.5478509-.764321-3.21321974-.509434-.66536885-1.336197-.99805327-2.479949-.99805327-1.330738 0-2.370761.44699138-3.119386 1.34131535-.748625.89432396-1.122938 2.11075466-1.122938 3.64963346v8.9527937h-2.526695v-9.7324695c0-1.4559636-.260006-2.5215774-.780017-3.19752386-.520012-.67594651-1.351552-1.01374915-2.495645-1.01374915-1.330738 0-2.375879.44699138-3.135082 1.34131535-.758861.89432396-1.138292 2.11075466-1.138292 3.64963346v8.9527937h-2.527037v-11.2925036c0-1.62179388-.082915-3.08799385-.249428-4.39825865h2.402152l.249428 2.74507301c.436755-.99805327 1.086428-1.76749263 1.949701-2.30831808.862933-.54082544 1.866445-.81106756 3.010197-.81106756 1.247823 0 2.26669.24942801 3.056944.74862526.790253.49919724 1.372707 1.26863659 1.747019 2.30831807.478383-.93561096 1.180262-1.679118 2.105637-2.23017989.925374-.55106189 1.970515-.82676344 3.135081-.82676344 3.472884 0 5.209327 2.0691265 5.209327 6.20772068z"/><path d="m148.926608 6.84954575-7.330999 17.12591165c-.76944 1.7883067-1.736784 3.0985715-2.90135 3.9304532s-2.599374 1.4037577-4.304766 1.715628l-.530247-1.9653972c1.476436-.3326844 2.594256-.7745576 3.353459-1.3256195.758861-.5510619 1.388061-1.3986394 1.887259-2.5423914l.62374-1.4037577-6.644475-15.53482705h2.65158l5.30316 12.94568925 5.364238-12.94568925z"/></g><g fill="#f2f2f2" fill-rule="nonzero" transform="translate(1242.021555 73.436333)"><path d="m.1061178 18.7869453 1.3955685-17.74521654h3.91271003l-1.17104917 14.58010814h7.92539604l-.2490868 3.1651084z"/><path d="m14.0379178 18.7869453.9970296-12.63586623h3.763258l-.9970297 12.63586623zm1.2959338-18.56754419h4.0375946l-.2739955 3.53907983h-4.0375946z"/><path d="m20.1190478 17.4411941 1.2212078-2.6167762c.6981254.4817953 1.445727.8513309 2.243146 1.1089481.7977602.2576171 1.5951792.3862551 2.3925981.3862551.6977843 0 1.2130186-.0996347 1.5453618-.2989042.3323432-.1996106.4985148-.4654169.4985148-.7977601 0-.3487216-.1951748-.6230583-.5858658-.8223277-.3903497-.1996106-1.0260328-.4319779-1.906367-.6977842-.9141144-.2494281-1.661716-.4985149-2.243146-.7479429-.5817713-.2490868-1.0843807-.6189636-1.5078282-1.108948-.4237888-.4903257-.6356832-1.1256676-.6356832-1.9067083 0-.8141385.2286139-1.52864228.6855005-2.14317012.4568867-.61486905 1.1048535-1.09666434 1.9439007-1.44572707.8390472-.34872152 1.7985432-.5234235 2.878488-.5234235.9472123 0 1.8736104.14126293 2.7791945.42378878.9052428.28252585 1.6654694.66468641 2.2803385 1.1464817l-1.1962991 2.51714153c-.6148691-.44869746-1.262836-.78922982-1.9439007-1.02193831-.6814059-.23236727-1.3460923-.34872152-1.9940592-.34872152-.6810648 0-1.1962991.09963472-1.5450206.29890416-.3490627.19961066-.5234235.47360613-.5234235.82266887 0 .36544108.2074586.65615608.6230582.87214498.4152584.215989 1.046847.4405083 1.8940833.6728756.9137732.2661475 1.6572803.5234235 2.2305211.7728515.5732409.2490868 1.0717557.6189636 1.4955445 1.1089481.4237887.4903256.6353419 1.1256676.6353419 1.9067082 0 1.2461165-.494079 2.222332-1.4829195 2.9283054-.9884992.7063146-2.3219667 1.0594719-4.000061 1.0594719-2.1598896 0-4.087412-.5152343-5.7822259-1.5453618z"/><path d="m38.3876878 13.8772056c-.0498173.6977843.0914456 1.2130186.4237888 1.5453618.3323432.332002.7892298.4981736 1.3706598.4981736.3821606 0 .8059494-.0661957 1.2710251-.1992694l-.2490868 2.9160216c-.5650517.2327085-1.2959338.3490627-2.1933287.3490627-1.4286663 0-2.5212361-.3821605-3.2773681-1.1464817-.7557907-.7643211-1.1338567-1.8442659-1.1338567-3.2401757 0-.2825258.0081891-.4985148.0249087-.6479668l.3988801-4.98446573h-2.3925982l.2241782-2.8163869h2.3925981l.2241781-2.96583898 3.8632339-1.22120774-.3241541 4.18704672h3.215267l-.2245193 2.8163869h-3.2149258z"/><path d="m42.4003738 17.4411941 1.2212077-2.6167762c.6977843.4817953 1.4457271.8513309 2.2431461 1.1089481.7974189.2576171 1.5951791.3862551 2.3925981.3862551.6977842 0 1.2130186-.0996347 1.5453618-.2989042.332002-.1996106.4981736-.4654169.4981736-.7977601 0-.3487216-.1951749-.6230583-.5855246-.8223277-.3903497-.1996106-1.0260329-.4319779-1.9067083-.6977842-.9137732-.2494281-1.6613748-.4985149-2.243146-.7479429-.58143-.2490868-1.0840394-.6189636-1.5078282-1.108948-.4234475-.4903257-.6353419-1.1256676-.6353419-1.9067083 0-.8141385.2282727-1.52864228.6851593-2.14317012.4572278-.61486905 1.1051947-1.09666434 1.9442419-1.44572707.8390472-.34872152 1.7985432-.5234235 2.878488-.5234235.9472122 0 1.8732692.14126293 2.7788532.42378878.9055841.28252585 1.6658107.66468641 2.2806797 1.1464817l-1.196299 2.51714153c-.6148691-.44869746-1.262836-.78922982-1.9442419-1.02193831-.6810648-.23236727-1.3457512-.34872152-1.9937181-.34872152-.6814059 0-1.196299.09963472-1.5453618.29890416-.3487215.19961066-.5234235.47360613-.5234235.82266887 0 .36544108.2077999.65615608.6233995.87214498.4152584.215989 1.0465057.4405083 1.8940833.6728756.9137732.2661475 1.6572802.5234235 2.2305211.7728515.5732408.2490868 1.0717556.6189636 1.4955444 1.1089481.4234476.4903256.635342 1.1256676.635342 1.9067082 0 1.2461165-.4944203 2.222332-1.4829195 2.9283054-.9884993.7063146-2.3219667 1.0594719-4.000061 1.0594719-2.1598897 0-4.087412-.5152343-5.7822259-1.5453618z"/><path d="m67.62263 18.7869453v-16.0005853h-6.1811059v-1.74463124h14.430656v1.74463124h-6.181106v16.0005853z"/><path d="m86.688689 12.4567284h-9.1967623c.0167195 1.594838.3865964 2.7996674 1.1092893 3.6138059s1.7736345 1.2212077 3.1528247 1.2212077c1.4621054 0 2.8078565-.4903256 4.0372534-1.4706357l.6732168 1.4706357c-.5483322.5148932-1.2505522.9219624-2.1059777 1.2212078-.8557667.2989041-1.7323475.4486974-2.6294012.4486974-1.9606202 0-3.4977928-.5776766-4.6108355-1.7323475-1.1133839-1.1546708-1.6699052-2.737225-1.6699052-4.7476626 0-1.2795555.2490868-2.4134122.7476016-3.40225268.4985148-.98849926 1.1962991-1.75691497 2.093694-2.30524714.8970537-.54833217 1.918992-.82232765 3.0654737-.82232765 1.6613748 0 2.965839.54389638 3.9130512 1.63237157.9468711 1.08813397 1.4204772 2.587773 1.4204772 4.4985758zm-7.8632949-3.98777725c-.656156.63124737-1.0758502 1.52011191-1.2584001 2.66659365h7.3023377c-.0996347-1.17957958-.4446028-2.07697448-1.034222-2.69150233-.5899604-.61486905-1.4081934-.92230358-2.4550404-.92230358s-1.8981779.31562368-2.5546752.94721226z"/><path d="m96.7326876 6.10126171-.0498173 1.84426595c-.3821606-.13307377-.8226689-.19926944-1.3208425-.19926944-1.2130186 0-2.114508.37772478-2.7041272 1.13385676-.5899604.75613198-.88477 1.67399982-.88477 2.75394462v7.1528857h-2.0189679v-9.02206036c0-1.29593379-.0665369-2.46732417-.1992694-3.51417115h1.918992l.1992694 2.31787208c.3159649-.84723633.8226689-1.49554443 1.5204531-1.94390067.6977843-.44869745 1.4955445-.67287557 2.3925981-.67287557.4152584 0 .797419.04981736 1.1464817.14945208z"/><path d="m116.845594 10.9113666v7.8755787h-2.018627v-7.7759439c0-1.17957958-.203705-2.03534628-.610775-2.56695893-.407069-.53161264-1.067661-.79776018-1.981434-.79776018-1.063225 0-1.894083.35725189-2.492233 1.07175566-.598149.71450378-.897395 1.68662475-.897395 2.91602165v7.1528857h-2.018626v-7.7759439c0-1.16320127-.2078-2.01453218-.623059-2.55467519-.415258-.53980181-1.079944-.81004392-1.993718-.81004392-1.063566 0-1.898519.35725189-2.504857 1.07175566-.606339.71450378-.909679 1.68662475-.909679 2.91602165v7.1528857h-2.018968v-9.02206036c0-1.29593379-.0661956-2.46732417-.1992694-3.51417115h1.9189924l.19961 2.19332868c.348722-.79776018.868051-1.41228802 1.557646-1.84426595s1.491108-.64796689 2.404882-.64796689c.997029 0 1.811168.19926944 2.442415.59814953.631589.39853888 1.096664 1.01340793 1.39591 1.84426595.38216-.74794282.942776-1.34165656 1.682189-1.78216486.739412-.44016708 1.574365-.66025062 2.504858-.66025062 2.774758 0 4.162138 1.65318567 4.162138 4.95955697z"/><path d="m119.911067 17.3415594.672876-1.4955444c.681406.5316126 1.371001.9137732 2.068785 1.1464817s1.478825.3490627 2.342781.3490627c.946871 0 1.665469-.162077 2.155795-.4862311.489984-.3238128.735318-.7933244.735318-1.4078522 0-.4985148-.166172-.8973949-.498515-1.1962991-.332343-.2992453-.880675-.5319538-1.644996-.6981254l-2.118603-.4981736c-1.046506-.2327085-1.85655-.6483081-2.429791-1.2464577-.573241-.5981495-.859861-1.3123121-.859861-2.14317008 0-1.09666435.440167-1.98962346 1.320843-2.67921855.880675-.6895951 2.043876-1.03422204 3.489262-1.03422204.880675 0 1.711533.14092171 2.492233.42344756.781041.28252584 1.437197.68959509 1.96915 1.22120774l-.673216 1.47063576c-1.17958-.9803101-2.442416-1.47063576-3.788167-1.47063576-.897054 0-1.591085.17026618-2.081069.51113976-.489984.34053236-.735318.81823307-.735318 1.43310213 0 .51489308.153888.92196238.461323 1.22120778.307093.2989041.801513.5316126 1.482919.6977842l2.118261.5234235c1.163202.2658063 2.027158.6769702 2.592209 1.2334915.564711.5568625.847237 1.28365.847237 2.1807037 0 1.0802861-.440168 1.9442419-1.320843 2.5922088s-2.076974.9721209-3.588897.9721209c-2.110414 0-3.779978-.540143-5.009716-1.6200878z"/><path d="m146.77832 17.0672227h3.91271v1.7197226h-9.894546v-1.7197226h3.913051v-13.48310252l-3.638715 2.31753087v-1.96880935l4.53611-2.89111294h1.17139z"/><path d="m156.722343 16.2199864v1.8193573c0 .6977842-.116013 1.3375619-.348722 1.918992-.232708.5817712-.623058 1.1464817-1.17139 1.6948138l-.947212-.7226929c.647967-.7476016 1.013749-1.4621054 1.096664-2.1435113h-1.196299v-2.5669589z"/><path d="m171.801648 17.0672227v1.7197226h-11.415341v-1.5450206l6.204991-6.8788902c.832564-.93049277 1.436515-1.76953995 1.818675-2.51714156.382161-.74794282.573241-1.49554443.573241-2.24314604 0-.9803101-.279796-1.73200629-.846213-2.25542978-.563004-.5234235-1.371683-.78513524-2.4158-.78513524-1.696179 0-3.374274.68106472-5.03599 2.04353539l-.77251-1.56992926c.697784-.66468642 1.57846-1.19629906 2.641685-1.59517916 1.063567-.39888009 2.136346-.59814953 3.214585-.59814953 1.627594 0 2.917386.41935298 3.862551 1.25874137.948577.83904718 1.422866 1.97290393 1.422866 3.40191149 0 1.01340793-.228614 1.98962345-.685842 2.92830535-.457228.93868189-1.218137 1.98962347-2.279315 3.15282467l-5.061239 5.4829805z"/><path d="m177.435104 16.2199864v1.8193573c0 .6977842-.119425 1.3375619-.351451 1.918992-.232026.5817712-.621011 1.1464817-1.170367 1.6948138l-.948577-.7226929c.648308-.7476016 1.01682-1.4621054 1.098712-2.1435113h-1.197664v-2.5669589z"/><path d="m191.339607 11.2102708c.549356.7312233.822328 1.6535269.822328 2.7665695 0 1.5453618-.522059 2.762475-1.569588 3.6513395-1.04753.8888646-2.466983 1.3334674-4.261773 1.3334674-1.146482 0-2.245193-.1910802-3.302959-.5732408-1.054354-.3821606-1.948337-.9223036-2.678536-1.6200878l.798442-1.5702705c1.644656 1.3624706 3.354142 2.0438766 5.131871 2.0438766 1.265907 0 2.22472-.2825259 2.879853-.8475776.658544-.5647104.98611-1.3955685.98611-2.4922328 0-2.1766092-1.364859-3.2650844-4.087753-3.2650844h-2.043876v-1.71938129h1.644655c1.313677 0 2.316848-.29105622 3.016339-.87248623.696078-.58143001 1.047529-1.41228803 1.047529-2.49223284 0-.96359058-.290033-1.70300303-.859861-2.21823737-.573241-.51489312-1.385332-.77251029-2.432862-.77251029-1.692425 0-3.371202.68106472-5.032918 2.04353539l-.771145-1.56992926c.713139-.68140594 1.590061-1.21711317 2.627354-1.6078041 1.037293-.39034973 2.122356-.58552459 3.251777-.58552459 1.596885 0 2.873028.40706925 3.82843 1.22120775.955401.81413849 1.433102 1.91080284 1.433102 3.28999303 0 1.01340793-.252499 1.90227247-.750673 2.6665936-.498174.76432114-1.187427 1.31265331-2.067762 1.64499652 1.04753.29890416 1.845972.81413848 2.391916 1.54502058z"/></g><g transform="translate(1238.737766 301.42884)"><path d="m.162355.124952h196.432387v68.608179h-196.432387z" fill="#0083c0"/><path d="m196.594742 68.7331309h-196.43238687v-68.60817855h196.43238687zm-193.8939261-66.06958614v63.53099374h191.3558681v-63.53099374z" fill="#000"/></g><g fill="#f2f2f2" fill-rule="nonzero" transform="translate(1249.006069 345.842567)"><path d="m.56874621 14.4291604 1.02879531-13.08192845h2.88430112l-.8634532 10.74723665h5.84208763l-.18371345 2.3346918z"/><path d="m10.8383279 14.4291604.7348538-9.31580278h2.7740731l-.7348538 9.31580278zm.95531-13.68665188h2.9761578l-.2020848 2.6102619h-2.9761578z"/><path d="m15.320936 13.4340458.9001959-1.9289912c.5143977.3597722 1.065538.6276877 1.6534211.8190558.587883.1913682 1.175766.2832249 1.7636491.2832249.5143976 0 .8940721-.0688925 1.1390233-.2143323.2449513-.1530946.3674269-.3444627.3674269-.589414 0-.2602607-.1439088-.4592836-.4317266-.6047234-.2878177-.1530946-.756287-.3214986-1.4054078-.5205215-.673616-.1837134-1.2247564-.3674269-1.6534211-.5511403-.4286647-.18371346-.7991535-.4516289-1.1114663-.81140107-.3123129-.36742689-.4684693-.83436524-.4684693-1.40846976 0-.59706871.168404-1.12524487.505212-1.57687376.3368079-.45928362.8144629-.81140106 1.4329648-1.07166178.618502-.25260599 1.3257988-.38273635 2.1218904-.38273635.6981111 0 1.3809127.10716618 2.0484049.31384381s1.2278182.48990253 1.6809781.84201997l-.8818246 1.86009865c-.4531598-.33680798-.9308148-.58175925-1.4329649-.75781797-.5021501-.16840399-.9920526-.25260599-1.4697076-.25260599-.5021501 0-.8818245.06889254-1.1390233.21433236-.2571989.15309454-.3857983.35211744-.3857983.61237816 0 .26791544.1530946.4822478.4592836.64299706.3061891.15309454.7715965.32149853 1.3962222.48990253.673616.1990229 1.2216945.39039107 1.6442354.57410452s.7899678.45162889 1.1022807.81905582c.3123128.3597721.4684693.8267105.4684693 1.400815 0 .9185672-.364365 1.6381116-1.093095 2.158633-.7287301.5205214-1.711597.7807822-2.9486009.7807822-1.5921832 0-3.0129005-.3750817-4.262152-1.1405544z"/><path d="m28.7871317 10.8084745c-.0367426.5128667.0673616.895603.3123129 1.1405543s.5817593.3674269 1.010424.3674269c.2816939 0 .5940068-.0459284.9369385-.1454398l-.1837134 2.1509783c-.4164171.168404-.9553099.252606-1.6166783.252606-1.0532905 0-1.8585677-.2832249-2.4158319-.84202-.5572641-.5664498-.8358962-1.3625414-.8358962-2.3882748 0-.2066776.0061238-.3674269.0183714-.4822478l.2939415-3.67426897h-1.7636491l.1653421-2.07443101h1.7636491l.1653421-2.18159719 2.8475584-.90325778-.2388274 3.08485497h2.3699034l-.1653421 2.07443101h-2.3699034z"/><path d="m31.7449182 13.4340458.9001959-1.9289912c.5143977.3597722 1.065538.6276877 1.6534211.8190558.587883.1913682 1.175766.2832249 1.7636491.2832249.5143976 0 .8940721-.0688925 1.1390233-.2143323.2449513-.1530946.3674269-.3444627.3674269-.589414 0-.2602607-.1439088-.4592836-.4317266-.6047234-.2878177-.1530946-.756287-.3214986-1.4054078-.5205215-.673616-.1837134-1.2247564-.3674269-1.6534211-.5511403-.4286647-.18371346-.7991535-.4516289-1.1114663-.81140107-.3123129-.36742689-.4684693-.83436524-.4684693-1.40846976 0-.59706871.168404-1.12524487.505212-1.57687376.3368079-.45928362.8144629-.81140106 1.4329649-1.07166178.6185019-.25260599 1.3257987-.38273635 2.1218903-.38273635.6981111 0 1.3809127.10716618 2.0484049.31384381s1.2278182.48990253 1.6809781.84201997l-.8818246 1.86009865c-.4531598-.33680798-.9308148-.58175925-1.4329649-.75781797-.5021501-.16840399-.9920526-.25260599-1.4697076-.25260599-.5021501 0-.8818245.06889254-1.1390233.21433236-.2571989.15309454-.3857983.35211744-.3857983.61237816 0 .26791544.1530946.4822478.4592836.64299706.3061891.15309454.7715965.32149853 1.3962222.48990253.673616.1990229 1.2216945.39039107 1.6442354.57410452s.7899678.45162889 1.1022807.81905582c.3123128.3597721.4684693.8267105.4684693 1.400815 0 .9185672-.364365 1.6381116-1.093095 2.158633-.7287301.5205214-1.711597.7807822-2.9486009.7807822-1.5921832 0-3.0129005-.3750817-4.262152-1.1405544z"/><path d="m52.3208244 13.1584757h2.8843011v1.2706847h-7.2934239v-1.2706847h2.8843011v-9.93583564l-2.6822163 1.70700411v-1.4467434l3.3435848-2.13566882h.8634532z"/><path d="m59.6509909 12.5384428v1.3395772c0 .5128667-.0857329.9874598-.2571988 1.4161245s-.4592836.84202-.8634532 1.2477205l-.6981111-.5358309c.4776549-.5511403.7471013-1.0716618.8083392-1.5768737h-.8818246v-1.8907176z"/><path d="m70.7656545 13.1584757v1.2706847h-8.4140759v-1.1405544l4.5744648-5.06742923c.6123782-.68892542 1.0594142-1.30895831 1.3411082-1.86009865.2816939-.55114034.4225409-1.10228069.4225409-1.65342103 0-.71954434-.2082085-1.27068468-.6246257-1.66107575-.4164171-.38273635-1.010424-.57410453-1.7820204-.57410453-1.2492515 0-2.4862554.49755726-3.7110117 1.50032649l-.5695117-1.15586377c.5143977-.48990253 1.1635185-.8802936 1.9473626-1.17117323.783844-.29853435 1.5738118-.44397416 2.3699035-.44397416 1.2002611 0 2.1494473.30618907 2.8475584.92622196.6981111.62003288 1.0471666 1.45439813 1.0471666 2.51075045 0 .74250851-.168404 1.46205285-.5052119 2.15863301-.336808.68892542-.897134 1.46205285-1.6809781 2.31938227l-3.729383 4.04169587z"/><path d="m74.9175784 12.5384428v1.3395772c0 .5128667-.0857329.9874598-.2571988 1.4161245s-.4592837.84202-.8634532 1.2477205l-.6981111-.5358309c.4776549-.5511403.7471013-1.0716618.8083391-1.5768737h-.8818245v-1.8907176z"/><path d="m85.1687888 8.84120966c.4041695.54348561.6062543 1.22475634.6062543 2.04381214 0 1.1405543-.3857982 2.0361573-1.1573947 2.6868091-.7715965.6583065-1.8187631.9874598-3.1414999.9874598-.8450819 0-1.6564829-.1454398-2.4342032-.42101-.7777203-.2832249-1.4360268-.6812707-1.9749196-1.1941374l.5878831-1.1635185c1.2125087 1.010424 2.4740077 1.5079812 3.784497 1.5079812.9308148 0 1.6381116-.2066776 2.1218903-.6200329.4837787-.4210099.7256681-1.0333881.7256681-1.8371344 0-1.60749269-1.0043002-2.41123903-3.0129005-2.41123903h-1.5064503v-1.26302995h1.2125088c.9675574 0 1.708535-.21433235 2.2229327-.64299706.5143976-.42866471.7715965-1.04104287.7715965-1.83713448 0-.71188961-.2112705-1.25537522-.6338114-1.63811157-.422541-.38273635-1.0196097-.5664498-1.7912062-.5664498-1.2492514 0-2.4862553.49755726-3.7110116 1.50032649l-.5695117-1.15586377c.5266452-.49755726 1.1727042-.89560306 1.9381769-1.18648268.7654727-.2832249 1.5646262-.42866471 2.3974605-.42866471 1.175766 0 2.1157665.29853435 2.8200014.90325778.7042349.5970687 1.0563523 1.40846976 1.0563523 2.41889372 0 .75016325-.1837134 1.40846977-.5511403 1.96726484-.3674269.56644979-.8757008.97215032-1.5248216 1.21710159.7715964.21433235 1.3594795.5970687 1.7636491 1.13289959z"/><path d="m90.1841659 12.5384428v1.3395772c0 .5128667-.085733.9874598-.2571988 1.4161245-.1714659.4286647-.4592837.84202-.8634533 1.2477205l-.6981111-.5358309c.477655-.5511403.7471014-1.0716618.8083392-1.5768737h-.8818245v-1.8907176z"/><path d="m101.776484 10.3338814v1.2477205h-1.9841048v2.8475585h-1.5064503v-2.8475585h-6.0258011v-1.1405543l6.3013713-9.09381565h1.2308801v8.98664945zm-7.9547919 0h4.4642368v-6.42997064z"/><path d="m105.450753 12.5384428v1.3395772c0 .5128667-.085733.9874598-.257198 1.4161245-.171466.4286647-.459284.84202-.863454 1.2477205l-.698111-.5358309c.477655-.5511403.747102-1.0716618.808339-1.5768737h-.881824v-1.8907176z"/><path d="m114.847696 6.74381447c.618502.34446271 1.093095.83436524 1.423779 1.45439812.330685.62768761.496027 1.34723195.496027 2.17394251 0 .8190557-.180652 1.5462548-.541955 2.1815971-.361303.6353424-.875701 1.1328996-1.543193 1.4773623-.667492.3521175-1.448274.5281762-2.342346.5281762-.796092 0-1.579936-.1454398-2.351532-.4363194-.771597-.2832249-1.420718-.6812707-1.947363-1.178828l.569512-1.1635185c1.212508 1.010424 2.455636 1.5079812 3.729383 1.5079812.918567 0 1.638111-.2602607 2.158633-.7807821.520521-.5205215.780782-1.2247563.780782-2.1203594 0-.87263887-.257199-1.56921902-.771597-2.10504991-.514397-.52817616-1.200261-.79609161-2.05759-.79609161-1.249252 0-2.247428.50521198-2.994529 1.52329067h-1.047167v-7.6623817h7.844564v1.2477205h-6.338114v4.66938345c.722606-.69658015 1.647297-1.04869759 2.774073-1.04869759.820587 0 1.540131.17605872 2.158633.52817616z"/><path d="m120.717341 12.5384428v1.3395772c0 .5128667-.085733.9874598-.257199 1.4161245s-.459284.84202-.863453 1.2477205l-.698111-.5358309c.477655-.5511403.747101-1.0716618.808339-1.5768737h-.881825v-1.8907176z"/><path d="m130.077541 6.74381447c.618502.34446271 1.099219.83436524 1.442151 1.46970758.342931.62768761.514397 1.34723194.514397 2.15863305 0 .8037463-.180651 1.5309453-.541954 2.1662877-.361304.6353423-.860392 1.1328996-1.497265 1.4926717-.636873.3674269-1.35948.5434857-2.167819.5434857-1.579935 0-2.798568-.5511404-3.655897-1.6534211-.85733-1.1022806-1.285994-2.6714997-1.285994-4.70000233 0-1.46970758.199022-2.73273753.597068-3.78908985.398046-1.0486976.973681-1.85244393 1.726907-2.40358427.753225-.55114034 1.656483-.82671051 2.709773-.82671051.759349 0 1.497265.13778508 2.213747.42100998s1.34417.6812707 1.883063 1.19413741l-.569512 1.15586377c-.612378-.51286671-1.200261-.88794833-1.763649-1.13289959s-1.139023-.3674269-1.726906-.3674269c-1.126776 0-2.002477.49755726-2.627103 1.50032649-.624625 1.01042396-.936938 2.41889373-.936938 4.22540929v.27557017c.281694-.69658015.740977-1.24772049 1.377851-1.65342102.636873-.39804581 1.365603-.60472343 2.18619-.60472343.796091 0 1.503388.17605872 2.12189.52817616zm-.303127 5.76400943c.514397-.5281762.771596-1.2400658.771596-2.1203594 0-.87263887-.26026-1.56921902-.780782-2.10504991-.520521-.52817616-1.197199-.79609161-2.030033-.79609161-.85733 0-1.555441.26791545-2.094334.80374634-.538893.54348561-.808339 1.24006577-.808339 2.09739518 0 .8726389.269446 1.5768738.808339 2.1127047.538893.5358308 1.243128.811401 2.112705.811401.832834 0 1.50645-.2679154 2.020848-.8037463z"/><path d="m135.983928 12.5384428v1.3395772c0 .5128667-.085733.9874598-.257199 1.4161245-.171465.4286647-.459283.84202-.863453 1.2477205l-.698111-.5358309c.477655-.5511403.747102-1.0716618.808339-1.5768737h-.881824v-1.8907176z"/><path d="m138.353832 1.34723195h8.634532v1.12524486l-6.136029 11.95668359h-1.616679l6.099287-11.81124377h-6.981111z"/><path d="m151.250516 12.5384428v1.3395772c0 .5128667-.085733.9874598-.257199 1.4161245s-.459284.84202-.863453 1.2477205l-.698111-.5358309c.477655-.5511403.747101-1.0716618.808339-1.5768737h-.881825v-1.8907176z"/><path d="m161.915081 8.9101022c.471532.5664498.707297 1.2477205.707297 2.0438121 0 1.1175901-.422541 1.9978837-1.267623 2.6408808-.845081.6429971-1.984105.9644956-3.41707.9644956s-2.571988-.3214985-3.41707-.9644956-1.267623-1.5232907-1.267623-2.6408808c0-.7960916.24189-1.4773623.725669-2.05146683.483778-.58175925 1.148209-.97980505 1.99329-1.1941374-.783844-.23729654-1.383974-.62003289-1.800391-1.14820905-.416418-.53583089-.624626-1.1635185-.624626-1.88306284 0-.70423488.183713-1.30895831.55114-1.82947974.367427-.52052144.884887-.92622197 1.552379-1.21710159.667492-.2832249 1.429903-.42866471 2.287232-.42866471.85733 0 1.619741.14543981 2.287233.42866471.667492.29087962 1.184951.69658015 1.552378 1.21710159.367427.52052143.551141 1.12524486.551141 1.82947974 0 .71954434-.211271 1.34723195-.633812 1.88306284-.422541.52817616-1.013486.91091251-1.772834 1.14820905.857329.2296418 1.521759.62768761 1.99329 1.20179213zm-6.080915-2.42654845c.520522.43631944 1.221695.70423488 2.103519.7960916.881825-.09185672 1.582998-.35977216 2.103519-.7960916.520522-.43631944.780782-1.00276923.780782-1.69934939 0-.71954434-.254137-1.29364886-.76241-1.70700412-.508274-.42100998-1.215571-.62768761-2.121891-.62768761-.906319 0-1.613616.20667763-2.12189.62768761-.508274.41335526-.762411.98745978-.762411 1.70700412 0 .69658016.260261 1.26302995.780782 1.69934939zm4.473423 6.20032885c.55114-.4133553.82671-1.0257334.82671-1.821825 0-.7195444-.290879-1.30130361-.872639-1.72996832-.581759-.43631943-1.356417-.70423488-2.323975-.80374633-.967557.09951145-1.742216.3674269-2.323975.80374633-.581759.42866471-.872639 1.01042392-.872639 1.72996832 0 .7960916.27557 1.4084697.826711 1.821825.55114.4133553 1.341108.6276876 2.369903.6276876 1.028796 0 1.818763-.2143323 2.369904-.6276876z"/><path d="m166.517103 12.5384428v1.3395772c0 .5128667-.085733.9874598-.257199 1.4161245-.171465.4286647-.459283.84202-.863453 1.2477205l-.698111-.5358309c.477655-.5511403.747102-1.0716618.808339-1.5768737h-.881824v-1.8907176z"/><path d="m176.456001 2.85521316c.857329 1.10228069 1.285994 2.67149972 1.285994 4.70000237 0 2.21987082-.443974 3.94218437-1.331923 5.17459547-.887948 1.232411-2.128014 1.8447892-3.720197 1.8447892-.747101 0-1.478893-.1377851-2.195376-.42101-.716482-.2832249-1.350293-.6812707-1.901434-1.1941374l.587883-1.1558638c.624626.5281762 1.218633.9109125 1.782021 1.148209.563388.2372966 1.132899.3597722 1.708535.3597722 1.126776 0 1.999414-.505212 2.617916-1.5079812s.927753-2.411239.927753-4.22540929v-.23729654c-.281694.6812707-.740977 1.22475632-1.377851 1.62280212-.636873.3980458-1.365603.5970687-2.18619.5970687-.796091 0-1.500326-.17605872-2.112704-.52052143-.612378-.35211744-1.090033-.84201997-1.432965-1.46970758-.342932-.63534234-.514398-1.35488667-.514398-2.15863301 0-.81140106.180652-1.53094539.541955-2.17394246.361303-.63534234.860391-1.13289959 1.497265-1.49267176.636873-.35977217 1.359479-.54348561 2.167818-.54348561 1.579936 0 2.798568.55114034 3.655898 1.65342102zm-1.469708 4.63110982c.538893-.54348561.808339-1.24006577.808339-2.09739519 0-.86498415-.269446-1.56921903-.808339-2.11270464-.538893-.53583089-1.243127-.80374634-2.112704-.80374634-.832835 0-1.506451.26026072-2.020848.79609161-.514398.53583089-.771597 1.24006577-.771597 2.12035937 0 .87263888.257199 1.56921903.771597 2.10504992.514397.53583089 1.194137.79609161 2.039219.79609161.857329 0 1.55544-.26791545 2.094333-.80374634z"/></g><g fill="#f2f2f2" fill-rule="nonzero" transform="translate(1307.966463 315.478416)"><path d="m15.7309762 20.418335h-2.3788531l-2.4066219-6.4812177c-.2915715-.8025158-.6979203-1.3403033-1.21719525-1.6133623-.51927495-.2739846-1.2532946-.4100513-2.20205898-.4100513h-4.86785547v8.5046313h-2.21501771v-19.47142187h7.74006606c2.09653785 0 3.70527205.46466314 4.82620245 1.39491504 1.121856.92932627 1.6818584 2.26962951 1.6818584 4.01998408 0 1.2764352-.332299 2.34738191-.9978225 3.21284015-.6655235.8663839-1.6272466 1.4819237-2.8851693 1.8466194.5655561.0907112 1.0487317.332299 1.4495268.7247635.4007951.3915388.7386478.9524668 1.0117068 1.6818584zm-7.73914047-10.3651351c2.98976477 0 4.48464727-1.22089777 4.48464727-3.66454456 0-1.20331091-.3646958-2.10116598-1.0940874-2.6935652-.7284659-.59239922-1.85957813-.88859883-3.39055987-.88859883h-5.33344423v7.24670859z"/><path d="m18.2745903 18.1755486.8478714-1.7225859c.9663512.8201027 1.9502893 1.4041713 2.9536655 1.7503546 1.0024506.3461833 2.1696621.5192749 3.5007091.5192749 1.5680067 0 2.7759458-.3054558 3.6228915-.9154419.8478714-.6109117 1.2718071-1.4726674 1.2718071-2.5843416 0-.6571929-.2045629-1.1903522-.6146142-1.6004035-.410977-.4100513-.9487644-.7340197-1.6142879-.9709794-.6655235-.2369596-1.5541223-.4831756-2.6657965-.7377221-1.495808-.3285964-2.725962-.684036-3.6923132-1.0672442-.9663513-.3822826-1.7503546-.93395442-2.3520101-1.65408972-.6016554-.72013531-.9024831-1.66427156-.9024831-2.83055753 0-1.11259978.2915714-2.09190974.8747144-2.93978113.5840686-.84787138 1.4087994-1.50876676 2.475118-1.98268614 1.0672442-.474845 2.3112826-.71180469 3.7330407-.71180469 1.3495595 0 2.6074822.2101166 3.7746938.62942417 1.166286.41930758 2.1511497 1.03021927 2.9536655 1.83180947l-.8756401 1.72351148c-.9117394-.78400334-1.8364376-1.35881571-2.7759457-1.72351148-.9385825-.36377015-1.9641737-.54611803-3.0767735-.54611803-1.5133948 0-2.6981933.3230427-3.5553209.97005372-.856202.64793665-1.2847658 1.53653548-1.2847658 2.66672212 0 .9848637.373952 1.72258585 1.1209304 2.21501771.747904.49243185 1.8966031.92099566 3.4460973 1.28569143 1.6772303.40079512 2.994393.77011902 3.9514879 1.10797162.957095.3369271 1.7549827.8469458 2.3927375 1.5309818.6386804.684036.9580206 1.5911473.9580206 2.7213339 0 1.0940873-.2924971 2.0558104-.8756401 2.8851693-.5831429.8293589-1.41713 1.4726675-2.501961 1.9280744-1.0848311.4554069-2.3566382.6840359-3.8154213.6840359-3.0443766 0-5.4695109-.8210283-7.2744773-2.4621592z"/><path d="m35.3125473 18.1755486.8478714-1.7225859c.9663512.8201027 1.9502893 1.4041713 2.9536654 1.7503546 1.0024506.3461833 2.1696622.5192749 3.5007092.5192749 1.5680067 0 2.7750201-.3054558 3.6228915-.9154419.8478714-.6109117 1.271807-1.4726674 1.271807-2.5843416 0-.6571929-.2045628-1.1903522-.6155398-1.6004035-.4100513-.4100513-.9478387-.7340197-1.6133622-.9709794-.6655235-.2369596-1.5541223-.4831756-2.6657965-.7377221-1.495808-.3285964-2.725962-.684036-3.6923133-1.0672442-.9663512-.3822826-1.7503545-.93395442-2.35201-1.65408972-.6016555-.72013531-.9024832-1.66427156-.9024832-2.83055753 0-1.11259978.2915715-2.09190974.8747145-2.93978113.5840686-.84787138 1.4087994-1.50876676 2.475118-1.98268614 1.0672442-.474845 2.3112826-.71180469 3.7330407-.71180469 1.3495595 0 2.6074822.2101166 3.7746938.62942417 1.1662859.41930758 2.1511496 1.03021927 2.9536655 1.83180947l-.8756401 1.72351148c-.9117395-.78400334-1.8364376-1.35881571-2.7759458-1.72351148-.9385825-.36377015-1.9641736-.54611803-3.0767734-.54611803-1.5133949 0-2.6981933.3230427-3.555321.97005372-.856202.64793665-1.2847658 1.53653548-1.2847658 2.66672212 0 .9848637.373952 1.72258585 1.1209304 2.21501771.747904.49243185 1.8966032.92099566 3.4460974 1.28569143 1.6772303.40079512 2.9943929.77011902 3.9514879 1.10797162.957095.3369271 1.7549827.8469458 2.3927375 1.5309818.6386804.684036.9580206 1.5911473.9580206 2.7213339 0 1.0940873-.2924971 2.0558104-.8756401 2.8851693s-1.41713 1.4726675-2.5019611 1.9280744-2.3566381.6840359-3.8154212.6840359c-3.0443766 0-5.469511-.8210283-7.2744773-2.4621592z"/></g><g transform="translate(1132.952069 387.954528)"><path d="m.039304.099422h47.553665v54.590201h-47.553665z" fill="#00a88a"/><path d="m47.5929694 54.6896229h-47.55366538v-54.59020073h47.55366538zm-45.01519163-52.05176699v49.51333329h42.47652283v-49.51333329z" fill="#000"/></g><path d="m23.6732656 32.2046798v3.383959h-22.46109685v-3.0406798l12.21155275-13.5355472c1.6346218-1.8308227 2.8280084-3.4819151 3.5798709-4.953277.7521514-1.4710729 1.1280827-2.9424349 1.1280827-4.4137968 0-1.92877865-.5559506-3.40823133-1.6675628-4.43806909-1.1116122-1.03012673-2.6971116-1.54504561-4.7570761-1.54504561-3.33483658 0-6.63673225 1.34046504-9.90626489 4.02168407l-1.52048438-3.08980225c1.37340598-1.30781306 3.10598377-2.35383234 5.19860024-3.13863575 2.09232752-.78480342 4.2011255-1.17691617 6.32639393-1.17691617 3.2039397 0 5.7377914.82554616 7.6015551 2.47663847 1.8634746 1.65109231 2.7953564 3.88240747 2.7953564 6.69394548 0 1.99437155-.4496149 3.91534845-1.3488447 5.76264155-.8989409 1.8470042-2.394864 3.9150595-4.4871916 6.2035878l-9.95538731 10.7893133z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(1144.791113 397.615433)"/><g transform="translate(1191.307406 387.954528)"><path d="m.039304.099422h47.553665v54.590201h-47.553665z" fill="#00a88a"/><path d="m47.5929694 54.6896229h-47.55366538v-54.59020073h47.55366538zm-45.0150941-52.05176699v49.51333329h42.4764253v-49.51333329z" fill="#000"/></g><path d="m21.6572224 20.6796856c1.0789602 1.4387099 1.6184403 3.2533511 1.6184403 5.4436346 0 3.0406798-1.0298378 5.4355438-3.0895133 7.184881-2.0599645 1.7490483-4.855321 2.6237169-8.3860695 2.6237169-2.25616532 0-4.42217651-.3762202-6.49803356-1.1280827-2.076146-.7518625-3.83357397-1.8146412-5.27199496-3.1877582l1.56931788-3.0895133c3.2365917 2.6809301 6.60408028 4.0213951 10.10246574 4.0213951 2.4847292 0 4.3730541-.5559506 5.6643967-1.6675628s1.9371583-2.746234 1.9371583-4.9041544c0-4.2829-2.68093-6.4243499-8.0427902-6.4243499h-4.02168406v-3.3839591h3.23688066c2.5829741 0 4.5608752-.5721321 5.9339922-1.7163963 1.3731171-1.1442642 2.0599645-2.779175 2.0599645-4.90415445 0-1.89641562-.5640413-3.35130707-1.692124-4.36467437-1.1277937-1.01365625-2.7216728-1.52048438-4.7816373-1.52048438-3.33483658 0-6.63673225 1.34046504-9.90626489 4.02168407l-1.52048437-3.08980225c1.40605796-1.34046504 3.13054499-2.39486403 5.17403901-3.16319698 2.04349402-.76833294 4.17685323-1.15235494 6.40007765-1.15235494 3.1386357 0 5.6479262.80098493 7.5278713 2.40295479 1.8799452 1.60196986 2.8199177 3.75989029 2.8199177 6.47347235 0 1.99437156-.4906466 3.74341986-1.4713619 5.24743376s-2.3376508 2.5829741-4.0705175 3.2368806c2.0596755.5883136 3.6292823 1.6019699 4.7079536 3.0403909z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(1203.470522 396.880376)"/><g transform="translate(1249.976943 388.127483)"><path d="m.039304.099422h47.553665v54.590201h-47.553665z" fill="#00a88a"/><path d="m47.5929694 54.6896229h-47.55366538v-54.59020073h47.55366538zm-45.01519163-52.05176699v49.51333329h42.47652283v-49.51333329z" fill="#000"/></g><path d="m25.5263379 24.074336v3.3348366h-5.2965562v7.601555h-4.0213951v-7.601555h-16.08558047v-3.0406798l16.82126147-24.27573805h3.2857141v23.98158125zm-21.23505825 0h11.91710695v-17.16454069z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(1260.680298 397.799392)"/><g transform="translate(1072.3219 388.127483)"><path d="m.039304.099422h47.553665v54.590201h-47.553665z" fill="#00a88a"/><path d="m47.5929694 54.6896229h-47.55366538v-54.59020073h47.55366538zm-45.0150941-52.05176699v49.51333329h42.4764253v-49.51333329z" fill="#000"/></g><path d="m12.0107286 31.6267686h7.6995109v3.383959h-19.46953948v-3.383959h7.69951097v-26.53161447l-7.16003086 4.56087523v-3.87431672l8.92554959-5.68895789h2.30499888z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(1086.781678 397.799392)"/><g transform="translate(1310.293872 388.430153)"><path d="m.039304.099422h47.553665v54.590201h-47.553665z" fill="#00a88a"/><path d="m47.5929694 54.6896229h-47.55366538v-54.59020073h47.55366538zm-45.01519163-52.05176699v49.51333329h42.47652283v-49.51333329z" fill="#000"/></g><path d="m18.2209624 14.4865002c1.6510923.9318818 2.9181626 2.2316041 3.8009219 3.8988779.8827594 1.6675628 1.3239946 3.5963414 1.3239946 5.7869138 0 2.1905725-.4822669 4.1358216-1.4468007 5.8360363-.9642448 1.7002148-2.3376508 3.0161186-4.119351 3.9480004-1.7819892.9315929-3.866226 1.3976783-6.2529993 1.3976783-2.12497947 0-4.21730699-.384311-6.27727148-1.1526439-2.05967553-.768333-3.79254227-1.822732-5.19831128-3.163197l1.52019542-3.0895133c3.23688066 2.6809301 6.55524679 4.0213951 9.95538734 4.0213951 2.4523662 0 4.3730541-.6946492 5.7626416-2.0842367 1.3892985-1.3895875 2.0842368-3.2776234 2.0842368-5.6643967 0-2.3211804-.6865586-4.1930347-2.0596756-5.6152742-1.373406-1.4222395-3.2042286-2.1333592-5.492757-2.1333592-3.33483662 0-5.99958518 1.3569355-7.99395675 4.0705175h-2.79535649v-20.45054375h20.94090144v3.3348366h-16.91950633v12.45687605c1.9290676-1.8637637 4.39761531-2.7956455 7.40535413-2.7956455 2.1905725 0 4.1112603.4660854 5.7623527 1.3976783z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(1322.999783 398.270213)"/><g transform="translate(1374.317793 388.430153)"><path d="m.039304.099422h47.553665v54.590201h-47.553665z" fill="#00a88a"/><path d="m47.5929694 54.6896229h-47.55366538v-54.59020073h47.55366538zm-45.01519163-52.05176699v49.51333329h42.47652283v-49.51333329z" fill="#000"/></g><path d="m19.2788288 15.0644114c1.6510923.9318818 2.9343442 2.2396948 3.8497555 3.9234391.9154114 1.6837443 1.373117 3.6047212 1.373117 5.7623526 0 2.1579205-.4822669 4.0869881-1.4468007 5.7869139-.9642448 1.7002148-2.2966191 3.032589-3.9968339 3.9971228-1.6999258.9642449-3.6289934 1.4465118-5.7869138 1.4465118-4.21759597 0-7.47065814-1.471073-9.75918651-4.4137968-2.28881733-2.9424349-3.43308151-7.1273789-3.43308151-12.554543 0-3.9234392.53138935-7.2909278 1.5938791-10.10246581 1.06248975-2.81182696 2.59915564-4.95327693 4.60999768-6.42463886 2.01055308-1.47136192 4.42188754-2.20675393 7.23371454-2.20675393 2.0270235 0 3.9968339.37593124 5.909431 1.12779372 1.9125972.75215143 3.5882507 1.81464118 5.0266717 3.1877582l-1.5201954 3.08980225c-1.6346219-1.37340597-3.2039398-2.38677327-4.7079537-3.0406798s-3.0406798-.98100427-4.6099976-.98100427c-3.0077389 0-5.34538973 1.34046504-7.01295251 4.02168407-1.66727383 2.68093003-2.5011997 6.44053143-2.5011997 11.27938193v.735681c.75215144-1.8634747 1.97819006-3.3348366 3.67811586-4.4137969 1.70021477-1.0789602 3.64546385-1.6184403 5.83603635-1.6184403 2.1252684 0 4.0133043.4660854 5.6643966 1.3976783zm-.8090757 15.3993109c1.3731171-1.4222395 2.0596756-3.3102754 2.0596756-5.6643967 0-2.3211804-.6949383-4.1930347-2.0842368-5.6152742-1.3895875-1.4222395-3.195849-2.1333592-5.4190734-2.1333592-2.2888173 0-4.15229196.7192105-5.5910019 2.1579204-1.43842099 1.438421-2.15763148 3.3021846-2.15763148 5.590713 0 2.3211803.71921049 4.2011255 2.15763148 5.6398354 1.43870994 1.438421 3.3186551 2.1579205 5.6398354 2.1579205 2.2232244 0 4.0213952-.7111198 5.3948011-2.1333592z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(1384.69083 397.697106)"/><g transform="translate(1436.988825 388.430153)"><path d="m.039304.099422h47.553665v54.590201h-47.553665z" fill="#00a88a"/><path d="m47.5929694 54.6896229h-47.55366538v-54.59020073h47.55366538zm-45.01528916-52.05176699v49.51333329h42.47662036v-49.51333329z" fill="#000"/></g><path d="m.04045378.09275475h23.04969942v2.99155735l-16.38002621 31.9264155h-4.31555192l16.28178133-31.5340138h-18.63590262z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(1447.938813 398.275017)"/><g transform="translate(1499.78573 388.430153)"><path d="m.039304.099422h47.553665v54.590201h-47.553665z" fill="#00a88a"/><path d="m47.5929694 54.6896229h-47.55366538v-54.59020073h47.55366538zm-45.01519163-52.05176699v49.51333329h42.47652283v-49.51333329z" fill="#000"/></g><path d="m23.338655 20.8516142c1.2586906 1.5201954 1.8880359 3.3429273 1.8880359 5.4679068 0 2.9753759-1.1277937 5.3211174-3.3836701 7.0375137-2.2561653 1.7166852-5.2965562 2.5748834-9.1217504 2.5748834-3.82548323 0-6.86587408-.8581982-9.12175046-2.5748834-2.25616535-1.7163963-3.38395906-4.0621378-3.38395906-7.0375137 0-2.1249795.64552681-3.9558022 1.93715836-5.4924681 1.29134258-1.5366659 3.06495207-2.5994446 5.32082845-3.1877582-2.09232751-.6212545-3.69429737-1.6430015-4.80590957-3.065241s-1.66756278-3.0976041-1.66756278-5.02667165c0-1.86347468.49064661-3.49029472 1.47136193-4.87959325.98071531-1.38958749 2.36221204-2.46854771 4.14391229-3.23688066 1.78198919-.76833294 3.81710354-1.15235494 6.10592084-1.15235494 2.2885284 0 4.3236427.384022 6.1056319 1.15235494 1.7817002.76833295 3.1631969 1.84729317 4.1439122 3.23688066.9810043 1.38929853 1.471362 3.01611857 1.471362 4.87959325 0 1.92906755-.5640414 3.60443215-1.692124 5.02667165-1.1277937 1.4222395-2.7052024 2.4439865-4.7325149 3.065241 2.2888173.6212546 4.0624268 1.6918351 5.3211174 3.2123195zm-16.23265883-6.4737613c1.38929853 1.1607346 3.26115293 1.8718543 5.61527423 2.1333592 2.3538323-.2615049 4.2256867-.9726246 5.6152742-2.1333592 1.3892985-1.1604457 2.0842368-2.6725504 2.0842368-4.53631405 0-1.92877864-.6784678-3.44926302-2.0354033-4.56087522-1.3566466-1.1116122-3.2449714-1.66727383-5.6641077-1.66727383-2.4194253 0-4.30775013.55566163-5.66439668 1.66727383-1.35693551 1.1116122-2.03540327 2.63209658-2.03540327 4.56087522 0 1.86376365.69493823 3.37586835 2.08452572 4.53631405zm11.94166813 16.5516658c1.471073-1.1116122 2.206754-2.7300525 2.206754-4.855032 0-1.9290676-.7764237-3.4738243-2.3295601-4.6345589-1.5528474-1.1607347-3.6209026-1.8718544-6.2035878-2.1333592-2.5829741.2615048-4.65102939.9726245-6.20387679 2.1333592-1.55313637 1.1607346-2.32956007 2.7054913-2.32956007 4.6345589 0 2.1249795.73568096 3.7434198 2.20704289 4.855032 1.47107297 1.1116122 3.57987096 1.6675628 6.32639397 1.6675628 2.746234 0 4.855032-.5559506 6.3263939-1.6675628z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(1509.579895 397.697106)"/><g transform="translate(1565.056846 388.430153)"><path d="m.039304.099422h47.553665v54.590201h-47.553665z" fill="#00a88a"/><path d="m47.5929694 54.6896229h-47.55366538v-54.59020073h47.55366538zm-45.01519163-52.05176699v49.51333329h42.47652283v-49.51333329z" fill="#000"/></g><path d="m21.1125411 4.69235002c2.2885283 2.9424349 3.4330815 7.12737888 3.4330815 12.55454298 0 5.9178108-1.1852959 10.5194287-3.5555987 13.8051429-2.3703028 3.2860031-5.6805782 4.9287157-9.9311151 4.9287157-1.99437156 0-3.94771143-.3759313-5.86030856-1.1277937-1.91259713-.7521515-3.60472114-1.8146412-5.07579411-3.1877582l1.56931788-3.0895133c1.66727382 1.405769 3.25306216 2.427516 4.75707607 3.064952 1.50372496.6374361 3.02420934.9564431 4.56087522.9564431 3.0077389 0 5.3372989-1.3404651 6.9883912-4.0213951 1.6510924-2.6812191 2.4766385-6.4408204 2.4766385-11.2796709v-.637725c-.7521514 1.8311116-1.97819 3.2776234-3.6781158 4.3404021-1.7002148 1.0624897-3.6454639 1.5938791-5.8360363 1.5938791-2.1252685 0-4.00521365-.4660854-5.63983549-1.3976783-1.63462184-.9318818-2.90978291-2.2396949-3.82519426-3.9234391-.91541134-1.6837443-1.37311702-3.6047212-1.37311702-5.7623527 0-2.1579204.4822669-4.086988 1.44651175-5.78691381.9645338-1.70021476 2.29690808-3.03258905 3.99712284-3.99712285 1.69992581-.96424484 3.62899341-1.44651174 5.78691388-1.44651174 4.2175959 0 7.4706581 1.47107297 9.7591865 4.41379682zm-3.9234392 12.35834218c1.4387099-1.438421 2.1579204-3.3021847 2.1579204-5.590713 0-2.32118037-.7192105-4.20112552-2.1579204-5.63983546-1.438421-1.43842099-3.3183661-2.15792044-5.6395465-2.15792044-2.22322439 0-4.02168405.71111974-5.39480107 2.13335921-1.37311703 1.42223948-2.05967554 3.31027538-2.05967554 5.66439669 0 2.3211803.68655851 4.1930347 2.05967554 5.6152742 1.37311702 1.4222395 3.1877582 2.1333592 5.44363457 2.1333592 2.2888173 0 4.152292-.7192105 5.590713-2.1579204z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(1575.139966 397.697106)"/><g stroke="#000"><path d="m1096.073546 379.827207v8.703347" stroke-width="2.540471"/><path d="m1334.698583 379.827107h-238.625356" stroke-width="2.536666"/><path d="m1157.047962 379.827207v8.703347" stroke-width="2.540471"/><path d="m1214.724654 379.827207v8.703347" stroke-width="2.540471"/><path d="m1273.792589 379.827207v8.703347" stroke-width="2.540471"/><path d="m.25679382.11881745v8.70067791h253.66824618v8.70607874" stroke-width="2.537062" transform="translate(1333.854479 371.007868)"/><path d="m1522.192353 379.827363v8.706079" stroke-width="2.538373"/><path d="m1460.272258 379.827363v8.706079" stroke-width="2.538373"/><path d="m1398.172318 379.827363v8.706079" stroke-width="2.538373"/><path d="m461.035492 332.200017v30.871702" stroke-width="2.538347"/><path d="m555.359389 347.854087v15.218407" stroke-width="2.537588"/><path d="m695.541211 347.854373v14.187222" stroke-width="2.538524"/><path d="m790.885848 362.040642v-30.871702" stroke-width="2.538347"/><path d="m887.942518 362.041595v-14.187222" stroke-width="2.538524"/><path d="m.019213 15.299472.406607-15.172668" stroke-width="2.539569" transform="matrix(-1 0 0 1 367.859321 347.727644)"/></g><g transform="translate(728.528993 23.597628)"><path d="m.027562.06972h33.346975v38.281514h-33.346975z" fill="#00a88a"/><path d="m33.3745364 38.3512337h-33.34697449v-38.28151366h33.34697449zm-30.80847438-35.74309116v33.20466866h28.26976908v-33.20466866z" fill="#000"/></g><g fill="#000" transform="translate(771.880716 31.029736)"><path d="m12.5751769 7.68008917v1.60645421h-12.54602874v-1.60645421zm0 5.15096053v1.6066044h-12.54602874v-1.6066044z"/><path d="m26.1286201 17.4720676c-1.3345049-.7649138-2.3587471-1.8486543-3.0727268-3.2512217-.7141299-1.4025673-1.0711197-3.0473348-1.0711197-4.93430252 0-1.86998963.3569898-3.50634324 1.0711197-4.90876034.7139797-1.40256734 1.7382219-2.48210096 3.0727268-3.23860086 1.3345049-.75649991 2.8942319-1.13467473 4.6793313-1.13467473 1.2239222 0 2.3757252.19126601 3.4552588.57364779 1.0795337.38253202 1.9762152.91380981 2.6901948 1.59383335l-1.0709695 2.39706047c-.8159982-.6630455-1.6277894-1.14338913-2.4352235-1.44088065-.8075843-.29749152-1.6703097-.44623728-2.5883264-.44623728-1.7509931 0-3.1068332.56959109-4.06722 1.70862301-.960537 1.13888168-1.4408806 2.77102834-1.4408806 4.89598924 0 2.14193892.4761367 3.78670642 1.4281095 4.93430252.9519729 1.1474458 2.31202 1.7212439 4.0799911 1.7212439.9180167 0 1.7807421-.1487458 2.5883264-.4462373.8074341-.2974915 1.6192253-.7778352 2.4352235-1.4407304l1.0709695 2.3969102c-.7139796.6800236-1.6106611 1.2113013-2.6901948 1.5938334-1.0795336.382532-2.2313366.573798-3.4552588.573798-1.7850994 0-3.3448264-.382532-4.6793313-1.1475961z"/><path d="m41.938792 17.7781233c-.9944932-.5440489-1.7595572-1.3217338-2.295042-2.333205-.5354847-1.0116214-.8032271-2.1973805-.8032271-3.5574276 0-1.3598968.2677424-2.54565597.8032271-3.55727739.5354848-1.01147117 1.3005488-1.78915607 2.295042-2.33320496.9944931-.54404888 2.1462961-.8159982 3.4552588-.8159982 1.2919846 0 2.4310166.27194932 3.4169455.8159982.9860792.54404889 1.7467861 1.32173379 2.2822708 2.33320496.535635 1.01162142.8033774 2.19738059.8033774 3.55727739 0 1.3600471-.2677424 2.5458062-.8033774 3.5574276-.5354847 1.0114712-1.2961916 1.7891561-2.2822708 2.333205-.9859289.5440489-2.1249609.8159982-3.4169455.8159982-1.3089627 0-2.4607657-.2719493-3.4552588-.8159982zm5.9160245-2.7412792c.5694408-.7055657.8543115-1.7552.8543115-3.1493534 0-1.3768749-.2890776-2.42665936-.8670826-3.14920316s-1.3940032-1.08374057-2.4479946-1.08374057c-1.0709695 0-1.8955318.36119677-2.4735368 1.08374057s-.8670826 1.77232826-.8670826 3.14920316c0 1.3941534.2848706 2.4437877.8543115 3.1493534.5695911.7055658 1.3897962 1.0581984 2.4607657 1.0581984 1.0880978 0 1.9167168-.3526326 2.4863079-1.0581984z"/><path d="m66.6356966 10.4850736v7.9050108h-3.1875165v-7.7520581c0-1.0200353-.1954729-1.7637641-.5864189-2.23118638-.3910962-.46757253-.9946433-.7013588-1.8106415-.7013588-.968951 0-1.7509931.31026262-2.3459761.93078786-.594983.62052525-.8924746 1.44073042-.8924746 2.46076572v7.2930497h-3.1621245v-9.23110178c0-1.35989684-.0679122-2.57540513-.2038868-3.64652485h2.9834793l.2295793 2.116547c.4418801-.78204211 1.0412203-1.38543905 1.7977202-1.81049133s1.6108115-.63750329 2.5627843-.63750329c3.0769338 0 4.6154758 1.76797107 4.6154758 5.30406345z"/><path d="m74.0818492 7.90951823v5.76307187c0 1.5129998.7054155 2.2694997 2.1163968 2.2694997.3910962 0 .8161484-.0680625 1.2751568-.2040371v2.5246212c-.5610269.2038869-1.2410505.3059054-2.0400706.3059054-1.4620657 0-2.5841195-.407924-3.3660114-1.2239222-.7820421-.8159982-1.172988-1.9891365-1.172988-3.5191143v-5.91602457h-2.4735368v-2.39706046h2.4735368v-3.13643206l3.1875164-1.07111972v4.20755178h3.4169456v2.39706046z"/><path d="m90.9629905 12.11707h-8.8741119c.0680624 1.3770252.4122812 2.3927033 1.0328064 3.0473349.6205252.6544813 1.542749.981722 2.7666711.981722 1.4111315 0 2.7200942-.4590084 3.9270384-1.3770251l.9180167 2.1930233c-.6119611.4929645-1.364254.8882676-2.2567286 1.1857591-.8924745.2974915-1.7977202.4462373-2.715737.4462373-2.1081331 0-3.7655214-.594983-4.9726158-1.7849491-1.2069441-1.1901163-1.8104913-2.8221128-1.8104913-4.8961395 0-1.3089627.2635354-2.47353681.790456-3.49357213.5270708-1.01988507 1.2665927-1.81469827 2.2185655-2.38413911.9519729-.56959109 2.0315065-.85431151 3.2386009-.85431151 1.7679711 0 3.1661812.57379804 4.1947807 1.72124387 1.0284492 1.14759607 1.5427489 2.72430113 1.5427489 4.73026538zm-7.7392869-3.88872499c-.535635.50137838-.8798538 1.22812913-1.0328065 2.18025229h5.9925009c-.1020185-.96910121-.3951528-1.70005891-.8797034-2.1930234-.4845506-.49311473-1.151803-.73952185-2.0017574-.73952185-.8501045 0-1.5427489.25076432-2.0782336.75229296z"/><path d="m105.651108 10.4850736v7.9050108h-3.187516v-7.7520581c0-1.0200353-.195473-1.7637641-.586569-2.23118638-.390946-.46757253-.994493-.7013588-1.810491-.7013588-.9689514 0-1.7509935.31026262-2.3459765.93078786-.594983.62052525-.8924746 1.44073042-.8924746 2.46076572v7.2930497h-3.1621245v-9.23110178c0-1.35989684-.0679122-2.57540513-.2040371-3.64652485h2.9836296l.2294291 2.116547c.4420303-.78204211 1.0412203-1.38543905 1.7977202-1.81049133.7566501-.42505228 1.6108118-.63750329 2.5627838-.63750329 3.077084 0 4.615626 1.76797107 4.615626 5.30406345z"/><path d="m113.097111 7.90951823v5.76307187c0 1.5129998.705566 2.2694997 2.116547 2.2694997.391096 0 .815998-.0680625 1.275006-.2040371v2.5246212c-.561026.2038869-1.24105.3059054-2.03992.3059054-1.462066 0-2.584119-.407924-3.366162-1.2239222-.781891-.8159982-1.172988-1.9891365-1.172988-3.5191143v-5.91602457h-2.473536v-2.39706046h2.473536v-3.13643206l3.187517-1.07111972v4.20755178h3.417096v2.39706046z"/><path d="m125.923803.23393651h7.879619c1.95488 0 3.476444.47177949 4.564542 1.41533845 1.087947.94340871 1.631996 2.2311864 1.631996 3.86318281s-.548256 2.9241313-1.644767 3.87610416c-1.096512.95197287-2.613869 1.42795927-4.551771 1.42795927h-4.590084v7.5735632h-3.289535zm7.497087 8.03257155c1.139032 0 2.001758-.23378627 2.588176-.70120855.58657-.46757253.879854-1.14323888.879854-2.02729954 0-.90103871-.289078-1.5852692-.867083-2.05269149-.578004-.46757253-1.444937-.70135879-2.600947-.70135879h-4.207552v5.48255837z"/><path d="m154.509583 5.51245777v12.87762663h-3.136582v-2.0654626c-.390946.7139797-.951973 1.2707996-1.683081 1.6703097-.730958.3995101-1.563934.59919-2.498929.59919-1.122054 0-2.116547-.2719493-2.983479-.8159982-.867083-.5440489-1.538542-1.3175268-2.014528-2.3205841-.476137-1.002907-.71413-2.1674811-.71413-3.4934219 0-1.326091.24235-2.50328596.72675-3.53188543.484551-1.02844922 1.160368-1.82746937 2.0273-2.39691021.867083-.56959109 1.853012-.85431151 2.958087-.85431151.934995 0 1.767971.19967991 2.498929.59918999.731108.39951008 1.292135.95633006 1.683081 1.67030971v-1.93805208zm-4.003514 9.48607303c.578005-.7309577.866932-1.7594069.866932-3.0854979 0-1.3600471-.288927-2.40547436-.866932-3.13643206-.578005-.73110795-1.402568-1.09651167-2.473537-1.09651167-1.053992 0-1.874347.37817482-2.460766 1.13467473-.586569.7564999-.879854 1.8062844-.879854 3.1493534 0 1.3259408.293285 2.3459761.879854 3.0599557.586419.7139797 1.415188 1.0709695 2.486158 1.0709695 1.053991 0 1.87014-.3654037 2.448145-1.0965117z"/><path d="m170.421623 5.51245777v12.46970263c0 2.0059643-.552462 3.5275283-1.657388 4.5645416-1.105076 1.0370134-2.728658 1.5555201-4.870597 1.5555201-1.988987 0-3.73998-.4164881-5.25313-1.2496147l.510093-2.4224524c1.563934.8159982 3.119454 1.2239222 4.66656 1.2239222 2.295042 0 3.442488-1.1388817 3.442488-3.4169455v-2.5500132c-.390946.6970016-.960537 1.2622355-1.708473 1.6957017-.748086.4336164-1.589626.6502744-2.524621.6502744-1.121904 0-2.120754-.2677424-2.99625-.8032271-.875497-.5354848-1.55552-1.2919847-2.039921-2.2694997-.48455-.9775151-.72675-2.095362-.72675-3.3532403 0-1.2580286.2422-2.37587548.72675-3.35339054.484401-.97751507 1.164424-1.73401497 2.039921-2.26949971.875496-.53548473 1.874346-.8032271 2.99625-.8032271.952123 0 1.797871.19967991 2.537392.59918999.739522.39951008 1.304756.95633006 1.695702 1.67030971v-1.93805208zm-4.06722 8.97613053c.603548-.6970016.905246-1.6575386.905246-2.8814608 0-1.2240724-.297491-2.18460946-.892474-2.88161106s-1.42811-1.04542727-2.499079-1.04542727c-1.053992 0-1.882761.34842567-2.486308 1.04542727-.603397.6970016-.905246 1.65753866-.905246 2.88161106 0 1.2239222.301849 2.1844592.905246 2.8814608.603547.6970016 1.432316 1.0455775 2.486308 1.0455775 1.053991 0 1.88276-.3485759 2.486307-1.0455775z"/><path d="m185.135284 12.11707h-8.874112c.068062 1.3770252.412281 2.3927033 1.032806 3.0473349.620525.6544813 1.542749.981722 2.766821.981722 1.410982 0 2.719944-.4590084 3.927039-1.3770251l.918016 2.1930233c-.612111.4929645-1.364254.8882676-2.256878 1.1857591-.892475.2974915-1.797721.4462373-2.715737.4462373-2.107983 0-3.765522-.594983-4.972466-1.7849491-1.207094-1.1901163-1.810491-2.8221128-1.810491-4.8961395 0-1.3089627.263385-2.47353681.790456-3.49357213.52692-1.01988507 1.266442-1.81469827 2.218565-2.38413911.951973-.56959109 2.031507-.85431151 3.238451-.85431151 1.767971 0 3.166331.57379804 4.194781 1.72124387 1.028599 1.14759607 1.542749 2.72430113 1.542749 4.73026538zm-7.739287-3.88872499c-.535485.50137838-.879704 1.22812913-1.032807 2.18025229h5.992651c-.102018-.96910121-.395303-1.70005891-.879853-2.1930234-.484401-.49311473-1.151653-.73952185-2.001758-.73952185-.849954 0-1.542749.25076432-2.078233.75229296z"/></g><path d="m367.838539 347.854154h94.040308" stroke="#000" stroke-width="2.538462"/><path d="m461.878846 347.854154h93.484616" stroke="#000" stroke-width="2.538462"/><path d="m.33230769 1.70030769 96.35538461-1.24846154 96.0461537 1.24846154" stroke="#000" stroke-width="2.538462" transform="translate(695.209615 346.153846)"/><path d="m.05446154.45184615h95.96584616l96.7416923 1.24846154" stroke="#000" stroke-width="2.538462" transform="translate(36.132692 346.153846)"/></g></svg>
\ No newline at end of file
title: Hugo's Lookup Order
linktitle: Template Lookup Order
description: Hugo searches for the layout to use for a given page in a well defined order, starting from the most specific.
-date: 2017-02-01
-publishdate: 2017-02-01
-lastmod: 2017-07-05
categories: [templates,fundamentals]
keywords: [templates]
menu:
docs:
- parent: "templates"
+ parent: templates
weight: 15
quicklinks:
weight: 15
-sections_weight: 15
-draft: false
-aliases: [/templates/lookup/]
-toc: true
---
## Hugo Layouts Lookup Rules
---
title: Menu Templates
-linktitle: Menu Templates
-description: Menus are a powerful but simple feature for content management but can be easily manipulated in your templates to meet your design needs.
-date: 2017-02-01
-publishdate: 2017-02-01
-lastmod: 2017-02-01
+description: Use menu variables and methods in your templates to render a menu.
categories: [templates]
keywords: [lists,sections,menus]
menu:
docs:
- title: "how to use menus in templates"
- parent: "templates"
+ parent: templates
weight: 130
+toc: true
weight: 130
-sections_weight: 130
-draft: false
aliases: [/templates/menus/]
-toc: false
---
-Hugo makes no assumptions about how your rendered HTML will be
-structured. Instead, it provides all the functions you will need to
-build your menu however you want.
+## Overview
-The following is an example:
+After [defining menu entries], use [menu variables and methods] to render a menu.
-{{< code file="layouts/partials/sidebar.html" download="sidebar.html" >}}
-<!-- sidebar start -->
-<aside>
- <ul>
- {{ $currentPage := . }}
- {{ range .Site.Menus.main }}
- {{ if .HasChildren }}
- <li class="{{ if $currentPage.HasMenuCurrent "main" . }}active{{ end }}">
- <a href="#">
- {{ .Pre }}
- <span>{{ .Name }}</span>
- </a>
- </li>
- <ul class="sub-menu">
- {{ range .Children }}
- <li class="{{ if $currentPage.IsMenuCurrent "main" . }}active{{ end }}">
- <a href="{{ .URL }}">{{ .Name }}</a>
- </li>
- {{ end }}
- </ul>
- {{ else }}
- <li>
- <a href="{{ .URL }}">
- {{ .Pre }}
- <span>{{ .Name }}</span>
- </a>
- </li>
- {{ end }}
- {{ end }}
- <li>
- <a href="#" target="_blank">Hardcoded Link 1</a>
- </li>
- <li>
- <a href="#" target="_blank">Hardcoded Link 2</a>
- </li>
- </ul>
-</aside>
-{{< /code >}}
+Three factors determine how to render a menu:
-{{% note "`absLangURL` and `relLangURL`" %}}
-Use the [`absLangURL`](/functions/abslangurl) or [`relLangURL`](/functions/rellangurl) functions if your theme makes use of the [multilingual feature](/content-management/multilingual/). In contrast to `absURL` and `relURL`, these two functions add the correct language prefix to the url.
-{{% /note %}}
+1. The method used to define the menu entries: [automatic], [in front matter], or [in site configuration]
+1. The menu structure: flat or nested
+1. The method used to [localize the menu entries]: site configuration or translation tables
-## Section Menu for Lazy Bloggers
+The example below handles every combination.
-To enable this menu, configure `sectionPagesMenu` in your site `config`:
+## Example
-```yml
-sectionPagesMenu = "main"
-```
+This partial template recursively "walks" a menu structure, rendering a localized, accessible nested list.
-The menu name can be anything, but take a note of what it is.
+{{< code file="layouts/partials/menu.html" >}}
+{{- $page := .page }}
+{{- $menuID := .menuID }}
-This will create a menu with all the sections as menu items and all the sections' pages as "shadow-members". Ensure that all first level directories that you would like to show up on this menu are [Branch Bundles](https://gohugo.io/content-management/sections/). Leaf Bundles do not form sections.
+{{- with index site.Menus $menuID }}
+ <nav>
+ <ul>
+ {{- partial "inline/menu/walk.html" (dict "page" $page "menuEntries" .) }}
+ </ul>
+ </nav>
+{{- end }}
+
+{{- define "partials/inline/menu/walk.html" }}
+ {{- $page := .page }}
+ {{- range .menuEntries }}
+ {{- $attrs := dict "href" .URL }}
+ {{- if $page.IsMenuCurrent .Menu . }}
+ {{- $attrs = merge $attrs (dict "class" "active" "aria-current" "page") }}
+ {{- else if $page.HasMenuCurrent .Menu .}}
+ {{- $attrs = merge $attrs (dict "class" "ancestor" "aria-current" "true") }}
+ {{- end }}
+ <li>
+ <a
+ {{- range $k, $v := $attrs }}
+ {{- with $v }}
+ {{- printf " %s=%q" $k $v | safeHTMLAttr }}
+ {{- end }}
+ {{- end -}}
+ >{{ or (T .Identifier) .Name | safeHTML }}</a>
+ {{- with .Children }}
+ <ul>
+ {{- partial "inline/menu/walk.html" (dict "page" $page "menuEntries" .) }}
+ </ul>
+ {{- end }}
+ </li>
+ {{- end }}
+{{- end }}
+{{< /code >}}
-The _shadow_ implies that the pages isn't represented by a menu-item themselves, but this enables you to create a top-level menu like this:
+Call the partial above, passing a menu ID and the current page in context.
-```go-html-template
-<nav class="sidebar-nav">
- {{ $currentPage := . }}
- {{ range .Site.Menus.main }}
- <a class="sidebar-nav-item{{if or ($currentPage.IsMenuCurrent "main" .) ($currentPage.HasMenuCurrent "main" .) }} active{{end}}" href="{{ .URL }}" title="{{ .Title }}">{{ .Name }}</a>
- {{ end }}
-</nav>
-```
+{{< code file="layouts/_default/single.html" >}}
+{{ partial "menu.html" (dict "menuID" "main" "page" .) }}
+{{ partial "menu.html" (dict "menuID" "footer" "page" .) }}
+{{< /code >}}
-In the above, the menu item is marked as active if on the current section's list page or on a page in that section.
+## Page references
-## Site Config menus
+Regardless of how you [define menu entries], an entry associated with a page has access to page variables and methods.
-The above is all that's needed. But if you want custom menu items, e.g. changing weight, name, or link title attribute, you can define them manually in the site config file:
+This simplistic example renders a page parameter named `version` next to each entry's `name`. Code defensively using `with` or `if` to handle entries where (a) the entry points to an external resource, or (b) the `version` parameter is not defined.
-{{< code-toggle file="config" >}}
-[[menu.main]]
- name = "This is the blog section"
- title = "blog section"
- weight = -110
- identifier = "blog"
- url = "/blog/"
-{{</ code-toggle >}}
+{{< code file="layouts/_default/single.html" >}}
+{{- range site.Menus.main }}
+ <a href="{{ .URL }}">
+ {{ .Name }}
+ {{- with .Page }}
+ {{- with .Params.version -}}
+ ({{ . }})
+ {{- end }}
+ {{- end }}
+ </a>
+{{- end }}
+{{< /code >}}
-{{% note %}}
-The `identifier` *must* match the section name.
-{{% /note %}}
+## Menu entry parameters
-## Menu Entries from the Page's front matter
+When you define menu entries [in site configuration] or [in front matter], you can include a `params` key as shown in these examples:
-It's also possible to create menu entries from the page (i.e. the `.md`-file).
+- [Menu entry defined in site configuration]
+- [Menu entry defined in front matter]
-Here is a `yaml` example:
+This simplistic example renders a `class` attribute for each anchor element. Code defensively using `with` or `if` to handle entries where `params.class` is not defined.
-```yml
----
-title: Menu Templates
-linktitle: Menu Templates
-menu:
- docs:
- title: "how to use menus in templates"
- parent: "templates"
- weight: 130
----
-...
-```
-
-{{% note %}}
-You can define more than one menu. It also doesn't have to be a complex value,
-`menu` can also be a string, an array of strings, or an array of complex values
-like in the example above.
-{{% /note %}}
-
-### Using .Page in Menus
-
-If you use the front matter method of defining menu entries, you'll get access to the `.Page` variable.
-This allows to use every variable that's reachable from the [page variable](/variables/page/).
-
-This variable is only set when the menu entry is defined in the page's front matter.
-Menu entries from the site config don't know anything about `.Page`.
-
-That's why you have to use the go template's `with` keyword or something similar in your templating language.
-
-Here's an example:
-
-```go-html-template
-<nav class="sidebar-nav">
- {{ range .Site.Menus.main }}
- <a href="{{ .URL }}" title="{{ .Title }}">
- {{- .Name -}}
- {{- with .Page -}}
- <span class="date">
- {{- dateFormat " (2006-01-02)" .Date -}}
- </span>
- {{- end -}}
- </a>
- {{ end }}
-</nav>
-```
-
-## Using .Params in Menus
-
-User-defined content on menu items are accessible via `.Params`.
-
-Here's an example:
-
-```go-html-template
-<nav class="sidebar-nav">
- {{ range .Site.Menus.main }}
- <a href="{{ .URL }}" title="{{ .Title }}" class="{{ with .Params.class }}{{ . }}{{ end }}">
- {{- .Name -}}
- </a>
- {{ end }}
-</nav>
-```
-
-{{% note %}}
-With Menu-level .Params they can easily exist on one menu item but not another. It's recommended to access them gracefully using the [with function](/functions/with).
-{{% /note %}}
+{{< code file="layouts/partials/menu.html" >}}
+{{- range site.Menus.main }}
+ <a {{ with .Params.class -}} class="{{ . }}" {{ end -}} href="{{ .URL }}">
+ {{ .Name }}
+ </a>
+{{- end }}
+{{< /code >}}
+
+## Localize
+
+Hugo provides two methods to localize your menu entries. See [multilingual].
+
+[automatic]: /content-management/menus/#define-automatically
+[define menu entries]: /content-management/menus/
+[defining menu entries]: /content-management/menus/
+[in front matter]: /content-management/menus/#define-in-front-matter
+[in site configuration]: /content-management/menus/#define-in-site-configuration
+[localize the menu entries]: /content-management/multilingual/#menus
+[menu entry defined in front matter]: /content-management/menus/#example-front-matter
+[menu entry defined in site configuration]: /content-management/menus/#example-site-configuration
+[menu variables and methods]: /variables/menus/
+[multilingual]: /content-management/multilingual/#menus
---
title: Custom Output Formats
-linktitle: Custom Output Formats
description: Hugo can output content in multiple formats, including calendar events, e-book formats, Google AMP, and JSON search indexes, or any custom text format.
-date: 2017-03-22
-publishdate: 2017-03-22
-lastmod: 2019-12-11
categories: [templates]
keywords: ["amp", "outputs", "rss"]
menu:
docs:
- parent: "templates"
+ parent: templates
weight: 18
weight: 18
-sections_weight: 18
-draft: false
aliases: [/templates/outputs/,/extras/output-formats/,/content-management/custom-outputs/]
toc: true
---
**Note:** these media types are configured for **your output formats**. If you want to redefine one of Hugo's default output formats (e.g. `HTML`), you also need to redefine the media type. So, if you want to change the suffix of the `HTML` output format from `html` (default) to `htm`:
-```toml
+{{< code-toggle file="config" >}}
[mediaTypes]
-[mediaTypes."text/html"]
-suffixes = ["htm"]
+ [mediaTypes."text/html"]
+ suffixes = ["htm"]
# Redefine HTML to update its media type.
[outputFormats]
-[outputFormats.HTML]
-mediaType = "text/html"
-```
+ [outputFormats.HTML]
+ mediaType = "text/html"
+{{</ code-toggle >}}
**Note** that for the above to work, you also need to add an `outputs` definition in your site config.
* These names are case insensitive.
* These can be overridden per `Page` in the front matter of content files.
-The following is an example of `YAML` front matter in a content file that defines output formats for the rendered `Page`:
+The following is an example of front matter in a content file that defines output formats for the rendered `Page`:
-```yaml
----
-date: "2016-03-19"
+{{< code-toggle file="content/example.md" fm=true copy=false >}}
+title: Example
outputs:
- html
- amp
- json
----
-```
+{{< /code-toggle >}}
## List Output formats
[base]: /templates/base/
[config]: /getting-started/configuration/
-[lookup order]: /templates/lookup/
+[lookup order]: /templates/lookup-order/
[media type]: https://en.wikipedia.org/wiki/Media_type
[partials]: /templates/partials/
[page_kinds]: /templates/section-templates/#page-kinds
title: Pagination
linktitle: Pagination
description: Hugo supports pagination for your homepage, section pages, and taxonomies.
-date: 2017-02-01
-publishdate: 2017-02-01
categories: [templates]
keywords: [lists,sections,pagination]
menu:
docs:
- parent: "templates"
+ parent: templates
weight: 140
weight: 140
-sections_weight: 140
aliases: [/extras/pagination,/doc/pagination/]
toc: true
---
## List Paginator Pages
-{{% warning %}}
+{{% note %}}
`.Paginator` is provided to help you build a pager menu. This feature is currently only supported on homepage and list pages (i.e., taxonomies and section lists).
-{{% /warning %}}
+{{% /note %}}
There are two ways to configure and use a `.Paginator`:
It is also possible to use the `GroupBy` functions in combination with pagination:
```go-html-template
-{{ range (.Paginate (.Pages.GroupByDate "2006")).PageGroups }}
+{{ range (.Paginate (.Pages.GroupByDate "2006")).PageGroups }}
```
## Build the navigation
{{ template "_internal/pagination.html" . }}
```
-{{% note "When to Create `.Paginator`" %}}
+{{% note %}}
If you use any filters or ordering functions to create your `.Paginator` *and* you want the navigation buttons to be shown before the page listing, you must create the `.Paginator` before it's used.
{{% /note %}}
---
title: Partial Templates
-linktitle: Partial Templates
description: Partials are smaller, context-aware components in your list and page templates that can be used economically to keep your templating DRY.
-date: 2017-02-01
-publishdate: 2017-02-01
-lastmod: 2017-02-01
categories: [templates]
keywords: [lists,sections,partials]
menu:
docs:
- parent: "templates"
+ parent: templates
weight: 90
weight: 90
-sections_weight: 90
-draft: false
aliases: [/templates/partial/,/layout/chrome/,/extras/analytics/]
toc: true
---
The following `header.html` partial template is used for [spf13.com](https://spf13.com/):
-{{< code file="layouts/partials/header.html" download="header.html" >}}
+{{< code file="layouts/partials/header.html" >}}
<!DOCTYPE html>
<html class="no-js" lang="en-US" prefix="og: http://ogp.me/ns# fb: http://ogp.me/ns/fb#">
<head>
The following `footer.html` partial template is used for [spf13.com](https://spf13.com/):
-{{< code file="layouts/partials/footer.html" download="footer.html" >}}
+{{< code file="layouts/partials/footer.html" >}}
<footer>
<div>
<p>
</footer>
{{< /code >}}
-[context]: /templates/introduction/ "The most easily overlooked concept to understand about Go templating is how the dot always refers to the current context."
-[customize]: /themes/customizing/ "Hugo provides easy means to customize themes as long as users are familiar with Hugo's template lookup order."
-[listtemps]: /templates/lists/ "To effectively leverage Hugo's system, see how Hugo handles list pages, where content for sections, taxonomies, and the homepage are listed and ordered."
-[lookup order]: /templates/lookup-order/ "To keep your templating dry, read the documentation on Hugo's lookup order."
-[partialcached]: /functions/partialcached/ "Use the partial cached function to improve build times in cases where Hugo can cache partials that don't need to be rendered with every page."
-[singletemps]: /templates/single-page-templates/ "The most common form of template in Hugo is the single content template. Read the docs on how to create templates for individual pages."
+[context]: /templates/introduction/
+[customize]: /hugo-modules/theme-components/
+[listtemps]: /templates/lists/
+[lookup order]: /templates/lookup-order/
+[partialcached]: /functions/partialcached/
+[singletemps]: /templates/single-page-templates/
[themes]: /themes/
title: "Markdown Render Hooks"
linkTitle: "Render Hooks"
description: "Render Hooks allow custom templates to override markdown rendering functionality."
-date: 2017-03-11
categories: [templates]
keywords: [markdown]
toc: true
menu:
docs:
- title: "Markdown Render Hooks"
- parent: "templates"
+ parent: templates
weight: 20
---
## Render Hooks for Headings, Links and Images
+### Context passed to `render-link` and `render-image`
+
The `render-link` and `render-image` templates will receive this context:
Page
PlainText
: The plain variant of the above.
+### Context passed to `render-heading`
+
The `render-heading` template will receive this context:
Page
Here is a code example for how the render-link.html template could look:
{{< code file="layouts/_default/_markup/render-link.html" >}}
-<a href="{{ .Destination | safeURL }}"{{ with .Title}} title="{{ . }}"{{ end }}{{ if strings.HasPrefix .Destination "http" }} target="_blank" rel="noopener"{{ end }}>{{ .Text | safeHTML }}</a>
+<a href="{{ .Destination | safeURL }}"{{ with .Title }} title="{{ . }}"{{ end }}{{ if strings.HasPrefix .Destination "http" }} target="_blank" rel="noopener"{{ end }}>{{ .Text | safeHTML }}</a>
{{< /code >}}
### Image Markdown example
{{< code file="layouts/_default/_markup/render-image.html" >}}
<p class="md__image">
- <img src="{{ .Destination | safeURL }}" alt="{{ .Text }}" {{ with .Title}} title="{{ . }}"{{ end }} />
+ <img src="{{ .Destination | safeURL }}" alt="{{ .Text }}" {{ with .Title }} title="{{ . }}"{{ end }} />
</p>
{{< /code >}}
title: Robots.txt File
linktitle: Robots.txt
description: Hugo can generate a customized robots.txt in the same way as any other template.
-date: 2017-02-01
-publishdate: 2017-02-01
-lastmod: 2017-02-01
categories: [templates]
keywords: [robots,search engines]
menu:
docs:
- parent: "templates"
+ parent: templates
weight: 165
weight: 165
-sections_weight: 165
-draft: false
aliases: [/extras/robots-txt/]
-toc: false
---
To generate a robots.txt file from a template, change the [site configuration][config]:
## Robots.txt Template Example
-{{< code file="layouts/robots.txt" download="robots.txt" >}}
+{{< code file="layouts/robots.txt" >}}
User-agent: *
{{ range .Pages }}
Disallow: {{ .RelPermalink }}
---
title: RSS Templates
-linktitle: RSS Templates
description: Hugo ships with its own RSS 2.0 template that requires almost no configuration, or you can create your own RSS templates.
-date: 2017-02-01
-publishdate: 2017-02-01
-lastmod: 2017-02-01
keywords: [rss, xml, templates]
categories: [templates]
menu:
docs:
- parent: "templates"
+ parent: templates
weight: 150
weight: 150
-sections_weight: 150
-draft: false
toc: true
---
See [Template Lookup Order](/templates/lookup-order/) for the complete reference.
-{{% note "Hugo Ships with an RSS Template" %}}
+{{% note %}}
Hugo ships with its own [RSS 2.0 template](#the-embedded-rssxml). The embedded template will be sufficient for most use cases.
{{% /note %}}
title: Section Page Templates
linktitle: Section Templates
description: Templates used for section pages are **lists** and therefore have all the variables and methods available to list pages.
-date: 2017-02-01
-publishdate: 2017-02-01
-lastmod: 2017-02-01
categories: [templates]
keywords: [lists,sections,templates]
menu:
docs:
- parent: "templates"
+ parent: templates
weight: 40
weight: 40
-sections_weight: 40
-draft: false
aliases: [/templates/sections/]
toc: true
---
## Example: Creating a Default Section Template
-{{< code file="layouts/_default/section.html" download="section.html" >}}
+{{< code file="layouts/_default/section.html" >}}
{{ define "main" }}
<main>
{{ .Content }}
<ul class="contents">
{{ range .Paginator.Pages }}
- <li>{{.Title}}
+ <li>{{ .Title }}
<div>
{{ partial "summary.html" . }}
</div>
title: Create Your Own Shortcodes
linktitle: Shortcode Templates
description: You can extend Hugo's built-in shortcodes by creating your own using the same templating syntax as that for single and list pages.
-date: 2017-02-01
-publishdate: 2017-02-01
-lastmod: 2017-02-01
categories: [templates]
keywords: [shortcodes,templates]
menu:
docs:
- parent: "templates"
+ parent: templates
weight: 100
weight: 100
-sections_weight: 100
-draft: false
-aliases: []
toc: true
---
### File Location
-To create a shortcode, place an HTML template in the `layouts/shortcodes` directory of your [source organization]. Consider the file name carefully since the shortcode name will mirror that of the file but without the `.html` extension. For example, `layouts/shortcodes/myshortcode.html` will be called with either `{{</* myshortcode /*/>}}` or `{{%/* myshortcode /*/%}}` depending on the type of parameters you choose.
+To create a shortcode, place an HTML template in the `layouts/shortcodes` directory of your [source organization]. Consider the file name carefully since the shortcode name will mirror that of the file but without the `.html` extension. For example, `layouts/shortcodes/myshortcode.html` will be called with either `{{</* myshortcode /*/>}}` or `{{%/* myshortcode /*/%}}`.
You can organize your shortcodes in subfolders, e.g. in `layouts/shortcodes/boxes`. These shortcodes would then be accessible with their relative path, e.g:
If a closing shortcode is used, the `.Inner` variable will be populated with the content between the opening and closing shortcodes. If a closing shortcode is required, you can check the length of `.Inner` as an indicator of its existence.
-A shortcode with content declared via the `.Inner` variable can also be declared without the content and without the closing by using the self-closing syntax:
+A shortcode with content declared via the `.Inner` variable can also be declared without the content and without the closing tag by using the self-closing syntax:
```go-html-template
{{</* innershortcode /*/>}}
```
-{{% warning %}}
+{{% note %}}
Any shortcode that refers to `.Inner` must be closed or self-closed.
-{{% /warning %}}
+{{% /note %}}
#### `.Params`
See the [example Vimeo shortcode][vimeoexample] below for `.IsNamedParams` in action.
-{{% warning %}}
+{{% note %}}
While you can create shortcode templates that accept both positional and named parameters, you *cannot* declare shortcodes in content with a mix of parameter types. Therefore, a shortcode declared like `{{</* image src="images/my-image.jpg" "This is my alt text" */>}}` will return an error.
-{{% /warning %}}
+{{% /note %}}
You can also use the variable `.Page` to access all the normal [page variables][pagevars].
</div>
{{< /code >}}
-{{< code file="youtube-embed.html" copy="false" >}}
+{{< code file="youtube-embed.html" copy=false >}}
<div class="embed video-player">
<iframe class="youtube-player" type="text/html"
width="640" height="385"
{{< code file="/layouts/shortcodes/img.html" >}}
<!-- image -->
-<figure {{ with .Get "class" }}class="{{.}}"{{ end }}>
- {{ with .Get "link" }}<a href="{{ . }}">{{ end }}
- <img src="{{ .Get "src" }}" {{ if or (.Get "alt") (.Get "caption") }}alt="{{ with .Get "alt" }}{{ . }}{{ else }}{{ .Get "caption" }}{{ end }}"{{ end }} />
+<figure {{ with .Get "class" }}class="{{ . }}"{{ end }}>
+ {{ with .Get "link" }}<a href="{{ . }}">{{ end }}
+ <img src="{{ .Get "src" }}" {{ if or (.Get "alt") (.Get "caption") }}alt="{{ with .Get "alt" }}{{ . }}{{ else }}{{ .Get "caption" }}{{ end }}"{{ end }} />
{{ if .Get "link" }}</a>{{ end }}
{{ if or (or (.Get "title") (.Get "caption")) (.Get "attr") }}
- <figcaption>{{ if isset .Params "title" }}
+ <figcaption>{{ if isset .Params "title" }}
<h4>{{ .Get "title" }}</h4>{{ end }}
{{ if or (.Get "caption") (.Get "attr") }}<p>
{{ .Get "caption" }}
{{ with .Get "attrlink" }}<a href="{{ . }}"> {{ end }}
- {{ .Get "attr" }}
+ {{ .Get "attr" }}
{{ if .Get "attrlink" }}</a> {{ end }}
</p> {{ end }}
- </figcaption>
- {{ end }}
+ </figcaption>
+ {{ end }}
</figure>
<!-- image -->
{{< /code >}}
Would be rendered as:
-{{< code file="img-output.html" copy="false" >}}
+{{< code file="img-output.html" copy=false >}}
<figure>
- <img src="/media/spf13.jpg" />
- <figcaption>
- <h4>Steve Francia</h4>
- </figcaption>
+ <img src="/media/spf13.jpg" />
+ <figcaption>
+ <h4>Steve Francia</h4>
+ </figcaption>
</figure>
{{< /code >}}
Would be rendered as:
-{{< code file="vimeo-iframes.html" copy="false" >}}
+{{< code file="vimeo-iframes.html" copy=false >}}
<div class="vimeo-container">
<iframe src="https://player.vimeo.com/video/49718712" allowfullscreen></iframe>
</div>
The rendered output of the HTML example code block will be as follows:
-{{< code file="syntax-highlighted.html" copy="false" >}}
+{{< code file="syntax-highlighted.html" copy=false >}}
<div class="highlight" style="background: #272822"><pre style="line-height: 125%"><span style="color: #f92672"><html></span>
<span style="color: #f92672"><body></span> This HTML <span style="color: #f92672"></body></span>
<span style="color: #f92672"></html></span>
{{< code file="layouts/shortcodes/img.html" >}}
{{- $src := .Get "src" -}}
{{- with .Parent -}}
- <img src="{{$src}}" class="{{ .Get "class" }}-image">
+ <img src="{{ $src }}" class="{{ .Get "class" }}-image">
{{- else -}}
- <img src="{{$src}}">
+ <img src="{{ $src }}">
{{- end -}}
{{< /code >}}
---
title: Single Page Templates
-linktitle:
description: The primary view of content in Hugo is the single view. Hugo will render every Markdown file provided with a corresponding single template.
-date: 2017-02-01
-publishdate: 2017-02-01
-lastmod: 2017-04-06
categories: [templates]
keywords: [page, templates]
menu:
docs:
- parent: "templates"
+ parent: templates
weight: 60
weight: 60
-sections_weight: 60
-draft: false
aliases: [/layout/content/]
toc: true
---
This single page template makes use of Hugo [base templates], the [`.Format` function] for dates, the [`.WordCount` page variable][pagevars], and ranges through the single content's specific [taxonomies][pagetaxonomy]. [`with`] is also used to check whether the taxonomies are set in the front matter.
-{{< code file="layouts/posts/single.html" download="single.html" >}}
+{{< code file="layouts/posts/single.html" >}}
{{ define "main" }}
<section id="main">
<h1 id="title">{{ .Title }}</h1>
<div>
- <article id="content">
- {{ .Content }}
- </article>
+ <article id="content">
+ {{ .Content }}
+ </article>
</div>
</section>
<aside id="meta">
- <div>
- <section>
- <h4 id="date"> {{ .Date.Format "Mon Jan 2, 2006" }} </h4>
- <h5 id="wordcount"> {{ .WordCount }} Words </h5>
- </section>
- {{ with .GetTerms "topics" }}
- <ul id="topics">
- {{ range . }}
- <li><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></li>
- {{ end }}
- </ul>
- {{ end }}
- {{ with .GetTerms "tags" }}
- <ul id="tags">
- {{ range . }}
- <li><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></li>
- {{ end }}
- </ul>
- {{ end }}
- </div>
- <div>
- {{ with .PrevInSection }}
- <a class="previous" href="{{.Permalink}}"> {{.Title}}</a>
+ <div>
+ <section>
+ <h4 id="date"> {{ .Date.Format "Mon Jan 2, 2006" }} </h4>
+ <h5 id="wordcount"> {{ .WordCount }} Words </h5>
+ </section>
+ {{ with .GetTerms "topics" }}
+ <ul id="topics">
+ {{ range . }}
+ <li><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></li>
{{ end }}
- {{ with .NextInSection }}
- <a class="next" href="{{.Permalink}}"> {{.Title}}</a>
+ </ul>
+ {{ end }}
+ {{ with .GetTerms "tags" }}
+ <ul id="tags">
+ {{ range . }}
+ <li><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></li>
{{ end }}
- </div>
+ </ul>
+ {{ end }}
+ </div>
+ <div>
+ {{ with .PrevInSection }}
+ <a class="previous" href="{{ .Permalink }}"> {{ .Title }}</a>
+ {{ end }}
+ {{ with .NextInSection }}
+ <a class="next" href="{{ .Permalink }}"> {{ .Title }}</a>
+ {{ end }}
+ </div>
</aside>
{{ end }}
{{< /code >}}
---
title: Sitemap Templates
description: Hugo provides built-in sitemap templates.
-date: 2017-02-01
categories: [templates]
keywords: [sitemap, xml, templates]
menu:
docs:
- parent: "templates"
+ parent: templates
weight: 160
weight: 160
-sections_weight: 160
-draft: false
aliases: [/layout/sitemap/,/templates/sitemap/]
toc: true
---
disableKinds = ['sitemap']
{{</ code-toggle >}}
-[`publishDir`]: {{< relref "getting-started/configuration#publishdir" >}}
+[`publishDir`]: /getting-started/configuration#publishdir
[change frequency]: <https://www.sitemaps.org/protocol.html#changefreqdef>
[priority]: <https://www.sitemaps.org/protocol.html#priority>
[sitemap protocol]: <https://www.sitemaps.org/protocol.html>
---
title: Taxonomy Templates
-# linktitle:
description: Taxonomy templating includes taxonomy list pages, taxonomy terms pages, and using taxonomies in your single page templates.
-date: 2017-02-01
-publishdate: 2017-02-01
-lastmod: 2017-02-01
categories: [templates]
keywords: [taxonomies,metadata,front matter,terms,templates]
menu:
docs:
- parent: "templates"
+ parent: templates
weight: 50
weight: 50
-sections_weight: 50
-draft: false
aliases: [/taxonomies/displaying/,/templates/terms/,/indexes/displaying/,/taxonomies/templates/,/indexes/ordering/, /templates/taxonomies/, /templates/taxonomy/]
toc: true
---
Content can be assigned weight for each taxonomy that it's assigned to.
-```txt
-+++
+
+{{< code-toggle file="content/example.md" fm=true copy=false >}}
tags = [ "a", "b", "c" ]
tags_weight = 22
categories = ["d"]
-title = "foo"
+title = "Example"
categories_weight = 44
-+++
-Front Matter with weighted tags and categories
-```
+{{< /code-toggle >}}
The convention is `taxonomyname_weight`.
Both templates are covered in detail in the templates section.
-A [list template](/templates/list/) is any template that will be used to render multiple pieces of content in a single html page. This template will be used to generate all the automatically created taxonomy pages.
+A [list template](/templates/lists/) is any template that will be used to render multiple pieces of content in a single html page. This template will be used to generate all the automatically created taxonomy pages.
-A [taxonomy terms template](/templates/terms/) is a template used to
+A [taxonomy template](/templates/taxonomy-templates/) is a template used to
generate the list of terms for a given template.
<!-- Begin /taxonomies/displaying/ -->
There are four common ways you can display the data in your
taxonomies in addition to the automatic taxonomy pages created by hugo
-using the [list templates](/templates/list/):
+using the [list templates](/templates/lists/):
1. For a given piece of content, you can list the terms attached
2. For a given piece of content, you can list other content with the same
<li>{{ $key }}</li>
<ul>
{{ range $taxonomy.Pages }}
- <li hugo-nav="{{ .RelPermalink}}"><a href="{{ .Permalink}}">{{ .LinkTitle }}</a></li>
+ <li hugo-nav="{{ .RelPermalink }}"><a href="{{ .Permalink }}">{{ .LinkTitle }}</a></li>
{{ end }}
</ul>
{{ end }}
This example will list all taxonomies and their terms, as well as all the content assigned to each of the terms.
-{{< code file="layouts/partials/all-taxonomies.html" download="all-taxonomies.html" download="all-taxonomies.html" >}}
+{{< code file="layouts/partials/all-taxonomies.html" >}}
<section>
<ul id="all-taxonomies">
{{ range $taxonomy_term, $taxonomy := .Site.Taxonomies }}
<li>{{ $key }}</li>
<ul>
{{ range $value.Pages }}
- <li hugo-nav="{{ .RelPermalink}}">
- <a href="{{ .Permalink}}">{{ .LinkTitle }}</a>
+ <li hugo-nav="{{ .RelPermalink }}">
+ <a href="{{ .Permalink }}">{{ .LinkTitle }}</a>
</li>
{{ end }}
</ul>
## `.Site.GetPage` for Taxonomies
-Because taxonomies are lists, the [`.GetPage` function][getpage] can be used to get all the pages associated with a particular taxonomy term using a terse syntax. The following ranges over the full list of tags on your site and links to each of the individual taxonomy pages for each term without having to use the more fragile URL construction of the ["List All Site Tags" example above]({{< relref "#example-list-all-site-tags" >}}):
+Because taxonomies are lists, the [`.GetPage` function][getpage] can be used to get all the pages associated with a particular taxonomy term using a terse syntax. The following ranges over the full list of tags on your site and links to each of the individual taxonomy pages for each term without having to use the more fragile URL construction of the ["List All Site Tags" example above](#example-list-all-site-tags):
{{< code file="links-to-all-tags.html" >}}
{{ $taxo := "tags" }}
<ul class="{{ $taxo }}">
{{ with ($.Site.GetPage (printf "/%s" $taxo)) }}
{{ range .Pages }}
- <li><a href="{{ .Permalink }}">{{ .Title}}</a></li>
+ <li><a href="{{ .Permalink }}">{{ .Title }}</a></li>
{{ end }}
{{ end }}
</ul>
---
title: Template Debugging
description: You can use Go templates' `printf` function to debug your Hugo templates. These snippets provide a quick and easy visualization of the variables available to you in different contexts.
-date: 2017-02-01
-publishdate: 2017-02-01
categories: [templates]
keywords: [debugging,troubleshooting]
menu:
docs:
- parent: "templates"
+ parent: templates
weight: 180
weight: 180
-sections_weight: 180
-aliases: []
-toc: false
---
Here are some snippets you can add to your template to answer some common questions.
---
title: Content View Templates
-# linktitle: Content Views
description: Hugo can render alternative views of your content, which is especially useful in list and summary views.
-date: 2017-02-01
-publishdate: 2017-02-01
-lastmod: 2017-02-01
categories: [templates]
keywords: [views]
menu:
docs:
- parent: "templates"
+ parent: templates
weight: 70
weight: 70
-sections_weight: 70
-draft: false
-aliases: []
toc: true
---
In this example, `.Render` is passed into the template to call the [render function][render]. `.Render` is a special function that instructs content to render itself with the view template provided as the first argument. In this case, the template is going to render the `summary.html` view that follows:
-{{< code file="layouts/_default/list.html" download="list.html" >}}
+{{< code file="layouts/_default/list.html" >}}
<main id="main">
<div>
- <h1 id="title">{{ .Title }}</h1>
- {{ range .Pages }}
- {{ .Render "summary"}}
- {{ end }}
+ <h1 id="title">{{ .Title }}</h1>
+ {{ range .Pages }}
+ {{ .Render "summary" }}
+ {{ end }}
</div>
</main>
{{< /code >}}
Hugo will pass the entire page object to the following `summary.html` view template. (See [Page Variables][pagevars] for a complete list.)
-{{< code file="layouts/_default/summary.html" download="summary.html" >}}
+{{< code file="layouts/_default/summary.html" >}}
<article class="post">
<header>
<h2><a href='{{ .Permalink }}'> {{ .Title }}</a> </h2>
Continuing on the previous example, we can change our render function to use a smaller `li.html` view by changing the argument in the call to the `.Render` function (i.e., `{{ .Render "li" }}`).
-{{< code file="layouts/_default/li.html" download="li.html" >}}
+{{< code file="layouts/_default/li.html" >}}
<li>
<a href="{{ .Permalink }}">{{ .Title }}</a>
<div class="meta">{{ .Date.Format "Mon, Jan 2, 2006" }}</div>
title: Developer Tools
linktitle: Developer Tools Overview
description: In addition to Hugo's powerful CLI, there is a large number of community-developed tool chains for Hugo developers.
-date: 2016-12-05
-publishdate: 2016-12-05
-lastmod: 2017-02-26
categories: [developer tools]
keywords: []
menu:
docs:
- parent: "tools"
+ parent: tools
weight: 01
weight: 01
-sections_weight: 01
---
One of Hugo's greatest strengths is its passionate---and always evolving---developer community. With the exception of the `highlight` shortcode mentioned in [Syntax Highlighting][syntax], the tools and other projects featured in this section are offerings from both commercial services and open-source projects, many of which are developed by Hugo developers just like you.
[See the popularity of Hugo compared with other static site generators.][staticgen]
[staticgen]: https://staticgen.com
-[syntax]: /tools/syntax-highlighting/
+[syntax]: /content-management/syntax-highlighting/
title: Editor Plug-ins for Hugo
linktitle: Editor Plug-ins
description: The Hugo community uses a wide range of preferred tools and has developed plug-ins for some of the most popular text editors to help automate parts of your workflow.
-date: 2017-02-01
-publishdate: 2017-02-01
categories: [developer tools]
keywords: [editor, plug-ins]
menu:
docs:
- parent: "tools"
+ parent: tools
weight: 50
weight: 50
-sections_weight: 50
-draft: false
-aliases: []
-toc: false
---
The Hugo community uses a wide range of preferred tools and has developed plug-ins for some of the most popular text editors to help automate parts of your workflow.
title: Frontend Interfaces with Hugo
linktitle: Frontends
description: Do you prefer a graphical user interface over a text editor? Give these frontends a try.
-date: 2017-02-01
-publishdate: 2017-02-01
-lastmod: 2017-02-01
categories: [developer tools]
keywords: [frontend, gui]
menu:
docs:
- parent: "tools"
+ parent: tools
weight: 40
weight: 40
-sections_weight: 40
-draft: false
-aliases: []
-toc: false
---
- [enwrite](https://github.com/zzamboni/enwrite). Enwrite enables evernote-powered, statically generated blogs and websites. Now posting to your blog or updating your website is as easy as writing a new note in Evernote!
title: Migrate to Hugo
linktitle: Migrations
description: A list of community-developed tools for migrating from your existing static site generator or content management system to Hugo.
-date: 2017-02-01
-publishdate: 2017-02-01
-lastmod: 2022-03-26
keywords: [migrations, jekyll, wordpress, drupal, ghost, contentful]
menu:
docs:
- parent: "tools"
+ parent: tools
weight: 10
weight: 10
-sections_weight: 10
-draft: false
aliases: [/developer-tools/migrations/, /developer-tools/migrated/]
toc: true
---
## Contentful
-- [contentful2hugo](https://github.com/ArnoNuyts/contentful2hugo) - A tool to create content-files for Hugo from content on [Contentful](https://www.contentful.com/).
+- [contentful-hugo](https://github.com/ModiiMedia/contentful-hugo) - A tool to create content-files for Hugo from content on [Contentful](https://www.contentful.com/).
## BlogML
title: Other Hugo Community Projects
linktitle: Other Projects
description: Some interesting projects developed by the Hugo community that don't quite fit into our other developer tool categories.
-date: 2017-02-01
-publishdate: 2017-02-01
categories: [developer tools]
keywords: [frontend, gui]
menu:
docs:
- parent: "tools"
+ parent: tools
weight: 70
weight: 70
-sections_weight: 70
-aliases: []
-toc: false
---
And for all the other small things around Hugo:
title: Search for your Hugo Website
linktitle: Search
description: See some of the open-source and commercial search options for your newly created Hugo website.
-date: 2017-02-01
-publishdate: 2017-02-01
-categories: [developer tools]
-keywords: [search,tools]
menu:
docs:
- parent: "tools"
+ parent: tools
weight: 60
weight: 60
-sections_weight: 60
-aliases: []
toc: true
---
## Commercial Search Services
* [Algolia](https://www.algolia.com/)'s Search API makes it easy to deliver a great search experience in your apps and websites. Algolia Search provides hosted full-text, numerical, faceted, and geolocalized search.
-* [Bonsai](https://www.bonsai.io) is a fully-managed hosted Elasticsearch service that is fast, reliable, and simple to set up. Easily ingest your docs from Hugo into Elasticsearch following [this guide from the docs](https://docs.bonsai.io/docs/hugo).
+* [Bonsai](https://www.bonsai.io) is a fully-managed hosted Elasticsearch service that is fast, reliable, and simple to set up. Easily ingest your docs from Hugo into Elasticsearch following [this guide from the docs](https://docs.bonsai.io/hc/en-us/articles/13929190788756-Hugo).
* [ExpertRec](https://www.expertrec.com/) is a hosted search-as-a-service solution that is fast and scalable. Set-up and integration is extremely easy and takes only a few minutes. The search settings can be modified without coding using a dashboard.
---
title: Starter Kits
-linktitle: Starter Kits
description: A list of community-developed projects designed to help you get up and running with Hugo.
-date: 2017-02-22
-publishdate: 2017-02-01
-lastmod: 2018-08-11
keywords: [starters,assets,pipeline]
menu:
docs:
- parent: "tools"
+ parent: tools
weight: 30
weight: 30
-sections_weight: 30
-draft: false
aliases: [/developer-tools/migrations/,/developer-tools/migrated/]
-toc: false
---
Know of a Hugo-related starter kit that isn't mentioned here? [Please add it to the list.][addkit]
-{{% note "Starter Kits are Not Maintained by the Hugo Team"%}}
+{{% note %}}
The following starter kits are developed by active members of the Hugo community. If you find yourself having issues with any of the projects, it's best to file an issue directly with the project's maintainer(s).
{{% /note %}}
[addkit]: https://github.com/gohugoio/hugo/edit/master/docs/content/en/tools/starter-kits.md
[amp]: https://amp.dev
[GOHUGO AMP]: https://github.com/wildhaber/gohugo-amp
-[gohugodocs]: https://gohugo-amp.gohugohq.com/
+[gohugodocs]: https://github.com/wildhaber/gohugo-amp.gohugohq.com
[hugow]: https://github.com/khos2ow/hugo-wrapper
[hugow-test]: https://github.com/khos2ow/hugo-wrapper#tested-on
[Hyas]: https://github.com/h-enk/hyas
---
title: Troubleshoot
-linktitle: Troubleshoot
description: Frequently asked questions and known issues pulled from the Hugo Discuss forum.
-date: 2017-02-01
-publishdate: 2017-02-01
-lastmod: 2017-02-01
menu:
docs:
- parent: "troubleshooting"
+ parent: troubleshooting
weight: 1
weight: 1
-draft: false
-hidesectioncontents: false
-slug:
aliases: [/troubleshooting/faqs/,/faqs/]
-toc: false
-notesforauthors:
---
The Troubleshooting section includes known issues, recent workarounds, and FAQs pulled from the [Hugo Discussion Forum][forum].
---
title: Build Performance
-linktitle: Build Performance
description: An overview of features used for diagnosing and improving performance issues in site builds.
-date: 2017-03-12
-publishdate: 2017-03-12
-keywords: [performance, build]
-categories: [troubleshooting]
menu:
docs:
- parent: "troubleshooting"
+ parent: troubleshooting
weight: 3
-slug:
-aliases: []
toc: true
---
of executions. The [`partialCached`][partialcached] template function provides
caching capabilities for `partial` templates.
-{{% tip %}}
+{{% note %}}
Note that you can create cached variants of each `partial` by passing additional
parameters to `partialCached` beyond the initial context. See the
`partialCached` documentation for more details.
-{{% /tip %}}
+{{% /note %}}
-[partialCached]:{{< ref "/functions/partialCached.md" >}}
+[partialCached]: /functions/partialcached
title: Frequently Asked Questions
linktitle: FAQ
description: Solutions to some common Hugo problems.
-date: 2018-02-10
categories: [troubleshooting]
menu:
docs:
- parent: "troubleshooting"
+ parent: troubleshooting
keywords: [faqs]
weight: 2
toc: true
title: Variables and Params
linktitle: Variables Overview
description: Page-, file-, taxonomy-, and site-level variables and parameters available in templates.
-date: 2017-02-01
-publishdate: 2017-02-01
-lastmod: 2017-02-01
categories: [variables and params]
keywords: [variables,params,values,globals]
-draft: false
menu:
docs:
- parent: "variables"
+ parent: variables
weight: 1
-weight: 01 #rem
-sections_weight: 01
+weight: 01
aliases: [/templates/variables/]
-toc: false
---
Hugo's templates are context aware and make a large number of values available to you as you're creating views for your website.
---
title: File Variables
-linktitle:
-description: "You can access filesystem-related data for a content file in the `.File` variable."
-date: 2017-02-01
-publishdate: 2017-02-01
-lastmod: 2017-02-01
+description: "Use File variables to access file-related values for each page that is backed by a file."
categories: [variables and params]
keywords: [files]
-draft: false
menu:
docs:
- parent: "variables"
+ parent: variables
weight: 40
+toc: true
weight: 40
-sections_weight: 40
aliases: [/variables/file-variables/]
-toc: false
---
+## Variables
-{{% note "Rendering Local Files" %}}
-For information on creating shortcodes and templates that tap into Hugo's file-related feature set, see [Local File Templates](/templates/files/).
+{{% note %}}
+The path separators (slash or backslash) in `.File.Path`, `.File.Dir`, and `.File.Filename` depend on the operating system.
{{% /note %}}
-The `.File` object contains the following fields:
-
.File.Path
-: the original relative path of the page, relative to the content dir (e.g., `posts/foo.en.md`)
-
-.File.LogicalName
-: the name of the content file that represents a page (e.g., `foo.en.md`)
+: (`string`) The file path, relative to the `content` directory.
-.File.TranslationBaseName
-: the filename without extension or optional language identifier (e.g., `foo`)
+.File.Dir
+: (`string`) The file path, excluding the file name, relative to the `content` directory.
-.File.ContentBaseName
-: is either a TranslationBaseName or name of containing folder if file is a leaf bundle.
+.File.LogicalName
+: (`string`) The file name.
.File.BaseFileName
-: the filename without extension (e.g., `foo.en`)
+: (`string`) The file name, excluding the extension.
+
+.File.TranslationBaseName
+: (`string`) The file name, excluding the extension and language identifier.
.File.Ext
-: the file extension of the content file (e.g., `md`).
+: (`string`) The file extension.
.File.Lang
-: the language associated with the given file if Hugo's [Multilingual features][multilingual] are enabled (e.g., `en`)
+: (`string`) The language associated with the given file.
-.File.Dir
-: given the path `content/posts/dir1/dir2/`, the relative directory path of the content file will be returned (e.g., `posts/dir1/dir2/`). Note that the path separator (`\` or `/`) could be dependent on the operating system.
+
+.File.ContentBaseName
+: (`string`) If the page is a branch or leaf bundle, the name of the containing directory, else the `.TranslationBaseName`.
+
+.File.Filename
+: (`string`) The absolute file path.
.File.UniqueID
-: the MD5-checksum of the content file's path.
+: (`string`) The MD5 hash of `.File.Path`.
+
+## Examples
+
+```text
+content/
+├── news/
+│ ├── b/
+│ │ ├── index.de.md <-- leaf bundle
+│ │ └── index.en.md <-- leaf bundle
+│ ├── a.de.md <-- regular content
+│ ├── a.en.md <-- regular content
+│ ├── _index.de.md <-- branch bundle
+│ └── _index.en.md <-- branch bundle
+├── _index.de.md
+└── _index.en.md
+```
+
+With the content structure above, the `.File` objects for the English pages contain the following properties:
+
+ |regular content|leaf bundle|branch bundle
+:--|:--|:--|:--
+Path|news/a.en.md|news/b/index.en.md|news/_index.en.md
+Dir|news/|news/b/|news/
+LogicalName|a.en.md|index.en.md|_index.en.md
+BaseFileName|a.en|index.en|_index.en
+TranslationBaseName|a|index|_index
+Ext|md|md|md
+Lang|en|en|en
+ContentBaseName|a|b|news
+Filename|/home/user/...|/home/user/...|/home/user/...
+UniqueID|15be14b...|186868f...|7d9159d...
+
+## Defensive coding
+
+Some of the pages on a site may not be backed by a file. For example:
+
+- Top level section pages
+- Taxonomy pages
+- Term pages
+
+Without a backing file, Hugo will throw a warning if you attempt to access a `.File` property. For example:
+
+```text
+WARN .File.ContentBaseName on zero object. Wrap it in if or with...
+```
+
+To code defensively:
-[Multilingual]: /content-management/multilingual/
+```go-html-template
+{{ with .File }}
+ {{ .ContentBaseName }}
+{{ end }}
+```
title: Git Info Variables
linktitle: Git Variables
description: Get the last Git revision information for every content file.
-date: 2017-03-12
-publishdate: 2017-03-12
-lastmod: 2017-03-12
categories: [variables and params]
keywords: [git]
-draft: false
menu:
docs:
- parent: "variables"
+ parent: variables
weight: 70
weight: 70
-sections_weight: 70
aliases: [/extras/gitinfo/]
-toc: false
-wip: false
---
-{{% note "`.GitInfo` Performance Considerations" %}}
+{{% note %}}
Hugo's Git integrations should be fairly performant but *can* increase your build time. This will depend on the size of your Git history.
{{% /note %}}
---
-title: Menu Entry Properties
-linktitle: Menu Entry Properties
-description: A menu entry in a menu-template has specific variables and functions to make menu management easier.
-date: 2017-03-12
-publishdate: 2017-03-12
-lastmod: 2017-03-12
+title: Menu Variables
+description: Use these variables and methods in your menu templates.
categories: [variables and params]
keywords: [menus]
-draft: false
menu:
docs:
- title: "variables defined by a menu entry"
- parent: "variables"
+ parent: variables
weight: 50
weight: 50
-sections_weight: 50
aliases: [/variables/menu/]
-toc: false
---
-A **menu entry** has the following properties available that can be used in a
-[menu template][menu-template].
+## Variables
-## Menu Entry Variables
+After [defining menu entries], access their properties in [menu templates] with these variables.
+
+.Children
+: (`menu`) A collection of child menu entries, if any, under the current menu entry.
+
+.Identifier
+: (`string`) The `identifier` property of the menu entry. If you define the menu entry [automatically], the page's `.Section`.
+
+.KeyName
+: (`string`) The `identifier` property of the menu entry, else the `name` property.
.Menu
-: _string_ <br />
-Name of the **menu** that contains this **menu entry**.
+: (`string`) The identifier of the menu that contains the menu entry.
-.URL
-: _string_ <br />
-URL that the menu entry points to. The `url` key, if set for the menu entry,
-sets this value. If that key is not set, and if the menu entry is set in a page
-front-matter, this value defaults to the page's `.RelPermalink`.
+.Name
+: (`string`) The `name` property of the menu entry.
+
+- If you define the menu entry [automatically], the page's `.LinkTitle`, else the page's `.Title`.
+- If you define the menu [in front matter] or [in site configuration], falls back to the page's `.LinkTitle`, then to the page's `.Title`.
.Page
-: _\*Page_ <br />
-Reference to the [page object][page-object] associated with the menu entry. This
-will be non-nil if the menu entry is set via a page's front-matter and not via
-the site config.
+: (`page`) A reference to the page associated with the menu entry.
+<!-- This provides no value when rendering menu. Omitting to avoid confusion.
.PageRef
-: _string_ <br /> Can be set if defined in site config and the menu entry refers to a Page. [site.GetPage](/functions/getpage/) will be used to do the page lookup. If this is set, you don't need to set the `URL`.
+: (`string`) The `pageRef` property of the menu entry.
+-->
-.Name
-: _string_ <br />
-Name of the menu entry. The `name` key, if set for the menu entry, sets
-this value. If that key is not set, and if the menu entry is set in a page
-front-matter, this value defaults to the page's `.LinkTitle`.
+.Params
+: (`map`) The `params` property of the menu entry.
-.Identifier
-: _string_ <br />
-Value of the `identifier` key if set for the menu entry. This value must be
-unique for each menu entry. **It is necessary to set a unique identifier
-manually if two or more menu entries have the same `.Name`.**
+.Parent
+: (`string`) The `parent` property of the menu entry.
+
+.Post
+: (`template.HTML`) The `post` property of the menu entry.
.Pre
-: _template.HTML_ <br />
-Value of the `pre` key if set for the menu entry. This value typically contains
-a string representing HTML.
+: (`template.HTML`) The `pre` property of the menu entry.
-.Post
-: _template.HTML_ <br />
-Value of the `post` key if set for the menu entry. This value typically contains
-a string representing HTML.
+.Title
+: (`string`) The `title` property of the menu entry.
-.Weight
-: _int_ <br />
-Value of the `weight` key if set for the menu entry. By default the entries in
-a menu are sorted ascending by their `weight`. If that key is not set, and if
-the menu entry is set in a page front-matter, this value defaults to the page's
-`.Weight`.
+- If you define the menu entry [automatically], the page's `.LinkTitle`, else the page's `.Title`.
+- If you define the menu [in front matter] or [in site configuration], falls back to the page's `.LinkTitle`, then to the page's `.Title`.
-.Parent
-: _string_ <br />
-Name (or Identifier if present) of this menu entry's parent **menu entry**. The
-`parent` key, if set for the menu entry, sets this value. If this key is set,
-this menu entry nests under that parent entry, else it nests directly under the
-`.Menu`.
+.URL
+: (`string`) The `.RelPermalink` of the page associated with the menu entry. For menu entries pointing to external resources, the `url` property of the menu entry.
-.Children
-: _Menu_ <br />
-This value is auto-populated by Hugo. It is a collection of children menu
-entries, if any, under the current menu entry.
+.Weight
+: (`int`) The `weight` property of the menu entry.
-## Menu Entry Functions
+- If you define the menu entry [automatically], the page's `.Weight`.
+- If you define the menu [in front matter] or [in site configuration], falls back to the page's `.Weight`.
-Menus also have the following functions available:
+## Methods
.HasChildren
-: _boolean_ <br />
-Returns `true` if `.Children` is non-nil.
-
-.KeyName
-: _string_ <br />
-Returns the `.Identifier` if present, else returns the `.Name`.
+: (`bool`) Returns `true` if `.Children` is non-nil.
.IsEqual
-: _boolean_ <br />
-Returns `true` if the two compared menu entries represent the same menu entry.
+: (`bool`) Returns `true` if the compared menu entries represent the same menu entry.
.IsSameResource
-: _boolean_ <br />
-Returns `true` if the two compared menu entries have the same `.URL`.
-
-.Title
-: _string_ <br />
-Link title, meant to be used in the `title` attribute of a menu entry's
-`<a>`-tags. Returns the menu entry's `title` key if set. Else, if the menu
-entry was created through a page's front-matter, it returns the page's
-`.LinkTitle`. Else, it just returns an empty string.
-
-## Other Menu-related Functions
-
-Additionally, here are some relevant methods available to menus on a page:
+: (`bool`) Returns `true` if the compared menu entries point to the same resource.
-.IsMenuCurrent
-: _(menu string, menuEntry *MenuEntry ) boolean_ <br />
-See [`.IsMenuCurrent` method](/functions/ismenucurrent/).
+.Page.HasMenuCurrent
+: (`bool`) Use this method to determine ancestors of the active menu entry. See [details](/functions/hasmenucurrent/).
-.HasMenuCurrent
-: _(menu string, menuEntry *MenuEntry) boolean_ <br />
-See [`.HasMenuCurrent` method](/functions/hasmenucurrent/).
+.Page.IsMenuCurrent
+: (`bool`) Use this method to determine the active menu entry. See [details](/functions/ismenucurrent/).
-[menu-template]: /templates/menu-templates/
-[page-object]: /variables/page/
+[automatically]: /content-management/menus/#define-automatically
+[defining menu entries]: /content-management/menus/#overview
+[in front matter]: /content-management/menus/#define-in-front-matter
+[in site configuration]: /content-management/menus/#define-in-site-configuration
+[menu templates]: /templates/menu-templates/
---
title: Page Variables
-linktitle:
description: Page-level variables are defined in a content file's front matter, derived from the content's file location, or extracted from the content body itself.
-date: 2017-02-01
-publishdate: 2017-02-01
categories: [variables and params]
keywords: [pages]
-draft: false
menu:
docs:
- title: "variables defined by a page"
- parent: "variables"
+ parent: variables
weight: 20
weight: 20
-sections_weight: 20
-aliases: []
toc: true
---
The following is a list of page-level variables. Many of these will be defined in the front matter, derived from file location, or extracted from the content itself.
-{{% note "`.Scratch`" %}}
-See [`.Scratch`](/functions/scratch/) for page-scoped, writable variables.
-{{% /note %}}
-
## Page Variables
.AlternativeOutputFormats
: aliases of this page
.Ancestors
-: get the ancestors of each page, simplify [breadcrumb navigation]({{< relref "content-management/sections#example-breadcrumb-navigation" >}}) implementation complexity
+: get the ancestors of each page, simplify [breadcrumb navigation](/content-management/sections#example-breadcrumb-navigation) implementation complexity
.BundleType
: the [bundle] type: `leaf`, `branch`, or an empty string if the page is not a bundle.
.File
: filesystem-related data for this content file. See also [File Variables].
+.Fragments
+: Fragments returns the fragments for this page. See [Page Fragments](#page-fragments).
+
.FuzzyWordCount
: the approximate number of words in the content.
: access when creating links to the content. If set, Hugo will use the `linktitle` from the front matter before `title`.
.Next
-: Points up to the next [regular page](/variables/site/#site-pages) (sorted by Hugo's [default sort](/templates/lists#default-weight--date--linktitle--filepath)). Example: `{{with .Next}}{{.Permalink}}{{end}}`. Calling `.Next` from the first page returns `nil`.
+: Points up to the next [regular page](/variables/site/#site-pages) (sorted by Hugo's [default sort](/templates/lists#default-weight--date--linktitle--filepath)). Example: `{{ with .Next }}{{ .Permalink }}{{ end }}`. Calling `.Next` from the first page returns `nil`.
.NextInSection
-: Points up to the next [regular page](/variables/site/#site-pages) below the same top level section (e.g. in `/blog`)). Pages are sorted by Hugo's [default sort](/templates/lists#default-weight--date--linktitle--filepath). Example: `{{with .NextInSection}}{{.Permalink}}{{end}}`. Calling `.NextInSection` from the first page returns `nil`.
+: Points up to the next [regular page](/variables/site/#site-pages) below the same top level section (e.g. in `/blog`)). Pages are sorted by Hugo's [default sort](/templates/lists#default-weight--date--linktitle--filepath). Example: `{{ with .NextInSection }}{{ .Permalink }}{{ end }}`. Calling `.NextInSection` from the first page returns `nil`.
.OutputFormats
: contains all formats, including the current format, for a given page. Can be combined the with [`.Get` function](/functions/get/) to grab a specific format. (See [Output Formats](/templates/output-formats/).)
.Pages
: a collection of associated pages. This value will be `nil` within
- the context of regular content pages. See [`.Pages`]({{< relref "page.md#pages" >}}).
+ the context of regular content pages. See [`.Pages`](#pages).
.Permalink
: the Permanent link for this page; see [Permalinks](/content-management/urls/)
: the slice of strings that results from splitting .Plain into words, as defined in Go's [strings.Fields](https://pkg.go.dev/strings#Fields).
.Prev
-: Points down to the previous [regular page](/variables/site/#site-pages) (sorted by Hugo's [default sort](/templates/lists#default-weight--date--linktitle--filepath)). Example: `{{if .Prev}}{{.Prev.Permalink}}{{end}}`. Calling `.Prev` from the last page returns `nil`.
+: Points down to the previous [regular page](/variables/site/#site-pages) (sorted by Hugo's [default sort](/templates/lists#default-weight--date--linktitle--filepath)). Example: `{{ if .Prev }}{{ .Prev.Permalink }}{{ end }}`. Calling `.Prev` from the last page returns `nil`.
.PrevInSection
-: Points down to the previous [regular page](/variables/site/#site-pages) below the same top level section (e.g. `/blog`). Pages are sorted by Hugo's [default sort](/templates/lists#default-weight--date--linktitle--filepath). Example: `{{if .PrevInSection}}{{.PrevInSection.Permalink}}{{end}}`. Calling `.PrevInSection` from the last page returns `nil`.
+: Points down to the previous [regular page](/variables/site/#site-pages) below the same top level section (e.g. `/blog`). Pages are sorted by Hugo's [default sort](/templates/lists#default-weight--date--linktitle--filepath). Example: `{{ if .PrevInSection }}{{ .PrevInSection.Permalink }}{{ end }}`. Calling `.PrevInSection` from the last page returns `nil`.
.PublishDate
: the date on which the content was or will be published; `.Publishdate` pulls from the `publishdate` field in a content's front matter. See also `.ExpiryDate`, `.Date`, and `.Lastmod`.
.WordCount
: the number of words in the content.
+## Writable Page-scoped Variables
+
+[.Scratch][scratch]
+: returns a Scratch to store and manipulate data. In contrast to the [`.Store`][store] method, this scratch is reset on server rebuilds.
+
+[.Store][store]
+: returns a Scratch to store and manipulate data. In contrast to the [`.Scratch`][scratch] method, this scratch is not reset on server rebuilds.
+
## Section Variables and Methods
Also see [Sections](/content-management/sections/).
{{< getcontent path="readfiles/pages-vs-site-pages.md" >}}
+## Page Fragments
+
+{{< new-in "0.111.0" >}}
+
+The `.Fragments` method returns a list of fragments for the current page.
+
+.Headings
+: A recursive list of headings for the current page. Can be used to generate a table of contents.
+
+{{< todo >}}add .Headings toc example{{< /todo >}}
+
+.Identifiers
+: A sorted list of identifiers for the current page. Can be used to check if a page contains a specific identifier or if a page contains duplicate identifiers:
+
+```go-html-template
+{{ if .Fragments.Identifiers.Contains "my-identifier" }}
+ <p>Page contains identifier "my-identifier"</p>
+{{ end }}
+
+{{ if gt (.Fragments.Identifiers.Count "my-identifier") 1 }}
+ <p>Page contains duplicate "my-identifier" fragments</p>
+{{ end }}
+```
+
+.HeadingsMap
+: Holds a map of headings for the current page. Can be used to start the table of contents from a specific heading.
+
+Also see the [Go Doc](https://pkg.go.dev/github.com/gohugoio/hugo@v0.111.0/markup/tableofcontents#Fragments) for the return type.
+
+### Fragments in hooks and shortcodes
+
+`.Fragments` are safe to call from render hooks, even on the page you're on (`.Page.Fragments`). For shortcodes we recommend that all `.Fragments` usage is nested inside the `{{</**/>}}` shortcode delimiter (`{{%/**/%}}` takes part in the ToC creation so it's easy to end up in a situation where you bite yourself in the tail).
+
+
+## The global page function
+
+{{< new-in "0.111.1" >}}
+
+Hugo almost always passes a `Page` as the data context into the top level template (e.g. `single.html`) (the one exception is the multihost sitemap template). This means that you can access the current page with the `.` variable in the template.
+
+But when you're deeply nested inside `.Render`, partial etc., accessing that `Page` object isn't always practical or possible.
+
+For this reason, Hugo provides a global `page` function that you can use to access the current page from anywhere in any template.
+
+```go-html-template
+{{ page.Title }}
+```
+
+There are one caveat with this, and this isn't new, but it's worth mentioning here: There are situations in Hugo where you may see a cached value, e.g. when using `partialCached` or in a shortcode.
+
## Page-level Params
Any other value defined in the front matter in a content file, including taxonomies, will be made available as part of the `.Params` variable.
-```yml
----
-title: My First Post
-date: 2017-02-20T15:26:23-06:00
+{{< code-toggle file="content/example.md" fm=true copy=false >}}
+title: Example
categories: [one]
tags: [two,three,four]
-```
+{{< /code-toggle >}}
With the above front matter, the `tags` and `categories` taxonomies are accessible via the following:
* `.Params.tags`
* `.Params.categories`
-{{% note "Casing of Params" %}}
-Page-level `.Params` are *only* accessible in lowercase.
-{{% /note %}}
-
-The `.Params` variable is particularly useful for the introduction of user-defined front matter fields in content files. For example, a Hugo website on book reviews could have the following front matter in `/content/review/book01.md`:
+The `.Params` variable is particularly useful for the introduction of user-defined front matter fields in content files. For example, a Hugo website on book reviews could have the following front matter:
-```yml
----
-...
+{{< code-toggle file="content/example.md" fm=true copy=false >}}
+title: Example
affiliatelink: "http://www.my-book-link.here"
recommendedby: "My Mother"
-...
----
-```
+{{< /code-toggle >}}
-These fields would then be accessible to the `/themes/yourtheme/layouts/review/single.html` template through `.Params.affiliatelink` and `.Params.recommendedby`, respectively.
+These fields would then be accessible to via `.Params.affiliatelink` and `.Params.recommendedby`.
-Two common situations where this type of front matter field could be introduced is as a value of a certain attribute like `href=""` or by itself to be displayed as text to the website's visitors.
-
-{{< code file="/themes/yourtheme/layouts/review/single.html" >}}
-<h3><a href={{ printf "%s" $.Params.affiliatelink }}>Buy this book</a></h3>
+```go-html-template
+<h3><a href="{{ .Params.affiliatelink }}">Buy this book</a></h3>
<p>It was recommended by {{ .Params.recommendedby }}.</p>
-{{< /code >}}
+```
-This template would render as follows, assuming you've set [`uglyURLs`](/content-management/urls/) to `false` in your [site `config`](/getting-started/configuration/):
+This template would render as follows:
-{{< output file="yourbaseurl/review/book01/index.html" >}}
+```html
<h3><a href="http://www.my-book-link.here">Buy this book</a></h3>
<p>It was recommended by my Mother.</p>
-{{< /output >}}
+```
{{% note %}}
See [Archetypes](/content-management/archetypes/) for consistency of `Params` across pieces of content.
When front matter contains nested fields like the following:
-```yml
----
+{{< code-toggle file="content/example.md" fm=true copy=false >}}
+title: Example
author:
given_name: John
family_name: Feminella
display_name: John Feminella
----
-```
+{{< /code-toggle >}}
+
`.Param` can access these fields by concatenating the field names together with a dot:
```go-html-template
{{ $.Param "author.display_name" }}
```
-If your front matter contains a top-level key that is ambiguous with a nested key, as in the following case:
-
-```yml
----
-favorites.flavor: vanilla
-favorites:
- flavor: chocolate
----
-```
-
-The top-level key will be preferred. Therefore, the following method, when applied to the previous example, will print `vanilla` and not `chocolate`:
-
-```txt
-{{ $.Param "favorites.flavor" }}
-=> vanilla
-```
-
[gitinfo]: /variables/git/
[File Variables]: /variables/files/
-[bundle]: {{< relref "content-management/page-bundles" >}}
+[bundle]: /content-management/page-bundles
+[scratch]: /functions/scratch
+[store]: /functions/store
---
title: Pages Methods
-linktitle:
description: Pages is the core page collection in Hugo and has many useful methods.
-date: 2019-10-20
categories: [variables and params]
keywords: [pages]
-draft: false
menu:
docs:
- title: "methods defined on a page collection"
- parent: "variables"
+ parent: variables
weight: 21
weight: 21
-sections_weight: 20
aliases: [/pages]
toc: true
---
`.Next` and `.Prev` on `Pages` work similar to the methods with the same names on `.Page`, but are more flexible (and slightly slower) as they can be used on any page collection.
-`.Next` points **up** to the next page relative to the page sent in as the argument. Example: `{{with .Site.RegularPages.Next . }}{{.RelPermalink}}{{end}}`. Calling `.Next` with the first page in the collection returns `nil`.
+`.Next` points **up** to the next page relative to the page sent in as the argument. Example: `{{ with .Site.RegularPages.Next . }}{{ .RelPermalink }}{{ end }}`. Calling `.Next` with the first page in the collection returns `nil`.
## .Prev PAGE
-`.Prev` points **down** to the previous page relative to the page sent in as the argument. Example: `{{with .Site.RegularPages.Prev . }}{{.RelPermalink}}{{end}}`. Calling `.Prev` with the last page in the collection returns `nil`.
+`.Prev` points **down** to the previous page relative to the page sent in as the argument. Example: `{{ with .Site.RegularPages.Prev . }}{{ .RelPermalink }}{{ end }}`. Calling `.Prev` with the last page in the collection returns `nil`.
---
title: Shortcode Variables
-linktitle: Shortcode Variables
description: Shortcodes can access page variables and also have their own specific built-in variables.
-date: 2017-03-12
-publishdate: 2017-03-12
categories: [variables and params]
keywords: [shortcodes]
menu:
docs:
- parent: "variables"
+ parent: variables
weight: 20
weight: 20
-sections_weight: 20
-aliases: []
-toc: false
---
[Shortcodes][shortcodes] have access to parameters delimited in the shortcode declaration via [`.Get`][getfunction], page- and site-level variables, and also the following shortcode-specific fields:
.Inner
: represents the content between the opening and closing shortcode tags when a [closing shortcode][markdownshortcode] is used
-[getfunction]: /functions/get/
-[markdownshortcode]: /content-management/shortcodes/#shortcodes-with-markdown
-[shortcodes]: /templates/shortcode-templates/
+.Scratch
+: returns a writable [`Scratch`][scratch] to store and manipulate data which will be attached to the shortcode context. This scratch is reset on server rebuilds.
.InnerDeindent {{< new-in "0.100.0" >}}
: Gets the `.Inner` with any indentation removed. This is what's used in the built-in `{{</* highlight */>}}` shortcode.
+
+[getfunction]: /functions/get/
+[markdownshortcode]: /content-management/shortcodes/#shortcodes-with-markdown
+[shortcodes]: /templates/shortcode-templates/
+[scratch]: /functions/scratch
---
title: Site Variables
-linktitle: Site Variables
description: Many, but not all, site-wide variables are defined in your site's configuration. However, Hugo provides a number of built-in variables for convenient access to global values in your templates.
-date: 2017-02-01
-publishdate: 2017-02-01
-lastmod: 2017-02-01
categories: [variables and params]
keywords: [global,site]
-draft: false
menu:
docs:
- parent: "variables"
+ parent: variables
weight: 10
weight: 10
-sections_weight: 10
aliases: [/variables/site-variables/]
toc: true
---
: all the menus in the site.
.Site.Pages
-: array of all content ordered by Date with the newest first. This array contains only the pages in the current language. See [`.Site.Pages`]({{< relref "site.md#site-pages" >}}).
+: array of all content ordered by Date with the newest first. This array contains only the pages in the current language. See [`.Site.Pages`](#site-pages).
.Site.RegularPages
-: a shortcut to the *regular* page collection. `.Site.RegularPages` is equivalent to `where .Site.Pages "Kind" "page"`. See [`.Site.Pages`]({{< relref "site.md#site-pages" >}}).
+: a shortcut to the *regular* page collection. `.Site.RegularPages` is equivalent to `where .Site.Pages "Kind" "page"`. See [`.Site.Pages`](#site-pages).
.Site.Sections
: top-level directories of the site.
.Site.Taxonomies
-: the [taxonomies](/taxonomies/usage/) for the entire site. Also see section [Use `.Site.Taxonomies` Outside of Taxonomy Templates](/variables/taxonomy/#use-sitetaxonomies-outside-of-taxonomy-templates).
+: the [taxonomies](/content-management/taxonomies/) for the entire site. Also see section [Access taxonomy data from any template](/variables/taxonomy/#access-taxonomy-data-from-any-template).
.Site.Title
: a string representing the title of the site.
You can use `.Site.Params` in a [partial template](/templates/partials/) to call the default site description:
{{< code file="layouts/partials/head.html" >}}
-<meta name="description" content="{{if .IsHome}}{{ $.Site.Params.description }}{{else}}{{.Description}}{{end}}" />
+<meta name="description" content="{{ if .IsHome }}{{ $.Site.Params.description }}{{ else }}{{ .Description }}{{ end }}" />
{{< /code >}}
## The `.Site.Pages` Variable {#site-pages}
title: Sitemap Variables
linktitle: Sitemap Variables
description:
-date: 2017-03-12
-publishdate: 2017-03-12
categories: [variables and params]
keywords: [sitemap]
-draft: false
menu:
docs:
- parent: "variables"
+ parent: variables
weight: 80
weight: 80
-sections_weight: 80
-aliases: []
-toc: false
---
A sitemap is a `Page` and therefore has all the [page variables][pagevars] available to use sitemap templates. They also have the following sitemap-specific variables available to them:
---
title: Taxonomy Variables
-linktitle:
description: Hugo's taxonomy system exposes variables to taxonomy and term templates.
categories: [variables and params]
keywords: [taxonomy,term]
menu:
docs:
- parent: "variables"
+ parent: variables
weight: 30
toc: true
weight: 30
-aliases: []
---
## Taxonomy templates
<ul>
{{ range $weightedPages }}
<li>
- <a href="{{ .RelPermalink}}"> {{ .LinkTitle }}</a>
+ <a href="{{ .RelPermalink }}"> {{ .LinkTitle }}</a>
</li>
{{ end }}
</ul>
]
},
"Uniq": {
- "Description": "Uniq takes returns a new list with all duplicate elements in the list l removed.\nduplicate elements removed.",
+ "Description": "Uniq returns a new list with duplicate elements in the list l removed.",
"Args": [
"l"
],
]
}
},
+ "css": {
+ "Quoted": {
+ "Description": "",
+ "Args": null,
+ "Aliases": null,
+ "Examples": null
+ },
+ "Unquoted": {
+ "Description": "",
+ "Args": null,
+ "Aliases": null,
+ "Examples": null
+ }
+ },
"data": {
"GetCSV": {
"Description": "GetCSV expects the separator sep and one or n-parts of a URL to a resource which\ncan either be a local or a remote one.\nThe data separator can be a comma, semi-colon, pipe, etc, but only one character.\nIf you provide multiple parts for the URL they will be joined together to the final URL.\nGetCSV returns nil or a slice slice to use in a short code.",
"Aliases": null,
"Examples": null
},
+ "GetIdentity": {
+ "Description": "",
+ "Args": null,
+ "Aliases": null,
+ "Examples": null
+ },
"Home": {
"Description": "",
"Args": null,
]
]
},
+ "ContainsNonSpace": {
+ "Description": "",
+ "Args": null,
+ "Aliases": null,
+ "Examples": null
+ },
"Count": {
"Description": "Count counts the number of non-overlapping instances of substr in s.\nIf substr is an empty string, Count returns 1 + the number of Unicode code points in s.",
"Args": [
"Markdownify": {
"Description": "Markdownify renders s from Markdown to HTML.",
"Args": [
+ "ctx",
"s"
],
"Aliases": [
go 1.16
-require github.com/gohugoio/gohugoioTheme v0.0.0-20230124135550-462d5fe4a87f // indirect
+require github.com/gohugoio/gohugoioTheme v0.0.0-20230418063032-99f9185b8e11 // indirect
github.com/gohugoio/gohugoioTheme v0.0.0-20230120185049-2c3c4d0ba232/go.mod h1:GOYeAPQJ/ok8z7oz1cjfcSlsFpXrmx6VkzQ5RpnyhZM=
github.com/gohugoio/gohugoioTheme v0.0.0-20230124135550-462d5fe4a87f h1:8wI3zOTWQG15aKkbAZQaoGnUQff46hO95opQndBHRE4=
github.com/gohugoio/gohugoioTheme v0.0.0-20230124135550-462d5fe4a87f/go.mod h1:GOYeAPQJ/ok8z7oz1cjfcSlsFpXrmx6VkzQ5RpnyhZM=
+github.com/gohugoio/gohugoioTheme v0.0.0-20230330081257-7a8c9614432c h1:TyHgmowfiMyxKrqTdRxm/yWIFeN7XRh7Hm6/dOG6yDA=
+github.com/gohugoio/gohugoioTheme v0.0.0-20230330081257-7a8c9614432c/go.mod h1:GOYeAPQJ/ok8z7oz1cjfcSlsFpXrmx6VkzQ5RpnyhZM=
+github.com/gohugoio/gohugoioTheme v0.0.0-20230418063032-99f9185b8e11 h1:mDcricMewd66x8QjKqNun7Div7iYVLtl8s1dVs9VnB8=
+github.com/gohugoio/gohugoioTheme v0.0.0-20230418063032-99f9185b8e11/go.mod h1:GOYeAPQJ/ok8z7oz1cjfcSlsFpXrmx6VkzQ5RpnyhZM=
toLower = false
[[related.indices]]
name = "keywords"
- weight = 100
+ weight = 60
+ [[related.indices]]
+ # Can be used as a front matter slice to link to other page fragments (headings) using their ID.
+ # This isn't particular useful in the current docs, but we're planning on getting a auto generated
+ # reference section with a better ID setup.
+ # For now, we just use it to give pages with same headings some similarity score.
+ name = "fragmentrefs"
+ type = "fragments"
+ applyFilter = false
+ weight = 60
+ cardinalityThreshold = 50
[[related.indices]]
name = "date"
weight = 10
{{- /*
Renders syntax-highlighted configuration data in JSON, TOML, and YAML formats.
-@param {string} config
- Section of site.Data.docs.config to render.
- Example: markup.highlight
- Default: ""
-@param {bool} copy
- Display a copy button.
- Default: true
-@param {string} file
- File name to display above the rendered code.
- Default: ""
-@param {bool} fm
- Does Inner represent front matter?
- Default: false
-@param {string} Inner
- Content between opening and closing shortcode tags.
- Default: ""
-@param {bool} skipHeader
- Omit top level key(s) when rendering a section of site.Data.docs.config.
- Default: false
+@param {string} [config] The section of site.Data.docs.config to render.
+@param {bool} [copy=true] If true, display a copy to clipboard button.
+@param {string} [file] The file name to display above the rendered code.
+@param {bool} [fm=false] If true, render the code as front matter.
+@param {bool} [skipHeader=false] If false, omit top level key(s) when rendering a section of site.Data.docs.config.
+
@returns {template.HTML}
-*/ -}}
+*/}}
-{{- /* Initialize. */ -}}
-{{- $config := "" -}}
-{{- $copy := true -}}
-{{- $file := "" -}}
-{{- $fm := false -}}
-{{- $skipHeader := false -}}
+{{- /* Initialize. */}}
+{{- $config := "" }}
+{{- $copy := true }}
+{{- $file := "" }}
+{{- $fm := false }}
+{{- $skipHeader := false }}
-{{- /* Get parameters, defend against string booleans. */ -}}
-{{- if .Params -}}
- {{- $config = .Get "config" -}}
- {{- $file = .Get "file" -}}
- {{- if (isset .Params "copy") -}}
- {{- if in (slice true "true") (.Get "copy") -}}
- {{- $copy = true -}}
- {{- else -}}
- {{- $copy = false -}}
- {{- end -}}
- {{- end -}}
- {{- if (isset .Params "fm") -}}
- {{- if in (slice true "true") (.Get "fm") -}}
- {{- $fm = true -}}
- {{- else -}}
- {{- $fm = false -}}
- {{- end -}}
- {{- end -}}
- {{- if (isset .Params "skipHeader") -}}
- {{- if in (slice true "true") (.Get "skipHeader") -}}
- {{- $skipHeader = true -}}
- {{- else -}}
- {{- $skipHeader = false -}}
- {{- end -}}
- {{- end -}}
-{{- end -}}
+{{- /* Get parameters. */}}
+{{- $config = .Get "config" }}
+{{- $file = .Get "file" }}
+{{- if in (slice "false" false 0) (.Get "copy") }}
+ {{- $copy = false }}
+{{- else if in (slice "true" true 1) (.Get "copy")}}
+ {{- $copy = true }}
+{{- end }}
+{{- if in (slice "false" false 0) (.Get "fm") }}
+ {{- $fm = false }}
+{{- else if in (slice "true" true 1) (.Get "fm")}}
+ {{- $fm = true }}
+{{- end }}
+{{- if in (slice "false" false 0) (.Get "skipHeader") }}
+ {{- $skipHeader = false }}
+{{- else if in (slice "true" true 1) (.Get "skipHeader")}}
+ {{- $skipHeader = true }}
+{{- end }}
-{{- /* Define constants. */ -}}
-{{- $delimiters := dict "toml" "+++" "yaml" "---" -}}
-{{- $langs := slice "yaml" "toml" "json" -}}
-{{- $placeHolder := "#-hugo-placeholder-#" -}}
+{{- /* Define constants. */}}
+{{- $delimiters := dict "toml" "+++" "yaml" "---" }}
+{{- $langs := slice "yaml" "toml" "json" }}
+{{- $placeHolder := "#-hugo-placeholder-#" }}
-{{- /* Render. */ -}}
-{{- $code := "" -}}
-{{- with $config -}}
- {{- $file = $file | default "config" -}}
- {{- $sections := (split . ".") -}}
- {{- $configSection := index $.Site.Data.docs.config $sections -}}
- {{- $code = dict $sections $configSection -}}
- {{- if $skipHeader -}}
- {{- $code = $configSection -}}
- {{- end -}}
-{{- else -}}
- {{- $code = $.Inner -}}
+{{- /* Render. */}}
+{{- $code := "" }}
+{{- with $config }}
+ {{- $file = $file | default "config" }}
+ {{- $sections := (split . ".") }}
+ {{- $configSection := index $.Site.Data.docs.config $sections }}
+ {{- $code = dict $sections $configSection }}
+ {{- if $skipHeader }}
+ {{- $code = $configSection }}
+ {{- end }}
+{{- else }}
+ {{- $code = $.Inner }}
{{- end }}
<div class="code relative" {{ with $file }}id="{{ . | urlize }}"{{ end }}>
<div class="code-nav flex flex-nowrap items-stretch">
{{- with $file }}
<div class="san-serif f6 dib lh-solid pl2 pv2 mr2">
- {{- . -}}{{- if not $fm -}}.{{- end -}}
+ {{ . }}{{ if not $fm }}.{{ end }}
</div>
- {{- end -}}
+ {{- end }}
{{- range $langs }}
<button data-toggle-tab="{{ . }}" class="tab-button {{ cond (eq . "yaml") "active" "" }} ba san-serif f6 dib lh-solid ph2 pv2">
{{ . }}
<div class="tab-content">
{{- range $langs }}
<div data-pane="{{ . }}" class="code-copy-content nt3 tab-pane {{ cond (eq . "yaml") "active" "" }}">
- {{- $hCode := $code | transform.Remarshal . -}}
- {{- if and $fm (in (slice "toml" "yaml") .) -}}
- {{- $hCode = printf "%s\n%s\n%s" $placeHolder $hCode $placeHolder -}}
- {{- end -}}
+ {{- $hCode := $code | transform.Remarshal . }}
+ {{- if and $fm (in (slice "toml" "yaml") .) }}
+ {{- $hCode = printf "%s\n%s\n%s" $placeHolder $hCode $placeHolder }}
+ {{- end }}
{{- $hCode = $hCode | replaceRE `\n+` "\n" }}
{{ highlight $hCode . "" | replaceRE $placeHolder (index $delimiters .) | safeHTML }}
</div>
{{- if $copy }}
<button class="needs-js copy copy-toggle bg-accent-color-dark f6 absolute top-0 right-0 lh-solid hover-bg-primary-color-dark bn white ph3 pv2" title="Copy this code to your clipboard." data-clipboard-action="copy" aria-label="copy button"></button>
- {{- /* Functionality located within filesaver.js The copy here is located in the css with .copy class so it can be replaced with JS on success */ -}}
- {{- end -}}
+ {{- /* Functionality located within filesaver.js The copy here is located in the css with .copy class so it can be replaced with JS on success */}}
+ {{- end }}
{{- end }}
</div>
</div>
-{{ $file := .Get "file" }}
-{{ $codeLang := "" }}
-{{ $suffix := findRE "(\\.[^.]+)$" $file 1 }}
-{{ with $suffix }}
-{{ $codeLang = (index . 0 | strings.TrimPrefix ".") }}
-{{ end }}
-{{ with .Get "codeLang" }}{{ $codeLang = . }}{{ end }}
-{{ if eq $codeLang "html" }}
-{{ $codeLang = "go-html-template" }}
-{{ end }}
-<div class="code relative" id="{{ $file | urlize }}">
- {{- with $file -}}
- <div class="filename san-serif f6 dib lh-solid pl2 pv2">{{ . }}</div>
- {{- end -}}
+{{- /*
+Renders syntax highlighted code.
+
+@param {bool} [copy=true] If true, display a copy to clipboard button.
+@param {string} [file] The file name to display above the rendered code.
+@param {string} [lang] The code language of the inner content.
+
+@returns {template.HTML}
+*/}}
- {{ if ne (.Get "copy") "false" }}
- <button class="needs-js copy bg-accent-color-dark f6 absolute top-0 right-0 lh-solid hover-bg-primary-color-dark bn white ph3 pv2" title="Copy this code to your clipboard." data-clipboard-action="copy" aria-label="copy button">
- </button>
- {{/* Functionality located within filesaver.js The copy here is located in the css with .copy class so it can be replaced with JS on success */}}
- {{ end }}
- <div class="code-copy-content nt3" {{ with .Get "download" }}id="{{ . }}"{{ end }}>
- {{ $inner := trim .Inner "\n" | safeHTML }}
- {{ if .Get "nocode" }}{{ $inner }}{{ else }}{{ with $codeLang }}{{ highlight $inner . "" }}{{ else }}<pre><code>{{ $inner }}</code></pre>{{ end }}{{ end }}
- </div>
+{{- /* Initialize. */}}
+{{- $copy := true }}
+{{- $file := " " }}
+{{- $lang := "" }}
+{{- /* Get parameters. */}}
+{{- $file = .Get "file" }}
+{{- $lang = or (.Get "lang") (path.Ext $file | strings.TrimPrefix ".") "text" }}
+{{- if in (slice "false" false 0) (.Get "copy") }}
+ {{- $copy = false }}
+{{- else if in (slice "true" true 1) (.Get "copy")}}
+ {{- $copy = true }}
+{{- end }}
+
+{{- /* Use the go-html-template Chroma lexer for HTML. */}}
+{{- if eq $lang "html" }}
+ {{- $lang = "go-html-template" }}
+{{- end }}
+
+{{- /* Render. */}}
+<div class="code relative" id="{{ $file | urlize }}">
+ <div class="f6 dib lh-solid pl2 pv2">{{ or $file "nbsp;" }}</div>
+ {{- if $copy }}
+ <button class="needs-js copy bg-accent-color-dark f6 absolute top-0 right-0 lh-solid hover-bg-primary-color-dark bn white ph3 pv2" title="Copy this code to your clipboard." data-clipboard-action="copy" aria-label="copy button"></button>
+ {{- end }}
+ <div class="code-copy-content nt3">
+ {{- highlight (trim .Inner "\n\r") $lang }}
+ </div>
</div>
+++ /dev/null
-<div class="code">
- <pre><code>
- ├── blog
- │ ├── _index.md [section]
- │ ├── first-post.md [page]
- │ └── second-post
- │ ├── index.md [page bundle]
- │ └── photo.jpg [page resource]
- └── tags
- ├── _index.md [taxonomy]
- └── funny
- └── _index.md [term]
- </code></pre>
-</div>
\ No newline at end of file
+++ /dev/null
-{{- $pathURL := .Get "pathURL" -}}
-{{- $path := .Get "path" -}}
-{{- $files := readDir $path -}}
-<table>
- <th>Size in bytes</th>
- <th>Name</th>
-{{- range $files }}
- <tr>
- <td>{{ .Size }}</td>
- <td><a href="{{ $pathURL }}{{ .Name | relURL }}" target="_blank"> {{ .Name }}</a></td>
- </tr>
-{{- end }}
-</table>
+++ /dev/null
-{{ $file := .Get 0}}
-{{ $filepath := $file }}
-{{ $syntax := index (split $file ".") 1 }}
-{{ $syntaxoverride := eq (len .Params) 2 }}
-<div class="code-copy" id="{{$file | urlize}}">
- <div class="code-copy-header"><div class="action-buttons"></div><span title="" class="filename">{{$filepath}}</span><i class="icon-{{$syntax}} input"></i></div>
- <button class="copy-button" title="Copy to clipboard" data-clipboard-snippet>
- <div class="copy-text"><i class="icon-clipboard"></i> COPY</div>
- </button>
- <pre><code class="language-{{if $syntaxoverride}}{{.Get 1}}{{else}}{{$syntax}}{{end}}">{{- readFile $file -}}</code></pre>
-</div>
+++ /dev/null
-{{ $file := .Get 0}}
-{{ $filepath := replace $file "static/" ""}}
-{{ $syntax := index (split $file ".") 1 }}
-{{ $syntaxoverride := eq (len .Params) 2 }}
-<div class="code-copy" id="{{$file | urlize}}">
- <div class="code-copy-header examplesite"><div class="action-buttons"></div><span class="filename"><i class="icon-website"></i>{{$filepath}}</span><i class="icon-{{$syntax}} input"></i></div>
- <button class="copy-button" title="Copy to clipboard" data-clipboard-snippet>
- <div class="copy-text"><i class="icon-clipboard"></i> COPY</div>
- </button>
- <pre><code class="language-{{if $syntaxoverride}}{{.Get 1}}{{else}}{{$syntax}}{{end}}">{{- readFile $file -}}</code></pre>
- <a role="button" target="_blank" href="{{$.Site.Params.ghdocsrepo}}{{$file}}" title="See {{$filepath}} source on GitHub" class="tooltip see-on-github" data-tooltip="See {{$filepath}} source on GitHub">Source<i class="icon-github"></i></a>
-</div>
+++ /dev/null
-<!-- Similar to exfile.html but *only* pulls the front matter from the example/content/*md -->
-{{ $file := .Get 0}}
-{{ $filepath := replace $file "static/" ""}}
-{{ $syntax := index (split $file ".") 1 }}
-{{ $syntaxoverride := eq (len .Params) 2 }}
-<div class="code-copy" id="{{$file | urlize}}">
- <div class="code-copy-header examplesite"><div class="action-buttons"></div><span title="" class="filename">{{$filepath}}</span><i class="icon-{{$syntax}} input"></i></div>
- <button class="copy-button" title="Copy to clipboard" data-clipboard-snippet>
- <div class="copy-text"><i class="icon-clipboard"></i> COPY</div>
- </button>
- <pre><code class="language-{{if $syntaxoverride}}{{.Get 1}}{{else}}{{$syntax}}{{end}}">{{- readFile $file -}}</code></pre>
- <a role="button" target="_blank" href="{{$.Site.Params.ghdocsrepo}}{{$file}}" title="See {{$filepath}} on GitHub" class="see-on-github">Source<i class="icon-github"></i></a>
-</div>
\ No newline at end of file
+++ /dev/null
-{{ range .Params }}
- {{ if eq (substr . 0 1) "@" }}
- <a href="//github.com/{{ substr . 1 }}">{{ . }}</a>
- {{ else if eq (substr . 0 2) "0x" }}
- <a href="//github.com/gohugoio/hugo/commit/{{ substr . 2 }}">{{ substr . 2 6 }}</a>
- {{ else }}
- <a href="//github.com/gohugoio/hugo/issues/{{ . }}">#{{ . }}</a>
- {{ end }}
-{{ end }}
+++ /dev/null
-<a href="{{$.Site.Params.ghrepo}}" target="_blank">GitHub repository</a>
\ No newline at end of file
+++ /dev/null
-<pre><code class="hljs nohighlight">{{ .Inner }}</code></pre>
\ No newline at end of file
+++ /dev/null
-{{ $_hugo_config := `{ "version": 1 }` }}
-<aside class="admonition note">
- <div class="note-icon">
- {{partial "svg/exclamation.svg" (dict "size" "20px" ) }}
- </div>
- <!-- <h2 id="{{if .Get 0}}{{.Get 0 | urlize}}{{else}}note{{end}}">{{if .Get 0}}{{.Get 0 | markdownify}}{{else}}Note{{end}}</h2> -->
- <!-- <h3>Note</h3> -->
- <div class="admonition-content">{{- .Inner -}}</div>
-</aside>
+++ /dev/null
-{{$file := .Get "file"}}
-{{$icon := index (split $file ".") 1 }}
-<div class="code" id="{{$file | urlize}}">
- <div class="filename" title="{{$file}}">{{$file}}</div>
- <div class="code-copy-content output-content">
- <pre><code>{{- .Inner | string -}}</code></pre>
- </div>
-</div>
\ No newline at end of file
+++ /dev/null
-{{ $_hugo_config := `{ "version": 1 }` }}
-<aside class="admonition tip">
- <div class="tip-icon">
- {{partial "svg/exclamation.svg" .}}
- </div>
- <!-- <h2 id="{{if .Get 0}}{{.Get 0 | urlize}}{{else}}tip{{end}}">{{if .Get 0}}{{.Get 0 | markdownify}}{{else}}Tip{{end}}</h2> -->
- <!-- <h3>Tip</h3> -->
- <div class="admonition-content">{{- .Inner -}}</div>
-</aside>
+++ /dev/null
-{{ $_hugo_config := `{ "version": 1 }` }}
-<aside class="admonition warning">
- <div class="admonition-icon">
- {{partial "svg/exclamation.svg" .}}
- </div>
- <!-- <h2 id="{{if .Get 0}}{{.Get 0 | urlize}}{{else}}warning{{end}}">{{if .Get 0}}{{.Get 0 | markdownify}}{{else}}Warning{{end}}</h2> -->
- <!-- <h3>Warning</h3> -->
- <div class="admonition-content">{{- .Inner -}}</div>
-</aside>
+++ /dev/null
-<div class="video-wrapper" data-streaming="youtube" data-videoid="{{.Get "id"}}" >
- <i class="icon-video-play-button shortcode"></i>
- {{if (.Get "thumbnail")}}
- <div style="background-image:url(/images/thumbnails/{{.Get "thumbnail"}})" alt="YouTube Thumbnail" class="video-thumbnail"></div>
- {{else}}
- <div style="background-image:url(//img.youtube.com/vi/{{.Get "id"}}/0.jpg)" alt="YouTube Thumbnail" class="video-thumbnail"></div>
- {{end}}
-</div>
-{{ if (.Get "description") }}
-<div class="video-description">{{ .Get "description" | markdownify }}</div>
-{{ end }}
\ No newline at end of file
command = "hugo --gc --minify"
[context.production.environment]
-HUGO_VERSION = "0.110.0"
+HUGO_VERSION = "0.111.3"
HUGO_ENV = "production"
HUGO_ENABLEGITINFO = "true"
command = "hugo --gc --minify --enableGitInfo"
[context.split1.environment]
-HUGO_VERSION = "0.110.0"
+HUGO_VERSION = "0.111.3"
HUGO_ENV = "production"
[context.deploy-preview]
command = "hugo --gc --minify --buildFuture -b $DEPLOY_PRIME_URL"
[context.deploy-preview.environment]
-HUGO_VERSION = "0.110.0"
+HUGO_VERSION = "0.111.3"
[context.branch-deploy]
command = "hugo --gc --minify -b $DEPLOY_PRIME_URL"
[context.branch-deploy.environment]
-HUGO_VERSION = "0.110.0"
+HUGO_VERSION = "0.111.3"
[context.next.environment]
HUGO_ENABLEGITINFO = "true"
+++ /dev/null
-<svg height="446" viewBox="0 0 1730 446" width="1730" xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd" transform="translate(.538462 .461538)"><g transform="translate(2.996935 .388277)"><path d="m64.0494614 5.00059856 58.8489506 34.18916364v67.3333318l-58.8489506 33.404195-58.75248965-33.404195v-67.3333318z" fill="#ff4088"/><path d="m126.283637 35.8185172 1.230228 2.1375217v69.8133611l-1.253295 2.152899-60.9934622 34.621142h-2.4387878l-60.89490434-34.623239-1.25189712-2.1522v-69.8112641l1.22883034-2.1368227 60.89280732-35.43476985h2.4891154zm-116.37121203 6.0253228v61.994421l54.13913343 30.780872 54.2320996-30.782969v-61.990227l-54.2320996-31.5064271z" fill="#c9177e"/></g><path d="m60.4490685 78.3838073h-16.0432056v-32.93617h-27.9340521v32.93617h-16.04320555v-77.90259702h16.04320555v32.56189542h27.9340521v-32.56189542h16.0432056z" fill="#fff" fill-rule="nonzero" transform="translate(35.169824 33.865851)"/><g transform="translate(329.992265 24.431705)"><path d="m.21765.21067h263.332986v115.673517h-263.332986z" fill="#0083c0"/><path d="m263.550636 115.884187h-263.33298624v-115.6735171h263.33298624zm-260.79463916-113.13482905v110.59614105h258.25629216v-110.59614105z" fill="#000"/></g><g fill="#f2f2f2" fill-rule="nonzero" transform="translate(352.419436 42.870159)"><path d="m22.7288949.05688029h3.6312065v31.52968501h-3.6312065v-14.4804699h-18.90904412v14.4804699h-3.58685032v-31.52968501h3.58685032v13.99359541h18.90904412z"/><path d="m37.3865286 30.4794869c-1.5939528-.9445259-2.826533-2.2879966-3.6974799-4.0296294-.8709468-1.7418937-1.3064203-3.7788866-1.3064203-6.1112394 0-2.332092.4354735-4.3693457 1.3064203-6.1109785.8709469-1.7418937 2.1035271-3.0851036 3.6974799-4.0298904 1.5942137-.94478689 3.4394312-1.41704986 5.5356526-1.41704986 2.0959605 0 3.941178.47226297 5.5353917 1.41704986 1.5942137.9447868 2.826533 2.2879967 3.6974799 4.0298904.8709468 1.7416328 1.3064203 3.7788865 1.3064203 6.1109785 0 2.3323528-.4354735 4.3693457-1.3064203 6.1112394-.8709469 1.7416328-2.1032662 3.0851035-3.6974799 4.0296294-1.5942137.9447869-3.4394312 1.4170499-5.5353917 1.4170499-2.0962214 0-3.9414389-.472263-5.5356526-1.4170499zm10.6280042-3.741836c1.1809184-1.461406 1.7713776-3.594417 1.7713776-6.3990328 0-2.7159035-.6050707-4.8194306-1.8154728-6.3103205-1.2104022-1.4908898-2.8933283-2.2363347-5.0482564-2.2363347-2.1846728 0-3.8822104.7454449-5.0926125 2.2363347-1.2104022 1.4908899-1.8157337 3.594417-1.8157337 6.3103205 0 2.8046158.5977649 4.9376268 1.7935556 6.3990328 1.1955298 1.461406 2.9006339 2.1919786 5.1147906 2.1919786s3.9116942-.7305726 5.0923516-2.1919786z"/><path d="m91.1464927 17.5929699v13.9935954h-3.5868503v-13.8164316c0-2.0959605-.3616334-3.6163341-1.0849002-4.561121-.7232669-.9447869-1.8968795-1.4170498-3.520577-1.4170498-1.8893128 0-3.3655912.6348153-4.4283133 1.9041851-1.0627222 1.2693698-1.5942137 2.9966521-1.5942137 5.181064v12.7093533h-3.5868503v-13.8164316c0-2.0664767-.3692001-3.5795446-1.1070784-4.5389429-.7381392-.9593983-1.9190575-1.4392279-3.542755-1.4392279-1.8893128 0-3.3728969.6348153-4.4504915 1.9041851-1.0775945 1.2693698-1.6163917 2.9966521-1.6163917 5.181064v12.7093533h-3.5868504v-16.0305883c0-2.3026081-.1181962-4.3839571-.3543276-6.24378613h3.4099473l.3540668 3.89682183c.619943-1.4170498 1.5425518-2.5092558 2.7678263-3.27687883 1.2252746-.76762302 2.6496301-1.15143453 4.2733276-1.15143453 1.7713775 0 3.2179112.35432769 4.3398619 1.06272215 1.1216898.70865541 1.9482805 1.80086131 2.479772 3.27713971.6789106-1.3285983 1.6753594-2.3840148 2.9890854-3.16624924 1.313726-.78249538 2.7973101-1.17361262 4.4504915-1.17361262 4.930321 0 7.3952206 2.93742346 7.3952206 8.81227056z"/><path d="m116.609555 20.3386181h-16.340559c.029483 2.8340996.686477 4.9744163 1.970458 6.4212109 1.284242 1.4465336 3.151638 2.1698005 5.601926 2.1698005 2.597968 0 4.989289-.8709469 7.173962-2.6128406l1.19553 2.6128406c-.974271.915303-2.221463 1.6385698-3.741837 2.1698004-1.520373.5314916-3.077797.7971069-4.672011.7971069-3.483526 0-6.214302-1.0259326-8.1923275-3.0775369-1.9780252-2.0518652-2.9669073-4.8637868-2.9669073-8.4360256 0-2.2731244.4427791-4.2882 1.3283374-6.0447052.8858192-1.7565051 2.1257054-3.121893 3.7199194-4.0961637 1.594213-.97427072 3.409686-1.46140606 5.44694-1.46140606 2.952035 0 5.269515.96696496 6.952441 2.90063396 1.682665 1.933669 2.524128 4.5979105 2.524128 7.9929856zm-13.971417-7.0852492c-1.166046 1.1216898-1.911491 2.701292-2.236335 4.7382848h12.974969c-.177164-2.0959604-.789801-3.6901741-1.837651-4.782641-1.048111-1.092206-2.50195-1.6385699-4.36204-1.6385699-1.859829 0-3.372897.5609754-4.538943 1.6829261z"/><path d="m138.352699 10.2421054c1.505502.9742707 2.671548 2.3396586 3.498399 4.0961637.826591 1.7565052 1.239886 3.7861923 1.239886 6.0890613 0 2.3026082-.413295 4.3174229-1.239886 6.0444443-.826851 1.7272822-1.985592 3.0631863-3.476221 4.0077122-1.49089.9447869-3.225478 1.4170499-5.203503 1.4170499-1.741632 0-3.262006-.3838115-4.561121-1.1511736-1.298853-.767623-2.287996-1.8600899-2.966907-3.2771398v13.683624h-3.587111v-25.5958704c0-2.3026081-.117936-4.3839571-.354067-6.24378613h3.409686l.354328 4.29550573c.619943-1.5352461 1.60152-2.7234701 2.944729-3.5649332 1.343471-.841463 2.930118-1.26206406 4.760463-1.26206406 1.948542 0 3.675563.48713534 5.181325 1.46140606zm-.774929 16.4733674c1.19553-1.4760175 1.793295-3.5722389 1.793295-6.2881424 0-2.7161643-.60507-4.8343029-1.815473-6.3546766-1.210402-1.5203736-2.893328-2.2806909-5.048256-2.2806909-2.214418 0-3.911694.7381392-5.092613 2.2141566-1.180918 1.4760175-1.771377 3.5868504-1.771377 6.3324986s.590459 4.8637867 1.771377 6.3546766c1.180919 1.4908898 2.878195 2.2363348 5.092613 2.2363348 2.184412 0 3.874644-.7381392 5.070434-2.2141567z"/><path d="m168.243032 9.31219087v22.27437443h-3.540668v-4.0296295c-.649688 1.387566-1.633352 2.4575939-2.945773 3.2103445-1.313987.7530116-2.841666 1.1292565-4.58356 1.1292565-1.978025 0-3.712352-.472263-5.203242-1.4170499-1.49089-.9445259-2.642325-2.28043-3.454043-4.0077122-.811979-1.7270214-1.217969-3.7418361-1.217969-6.0444443 0-2.302869.413296-4.3325561 1.239886-6.0890613.826852-1.7565051 1.985592-3.121893 3.476221-4.0961637 1.49089-.97427072 3.210606-1.46140606 5.159147-1.46140606 1.741894 0 3.262267.38381151 4.560077 1.15143453 1.299376.76762303 2.288258 1.84521753 2.969256 3.23252263v-3.85246563zm-5.312307 17.38110383c1.179353-1.4908899 1.771639-3.6090284 1.771639-6.3546766s-.592286-4.8564811-1.771639-6.3324986c-1.181962-1.4760174-2.864627-2.2141566-5.0493-2.2141566-2.184412 0-3.889516.7603173-5.114529 2.2806909-1.225275 1.5203737-1.837912 3.6385123-1.837912 6.3546766 0 2.7159035.605331 4.8121249 1.815734 6.2881424 1.210402 1.4760175 2.922551 2.2141567 5.136707 2.2141567 2.184673 0 3.867338-.745445 5.0493-2.2363348z"/><path d="m195.034171 9.31219087v22.09721053c0 3.3066236-.847986 5.8085737-2.543958 7.5061112-1.698581 1.6975375-4.200792 2.5463063-7.506633 2.5463063-3.394553 0-6.319453-.7676231-8.76948-2.3028691l.620987-2.9225511c1.416789.7971068 2.752693 1.3726936 4.007712 1.7270213s2.63528.5314915 4.140781.5314915c2.155189 0 3.778104-.568281 4.871353-1.7051041 1.090641-1.1365622 1.63857-2.826533 1.63857-5.0704345v-5.2695154c-.680998 1.4170498-1.675098 2.5165615-2.990129 3.2990569-1.315031.7822345-2.870106 1.1733517-4.670446 1.1733517-1.949063 0-3.684173-.4573906-5.205329-1.3726936-1.518548-.9150422-2.692682-2.2141567-3.519795-3.8968219-.827112-1.682926-1.239364-3.616595-1.239364-5.8012679 0-2.1846728.412252-4.1183418 1.239364-5.801007.827113-1.682926 2.001247-2.9817797 3.519795-3.8970827 1.521156-.91504214 3.256266-1.37269366 5.205329-1.37269366 1.769029 0 3.313668.38381151 4.62609 1.15143453 1.31503.76762303 2.309131 1.84521753 2.990129 3.23252263v-3.85246563zm-5.424501 16.45118933c1.226318-1.4319222 1.839477-3.4023808 1.839477-5.9118975 0-2.5092558-.613159-4.4799752-1.839477-5.9116365-1.223709-1.4319222-2.914463-2.1478833-5.069652-2.1478833-2.18389 0-3.903345.7159611-5.158364 2.1478833-1.255019 1.4316613-1.881224 3.4023807-1.881224 5.9116365 0 2.5095167.626205 4.4799753 1.881224 5.9118975s2.974474 2.1476224 5.158364 2.1476224c2.155189 0 3.845943-.7157002 5.069652-2.1476224z"/><path d="m220.585946 20.3386181h-16.338733c.028701 2.8340996.686216 4.9744163 1.969936 6.4212109 1.283721 1.4465336 3.151899 2.1698005 5.601926 2.1698005 2.598751 0 4.988767-.8709469 7.172657-2.6128406l1.195008 2.6128406c-.973227.915303-2.220419 1.6385698-3.741575 2.1698004-1.518547.5314916-3.076232.7971069-4.670446.7971069-3.483266 0-6.215085-1.0259326-8.192849-3.0775369-1.977765-2.0518652-2.966647-4.8637868-2.966647-8.4360256 0-2.2731244.443562-4.2882 1.328077-6.0447052.887124-1.7565051 2.126488-3.121893 3.720701-4.0961637 1.594214-.97427072 3.410209-1.46140606 5.445375-1.46140606 2.953601 0 5.270559.96696496 6.953485 2.90063396s2.523085 4.5979105 2.523085 7.9929856zm-13.969591-7.0852492c-1.166307 1.1216898-1.912535 2.701292-2.236074 4.7382848h12.972881c-.177424-2.0959604-.787974-3.6901741-1.836868-4.782641-1.048893-1.092206-2.502211-1.6385699-4.362562-1.6385699-1.86035 0-3.37107.5609754-4.537377 1.6829261z"/></g><g fill="#f2f2f2" fill-rule="nonzero" transform="translate(347.017193 95.746626)"><path d="m.13103057 17.5444886 1.30960428-16.95274668h3.09535177l-1.16678937 14.42893518h7.92875255l-.1903731 2.5238115z"/><path d="m13.2028032 17.5444886.9524268-12.02408921h2.9762458l-.9524267 12.02408921zm1.1904984-17.47658839h3.3095741l-.2142224 2.92868762h-3.3095741z"/><path d="m18.7267099 16.2111754 1.0238341-2.0715176c1.3493063.936574 2.7858728 1.404861 4.3096994 1.404861 1.5396794 0 2.3095892-.4444378 2.3095892-1.3334535 0-.412592-.202438-.7261395-.6071738-.9405021-.4047358-.2142224-1.0516115-.4563624-1.940487-.7261395-.8413173-.2380716-1.5398197-.4762835-2.0953669-.7143551-.5555471-.2380716-1.0277622-.5833245-1.4166453-1.0357588-.388883-.452294-.5833245-1.04361503-.5833245-1.77382287 0-1.14279984.4602905-2.06352109 1.3808714-2.76188318.9207213-.69850237 2.1429251-1.04768342 3.6667517-1.04768342.8890158 0 1.7461858.13495869 2.5715101.40473576.8254645.26991737 1.5159704.64294766 2.0715176 1.11909088l-.999985 2.0238191c-1.1904983-.90472823-2.4206986-1.35716248-3.6906009-1.35716248-.7460606 0-1.3174605.11910595-1.71434.35717755-.3968796.23807161-.5952492.58725266-.5952492 1.04768343 0 .42858501.202438.74998869.6071738.96421105.4047358.21436265 1.0594677.45636238 1.9643363.72627978.8730227.2539243 1.5793813.4960643 2.1190758.7261394.5396944.2302154 1.0040533.5754683 1.3929363 1.0357588.388883.4604308.5833246 1.0556799.5833246 1.7857475 0 1.1587929-.4602905 2.0635211-1.3810118 2.714325-.9207212.6508038-2.1587778.9762759-3.7143099.9762759-1.9525519 0-3.7064536-.5079889-5.262126-1.5238266z"/><path d="m35.3699775 13.1396729c-.1111094 1.4127172.4841397 2.1190758 1.7857475 2.1190758.3651741 0 .7777661-.0555547 1.2381968-.1666642l-.1905134 2.3334385c-.5238417.1903731-1.1746456.2856298-1.9524116.2856298-1.2540496 0-2.2143325-.3294002-2.8809891-.9880603-.6667969-.6588004-1.0001253-1.6151552-1.0001253-2.8690645 0-.2382119.0079966-.4207288.0238493-.547691l.428585-5.54775586h-2.3095892l.1905134-2.23818175h2.28574l.2380716-2.92854732 3.0476532-1.00012522-.309479 3.92867254h3.2143174l-.1903731 2.23818175h-3.1906085z"/><path d="m39.5605709 16.2111754 1.0238342-2.0715176c1.349166.936574 2.7857324 1.404861 4.309559 1.404861 1.5398197 0 2.3095893-.4444378 2.3095893-1.3334535 0-.412592-.2022978-.7261395-.6071738-.9405021-.4047358-.2142224-1.0516116-.4563624-1.9404871-.7261395-.8413172-.2380716-1.5396793-.4762835-2.0952265-.7143551s-1.0279026-.5833245-1.4167856-1.0357588c-.388883-.452294-.5833246-1.04361503-.5833246-1.77382287 0-1.14279984.4602905-2.06352109 1.3810118-2.76188318.9207212-.69850237 2.142925-1.04768342 3.6667517-1.04768342.8888754 0 1.7460455.13495869 2.57151.40473576.8253243.26991737 1.5158301.64294766 2.0715176 1.11909088l-1.0001252 2.0238191c-1.1904983-.90472823-2.4206986-1.35716248-3.6904606-1.35716248-.7460606 0-1.3176008.11910595-1.7143401.35717755-.3968795.23807161-.5952492.58725266-.5952492 1.04768343 0 .42858501.2022978.74998869.6071738.96421105.4047358.21436265 1.0594678.45636238 1.964196.72627978.8731631.2539243 1.5795217.4960643 2.1192161.7261394.5396945.2302154 1.003913.5754683 1.3927961 1.0357588.388883.4604308.5833245 1.0556799.5833245 1.7857475 0 1.1587929-.4602905 2.0635211-1.3808714 2.714325-.9207213.6508038-2.1587778.9762759-3.7144502.9762759-1.9524117 0-3.7064537-.5079889-5.2619858-1.5238266z"/><path d="m58.3943218 15.592077.7380641-1.4999774c.8413173.7142148 1.6984873 1.2222038 2.57151 1.5238266.8730228.3016229 1.8890008.4524343 3.0476533.4524343 1.365159 0 2.4167706-.2659893 3.1548346-.7976872.7382044-.5318382 1.1071663-1.2818269 1.1071663-2.2501064 0-.5713999-.1784485-1.0357588-.5356261-1.392796-.3571775-.3571776-.8254645-.6390196-1.4048609-.8452454-.5793965-.2063662-1.3532344-.4207288-2.3215139-.6429477-1.3016077-.2857701-2.3730001-.59524916-3.2143174-.92857747s-1.5238266-.81353993-2.0476684-1.44049456c-.5238417-.62695464-.7857625-1.44849108-.7857625-2.46432874 0-.96827945.2540646-1.82152136.7619133-2.55958543.507989-.73820436 1.2262722-1.31353239 2.1548497-1.72626467.9285774-.41273227 2.0120347-.61909841 3.2500913-.61909841 1.1746456 0 2.2698872.18265718 3.2857249.54769096 1.0159779.36503378 1.8731479.896872 2.57151 1.59523409l-.7619133 1.50011768c-.7936188-.68264964-1.5991622-1.18264211-2.4166302-1.50011768-.8174681-.31747557-1.710412-.47614322-2.6786914-.47614322-1.3174605 0-2.3492912.28170171-3.0953518.8452454s-1.1190909 1.33738164-1.1190909 2.32151383c0 .85717002.3254721 1.49997739.976276 1.9285624s1.6507888.8016153 3.0000951 1.11909087c1.4602754.34918105 2.6071436.67058473 3.4404644.96435135.833461.29362633 1.527895.73806407 2.0834422 1.3333132.5555472.5952492.8333208 1.3849399.8333208 2.3690721 0 .9524267-.2539244 1.7896756-.7619133 2.5120272-.507989.7222113-1.2341285 1.2816866-2.1785587 1.6785662-.9445705.3968795-2.0517367.5952491-3.3214987.5952491-2.6509141 0-4.7619934-.7143551-6.3335185-2.142925z"/><path d="m83.9663269 11.4967403h-8.7859225c.0158527 1.5238266.3691021 2.674623 1.059608 3.4525293.6905059.7777661 1.6944189 1.1666491 3.0118794 1.1666491 1.3968645 0 2.6826195-.468287 3.8572651-1.404861l.6429477 1.404861c-.5238417.4921362-1.1945668.8810193-2.0120348 1.1666491-.817468.2857701-1.6547169.428585-2.5118869.428585-1.873148 0-3.3414199-.5516191-4.4049561-1.6547169-1.0635361-1.1032382-1.5952341-2.6151402-1.5952341-4.5358464 0-1.2222038.2380716-2.30566106.7143551-3.25009127.4761433-.94443021 1.1427999-1.67856617 1.9999699-2.20240788s1.833446-.78576257 2.9286876-.78576257c1.5872376 0 2.8334309.5199136 3.7381591 1.55960051.9047283 1.03968691 1.3571625 2.47218496 1.3571625 4.29763441zm-7.5120921-3.80956661c-.6269547.60310539-1.0277623 1.45241918-1.202423 2.54766081h6.9763258c-.0951164-1.1269471-.4245166-1.98411712-.9880603-2.57151006-.5635437-.58725265-1.3452378-.88101927-2.345363-.88101927-.999985 0-1.8135249.30162284-2.4404795.90486852z"/><path d="m88.8830598 16.9492395c-.8650263-.5078487-1.5316829-1.2261319-1.9999699-2.1548497-.468287-.9285775-.7024305-2.0118945-.7024305-3.249951 0-1.2381968.2380716-2.32951036.7143551-3.27394057.4761433-.94443021 1.1547245-1.67856617 2.0357438-2.20240788.8808789-.52384171 1.9087815-.78576257 3.0834271-.78576257.8094715 0 1.591306.1388868 2.3452228.41666039.7540571.27777359 1.3770836.66272851 1.8690796 1.15486475l-.6428074 1.42856993c-.6032457-.4762835-1.1865702-.82546455-1.7501139-1.04768342s-1.1388717-.33332831-1.7262647-.33332831c-1.2222038 0-2.1824867.40880417-2.8809891 1.2262722-.6983621.81746804-1.0475431 1.95633978-1.0475431 3.41675548 0 1.4444227.3452529 2.5674416 1.0356185 3.3690569.6905059.8016153 1.6548572 1.202423 2.8929137 1.202423.587393 0 1.162721-.1111094 1.7262647-.3333283s1.1468682-.5713999 1.7501139-1.0476834l.6428074 1.4285699c-.507989.4762835-1.1468683.8532419-1.9166378 1.1310155-.7699098.2777736-1.567597.4166604-2.3929213.4166604-1.1587928 0-2.1707024-.2539244-3.0358689-.7619133z"/><path d="m101.276251 7.09192453v6.54774077c0 .8888755.182517 1.511902.547691 1.8690796.365034.3571776.880879.5357663 1.547536.5357663.444437 0 .873023-.0714074 1.285755-.2143626v1.6429326c-.491996.1588079-1.047543.2380716-1.666642.2380716-1.14294 0-2.035743-.3214037-2.678691-.9642111-.6428075-.6429476-.9642112-1.591306-.9642112-2.8453555v-6.80966167h-2.3334385v-1.52382664h2.3334385v-3.07150253l1.9285622-.69050586v3.76200839h3.42868v1.52382664z"/><path d="m107.038229 17.5444886v-11.97639071h1.928703v11.97639071zm-.190373-17.04800338h2.357148v2.19062355h-2.357148z"/><path d="m114.681352 16.9492395c-.85717-.5078487-1.519898-1.2302003-1.988185-2.166634-.468287-.936574-.702431-2.0318157-.702431-3.2858652 0-1.2539093.234144-2.3492912.702431-3.2857249.468287-.93657398 1.131015-1.65878532 1.988185-2.1667743.85717-.50798897 1.849159-.76191332 2.976246-.76191332 1.126947 0 2.119076.25392435 2.976246.76191332.85717.50798898 1.519898 1.23020032 1.988185 2.1667743.468147.9364337.702291 2.0318156.702291 3.2857249 0 1.2540495-.234144 2.3492912-.702291 3.2858652-.468287.9364337-1.131015 1.6587853-1.988185 2.166634-.85717.5079889-1.849299.7619133-2.976246.7619133-1.127087 0-2.119076-.2539244-2.976246-.7619133zm5.71442-2.0118945c.634951-.7857626.952287-1.9326308.952287-3.4406047 0-1.4602754-.325332-2.59129092-.976136-3.39290622-.650804-.80161531-1.555532-1.20242296-2.714325-1.20242296-1.174646 0-2.08737.40080765-2.738174 1.20242296-.650804.8016153-.976276 1.93263082-.976276 3.39290622 0 1.5079739.321544 2.6548421.964351 3.4406047.642808.7857626 1.559601 1.1785737 2.750099 1.1785737s2.103223-.3928111 2.738174-1.1785737z"/><path d="m136.610315 10.0204719v7.5240167h-1.928563v-7.42876c0-1.11109441-.222219-1.92463434-.666656-2.44047953-.444438-.5158452-1.142941-.77383795-2.095367-.77383795-1.111095 0-1.99997.34132482-2.666627 1.02383418-.666656.68250935-1.000125 1.6032306-1.000125 2.7620235v6.8572198h-1.928562v-8.61925838c0-1.23805653-.063411-2.35714741-.190514-3.35713233h1.833446l.190514 2.14292505c.365033-.77790635.912724-1.37708362 1.642792-1.79767212.730208-.42072879 1.563529-.63102304 2.500102-.63102304 2.873133 0 4.30956 1.57938136 4.30956 4.73814412z"/><path d="m139.515153 16.1634769.642948-1.4285699c.650803.5079889 1.309464.8730227 1.97626 1.0952416.666517.2222189 1.412858.3333283 2.237761.3333283.904869 0 1.590885-.1547395 2.059453-.4642186s.702851-.7579852.702851-1.3452379c0-.4762835-.158527-.85717-.475582-1.1429401-.318457-.2857701-.841738-.507989-1.572647-.6666566l-2.022977-.4762835c-1.000406-.2222189-1.774104-.6189581-2.321795-1.1904983-.547691-.5713999-.821396-1.2539093-.821396-2.04766838 0-1.04754313.420588-1.90078504 1.261906-2.55958543.841317-.65866011 1.952832-.98806031 3.333283-.98806031.841738 0 1.635778.13495869 2.380716.40473577.746341.26991736 1.373436.65880039 1.881285 1.16678937l-.642527 1.40472069c-1.127929-.93657399-2.333018-1.40472069-3.619474-1.40472069-.85717 0-1.519338.16259575-1.987905.48806784-.468427.32533179-.702571.78169416-.702571 1.3690871 0 .49199596.146883.88101927.44051 1.16664909.294328.28577005.765701.50798895 1.416645.66665665l2.02438.4999924c1.111095.2540647 1.935998.6468758 2.476113 1.178714.540116.531698.809472 1.2261319.809472 2.083302 0 1.0318306-.420869 1.8571549-1.262607 2.4762533-.840336.6190984-1.983697.9285775-3.42868.9285775-2.015402 0-3.610776-.5158452-4.785422-1.5476759z"/><path d="m171.469076 17.5444886-1.857435-4.3572575h-8.857891l-1.881285 4.3572575h-2.022977l7.452188-16.95274668h1.71434l7.452189 16.95274668zm-10.025101-5.9763409h7.476038l-3.737318-8.71437478z"/><path d="m178.348883 15.0920845v1.7381893c0 .6666566-.110829 1.2777585-.332487 1.8333057-.22306.5555472-.596231 1.0952416-1.119511 1.6190833l-.904869-.6905058c.618678-.7142148.967999-1.3968645 1.047964-2.0476684h-1.143361v-2.4524041z"/><path d="m200.064324 10.2943173c.540116.7063586.809472 1.5834498.809472 2.6309929 0 1.4762685-.492417 2.6151402-1.475848 3.4167555-.984833.8016153-2.373701 1.2024229-4.166603 1.2024229h-7.048155v-16.95274668h6.809662c1.729772 0 3.07515.38495492 4.036134 1.15486475.959582.76976954 1.439373 1.86108306 1.439373 3.27380026 0 .90486851-.232881 1.68656268-.701449 2.34536307-.468567.65866011-1.12372 1.14686824-1.964055 1.46420352.967998.26991737 1.721354.75798521 2.261469 1.46434378zm-9.95215-2.1785586h4.570638c1.269622 0 2.230606-.25406463 2.88155-.76191332.650944-.50798897.976416-1.25404956.976416-2.23818175 0-1.93655891-1.286456-2.90483837-3.857966-2.90483837h-4.570638zm7.892698 7.0596579c.627095-.4999925.939941-1.2658339.939941-2.2976646 0-2.0793738-1.293471-3.11906071-3.880413-3.11906071h-4.952226v6.16671401h4.952226c1.332752 0 2.313377-.2499962 2.940472-.7499887z"/><path d="m206.064515 15.0920845v1.7381893c0 .6666566-.110829 1.2777585-.33389 1.8333057-.221658.5555472-.594828 1.0952416-1.118109 1.6190833l-.904868-.6905058c.618677-.7142148.967999-1.3968645 1.046561-2.0476684h-1.141958v-2.4524041z"/><path d="m218.957137 16.6873186c-1.182642-.6983621-2.090316-1.7024154-2.725828-3.0118794-.635513-1.3096043-.952567-2.853352-.952567-4.63110303 0-1.77789127.317054-3.31364253.952567-4.60725378.635512-1.29361125 1.543186-2.28966807 2.725828-2.98817045 1.182642-.69836209 2.575719-1.04768342 4.17923-1.04768342 1.174225 0 2.250247.17858878 3.226663.53576634.975013.35717755 1.82096.89294389 2.535035 1.60715871l-.737924 1.50011768c-.809471-.69850238-1.60772-1.19849484-2.393342-1.50011768s-1.654016-.45229397-2.606583-.45229397c-1.857435 0-3.29821.60310539-4.322325 1.80945645-1.022712 1.20635107-1.534769 2.92069111-1.534769 5.14302012 0 2.23818173.507848 3.96430613 1.523546 5.17865373 1.015697 1.2143476 2.460681 1.8215213 4.333548 1.8215213.952567 0 1.820961-.1508114 2.606583-.4524342.785622-.3016229 1.583871-.8016153 2.393342-1.4999774l.737924 1.4999774c-.714075.7143551-1.560022 1.2499811-2.535035 1.6071587-.976416.3571776-2.052438.5357663-3.226663.5357663-1.603511 0-2.996588-.349181-4.17923-1.0476834z"/></g><g transform="translate(.267895 224.553185)"><path d="m.21765.193821h263.332986v106.422426h-263.332986z" fill="#c9177e"/><path d="m263.550636 106.616248h-263.33298624v-106.42242661h263.33298624zm-260.79463916-103.88400537v101.34558437h258.25629216v-101.34558437z" fill="#000"/></g><g transform="translate(.968438 362.150954)"><path d="m.058374.14766h70.625927v81.076506h-70.625927z" fill="#00a88a"/><path d="m70.6843004 81.224166h-70.62592672v-81.07650576h70.62592672zm-68.08746821-78.53804774v75.99958964h65.54828551v-75.99958964z" fill="#000"/></g><g transform="translate(97.321977 362.150954)"><path d="m.058374.14766h70.625927v81.076506h-70.625927z" fill="#00a88a"/><path d="m70.6843004 81.224166h-70.62592672v-81.07650576h70.62592672zm-68.08746821-78.53804774v75.99958964h65.54828551v-75.99958964z" fill="#000"/></g><g transform="translate(193.675515 362.150954)"><path d="m.058374.14766h70.625927v81.076506h-70.625927z" fill="#00a88a"/><path d="m70.6843004 81.224166h-70.62592672v-81.07650576h70.62592672zm-68.08746821-78.53804774v75.99958964h65.54828551v-75.99958964z" fill="#000"/></g><g transform="translate(329.309669 362.924954)"><path d="m.058374.14766h70.625927v81.076506h-70.625927z" fill="#00a88a"/><path d="m70.6843004 81.224166h-70.62592672v-81.07650576h70.62592672zm-68.08746821-78.53804774v75.99958964h65.54828551v-75.99958964z" fill="#000"/></g><g transform="translate(425.663669 362.924954)"><path d="m.058374.14766h70.625927v81.076506h-70.625927z" fill="#00a88a"/><path d="m70.6843004 81.224166h-70.62592672v-81.07650576h70.62592672zm-68.08746821-78.53804774v75.99958964h65.54828551v-75.99958964z" fill="#000"/></g><g transform="translate(523.997669 362.924954)"><path d="m.058374.14766h70.625927v81.076506h-70.625927z" fill="#00a88a"/><path d="m70.6843004 81.224166h-70.62592672v-81.07650576h70.62592672zm-68.08746821-78.53804774v75.99958964h65.54828551v-75.99958964z" fill="#000"/></g><g transform="translate(660.171823 361.893877)"><path d="m.058374.14766h70.625927v81.076506h-70.625927z" fill="#00a88a"/><path d="m70.6843004 81.224166h-70.62592672v-81.07650576h70.62592672zm-68.08746821-78.53804774v75.99958964h65.54828551v-75.99958964z" fill="#000"/></g><g transform="translate(756.527208 361.893877)"><path d="m.058374.14766h70.625927v81.076506h-70.625927z" fill="#00a88a"/><path d="m70.6843004 81.224166h-70.62592672v-81.07650576h70.62592672zm-68.08746821-78.53804774v75.99958964h65.54828551v-75.99958964z" fill="#000"/></g><g transform="translate(852.877977 361.893877)"><path d="m.058374.14766h70.625927v81.076506h-70.625927z" fill="#00a88a"/><path d="m70.6843004 81.224166h-70.62592672v-81.07650576h70.62592672zm-68.08746821-78.53804774v75.99958964h65.54828551v-75.99958964z" fill="#000"/></g><g fill="#f2f2f2" fill-rule="nonzero" transform="translate(26.69736 242.51167)"><path d="m.00427353 31.0947909 1.49915514-3.0461739c1.70855821 1.4504369 3.44902547 2.4820676 5.22225648 3.0946072 1.7729461.6125397 3.83592255.9188095 6.18921435.9188095 2.772098 0 4.9077245-.5401745 6.4068797-1.6199537 1.4988702-1.080064 2.2484478-2.6031509 2.2484478-4.5695456 0-1.1604065-.3626805-2.1034326-1.0880414-2.8285086-.7253608-.7253609-1.6763642-1.2977293-2.8527252-1.7165355-1.1766459-.419091-2.7481662-.8544215-4.7145609-1.3057065-2.6433221-.5803457-4.8194048-1.2088399-6.52767811-1.8857674-1.70855822-.6769275-3.0948921-1.6521476-4.15843184-2.9253753-1.06382464-1.2732277-1.59573696-2.9416147-1.59573696-5.0045912 0-1.96639471.51567289-3.69916961 1.54730359-5.19803984 1.0316307-1.49915513 2.49004483-2.66753887 4.37609709-3.505721 1.88576735-.83818214 4.08578183-1.25727321 6.60004333-1.25727321 2.3854857 0 4.6097168.37094261 6.6729782 1.11225801 2.0629765.74131541 3.8037287 1.82137947 5.2222565 3.23962239l-1.5473036 3.04645873c-1.6119764-1.38633388-3.2478846-2.40172515-4.9080094-3.04645873-1.6601249-.64473357-3.4735271-.96695791-5.4399217-.96695791-2.6755162 0-4.7706866.57208353-6.28579626 1.71653548-1.51510965 1.14445195-2.27266448 2.71597223-2.27266448 4.71456088 0 1.7407521.6606881 3.0461738 1.98234919 3.9165499 1.32166109.870376 3.35272854 1.6279309 6.09263255 2.2726645 2.9658314.7091214 5.2949065 1.3618322 6.9872253 1.9584174 1.6923188.5963002 3.1025845 1.4988702 4.230797 2.70771 1.1284974 1.2088399 1.6926037 2.8125541 1.6926037 4.8111427 0 1.9342007-.5159578 3.6344968-1.5473036 5.101458-1.0316307 1.4666763-2.5065691 2.602866-4.4245304 3.4088542s-4.1664091 1.2088399-6.7453434 1.2088399c-5.38322623 0-9.67071874-1.4507218-12.86219267-4.3518804z"/><path d="m51.9362381 22.7779272h-17.8425672c.0324789 3.0946072.7495776 5.4316596 2.151866 7.011442 1.4022884 1.5794975 3.4413331 2.3692463 6.1168493 2.3692463 2.8367707 0 5.4478989-.9510034 7.8330998-2.8530102l1.3057065 2.8530102c-1.0638246.9994368-2.4256569 1.7891855-4.0857817 2.3692463-1.6604098.5803457-3.3607058.8703761-5.101458.8703761-3.8037287 0-6.7855146-1.1202353-8.9453578-3.3604209-2.1598433-2.2404705-3.2399073-5.310861-3.2399073-9.2114564 0-2.4820676.4837638-4.6823669 1.4507217-6.6003282s2.3210979-3.4088543 4.06185-4.4726789c1.7404673-1.0638247 3.7231014-1.595737 5.9473325-1.595737 3.2236679 0 5.7541688 1.0558474 7.5915028 3.1672572 1.8376189 2.1114099 2.7561434 5.0205458 2.7561434 8.7276926zm-15.2553707-7.736518c-1.2735126 1.2247944-2.0874781 2.949592-2.4418964 5.1738231h14.1676144c-.1934486-2.288619-.8623989-4.0293711-2.0068508-5.2222565-1.1441671-1.1926004-2.7319268-1.7891855-4.7627093-1.7891855-2.0307826 0-3.6829302.6125397-4.9561579 1.8376189z"/><path d="m61.9214888 33.8509343c-1.7569916-1.0313458-3.1108466-2.4900448-4.06185-4.3760971-.9510034-1.8857673-1.4265051-4.0857818-1.4265051-6.6000433 0-2.5145464.4837639-4.7308002 1.4507218-6.6487615s2.3453145-3.4088543 4.1342152-4.4726789c1.7891855-1.0638247 3.8763787-1.595737 6.2618644-1.595737 1.6441703 0 3.2316451.2820531 4.7627093.8461594 1.5313491.5641063 2.7965995 1.3458778 3.7960363 2.3453145l-1.3057066 2.9011587c-1.2247943-.9672429-2.4097024-1.6763643-3.5538694-2.1276493-1.144452-.451285-2.3131206-.6769276-3.505721-.6769276-2.4820676 0-4.4325078.8302049-5.8507507 2.4903298-1.4185278 1.6601248-2.1276493 3.9729605-2.1276493 6.9387919 0 2.9333526.7011442 5.2139943 2.1034326 6.8419253 1.4022884 1.6279309 3.3604209 2.4418963 5.8749674 2.4418963 1.1926004 0 2.361269-.2256425 3.505721-.6769275 1.144167-.451285 2.3290751-1.1604065 3.5538694-2.1276493l1.3057066 2.9011586c-1.0316307.9672429-2.3290751 1.7327749-3.8926181 2.2968812-1.5635431.5641063-3.1832118.8461594-4.8595761.8461594-2.3532918 0-4.408291-.5156729-6.1649977-1.5473036z"/><path d="m87.0894602 13.8325694v13.2972382c0 1.80514.3709426 3.0703905 1.112258 3.7957514s1.7891855 1.0880413 3.1430406 1.0880413c.90257 0 1.7729461-.1450152 2.6111282-.4353305v3.3364892c-.9994368.3225092-2.1276493.4834789-3.3849225.4834789-2.3208129 0-4.1342151-.6527108-5.4396368-1.9581325-1.3057066-1.3057066-1.9584174-3.2316451-1.9584174-5.7783855v-13.8291505h-4.7387775v-3.0946072h4.7387775v-6.23764778l3.9165499-1.4022884v7.63993618h6.9630086v3.0946072z"/><path d="m98.7912464 35.0597742v-24.321812h3.9165496v24.321812zm-.3868972-34.62130978h4.7869258v4.44874713h-4.7869258z"/><path d="m114.312716 33.8509343c-1.740752-1.0313458-3.08663-2.498307-4.037634-4.4000289-.950718-1.9020067-1.42622-4.1262378-1.42622-6.6729782 0-2.5464555.475502-4.7709715 1.42622-6.6726933.951004-1.9020068 2.296882-3.3686831 4.037634-4.4003138s3.75558-1.5473036 6.044199-1.5473036c2.288904 0 4.303447.5156729 6.044199 1.5473036s3.08663 2.498307 4.037633 4.4003138c.951004 1.9017218 1.426505 4.1262378 1.426505 6.6726933 0 2.5467404-.475501 4.7709715-1.426505 6.6729782-.951003 1.9017219-2.296881 3.3686831-4.037633 4.4000289-1.740752 1.0316307-3.755295 1.5473036-6.044199 1.5473036-2.288619 0-4.303447-.5156729-6.044199-1.5473036zm11.604919-4.0857818c1.289467-1.5957369 1.934201-3.924812 1.934201-6.9872253 0-2.9655465-.660973-5.2624277-1.982634-6.8903586s-3.158995-2.4418964-5.512287-2.4418964c-2.385486 0-4.239059.8139655-5.56072 2.4418964s-1.98235 3.9248121-1.98235 6.8903586c0 3.0624133.652711 5.3914884 1.958133 6.9872253 1.305707 1.595737 3.167257 2.393463 5.584937 2.393463s4.271253-.797726 5.56072-2.393463z"/><path d="m158.846626 19.7799018v15.2798724h-3.916835v-15.0864238c0-2.2564251-.451285-3.9085727-1.353855-4.9561579s-2.320813-1.5715203-4.255013-1.5715203c-2.256425 0-4.06185.693167-5.415705 2.079216-1.353856 1.3860489-2.030783 3.2558618-2.030783 5.6091536v13.9257324h-3.91655v-17.5041035c0-2.5142615-.129061-4.786926-.386897-6.8177085h3.723101l.386897 4.3518804c.741316-1.5797825 1.853574-2.7965996 3.33649-3.6507362 1.482915-.8544216 3.175234-1.2814899 5.076956-1.2814899 5.834796 0 8.752194 3.2074284 8.752194 9.6222853z"/><path d="m205.653771 35.0597742-3.772105-8.848776h-17.988722l-3.817689 8.848776h-4.111138l15.134003-34.42786122h3.481504l15.134002 34.42786122zm-20.359108-12.1368318h15.185285l-7.592643-17.69726709z"/></g><g fill="#f2f2f2" fill-rule="nonzero" transform="translate(22.788376 290.137172)"><path d="m.04658391 21.7701602 1.62834138-20.70276002h4.56506199l-1.36656882 17.01005832h9.24650314l-.2907867 3.6927017z"/><path d="m16.3006611 21.7701602 1.1629859-14.74195382h4.3906544l-1.1629859 14.74195382zm1.5119622-21.66232409h4.7104554l-.319801 4.12904304h-4.7104553z"/><path d="m23.395439 20.2000084 1.4247584-3.0530998c.8141707.5622308 1.6863698.9935752 2.6169196 1.2940334.9303887.3004581 1.8609386.4506872 2.7913273.4506872.8141707 0 1.415087-.1163792 1.8027489-.3489764.387662-.2325971.5815736-.5427267.5815736-.9303886 0-.407166-.2277615-.7269669-.6832845-.9595641-.4555229-.2325972-1.1969969-.5040411-2.224422-.8141707-1.0661106-.2907868-1.9384709-.5815735-2.6169196-.8723603-.6784487-.2907867-1.2648579-.72197-1.7590665-1.2938721-.4943697-.5719021-.741474-1.3133761-.741474-2.224422 0-.9498927.2664471-1.78340617.7995024-2.50054048.5330554-.7172955 1.2891976-1.27936503 2.2681045-1.68653097.9789069-.40700475 2.0983714-.61058772 3.3583937-.61058772 1.1047962 0 2.1855752.16473618 3.2420144.49436973 1.0564393.32947236 1.9433067.7753239 2.6606022 1.33755462l-1.3957442 2.93672062c-.7172955-.5233839-1.4732766-.9208785-2.2679433-1.1921612-.7948279-.27144401-1.5701518-.40716599-2.3262941-.40716599-.7946667 0-1.395583.11637918-1.802749.34897639-.4070047.2325971-.6105877.5523981-.6105877.959564 0 .4265088.2422686.7656525.7269669 1.0177537.4845371.25194 1.2211754.5135513 2.2097537.7849953 1.0662719.3101296 1.9336353.6105877 2.6024126.9013745.6687773.2907867 1.2503508.7221312 1.7447205 1.2938721.4942086.5719021.7413128 1.3133761.7413128 2.224422 0 1.4539338-.5765766 2.5927412-1.7300522 3.4165832-1.1533145.8238421-2.7089592 1.2356826-4.6667729 1.2356826-2.5200445 0-4.768645-.6009163-6.7458015-1.802749z"/><path d="m44.7087867 16.0421124c-.0581896.8141707.1065466 1.415087.4942086 1.8027489.3878231.387662.9208784.5815736 1.5993272.5815736.4458515 0 .94006-.0776936 1.482948-.2327584l-.2907868 3.4020761c-.6591059.271444-1.5119622.4070048-2.5587301.4070048-1.6671881 0-2.9417175-.4458516-3.8237491-1.3375546-.8818705-.8915419-1.3228864-2.1515642-1.3228864-3.7799055 0-.3296336.0096714-.5815736.0290142-.7559811l.4651944-5.8154129h-2.7913273l.2616114-3.28569692h2.7914884l.2616114-3.46010454 4.5070336-1.42475841-.3779906 4.88486295h3.7508913l-.2617725 3.28569692h-3.7508913z"/><path d="m49.3900667 20.2000084 1.4247584-3.0530998c.8141707.5622308 1.686531.9935752 2.6169197 1.2940334.9305498.3004581 1.8609385.4506872 2.7914884.4506872.8141707 0 1.415087-.1163792 1.802749-.3489764.3876619-.2325971.5815735-.5427267.5815735-.9303886 0-.407166-.2277615-.7269669-.6832844-.9595641-.4556842-.2325972-1.196997-.5040411-2.224422-.8141707-1.0661107-.2907868-1.938471-.5815735-2.6169197-.8723603-.6784487-.2907867-1.2648579-.72197-1.7592276-1.2938721-.4942086-.5719021-.741474-1.3133761-.741474-2.224422 0-.9498927.2666082-1.78340617.7996635-2.50054048.5330554-.7172955 1.2890365-1.27936503 2.2679433-1.68653097.9789069-.40700475 2.0983715-.61058772 3.3583937-.61058772 1.1049574 0 2.1857364.16473618 3.2421757.49436973 1.0564392.32947236 1.9433066.7753239 2.6604409 1.33755462l-1.395583 2.93672062c-.7172955-.5233839-1.4732766-.9208785-2.2681045-1.1921612-.7946667-.27144401-1.5701518-.40716599-2.3261329-.40716599-.7948279 0-1.3957442.11637918-1.802749.34897639-.4070047.2325971-.6105877.5523981-.6105877.959564 0 .4265088.2422686.7656525.7269669 1.0177537.4845372.25194 1.2211755.5135513 2.2097537.7849953 1.0661107.3101296 1.9336353.6105877 2.6024126.9013745.6687773.2907867 1.2503508.7221312 1.7445594 1.2938721.4943697.5719021.741474 1.3133761.741474 2.224422 0 1.4539338-.5767379 2.5927412-1.7300523 3.4165832-1.1533145.8238421-2.7089592 1.2356826-4.6667729 1.2356826-2.5200445 0-4.768645-.6009163-6.7459627-1.802749z"/><path d="m73.2145935 2.29179942h7.7695192c2.0061707 0 3.5700361.48340881 4.6917573 1.44990405 1.12156.96665643 1.68234 2.29808583 1.68234 3.9942882 0 1.69604118-.5652933 3.03198393-1.6960412 4.00782813-1.1307478.9756831-2.6900999 1.4636052-4.6780561 1.4636052h-5.526238v8.5627352h-2.2432812zm7.5778643 9.05533178c1.4408774 0 2.5260084-.3101295 3.2555544-.9302274.7295459-.62009798 1.0943189-1.51373534 1.0943189-2.68091213 0-1.16733798-.364773-2.05646202-1.0943189-2.66737212-.729546-.61107129-1.814677-.91652634-3.2555544-.91652634h-5.3345831v7.19503799z"/><path d="m102.432215 8.0095311v13.7606291h-2.188638v-2.4894183c-.4012015.8572084-1.0075983 1.5182486-1.8193511 1.9832817-.8115916.4651944-1.7553591.6976303-2.8314635.6976303-1.2218202 0-2.2934114-.2917539-3.214451-.8754229-.9210397-.5835078-1.63221-1.4088006-2.1338332-2.4758784-.5016233-1.0669166-.7522738-2.3116257-.7522738-3.7341275 0-1.4226629.255325-2.6765599.7659749-3.761691s1.2264947-1.92863838 2.1475344-2.53052184c.9210396-.60188346 1.9834429-.90282519 3.1870487-.90282519 1.0761044 0 2.0153585.23711049 2.8179235.71133147.8024039.47422098 1.4134752 1.13993568 1.8328911 1.99698296v-2.3799704zm-3.2829565 10.7376719c.729546-.9210397 1.0943185-2.2295801 1.0943185-3.9257825s-.3647725-3.0002295-1.0943185-3.9120813c-.7295459-.91185183-1.7690602-1.36785834-3.1187041-1.36785834s-2.4028593.46970764-3.1598076 1.40896184c-.756787.9392541-1.1352611 2.2477945-1.1352611 3.9257824 0 1.6778267.3737996 2.9728272 1.12156 3.884679s1.8056504 1.3678583 3.1735087 1.3678583c1.3496439 0 2.3891582-.4605198 3.1187041-1.3815594z"/><path d="m118.983366 8.0095311v13.6511811c0 2.0427609-.524351 3.5884118-1.573054 4.6371139-1.048702 1.0487022-2.594514 1.5730532-4.637113 1.5730532-2.097405 0-3.903055-.4742209-5.41679-1.4226629l.382987-1.8054892c.875423.4924355 1.700716.8480206 2.475878 1.0669166.775163.218896 1.627697.328344 2.557925.328344 1.331429 0 2.334514-.3510718 3.009256-1.0533766.674902-.7021436 1.012273-1.7461713 1.012273-3.1324053v-3.2553932c-.419417.8754229-1.035001 1.5546775-1.846593 2.0380863-.811591.4832477-1.773735.7248715-2.886268.7248715-1.203606 0-2.275197-.2825661-3.214451-.8480206-.939254-.5652933-1.664287-1.3678584-2.174937-2.4073727-.51065-1.0396755-.765974-2.2342546-.765974-3.5838984 0-1.3496439.255324-2.544223.765974-3.5837373.51065-1.0396755 1.235683-1.84207932 2.174937-2.40753384.939254-.56529333 2.010845-.84802059 3.214451-.84802059 1.094319 0 2.047274.23711049 2.858866.71133147s1.427176 1.13993568 1.846593 1.99698296v-2.3799704zm-3.351302 10.1631907c.756787-.8846107 1.135262-2.1019176 1.135262-3.652243 0-1.5501643-.378475-2.7676323-1.135262-3.6520819-.756948-.88461068-1.800976-1.32691604-3.132405-1.32691604-1.349644 0-2.412047.44230536-3.18721 1.32691604-.775001.8844496-1.162663 2.1019176-1.162663 3.6520819 0 1.5503254.387662 2.7676323 1.162663 3.652243.775163.8846107 1.837566 1.3267549 3.18721 1.3267549 1.331429 0 2.375457-.4421442 3.132405-1.3267549z"/><path d="m134.76838 14.8214205h-10.094846c.018375 1.7508458.424091 3.0730874 1.217468 3.9668859.793377.8936374 1.947014 1.340456 3.460749 1.340456 1.604969 0 3.082275-.5380522 4.431758-1.6141566l.738734 1.6141566c-.601884.5654546-1.372372 1.0122732-2.311626 1.3404561-.939415.328344-1.901397.4924354-2.886268.4924354-2.152048 0-3.839062-.633799-5.061044-1.901236-1.221981-1.2675982-1.833052-3.0047428-1.833052-5.2115951 0-1.4042873.2737-2.6491576.820779-3.7342887s1.313215-1.92863838 2.298086-2.53052184c.98471-.60188346 2.106431-.90282519 3.364841-.90282519 1.823865 0 3.255555.59737014 4.295069 1.79194923 1.039675 1.1945791 1.559352 2.8404902 1.559352 4.9378945zm-8.63108-4.3771144c-.720519.6929558-1.181039 1.6688-1.381559 2.9272104h8.015656c-.109448-1.2948393-.487922-2.2797102-1.135422-2.9546127-.647339-.67474139-1.545651-1.01227325-2.694614-1.01227325-1.148962 0-2.083703.3465585-2.804061 1.03967555z"/><path d="m137.285362 20.1834059.738572-1.6413978c.747761.583669 1.504709 1.0030854 2.270684 1.2584103.765975.255325 1.623506.3829875 2.571303.3829875 1.039675 0 1.827894-.1777926 2.366269-.5333778.538375-.3555851.807562-.8709095.807562-1.5456509 0-.54724-.182145-.9848709-.546434-1.3132149-.365901-.328344-.96714-.583669-1.80694-.7659749l-2.32436-.54724c-1.149446-.255325-2.03857-.7111703-2.667856-1.3678584-.629124-.6565268-.943767-1.4407162-.943767-2.3527292 0-1.2036057.483248-2.18396332 1.449904-2.94091156.966656-.75678705 2.243926-1.13526117 3.830036-1.13526117.96714 0 1.877863.15506478 2.735394.46503315.857531.31012956 1.57805.75694824 2.161558 1.34061723l-.73825 1.61399545c-1.295968-1.0761044-2.682202-1.61399545-4.158702-1.61399545-.984871 0-1.745688.18681921-2.284063.56078005-.538213.3737996-.807239.8981506-.807239 1.5730532 0 .5652933.168605 1.0122732.505975 1.340456.336726.328344.879936.583669 1.627858.7659749l2.325972.5744812c1.276625.291915 2.224422.743247 2.845003 1.3543183.61897.6109101.930067 1.4088006.930067 2.3936715 0 1.1855525-.48357 2.1338333-1.45071 2.8451647-.965529.7113315-2.279227 1.0669166-3.939484 1.0669166-2.315817 0-4.148708-.5926956-5.498352-1.778248z"/><path d="m166.776845 19.8826253h4.294102v1.8875349h-10.860982v-1.8875349h4.295713v-14.8003046l-3.994288 2.54422296v-2.16123552l4.979159-3.17350872h1.286296z"/><path d="m177.692632 18.9523978v1.9971441c0 .7659749-.128952 1.4681185-.383632 2.1064309s-.683446 1.2584104-1.286296 1.8602938l-1.039676-.7933771c.71246-.8206183 1.113823-1.6049689 1.20409-2.3527293h-1.313699v-2.8177624z"/><path d="m194.243621 19.8826253v1.8875349h-12.529298v-1.6960412l6.811889-7.5506231c.910724-1.0214611 1.576438-1.9425007 1.997144-2.76311902.419094-.82077948.628641-1.64139777.628641-2.46217725 0-1.07610444-.311096-1.90139724-.930066-2.4758784-.620582-.57448116-1.505515-.86172174-2.654799-.86172174-1.860133 0-3.700923.74776041-5.525594 2.24328123l-.847859-1.72344348c.765652-.72954594 1.732792-1.31321493 2.899808-1.75084578 1.167016-.43779204 2.343703-.65668806 3.530061-.65668806 1.785985 0 3.199622.46051983 4.239297 1.38155949 1.039676.92103966 1.560319 2.16574884 1.560319 3.73428873 0 1.11253338-.251456 2.18396331-.752757 3.21445098-.501301 1.0304877-1.336265 2.1841245-2.503281 3.4607493l-5.552995 6.0186734z"/><path d="m200.425258 18.9523978v1.9971441c0 .7659749-.12734 1.4681185-.38202 2.1064309-.256292.6383124-.683446 1.2584104-1.286297 1.8602938l-1.039675-.7933771c.710848-.8206183 1.112211-1.6049689 1.204089-2.3527293h-1.313698v-2.8177624z"/><path d="m215.691563 13.4535622c.601239.802565.902664 1.814677.902664 3.0366584 0 1.6962023-.575448 3.0321451-1.723121 4.0078281-1.149285.9758443-2.709604 1.4636052-4.679346 1.4636052-1.257282 0-2.466207-.2097082-3.623551-.6291245-1.158956-.4195776-2.138991-1.0122732-2.941718-1.7782481l.875262-1.7236047c1.805328 1.495682 3.684803 2.2434424 5.635202 2.2434424 1.386234 0 2.440417-.3101295 3.160936-.9302275.72052-.6200979 1.079973-1.5319497 1.079973-2.7357166 0-2.3891582-1.495843-3.5837373-4.485917-3.5837373h-2.243765v-1.8876961h1.805328c1.441038 0 2.54519-.3191562 3.310842-.9574686.765653-.63847359 1.149285-1.55032542 1.149285-2.73571668 0-1.05788997-.315932-1.86948162-.944573-2.43493614-.628641-.56529333-1.51841-.84802059-2.667695-.84802059-1.860132 0-3.702534.74776041-5.525593 2.24328123l-.847859-1.72344348c.783383-.74776041 1.745687-1.33594272 2.885301-1.76454693 1.141225-.42860421 2.330807-.64298691 3.570358-.64298691 1.752135 0 3.151265.44681868 4.200612 1.34061723 1.047735.89363736 1.571602 2.09740428 1.571602 3.61113957 0 1.11253338-.272411 2.08821645-.820457 2.9272104-.546434.838994-1.304027 1.4408774-2.269555 1.8054892 1.147673.328344 2.022934.8937985 2.625785 1.6962024z"/></g><g transform="translate(329.992265 224.553185)"><path d="m.21765.193821h263.332986v106.422426h-263.332986z" fill="#c9177e"/><path d="m263.550636 106.616248h-263.33298624v-106.42242661h263.33298624zm-260.79463916-103.88400537v101.34558437h258.25629216v-101.34558437z" fill="#000"/></g><g fill="#f2f2f2" fill-rule="nonzero" transform="translate(359.320353 242.51167)"><path d="m.14615481 31.0947909 1.49887023-3.0461739c1.70855821 1.4504369 3.44931037 2.4820676 5.22225648 3.0946072 1.7729461.6125397 3.83620748.9188095 6.18921438.9188095 2.7723829 0 4.9080094-.5401745 6.4068796-1.6199537 1.4991552-1.080064 2.2484478-2.6031509 2.2484478-4.5695456 0-1.1604065-.3623955-2.1034326-1.0877564-2.8285086-.7253609-.7253609-1.6763643-1.2977293-2.8530102-1.7165355-1.1766458-.419091-2.7481661-.8544215-4.7145608-1.3057065-2.6433222-.5803457-4.81911993-1.2088399-6.52767814-1.8857674-1.70855822-.6769275-3.0946072-1.6521476-4.15843184-2.9253753s-1.59573696-2.9416147-1.59573696-5.0045912c0-1.96639471.5159578-3.69916961 1.54730359-5.19803984 1.0316307-1.49915513 2.49032973-2.66753887 4.37609709-3.505721 1.88576735-.83818214 4.08606666-1.25727321 6.60032816-1.25727321 2.3854858 0 4.6097169.37094261 6.6726934 1.11225801 2.0632614.74131541 3.8040135 1.82137947 5.2222565 3.23962239l-1.5473036 3.04645873c-1.6116915-1.38633388-3.2475997-2.40172515-4.9077245-3.04645873-1.6601249-.64473357-3.4735271-.96695791-5.4399218-.96695791-2.6755161 0-4.77097143.57208353-6.28608109 1.71653548-1.51510965 1.14445195-2.27266448 2.71597223-2.27266448 4.71456088 0 1.7407521.660973 3.0461738 1.98263409 3.9165499 1.32166109.870376 3.35244368 1.6279309 6.09263258 2.2726645 2.9655465.7091214 5.2946216 1.3618322 6.9869404 1.9584174 1.6926037.5963002 3.1028694 1.4988702 4.2310819 2.70771 1.1282125 1.2088399 1.6923188 2.8125541 1.6923188 4.8111427 0 1.9342007-.5156729 3.6344968-1.5473036 5.101458-1.0316307 1.4666763-2.5062843 2.602866-4.4242456 3.4088542-1.9182462.8059882-4.166694 1.2088399-6.7453434 1.2088399-5.38351106 0-9.67071867-1.4507218-12.86219259-4.3518804z"/><path d="m52.0781194 22.7779272h-17.8425672c.032194 3.0946072.7495776 5.4316596 2.151866 7.011442 1.4022884 1.5794975 3.4410482 2.3692463 6.1165643 2.3692463 2.8367708 0 5.447899-.9510034 7.8333847-2.8530102l1.3057066 2.8530102c-1.0638246.9994368-2.4259418 1.7891855-4.0860667 2.3692463-1.6601248.5803457-3.3604209.8703761-5.101173.8703761-3.8040136 0-6.7857995-1.1202353-8.9456428-3.3604209-2.1598432-2.2404705-3.2396224-5.310861-3.2396224-9.2114564 0-2.4820676.483479-4.6823669 1.4507218-6.6003282.9669579-1.9179613 2.320813-3.4088543 4.0615651-4.4726789 1.7407522-1.0638247 3.7233863-1.595737 5.9476174-1.595737 3.2233829 0 5.7541688 1.0558474 7.5915028 3.1672572 1.837334 2.1114099 2.7561434 5.0205458 2.7561434 8.7276926zm-15.2556556-7.736518c-1.2732277 1.2247944-2.0871932 2.949592-2.4418964 5.1738231h14.1676143c-.1931636-2.288619-.8621139-4.0293711-2.0065658-5.2222565-1.144452-1.1926004-2.7319268-1.7891855-4.7627094-1.7891855-2.0310674 0-3.683215.6125397-4.9564427 1.8376189z"/><path d="m62.0630852 33.8509343c-1.7567067-1.0313458-3.1105617-2.4900448-4.0615651-4.3760971-.9510034-1.8857673-1.4265051-4.0857818-1.4265051-6.6000433 0-2.5145464.483479-4.7308002 1.4507218-6.6487615.9669579-1.9179613 2.3450296-3.4088543 4.1342151-4.4726789 1.7889007-1.0638247 3.8763787-1.595737 6.2618645-1.595737 1.6438854 0 3.2316451.2820531 4.7627093.8461594 1.531349.5641063 2.7965995 1.3458778 3.7957514 2.3453145l-1.3054217 2.9011587c-1.2250793-.9672429-2.4097024-1.6763643-3.5541544-2.1276493-1.144167-.451285-2.3128357-.6769276-3.505721-.6769276-2.4820675 0-4.4322228.8302049-5.8507506 2.4903298-1.4182429 1.6601248-2.1273644 3.9729605-2.1273644 6.9387919 0 2.9333526.7011442 5.2139943 2.1031477 6.8419253 1.4022884 1.6279309 3.3607058 2.4418963 5.8749673 2.4418963 1.1928853 0 2.361554-.2256425 3.505721-.6769275 1.144452-.451285 2.3290751-1.1604065 3.5541544-2.1276493l1.3054217 2.9011586c-1.0316307.9672429-2.3290751 1.7327749-3.8923333 2.2968812-1.563543.5641063-3.1834966.8461594-4.859576.8461594-2.3532918 0-4.408291-.5156729-6.1652826-1.5473036z"/><path d="m87.2313415 13.8325694v13.2972382c0 1.80514.3706577 3.0703905 1.112258 3.7957514.7413154.7253609 1.7889006 1.0880413 3.1427556 1.0880413.9025701 0 1.7729461-.1450152 2.6111283-.4353305v3.3364892c-.9991519.3225092-2.1273644.4834789-3.3846376.4834789-2.3210979 0-4.1342152-.6527108-5.4399217-1.9581325-1.3054217-1.3057066-1.9581325-3.2316451-1.9581325-5.7783855v-13.8291505h-4.7387776v-3.0946072h4.7387776v-6.23764778l3.9165499-1.4022884v7.63993618h6.9630086v3.0946072z"/><path d="m98.9328427 35.0597742v-24.321812h3.9168353v24.321812zm-.3866122-34.62130978h4.7869255v4.44874713h-4.7869255z"/><path d="m114.454597 33.8509343c-1.740752-1.0313458-3.08663-2.498307-4.037633-4.4000289-.951004-1.9020067-1.426505-4.1262378-1.426505-6.6729782 0-2.5464555.475501-4.7709715 1.426505-6.6726933.951003-1.9020068 2.296881-3.3686831 4.037633-4.4003138s3.755295-1.5473036 6.044199-1.5473036c2.288619 0 4.303447.5156729 6.044199 1.5473036 1.740753 1.0316307 3.08663 2.498307 4.037634 4.4003138.950718 1.9017218 1.42622 4.1262378 1.42622 6.6726933 0 2.5467404-.475502 4.7709715-1.42622 6.6729782-.951004 1.9017219-2.296881 3.3686831-4.037634 4.4000289-1.740752 1.0316307-3.75558 1.5473036-6.044199 1.5473036-2.288904 0-4.303447-.5156729-6.044199-1.5473036zm11.604919-4.0857818c1.289468-1.5957369 1.933916-3.924812 1.933916-6.9872253 0-2.9655465-.660688-5.2624277-1.982349-6.8903586s-3.158995-2.4418964-5.512287-2.4418964c-2.385486 0-4.239059.8139655-5.56072 2.4418964s-1.982634 3.9248121-1.982634 6.8903586c0 3.0624133.652996 5.3914884 1.958417 6.9872253 1.305707 1.595737 3.167257 2.393463 5.584937 2.393463s4.271253-.797726 5.56072-2.393463z"/><path d="m158.988222 19.7799018v15.2798724h-3.916549v-15.0864238c0-2.2564251-.451285-3.9085727-1.353856-4.9561579-.90257-1.0475852-2.321097-1.5715203-4.255298-1.5715203-2.256425 0-4.061565.693167-5.41542 2.079216-1.353855 1.3860489-2.031068 3.2558618-2.031068 5.6091536v13.9257324h-3.91655v-17.5041035c0-2.5142615-.128775-4.786926-.386897-6.8177085h3.723387l.386897 4.3518804c.741315-1.5797825 1.853573-2.7965996 3.336204-3.6507362 1.482916-.8544216 3.175234-1.2814899 5.077241-1.2814899 5.834796 0 8.751909 3.2074284 8.751909 9.6222853z"/><path d="m203.619569 20.3360308c1.096874 1.4344824 1.643886 3.2156906 1.643886 5.343055 0 2.9980254-1.000007 5.3108611-3.00002 6.938792-1.997164 1.6279309-4.817695 2.4418964-8.461594 2.4418964h-14.310635v-34.42786122h13.82915c3.512844 0 6.245056.78177151 8.196635 2.34531453 1.948731 1.56325812 2.923097 3.77951197 2.923097 6.64847666 0 1.83761893-.475787 3.42509373-1.424511 4.76299423-.951573 1.3376156-2.282066 2.3290751-3.991479 2.9735238 1.968673.5481517 3.498598 1.5393263 4.595471 2.9738086zm-20.213807-4.4242455h9.284961c2.578364 0 4.529944-.5159578 5.85189-1.5473036 1.321946-1.0316307 1.982919-2.5467404 1.982919-4.54532897 0-3.93278933-2.612553-5.899184-7.834809-5.899184h-9.284961zm16.031444 14.3368462c1.273512-1.0153913 1.908844-2.5706722 1.908844-4.6661275 0-4.2228197-2.626798-6.3342296-7.880393-6.3342296h-10.059895v12.523444h10.059895c2.70657 0 4.698036-.5076956 5.971549-1.5230869z"/></g><g fill="#f2f2f2" fill-rule="nonzero" transform="translate(356.809897 292.199308)"><path d="m.10689318 19.8854177 1.48742717-18.91226722h4.17039899l-1.24844346 15.53895012h8.44675212l-.2655896 3.3733171z"/><path d="m14.955185 19.8854177 1.0625151-13.46697537h4.01092l-1.0625151 13.46697537zm1.3811601-19.78885388h4.3031155l-.2921955 3.77193628h-4.3031156z"/><path d="m21.436386 18.4510458 1.3014988-2.7889259c.7437136.5134941 1.540639.9074182 2.3906198 1.1819286.8499807.2745105 1.6999614.4117657 2.5499422.4117657.7437136 0 1.2927345-.1062672 1.6469061-.3188015.3541717-.2125343.5311793-.495809.5311793-.8499807 0-.3718568-.2079956-.6640524-.6241435-.8765867-.4161478-.2123778-1.0935031-.4602823-2.0320659-.7437136-.973933-.2655896-1.7708584-.5311792-2.3906197-.7967689-.6197613-.2657461-1.1554793-.6596702-1.6069973-1.1820852-.451518-.5224149-.6773553-1.1997702-.6773553-2.0320659 0-.86766582.2435224-1.62906451.7305671-2.28435256.4868883-.65513154 1.1775465-1.16862571 2.0718183-1.5404825s1.916878-.5579417 3.0679751-.5579417c1.0093032 0 1.9965392.15055818 2.9615514.45167454.9651687.30095986 1.7752405.70834338 2.4305286 1.22183754l-1.2750494 2.68281528c-.6551315-.47812392-1.3457898-.84121642-2.0718183-1.08912095s-1.4343718-.37185679-2.1250301-.37185679c-.7260285 0-1.2748928.10626716-1.6467496.31880147-.3718568.21237781-.5577852.50457336-.5577852.87643017 0 .3896984.2212986.6995791.6640523.9297985.4425972.2302194 1.1155704.4692031 2.0186065.7171076.9740895.2832748 1.7664762.5577852 2.3773168.8233749.610997.2657461 1.1421763.6596702 1.5938508 1.1820851.451518.522415.6773553 1.1997703.6773553 2.032066 0 1.3281047-.5269536 2.3683959-1.5805479 3.1210303-1.0535942.7526344-2.4746631 1.1288734-4.2632067 1.1288734-2.3020377 0-4.3561708-.5490209-6.1623995-1.6469062z"/><path d="m40.9064384 14.6526601c-.0530553.7437136.0973463 1.2927345.451518 1.6469062s.8412165.5311793 1.4609778.5311793c.407227 0 .8589015-.0707405 1.3547106-.2123778l-.2657461 3.1077274c-.6020763.2479045-1.3811601.3718568-2.337408.3718568-1.5229539 0-2.6871974-.407227-3.4928871-1.2218376-.8056897-.8146105-1.2085346-1.9655511-1.2085346-3.4531348 0-.3009598.0087643-.5311792.0264494-.6906582l.4250686-5.31241881h-2.5499422l.2389837-3.00146026h2.5499422l.2391403-3.16093925 4.1170306-1.30149878-.3452509 4.46243803h3.4265289l-.2389837 3.00146026h-3.4265289z"/><path d="m45.182948 18.4510458 1.3014988-2.7889259c.7438701.5134941 1.540639.9074182 2.3906198 1.1819286.8499807.2745105 1.6999614.4117657 2.5499422.4117657.7438701 0 1.2927345-.1062672 1.6469062-.3188015.3541716-.2125343.5313357-.495809.5313357-.8499807 0-.3718568-.2081521-.6640524-.6242999-.8765867-.4161479-.2123778-1.0935032-.4602823-2.032066-.7437136-.973933-.2655896-1.7707019-.5311792-2.3904632-.7967689-.6199178-.2657461-1.1554793-.6596702-1.6069973-1.1820852-.4516745-.5224149-.6773553-1.1997702-.6773553-2.0320659 0-.86766582.2433659-1.62906451.7304106-2.28435256.4868883-.65513154 1.1775465-1.16862571 2.0718183-1.5404825s1.916878-.5579417 3.0679751-.5579417c1.0093032 0 1.9965392.15055818 2.9617079.45167454.9650122.30095986 1.7752405.70834338 2.4303721 1.22183754l-1.2748929 2.68281528c-.655288-.47812392-1.3459463-.84121642-2.0719748-1.08912095-.7260284-.24790453-1.4343718-.37185679-2.1248736-.37185679-.7260284 0-1.2750493.10626716-1.6469061.31880147-.3718568.21237781-.5577852.50457336-.5577852.87643017 0 .3896984.2212986.6995791.6640523.9297985.4427538.2302194 1.1155704.4692031 2.018763.7171076.973933.2832748 1.7663198.5577852 2.3773168.8233749.6108405.2657461 1.1421763.6596702 1.5936943 1.1820851.451518.522415.6773553 1.1997703.6773553 2.032066 0 1.3281047-.5267971 2.3683959-1.5805479 3.1210303-1.0535942.7526344-2.4746631 1.1288734-4.2632066 1.1288734-2.3020378 0-4.3561709-.5490209-6.1623996-1.6469062z"/><path d="m67.4951382.97315048h7.543716c1.9478661 0 3.4664378.46935965 4.5554023 1.40776594 1.0891209.93856279 1.6336032 2.23129726 1.6336032 3.87820343 0 1.64674965-.5490209 2.94386628-1.6469062 3.89134985-1.0978853.9473271-2.6119184 1.4210689-4.5420993 1.4210689h-5.3654741v8.3138791h-2.1782419zm7.3577876 8.7921595c1.3990017 0 2.4525959-.30111636 3.1609393-.90319258.7083434-.60207621 1.062515-1.46974206 1.062515-2.60299755 0-1.133412-.3541716-1.9966957-1.062515-2.58985111-.7083434-.59331191-1.7619376-.88988961-3.1609393-.88988961h-5.1795457v6.98593085z"/><path d="m95.8636172 6.52470948v13.36070822h-2.1250301v-2.4170692c-.3895419.8322956-.9783152 1.4741242-1.7663198 1.9256423-.7880046.4516745-1.7043436.6773553-2.7491736.6773553-1.1864673 0-2.2267586-.2832748-3.1210303-.8499808-.8942718-.5665495-1.5849301-1.367857-2.0718183-2.4039227-.4870448-1.0359091-.7305671-2.2444437-.7305671-3.6256037 0-1.3813166.2479045-2.5987719.7437135-3.65236619.4959656-1.05359425 1.191006-1.87258693 2.0852778-2.45697803.8941152-.58439111 1.9256422-.87658666 3.0944244-.87658666 1.04483 0 1.9567869.23021942 2.7358707.69065826.7792403.46043884 1.3723957 1.10680608 1.7796227 1.93894521v-2.31080201zm-3.1873886 10.42560622c.7083433-.8942718 1.0623585-2.1647825 1.0623585-3.8116887 0-1.6469061-.3540152-2.9130347-1.0623585-3.79838565-.7083434-.88535096-1.7178031-1.32810469-3.0280662-1.32810469-1.3104196 0-2.3331823.45605669-3.0679751 1.36801357-.7349493.91195687-1.1024239 2.18246757-1.1024239 3.81168867 0 1.6290645.3630925 2.8864288 1.089121 3.7717797.7260284.885351 1.7530168 1.3281047 3.081278 1.3281047 1.3102631 0 2.3197228-.4471359 3.0280662-1.3414076z"/><path d="m111.933747 6.52470948v13.25444102c0 1.9833927-.509112 3.4841229-1.527336 4.5023469s-2.518955 1.5273361-4.502191 1.5273361c-2.036448 0-3.789621-.4604389-5.259363-1.3813166l.371857-1.7530168c.84998.478124 1.651288.8233749 2.403922 1.0359092.752478.2125343 1.580392.3188014 2.483584.3188014 1.292578 0 2.266511-.3408687 2.921799-1.0227627.655132-.6817374.982854-1.6954228.982854-3.0413691v-3.1607827c-.407384.8499807-1.005078 1.5094944-1.793082 1.978854-.788005.4692032-1.722029.7038048-2.802229.7038048-1.168782 0-2.209074-.274354-3.12103-.8233749-.911957-.5488644-1.615919-1.3281047-2.1117276-2.3374079-.4958091-1.0094597-.7437136-2.1693211-.7437136-3.4797407s.2479045-2.470281.7437136-3.47958423c.4958086-1.00945973 1.1997706-1.78854354 2.1117276-2.33756443.911956-.54886438 1.952248-.82337482 3.12103-.82337482 1.062515 0 1.987775.23021942 2.775779.69065826.788005.46043884 1.385543 1.10680608 1.792926 1.93894521v-2.31080201zm-3.253904 9.86782102c.734949-.8589016 1.102424-2.0408302 1.102424-3.546099 0-1.5051123-.367475-2.6871975-1.102424-3.54594251-.734793-.85890155-1.748634-1.28835233-3.041369-1.28835233-1.31042 0-2.34179.42945078-3.094424 1.28835233-.752635.85874501-1.128874 2.04083021-1.128874 3.54594251 0 1.5052688.376239 2.6871974 1.128874 3.546099.752634.8589015 1.784004 1.2881958 3.094424 1.2881958 1.292735 0 2.306576-.4292943 3.041369-1.2881958z"/><path d="m127.260162 13.138627h-9.801462c.017685 1.6999615.411765 2.9837752 1.182085 3.8515976.770319.8676658 1.890272 1.3014987 3.360014 1.3014987 1.558324 0 2.992696-.5224149 4.303116-1.5672449l.717264 1.5672449c-.584391.5490209-1.332644.9828538-2.244601 1.3014988-.911956.3188015-1.845981.478124-2.802228.478124-2.08966 0-3.727646-.6153792-4.914113-1.8459811-1.186467-1.2307583-1.779623-2.9174168-1.779623-5.060132 0-1.363475.26559-2.572166.796926-3.62576029.531179-1.05359425 1.274893-1.87258693 2.23114-2.45697803.956248-.58439111 2.045369-.87658666 3.267207-.87658666 1.770702 0 3.160939.58000895 4.170242 1.73987036 1.009304 1.1598614 1.514033 2.75793792 1.514033 4.79438592zm-8.380393-4.24990368c-.699423.67281665-1.146559 1.62030028-1.341408 2.84213778h7.7827c-.106111-1.2572078-.473586-2.21345565-1.102268-2.8687437-.628682-.65513154-1.50073-.98285381-2.616457-.98285381-1.11557 0-2.023145.33648658-2.722567 1.00945973z"/><path d="m129.703837 18.3447787.717265-1.5936944c.726028.566706 1.460821.973933 2.204691 1.2218376.743714.2479045 1.576009.3718568 2.496261.3718568 1.00946 0 1.776336-.1726255 2.297499-.5178764.522728-.3452508.784092-.8455986.784092-1.5007301 0-.5313358-.176851-.9562479-.530553-1.2750494-.355268-.3188014-.939033-.566706-1.752861-.7437135l-2.258529-.5313358c-1.115727-.2479046-1.97901-.6905018-2.589851-1.3281047-.610997-.6374465-.916339-1.3988452-.916339-2.2843526 0-1.16862572.469203-2.12049147 1.407766-2.85544076.938563-.73479278 2.178085-1.10226742 3.718411-1.10226742.939033 0 1.824853.15055818 2.655897.45151803.832608.30111636 1.532187.73494929 2.098737 1.30165528l-.716795 1.56708842c-1.256738-1.04482995-2.602684-1.56708842-4.037839-1.56708842-.955934 0-1.695266.18138975-2.217681.54448224-.522415.36293598-.783622.872048-.783622 1.52733603 0 .5488644.163861.9828538.491427 1.3014988.327565.3188015.854362.566706 1.580391.7437136l2.258216.5577852c1.239523.2834312 2.159774.7216463 2.76232 1.3149582.602546.5931554.903036 1.3678571.903036 2.324105 0 1.1510971-.469516 2.0718183-1.408548 2.7624765-.937467.6906583-2.212986 1.0359092-3.824992 1.0359092-2.248356 0-4.027979-.5754703-5.338399-1.7265674z"/><path d="m163.62325 13.9621584v1.8062286h-2.868744v4.1170307h-2.17699v-4.1170307h-8.712655v-1.6469061l9.110179-13.14833042h1.779466v12.98900792zm-11.500016 0h6.454282v-9.29688939z"/><path d="m168.936607 17.149547v1.9391018c0 .7437135-.123639 1.425451-.372483 2.0452123-.247278.6197613-.663582 1.2218376-1.247347 1.8062287l-1.011025-.7703195c.691754-.796769 1.081452-1.5583242 1.169095-2.2843526h-1.273954v-2.7358707z"/><path d="m182.52284 8.76915321c.893645.50472986 1.580704 1.20853458 2.058046 2.11172719.478906.903036.718359 1.947866.718359 3.1343333s-.261364 2.2400616-.784092 3.1609393c-.522728.9207211-1.266128 1.6336032-2.231766 2.1381765-.964074.5047299-2.094043.7570166-3.386777.7570166-1.150315 0-2.283414-.2079957-3.399297-.6241435s-2.054916-.987236-2.815532-1.7132645l.823218-1.673512c1.752861 1.4522134 3.551108 2.1782419 5.391611 2.1782419 1.328731 0 2.369492-.3763954 3.122282-1.1290298.751226-.7524779 1.128404-1.7752406 1.128404-3.0678186 0-1.2573642-.372483-2.2710496-1.115883-3.0413691-.743401-.7703195-1.735645-1.15547928-2.975168-1.15547928-1.806072 0-3.249051.73479278-4.328938 2.20469138h-1.514973v-11.07651212h11.341946v1.80622865h-9.163391v6.74679062c1.045456-1.00930322 2.382012-1.51403309 4.011233-1.51403309 1.186311 0 2.227072.25228668 3.120718.75701655z"/><path d="m191.010127 17.149547v1.9391018c0 .7437135-.125205 1.425451-.372483 2.0452123-.247279.6197613-.663583 1.2218376-1.248913 1.8062287l-1.00946-.7703195c.691754-.796769 1.081452-1.5583242 1.169095-2.2843526h-1.275518v-2.7358707z"/><path d="m204.543147 8.76915321c.893646.50472986 1.58853 1.21307323 2.084652 2.12503009.496122.9119569.743401 1.9522482.743401 3.1210304s-.259799 2.2134557-.782527 3.1343333c-.522728.9208777-1.244218 1.6423675-2.166035 2.1647825-.920251.522415-1.964142.7836225-3.133238.7836225-2.284978 0-4.047229-.7969254-5.286751-2.3906198-1.239523-1.5936943-1.859284-3.8603618-1.859284-6.7998459 0-2.12503014.287969-3.94894389.863909-5.47189779.57594-1.52279739 1.406984-2.6828153 2.496261-3.47958421 1.089278-.79692542 2.396098-1.19538813 3.918895-1.19538813 1.097103 0 2.164469.20377001 3.200535.61099702s1.943797.98285382 2.721629 1.7265674l-.823219 1.67335558c-.88582-.74371359-1.735644-1.29273448-2.549472-1.64690617-.813828-.35401518-1.646437-.53117927-2.496261-.53117927-1.629221 0-2.89535.72602848-3.798386 2.17808544-.903036 1.45205695-1.355336 3.48850502-1.355336 6.10934423v.3984627c.406914-1.0094598 1.072061-1.80622867 1.992313-2.39061978s1.975098-.87658666 3.161409-.87658666c1.150314 0 2.172295.25228668 3.067505.75701655zm-.438215 8.34048499c.743401-.770163 1.115884-1.7929257 1.115884-3.0678186 0-1.2573642-.377178-2.2710496-1.129969-3.0413691s-1.73095-1.15547928-2.934476-1.15547928c-1.239523 0-2.248983.38954188-3.028379 1.16878218-.779397.7790838-1.169096 1.7883871-1.169096 3.0280662 0 1.2572078.389699 2.2754318 1.169096 3.0546721.779396.7790838 1.796681 1.1686257 3.054985 1.1686257 1.203526 0 2.178555-.3851597 2.921955-1.1554792z"/></g><g transform="translate(660.011742 224.553185)"><path d="m.21765.193821h263.332986v106.422426h-263.332986z" fill="#c9177e"/><path d="m263.550636 106.616248h-263.33298624v-106.42242661h263.33298624zm-260.79463916-103.88400537v101.34558437h258.25629216v-101.34558437z" fill="#000"/></g><g fill="#f2f2f2" fill-rule="nonzero" transform="translate(688.758199 242.51167)"><path d="m.07350476 31.0947909 1.49915513-3.0461739c1.70855822 1.4504369 3.44902547 2.4820676 5.22225648 3.0946072 1.7729461.6125397 3.83592263.9188095 6.18921443.9188095 2.7720979 0 4.9077245-.5401745 6.4068796-1.6199537 1.4988702-1.080064 2.2484478-2.6031509 2.2484478-4.5695456 0-1.1604065-.3626804-2.1034326-1.0880413-2.8285086-.7253609-.7253609-1.6763643-1.2977293-2.8527253-1.7165355-1.1766459-.419091-2.7481662-.8544215-4.7145608-1.3057065-2.6433222-.5803457-4.81940488-1.2088399-6.52767819-1.8857674-1.70855822-.6769275-3.0948921-1.6521476-4.15843184-2.9253753-1.06382464-1.2732277-1.59573696-2.9416147-1.59573696-5.0045912 0-1.96639471.5156729-3.69916961 1.5473036-5.19803984 1.0316307-1.49915513 2.49004482-2.66753887 4.37609708-3.505721 1.88576736-.83818214 4.08578181-1.25727321 6.60004331-1.25727321 2.3854857 0 4.6097168.37094261 6.6729782 1.11225801 2.0629765.74131541 3.8037287 1.82137947 5.2222565 3.23962239l-1.5473036 3.04645873c-1.6119764-1.38633388-3.2478845-2.40172515-4.9080094-3.04645873-1.6601248-.64473357-3.473527-.96695791-5.4399217-.96695791-2.6755161 0-4.77068658.57208353-6.28579623 1.71653548-1.51510966 1.14445195-2.27266449 2.71597223-2.27266449 4.71456088 0 1.7407521.6606881 3.0461738 1.98234919 3.9165499 1.32166109.870376 3.35272853 1.6279309 6.09263253 2.2726645 2.9658315.7091214 5.2949066 1.3618322 6.9872254 1.9584174 1.6923187.5963002 3.1025844 1.4988702 4.2307969 2.70771 1.1284975 1.2088399 1.6926037 2.8125541 1.6926037 4.8111427 0 1.9342007-.5159578 3.6344968-1.5473036 5.101458-1.0316307 1.4666763-2.5065691 2.602866-4.4245304 3.4088542s-4.1664091 1.2088399-6.7453434 1.2088399c-5.3832262 0-9.67071872-1.4507218-12.86219264-4.3518804z"/><path d="m52.0054694 22.7779272h-17.8425672c.0324788 3.0946072.7495775 5.4316596 2.1518659 7.011442 1.4022884 1.5794975 3.4413332 2.3692463 6.1168493 2.3692463 2.8367707 0 5.447899-.9510034 7.8330998-2.8530102l1.3057066 2.8530102c-1.0638247.9994368-2.425657 1.7891855-4.0857818 2.3692463-1.6604098.5803457-3.3607058.8703761-5.101458.8703761-3.8037286 0-6.7855146-1.1202353-8.9453578-3.3604209-2.1598432-2.2404705-3.2399073-5.310861-3.2399073-9.2114564 0-2.4820676.4837639-4.6823669 1.4507218-6.6003282s2.3210978-3.4088543 4.06185-4.4726789c1.7407521-1.0638247 3.7231013-1.595737 5.9473324-1.595737 3.2236679 0 5.7541688 1.0558474 7.5915028 3.1672572 1.8376189 2.1114099 2.7561435 5.0205458 2.7561435 8.7276926zm-15.2553708-7.736518c-1.2735126 1.2247944-2.0874781 2.949592-2.4418963 5.1738231h14.1676143c-.1934486-2.288619-.8623988-4.0293711-2.0068508-5.2222565-1.144167-1.1926004-2.7319268-1.7891855-4.7627093-1.7891855-2.0307826 0-3.6829301.6125397-4.9561579 1.8376189z"/><path d="m61.99072 33.8509343c-1.7569915-1.0313458-3.1108466-2.4900448-4.06185-4.3760971-.9510034-1.8857673-1.426505-4.0857818-1.426505-6.6000433 0-2.5145464.4837638-4.7308002 1.4507217-6.6487615s2.3453146-3.4088543 4.1342152-4.4726789c1.7891855-1.0638247 3.8763787-1.595737 6.2618644-1.595737 1.6441703 0 3.2316451.2820531 4.7629942.8461594 1.5310642.5641063 2.7963147 1.3458778 3.7957514 2.3453145l-1.3057066 2.9011587c-1.2247943-.9672429-2.4097024-1.6763643-3.5538694-2.1276493-1.144452-.451285-2.3131206-.6769276-3.505721-.6769276-2.4820676 0-4.4325077.8302049-5.8507507 2.4903298-1.4185278 1.6601248-2.1276492 3.9729605-2.1276492 6.9387919 0 2.9333526.7011442 5.2139943 2.1034326 6.8419253 1.4022884 1.6279309 3.3604209 2.4418963 5.8749673 2.4418963 1.1926004 0 2.361269-.2256425 3.505721-.6769275 1.144167-.451285 2.3290751-1.1604065 3.5538694-2.1276493l1.3057066 2.9011586c-1.0316307.9672429-2.3290751 1.7327749-3.8926181 2.2968812s-3.1832118.8461594-4.859576.8461594c-2.3532918 0-4.4082911-.5156729-6.1649978-1.5473036z"/><path d="m87.1586914 13.8325694v13.2972382c0 1.80514.3709426 3.0703905 1.112258 3.7957514s1.7891856 1.0880413 3.1430406 1.0880413c.90257 0 1.7729461-.1450152 2.6111282-.4353305v3.3364892c-.9994367.3225092-2.1276493.4834789-3.3849225.4834789-2.3208129 0-4.1342151-.6527108-5.4396368-1.9581325-1.3057066-1.3057066-1.9584174-3.2316451-1.9584174-5.7783855v-13.8291505h-4.7387775v-3.0946072h4.7387775v-6.23764778l3.9165499-1.4022884v7.63993618h6.9630087v3.0946072z"/><path d="m98.8604776 35.0597742v-24.321812h3.9165494v24.321812zm-.3868971-34.62130978h4.7869255v4.44874713h-4.7869255z"/><path d="m114.381947 33.8509343c-1.740752-1.0313458-3.08663-2.498307-4.037633-4.4000289-.950719-1.9020067-1.426221-4.1262378-1.426221-6.6729782 0-2.5464555.475502-4.7709715 1.426221-6.6726933.951003-1.9020068 2.296881-3.3686831 4.037633-4.4003138s3.75558-1.5473036 6.044199-1.5473036c2.288904 0 4.303447.5156729 6.044199 1.5473036s3.08663 2.498307 4.037634 4.4003138c.951003 1.9017218 1.426505 4.1262378 1.426505 6.6726933 0 2.5467404-.475502 4.7709715-1.426505 6.6729782-.951004 1.9017219-2.296882 3.3686831-4.037634 4.4000289-1.740752 1.0316307-3.755295 1.5473036-6.044199 1.5473036-2.288619 0-4.303447-.5156729-6.044199-1.5473036zm11.604919-4.0857818c1.289468-1.5957369 1.934201-3.924812 1.934201-6.9872253 0-2.9655465-.660973-5.2624277-1.982634-6.8903586s-3.158995-2.4418964-5.512287-2.4418964c-2.385486 0-4.239059.8139655-5.56072 2.4418964s-1.982349 3.9248121-1.982349 6.8903586c0 3.0624133.652711 5.3914884 1.958132 6.9872253 1.305707 1.595737 3.167257 2.393463 5.584937 2.393463s4.271253-.797726 5.56072-2.393463z"/><path d="m158.915857 19.7799018v15.2798724h-3.916835v-15.0864238c0-2.2564251-.451285-3.9085727-1.353855-4.9561579s-2.320812-1.5715203-4.255013-1.5715203c-2.256425 0-4.06185.693167-5.415705 2.079216-1.353855 1.3860489-2.030783 3.2558618-2.030783 5.6091536v13.9257324h-3.91655v-17.5041035c0-2.5142615-.12906-4.786926-.386897-6.8177085h3.723101l.386898 4.3518804c.741315-1.5797825 1.853573-2.7965996 3.336489-3.6507362 1.482915-.8544216 3.175234-1.2814899 5.076956-1.2814899 5.834796 0 8.752194 3.2074284 8.752194 9.6222853z"/><path d="m185.630847 33.319022c-2.401725-1.4182429-4.247891-3.4572876-5.535648-6.1165644-1.290607-2.6595616-1.934486-5.7946249-1.934486-9.404905 0-3.6105649.643879-6.7293888 1.934486-9.35647159 1.287757-2.62708276 3.133923-4.64988805 5.535648-6.06841587 2.401726-1.41824292 5.230804-2.12764929 8.487236-2.12764929 2.384631 0 4.56983.36268044 6.552749 1.08804133 1.98007.72536088 3.69803 1.81340221 5.148182 3.26383907l-1.498585 3.04645873c-1.643886-1.41852782-3.264979-2.4339191-4.860431-3.04645873s-3.358996-.91852454-5.293482-.91852454c-3.772105 0-6.69805 1.22479436-8.777835 3.67466798-2.079786 2.44987362-3.11683 5.93137791-3.11683 10.44451291 0 4.545329 1.031346 8.0507651 3.094037 10.5168782 2.062692 2.466113 4.997184 3.6991695 8.800628 3.6991695 1.934486 0 3.69803-.3062698 5.293482-.9188094 1.595452-.6125397 3.216545-1.6279309 4.860431-3.0461739l1.498585 3.0461739c-1.450152 1.4507217-3.168112 2.5384782-5.148182 3.263839-1.982919.7253609-4.168118 1.0880414-6.552749 1.0880414-3.256432 0-6.08551-.7091215-8.487236-2.1276493z"/></g><g fill="#f2f2f2" fill-rule="nonzero" transform="translate(683.970025 292.181215)"><path d="m.10947429 20.3655834 1.52334352-19.36893462h4.27110005l-1.27858915 15.91416332h8.65071269l-.2720028 3.4547713z"/><path d="m15.3163023 20.3655834 1.0881712-13.79215735h4.1077702l-1.0881712 13.79215735zm1.4145104-20.26668789h4.4070212l-.2992511 3.86301581h-4.4070212z"/><path d="m21.9540024 18.8965763 1.3329256-2.8562691c.7616718.5258933 1.5778402.9293293 2.4483451 1.2104683.870505.2811389 1.7410099.4217084 2.6115148.4217084.7616717 0 1.3239496-.1088332 1.6866734-.3264995.3627237-.2176663.5440054-.5077811.5440054-.8705049 0-.3808359-.213018-.680087-.6392144-.8977533-.4261964-.217506-1.1199075-.4713966-2.0811335-.7616717-.9974502-.2720027-1.8136186-.5440055-2.4483451-.8160082-.6347265-.272163-1.1833802-.675599-1.6458009-1.2106285-.4624206-.5350296-.6937111-1.2287407-.6937111-2.0811335 0-.88861705.2494026-1.66840095.7482079-2.33951199.4986449-.67095076 1.2059803-1.19684408 2.1218457-1.57767996s1.963164-.5714141 3.1420563-.5714141c1.0336745 0 2.0447488.15419365 3.0330628.46258095.9884743.30822702 1.8181067.72544747 2.4892177 1.25134079l-1.3058375 2.74759621c-.6709507-.489669-1.3782861-.86152895-2.1218457-1.11541954-.7435596-.25389058-1.4690071-.38083588-2.1763424-.38083588-.7435596 0-1.3056772.10883315-1.6865131.32649945-.3808359.21750602-.5712538.51675707-.5712538.89759297 0 .3991083.2266422.7164716.6800869.95225.4532845.2357784 1.1425077.4805328 2.067349.7344234.9976105.2901149 1.8091307.5712538 2.434721.8432566.6257505.272163 1.169756.675599 1.6323369 1.2106285.4624207.5350295.6937112 1.2287407.6937112 2.0811334 0 1.360174-.5396778 2.4255848-1.6187128 3.1963928s-2.5344179 1.1561318-4.3661487 1.1561318c-2.3576242 0-4.4613577-.5622779-6.3112007-1.6866734z"/><path d="m41.8941909 15.0064724c-.0543365.7616718.0996969 1.3239497.4624206 1.6866734.3627238.3627238.861529.5440055 1.4962555.5440055.4170601 0 .8796411-.0724486 1.3874223-.217506l-.272163 3.1827685c-.6166144.2538906-1.4145104.3808359-2.3938485.3808359-1.5597281 0-2.7520842-.4170602-3.5772286-1.2513408s-1.2377166-2.0130125-1.2377166-3.5365164c0-.308227.0089759-.5440054.0270881-.7073353l.4353326-5.44069574h-2.6115148l.2447544-3.07393541h2.6115147l.2449147-3.23726527 4.216443-1.33292558-.3535875 4.57019085h3.509268l-.2447544 3.07393541h-3.509268z"/><path d="m46.2739638 18.8965763 1.3329255-2.8562691c.7618321.5258933 1.5778403.9293293 2.4483452 1.2104683.8705049.2811389 1.7410098.4217084 2.6115147.4217084.7618321 0 1.3239497-.1088332 1.6866734-.3264995.3627238-.2176663.5441658-.5077811.5441658-.8705049 0-.3808359-.2131784-.680087-.6393748-.8977533-.4261963-.217506-1.1199075-.4713966-2.0811334-.7616717-.9974502-.2720027-1.8134584-.5440055-2.4481849-.8160082-.6348867-.272163-1.1833801-.675599-1.6458008-1.2106285-.462581-.5350296-.6937112-1.2287407-.6937112-2.0811335 0-.88861705.2492424-1.66840095.7480476-2.33951199.498645-.67095076 1.2059803-1.19684408 2.1218457-1.57767996s1.9631641-.5714141 3.1420563-.5714141c1.0336745 0 2.0447489.15419365 3.0332232.46258095.988314.30822702 1.8181066.72544747 2.4890574 1.25134079l-1.3056773 2.74759621c-.671111-.489669-1.3784463-.86152895-2.1220059-1.11541954-.7435597-.25389058-1.4690071-.38083588-2.1761822-.38083588-.7435596 0-1.3058375.10883315-1.6866734.32649945-.3808358.21750602-.5712538.51675707-.5712538.89759297 0 .3991083.2266422.7164716.680087.95225.4534447.2357784 1.1425076.4805328 2.0675093.7344234.9974502.2901149 1.8089704.5712538 2.4347209.8432566.6255903.272163 1.169756.675599 1.6321767 1.2106285s.6937111 1.2287407.6937111 2.0811334c0 1.360174-.5395175 2.4255848-1.6187127 3.1963928-1.079035.770808-2.5344179 1.1561318-4.3661488 1.1561318-2.3576241 0-4.4613577-.5622779-6.3112006-1.6866734z"/><path d="m69.124918.99664878h7.7258714c1.9949004 0 3.5501405.4806931 4.6653998 1.44175873 1.1154195.96122592 1.6730492 2.28517557 1.6730492 3.97184896 0 1.6865131-.5622779 3.01495072-1.6866734 3.98531283-1.1243955.9702019-2.6749874 1.4553829-4.6517756 1.4553829h-5.4950322v8.5146312h-2.2308392zm7.5354534 9.00446052c1.4327828 0 2.5118178-.30838734 3.2372653-.92500167.7254475-.61661432 1.0881712-1.50523137 1.0881712-2.66585116 0-1.16078007-.3627237-2.04490916-1.0881712-2.65238727-.7254475-.60763839-1.8044825-.91137745-3.2372653-.91137745h-5.3046142v7.15461755z"/><path d="m98.1784001 6.6822592v13.6833242h-2.1763424v-2.4754332c-.3989481.8523927-1.0019382 1.5097193-1.8089705 1.97214-.8070322.4625809-1.7454977.6937111-2.8155568.6937111-1.2151165 0-2.2805273-.2901148-3.1963927-.8705049-.9158655-.5802297-1.6232008-1.4008862-2.1218457-2.4619693-.4988053-1.0609229-.7482079-2.2986395-.7482079-3.7131498 0-1.4146707.2538906-2.6615235.7616717-3.74055852.5079415-1.07903499 1.2197648-1.91780358 2.1356302-2.51630576.9157051-.59850218 1.97214-.89775327 3.1691444-.89775327 1.0700591 0 2.0040366.23577845 2.8019327.70733533.7980563.47155689 1.4055344 1.13353171 1.8225946 1.9857642v-2.36660008zm-3.2643534 10.6773494c.7254475-.9158654 1.088011-2.2170547 1.088011-3.9037281 0-1.6866733-.3625635-2.9833746-1.088011-3.89010384-.7254474-.90672919-1.7592822-1.36017394-3.1011837-1.36017394-1.3420618 0-2.3895208.46706892-3.1420563 1.40104648-.7526958.9339776-1.1290438 2.2351668-1.1290438 3.9037281 0 1.6684009.37186 2.9561263 1.1154196 3.8628555s1.7953463 1.3601739 3.1556805 1.3601739c1.3419015 0 2.3757363-.4579327 3.1011837-1.3737981z"/><path d="m114.636569 6.6822592v13.574491c0 2.031285-.521405 3.5682527-1.564216 4.6110634s-2.579779 1.5642161-4.610903 1.5642161c-2.085622 0-3.881128-.4715569-5.38636-1.4146707l.380836-1.7953462c.870505.489669 1.691162.8432565 2.46197 1.0609228.770647.2176663 1.618552.3264995 2.543554.3264995 1.323789 0 2.321239-.3490996 2.99235-1.047459.670951-.6981991 1.006587-1.7363615 1.006587-3.1148079v-3.237105c-.417221.8705049-1.029347 1.5459436-1.836379 2.0266367-.807033.4805329-1.76361.7207993-2.869894.7207993-1.197004 0-2.262415-.2809787-3.196392-.8432566-.933978-.5621176-1.654937-1.3601739-2.162719-2.3938484-.507781-1.0338348-.761671-2.2217029-.761671-3.5637647s.25389-2.52993.761671-3.56360448c.507782-1.03383477 1.228741-1.83173082 2.162719-2.39400871.933977-.56211761 1.999388-.84325656 3.196392-.84325656 1.088172 0 2.035773.23577845 2.842806.70733533.807032.47155689 1.418998 1.13353171 1.836218 1.9857642v-2.36660008zm-3.332474 10.1060956c.752695-.8796411 1.129043-2.0901094 1.129043-3.6317253 0-1.5414557-.376348-2.7520842-1.129043-3.63156509-.752536-.87964112-1.790859-1.31946169-3.114808-1.31946169-1.342062 0-2.398337.43982057-3.169145 1.31946169-.770808.87948089-1.156131 2.09010939-1.156131 3.63156509 0 1.5416159.385323 2.7520842 1.156131 3.6317253s1.827083 1.3193014 3.169145 1.3193014c1.323949 0 2.362272-.4396603 3.114808-1.3193014z"/><path d="m130.333066 13.4558805h-10.038135c.018112 1.7410099.421708 3.0558233 1.210628 3.9446006.788921.8886171 1.935916 1.3329256 3.441148 1.3329256 1.595952 0 3.064959-.5350295 4.407021-1.6050886l.734584 1.6050886c-.598503.5622779-1.364823 1.0065864-2.2988 1.3329256-.933978.3264995-1.890555.489669-2.869893.489669-2.140119 0-3.817656-.6302385-5.032772-1.8905552-1.215117-1.260477-1.822595-2.9878626-1.822595-5.1823172 0-1.3963982.272003-2.6342751.816169-3.71331012.544005-1.07903499 1.305677-1.91780358 2.285015-2.51630576s2.094757-.89775327 3.346098-.89775327c1.813459 0 3.237266.59401422 4.27094 1.78188236 1.033675 1.18786815 1.550592 2.82453279 1.550592 4.91015419zm-8.582752-4.35252451c-.716311.6890629-1.174244 1.65942501-1.373798 2.91076581h7.970625c-.108672-1.2875651-.48502-2.26690312-1.128883-2.93801417-.643863-.67095075-1.536968-1.00658641-2.679636-1.00658641-1.142507 0-2.071997.34461159-2.788308 1.03383477z"/><path d="m132.835747 18.7877432.734584-1.6321767c.74356.58039 1.496095.9974502 2.257927 1.2513408.761672.2538906 1.614065.3808359 2.556538.3808359 1.033834 0 1.819228-.1767938 2.352975-.5303813.535351-.3535875.803026-.866017.803026-1.5369677 0-.5441658-.181122-.9793381-.543365-1.3058375-.363845-.3264995-.961706-.5803901-1.795186-.7616718l-2.313065-.5441657c-1.142668-.2538906-2.026797-.7071751-2.652387-1.360174-.625751-.6528386-.938466-1.4326225-.938466-2.339512 0-1.19684406.480533-2.17169415 1.441759-2.92438998.961226-.75253555 2.230679-1.12888347 3.808199-1.12888347.961706 0 1.868917.15419366 2.720027.46242067.852713.30838731 1.569185.75269584 2.149415 1.33308587l-.734103 1.60492831c-1.287084-1.07005906-2.665531-1.60492831-4.135339-1.60492831-.979018 0-1.736202.18576969-2.271231.55762964-.53503.37169967-.802544.89310502-.802544 1.56421607 0 .5621176.167817 1.0065864.503293 1.3329256.335475.3264994.874993.58039 1.618552.7616717l2.312745.5712539c1.269453.2902751 2.211925.7390716 2.829021 1.34671.617095.6074781.924841 1.4008862.924841 2.3802243 0 1.1788922-.480854 2.1218457-1.44256 2.829181-.960104.7073353-2.266423 1.0609228-3.917353 1.0609228-2.302646 0-4.125241-.5893659-5.467303-1.7682581z"/><path d="m153.917963.99664878h12.785891v1.65942503l-9.084923 17.70950959h-2.39465l9.032029-17.49184329h-10.338347z"/><path d="m173.015856 17.5636507v1.9859245c0 .7616718-.126624 1.4598709-.381477 2.0945973-.253249.6347265-.679606 1.2513408-1.277467 1.849843l-1.035437-.7889201c.708457-.8160082 1.107565-1.5959524 1.197324-2.339512h-1.304715v-2.8019327z"/><path d="m188.807081 12.1909156c.698841.8434168 1.048261 1.8543309 1.048261 3.0332231 0 1.6502888-.626712 2.9516384-1.878534 3.9037281-1.250219.9520897-2.938014 1.4281345-5.058578 1.4281345-2.122166 0-3.809961-.4760448-5.06018-1.4281345-1.251822-.9520897-1.876931-2.2534393-1.876931-3.9037281 0-1.1788922.357434-2.1944545 1.073906-3.0468473.716471-.8523928 1.700618-1.4417587 2.95244-1.7682582-1.16046-.3444513-2.050039-.91121715-2.667134-1.70013727-.615492-.78892012-.924841-1.71840971-.924841-2.78830849 0-1.03383478.272483-1.93607601.815848-2.70688399.544967-.77064769 1.311127-1.36914987 2.300082-1.79534625.987352-.42619638 2.117357-.63937472 3.38681-.63937472s2.397856.21317834 3.386811.63937472c.987352.42619638 1.753512 1.02469856 2.298479 1.79534625.543365.77080798.815848 1.67304921.815848 2.70688399 0 1.06989878-.312555 1.99938837-.939267 2.78830849-.625109.78892012-1.500262 1.35568597-2.623856 1.70013727 1.269452.3446116 2.251996.9386258 2.950836 1.7818824zm-9.004781-3.59085282c.770969.64386269 1.809612 1.03832275 3.11593 1.18338018 1.304716-.14505743 2.343359-.53951749 3.114327-1.18338018.770969-.64386268 1.155651-1.48263127 1.155651-2.51630576 0-1.07005906-.376668-1.91331562-1.128402-2.52992994-.753337-.61661432-1.799995-.92500163-3.141576-.92500163-1.343183 0-2.389841.30838731-3.143178.92500163-.751734.61661432-1.128403 1.45987088-1.128403 2.52992994 0 1.03367449.384683 1.87244308 1.155651 2.51630576zm6.624557 9.18125422c.815848-.6166143 1.224574-1.5143676 1.224574-2.6932598 0-1.0698988-.431166-1.9267795-1.291893-2.5706422-.862331-.6438627-2.009967-1.0383227-3.441308-1.1833802-1.432943.1450575-2.580579.5395175-3.441307 1.1833802-.86233.6438627-1.293496 1.5007434-1.293496 2.5706422 0 1.1788922.408726 2.0766455 1.224574 2.6932598s1.985924.9248414 3.510229.9248414c1.522703 0 2.692779-.3082271 3.508627-.9248414z"/><path d="m195.622377 17.5636507v1.9859245c0 .7616718-.128228 1.4598709-.381477 2.0945973-.25325.6347265-.679606 1.2513408-1.27907 1.849843l-1.033835-.7889201c.708457-.8160082 1.107566-1.5959524 1.197325-2.339512h-1.306318v-2.8019327z"/><path d="m210.339696 3.22732763c1.26785 1.63217667 1.902577 3.95357653 1.902577 6.96419957 0 3.2824655-.657167 5.8351558-1.971499 7.6577504-1.314333 1.8225946-3.151193 2.7339721-5.508977 2.7339721-1.105963 0-2.189486-.2085301-3.250569-.6257505-1.061083-.4170602-1.998747-1.0064262-2.816198-1.7680979l.871947-1.7139218c.924842.7799442 1.803201 1.3465498 2.638283 1.7002976.833479.3535875 1.676575.5303813 2.529288.5303813 1.668562 0 2.960454-.7435596 3.877282-2.2306789.915224-1.4871192 1.373637-3.5727406 1.373637-6.2568642v-.35358755c-.416739 1.01556235-1.097948 1.81810665-2.040421 2.40747265-.944075.5895262-2.02279.8841291-3.237746.8841291-1.178091 0-2.221543-.2583786-3.128753-.775296-.905607-.5167571-1.614064-1.2422046-2.120563-2.1761821-.508102-.93413786-.762954-1.99954868-.762954-3.19655303 0-1.19684408.267675-2.26690314.803025-3.21001692.53535-.94295348 1.274262-1.68202514 2.216734-2.21705467.944076-.53502953 2.013173-.8025443 3.210498-.8025443 2.340153 0 4.143353.81616848 5.414409 2.44834515zm-2.176663 6.85536647c.796614-.79805638 1.195722-1.83173087 1.195722-3.10118381 0-1.28772536-.399108-2.33053607-1.195722-3.12843212-.798217-.79805633-1.841668-1.19700436-3.128753-1.19700436-1.232587 0-2.231159.39446006-2.992511 1.18338018-.761351.78892012-1.142828 1.83621879-1.142828 3.1420563 0 1.28756508.381477 2.32588782 1.142828 3.11480791.761352.7889202 1.767938 1.1833802 3.01976 1.1833802 1.269453 0 2.303287-.3991083 3.101504-1.1970043z"/></g><path d="m17.8381448 46.9715784h11.4351924v5.0258027h-28.91585333v-5.0258027h11.43519243v-39.40433576l-10.63396507 6.77374006v-5.75407418l13.25608567-8.44915063h3.4233479z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(21.524072 376.769072)"/><path d="m35.1591611 47.829883v5.0258027h-33.35886717v-4.5159698l18.13640567-20.1027815c2.4277146-2.719109 4.2001136-5.1712853 5.3167679-7.3565289 1.1170835-2.1848144 1.6754107-4.3700579 1.6754107-6.5553015 0-2.8645916-.8256891-5.06185144-2.476638-6.59135026-1.6509489-1.52992798-4.0057077-2.29467739-7.0651345-2.29467739-4.9528467 0-9.85677016 1.99083755-14.71262852 5.97294185l-2.25819944-4.58892566c2.03976092-1.94234334 4.61295815-3.4958747 7.72087917-4.66145237 3.10749189-1.16557766 6.23944539-1.74793734 9.39586059-1.74793734 4.7584408 0 8.5216774 1.22608814 11.2897098 3.67826442 2.7676032 2.45217629 4.1516194 5.76609041 4.1516194 9.94174235 0 2.9620092-.667761 5.8150138-2.003283 8.5585845-1.3350928 2.7431415-3.5568143 5.8145846-6.6643061 9.2134709l-14.7855845 16.024118z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(113.15712 375.910768)"/><path d="m32.1649655 30.7131432c1.6024547 2.1367493 2.403682 4.8318258 2.403682 8.0848003 0 4.5159698-1.5294988 8.0727841-4.5884964 10.6708722-3.0594268 2.5976589-7.2110463 3.8967029-12.4548583 3.8967029-3.3508212 0-6.5677469-.5587563-9.65077711-1.6754106-3.08345933-1.1166543-5.69356366-2.6950765-7.82988385-4.7344083l2.33072618-4.5884964c4.806935 3.9816751 9.80827598 5.9725126 15.00402298 5.9725126 3.6902807 0 6.494791-.825689 8.4126727-2.4766379 1.9178817-1.650949 2.8770371-4.0786636 2.8770371-7.283573 0-6.3608955-3.9816751-9.5413433-11.9450254-9.5413433h-5.9729418v-5.0258026h4.8073642c3.8361924 0 6.77374-.8497216 8.8130718-2.5491647 2.0393317-1.6994432 3.0594268-4.1275869 3.0594268-7.283573 0-2.8165266-.8377053-4.97730847-2.513116-6.48234561-1.6749814-1.50546629-4.0421855-2.25819944-7.1016123-2.25819944-4.9528468 0-9.85677025 1.99083755-14.71262861 5.97294185l-2.25819944-4.58892566c2.08825513-1.99083756 4.6494361-3.55681433 7.68440122-4.69793031 3.03496513-1.14111599 6.20339663-1.7114594 9.50529443-1.7114594 4.6614524 0 8.388211 1.18961019 11.180276 3.56883059 2.7920649 2.37922039 4.1880973 5.58412982 4.1880973 9.61429918 0 2.9620092-.7287006 5.5596681-2.1852435 7.7934059-1.456543 2.2337377-3.4718422 3.8361925-6.0454686 4.8073641 3.0589977.8737541 5.390153 2.3792204 6.9921786 4.5155406z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(210.490122 375.910768)"/><path d="m37.9113149 35.7548245v4.9528468h-7.8663618v11.2897098h-5.9725127v-11.2897098h-23.89005067v-4.5159697l24.98267247-36.05394371h4.8798909v35.61706661zm-31.53797398 0h17.69909948v-25.4925054z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(344.333123 377.543534)"/><path d="m27.0614862 21.5151218c2.4521763 1.3840162 4.3340092 3.3143433 5.6450695 5.7905521 1.3110603 2.4766379 1.9663758 5.3412296 1.9663758 8.5946332 0 3.2534037-.7162552 6.142457-2.1487656 8.6675892-1.4320812 2.5251322-3.4718421 4.4794918-6.1179953 5.863508-2.6465822 1.383587-5.7420578 2.0758097-9.2868559 2.0758097-3.1559861 0-6.2634779-.5707726-9.32290473-1.7118886-3.05899765-1.1411159-5.63262403-2.7070927-7.72045001-4.6979303l2.25777029-4.5884964c4.80736415 3.9816751 9.73574925 5.9725126 14.78558445 5.9725126 3.6422156 0 6.494791-1.0316821 8.5585845-3.0954756 2.0633643-2.0637934 3.0954756-4.8678746 3.0954756-8.4126727 0-3.4473804-1.0196659-6.2274291-3.0589977-8.3397168-2.0397609-2.1122876-4.7588699-3.1684314-8.1577562-3.1684314-4.9528468 0-8.91048936 2.0152992-11.87249858 6.0454685h-4.15161943v-30.37282541h31.10109691v4.95284678h-25.12858424v18.50075603c2.86502084-2.7680324 6.53126894-4.1520486 10.99831534-4.1520486 3.2534036 0 6.105979.6922227 8.5581553 2.0758097z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(442.786269 377.543534)"/><path d="m28.6326128 22.3734264c2.4521763 1.3840162 4.3580417 3.3263595 5.7175962 5.82703s2.0393318 5.3536751 2.0393318 8.5581554c0 3.2049094-.7162552 6.0699302-2.1487656 8.5946332-1.4320813 2.5251322-3.4109026 4.5039535-5.9360347 5.9364639-2.5247031 1.4320813-5.3897239 2.1483365-8.5946333 2.1483365-6.2639071 0-11.09530378-2.1848144-14.49419005-6.5553015-3.39931543-4.370058-5.09875857-10.5854709-5.09875857-18.6458095 0-5.82703.78921109-10.828371 2.36720413-15.004023 1.57799303-4.1760811 3.86022501-7.35652885 6.84669592-9.5417724 2.98604177-2.18524355 6.56731777-3.27743617 10.74339887-3.27743617 3.0105034 0 5.9360347.55832715 8.7765938 1.67498145 2.8405592 1.11708346 5.3292134 2.69507649 7.4655336 4.73440826l-2.2577703 4.58892566c-2.4277146-2.03976095-4.7584408-3.5447981-6.9921786-4.51596977-2.2337377-.97117167-4.5159697-1.45697208-6.8466959-1.45697208-4.4670463 0-7.9388885 1.99083755-10.41552648 5.97294185-2.47620881 3.9816751-3.71474237 9.5653758-3.71474237 16.7519603v1.0926218c1.11708345-2.7676033 2.93797669-4.9528468 5.46267975-6.5553015 2.5251321-1.6024547 5.4141855-2.4036821 8.6675891-2.4036821 3.1564153 0 5.9604964.6922227 8.4126727 2.0758097zm-1.2016264 22.8708139c2.0393317-2.1122876 3.0589976-4.9163688 3.0589976-8.4126726 0-3.4473805-1.0321113-6.2274292-3.0954756-8.3397168-2.0637934-2.1122877-4.7464245-3.1684315-8.0483224-3.1684315-3.3993154 0-6.1669186 1.0681601-8.303668 3.2049094-2.13632016 2.1363202-3.20448025 4.9043526-3.20448025 8.3032389 0 3.4473804 1.06816009 6.2394454 3.20448025 8.3761947 2.1367494 2.1363202 4.9288143 3.2049094 8.3761948 3.2049094 3.3018978 0 5.9725126-1.0561438 8.0122736-3.1684315z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(539.405045 376.685229)"/><path d="m.06008132.13775789h34.23305048v4.44301384l-24.32735691 47.41660937h-6.40938972l24.18144513-46.83382053h-27.67774898z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(678.757195 376.512457)"/><path d="m34.6622027 30.9684888c1.8693875 2.2577703 2.8040812 4.9648631 2.8040812 8.1208491 0 4.4189814-1.6749814 7.9028398-5.0253735 10.4520045-3.3508212 2.5495939-7.8663618 3.8241762-13.5474801 3.8241762-5.6815474 0-10.19708794-1.2745823-13.54748-3.8241762-3.35082122-2.5491647-5.02580268-6.0330231-5.02580268-10.4520045 0-3.155986.95872626-5.875095 2.87703707-8.157327 1.91788167-2.282232 4.55201853-3.8606542 7.90241061-4.7344083-3.10749187-.9226774-5.48671227-2.44016-7.1376612-4.5524477-1.65094892-2.1122876-2.47663796-4.6005127-2.47663796-7.4655335 0-2.7676032.72870062-5.18373073 2.18524355-7.24709502 1.45654293-2.06379345 3.50832011-3.66624817 6.15447324-4.80736415 2.64658227-1.14111599 5.66910197-1.7114594 9.06841737-1.7114594 3.3988863 0 6.421406.57034341 9.0679883 1.7114594 2.6461531 1.14111598 4.6979303 2.7435707 6.1544733 4.80736415 1.456972 2.06336429 2.1852435 4.47949182 2.1852435 7.24709502 0 2.8650208-.8377053 5.3532459-2.5131159 7.4655335-1.6749815 2.1122877-4.0177239 3.6297703-7.0286565 4.5524477 3.3993154.9226775 6.0334523 2.5126868 7.9028397 4.7708862zm-24.1084891-9.6147283c2.0633642 1.7239048 4.8434129 2.7800487 8.3397167 3.1684315 3.4958747-.3883828 6.2759234-1.4445267 8.3397168-3.1684315 2.0633643-1.7234756 3.0954756-3.9692297 3.0954756-6.7372621 0-2.8645916-1.0076496-5.12279105-3.0229488-6.77373998-2.0148701-1.65094892-4.8193804-2.47620881-8.4122436-2.47620881-3.5932922 0-6.3978026.82525989-8.4126726 2.47620881-2.01529928 1.65094893-3.0229489 3.90914838-3.0229489 6.77373998 0 2.7680324 1.0321113 5.0137865 3.0959048 6.7372621zm17.7355774 24.5822734c2.1848144-1.650949 3.2774361-4.054631 3.2774361-7.2106171 0-2.8650208-1.1531322-5.1592691-3.4598259-6.8831739-2.3062645-1.7239048-5.3777075-2.7800486-9.2134709-3.1684315-3.8361924.3883829-6.9076355 1.4445267-9.2139 3.1684315-2.30669365 1.7239048-3.4598259 4.0181531-3.4598259 6.8831739 0 3.1559861 1.09262177 5.5596681 3.27786532 7.2106171 2.18481438 1.6509489 5.31676798 2.4766379 9.39586058 2.4766379 4.0786636 0 7.2106171-.825689 9.3958607-2.4766379z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(773.608278 376.236614)"/><path d="m31.3560134 6.96900432c3.3988862 4.37005798 5.0987585 10.58547078 5.0987585 18.64580948 0 8.7890393-1.7603827 15.6232898-5.2807191 20.5031806-3.5203364 4.8803201-8.4367052 7.320051-14.7495357 7.320051-2.9620092 0-5.8630788-.5583272-8.70363793-1.6749815-2.84055913-1.1170835-5.35367504-2.6950765-7.53848944-4.7344083l2.33072618-4.5884964c2.47620882 2.0878259 4.83139668 3.6053085 7.06513445 4.5520185 2.23330864.94671 4.49150804 1.4204941 6.77374004 1.4204941 4.4670464 0 7.9268723-1.9908375 10.3790485-5.9725126 2.4521763-3.9821043 3.6782645-9.565805 3.6782645-16.7523895v-.9471392c-1.1170835 2.7195382-2.9379767 4.8678747-5.4626798 6.4462969-2.5251321 1.577993-5.4141855 2.3672041-8.6675891 2.3672041-3.1564152 0-5.9484801-.6922227-8.37619475-2.0758097-2.42771461-1.3840162-4.32156374-3.3263596-5.68111825-5.8270301s-2.03933177-5.353675-2.03933177-8.5581553c0-3.2049094.7162552-6.0699302 2.14833645-8.59463325 1.43251041-2.52513218 3.4113317-4.50395347 5.93646388-5.93646387 2.52470304-1.43208125 5.38972384-2.14833645 8.59463324-2.14833645 6.2639071 0 11.0953038 2.18481439 14.4941901 6.55530149zm-5.8270301 18.35441508c2.1367494-2.1363202 3.2049095-4.9043526 3.2049095-8.3032389 0-3.4473805-1.0681601-6.2394454-3.2049095-8.37619472-2.1363202-2.13632019-4.9283851-3.20490943-8.3757656-3.20490943-3.3018978 0-5.9729418 1.05614383-8.01227355 3.16843149-2.03933176 2.11228766-3.05899765 4.91636886-3.05899765 8.41267266 0 3.4473805 1.01966589 6.2274292 3.05899765 8.3397168 2.03933175 2.1122877 4.73440825 3.1684315 8.08480035 3.1684315 3.3993154 0 6.1669186-1.0681601 8.3032388-3.2049094z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(867.854354 375.654152)"/><path d="m330.093135.33214542v84.43190468-42.5518783h-329.66215607v42.5518783" stroke="#000" stroke-width="2.538347" transform="translate(131.785126 139.982935)"/><path d="m.10801477.42233775h329.31542823v42.21595235" stroke="#000" stroke-width="2.538347" transform="translate(461.770246 182.108695)"/><path d="m36.186655 346.60579v15.692843" stroke="#000" stroke-width="2.540394"/><path d="m132.152376 331.426017v30.871702" stroke="#000" stroke-width="2.538347"/><path d="m228.893645 346.60579v15.692843" stroke="#000" stroke-width="2.540394"/><g transform="translate(1221.45577 24.489117)"><path d="m.197608.154988h239.084215v85.099871h-239.084215z" fill="#0083c0"/><path d="m239.281823 85.2548586h-239.08421531v-85.09987082h239.08421531zm-236.54571658-82.56147761v80.02308441h234.00574658v-80.02308441z" fill="#000"/></g><g transform="translate(956.909366 124.770501)"><path d="m.184449.095195h223.163411v52.269131h-223.163411z" fill="#c9177e"/><path d="m223.347859 52.3643259h-223.16341016v-52.26913097h223.16341016zm-220.62506465-49.73066919v47.19220749h218.08488865v-47.19220749z" fill="#000"/></g><g transform="translate(1231.923745 124.770501)"><path d="m.183618.095195h222.158079v52.269131h-222.158079z" fill="#c9177e"/><path d="m222.341696 52.3643259h-222.15807809v-52.26913097h222.15807809zm-219.61932129-49.73066919v47.19220749h217.08147629v-47.19220749z" fill="#000"/></g><path d="m91.4241325.12672749v8.67595862h-91.3476086v8.67108449" stroke="#000" stroke-width="2.539424" transform="translate(1252.516016 177.005152)"/><g transform="translate(1504.487683 124.770501)"><path d="m.182671.095195h221.012609v52.269131h-221.012609z" fill="#c9177e"/><path d="m221.19528 52.3643259h-221.01260884v-52.26913097h221.01260884zm-218.47425033-49.73066919v47.19220749h215.93589233v-47.19220749z" fill="#000"/></g><g transform="translate(1018.734446 194.392443)"><path d="m.035471.089728h42.916712v49.26713h-42.916712z" fill="#00a88a"/><path d="m42.9521838 49.3568579h-42.91671231v-49.26713035h42.91671231zm-40.37825665-46.72872807v44.19032577h37.83980095v-44.19032577z" fill="#000"/></g><path d="m19.5454361 18.6632185c.9737513 1.298422 1.4606269 2.9361183 1.4606269 4.9128281 0 2.7441845-.9294187 4.9055264-2.7882562 6.4842865-1.8590982 1.5784993-4.3818807 2.3678794-7.5683475 2.3678794-2.03616765 0-3.99097204-.3395352-5.86441318-1.0180839-1.87370191-.6785486-3.45976385-1.6376963-4.75792503-2.8769212l1.41629437-2.7882563c2.92099306 2.4195138 5.96011931 3.6292707 9.11737874 3.6292707 2.2424444 0 3.9466395-.5017401 5.1120638-1.5049595 1.1654244-1.0032194 1.7482669-2.4784499 1.7482669-4.4259525 0-3.8652762-2.4195137-5.7979144-7.2585412-5.7979144h-3.62953146v-3.0539906h2.92125384c2.33110942 0 4.11614632-.5163438 5.35537122-1.5490313 1.239225-1.0326875 1.8590983-2.5081788 1.8590983-4.4259525 0-1.71149696-.5090419-3.02452258-1.5271257-3.93907688-1.0178231-.91481507-2.4562837-1.37222261-4.315382-1.37222261-3.00965814 0-5.9895874 1.20975688-8.94030934 3.62953142l-1.37222261-2.78851699c1.26895386-1.20975688 2.82528692-2.16134189 4.66952073-2.85475502 1.84423381-.69341314 3.7695701-1.03998932 5.77600882-1.03998932 2.8325888 0 5.0971994.72288124 6.7938319 2.16864372 1.6966326 1.44576248 2.5449488 3.39326503 2.5449488 5.8422469 0 1.79990128-.4428039 3.37840058-1.32789 4.73575878-.8850862 1.3573582-2.1097076 2.3311094-3.6736032 2.9212538 1.8588374.5309474 3.2753926 1.4457625 4.2488831 2.7439237z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(1028.654902 202.599599)"/><g transform="translate(1078.488158 194.392443)"><path d="m.035471.089728h42.916712v49.26713h-42.916712z" fill="#00a88a"/><path d="m42.9521838 49.3568579h-42.91671231v-49.26713035h42.91671231zm-40.37825665-46.72872807v44.19032577h37.83980095v-44.19032577z" fill="#000"/></g><path d="m22.936251 22.0604515v3.0096581h-4.7800913v6.8603307h-3.6292707v-6.8603307h-14.51708251v-2.7441844l15.18102761-21.9086215h2.9653256v21.6431478zm-19.16443702 0h10.75507502v-15.49083387z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(1089.451732 203.121158)"/><g transform="translate(1138.52553 194.392443)"><path d="m.035471.089728h42.916712v49.26713h-42.916712z" fill="#00a88a"/><path d="m42.9521838 49.3568579h-42.91671231v-49.26713035h42.91671231zm-40.37825665-46.72872807v44.19032577h37.83980095v-44.19032577z" fill="#000"/></g><path d="m16.4136394 13.9290806c1.4900951.8410145 2.6336139 2.0140014 3.4302958 3.5187001.7966819 1.5049595 1.1948924 3.2456637 1.1948924 5.2226344s-.4352412 3.7325394-1.3057238 5.2669669c-.8702217 1.5344276-2.1097075 2.7220182-3.7176749 3.5630326-1.6082282.8407537-3.489232 1.2613913-5.643272 1.2613913-1.9177737 0-3.80607928-.346837-5.66517753-1.0402501-1.85883747-.6934131-3.42273314-1.6449981-4.69142622-2.854755l1.37196183-2.7882562c2.92125384 2.4195137 5.91604755 3.6292706 8.98464192 3.6292706 2.213237 0 3.9466395-.6269143 5.2007289-1.8810037 1.2538286-1.2540895 1.8810037-2.9580238 1.8810037-5.1120639 0-2.094843-.6196125-3.7841737-1.8588374-5.0677312-1.2394858-1.2835576-2.8917858-1.9253363-4.9571607-1.9253363-3.00965819 0-5.41456828 1.2246213-7.21446955 3.6736031h-2.52278251v-18.45642016h18.89896326v3.00965815h-15.26969262v11.24221151c1.74096506-1.6820289 3.96880576-2.5230433 6.68326132-2.5230433 1.9769707 0 3.7103731.4206376 5.2004681 1.2613912z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(1148.445985 201.599599)"/><g transform="translate(957.360703 194.392443)"><path d="m.035471.089728h42.916712v49.26713h-42.916712z" fill="#00a88a"/><path d="m42.9521838 49.3568579h-42.91671231v-49.26713035h42.91671231zm-40.37816863-46.72872807v44.19032577h37.83971293v-44.19032577z" fill="#000"/></g><path d="m10.8395677 28.5428562h6.948735v3.0539907h-17.57107324v-3.0539907h6.94873503v-23.94452832l-6.46185939 4.11614628v-3.49653379l8.05522316-5.1342301h2.08023944z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(970.410431 203.121158)"/><g transform="translate(1231.099754 194.213333)"><path d="m.035471.089728h42.916712v49.26713h-42.916712z" fill="#00a88a"/><path d="m42.9521838 49.3568579h-42.91671231v-49.26713035h42.91671231zm-40.37816863-46.72872807v44.19032577h37.83971293v-44.19032577z" fill="#000"/></g><path d="m21.3648958 29.0644155v3.0539907h-20.27092509v-2.7441844l11.02080949-12.215702c1.4752306-1.6523 2.5522507-3.142395 3.2307994-4.4702851.6788094-1.3276293 1.0180838-2.6555193 1.0180838-3.98340939 0-1.74070428-.5017401-3.07589618-1.5049595-4.00531492-1.0032194-.92967951-2.4341174-1.39438888-4.2932157-1.39438888-3.0096581 0-5.98958737 1.20975688-8.94030931 3.62953142l-1.37222261-2.78851699c1.23948576-1.18028878 2.80312065-2.12431118 4.691687-2.83258875 1.88830558-.70827758 3.79147559-1.06215559 5.70951002-1.06215559 2.891525 0 5.1783019.74504751 6.8603307 2.23514253 1.6817681 1.49009502 2.5227826 3.50383562 2.5227826 6.04122179 0 1.79990128-.4057732 3.53356448-1.2173195 5.20072888-.8112856 1.6669037-2.1613419 3.5333038-4.0496475 5.5986787l-8.98464189 9.737252z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(1241.784164 202.570441)"/><g transform="translate(1292.473373 194.213333)"><path d="m.035471.089728h42.916712v49.26713h-42.916712z" fill="#00a88a"/><path d="m42.9521838 49.3568579h-42.91671231v-49.26713035h42.91671231zm-40.37825665-46.72872807v44.19032577h37.83980095v-44.19032577z" fill="#000"/></g><path d="m23.0372759 21.726858v3.0096582h-4.7800914v6.8603307h-3.6292706v-6.8603307h-14.51708254v-2.7441845l15.18102754-21.90862143h2.9653256v21.64314773zm-19.16443705 0h10.75507505v-15.4908338z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(1301.574474 203.100332)"/><g fill="#fff" fill-rule="nonzero" transform="translate(974.127869 141.527307)"><path d="m5.47365255 15.5387394v-13.14066544h-5.07689804v-1.43299542h11.85291919v1.43299542h-5.07689802v13.14066544z"/><path d="m21.1342453 10.3380383h-7.553933c.0136476 1.3111421.3173061 2.3005913.9109757 2.9683477.5936695.6677563 1.4568786 1.0040716 2.5896274 1.0040716 1.2009866 0 2.3064402-.4045531 3.3163608-1.2087853l.5527268 1.2087853c-.45037.4240497-1.02698.7554908-1.7298302 1.0040716-.7028501.2437067-1.4227597.3655601-2.1597288.3655601-1.6104139 0-2.8728146-.472791-3.7872021-1.418373-.9143876-.9504562-1.3715814-2.25185-1.3715814-3.9041814 0-1.04793885.2047137-1.97889846.6141409-2.79287884.4094273-.80910626.9826255-1.44274368 1.7195945-1.89116402.7369691-.45329446 1.576295-.67750463 2.5179777-.67750463 1.3647575 0 2.4360922.44842033 3.214004 1.34038686.7779118.89684067 1.1668677 2.12512245 1.1668677 3.69459363zm-6.4587151-3.27541805c-.5390792.52153234-.8836805 1.24777832-1.0338038 2.19336032h5.9981094c-.0818855-.96995267-.3650727-1.70594692-.8495616-2.21285686s-1.156632-.75549078-2.0164293-.75549078c-.8597972 0-1.5592354.25832911-2.0983147.77498732z"/><path d="m29.3842046 5.11784076-.0409427 1.51585569c-.3138943-.10723095-.675555-.16572056-1.0849823-.16572056-.996273 0-1.736654.31194458-2.2211429.93095961-.4844889.62388916-.7267334 1.37937994-.7267334 2.26647234v5.87333156h-1.6581804v-7.40868379c0-1.06743536-.0545903-2.02763977-.1637709-2.8903615h1.576295l.1637709 1.90578642c.2593039-.69700117.675555-1.22828178 1.2487531-1.59871597.5731982-.36556006 1.2282818-.55077715 1.9652509-.55077715.3411894 0 .6550836.03899307.9416827.12185335z"/><path d="m45.9045945 9.07076348v6.46797592h-1.6581804v-6.38511564c0-.96995268-.1671828-1.67182798-.5015484-2.11050005-.3343655-.43867206-.8768567-.65313396-1.6274733-.65313396-.8734448 0-1.5558236.29244804-2.0471363.87734413-.4913127.58977022-.7369691 1.38425407-.7369691 2.39807396v5.87333156h-1.6581804v-6.38511564c0-.95533028-.1705947-1.65720558-.5117841-2.10075178s-.8870924-.66288223-1.637709-.66288223c-.8734448 0-1.5592355.29244804-2.057372.87734413-.4981365.58977022-.7472047 1.38425407-.7472047 2.39807396v5.87333156h-1.6581805v-7.40868379c0-1.06743536-.0545903-2.02763977-.1637709-2.8903615h1.576295l.1637709 1.8034296c.2865991-.65313396.7130858-1.1600439 1.2794602-1.51585569s1.2248699-.53128061 1.9754865-.53128061c.8188545 0 1.4875857.16572056 2.0061936.49228754s.90074.83347692 1.1463963 1.51585569c.3138943-.61414089.7744999-1.1015543 1.381817-1.46711435.6073171-.36068592 1.2931078-.54102888 2.057372-.54102888 2.2791451 0 3.4187176 1.3598834 3.4187176 4.07477607z"/><path d="m60.3369055 14.1252405h3.214004v1.4134989h-8.1271311v-1.4134989h3.214004v-11.07403258l-2.988819 1.90578642v-1.61821251l3.725788-2.37370329h.9621541z"/><path d="m66.396429 5.46877841h2.1085503v2.12512245h-2.1085503zm0 7.95946089h2.1085503v1.4963592c0 .5751478-.095533 1.0966801-.286599 1.5743453-.1910661.4776651-.5117841.945582-.9621541 1.3940023l-.7779118-.5946443c.5322554-.6141409.8325021-1.199037.90074-1.7595624h-.9826254z"/><path d="m76.2226832 15.5387394 1.1463963-14.57366086h3.214004l-.962154 11.97574736h6.5098934l-.2047136 2.5979135z"/><path d="m87.6661752 15.5387394.8188545-10.37703143h3.0911758l-.8188545 10.37703143zm1.0645108-15.25116549h3.3163608l-.225185 2.9049839h-3.3163608z"/><path d="m92.6611877 14.4323109 1.0030968-2.1494931c.5731982.3948049 1.1873391.7018753 1.8424227.9114631.6550836.2144619 1.3101672.3168187 1.9652508.3168187.5731982 0 .996273-.0828603 1.2692246-.2437067.2729515-.1657206.4094272-.3850566.4094272-.6580081 0-.2826998-.160359-.5117841-.481077-.6726305-.320718-.1657206-.8427378-.3558118-1.5660593-.5751478-.7506166-.2047136-1.3647575-.4094273-1.8424227-.6141409-.4776651-.2047136-.8905043-.5069099-1.2385174-.91146307-.3480132-.399679-.5220198-.92121134-.5220198-1.56459704 0-.66775636.1876542-1.25752658.5629625-1.75956239.3753083-.50690994.9075638-.9017148 1.5967663-1.18928871.6892026-.28757391 1.4773501-.4289238 2.3644424-.4289238.7779118 0 1.5387642.11697922 2.2825572.34606352.743793.23395844 1.368169.54590302 1.87313.94558201l-.982626 2.06663284c-.50496-.37043419-1.037216-.64825983-1.5967662-.83835106-.5595506-.19496536-1.1054536-.28757391-1.637709-.28757391-.5595506 0-.9826255.08286028-1.2692245.2437067-.2865991.16572056-.4298987.38993073-.4298987.67750464 0 .29732218.1705947.53615474.5117841.7164977.3411894.17546883.8597973.36068592 1.5558236.55077715.7506166.21933604 1.3613456.4289238 1.8321867.63363743.470842.20471359.880269.51178409 1.228282.91146309.348013.4045531.52202.9260855.52202 1.5694711 0 1.0235682-.406016 1.8229262-1.218046 2.4029481-.812031.580022-1.9072489.87247-3.285654.87247-1.7741848 0-3.3573036-.4240496-4.7493563-1.272149z"/><path d="m107.666697 11.5078305c-.040943.5702737.075062.9943234.348013 1.2672749.272952.2729515.64826.4094272 1.125925.4094272.313894 0 .661907-.0536155 1.044039-.1657205l-.204713 2.3980739c-.464018.1900913-1.064511.2875739-1.80148.2875739-1.173692 0-2.07102-.3168187-2.691984-.945582-.620965-.6238891-.931447-1.5109815-.931447-2.6612772 0-.2290843.006823-.4094272.020471-.5312806l.327542-4.09427259h-1.965251l.184242-2.31033954h1.965251l.184242-2.43706703 3.173062-1.00407162-.266128 3.44113865h2.640806l-.184243 2.31033954h-2.640805z"/><path d="m110.962586 14.4323109 1.003097-2.1494931c.573198.3948049 1.187339.7018753 1.842423.9114631.655083.2144619 1.310167.3168187 1.965251.3168187.573198 0 .996273-.0828603 1.269224-.2437067.272952-.1657206.409427-.3850566.409427-.6580081 0-.2826998-.160359-.5117841-.481077-.6726305-.320718-.1657206-.842737-.3558118-1.566059-.5751478-.750617-.2047136-1.364757-.4094273-1.842423-.6141409-.477665-.2047136-.890504-.5069099-1.238517-.91146307-.348013-.399679-.52202-.92121134-.52202-1.56459704 0-.66775636.187654-1.25752658.562963-1.75956239.375308-.50690994.907563-.9017148 1.596766-1.18928871s1.47735-.4289238 2.364442-.4289238c.777912 0 1.538765.11697922 2.282557.34606352.743793.23395844 1.36817.54590302 1.87313.94558201l-.982625 2.06663284c-.504961-.37043419-1.037216-.64825983-1.596767-.83835106-.55955-.19496536-1.105453-.28757391-1.637709-.28757391-.55955 0-.982625.08286028-1.269224.2437067-.286599.16572056-.429899.38993073-.429899.67750464 0 .29732218.170595.53615474.511784.7164977.34119.17546883.859798.36068592 1.555824.55077715.750616.21933604 1.361345.4289238 1.832187.63363743.470841.20471359.880268.51178409 1.228282.91146309.348013.4045531.522019.9260855.522019 1.5694711 0 1.0235682-.406015 1.8229262-1.218046 2.4029481-.81203.580022-1.907248.87247-3.285653.87247-1.774185 0-3.357304-.4240496-4.749357-1.272149z"/><path d="m133.890513 14.1252405h3.214004v1.4134989h-8.127131v-1.4134989h3.214004v-11.07403258l-2.988819 1.90578642v-1.61821251l3.725788-2.37370329h.962154z"/><path d="m142.058587 13.4282393v1.4963592c0 .5751478-.095533 1.0966801-.286599 1.5743453-.191066.4776651-.511784.945582-.962154 1.3940023l-.777912-.5946443c.532255-.6141409.832502-1.199037.90074-1.7595624h-.982626v-2.1105001z"/><path d="m153.481607 9.31447018c.45037.59951849.675555 1.35988342.675555 2.27134652 0 1.2721489-.429898 2.2713464-1.289696 3.0024665-.859797.726246-2.026665 1.0918061-3.500603 1.0918061-.941682 0-1.845834-.1559723-2.712455-.4679169-.866621-.3168187-1.600178-.7603649-2.200672-1.3306386l.655084-1.2916455c1.35111 1.1210508 2.75681 1.6815762 4.217101 1.6815762 1.037215 0 1.825363-.2339584 2.364442-.6970012.539079-.4630427.808619-1.1454215.808619-2.0471363 0-1.78880715-1.119101-2.68077369-3.357304-2.68077369h-1.678651v-1.41349887h1.35111c1.078158 0 1.903836-.23883257 2.477034-.71649771.573199-.47766514.859798-1.1600439.859798-2.0471363 0-.79448385-.235421-1.39887648-.706262-1.82292614-.470842-.42404966-1.136161-.63363743-1.995958-.63363743-1.392053 0-2.770458.56052542-4.135216 1.67670212l-.634612-1.28677139c.586846-.56052542 1.306756-.99919749 2.159729-1.32089033.852973-.32169285 1.743478-.48253927 2.671513-.48253927 1.310167 0 2.357619.33631525 3.142354 1.00407161.784736.66775637 1.177103 1.56947117 1.177103 2.70027027 0 .83347692-.204713 1.56459703-.61414 2.19336032-.409428.62388916-.975802 1.07718363-1.699124 1.35013514.859798.2437067 1.514881.66775636 1.965251 1.26727485z"/><path d="m159.070289 13.4282393v1.4963592c0 .5751478-.095533 1.0966801-.286599 1.5743453-.191066.4776651-.511784.945582-.962154 1.3940023l-.777912-.5946443c.532256-.6141409.832503-1.199037.90074-1.7595624h-.982625v-2.1105001z"/><path d="m171.98772 10.9716758v1.3940023h-2.210908v3.1730613h-1.678651v-3.1730613h-6.714608v-1.2672749l7.021678-10.13332466h1.371581v10.00659726zm-8.864101 0h4.974542v-7.1649771z"/><path d="m176.081992 13.4282393v1.4963592c0 .5751478-.095533 1.0966801-.286599 1.5743453-.191066.4776651-.511784.945582-.962154 1.3940023l-.777912-.5946443c.532256-.6141409.832502-1.199037.90074-1.7595624h-.982625v-2.1105001z"/><path d="m186.553094 6.9700117c.689203.38993073 1.218046.93095961 1.586531 1.62796078.368484.69700117.552727 1.50123332.552727 2.41757052 0 .911463-.201302 1.7254434-.603905 2.437067-.402604.7067494-.975802 1.2575266-1.719595 1.6474573s-1.613826.580022-2.610099.580022c-.887092 0-1.760537-.1559723-2.620334-.4776652-.859797-.3216928-1.583119-.7603649-2.169965-1.3208903l.634613-1.2916455c1.35111 1.1210508 2.736338 1.6815762 4.155686 1.6815762 1.023568 0 1.825363-.292448 2.405385-.87247.580022-.5800219.870033-1.3696316.870033-2.363955 0-.9699527-.286599-1.74981412-.859797-2.34445848-.573198-.59464435-1.337462-.89196653-2.292793-.89196653-1.392052 0-2.50433.57027369-3.336832 1.70107279h-1.166867v-8.53460874h8.741272v1.38912821h-7.062621v5.20070104c.805207-.77986145 1.835599-1.16491804 3.091176-1.16491804.914388 0 1.716183.19496536 2.405385.58002195z"/></g><g fill="#fff" fill-rule="nonzero" transform="translate(1248.643217 141.651852)"><path d="m5.47365255 15.5387394v-13.14066544h-5.07689804v-1.43299542h11.85291919v1.43299542h-5.07689802v13.14066544z"/><path d="m21.1342453 10.3380383h-7.553933c.0136476 1.3111421.3173061 2.3005913.9109757 2.9683477.5936695.6677563 1.4568786 1.0040716 2.5896274 1.0040716 1.2009866 0 2.3064402-.4045531 3.3163608-1.2087853l.5527268 1.2087853c-.45037.4240497-1.02698.7554908-1.7298302 1.0040716-.7028501.2437067-1.4227597.3655601-2.1597288.3655601-1.6104139 0-2.8728146-.472791-3.7872021-1.418373-.9143876-.9504562-1.3715814-2.25185-1.3715814-3.9041814 0-1.04793885.2047137-1.97889846.6141409-2.79287884.4094273-.80910626.9826255-1.44274368 1.7195945-1.89116402.7369691-.45329446 1.576295-.67750463 2.5179777-.67750463 1.3647575 0 2.4360922.44842033 3.214004 1.34038686.7779118.89684067 1.1668677 2.12512245 1.1668677 3.69459363zm-6.4587151-3.27541805c-.5390792.52153234-.8836805 1.24777832-1.0338038 2.19336032h5.9981094c-.0818855-.96995267-.3650727-1.70594692-.8495616-2.21285686s-1.156632-.75549078-2.0164293-.75549078c-.8597972 0-1.5592354.25832911-2.0983147.77498732z"/><path d="m29.3842046 5.11784076-.0409427 1.51585569c-.3138943-.10723095-.675555-.16572056-1.0849823-.16572056-.996273 0-1.736654.31194458-2.2211429.93095961-.4844889.62388916-.7267334 1.37937994-.7267334 2.26647234v5.87333156h-1.6581804v-7.40868379c0-1.06743536-.0545903-2.02763977-.1637709-2.8903615h1.576295l.1637709 1.90578642c.2593039-.69700117.675555-1.22828178 1.2487531-1.59871597.5731982-.36556006 1.2282818-.55077715 1.9652509-.55077715.3411894 0 .6550836.03899307.9416827.12185335z"/><path d="m45.9045945 9.07076348v6.46797592h-1.6581804v-6.38511564c0-.96995268-.1671828-1.67182798-.5015484-2.11050005-.3343655-.43867206-.8768567-.65313396-1.6274733-.65313396-.8734448 0-1.5558236.29244804-2.0471363.87734413-.4913127.58977022-.7369691 1.38425407-.7369691 2.39807396v5.87333156h-1.6581804v-6.38511564c0-.95533028-.1705947-1.65720558-.5117841-2.10075178s-.8870924-.66288223-1.637709-.66288223c-.8734448 0-1.5592355.29244804-2.057372.87734413-.4981365.58977022-.7472047 1.38425407-.7472047 2.39807396v5.87333156h-1.6581805v-7.40868379c0-1.06743536-.0545903-2.02763977-.1637709-2.8903615h1.576295l.1637709 1.8034296c.2865991-.65313396.7130858-1.1600439 1.2794602-1.51585569s1.2248699-.53128061 1.9754865-.53128061c.8188545 0 1.4875857.16572056 2.0061936.49228754s.90074.83347692 1.1463963 1.51585569c.3138943-.61414089.7744999-1.1015543 1.381817-1.46711435.6073171-.36068592 1.2931078-.54102888 2.057372-.54102888 2.2791451 0 3.4187176 1.3598834 3.4187176 4.07477607z"/><path d="m63.8784513 14.1252405v1.4134989h-9.3758843v-1.2672749l5.0973694-5.65399549c.6823788-.76036491 1.1805153-1.45249195 1.4944095-2.06663284.3138943-.61414089.4708414-1.22828178.4708414-1.84242267 0-.80423212-.2320088-1.42324715-.6960264-1.85217094-.4640175-.4289238-1.1259249-.6433857-1.9857222-.6433857-1.3920527 0-2.7704578.56052542-4.1352153 1.67670212l-.6346123-1.28677139c.5731982-.54590302 1.2965197-.98457508 2.1699645-1.31114206.8734448-.32656699 1.7537134-.49228754 2.6408058-.49228754 1.3374624 0 2.3951495.34606351 3.1730613 1.03331642.7779118.6872529 1.1668677 1.62308664 1.1668677 2.79287881 0 .83347692-.1876542 1.63770904-.5629625 2.40782222-.3753083.77011319-.9996849 1.63283491-1.8731297 2.58816519l-4.1556867 4.50369987z"/><path d="m66.396429 5.46877841h2.1085503v2.12512245h-2.1085503zm0 7.95946089h2.1085503v1.4963592c0 .5751478-.095533 1.0966801-.286599 1.5743453-.1910661.4776651-.5117841.945582-.9621541 1.3940023l-.7779118-.5946443c.5322554-.6141409.8325021-1.199037.90074-1.7595624h-.9826254z"/><path d="m76.2226832 15.5387394 1.1463963-14.57366086h3.214004l-.962154 11.97574736h6.5098934l-.2047136 2.5979135z"/><path d="m87.6661752 15.5387394.8188545-10.37703143h3.0911758l-.8188545 10.37703143zm1.0645108-15.25116549h3.3163608l-.225185 2.9049839h-3.3163608z"/><path d="m92.6611877 14.4323109 1.0030968-2.1494931c.5731982.3948049 1.1873391.7018753 1.8424227.9114631.6550836.2144619 1.3101672.3168187 1.9652508.3168187.5731982 0 .996273-.0828603 1.2692246-.2437067.2729515-.1657206.4094272-.3850566.4094272-.6580081 0-.2826998-.160359-.5117841-.481077-.6726305-.320718-.1657206-.8427378-.3558118-1.5660593-.5751478-.7506166-.2047136-1.3647575-.4094273-1.8424227-.6141409-.4776651-.2047136-.8905043-.5069099-1.2385174-.91146307-.3480132-.399679-.5220198-.92121134-.5220198-1.56459704 0-.66775636.1876542-1.25752658.5629625-1.75956239.3753083-.50690994.9075638-.9017148 1.5967663-1.18928871.6892026-.28757391 1.4773501-.4289238 2.3644424-.4289238.7779118 0 1.5387642.11697922 2.2825572.34606352.743793.23395844 1.368169.54590302 1.87313.94558201l-.982626 2.06663284c-.50496-.37043419-1.037216-.64825983-1.5967662-.83835106-.5595506-.19496536-1.1054536-.28757391-1.637709-.28757391-.5595506 0-.9826255.08286028-1.2692245.2437067-.2865991.16572056-.4298987.38993073-.4298987.67750464 0 .29732218.1705947.53615474.5117841.7164977.3411894.17546883.8597973.36068592 1.5558236.55077715.7506166.21933604 1.3613456.4289238 1.8321867.63363743.470842.20471359.880269.51178409 1.228282.91146309.348013.4045531.52202.9260855.52202 1.5694711 0 1.0235682-.406016 1.8229262-1.218046 2.4029481-.812031.580022-1.9072489.87247-3.285654.87247-1.7741848 0-3.3573036-.4240496-4.7493563-1.272149z"/><path d="m107.666697 11.5078305c-.040943.5702737.075062.9943234.348013 1.2672749.272952.2729515.64826.4094272 1.125925.4094272.313894 0 .661907-.0536155 1.044039-.1657205l-.204713 2.3980739c-.464018.1900913-1.064511.2875739-1.80148.2875739-1.173692 0-2.07102-.3168187-2.691984-.945582-.620965-.6238891-.931447-1.5109815-.931447-2.6612772 0-.2290843.006823-.4094272.020471-.5312806l.327542-4.09427259h-1.965251l.184242-2.31033954h1.965251l.184242-2.43706703 3.173062-1.00407162-.266128 3.44113865h2.640806l-.184243 2.31033954h-2.640805z"/><path d="m110.962586 14.4323109 1.003097-2.1494931c.573198.3948049 1.187339.7018753 1.842423.9114631.655083.2144619 1.310167.3168187 1.965251.3168187.573198 0 .996273-.0828603 1.269224-.2437067.272952-.1657206.409427-.3850566.409427-.6580081 0-.2826998-.160359-.5117841-.481077-.6726305-.320718-.1657206-.842737-.3558118-1.566059-.5751478-.750617-.2047136-1.364757-.4094273-1.842423-.6141409-.477665-.2047136-.890504-.5069099-1.238517-.91146307-.348013-.399679-.52202-.92121134-.52202-1.56459704 0-.66775636.187654-1.25752658.562963-1.75956239.375308-.50690994.907563-.9017148 1.596766-1.18928871s1.47735-.4289238 2.364442-.4289238c.777912 0 1.538765.11697922 2.282557.34606352.743793.23395844 1.36817.54590302 1.87313.94558201l-.982625 2.06663284c-.504961-.37043419-1.037216-.64825983-1.596767-.83835106-.55955-.19496536-1.105453-.28757391-1.637709-.28757391-.55955 0-.982625.08286028-1.269224.2437067-.286599.16572056-.429899.38993073-.429899.67750464 0 .29732218.170595.53615474.511784.7164977.34119.17546883.859798.36068592 1.555824.55077715.750616.21933604 1.361345.4289238 1.832187.63363743.470841.20471359.880268.51178409 1.228282.91146309.348013.4045531.522019.9260855.522019 1.5694711 0 1.0235682-.406015 1.8229262-1.218046 2.4029481-.81203.580022-1.907248.87247-3.285653.87247-1.774185 0-3.357304-.4240496-4.749357-1.272149z"/><path d="m137.432059 14.1252405v1.4134989h-9.375885v-1.2672749l5.09737-5.65399549c.682379-.76036491 1.180515-1.45249195 1.494409-2.06663284.313895-.61414089.470842-1.22828178.470842-1.84242267 0-.80423212-.232009-1.42324715-.696027-1.85217094-.464017-.4289238-1.125925-.6433857-1.985722-.6433857-1.392053 0-2.770458.56052542-4.135215 1.67670212l-.634612-1.28677139c.573198-.54590302 1.296519-.98457508 2.169964-1.31114206.873445-.32656699 1.753713-.49228754 2.640806-.49228754 1.337462 0 2.395149.34606351 3.173061 1.03331642.777912.6872529 1.166868 1.62308664 1.166868 2.79287881 0 .83347692-.187654 1.63770904-.562963 2.40782222-.375308.77011319-.999685 1.63283491-1.873129 2.58816519l-4.155687 4.50369987z"/><path d="m142.058587 13.4282393v1.4963592c0 .5751478-.095533 1.0966801-.286599 1.5743453-.191066.4776651-.511784.945582-.962154 1.3940023l-.777912-.5946443c.532255-.6141409.832502-1.199037.90074-1.7595624h-.982626v-2.1105001z"/><path d="m154.976017 10.9716758v1.3940023h-2.210907v3.1730613h-1.678652v-3.1730613h-6.714607v-1.2672749l7.021677-10.13332466h1.371582v10.00659726zm-8.8641 0h4.974541v-7.1649771z"/><path d="m159.070289 13.4282393v1.4963592c0 .5751478-.095533 1.0966801-.286599 1.5743453-.191066.4776651-.511784.945582-.962154 1.3940023l-.777912-.5946443c.532256-.6141409.832503-1.199037.90074-1.7595624h-.982625v-2.1105001z"/><path d="m169.541392 6.9700117c.689202.38993073 1.218046.93095961 1.58653 1.62796078.368485.69700117.552727 1.50123332.552727 2.41757052 0 .911463-.201302 1.7254434-.603905 2.437067-.402604.7067494-.975802 1.2575266-1.719595 1.6474573-.743792.3899307-1.613825.580022-2.610098.580022-.887093 0-1.760538-.1559723-2.620335-.4776652-.859797-.3216928-1.583119-.7603649-2.169964-1.3208903l.634612-1.2916455c1.35111 1.1210508 2.736339 1.6815762 4.155687 1.6815762 1.023568 0 1.825363-.292448 2.405385-.87247.580022-.5800219.870033-1.3696316.870033-2.363955 0-.9699527-.286599-1.74981412-.859798-2.34445848-.573198-.59464435-1.337462-.89196653-2.292792-.89196653-1.392053 0-2.50433.57027369-3.336832 1.70107279h-1.166868v-8.53460874h8.741272v1.38912821h-7.06262v5.20070104c.805207-.77986145 1.835599-1.16491804 3.091175-1.16491804.914388 0 1.716183.19496536 2.405386.58002195z"/><path d="m176.081992 13.4282393v1.4963592c0 .5751478-.095533 1.0966801-.286599 1.5743453-.191066.4776651-.511784.945582-.962154 1.3940023l-.777912-.5946443c.532256-.6141409.832502-1.199037.90074-1.7595624h-.982625v-2.1105001z"/><path d="m187.965618 9.38758219c.525432.63363741.788148 1.39400231.788148 2.28109471 0 1.2429042-.470842 2.2226052-1.412524 2.9391029-.941683.7164977-2.210907 1.0723095-3.807674 1.0723095-1.596766 0-2.865991-.3558118-3.807673-1.0723095-.941683-.7164977-1.412524-1.6961987-1.412524-2.9391029 0-.8870924.269539-1.6523314.808619-2.29084297.539079-.6433857 1.27946-1.0869319 2.221142-1.3306386-.873444-.25832911-1.542176-.6872529-2.006193-1.28189726-.464018-.59464435-.696026-1.29164552-.696026-2.09587764 0-.77986145.204713-1.45736609.61414-2.03738804.409428-.58002195.986038-1.02844229 1.729831-1.35013513.743792-.32169285 1.593354-.48253927 2.548684-.48253927.955331 0 1.804892.16084642 2.548685.48253927.743793.32169284 1.320403.77011318 1.72983 1.35013513s.614141 1.25752659.614141 2.03738804c0 .80423212-.235421 1.50123329-.706262 2.09587764-.470841.59464436-1.129337 1.02356815-1.975487 1.28189726.955331.2583291 1.695712.70674944 2.221143 1.34038686zm-6.776021-2.7051444c.580022.48741341 1.361346.78473559 2.343971.89196653.982626-.10723094 1.763949-.40455312 2.343971-.89196653.580022-.48253927.870033-1.11130256.870033-1.89116401 0-.80423212-.283187-1.43786955-.849561-1.90578642-.566375-.46304273-1.354522-.69212703-2.364443-.69212703-1.00992 0-1.798068.2290843-2.364442.69212703-.566375.46791687-.849562 1.1015543-.849562 1.90578642 0 .77986145.290011 1.40862474.870033 1.89116401zm4.984777 6.91152211c.614141-.4630428.921211-1.1405474.921211-2.0276398 0-.8042321-.324129-1.4476178-.972389-1.9350312-.64826-.48253927-1.511469-.77986145-2.589628-.8870924-1.078158.10723095-1.941367.40455313-2.589627.8870924-.64826.4874134-.97239 1.1307991-.97239 1.9350312 0 .8870924.307071 1.564597.921211 2.0276398.614141.4630427 1.49441.6970012 2.640806.6970012 1.146397 0 2.026665-.2339585 2.640806-.6970012z"/></g><g fill="#fff" fill-rule="nonzero" transform="translate(1520.629778 141.651852)"><path d="m5.47365255 15.5387394v-13.14066544h-5.07689804v-1.43299542h11.85291919v1.43299542h-5.07689802v13.14066544z"/><path d="m21.1342453 10.3380383h-7.553933c.0136476 1.3111421.3173061 2.3005913.9109757 2.9683477.5936695.6677563 1.4568786 1.0040716 2.5896274 1.0040716 1.2009866 0 2.3064402-.4045531 3.3163608-1.2087853l.5527268 1.2087853c-.45037.4240497-1.02698.7554908-1.7298302 1.0040716-.7028501.2437067-1.4227597.3655601-2.1597288.3655601-1.6104139 0-2.8728146-.472791-3.7872021-1.418373-.9143876-.9504562-1.3715814-2.25185-1.3715814-3.9041814 0-1.04793885.2047137-1.97889846.6141409-2.79287884.4094273-.80910626.9826255-1.44274368 1.7195945-1.89116402.7369691-.45329446 1.576295-.67750463 2.5179777-.67750463 1.3647575 0 2.4360922.44842033 3.214004 1.34038686.7779118.89684067 1.1668677 2.12512245 1.1668677 3.69459363zm-6.4587151-3.27541805c-.5390792.52153234-.8836805 1.24777832-1.0338038 2.19336032h5.9981094c-.0818855-.96995267-.3650727-1.70594692-.8495616-2.21285686s-1.156632-.75549078-2.0164293-.75549078c-.8597972 0-1.5592354.25832911-2.0983147.77498732z"/><path d="m29.3842046 5.11784076-.0409427 1.51585569c-.3138943-.10723095-.675555-.16572056-1.0849823-.16572056-.996273 0-1.736654.31194458-2.2211429.93095961-.4844889.62388916-.7267334 1.37937994-.7267334 2.26647234v5.87333156h-1.6581804v-7.40868379c0-1.06743536-.0545903-2.02763977-.1637709-2.8903615h1.576295l.1637709 1.90578642c.2593039-.69700117.675555-1.22828178 1.2487531-1.59871597.5731982-.36556006 1.2282818-.55077715 1.9652509-.55077715.3411894 0 .6550836.03899307.9416827.12185335z"/><path d="m45.9045945 9.07076348v6.46797592h-1.6581804v-6.38511564c0-.96995268-.1671828-1.67182798-.5015484-2.11050005-.3343655-.43867206-.8768567-.65313396-1.6274733-.65313396-.8734448 0-1.5558236.29244804-2.0471363.87734413-.4913127.58977022-.7369691 1.38425407-.7369691 2.39807396v5.87333156h-1.6581804v-6.38511564c0-.95533028-.1705947-1.65720558-.5117841-2.10075178s-.8870924-.66288223-1.637709-.66288223c-.8734448 0-1.5592355.29244804-2.057372.87734413-.4981365.58977022-.7472047 1.38425407-.7472047 2.39807396v5.87333156h-1.6581805v-7.40868379c0-1.06743536-.0545903-2.02763977-.1637709-2.8903615h1.576295l.1637709 1.8034296c.2865991-.65313396.7130858-1.1600439 1.2794602-1.51585569s1.2248699-.53128061 1.9754865-.53128061c.8188545 0 1.4875857.16572056 2.0061936.49228754s.90074.83347692 1.1463963 1.51585569c.3138943-.61414089.7744999-1.1015543 1.381817-1.46711435.6073171-.36068592 1.2931078-.54102888 2.057372-.54102888 2.2791451 0 3.4187176 1.3598834 3.4187176 4.07477607z"/><path d="m62.9162972 9.31447018c.45037.59951849.675555 1.35988342.675555 2.27134652 0 1.2721489-.4298986 2.2713464-1.2896959 3.0024665-.8597972.726246-2.0266649 1.0918061-3.500603 1.0918061-.9416827 0-1.8458346-.1559723-2.7124556-.4679169-.8666211-.3168187-1.6001782-.7603649-2.2006716-1.3306386l.6550837-1.2916455c1.3511099 1.1210508 2.7568102 1.6815762 4.2171007 1.6815762 1.0372158 0 1.8253632-.2339584 2.3644425-.6970012.5390792-.4630427.8086188-1.1454215.8086188-2.0471363 0-1.78880715-1.1191012-2.68077369-3.3573035-2.68077369h-1.6786518v-1.41349887h1.35111c1.0781584 0 1.9038367-.23883257 2.4770349-.71649771s.8597972-1.1600439.8597972-2.0471363c0-.79448385-.2354206-1.39887648-.706262-1.82292614-.4708413-.42404966-1.1361606-.63363743-1.9959579-.63363743-1.3920527 0-2.7704578.56052542-4.1352153 1.67670212l-.6346123-1.28677139c.5868458-.56052542 1.3067554-.99919749 2.1597288-1.32089033.8529735-.32169285 1.7434778-.48253927 2.6715129-.48253927 1.3101672 0 2.3576186.33631525 3.1423542 1.00407161.7847356.66775637 1.1771034 1.56947117 1.1771034 2.70027027 0 .83347692-.2047136 1.56459703-.6141409 2.19336032-.4094272.62388916-.9758016 1.07718363-1.6991231 1.35013514.8597972.2437067 1.5148808.66775636 1.9652508 1.26727485z"/><path d="m66.396429 5.46877841h2.1085503v2.12512245h-2.1085503zm0 7.95946089h2.1085503v1.4963592c0 .5751478-.095533 1.0966801-.286599 1.5743453-.1910661.4776651-.5117841.945582-.9621541 1.3940023l-.7779118-.5946443c.5322554-.6141409.8325021-1.199037.90074-1.7595624h-.9826254z"/><path d="m76.2226832 15.5387394 1.1463963-14.57366086h3.214004l-.962154 11.97574736h6.5098934l-.2047136 2.5979135z"/><path d="m87.6661752 15.5387394.8188545-10.37703143h3.0911758l-.8188545 10.37703143zm1.0645108-15.25116549h3.3163608l-.225185 2.9049839h-3.3163608z"/><path d="m92.6611877 14.4323109 1.0030968-2.1494931c.5731982.3948049 1.1873391.7018753 1.8424227.9114631.6550836.2144619 1.3101672.3168187 1.9652508.3168187.5731982 0 .996273-.0828603 1.2692246-.2437067.2729515-.1657206.4094272-.3850566.4094272-.6580081 0-.2826998-.160359-.5117841-.481077-.6726305-.320718-.1657206-.8427378-.3558118-1.5660593-.5751478-.7506166-.2047136-1.3647575-.4094273-1.8424227-.6141409-.4776651-.2047136-.8905043-.5069099-1.2385174-.91146307-.3480132-.399679-.5220198-.92121134-.5220198-1.56459704 0-.66775636.1876542-1.25752658.5629625-1.75956239.3753083-.50690994.9075638-.9017148 1.5967663-1.18928871.6892026-.28757391 1.4773501-.4289238 2.3644424-.4289238.7779118 0 1.5387642.11697922 2.2825572.34606352.743793.23395844 1.368169.54590302 1.87313.94558201l-.982626 2.06663284c-.50496-.37043419-1.037216-.64825983-1.5967662-.83835106-.5595506-.19496536-1.1054536-.28757391-1.637709-.28757391-.5595506 0-.9826255.08286028-1.2692245.2437067-.2865991.16572056-.4298987.38993073-.4298987.67750464 0 .29732218.1705947.53615474.5117841.7164977.3411894.17546883.8597973.36068592 1.5558236.55077715.7506166.21933604 1.3613456.4289238 1.8321867.63363743.470842.20471359.880269.51178409 1.228282.91146309.348013.4045531.52202.9260855.52202 1.5694711 0 1.0235682-.406016 1.8229262-1.218046 2.4029481-.812031.580022-1.9072489.87247-3.285654.87247-1.7741848 0-3.3573036-.4240496-4.7493563-1.272149z"/><path d="m107.666697 11.5078305c-.040943.5702737.075062.9943234.348013 1.2672749.272952.2729515.64826.4094272 1.125925.4094272.313894 0 .661907-.0536155 1.044039-.1657205l-.204713 2.3980739c-.464018.1900913-1.064511.2875739-1.80148.2875739-1.173692 0-2.07102-.3168187-2.691984-.945582-.620965-.6238891-.931447-1.5109815-.931447-2.6612772 0-.2290843.006823-.4094272.020471-.5312806l.327542-4.09427259h-1.965251l.184242-2.31033954h1.965251l.184242-2.43706703 3.173062-1.00407162-.266128 3.44113865h2.640806l-.184243 2.31033954h-2.640805z"/><path d="m110.962586 14.4323109 1.003097-2.1494931c.573198.3948049 1.187339.7018753 1.842423.9114631.655083.2144619 1.310167.3168187 1.965251.3168187.573198 0 .996273-.0828603 1.269224-.2437067.272952-.1657206.409427-.3850566.409427-.6580081 0-.2826998-.160359-.5117841-.481077-.6726305-.320718-.1657206-.842737-.3558118-1.566059-.5751478-.750617-.2047136-1.364757-.4094273-1.842423-.6141409-.477665-.2047136-.890504-.5069099-1.238517-.91146307-.348013-.399679-.52202-.92121134-.52202-1.56459704 0-.66775636.187654-1.25752658.562963-1.75956239.375308-.50690994.907563-.9017148 1.596766-1.18928871s1.47735-.4289238 2.364442-.4289238c.777912 0 1.538765.11697922 2.282557.34606352.743793.23395844 1.36817.54590302 1.87313.94558201l-.982625 2.06663284c-.504961-.37043419-1.037216-.64825983-1.596767-.83835106-.55955-.19496536-1.105453-.28757391-1.637709-.28757391-.55955 0-.982625.08286028-1.269224.2437067-.286599.16572056-.429899.38993073-.429899.67750464 0 .29732218.170595.53615474.511784.7164977.34119.17546883.859798.36068592 1.555824.55077715.750616.21933604 1.361345.4289238 1.832187.63363743.470841.20471359.880268.51178409 1.228282.91146309.348013.4045531.522019.9260855.522019 1.5694711 0 1.0235682-.406015 1.8229262-1.218046 2.4029481-.81203.580022-1.907248.87247-3.285653.87247-1.774185 0-3.357304-.4240496-4.749357-1.272149z"/><path d="m137.964314 10.9716758v1.3940023h-2.210907v3.1730613h-1.678652v-3.1730613h-6.714607v-1.2672749l7.021678-10.13332466h1.371581v10.00659726zm-8.8641 0h4.974541v-7.1649771z"/><path d="m142.058587 13.4282393v1.4963592c0 .5751478-.095533 1.0966801-.286599 1.5743453-.191066.4776651-.511784.945582-.962154 1.3940023l-.777912-.5946443c.532255-.6141409.832502-1.199037.90074-1.7595624h-.982626v-2.1105001z"/><path d="m152.488746 6.9700117c.689203.38993073 1.22487.93583374 1.607002 1.63770904.382132.70674944.573198 1.50610746.573198 2.40782226s-.201301 1.7059469-.603905 2.4126963c-.402603.7116236-.958742 1.2672749-1.668416 1.671828-.709674.399679-1.514881.6043926-2.415621.6043926-1.760537 0-3.118471-.6141409-4.073801-1.8424226-.95533-1.2282818-1.432995-2.978096-1.432995-5.24456829 0-1.63770904.221773-3.04145965.665319-4.21612596.443546-1.1746663 1.084982-2.06663284 1.924308-2.68077373s1.845835-.92121133 3.019526-.92121133c.84615 0 1.668416.15597229 2.466799.472791.798383.31194458 1.497822.75549078 2.098315 1.3306386l-.634612 1.28677139c-.682379-.57027369-1.337463-.99432335-1.965251-1.26727486-.627789-.2729515-1.269225-.40942726-1.924308-.40942726-1.255577 0-2.231379.56052542-2.927405 1.67670212-.696026 1.12105083-1.04404 2.690522-1.04404 4.7084135v.30707044c.313895-.77498731.825679-1.3891282 1.535353-1.84242267.709674-.44842033 1.521704-.6726305 2.436092-.6726305.887092 0 1.67524.19496536 2.364442.58002195zm-.337777 6.4289828c.573198-.5946443.859797-1.3793799.859797-2.363955 0-.9699527-.290011-1.74981412-.870033-2.34445848-.580022-.59464435-1.33405-.89196653-2.262086-.89196653-.95533 0-1.733242.30219631-2.333735.9017148s-.90074 1.37937991-.90074 2.33471021c0 .9699527.300247 1.7546883.90074 2.3542068.600493.5995184 1.385229.9017148 2.354207.9017148.928035 0 1.678652-.2973222 2.25185-.8919666z"/><path d="m159.070289 13.4282393v1.4963592c0 .5751478-.095533 1.0966801-.286599 1.5743453-.191066.4776651-.511784.945582-.962154 1.3940023l-.777912-.5946443c.532256-.6141409.832503-1.199037.90074-1.7595624h-.982625v-2.1105001z"/><path d="m161.711095.96507854h9.621541v1.24777832l-6.837435 13.32588254h-1.80148l6.796492-13.16503611h-7.779118z"/><path d="m176.081992 13.4282393v1.4963592c0 .5751478-.095533 1.0966801-.286599 1.5743453-.191066.4776651-.511784.945582-.962154 1.3940023l-.777912-.5946443c.532256-.6141409.832502-1.199037.90074-1.7595624h-.982625v-2.1105001z"/><path d="m187.157 2.64178066c.95533 1.22828178 1.432995 2.97322177 1.432995 5.23969411 0 2.47118593-.494725 4.39159483-1.484174 5.76610063-.989449 1.3696316-2.371266 2.0568845-4.145451 2.0568845-.832502 0-1.647945-.1608464-2.446328-.472791s-1.504645-.7554908-2.118786-1.3306386l.655084-1.2916455c.696026.5897702 1.357934 1.0138199 1.985722 1.2818973.627788.2680773 1.262401.399679 1.903837.399679 1.255577 0 2.227966-.5605255 2.917169-1.6815763.689203-1.1161767 1.033804-2.68564786 1.033804-4.70841349v-.26320324c-.313894.76523904-.825679 1.36963167-1.535352 1.80830373-.709674.44842034-1.521705.6677564-2.436093.6677564-.887092 0-1.671828-.19496539-2.354206-.58489612-.682379-.38505659-1.214635-.93583374-1.596767-1.63770904-.382132-.70187531-.573198-1.50123329-.573198-2.40294809s.201302-1.70594692.603905-2.41757049c.402604-.70674944.958743-1.26727486 1.668416-1.66695385.709674-.40455313 1.514881-.60439262 2.415621-.60439262 1.760538 0 3.118471.61414089 4.073802 1.84242267zm-1.63771 5.15683383c.600494-.59951849.90074-1.3745058.90074-2.32983608 0-.96995268-.300246-1.75468826-.90074-2.35420675-.600493-.60439262-1.385228-.9017148-2.354206-.9017148-.928035 0-1.678652.29732218-2.25185.89196653-.573198.58977023-.859797 1.37937994-.859797 2.36395502 0 .96507855.286599 1.74981413.859797 2.34445848.573198.58977022 1.330638.8870924 2.272321.8870924.95533 0 1.733242-.29732218 2.333735-.9017148z"/></g><g transform="translate(1352.227084 194.213333)"><path d="m.035471.089728h42.916712v49.26713h-42.916712z" fill="#00a88a"/><path d="m42.9521838 49.3568579h-42.91671231v-49.26713035h42.91671231zm-40.37825665-46.72872807v44.19032577h37.83980095v-44.19032577z" fill="#000"/></g><path d="m16.4442443 13.0739279c1.490095.8410144 2.6336139 2.0140013 3.4302957 3.5187.7966819 1.5049595 1.1948925 3.2456638 1.1948925 5.2226344 0 1.9769707-.4352413 3.7325394-1.3057238 5.266967-.8702218 1.5344275-2.1097075 2.7220182-3.717675 3.5630326-1.6082282.8407536-3.4892319 1.2613912-5.643272 1.2613912-1.91777365 0-3.80607922-.3468369-5.66517747-1.0402501-1.85883748-.6934131-3.42273314-1.6449981-4.69142623-2.854755l1.37196183-2.7882562c2.92125384 2.4195138 5.91604755 3.6292706 8.98464187 3.6292706 2.2132371 0 3.9466395-.6269143 5.2007289-1.8810037 1.2538287-1.2540894 1.8810038-2.9580238 1.8810038-5.1120638 0-2.0948431-.6196125-3.7841738-1.8588375-5.0677313-1.2394857-1.2835575-2.8917857-1.9253363-4.9571607-1.9253363-3.00965814 0-5.41456823 1.2246213-7.2144695 3.6736032h-2.52278251v-18.45642023h18.89896331v3.00965815h-15.26969267v11.24221148c1.74096506-1.6820289 3.96880577-2.5230433 6.68326137-2.5230433 1.9769706 0 3.7103731.4206376 5.2004681 1.2613913z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(1362.630417 203.100332)"/><g transform="translate(1412.266122 194.392443)"><path d="m.035471.089728h42.916712v49.26713h-42.916712z" fill="#00a88a"/><path d="m42.9521838 49.3568579h-42.91671231v-49.26713035h42.91671231zm-40.37825665-46.72872807v44.19032577h37.83980095v-44.19032577z" fill="#000"/></g><path d="m21.062913 18.8183824c1.1359562 1.3719618 1.7039343 3.01696 1.7039343 4.9347336 0 2.6852483-1.017823 4.8022576-3.0537299 6.3512889-2.0361676 1.549292-4.7800913 2.3238076-8.2322925 2.3238076-3.45246205 0-6.19638571-.7745156-8.23229258-2.3238076-2.03616764-1.5490313-3.05399069-3.6660406-3.05399069-6.3512889 0-1.9177736.58258178-3.5700736 1.7482669-4.9568999 1.16542433-1.3868263 2.76608993-2.3459739 4.8019968-2.8769213-1.88830558-.5606763-3.33406805-1.4827932-4.33728744-2.7663507-1.00321938-1.2835575-1.50495946-2.795558-1.50495946-4.5365231 0-1.68176807.44280388-3.1499576 1.32789007-4.40378625.88508619-1.25408942 2.13187378-2.2278407 3.73984121-2.92125383 1.60822822-.69341314 3.44489942-1.03998932 5.51053519-1.03998932 2.0653749 0 3.9020461.34657618 5.5102744 1.03998932 1.6079674.69341313 2.854755 1.66716441 3.7398412 2.92125383.8853469 1.25382865 1.32789 2.72201818 1.32789 4.40378625 0 1.7409651-.5090419 3.2529656-1.5271257 4.5365231-1.017823 1.2835575-2.4414192 2.2056744-4.2710494 2.7663507 2.0656358.5606763 3.6663014 1.526865 4.8022576 2.8990876zm-14.64981941-5.8425077c1.25382864 1.0475519 2.94315933 1.6893307 5.06773131 1.9253363 2.1243111-.2360056 3.8136418-.8777844 5.0677313-1.9253363 1.2538286-1.0472911 1.8810037-2.4119511 1.8810037-4.09397999 0-1.74070429-.6123107-3.1129269-1.836932-4.11614628-1.2243605-1.00321938-2.9285556-1.50469868-5.111803-1.50469868-2.18350818 0-3.88770331.5014793-5.11206385 1.50469868-1.22462132 1.00321938-1.83693198 2.37544199-1.83693198 4.11614628 0 1.68202889.6271751 3.04668889 1.88126452 4.09397999zm10.77724131 14.9377202c1.3276293-1.0032194 1.9915743-2.4638463 1.9915743-4.38162 0-1.7409651-.7007149-3.1350932-2.1024056-4.1826451-1.40143-1.0475519-3.2678301-1.6893307-5.5986787-1.9253363-2.33110948.2360056-4.19750956.8777844-5.59893949 1.9253363-1.40169072 1.0475519-2.10240568 2.44168-2.10240568 4.1826451 0 1.9177737.66394503 3.3784006 1.9918351 4.38162 1.32762929 1.0032193 3.2307993 1.5049594 5.70951007 1.5049594 2.4784499 0 4.38162-.5017401 5.70951-1.5049594z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(1421.105194 202.753717)"/><g transform="translate(1503.787344 194.392443)"><path d="m.035471.089728h42.916712v49.26713h-42.916712z" fill="#00a88a"/><path d="m42.9521838 49.3568579h-42.91671231v-49.26713035h42.91671231zm-40.37816863-46.72872807v44.19032577h37.83971293v-44.19032577z" fill="#000"/></g><path d="m23.0372759 21.726858v3.0096582h-4.7800914v6.8603307h-3.6292706v-6.8603307h-14.51708254v-2.7441845l15.18102754-21.90862143h2.9653256v21.64314773zm-19.16443705 0h10.75507505v-15.4908338z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(1512.887196 203.275277)"/><g transform="translate(1565.163879 194.392443)"><path d="m.035471.089728h42.916712v49.26713h-42.916712z" fill="#00a88a"/><path d="m42.9521838 49.3568579h-42.91671231v-49.26713035h42.91671231zm-40.37816863-46.72872807v44.19032577h37.83971293v-44.19032577z" fill="#000"/></g><path d="m17.3989587 13.5954872c1.490095.8410144 2.6482175 2.0213032 3.4743675 3.5408663.82615 1.5195632 1.239225 3.2532264 1.239225 5.2004682 0 1.9475025-.4352413 3.6884676-1.3057238 5.2226344-.8702218 1.5344275-2.0726768 2.7368826-3.6071044 3.6073651-1.5341668.8702218-3.2751319 1.305463-5.2226344 1.305463-3.80634005 0-6.74219755-1.3276293-8.80757252-3.9834094-2.06563575-2.6555193-3.09832323-6.4323913-3.09832323-11.330355 0-3.5408663.47957381-6.5799926 1.43846065-9.11737874.95888684-2.53764695 2.34571311-4.47028507 4.16047882-5.79817514 1.81450493-1.32789007 3.99071125-1.99157432 6.52835818-1.99157432 1.8293694 0 3.6071044.33927435 5.333205 1.01782304 1.7261006.67880948 3.2383619 1.63769632 4.5365231 2.8769213l-1.3719618 2.78851699c-1.4752306-1.23948576-2.891525-2.15404006-4.2488832-2.74418445-1.3573581-.59014439-2.7441844-.88534697-4.1604788-.88534697-2.71445553 0-4.82416305 1.20975688-6.32912251 3.62953142-1.50469868 2.41951375-2.2573088 5.81251797-2.2573088 10.17953437v.663945c.67880947-1.6817681 1.7852976-3.0096582 3.31946439-3.9834094 1.53442756-.9737513 3.28999632-1.460627 5.26696692-1.460627 1.9180345 0 3.6219688.4206377 5.1120639 1.2613913zm-.7301831 13.8977308c1.239225-1.2835575 1.8588375-2.9874918 1.8588375-5.1120638 0-2.0948431-.6271751-3.7841737-1.8810038-5.0677313-1.2540894-1.2835575-2.8842231-1.9253363-4.8906619-1.9253363-2.06563572 0-3.7474038.6490806-5.04582577 1.9475026-1.29816118 1.2981612-1.94724178 2.98019-1.94724178 5.045565 0 2.0948431.6490806 3.7914756 1.94724178 5.0898976 1.29842197 1.2981612 2.99505449 1.9475025 5.08989757 1.9475025 2.0064388 0 3.6292706-.6417787 4.8687564-1.9253363z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(1574.52451 202.753717)"/><g transform="translate(1624.915924 194.392443)"><path d="m.035471.089728h42.916712v49.26713h-42.916712z" fill="#00a88a"/><path d="m42.9521838 49.3568579h-42.91671231v-49.26713035h42.91671231zm-40.37816863-46.72872807v44.19032577h37.83971293v-44.19032577z" fill="#000"/></g><path d="m.03650915.08371027h20.80213335v2.6998519l-14.78281705 28.81328473h-3.89474434l14.69415189-28.45914594h-16.81872385z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(1635.972745 203.629332)"/><g transform="translate(1684.951213 194.392443)"><path d="m.035471.089728h42.916712v49.26713h-42.916712z" fill="#00a88a"/><path d="m42.9521838 49.3568579h-42.91671231v-49.26713035h42.91671231zm-40.37825665-46.72872807v44.19032577h37.83980095v-44.19032577z" fill="#000"/></g><path d="m19.0538664 4.23480103c2.065375 2.65551935 3.0983233 6.43239127 3.0983233 11.33035497 0 5.3407676-1.0697182 9.4936838-3.2088939 12.4590094-2.1391756 2.9655864-5.1266674 4.4481188-8.96273635 4.4481188-1.79990127 0-3.56277183-.3392743-5.28887245-1.017823-1.72610062-.6788095-3.25322635-1.6376963-4.58085564-2.8769213l1.41629437-2.7882562c1.50469869 1.2686931 2.9358575 2.19081 4.29321568 2.7660899 1.35709739.57528 2.72932.8631807 4.11614627.8631807 2.71445552 0 4.81686122-1.2097569 6.30695622-3.6292706 1.4900951-2.4197745 2.2351426-5.8127788 2.2351426-10.1797951v-.5755408c-.6788095 1.6525608-1.7852976 2.9580238-3.3194644 3.9171714-1.5344276.9588869-3.2899963 1.4384607-5.26696696 1.4384607-1.91803446 0-3.61466698-.4206376-5.08989756-1.2613913-1.47523058-.8410144-2.62605125-2.0213032-3.45220124-3.5408663s-1.23922498-3.2532264-1.23922498-5.2004681c0-1.94750259.43524126-3.68846765 1.30546302-5.22263444.87048253-1.53442756 2.07293758-2.73688261 3.60736514-3.60736514 1.53416679-.87022175 3.27513185-1.30546302 5.22263438-1.30546302 3.8063401 0 6.7421976 1.32762929 8.8075725 3.98340943zm-3.5408663 11.15328557c1.298422-1.2981611 1.9475026-2.98019 1.9475026-5.045565 0-2.09484305-.6490806-3.79147556-1.9475026-5.08989753-1.2981612-1.29816119-2.9947937-1.94750256-5.0896368-1.94750256-2.00643874 0-3.62953139.64177876-4.86875638 1.92533629-1.23922498 1.28355752-1.85883747 2.98749187-1.85883747 5.1120638 0 2.0948431.61961249 3.7841738 1.85883747 5.0677313 1.23922499 1.2835575 2.8769213 1.9253363 4.91282818 1.9253363 2.0656357 0 3.7474038-.6490806 5.045565-1.9475026z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(1694.05523 202.753717)"/><path d="m274.413747 0v15.1195638-7.54515948h-274.07401986v7.54515948" stroke="#000" stroke-width="2.539424" transform="translate(1068.761162 109.742102)"/><path d="m0 .24858084h272.688304v7.55978192" stroke="#000" stroke-width="2.539424" transform="translate(1343.17491 117.053303)"/><path d="m90.8465476.12672749v8.60284661h-90.40348881v8.7441965" stroke="#000" stroke-width="2.539424" transform="translate(978.589682 177.005152)"/><path d="m1040.343498 185.807838v8.671084" stroke="#000" stroke-width="2.539424"/><path d="m.18765416.0292448h90.06863584v8.67108449" stroke="#000" stroke-width="2.539424" transform="translate(1069.248576 185.778593)"/><path d="m1100.026783 185.807838v8.671084" stroke="#000" stroke-width="2.539424"/><path d="m1314.628568 185.807838v8.671084" stroke="#000" stroke-width="2.539424"/><path d="m.27782564.0292448h88.64587606v8.67108449" stroke="#000" stroke-width="2.539424" transform="translate(1343.662323 185.778593)"/><path d="m1373.584633 185.807838v8.671084" stroke="#000" stroke-width="2.539424"/><path d="m90.3956902.12672749v8.67595862h-90.07887149v8.67108449" stroke="#000" stroke-width="2.539424" transform="translate(1525.467524 177.005152)"/><path d="m1586.145618 185.807838v8.671084" stroke="#000" stroke-width="2.539424"/><path d="m.22421017.0292448h90.27871103v8.67108449" stroke="#000" stroke-width="2.539424" transform="translate(1615.639004 185.778593)"/><path d="m1645.921998 185.807838v8.671084" stroke="#000" stroke-width="2.539424"/><g fill="#f2f2f2" fill-rule="nonzero" transform="translate(1263.581889 37.572233)"><path d="m7.95815261 22.540308v-20.02691984h-7.73636299v-2.18343345h18.06186388v2.18343345h-7.736363v20.02691984z"/><path d="m32.5082157 6.84954575v15.69076225h-2.495645v-2.8385659c-.4572278.9772392-1.1488702 1.7313239-2.0742447 2.2615717s-2.001566.7953717-3.2285744.7953717c-1.3935212 0-2.6154113-.3326845-3.6653293-.9980533-1.0502591-.6657101-1.8613267-1.6067805-2.4332026-2.8232112-.571876-1.2164307-.857814-2.6358843-.857814-4.2580194s.2910562-3.0518251.8731686-4.2894112c.5824537-1.2372448 1.3986395-2.1991293 2.4488986-2.88531225s2.2615716-1.02944503 3.6342787-1.02944503c1.2270084 0 2.2977405.27024212 3.2128785.81106756.9151381.54082545 1.6118987 1.29968715 2.0899406 2.27726753v-2.71402246zm-3.7431262 12.24381045c.8315404-1.0502592 1.2474812-2.5423915 1.2474812-4.4763969 0-1.9340055-.4159408-3.4210195-1.2474812-4.460701-.8318817-1.04002268-2.0172619-1.55969281-3.5564818-1.55969281-1.5388787 0-2.7396136.53536601-3.602887 1.60643921-.8629322 1.0710733-1.294569 2.5632056-1.294569 4.4763969s.4265185 3.3896277 1.2788731 4.4296504c.8526958 1.0396815 2.0588901 1.5596929 3.6185829 1.5596929 1.5392199 0 2.7246001-.5251296 3.5564818-1.5753887z"/><path d="m44.8301643 14.4610241 6.4571488 8.0792839h-3.0258928l-4.9598983-6.176329-4.8974559 6.176329h-3.0883351l6.5195911-8.0792839-6.1452784-7.61147835h3.0572845l4.5541938 5.77096575 4.5545351-5.77096575h3.0879939z"/><path d="m56.3720959 21.7606322c-1.1229379-.6657101-1.9913295-1.6118987-2.6048337-2.8389071s-.9202563-2.6618166-.9202563-4.3047658.3067521-3.0777574.9202563-4.3047658c.6135042-1.22700843 1.4818958-2.17319705 2.6048337-2.83890711 1.1229379-.66536885 2.422625-.99805327 3.8994026-.99805327 1.4764365 0 2.7761236.33268442 3.8990615.99805327 1.1232791.66571006 1.9913295 1.61189868 2.6048337 2.83890711.6135042 1.2270084.9202563 2.6618166.9202563 4.3047658s-.3067521 3.0777574-.9202563 4.3047658-1.4815546 2.173197-2.6048337 2.8389071c-1.1229379.6653688-2.422625.9980533-3.8990615.9980533-1.4767776 0-2.7764647-.3326845-3.8994026-.9980533zm7.4865938-2.6358843c.8318816-1.029445 1.2478225-2.532155 1.2478225-4.5077886 0-1.9131914-.4261773-3.3950872-1.2788731-4.4453463-.8526957-1.04991795-2.0380759-1.57504751-3.5561406-1.57504751-1.5388787 0-2.7348365.52512956-3.5875323 1.57504751-.8526957 1.0502591-1.278873 2.5321549-1.278873 4.4453463 0 1.9756336.421059 3.4783436 1.2631771 4.5077886.8424594 1.0291038 2.0435354 1.543997 3.6032282 1.543997 1.5596929 0 2.7553095-.5148932 3.5871912-1.543997z"/><path d="m85.1023814 12.6829538v9.8573542h-2.5270367v-9.7324695c0-1.4559636-.2910562-2.5215774-.8731687-3.19752386-.5824536-.67594651-1.4975917-1.01374915-2.7454142-1.01374915-1.4556223 0-2.6201884.44699138-3.4936983 1.34131535-.8735098.89432396-1.3102648 2.10051826-1.3102648 3.61858286v8.9838443h-2.5266955v-11.2925036c0-1.62179388-.0832564-3.08799385-.249428-4.39825865h2.4018109l.2497692 2.80751531c.4783832-1.01886737 1.1956167-1.80400261 2.152383-2.3550645.956425-.55106189 2.0483124-.82676344 3.2753208-.82676344 3.7642815 0 5.6464223 2.0691265 5.6464223 6.20772068z"/><path d="m92.4640906 21.7606322c-1.1229379-.6657101-1.9913295-1.6118987-2.6048337-2.8389071s-.9202563-2.6618166-.9202563-4.3047658.3067521-3.0777574.9202563-4.3047658c.6135042-1.22700843 1.4818958-2.17319705 2.6048337-2.83890711 1.1229379-.66536885 2.4229662-.99805327 3.8994026-.99805327 1.4764365 0 2.7761236.33268442 3.8994028.99805327 1.122938.66571006 1.990988 1.61189868 2.604492 2.83890711.613505 1.2270084.920257 2.6618166.920257 4.3047658s-.306752 3.0777574-.920257 4.3047658c-.613504 1.2270084-1.481554 2.173197-2.604492 2.8389071-1.1232792.6653688-2.4229663.9980533-3.8994028.9980533-1.4764364 0-2.7764647-.3326845-3.8994026-.9980533zm7.4865938-2.6358843c.8318816-1.029445 1.2478226-2.532155 1.2478226-4.5077886 0-1.9131914-.426177-3.3950872-1.2788732-4.4453463-.8526958-1.04991795-2.0380759-1.57504751-3.5561406-1.57504751-1.5388787 0-2.7348365.52512956-3.5875323 1.57504751-.8526958 1.0502591-1.278873 2.5321549-1.278873 4.4453463 0 1.9756336.421059 3.4783436 1.2635183 4.5077886.8421182 1.0291038 2.0431942 1.543997 3.602887 1.543997 1.5596929 0 2.7553095-.5148932 3.5871912-1.543997z"/><path d="m130.334156 12.6829538v9.8573542h-2.526696v-9.7324695c0-1.4767777-.254546-2.5478509-.764321-3.21321974-.509434-.66536885-1.336197-.99805327-2.479949-.99805327-1.330738 0-2.370761.44699138-3.119386 1.34131535-.748625.89432396-1.122938 2.11075466-1.122938 3.64963346v8.9527937h-2.526695v-9.7324695c0-1.4559636-.260006-2.5215774-.780017-3.19752386-.520012-.67594651-1.351552-1.01374915-2.495645-1.01374915-1.330738 0-2.375879.44699138-3.135082 1.34131535-.758861.89432396-1.138292 2.11075466-1.138292 3.64963346v8.9527937h-2.527037v-11.2925036c0-1.62179388-.082915-3.08799385-.249428-4.39825865h2.402152l.249428 2.74507301c.436755-.99805327 1.086428-1.76749263 1.949701-2.30831808.862933-.54082544 1.866445-.81106756 3.010197-.81106756 1.247823 0 2.26669.24942801 3.056944.74862526.790253.49919724 1.372707 1.26863659 1.747019 2.30831807.478383-.93561096 1.180262-1.679118 2.105637-2.23017989.925374-.55106189 1.970515-.82676344 3.135081-.82676344 3.472884 0 5.209327 2.0691265 5.209327 6.20772068z"/><path d="m148.926608 6.84954575-7.330999 17.12591165c-.76944 1.7883067-1.736784 3.0985715-2.90135 3.9304532s-2.599374 1.4037577-4.304766 1.715628l-.530247-1.9653972c1.476436-.3326844 2.594256-.7745576 3.353459-1.3256195.758861-.5510619 1.388061-1.3986394 1.887259-2.5423914l.62374-1.4037577-6.644475-15.53482705h2.65158l5.30316 12.94568925 5.364238-12.94568925z"/></g><g fill="#f2f2f2" fill-rule="nonzero" transform="translate(1242.021555 73.436333)"><path d="m.1061178 18.7869453 1.3955685-17.74521654h3.91271003l-1.17104917 14.58010814h7.92539604l-.2490868 3.1651084z"/><path d="m14.0379178 18.7869453.9970296-12.63586623h3.763258l-.9970297 12.63586623zm1.2959338-18.56754419h4.0375946l-.2739955 3.53907983h-4.0375946z"/><path d="m20.1190478 17.4411941 1.2212078-2.6167762c.6981254.4817953 1.445727.8513309 2.243146 1.1089481.7977602.2576171 1.5951792.3862551 2.3925981.3862551.6977843 0 1.2130186-.0996347 1.5453618-.2989042.3323432-.1996106.4985148-.4654169.4985148-.7977601 0-.3487216-.1951748-.6230583-.5858658-.8223277-.3903497-.1996106-1.0260328-.4319779-1.906367-.6977842-.9141144-.2494281-1.661716-.4985149-2.243146-.7479429-.5817713-.2490868-1.0843807-.6189636-1.5078282-1.108948-.4237888-.4903257-.6356832-1.1256676-.6356832-1.9067083 0-.8141385.2286139-1.52864228.6855005-2.14317012.4568867-.61486905 1.1048535-1.09666434 1.9439007-1.44572707.8390472-.34872152 1.7985432-.5234235 2.878488-.5234235.9472123 0 1.8736104.14126293 2.7791945.42378878.9052428.28252585 1.6654694.66468641 2.2803385 1.1464817l-1.1962991 2.51714153c-.6148691-.44869746-1.262836-.78922982-1.9439007-1.02193831-.6814059-.23236727-1.3460923-.34872152-1.9940592-.34872152-.6810648 0-1.1962991.09963472-1.5450206.29890416-.3490627.19961066-.5234235.47360613-.5234235.82266887 0 .36544108.2074586.65615608.6230582.87214498.4152584.215989 1.046847.4405083 1.8940833.6728756.9137732.2661475 1.6572803.5234235 2.2305211.7728515.5732409.2490868 1.0717557.6189636 1.4955445 1.1089481.4237887.4903256.6353419 1.1256676.6353419 1.9067082 0 1.2461165-.494079 2.222332-1.4829195 2.9283054-.9884992.7063146-2.3219667 1.0594719-4.000061 1.0594719-2.1598896 0-4.087412-.5152343-5.7822259-1.5453618z"/><path d="m38.3876878 13.8772056c-.0498173.6977843.0914456 1.2130186.4237888 1.5453618.3323432.332002.7892298.4981736 1.3706598.4981736.3821606 0 .8059494-.0661957 1.2710251-.1992694l-.2490868 2.9160216c-.5650517.2327085-1.2959338.3490627-2.1933287.3490627-1.4286663 0-2.5212361-.3821605-3.2773681-1.1464817-.7557907-.7643211-1.1338567-1.8442659-1.1338567-3.2401757 0-.2825258.0081891-.4985148.0249087-.6479668l.3988801-4.98446573h-2.3925982l.2241782-2.8163869h2.3925981l.2241781-2.96583898 3.8632339-1.22120774-.3241541 4.18704672h3.215267l-.2245193 2.8163869h-3.2149258z"/><path d="m42.4003738 17.4411941 1.2212077-2.6167762c.6977843.4817953 1.4457271.8513309 2.2431461 1.1089481.7974189.2576171 1.5951791.3862551 2.3925981.3862551.6977842 0 1.2130186-.0996347 1.5453618-.2989042.332002-.1996106.4981736-.4654169.4981736-.7977601 0-.3487216-.1951749-.6230583-.5855246-.8223277-.3903497-.1996106-1.0260329-.4319779-1.9067083-.6977842-.9137732-.2494281-1.6613748-.4985149-2.243146-.7479429-.58143-.2490868-1.0840394-.6189636-1.5078282-1.108948-.4234475-.4903257-.6353419-1.1256676-.6353419-1.9067083 0-.8141385.2282727-1.52864228.6851593-2.14317012.4572278-.61486905 1.1051947-1.09666434 1.9442419-1.44572707.8390472-.34872152 1.7985432-.5234235 2.878488-.5234235.9472122 0 1.8732692.14126293 2.7788532.42378878.9055841.28252585 1.6658107.66468641 2.2806797 1.1464817l-1.196299 2.51714153c-.6148691-.44869746-1.262836-.78922982-1.9442419-1.02193831-.6810648-.23236727-1.3457512-.34872152-1.9937181-.34872152-.6814059 0-1.196299.09963472-1.5453618.29890416-.3487215.19961066-.5234235.47360613-.5234235.82266887 0 .36544108.2077999.65615608.6233995.87214498.4152584.215989 1.0465057.4405083 1.8940833.6728756.9137732.2661475 1.6572802.5234235 2.2305211.7728515.5732408.2490868 1.0717556.6189636 1.4955444 1.1089481.4234476.4903256.635342 1.1256676.635342 1.9067082 0 1.2461165-.4944203 2.222332-1.4829195 2.9283054-.9884993.7063146-2.3219667 1.0594719-4.000061 1.0594719-2.1598897 0-4.087412-.5152343-5.7822259-1.5453618z"/><path d="m67.62263 18.7869453v-16.0005853h-6.1811059v-1.74463124h14.430656v1.74463124h-6.181106v16.0005853z"/><path d="m86.688689 12.4567284h-9.1967623c.0167195 1.594838.3865964 2.7996674 1.1092893 3.6138059s1.7736345 1.2212077 3.1528247 1.2212077c1.4621054 0 2.8078565-.4903256 4.0372534-1.4706357l.6732168 1.4706357c-.5483322.5148932-1.2505522.9219624-2.1059777 1.2212078-.8557667.2989041-1.7323475.4486974-2.6294012.4486974-1.9606202 0-3.4977928-.5776766-4.6108355-1.7323475-1.1133839-1.1546708-1.6699052-2.737225-1.6699052-4.7476626 0-1.2795555.2490868-2.4134122.7476016-3.40225268.4985148-.98849926 1.1962991-1.75691497 2.093694-2.30524714.8970537-.54833217 1.918992-.82232765 3.0654737-.82232765 1.6613748 0 2.965839.54389638 3.9130512 1.63237157.9468711 1.08813397 1.4204772 2.587773 1.4204772 4.4985758zm-7.8632949-3.98777725c-.656156.63124737-1.0758502 1.52011191-1.2584001 2.66659365h7.3023377c-.0996347-1.17957958-.4446028-2.07697448-1.034222-2.69150233-.5899604-.61486905-1.4081934-.92230358-2.4550404-.92230358s-1.8981779.31562368-2.5546752.94721226z"/><path d="m96.7326876 6.10126171-.0498173 1.84426595c-.3821606-.13307377-.8226689-.19926944-1.3208425-.19926944-1.2130186 0-2.114508.37772478-2.7041272 1.13385676-.5899604.75613198-.88477 1.67399982-.88477 2.75394462v7.1528857h-2.0189679v-9.02206036c0-1.29593379-.0665369-2.46732417-.1992694-3.51417115h1.918992l.1992694 2.31787208c.3159649-.84723633.8226689-1.49554443 1.5204531-1.94390067.6977843-.44869745 1.4955445-.67287557 2.3925981-.67287557.4152584 0 .797419.04981736 1.1464817.14945208z"/><path d="m116.845594 10.9113666v7.8755787h-2.018627v-7.7759439c0-1.17957958-.203705-2.03534628-.610775-2.56695893-.407069-.53161264-1.067661-.79776018-1.981434-.79776018-1.063225 0-1.894083.35725189-2.492233 1.07175566-.598149.71450378-.897395 1.68662475-.897395 2.91602165v7.1528857h-2.018626v-7.7759439c0-1.16320127-.2078-2.01453218-.623059-2.55467519-.415258-.53980181-1.079944-.81004392-1.993718-.81004392-1.063566 0-1.898519.35725189-2.504857 1.07175566-.606339.71450378-.909679 1.68662475-.909679 2.91602165v7.1528857h-2.018968v-9.02206036c0-1.29593379-.0661956-2.46732417-.1992694-3.51417115h1.9189924l.19961 2.19332868c.348722-.79776018.868051-1.41228802 1.557646-1.84426595s1.491108-.64796689 2.404882-.64796689c.997029 0 1.811168.19926944 2.442415.59814953.631589.39853888 1.096664 1.01340793 1.39591 1.84426595.38216-.74794282.942776-1.34165656 1.682189-1.78216486.739412-.44016708 1.574365-.66025062 2.504858-.66025062 2.774758 0 4.162138 1.65318567 4.162138 4.95955697z"/><path d="m119.911067 17.3415594.672876-1.4955444c.681406.5316126 1.371001.9137732 2.068785 1.1464817s1.478825.3490627 2.342781.3490627c.946871 0 1.665469-.162077 2.155795-.4862311.489984-.3238128.735318-.7933244.735318-1.4078522 0-.4985148-.166172-.8973949-.498515-1.1962991-.332343-.2992453-.880675-.5319538-1.644996-.6981254l-2.118603-.4981736c-1.046506-.2327085-1.85655-.6483081-2.429791-1.2464577-.573241-.5981495-.859861-1.3123121-.859861-2.14317008 0-1.09666435.440167-1.98962346 1.320843-2.67921855.880675-.6895951 2.043876-1.03422204 3.489262-1.03422204.880675 0 1.711533.14092171 2.492233.42344756.781041.28252584 1.437197.68959509 1.96915 1.22120774l-.673216 1.47063576c-1.17958-.9803101-2.442416-1.47063576-3.788167-1.47063576-.897054 0-1.591085.17026618-2.081069.51113976-.489984.34053236-.735318.81823307-.735318 1.43310213 0 .51489308.153888.92196238.461323 1.22120778.307093.2989041.801513.5316126 1.482919.6977842l2.118261.5234235c1.163202.2658063 2.027158.6769702 2.592209 1.2334915.564711.5568625.847237 1.28365.847237 2.1807037 0 1.0802861-.440168 1.9442419-1.320843 2.5922088s-2.076974.9721209-3.588897.9721209c-2.110414 0-3.779978-.540143-5.009716-1.6200878z"/><path d="m146.77832 17.0672227h3.91271v1.7197226h-9.894546v-1.7197226h3.913051v-13.48310252l-3.638715 2.31753087v-1.96880935l4.53611-2.89111294h1.17139z"/><path d="m156.722343 16.2199864v1.8193573c0 .6977842-.116013 1.3375619-.348722 1.918992-.232708.5817712-.623058 1.1464817-1.17139 1.6948138l-.947212-.7226929c.647967-.7476016 1.013749-1.4621054 1.096664-2.1435113h-1.196299v-2.5669589z"/><path d="m171.801648 17.0672227v1.7197226h-11.415341v-1.5450206l6.204991-6.8788902c.832564-.93049277 1.436515-1.76953995 1.818675-2.51714156.382161-.74794282.573241-1.49554443.573241-2.24314604 0-.9803101-.279796-1.73200629-.846213-2.25542978-.563004-.5234235-1.371683-.78513524-2.4158-.78513524-1.696179 0-3.374274.68106472-5.03599 2.04353539l-.77251-1.56992926c.697784-.66468642 1.57846-1.19629906 2.641685-1.59517916 1.063567-.39888009 2.136346-.59814953 3.214585-.59814953 1.627594 0 2.917386.41935298 3.862551 1.25874137.948577.83904718 1.422866 1.97290393 1.422866 3.40191149 0 1.01340793-.228614 1.98962345-.685842 2.92830535-.457228.93868189-1.218137 1.98962347-2.279315 3.15282467l-5.061239 5.4829805z"/><path d="m177.435104 16.2199864v1.8193573c0 .6977842-.119425 1.3375619-.351451 1.918992-.232026.5817712-.621011 1.1464817-1.170367 1.6948138l-.948577-.7226929c.648308-.7476016 1.01682-1.4621054 1.098712-2.1435113h-1.197664v-2.5669589z"/><path d="m191.339607 11.2102708c.549356.7312233.822328 1.6535269.822328 2.7665695 0 1.5453618-.522059 2.762475-1.569588 3.6513395-1.04753.8888646-2.466983 1.3334674-4.261773 1.3334674-1.146482 0-2.245193-.1910802-3.302959-.5732408-1.054354-.3821606-1.948337-.9223036-2.678536-1.6200878l.798442-1.5702705c1.644656 1.3624706 3.354142 2.0438766 5.131871 2.0438766 1.265907 0 2.22472-.2825259 2.879853-.8475776.658544-.5647104.98611-1.3955685.98611-2.4922328 0-2.1766092-1.364859-3.2650844-4.087753-3.2650844h-2.043876v-1.71938129h1.644655c1.313677 0 2.316848-.29105622 3.016339-.87248623.696078-.58143001 1.047529-1.41228803 1.047529-2.49223284 0-.96359058-.290033-1.70300303-.859861-2.21823737-.573241-.51489312-1.385332-.77251029-2.432862-.77251029-1.692425 0-3.371202.68106472-5.032918 2.04353539l-.771145-1.56992926c.713139-.68140594 1.590061-1.21711317 2.627354-1.6078041 1.037293-.39034973 2.122356-.58552459 3.251777-.58552459 1.596885 0 2.873028.40706925 3.82843 1.22120775.955401.81413849 1.433102 1.91080284 1.433102 3.28999303 0 1.01340793-.252499 1.90227247-.750673 2.6665936-.498174.76432114-1.187427 1.31265331-2.067762 1.64499652 1.04753.29890416 1.845972.81413848 2.391916 1.54502058z"/></g><g transform="translate(1238.737766 301.42884)"><path d="m.162355.124952h196.432387v68.608179h-196.432387z" fill="#0083c0"/><path d="m196.594742 68.7331309h-196.43238687v-68.60817855h196.43238687zm-193.8939261-66.06958614v63.53099374h191.3558681v-63.53099374z" fill="#000"/></g><g fill="#f2f2f2" fill-rule="nonzero" transform="translate(1249.006069 345.842567)"><path d="m.56874621 14.4291604 1.02879531-13.08192845h2.88430112l-.8634532 10.74723665h5.84208763l-.18371345 2.3346918z"/><path d="m10.8383279 14.4291604.7348538-9.31580278h2.7740731l-.7348538 9.31580278zm.95531-13.68665188h2.9761578l-.2020848 2.6102619h-2.9761578z"/><path d="m15.320936 13.4340458.9001959-1.9289912c.5143977.3597722 1.065538.6276877 1.6534211.8190558.587883.1913682 1.175766.2832249 1.7636491.2832249.5143976 0 .8940721-.0688925 1.1390233-.2143323.2449513-.1530946.3674269-.3444627.3674269-.589414 0-.2602607-.1439088-.4592836-.4317266-.6047234-.2878177-.1530946-.756287-.3214986-1.4054078-.5205215-.673616-.1837134-1.2247564-.3674269-1.6534211-.5511403-.4286647-.18371346-.7991535-.4516289-1.1114663-.81140107-.3123129-.36742689-.4684693-.83436524-.4684693-1.40846976 0-.59706871.168404-1.12524487.505212-1.57687376.3368079-.45928362.8144629-.81140106 1.4329648-1.07166178.618502-.25260599 1.3257988-.38273635 2.1218904-.38273635.6981111 0 1.3809127.10716618 2.0484049.31384381s1.2278182.48990253 1.6809781.84201997l-.8818246 1.86009865c-.4531598-.33680798-.9308148-.58175925-1.4329649-.75781797-.5021501-.16840399-.9920526-.25260599-1.4697076-.25260599-.5021501 0-.8818245.06889254-1.1390233.21433236-.2571989.15309454-.3857983.35211744-.3857983.61237816 0 .26791544.1530946.4822478.4592836.64299706.3061891.15309454.7715965.32149853 1.3962222.48990253.673616.1990229 1.2216945.39039107 1.6442354.57410452s.7899678.45162889 1.1022807.81905582c.3123128.3597721.4684693.8267105.4684693 1.400815 0 .9185672-.364365 1.6381116-1.093095 2.158633-.7287301.5205214-1.711597.7807822-2.9486009.7807822-1.5921832 0-3.0129005-.3750817-4.262152-1.1405544z"/><path d="m28.7871317 10.8084745c-.0367426.5128667.0673616.895603.3123129 1.1405543s.5817593.3674269 1.010424.3674269c.2816939 0 .5940068-.0459284.9369385-.1454398l-.1837134 2.1509783c-.4164171.168404-.9553099.252606-1.6166783.252606-1.0532905 0-1.8585677-.2832249-2.4158319-.84202-.5572641-.5664498-.8358962-1.3625414-.8358962-2.3882748 0-.2066776.0061238-.3674269.0183714-.4822478l.2939415-3.67426897h-1.7636491l.1653421-2.07443101h1.7636491l.1653421-2.18159719 2.8475584-.90325778-.2388274 3.08485497h2.3699034l-.1653421 2.07443101h-2.3699034z"/><path d="m31.7449182 13.4340458.9001959-1.9289912c.5143977.3597722 1.065538.6276877 1.6534211.8190558.587883.1913682 1.175766.2832249 1.7636491.2832249.5143976 0 .8940721-.0688925 1.1390233-.2143323.2449513-.1530946.3674269-.3444627.3674269-.589414 0-.2602607-.1439088-.4592836-.4317266-.6047234-.2878177-.1530946-.756287-.3214986-1.4054078-.5205215-.673616-.1837134-1.2247564-.3674269-1.6534211-.5511403-.4286647-.18371346-.7991535-.4516289-1.1114663-.81140107-.3123129-.36742689-.4684693-.83436524-.4684693-1.40846976 0-.59706871.168404-1.12524487.505212-1.57687376.3368079-.45928362.8144629-.81140106 1.4329649-1.07166178.6185019-.25260599 1.3257987-.38273635 2.1218903-.38273635.6981111 0 1.3809127.10716618 2.0484049.31384381s1.2278182.48990253 1.6809781.84201997l-.8818246 1.86009865c-.4531598-.33680798-.9308148-.58175925-1.4329649-.75781797-.5021501-.16840399-.9920526-.25260599-1.4697076-.25260599-.5021501 0-.8818245.06889254-1.1390233.21433236-.2571989.15309454-.3857983.35211744-.3857983.61237816 0 .26791544.1530946.4822478.4592836.64299706.3061891.15309454.7715965.32149853 1.3962222.48990253.673616.1990229 1.2216945.39039107 1.6442354.57410452s.7899678.45162889 1.1022807.81905582c.3123128.3597721.4684693.8267105.4684693 1.400815 0 .9185672-.364365 1.6381116-1.093095 2.158633-.7287301.5205214-1.711597.7807822-2.9486009.7807822-1.5921832 0-3.0129005-.3750817-4.262152-1.1405544z"/><path d="m52.3208244 13.1584757h2.8843011v1.2706847h-7.2934239v-1.2706847h2.8843011v-9.93583564l-2.6822163 1.70700411v-1.4467434l3.3435848-2.13566882h.8634532z"/><path d="m59.6509909 12.5384428v1.3395772c0 .5128667-.0857329.9874598-.2571988 1.4161245s-.4592836.84202-.8634532 1.2477205l-.6981111-.5358309c.4776549-.5511403.7471013-1.0716618.8083392-1.5768737h-.8818246v-1.8907176z"/><path d="m70.7656545 13.1584757v1.2706847h-8.4140759v-1.1405544l4.5744648-5.06742923c.6123782-.68892542 1.0594142-1.30895831 1.3411082-1.86009865.2816939-.55114034.4225409-1.10228069.4225409-1.65342103 0-.71954434-.2082085-1.27068468-.6246257-1.66107575-.4164171-.38273635-1.010424-.57410453-1.7820204-.57410453-1.2492515 0-2.4862554.49755726-3.7110117 1.50032649l-.5695117-1.15586377c.5143977-.48990253 1.1635185-.8802936 1.9473626-1.17117323.783844-.29853435 1.5738118-.44397416 2.3699035-.44397416 1.2002611 0 2.1494473.30618907 2.8475584.92622196.6981111.62003288 1.0471666 1.45439813 1.0471666 2.51075045 0 .74250851-.168404 1.46205285-.5052119 2.15863301-.336808.68892542-.897134 1.46205285-1.6809781 2.31938227l-3.729383 4.04169587z"/><path d="m74.9175784 12.5384428v1.3395772c0 .5128667-.0857329.9874598-.2571988 1.4161245s-.4592837.84202-.8634532 1.2477205l-.6981111-.5358309c.4776549-.5511403.7471013-1.0716618.8083391-1.5768737h-.8818245v-1.8907176z"/><path d="m85.1687888 8.84120966c.4041695.54348561.6062543 1.22475634.6062543 2.04381214 0 1.1405543-.3857982 2.0361573-1.1573947 2.6868091-.7715965.6583065-1.8187631.9874598-3.1414999.9874598-.8450819 0-1.6564829-.1454398-2.4342032-.42101-.7777203-.2832249-1.4360268-.6812707-1.9749196-1.1941374l.5878831-1.1635185c1.2125087 1.010424 2.4740077 1.5079812 3.784497 1.5079812.9308148 0 1.6381116-.2066776 2.1218903-.6200329.4837787-.4210099.7256681-1.0333881.7256681-1.8371344 0-1.60749269-1.0043002-2.41123903-3.0129005-2.41123903h-1.5064503v-1.26302995h1.2125088c.9675574 0 1.708535-.21433235 2.2229327-.64299706.5143976-.42866471.7715965-1.04104287.7715965-1.83713448 0-.71188961-.2112705-1.25537522-.6338114-1.63811157-.422541-.38273635-1.0196097-.5664498-1.7912062-.5664498-1.2492514 0-2.4862553.49755726-3.7110116 1.50032649l-.5695117-1.15586377c.5266452-.49755726 1.1727042-.89560306 1.9381769-1.18648268.7654727-.2832249 1.5646262-.42866471 2.3974605-.42866471 1.175766 0 2.1157665.29853435 2.8200014.90325778.7042349.5970687 1.0563523 1.40846976 1.0563523 2.41889372 0 .75016325-.1837134 1.40846977-.5511403 1.96726484-.3674269.56644979-.8757008.97215032-1.5248216 1.21710159.7715964.21433235 1.3594795.5970687 1.7636491 1.13289959z"/><path d="m90.1841659 12.5384428v1.3395772c0 .5128667-.085733.9874598-.2571988 1.4161245-.1714659.4286647-.4592837.84202-.8634533 1.2477205l-.6981111-.5358309c.477655-.5511403.7471014-1.0716618.8083392-1.5768737h-.8818245v-1.8907176z"/><path d="m101.776484 10.3338814v1.2477205h-1.9841048v2.8475585h-1.5064503v-2.8475585h-6.0258011v-1.1405543l6.3013713-9.09381565h1.2308801v8.98664945zm-7.9547919 0h4.4642368v-6.42997064z"/><path d="m105.450753 12.5384428v1.3395772c0 .5128667-.085733.9874598-.257198 1.4161245-.171466.4286647-.459284.84202-.863454 1.2477205l-.698111-.5358309c.477655-.5511403.747102-1.0716618.808339-1.5768737h-.881824v-1.8907176z"/><path d="m114.847696 6.74381447c.618502.34446271 1.093095.83436524 1.423779 1.45439812.330685.62768761.496027 1.34723195.496027 2.17394251 0 .8190557-.180652 1.5462548-.541955 2.1815971-.361303.6353424-.875701 1.1328996-1.543193 1.4773623-.667492.3521175-1.448274.5281762-2.342346.5281762-.796092 0-1.579936-.1454398-2.351532-.4363194-.771597-.2832249-1.420718-.6812707-1.947363-1.178828l.569512-1.1635185c1.212508 1.010424 2.455636 1.5079812 3.729383 1.5079812.918567 0 1.638111-.2602607 2.158633-.7807821.520521-.5205215.780782-1.2247563.780782-2.1203594 0-.87263887-.257199-1.56921902-.771597-2.10504991-.514397-.52817616-1.200261-.79609161-2.05759-.79609161-1.249252 0-2.247428.50521198-2.994529 1.52329067h-1.047167v-7.6623817h7.844564v1.2477205h-6.338114v4.66938345c.722606-.69658015 1.647297-1.04869759 2.774073-1.04869759.820587 0 1.540131.17605872 2.158633.52817616z"/><path d="m120.717341 12.5384428v1.3395772c0 .5128667-.085733.9874598-.257199 1.4161245s-.459284.84202-.863453 1.2477205l-.698111-.5358309c.477655-.5511403.747101-1.0716618.808339-1.5768737h-.881825v-1.8907176z"/><path d="m130.077541 6.74381447c.618502.34446271 1.099219.83436524 1.442151 1.46970758.342931.62768761.514397 1.34723194.514397 2.15863305 0 .8037463-.180651 1.5309453-.541954 2.1662877-.361304.6353423-.860392 1.1328996-1.497265 1.4926717-.636873.3674269-1.35948.5434857-2.167819.5434857-1.579935 0-2.798568-.5511404-3.655897-1.6534211-.85733-1.1022806-1.285994-2.6714997-1.285994-4.70000233 0-1.46970758.199022-2.73273753.597068-3.78908985.398046-1.0486976.973681-1.85244393 1.726907-2.40358427.753225-.55114034 1.656483-.82671051 2.709773-.82671051.759349 0 1.497265.13778508 2.213747.42100998s1.34417.6812707 1.883063 1.19413741l-.569512 1.15586377c-.612378-.51286671-1.200261-.88794833-1.763649-1.13289959s-1.139023-.3674269-1.726906-.3674269c-1.126776 0-2.002477.49755726-2.627103 1.50032649-.624625 1.01042396-.936938 2.41889373-.936938 4.22540929v.27557017c.281694-.69658015.740977-1.24772049 1.377851-1.65342102.636873-.39804581 1.365603-.60472343 2.18619-.60472343.796091 0 1.503388.17605872 2.12189.52817616zm-.303127 5.76400943c.514397-.5281762.771596-1.2400658.771596-2.1203594 0-.87263887-.26026-1.56921902-.780782-2.10504991-.520521-.52817616-1.197199-.79609161-2.030033-.79609161-.85733 0-1.555441.26791545-2.094334.80374634-.538893.54348561-.808339 1.24006577-.808339 2.09739518 0 .8726389.269446 1.5768738.808339 2.1127047.538893.5358308 1.243128.811401 2.112705.811401.832834 0 1.50645-.2679154 2.020848-.8037463z"/><path d="m135.983928 12.5384428v1.3395772c0 .5128667-.085733.9874598-.257199 1.4161245-.171465.4286647-.459283.84202-.863453 1.2477205l-.698111-.5358309c.477655-.5511403.747102-1.0716618.808339-1.5768737h-.881824v-1.8907176z"/><path d="m138.353832 1.34723195h8.634532v1.12524486l-6.136029 11.95668359h-1.616679l6.099287-11.81124377h-6.981111z"/><path d="m151.250516 12.5384428v1.3395772c0 .5128667-.085733.9874598-.257199 1.4161245s-.459284.84202-.863453 1.2477205l-.698111-.5358309c.477655-.5511403.747101-1.0716618.808339-1.5768737h-.881825v-1.8907176z"/><path d="m161.915081 8.9101022c.471532.5664498.707297 1.2477205.707297 2.0438121 0 1.1175901-.422541 1.9978837-1.267623 2.6408808-.845081.6429971-1.984105.9644956-3.41707.9644956s-2.571988-.3214985-3.41707-.9644956-1.267623-1.5232907-1.267623-2.6408808c0-.7960916.24189-1.4773623.725669-2.05146683.483778-.58175925 1.148209-.97980505 1.99329-1.1941374-.783844-.23729654-1.383974-.62003289-1.800391-1.14820905-.416418-.53583089-.624626-1.1635185-.624626-1.88306284 0-.70423488.183713-1.30895831.55114-1.82947974.367427-.52052144.884887-.92622197 1.552379-1.21710159.667492-.2832249 1.429903-.42866471 2.287232-.42866471.85733 0 1.619741.14543981 2.287233.42866471.667492.29087962 1.184951.69658015 1.552378 1.21710159.367427.52052143.551141 1.12524486.551141 1.82947974 0 .71954434-.211271 1.34723195-.633812 1.88306284-.422541.52817616-1.013486.91091251-1.772834 1.14820905.857329.2296418 1.521759.62768761 1.99329 1.20179213zm-6.080915-2.42654845c.520522.43631944 1.221695.70423488 2.103519.7960916.881825-.09185672 1.582998-.35977216 2.103519-.7960916.520522-.43631944.780782-1.00276923.780782-1.69934939 0-.71954434-.254137-1.29364886-.76241-1.70700412-.508274-.42100998-1.215571-.62768761-2.121891-.62768761-.906319 0-1.613616.20667763-2.12189.62768761-.508274.41335526-.762411.98745978-.762411 1.70700412 0 .69658016.260261 1.26302995.780782 1.69934939zm4.473423 6.20032885c.55114-.4133553.82671-1.0257334.82671-1.821825 0-.7195444-.290879-1.30130361-.872639-1.72996832-.581759-.43631943-1.356417-.70423488-2.323975-.80374633-.967557.09951145-1.742216.3674269-2.323975.80374633-.581759.42866471-.872639 1.01042392-.872639 1.72996832 0 .7960916.27557 1.4084697.826711 1.821825.55114.4133553 1.341108.6276876 2.369903.6276876 1.028796 0 1.818763-.2143323 2.369904-.6276876z"/><path d="m166.517103 12.5384428v1.3395772c0 .5128667-.085733.9874598-.257199 1.4161245-.171465.4286647-.459283.84202-.863453 1.2477205l-.698111-.5358309c.477655-.5511403.747102-1.0716618.808339-1.5768737h-.881824v-1.8907176z"/><path d="m176.456001 2.85521316c.857329 1.10228069 1.285994 2.67149972 1.285994 4.70000237 0 2.21987082-.443974 3.94218437-1.331923 5.17459547-.887948 1.232411-2.128014 1.8447892-3.720197 1.8447892-.747101 0-1.478893-.1377851-2.195376-.42101-.716482-.2832249-1.350293-.6812707-1.901434-1.1941374l.587883-1.1558638c.624626.5281762 1.218633.9109125 1.782021 1.148209.563388.2372966 1.132899.3597722 1.708535.3597722 1.126776 0 1.999414-.505212 2.617916-1.5079812s.927753-2.411239.927753-4.22540929v-.23729654c-.281694.6812707-.740977 1.22475632-1.377851 1.62280212-.636873.3980458-1.365603.5970687-2.18619.5970687-.796091 0-1.500326-.17605872-2.112704-.52052143-.612378-.35211744-1.090033-.84201997-1.432965-1.46970758-.342932-.63534234-.514398-1.35488667-.514398-2.15863301 0-.81140106.180652-1.53094539.541955-2.17394246.361303-.63534234.860391-1.13289959 1.497265-1.49267176.636873-.35977217 1.359479-.54348561 2.167818-.54348561 1.579936 0 2.798568.55114034 3.655898 1.65342102zm-1.469708 4.63110982c.538893-.54348561.808339-1.24006577.808339-2.09739519 0-.86498415-.269446-1.56921903-.808339-2.11270464-.538893-.53583089-1.243127-.80374634-2.112704-.80374634-.832835 0-1.506451.26026072-2.020848.79609161-.514398.53583089-.771597 1.24006577-.771597 2.12035937 0 .87263888.257199 1.56921903.771597 2.10504992.514397.53583089 1.194137.79609161 2.039219.79609161.857329 0 1.55544-.26791545 2.094333-.80374634z"/></g><g fill="#f2f2f2" fill-rule="nonzero" transform="translate(1307.966463 315.478416)"><path d="m15.7309762 20.418335h-2.3788531l-2.4066219-6.4812177c-.2915715-.8025158-.6979203-1.3403033-1.21719525-1.6133623-.51927495-.2739846-1.2532946-.4100513-2.20205898-.4100513h-4.86785547v8.5046313h-2.21501771v-19.47142187h7.74006606c2.09653785 0 3.70527205.46466314 4.82620245 1.39491504 1.121856.92932627 1.6818584 2.26962951 1.6818584 4.01998408 0 1.2764352-.332299 2.34738191-.9978225 3.21284015-.6655235.8663839-1.6272466 1.4819237-2.8851693 1.8466194.5655561.0907112 1.0487317.332299 1.4495268.7247635.4007951.3915388.7386478.9524668 1.0117068 1.6818584zm-7.73914047-10.3651351c2.98976477 0 4.48464727-1.22089777 4.48464727-3.66454456 0-1.20331091-.3646958-2.10116598-1.0940874-2.6935652-.7284659-.59239922-1.85957813-.88859883-3.39055987-.88859883h-5.33344423v7.24670859z"/><path d="m18.2745903 18.1755486.8478714-1.7225859c.9663512.8201027 1.9502893 1.4041713 2.9536655 1.7503546 1.0024506.3461833 2.1696621.5192749 3.5007091.5192749 1.5680067 0 2.7759458-.3054558 3.6228915-.9154419.8478714-.6109117 1.2718071-1.4726674 1.2718071-2.5843416 0-.6571929-.2045629-1.1903522-.6146142-1.6004035-.410977-.4100513-.9487644-.7340197-1.6142879-.9709794-.6655235-.2369596-1.5541223-.4831756-2.6657965-.7377221-1.495808-.3285964-2.725962-.684036-3.6923132-1.0672442-.9663513-.3822826-1.7503546-.93395442-2.3520101-1.65408972-.6016554-.72013531-.9024831-1.66427156-.9024831-2.83055753 0-1.11259978.2915714-2.09190974.8747144-2.93978113.5840686-.84787138 1.4087994-1.50876676 2.475118-1.98268614 1.0672442-.474845 2.3112826-.71180469 3.7330407-.71180469 1.3495595 0 2.6074822.2101166 3.7746938.62942417 1.166286.41930758 2.1511497 1.03021927 2.9536655 1.83180947l-.8756401 1.72351148c-.9117394-.78400334-1.8364376-1.35881571-2.7759457-1.72351148-.9385825-.36377015-1.9641737-.54611803-3.0767735-.54611803-1.5133948 0-2.6981933.3230427-3.5553209.97005372-.856202.64793665-1.2847658 1.53653548-1.2847658 2.66672212 0 .9848637.373952 1.72258585 1.1209304 2.21501771.747904.49243185 1.8966031.92099566 3.4460973 1.28569143 1.6772303.40079512 2.994393.77011902 3.9514879 1.10797162.957095.3369271 1.7549827.8469458 2.3927375 1.5309818.6386804.684036.9580206 1.5911473.9580206 2.7213339 0 1.0940873-.2924971 2.0558104-.8756401 2.8851693-.5831429.8293589-1.41713 1.4726675-2.501961 1.9280744-1.0848311.4554069-2.3566382.6840359-3.8154213.6840359-3.0443766 0-5.4695109-.8210283-7.2744773-2.4621592z"/><path d="m35.3125473 18.1755486.8478714-1.7225859c.9663512.8201027 1.9502893 1.4041713 2.9536654 1.7503546 1.0024506.3461833 2.1696622.5192749 3.5007092.5192749 1.5680067 0 2.7750201-.3054558 3.6228915-.9154419.8478714-.6109117 1.271807-1.4726674 1.271807-2.5843416 0-.6571929-.2045628-1.1903522-.6155398-1.6004035-.4100513-.4100513-.9478387-.7340197-1.6133622-.9709794-.6655235-.2369596-1.5541223-.4831756-2.6657965-.7377221-1.495808-.3285964-2.725962-.684036-3.6923133-1.0672442-.9663512-.3822826-1.7503545-.93395442-2.35201-1.65408972-.6016555-.72013531-.9024832-1.66427156-.9024832-2.83055753 0-1.11259978.2915715-2.09190974.8747145-2.93978113.5840686-.84787138 1.4087994-1.50876676 2.475118-1.98268614 1.0672442-.474845 2.3112826-.71180469 3.7330407-.71180469 1.3495595 0 2.6074822.2101166 3.7746938.62942417 1.1662859.41930758 2.1511496 1.03021927 2.9536655 1.83180947l-.8756401 1.72351148c-.9117395-.78400334-1.8364376-1.35881571-2.7759458-1.72351148-.9385825-.36377015-1.9641736-.54611803-3.0767734-.54611803-1.5133949 0-2.6981933.3230427-3.555321.97005372-.856202.64793665-1.2847658 1.53653548-1.2847658 2.66672212 0 .9848637.373952 1.72258585 1.1209304 2.21501771.747904.49243185 1.8966032.92099566 3.4460974 1.28569143 1.6772303.40079512 2.9943929.77011902 3.9514879 1.10797162.957095.3369271 1.7549827.8469458 2.3927375 1.5309818.6386804.684036.9580206 1.5911473.9580206 2.7213339 0 1.0940873-.2924971 2.0558104-.8756401 2.8851693s-1.41713 1.4726675-2.5019611 1.9280744-2.3566381.6840359-3.8154212.6840359c-3.0443766 0-5.469511-.8210283-7.2744773-2.4621592z"/></g><g transform="translate(1132.952069 387.954528)"><path d="m.039304.099422h47.553665v54.590201h-47.553665z" fill="#00a88a"/><path d="m47.5929694 54.6896229h-47.55366538v-54.59020073h47.55366538zm-45.01519163-52.05176699v49.51333329h42.47652283v-49.51333329z" fill="#000"/></g><path d="m23.6732656 32.2046798v3.383959h-22.46109685v-3.0406798l12.21155275-13.5355472c1.6346218-1.8308227 2.8280084-3.4819151 3.5798709-4.953277.7521514-1.4710729 1.1280827-2.9424349 1.1280827-4.4137968 0-1.92877865-.5559506-3.40823133-1.6675628-4.43806909-1.1116122-1.03012673-2.6971116-1.54504561-4.7570761-1.54504561-3.33483658 0-6.63673225 1.34046504-9.90626489 4.02168407l-1.52048438-3.08980225c1.37340598-1.30781306 3.10598377-2.35383234 5.19860024-3.13863575 2.09232752-.78480342 4.2011255-1.17691617 6.32639393-1.17691617 3.2039397 0 5.7377914.82554616 7.6015551 2.47663847 1.8634746 1.65109231 2.7953564 3.88240747 2.7953564 6.69394548 0 1.99437155-.4496149 3.91534845-1.3488447 5.76264155-.8989409 1.8470042-2.394864 3.9150595-4.4871916 6.2035878l-9.95538731 10.7893133z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(1144.791113 397.615433)"/><g transform="translate(1191.307406 387.954528)"><path d="m.039304.099422h47.553665v54.590201h-47.553665z" fill="#00a88a"/><path d="m47.5929694 54.6896229h-47.55366538v-54.59020073h47.55366538zm-45.0150941-52.05176699v49.51333329h42.4764253v-49.51333329z" fill="#000"/></g><path d="m21.6572224 20.6796856c1.0789602 1.4387099 1.6184403 3.2533511 1.6184403 5.4436346 0 3.0406798-1.0298378 5.4355438-3.0895133 7.184881-2.0599645 1.7490483-4.855321 2.6237169-8.3860695 2.6237169-2.25616532 0-4.42217651-.3762202-6.49803356-1.1280827-2.076146-.7518625-3.83357397-1.8146412-5.27199496-3.1877582l1.56931788-3.0895133c3.2365917 2.6809301 6.60408028 4.0213951 10.10246574 4.0213951 2.4847292 0 4.3730541-.5559506 5.6643967-1.6675628s1.9371583-2.746234 1.9371583-4.9041544c0-4.2829-2.68093-6.4243499-8.0427902-6.4243499h-4.02168406v-3.3839591h3.23688066c2.5829741 0 4.5608752-.5721321 5.9339922-1.7163963 1.3731171-1.1442642 2.0599645-2.779175 2.0599645-4.90415445 0-1.89641562-.5640413-3.35130707-1.692124-4.36467437-1.1277937-1.01365625-2.7216728-1.52048438-4.7816373-1.52048438-3.33483658 0-6.63673225 1.34046504-9.90626489 4.02168407l-1.52048437-3.08980225c1.40605796-1.34046504 3.13054499-2.39486403 5.17403901-3.16319698 2.04349402-.76833294 4.17685323-1.15235494 6.40007765-1.15235494 3.1386357 0 5.6479262.80098493 7.5278713 2.40295479 1.8799452 1.60196986 2.8199177 3.75989029 2.8199177 6.47347235 0 1.99437156-.4906466 3.74341986-1.4713619 5.24743376s-2.3376508 2.5829741-4.0705175 3.2368806c2.0596755.5883136 3.6292823 1.6019699 4.7079536 3.0403909z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(1203.470522 396.880376)"/><g transform="translate(1249.976943 388.127483)"><path d="m.039304.099422h47.553665v54.590201h-47.553665z" fill="#00a88a"/><path d="m47.5929694 54.6896229h-47.55366538v-54.59020073h47.55366538zm-45.01519163-52.05176699v49.51333329h42.47652283v-49.51333329z" fill="#000"/></g><path d="m25.5263379 24.074336v3.3348366h-5.2965562v7.601555h-4.0213951v-7.601555h-16.08558047v-3.0406798l16.82126147-24.27573805h3.2857141v23.98158125zm-21.23505825 0h11.91710695v-17.16454069z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(1260.680298 397.799392)"/><g transform="translate(1072.3219 388.127483)"><path d="m.039304.099422h47.553665v54.590201h-47.553665z" fill="#00a88a"/><path d="m47.5929694 54.6896229h-47.55366538v-54.59020073h47.55366538zm-45.0150941-52.05176699v49.51333329h42.4764253v-49.51333329z" fill="#000"/></g><path d="m12.0107286 31.6267686h7.6995109v3.383959h-19.46953948v-3.383959h7.69951097v-26.53161447l-7.16003086 4.56087523v-3.87431672l8.92554959-5.68895789h2.30499888z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(1086.781678 397.799392)"/><g transform="translate(1310.293872 388.430153)"><path d="m.039304.099422h47.553665v54.590201h-47.553665z" fill="#00a88a"/><path d="m47.5929694 54.6896229h-47.55366538v-54.59020073h47.55366538zm-45.01519163-52.05176699v49.51333329h42.47652283v-49.51333329z" fill="#000"/></g><path d="m18.2209624 14.4865002c1.6510923.9318818 2.9181626 2.2316041 3.8009219 3.8988779.8827594 1.6675628 1.3239946 3.5963414 1.3239946 5.7869138 0 2.1905725-.4822669 4.1358216-1.4468007 5.8360363-.9642448 1.7002148-2.3376508 3.0161186-4.119351 3.9480004-1.7819892.9315929-3.866226 1.3976783-6.2529993 1.3976783-2.12497947 0-4.21730699-.384311-6.27727148-1.1526439-2.05967553-.768333-3.79254227-1.822732-5.19831128-3.163197l1.52019542-3.0895133c3.23688066 2.6809301 6.55524679 4.0213951 9.95538734 4.0213951 2.4523662 0 4.3730541-.6946492 5.7626416-2.0842367 1.3892985-1.3895875 2.0842368-3.2776234 2.0842368-5.6643967 0-2.3211804-.6865586-4.1930347-2.0596756-5.6152742-1.373406-1.4222395-3.2042286-2.1333592-5.492757-2.1333592-3.33483662 0-5.99958518 1.3569355-7.99395675 4.0705175h-2.79535649v-20.45054375h20.94090144v3.3348366h-16.91950633v12.45687605c1.9290676-1.8637637 4.39761531-2.7956455 7.40535413-2.7956455 2.1905725 0 4.1112603.4660854 5.7623527 1.3976783z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(1322.999783 398.270213)"/><g transform="translate(1374.317793 388.430153)"><path d="m.039304.099422h47.553665v54.590201h-47.553665z" fill="#00a88a"/><path d="m47.5929694 54.6896229h-47.55366538v-54.59020073h47.55366538zm-45.01519163-52.05176699v49.51333329h42.47652283v-49.51333329z" fill="#000"/></g><path d="m19.2788288 15.0644114c1.6510923.9318818 2.9343442 2.2396948 3.8497555 3.9234391.9154114 1.6837443 1.373117 3.6047212 1.373117 5.7623526 0 2.1579205-.4822669 4.0869881-1.4468007 5.7869139-.9642448 1.7002148-2.2966191 3.032589-3.9968339 3.9971228-1.6999258.9642449-3.6289934 1.4465118-5.7869138 1.4465118-4.21759597 0-7.47065814-1.471073-9.75918651-4.4137968-2.28881733-2.9424349-3.43308151-7.1273789-3.43308151-12.554543 0-3.9234392.53138935-7.2909278 1.5938791-10.10246581 1.06248975-2.81182696 2.59915564-4.95327693 4.60999768-6.42463886 2.01055308-1.47136192 4.42188754-2.20675393 7.23371454-2.20675393 2.0270235 0 3.9968339.37593124 5.909431 1.12779372 1.9125972.75215143 3.5882507 1.81464118 5.0266717 3.1877582l-1.5201954 3.08980225c-1.6346219-1.37340597-3.2039398-2.38677327-4.7079537-3.0406798s-3.0406798-.98100427-4.6099976-.98100427c-3.0077389 0-5.34538973 1.34046504-7.01295251 4.02168407-1.66727383 2.68093003-2.5011997 6.44053143-2.5011997 11.27938193v.735681c.75215144-1.8634747 1.97819006-3.3348366 3.67811586-4.4137969 1.70021477-1.0789602 3.64546385-1.6184403 5.83603635-1.6184403 2.1252684 0 4.0133043.4660854 5.6643966 1.3976783zm-.8090757 15.3993109c1.3731171-1.4222395 2.0596756-3.3102754 2.0596756-5.6643967 0-2.3211804-.6949383-4.1930347-2.0842368-5.6152742-1.3895875-1.4222395-3.195849-2.1333592-5.4190734-2.1333592-2.2888173 0-4.15229196.7192105-5.5910019 2.1579204-1.43842099 1.438421-2.15763148 3.3021846-2.15763148 5.590713 0 2.3211803.71921049 4.2011255 2.15763148 5.6398354 1.43870994 1.438421 3.3186551 2.1579205 5.6398354 2.1579205 2.2232244 0 4.0213952-.7111198 5.3948011-2.1333592z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(1384.69083 397.697106)"/><g transform="translate(1436.988825 388.430153)"><path d="m.039304.099422h47.553665v54.590201h-47.553665z" fill="#00a88a"/><path d="m47.5929694 54.6896229h-47.55366538v-54.59020073h47.55366538zm-45.01528916-52.05176699v49.51333329h42.47662036v-49.51333329z" fill="#000"/></g><path d="m.04045378.09275475h23.04969942v2.99155735l-16.38002621 31.9264155h-4.31555192l16.28178133-31.5340138h-18.63590262z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(1447.938813 398.275017)"/><g transform="translate(1499.78573 388.430153)"><path d="m.039304.099422h47.553665v54.590201h-47.553665z" fill="#00a88a"/><path d="m47.5929694 54.6896229h-47.55366538v-54.59020073h47.55366538zm-45.01519163-52.05176699v49.51333329h42.47652283v-49.51333329z" fill="#000"/></g><path d="m23.338655 20.8516142c1.2586906 1.5201954 1.8880359 3.3429273 1.8880359 5.4679068 0 2.9753759-1.1277937 5.3211174-3.3836701 7.0375137-2.2561653 1.7166852-5.2965562 2.5748834-9.1217504 2.5748834-3.82548323 0-6.86587408-.8581982-9.12175046-2.5748834-2.25616535-1.7163963-3.38395906-4.0621378-3.38395906-7.0375137 0-2.1249795.64552681-3.9558022 1.93715836-5.4924681 1.29134258-1.5366659 3.06495207-2.5994446 5.32082845-3.1877582-2.09232751-.6212545-3.69429737-1.6430015-4.80590957-3.065241s-1.66756278-3.0976041-1.66756278-5.02667165c0-1.86347468.49064661-3.49029472 1.47136193-4.87959325.98071531-1.38958749 2.36221204-2.46854771 4.14391229-3.23688066 1.78198919-.76833294 3.81710354-1.15235494 6.10592084-1.15235494 2.2885284 0 4.3236427.384022 6.1056319 1.15235494 1.7817002.76833295 3.1631969 1.84729317 4.1439122 3.23688066.9810043 1.38929853 1.471362 3.01611857 1.471362 4.87959325 0 1.92906755-.5640414 3.60443215-1.692124 5.02667165-1.1277937 1.4222395-2.7052024 2.4439865-4.7325149 3.065241 2.2888173.6212546 4.0624268 1.6918351 5.3211174 3.2123195zm-16.23265883-6.4737613c1.38929853 1.1607346 3.26115293 1.8718543 5.61527423 2.1333592 2.3538323-.2615049 4.2256867-.9726246 5.6152742-2.1333592 1.3892985-1.1604457 2.0842368-2.6725504 2.0842368-4.53631405 0-1.92877864-.6784678-3.44926302-2.0354033-4.56087522-1.3566466-1.1116122-3.2449714-1.66727383-5.6641077-1.66727383-2.4194253 0-4.30775013.55566163-5.66439668 1.66727383-1.35693551 1.1116122-2.03540327 2.63209658-2.03540327 4.56087522 0 1.86376365.69493823 3.37586835 2.08452572 4.53631405zm11.94166813 16.5516658c1.471073-1.1116122 2.206754-2.7300525 2.206754-4.855032 0-1.9290676-.7764237-3.4738243-2.3295601-4.6345589-1.5528474-1.1607347-3.6209026-1.8718544-6.2035878-2.1333592-2.5829741.2615048-4.65102939.9726245-6.20387679 2.1333592-1.55313637 1.1607346-2.32956007 2.7054913-2.32956007 4.6345589 0 2.1249795.73568096 3.7434198 2.20704289 4.855032 1.47107297 1.1116122 3.57987096 1.6675628 6.32639397 1.6675628 2.746234 0 4.855032-.5559506 6.3263939-1.6675628z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(1509.579895 397.697106)"/><g transform="translate(1565.056846 388.430153)"><path d="m.039304.099422h47.553665v54.590201h-47.553665z" fill="#00a88a"/><path d="m47.5929694 54.6896229h-47.55366538v-54.59020073h47.55366538zm-45.01519163-52.05176699v49.51333329h42.47652283v-49.51333329z" fill="#000"/></g><path d="m21.1125411 4.69235002c2.2885283 2.9424349 3.4330815 7.12737888 3.4330815 12.55454298 0 5.9178108-1.1852959 10.5194287-3.5555987 13.8051429-2.3703028 3.2860031-5.6805782 4.9287157-9.9311151 4.9287157-1.99437156 0-3.94771143-.3759313-5.86030856-1.1277937-1.91259713-.7521515-3.60472114-1.8146412-5.07579411-3.1877582l1.56931788-3.0895133c1.66727382 1.405769 3.25306216 2.427516 4.75707607 3.064952 1.50372496.6374361 3.02420934.9564431 4.56087522.9564431 3.0077389 0 5.3372989-1.3404651 6.9883912-4.0213951 1.6510924-2.6812191 2.4766385-6.4408204 2.4766385-11.2796709v-.637725c-.7521514 1.8311116-1.97819 3.2776234-3.6781158 4.3404021-1.7002148 1.0624897-3.6454639 1.5938791-5.8360363 1.5938791-2.1252685 0-4.00521365-.4660854-5.63983549-1.3976783-1.63462184-.9318818-2.90978291-2.2396949-3.82519426-3.9234391-.91541134-1.6837443-1.37311702-3.6047212-1.37311702-5.7623527 0-2.1579204.4822669-4.086988 1.44651175-5.78691381.9645338-1.70021476 2.29690808-3.03258905 3.99712284-3.99712285 1.69992581-.96424484 3.62899341-1.44651174 5.78691388-1.44651174 4.2175959 0 7.4706581 1.47107297 9.7591865 4.41379682zm-3.9234392 12.35834218c1.4387099-1.438421 2.1579204-3.3021847 2.1579204-5.590713 0-2.32118037-.7192105-4.20112552-2.1579204-5.63983546-1.438421-1.43842099-3.3183661-2.15792044-5.6395465-2.15792044-2.22322439 0-4.02168405.71111974-5.39480107 2.13335921-1.37311703 1.42223948-2.05967554 3.31027538-2.05967554 5.66439669 0 2.3211803.68655851 4.1930347 2.05967554 5.6152742 1.37311702 1.4222395 3.1877582 2.1333592 5.44363457 2.1333592 2.2888173 0 4.152292-.7192105 5.590713-2.1579204z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(1575.139966 397.697106)"/><g stroke="#000"><path d="m1096.073546 379.827207v8.703347" stroke-width="2.540471"/><path d="m1334.698583 379.827107h-238.625356" stroke-width="2.536666"/><path d="m1157.047962 379.827207v8.703347" stroke-width="2.540471"/><path d="m1214.724654 379.827207v8.703347" stroke-width="2.540471"/><path d="m1273.792589 379.827207v8.703347" stroke-width="2.540471"/><path d="m.25679382.11881745v8.70067791h253.66824618v8.70607874" stroke-width="2.537062" transform="translate(1333.854479 371.007868)"/><path d="m1522.192353 379.827363v8.706079" stroke-width="2.538373"/><path d="m1460.272258 379.827363v8.706079" stroke-width="2.538373"/><path d="m1398.172318 379.827363v8.706079" stroke-width="2.538373"/><path d="m461.035492 332.200017v30.871702" stroke-width="2.538347"/><path d="m555.359389 347.854087v15.218407" stroke-width="2.537588"/><path d="m695.541211 347.854373v14.187222" stroke-width="2.538524"/><path d="m790.885848 362.040642v-30.871702" stroke-width="2.538347"/><path d="m887.942518 362.041595v-14.187222" stroke-width="2.538524"/><path d="m.019213 15.299472.406607-15.172668" stroke-width="2.539569" transform="matrix(-1 0 0 1 367.859321 347.727644)"/></g><g transform="translate(728.528993 23.597628)"><path d="m.027562.06972h33.346975v38.281514h-33.346975z" fill="#00a88a"/><path d="m33.3745364 38.3512337h-33.34697449v-38.28151366h33.34697449zm-30.80847438-35.74309116v33.20466866h28.26976908v-33.20466866z" fill="#000"/></g><g fill="#000" transform="translate(771.880716 31.029736)"><path d="m12.5751769 7.68008917v1.60645421h-12.54602874v-1.60645421zm0 5.15096053v1.6066044h-12.54602874v-1.6066044z"/><path d="m26.1286201 17.4720676c-1.3345049-.7649138-2.3587471-1.8486543-3.0727268-3.2512217-.7141299-1.4025673-1.0711197-3.0473348-1.0711197-4.93430252 0-1.86998963.3569898-3.50634324 1.0711197-4.90876034.7139797-1.40256734 1.7382219-2.48210096 3.0727268-3.23860086 1.3345049-.75649991 2.8942319-1.13467473 4.6793313-1.13467473 1.2239222 0 2.3757252.19126601 3.4552588.57364779 1.0795337.38253202 1.9762152.91380981 2.6901948 1.59383335l-1.0709695 2.39706047c-.8159982-.6630455-1.6277894-1.14338913-2.4352235-1.44088065-.8075843-.29749152-1.6703097-.44623728-2.5883264-.44623728-1.7509931 0-3.1068332.56959109-4.06722 1.70862301-.960537 1.13888168-1.4408806 2.77102834-1.4408806 4.89598924 0 2.14193892.4761367 3.78670642 1.4281095 4.93430252.9519729 1.1474458 2.31202 1.7212439 4.0799911 1.7212439.9180167 0 1.7807421-.1487458 2.5883264-.4462373.8074341-.2974915 1.6192253-.7778352 2.4352235-1.4407304l1.0709695 2.3969102c-.7139796.6800236-1.6106611 1.2113013-2.6901948 1.5938334-1.0795336.382532-2.2313366.573798-3.4552588.573798-1.7850994 0-3.3448264-.382532-4.6793313-1.1475961z"/><path d="m41.938792 17.7781233c-.9944932-.5440489-1.7595572-1.3217338-2.295042-2.333205-.5354847-1.0116214-.8032271-2.1973805-.8032271-3.5574276 0-1.3598968.2677424-2.54565597.8032271-3.55727739.5354848-1.01147117 1.3005488-1.78915607 2.295042-2.33320496.9944931-.54404888 2.1462961-.8159982 3.4552588-.8159982 1.2919846 0 2.4310166.27194932 3.4169455.8159982.9860792.54404889 1.7467861 1.32173379 2.2822708 2.33320496.535635 1.01162142.8033774 2.19738059.8033774 3.55727739 0 1.3600471-.2677424 2.5458062-.8033774 3.5574276-.5354847 1.0114712-1.2961916 1.7891561-2.2822708 2.333205-.9859289.5440489-2.1249609.8159982-3.4169455.8159982-1.3089627 0-2.4607657-.2719493-3.4552588-.8159982zm5.9160245-2.7412792c.5694408-.7055657.8543115-1.7552.8543115-3.1493534 0-1.3768749-.2890776-2.42665936-.8670826-3.14920316s-1.3940032-1.08374057-2.4479946-1.08374057c-1.0709695 0-1.8955318.36119677-2.4735368 1.08374057s-.8670826 1.77232826-.8670826 3.14920316c0 1.3941534.2848706 2.4437877.8543115 3.1493534.5695911.7055658 1.3897962 1.0581984 2.4607657 1.0581984 1.0880978 0 1.9167168-.3526326 2.4863079-1.0581984z"/><path d="m66.6356966 10.4850736v7.9050108h-3.1875165v-7.7520581c0-1.0200353-.1954729-1.7637641-.5864189-2.23118638-.3910962-.46757253-.9946433-.7013588-1.8106415-.7013588-.968951 0-1.7509931.31026262-2.3459761.93078786-.594983.62052525-.8924746 1.44073042-.8924746 2.46076572v7.2930497h-3.1621245v-9.23110178c0-1.35989684-.0679122-2.57540513-.2038868-3.64652485h2.9834793l.2295793 2.116547c.4418801-.78204211 1.0412203-1.38543905 1.7977202-1.81049133s1.6108115-.63750329 2.5627843-.63750329c3.0769338 0 4.6154758 1.76797107 4.6154758 5.30406345z"/><path d="m74.0818492 7.90951823v5.76307187c0 1.5129998.7054155 2.2694997 2.1163968 2.2694997.3910962 0 .8161484-.0680625 1.2751568-.2040371v2.5246212c-.5610269.2038869-1.2410505.3059054-2.0400706.3059054-1.4620657 0-2.5841195-.407924-3.3660114-1.2239222-.7820421-.8159982-1.172988-1.9891365-1.172988-3.5191143v-5.91602457h-2.4735368v-2.39706046h2.4735368v-3.13643206l3.1875164-1.07111972v4.20755178h3.4169456v2.39706046z"/><path d="m90.9629905 12.11707h-8.8741119c.0680624 1.3770252.4122812 2.3927033 1.0328064 3.0473349.6205252.6544813 1.542749.981722 2.7666711.981722 1.4111315 0 2.7200942-.4590084 3.9270384-1.3770251l.9180167 2.1930233c-.6119611.4929645-1.364254.8882676-2.2567286 1.1857591-.8924745.2974915-1.7977202.4462373-2.715737.4462373-2.1081331 0-3.7655214-.594983-4.9726158-1.7849491-1.2069441-1.1901163-1.8104913-2.8221128-1.8104913-4.8961395 0-1.3089627.2635354-2.47353681.790456-3.49357213.5270708-1.01988507 1.2665927-1.81469827 2.2185655-2.38413911.9519729-.56959109 2.0315065-.85431151 3.2386009-.85431151 1.7679711 0 3.1661812.57379804 4.1947807 1.72124387 1.0284492 1.14759607 1.5427489 2.72430113 1.5427489 4.73026538zm-7.7392869-3.88872499c-.535635.50137838-.8798538 1.22812913-1.0328065 2.18025229h5.9925009c-.1020185-.96910121-.3951528-1.70005891-.8797034-2.1930234-.4845506-.49311473-1.151803-.73952185-2.0017574-.73952185-.8501045 0-1.5427489.25076432-2.0782336.75229296z"/><path d="m105.651108 10.4850736v7.9050108h-3.187516v-7.7520581c0-1.0200353-.195473-1.7637641-.586569-2.23118638-.390946-.46757253-.994493-.7013588-1.810491-.7013588-.9689514 0-1.7509935.31026262-2.3459765.93078786-.594983.62052525-.8924746 1.44073042-.8924746 2.46076572v7.2930497h-3.1621245v-9.23110178c0-1.35989684-.0679122-2.57540513-.2040371-3.64652485h2.9836296l.2294291 2.116547c.4420303-.78204211 1.0412203-1.38543905 1.7977202-1.81049133.7566501-.42505228 1.6108118-.63750329 2.5627838-.63750329 3.077084 0 4.615626 1.76797107 4.615626 5.30406345z"/><path d="m113.097111 7.90951823v5.76307187c0 1.5129998.705566 2.2694997 2.116547 2.2694997.391096 0 .815998-.0680625 1.275006-.2040371v2.5246212c-.561026.2038869-1.24105.3059054-2.03992.3059054-1.462066 0-2.584119-.407924-3.366162-1.2239222-.781891-.8159982-1.172988-1.9891365-1.172988-3.5191143v-5.91602457h-2.473536v-2.39706046h2.473536v-3.13643206l3.187517-1.07111972v4.20755178h3.417096v2.39706046z"/><path d="m125.923803.23393651h7.879619c1.95488 0 3.476444.47177949 4.564542 1.41533845 1.087947.94340871 1.631996 2.2311864 1.631996 3.86318281s-.548256 2.9241313-1.644767 3.87610416c-1.096512.95197287-2.613869 1.42795927-4.551771 1.42795927h-4.590084v7.5735632h-3.289535zm7.497087 8.03257155c1.139032 0 2.001758-.23378627 2.588176-.70120855.58657-.46757253.879854-1.14323888.879854-2.02729954 0-.90103871-.289078-1.5852692-.867083-2.05269149-.578004-.46757253-1.444937-.70135879-2.600947-.70135879h-4.207552v5.48255837z"/><path d="m154.509583 5.51245777v12.87762663h-3.136582v-2.0654626c-.390946.7139797-.951973 1.2707996-1.683081 1.6703097-.730958.3995101-1.563934.59919-2.498929.59919-1.122054 0-2.116547-.2719493-2.983479-.8159982-.867083-.5440489-1.538542-1.3175268-2.014528-2.3205841-.476137-1.002907-.71413-2.1674811-.71413-3.4934219 0-1.326091.24235-2.50328596.72675-3.53188543.484551-1.02844922 1.160368-1.82746937 2.0273-2.39691021.867083-.56959109 1.853012-.85431151 2.958087-.85431151.934995 0 1.767971.19967991 2.498929.59918999.731108.39951008 1.292135.95633006 1.683081 1.67030971v-1.93805208zm-4.003514 9.48607303c.578005-.7309577.866932-1.7594069.866932-3.0854979 0-1.3600471-.288927-2.40547436-.866932-3.13643206-.578005-.73110795-1.402568-1.09651167-2.473537-1.09651167-1.053992 0-1.874347.37817482-2.460766 1.13467473-.586569.7564999-.879854 1.8062844-.879854 3.1493534 0 1.3259408.293285 2.3459761.879854 3.0599557.586419.7139797 1.415188 1.0709695 2.486158 1.0709695 1.053991 0 1.87014-.3654037 2.448145-1.0965117z"/><path d="m170.421623 5.51245777v12.46970263c0 2.0059643-.552462 3.5275283-1.657388 4.5645416-1.105076 1.0370134-2.728658 1.5555201-4.870597 1.5555201-1.988987 0-3.73998-.4164881-5.25313-1.2496147l.510093-2.4224524c1.563934.8159982 3.119454 1.2239222 4.66656 1.2239222 2.295042 0 3.442488-1.1388817 3.442488-3.4169455v-2.5500132c-.390946.6970016-.960537 1.2622355-1.708473 1.6957017-.748086.4336164-1.589626.6502744-2.524621.6502744-1.121904 0-2.120754-.2677424-2.99625-.8032271-.875497-.5354848-1.55552-1.2919847-2.039921-2.2694997-.48455-.9775151-.72675-2.095362-.72675-3.3532403 0-1.2580286.2422-2.37587548.72675-3.35339054.484401-.97751507 1.164424-1.73401497 2.039921-2.26949971.875496-.53548473 1.874346-.8032271 2.99625-.8032271.952123 0 1.797871.19967991 2.537392.59918999.739522.39951008 1.304756.95633006 1.695702 1.67030971v-1.93805208zm-4.06722 8.97613053c.603548-.6970016.905246-1.6575386.905246-2.8814608 0-1.2240724-.297491-2.18460946-.892474-2.88161106s-1.42811-1.04542727-2.499079-1.04542727c-1.053992 0-1.882761.34842567-2.486308 1.04542727-.603397.6970016-.905246 1.65753866-.905246 2.88161106 0 1.2239222.301849 2.1844592.905246 2.8814608.603547.6970016 1.432316 1.0455775 2.486308 1.0455775 1.053991 0 1.88276-.3485759 2.486307-1.0455775z"/><path d="m185.135284 12.11707h-8.874112c.068062 1.3770252.412281 2.3927033 1.032806 3.0473349.620525.6544813 1.542749.981722 2.766821.981722 1.410982 0 2.719944-.4590084 3.927039-1.3770251l.918016 2.1930233c-.612111.4929645-1.364254.8882676-2.256878 1.1857591-.892475.2974915-1.797721.4462373-2.715737.4462373-2.107983 0-3.765522-.594983-4.972466-1.7849491-1.207094-1.1901163-1.810491-2.8221128-1.810491-4.8961395 0-1.3089627.263385-2.47353681.790456-3.49357213.52692-1.01988507 1.266442-1.81469827 2.218565-2.38413911.951973-.56959109 2.031507-.85431151 3.238451-.85431151 1.767971 0 3.166331.57379804 4.194781 1.72124387 1.028599 1.14759607 1.542749 2.72430113 1.542749 4.73026538zm-7.739287-3.88872499c-.535485.50137838-.879704 1.22812913-1.032807 2.18025229h5.992651c-.102018-.96910121-.395303-1.70005891-.879853-2.1930234-.484401-.49311473-1.151653-.73952185-2.001758-.73952185-.849954 0-1.542749.25076432-2.078233.75229296z"/></g><path d="m367.838539 347.854154h94.040308" stroke="#000" stroke-width="2.538462"/><path d="m461.878846 347.854154h93.484616" stroke="#000" stroke-width="2.538462"/><path d="m.33230769 1.70030769 96.35538461-1.24846154 96.0461537 1.24846154" stroke="#000" stroke-width="2.538462" transform="translate(695.209615 346.153846)"/><path d="m.05446154.45184615h95.96584616l96.7416923 1.24846154" stroke="#000" stroke-width="2.538462" transform="translate(36.132692 346.153846)"/></g></svg>
\ No newline at end of file