сделаны заглушки данных, и удален старый контент (не полностью)

This commit is contained in:
Kayashov.SM
2026-02-02 12:04:26 +04:00
parent 1c08be1d07
commit bad457e6f6
22 changed files with 709 additions and 836 deletions

100
front/package-lock.json generated
View File

@@ -28,12 +28,14 @@
"apexcharts": "3.49.2",
"axios": "^1.7.3",
"cors": "^2.8.5",
"date-fns": "^2.29.3",
"dayjs": "1.11.11",
"moment": "^2.30.1",
"notistack": "^3.0.1",
"prop-types": "^15.8.1",
"react": "^18.3.1",
"react-apexcharts": "1.4.1",
"react-calendar": "^6.0.0",
"react-dom": "^18.3.1",
"react-hook-form": "7.52.0",
"react-jwt": "^1.2.2",
@@ -5528,6 +5530,15 @@
"@xtuc/long": "4.2.2"
}
},
"node_modules/@wojtekmaj/date-utils": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/@wojtekmaj/date-utils/-/date-utils-2.0.2.tgz",
"integrity": "sha512-Do66mSlSNifFFuo3l9gNKfRMSFi26CRuQMsDJuuKO/ekrDWuTTtE4ZQxoFCUOG+NgxnpSeBq/k5TY8ZseEzLpA==",
"license": "MIT",
"funding": {
"url": "https://github.com/wojtekmaj/date-utils?sponsor=1"
}
},
"node_modules/@xtuc/ieee754": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz",
@@ -7498,6 +7509,22 @@
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/date-fns": {
"version": "2.30.0",
"resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz",
"integrity": "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==",
"license": "MIT",
"dependencies": {
"@babel/runtime": "^7.21.0"
},
"engines": {
"node": ">=0.11"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/date-fns"
}
},
"node_modules/dayjs": {
"version": "1.11.11",
"resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.11.tgz",
@@ -9625,6 +9652,18 @@
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/get-user-locale": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/get-user-locale/-/get-user-locale-3.0.0.tgz",
"integrity": "sha512-iJfHSmdYV39UUBw7Jq6GJzeJxUr4U+S03qdhVuDsR9gCEnfbqLy9gYDJFBJQL1riqolFUKQvx36mEkp2iGgJ3g==",
"license": "MIT",
"dependencies": {
"memoize": "^10.0.0"
},
"funding": {
"url": "https://github.com/wojtekmaj/get-user-locale?sponsor=1"
}
},
"node_modules/glob": {
"version": "7.2.3",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
@@ -13265,6 +13304,21 @@
"node": ">= 4.0.0"
}
},
"node_modules/memoize": {
"version": "10.2.0",
"resolved": "https://registry.npmjs.org/memoize/-/memoize-10.2.0.tgz",
"integrity": "sha512-DeC6b7QBrZsRs3Y02A6A7lQyzFbsQbqgjI6UW0GigGWV+u1s25TycMr0XHZE4cJce7rY/vyw2ctMQqfDkIhUEA==",
"license": "MIT",
"dependencies": {
"mimic-function": "^5.0.1"
},
"engines": {
"node": ">=18"
},
"funding": {
"url": "https://github.com/sindresorhus/memoize?sponsor=1"
}
},
"node_modules/merge-descriptors": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
@@ -13341,6 +13395,18 @@
"node": ">=6"
}
},
"node_modules/mimic-function": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/mimic-function/-/mimic-function-5.0.1.tgz",
"integrity": "sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==",
"license": "MIT",
"engines": {
"node": ">=18"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/min-indent": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz",
@@ -15584,6 +15650,31 @@
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz",
"integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg=="
},
"node_modules/react-calendar": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/react-calendar/-/react-calendar-6.0.0.tgz",
"integrity": "sha512-6wqaki3Us0DNDjZDr0DYIzhSFprNoy4FdPT9Pjy5aD2hJJVjtJwmdMT9VmrTUo949nlk35BOxehThxX62RkuRQ==",
"license": "MIT",
"dependencies": {
"@wojtekmaj/date-utils": "^2.0.2",
"clsx": "^2.0.0",
"get-user-locale": "^3.0.0",
"warning": "^4.0.0"
},
"funding": {
"url": "https://github.com/wojtekmaj/react-calendar?sponsor=1"
},
"peerDependencies": {
"@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0",
"react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0",
"react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0"
},
"peerDependenciesMeta": {
"@types/react": {
"optional": true
}
}
},
"node_modules/react-dev-utils": {
"version": "12.0.1",
"resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-12.0.1.tgz",
@@ -18421,6 +18512,15 @@
"makeerror": "1.0.12"
}
},
"node_modules/warning": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz",
"integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==",
"license": "MIT",
"dependencies": {
"loose-envify": "^1.0.0"
}
},
"node_modules/watchpack": {
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.1.tgz",

View File

@@ -23,12 +23,14 @@
"apexcharts": "3.49.2",
"axios": "^1.7.3",
"cors": "^2.8.5",
"date-fns": "^2.29.3",
"dayjs": "1.11.11",
"moment": "^2.30.1",
"notistack": "^3.0.1",
"prop-types": "^15.8.1",
"react": "^18.3.1",
"react-apexcharts": "1.4.1",
"react-calendar": "^6.0.0",
"react-dom": "^18.3.1",
"react-hook-form": "7.52.0",
"react-jwt": "^1.2.2",

Binary file not shown.

After

Width:  |  Height:  |  Size: 385 KiB

View File

@@ -0,0 +1,457 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 21.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 150.2 54.4" style="enable-background:new 0 0 150.2 54.4;" xml:space="preserve">
<style type="text/css">
.st0{fill-rule:evenodd;clip-rule:evenodd;fill:#989695;}
.st1{fill-rule:evenodd;clip-rule:evenodd;fill:#FFFFFF;}
.st2{fill-rule:evenodd;clip-rule:evenodd;fill:#00A0E3;}
.st3{fill-rule:evenodd;clip-rule:evenodd;fill:#0A5CAC;}
.st4{fill:#989695;}
.st5{fill:#989695;stroke:#989695;stroke-width:0.1417;stroke-miterlimit:10;}
</style>
<g>
<g>
<g>
<path class="st0" d="M25.1,17.4c-0.1-1.5-0.5-2.8-1.2-3.8c-0.3-0.4-0.7-0.8-1.1-1.1c-0.4-0.3-0.9-0.5-1.3-0.5
c0.4,0.3,0.7,0.7,1,1.1c0.8,1.2,1.2,2.6,1.4,4.3c0.1,1.6,0.1,3.3,0,5c-0.2,2.4-0.6,4.7-1.1,7c-0.5,2.3-1.2,4.2-1.9,5.7
c-0.7,1.4-1.6,2.9-2.6,4.4c-1.1,1.6-2.3,2.9-3.7,3.9c-0.4,0.3-0.7,0.5-1.1,0.7c0.9-0.4,1.9-0.9,2.7-1.6c1.3-1,2.4-2.2,3.4-3.7
c1-1.5,1.9-2.9,2.5-4.3c0.7-1.4,1.3-3.2,1.8-5.5c0.5-2.2,0.9-4.5,1.1-6.8C25.2,20.6,25.2,19,25.1,17.4L25.1,17.4z"/>
<path class="st0" d="M51.4,34c-0.5-0.3-0.9-0.6-1.1-1.1l0,7.5c0,1.1,0.4,1.4,0.5,1.5c0.4,0.3,0.8,0.5,1.3,0.5
c-0.4-0.5-0.6-1.1-0.6-2v-6.3C51.5,34.1,51.4,34,51.4,34L51.4,34z"/>
<path class="st0" d="M63.1,37.6c-0.3-0.7-0.9-1.4-1.6-1.9c-0.6-0.4-1.3-0.8-2-1.1c0.1,0.1,0.2,0.1,0.3,0.2c0.9,0.6,1.6,1.4,2,2.3
c0.4,1,0.5,2.1,0.2,3.2c-0.3,1-0.7,1.9-1.4,2.6c-0.2,0.2-0.4,0.5-0.7,0.7c0.9-0.2,1.6-0.7,2.2-1.3c0.5-0.6,0.9-1.4,1.1-2.2
C63.5,39.2,63.5,38.4,63.1,37.6L63.1,37.6z"/>
<path class="st0" d="M54.6,29c0,0.7-0.2,1.3-0.6,1.8c-0.3,0.4-0.6,0.6-1,0.8c0,0.1,0.1,0.3,0.1,0.4c0.1,0.1,0.3,0.3,0.6,0.4
c0.3,0.2,0.7,0.3,1.1,0.5c-0.1-0.1-0.3-0.3-0.4-0.4c-0.2-0.3-0.3-0.6-0.3-0.8c0-0.5,0.2-0.8,0.5-0.9c0.3-0.1,0.6-0.3,0.8-0.6
c0.3-0.3,0.4-0.7,0.4-1.1c0-0.7-0.4-1.1-1.2-1.1c-0.1,0-0.2,0-0.3,0C54.5,28.2,54.6,28.6,54.6,29L54.6,29z"/>
<path class="st0" d="M52.2,23.6c0,0.7-0.3,1.2-0.9,1.5c-0.1,0.1-0.4,0.2-0.7,0.6c-0.3,0.3-0.3,0.6-0.3,0.7v1.5
c0.3-0.4,0.8-0.7,1.3-0.9v-0.6c0-0.5,0.2-0.9,0.5-1.4c0.3-0.4,0.7-0.7,1.1-0.9c0.2-0.1,0.3-0.2,0.3-0.4c0-0.1-0.1-0.2-0.3-0.2
L52.2,23.6L52.2,23.6L52.2,23.6z"/>
<path class="st0" d="M11.4,13.8L11.4,13.8L11.4,13.8c0,0.9-0.7,1.2-1,1.4c-0.7,0.3-1,0.9-1.1,1.7c0,0.3-0.1,0.7,0,1
c0,0.4,0.1,0.8,0.2,1.2c0.1,0.7,0.3,1.4,0.5,1.9c1.3,3.5,3.1,6.5,5.3,8.9c0.8,0.9,1.7,1.7,2.8,2.5c0,0,0-0.1,0.1-0.1l0-0.1l0-0.1
c0,0,0,0,0-0.1c-0.5-0.4-1-0.9-1.4-1.4c-2.3-2.5-4.1-5.6-5.5-9.2c-0.2-0.6-0.4-1.3-0.5-2.1c-0.1-0.4-0.1-0.8-0.2-1.2
c0-0.4,0-0.9,0-1.3c0.1-1.1,0.7-1.9,1.6-2.5c0.3-0.1,0.4-0.2,0.4-0.3c0-0.2-0.1-0.3-0.3-0.3h-1C11.4,13.7,11.4,13.8,11.4,13.8
L11.4,13.8z"/>
<path class="st0" d="M28.2,37.4c-0.4-0.2-0.8-0.4-1.1-0.4c0.2,0.2,0.3,0.4,0.5,0.7c0.3,0.6,0.4,1.3,0.3,1.9
c-0.1,0.7-0.4,1.3-1,1.9c-0.1,0.1-0.1,0.1-0.1,0.2c0.3,0,0.4-0.1,0.6-0.3c0.1-0.1,0.2-0.4,0.6-1.2c0.3-0.6,0.5-1.4,0.7-2.3
c0,0,0-0.1,0-0.1C28.5,37.7,28.4,37.5,28.2,37.4L28.2,37.4z"/>
<path class="st0" d="M43.1,25.1c0.1-0.1,0.2-0.3,0.3-0.4c-0.1-0.2-0.2-0.3-0.3-0.5c-0.1,0.4-0.4,0.8-0.9,1
c-0.1,0.1-0.3,0.2-0.7,0.6c-0.3,0.3-0.3,0.6-0.3,0.7v14.9c0,0.2,0.1,0.4,0.3,0.6c0.2,0.3,0.5,0.5,0.7,0.6l0,0l0,0
c0.2,0.1,0.4,0.3,0.6,0.5l0,0l0,0c0.1,0.1,0.1,0.2,0.1,0.3c0-0.1,0-0.1,0.1-0.2l0,0l0,0c0.1-0.1,0.1-0.2,0.2-0.3
c-0.1-0.1-0.2-0.2-0.3-0.3c-0.3-0.4-0.5-0.8-0.5-1.3V26.5C42.5,26,42.7,25.5,43.1,25.1L43.1,25.1z"/>
<path class="st0" d="M34.6,25.5c0,0-0.1,0-0.1,0c-0.4,0-1,0.1-1.2,0.4c-0.3,0.4-0.4,0.8-0.4,1.3c-0.1,0.7-0.1,1.4-0.2,2.2
c0,1.2,0,2.3,0,3.5c-0.1,2-0.3,3.8-0.6,5.3c-0.2,1-0.5,1.8-0.8,2.5c-0.3,0.7-0.5,1.2-0.7,1.4h0c-0.4,0.9-0.9,1.6-1.4,2.1
c0,0,0.1,0,0.1,0c1.1-0.1,2.1-1.1,2.9-3.1c0.7-1.7,1.1-3.9,1.3-6.4c0.2-2.6,0.4-5,0.6-7.4C34.1,26.6,34.3,26,34.6,25.5L34.6,25.5
z"/>
<path class="st0" d="M111.1,43.5c-0.4-0.2-0.7-0.4-1.1-0.8c-0.3-0.4-0.5-0.8-0.5-1.3l0-4.7c-0.4,0.1-0.8,0.3-1.3,0.3v4.3
c0,0.2,0.1,0.4,0.3,0.6c0.2,0.3,0.5,0.5,0.7,0.6l0,0l0,0c0.3,0.1,0.5,0.4,0.7,0.6c0.2,0.3,0.2,0.6,0.2,0.8h1
c0.2,0,0.3-0.1,0.2-0.3C111.3,43.6,111.2,43.6,111.1,43.5L111.1,43.5z"/>
<path class="st0" d="M110.2,23.6c0.1,0.7-0.3,1.2-0.9,1.5c-0.2,0.1-0.4,0.3-0.7,0.6c-0.3,0.3-0.3,0.6-0.3,0.7v7.6
c0.4-0.1,0.8-0.2,1.3-0.3v-7.3c0-0.5,0.2-0.9,0.5-1.4c0.3-0.4,0.7-0.7,1.1-0.9c0.2-0.1,0.3-0.2,0.3-0.4c0-0.1-0.1-0.2-0.2-0.2
L110.2,23.6L110.2,23.6L110.2,23.6z"/>
<path class="st0" d="M125,52c-1-0.7-1.9-1.5-2.6-2.7c-0.6-0.9-1.1-2-1.5-3.1c-0.4-1.1-0.7-2.2-1.1-3.2c-0.4-1.2-0.8-2.3-1.3-3.4
c-0.4-1.1-1-2-1.6-2.8c-0.5-0.5-0.9-1-1.2-1.4c-0.4-0.4-0.8-0.7-1.3-0.9c0.7-0.3,1.4-0.7,1.9-1.1c0.6-0.4,1.3-1,1.9-1.7
c0.7-0.8,1.2-1.6,1.6-2.5c0.3-0.7,0.6-1.6,0.8-2.7c0.2-1.1,0-2-0.5-2.7c-0.5-0.7-1-1-1.7-1.1c0,0-0.1,0-0.1,0
c0.1,0.1,0.3,0.3,0.4,0.5c0.7,1,0.9,2.2,0.7,3.5c-0.2,1.1-0.5,2.1-0.9,3c-0.5,1-1,1.9-1.8,2.7c-0.7,0.8-1.4,1.5-2.1,1.9
c-0.2,0.1-0.3,0.2-0.5,0.3c0,0,0,0,0,0c0.4,0.4,0.8,0.9,1.3,1.5c0.7,0.8,1.3,1.9,1.8,3c0.4,1.1,0.9,2.3,1.3,3.4
c0.4,1,0.7,2.1,1.1,3.3c0.3,1,0.8,2,1.3,2.8c0.6,1,1.4,1.8,2.3,2.4c0.4,0.3,0.6,0.6,0.6,1.1c0.2,0,0.4,0.1,0.6,0.1
c0.2,0,0.4,0,0.5,0C125.1,52.2,125.1,52.1,125,52L125,52z"/>
<path class="st0" d="M89.7,23.6c0,0.7-0.3,1.2-0.9,1.5c-0.2,0.1-0.4,0.3-0.7,0.6c-0.2,0.3-0.3,0.5-0.3,0.7l-0.2,4.9h1.3l0.2-5
c0-0.5,0.2-0.9,0.5-1.4c0.3-0.4,0.7-0.7,1.1-0.9c0.1-0.1,0.2-0.1,0.3-0.2c0-0.1,0-0.1,0-0.2v0l0,0c0,0,0,0,0,0
c0,0-0.1-0.1-0.2-0.1L89.7,23.6L89.7,23.6L89.7,23.6z"/>
<path class="st0" d="M90,43.5c-0.4-0.2-0.7-0.4-1-0.8c-0.3-0.4-0.5-0.8-0.4-1.3l0.2-6.8h-1.3l-0.2,6.8c0,0.2,0.1,0.4,0.2,0.6
c0.2,0.3,0.4,0.4,0.6,0.5c0.3,0.1,0.6,0.4,0.8,0.7l0,0l0,0.1C89,43.6,89,43.9,89,44h1c0.2,0,0.3-0.1,0.2-0.3
C90.2,43.6,90.1,43.6,90,43.5L90,43.5z"/>
<path class="st0" d="M67.7,30.5c-0.3-0.9-0.3-1.9,0-2.8c0.3-0.8,0.8-1.6,1.6-2.2c-0.6,0.1-1.1,0.4-1.6,0.8
c-0.6,0.5-1.1,1.1-1.3,1.8c-0.2,0.7-0.3,1.4,0,2.1c0.3,0.9,0.7,1.5,1.5,1.9c0.3,0.2,0.8,0.4,1.3,0.6C68.5,32.1,68,31.4,67.7,30.5
L67.7,30.5z"/>
<path class="st0" d="M80.2,25.1L80.2,25.1l0,0.1c0,0.7-0.3,1.2-0.9,1.5c-0.2,0.1-0.4,0.3-0.7,0.6c-0.2,0.3-0.3,0.5-0.3,0.8v13.2
c0,0.2,0.1,0.4,0.3,0.6c0.2,0.3,0.5,0.5,0.7,0.5l0,0l0,0c0.2,0.1,0.4,0.3,0.6,0.5l0,0.1l0,0.1c0,0.1,0.1,0.1,0.1,0.2
c0-0.1,0.1-0.1,0.1-0.2c0.1-0.1,0.1-0.1,0.2-0.2c-0.1-0.1-0.2-0.2-0.3-0.3c-0.3-0.4-0.5-0.8-0.5-1.3l0-13.2
c0-0.5,0.2-0.9,0.5-1.4c0.3-0.5,0.7-0.8,1.1-0.9c0.2-0.1,0.3-0.2,0.3-0.4c0-0.1-0.1-0.2-0.3-0.2c-0.4-0.1-0.7-0.1-1.1-0.2
C80.1,25,80.1,25,80.2,25.1L80.2,25.1z"/>
<path class="st0" d="M72.2,36.1l-0.3,0c-0.2,0-0.4,0-0.6,0c0,0-0.1,0.1-0.1,0.2c-0.3,0.4-0.7,1.1-1,2.1c-0.3,1-0.6,1.9-0.8,2.8
c-0.2,0.7-0.3,1.4-0.5,2.1c-0.2,0.7-0.4,1.5-0.6,2.2c-0.2,0.6-0.4,1.2-0.7,1.7l-0.8,1.5c-0.6,0.9-1.4,2-2.4,3.2
c-0.4,0.4-0.8,0.8-1.3,1.1c1.1-0.4,2-1,2.8-1.8c1-1.1,1.7-2.2,2.3-3c0.3-0.5,0.6-1,0.8-1.4c0.3-0.5,0.5-1,0.6-1.5
c0.2-0.7,0.4-1.4,0.5-2.2c0.2-0.7,0.3-1.4,0.5-2.1c0.2-0.9,0.5-1.8,0.9-2.9C71.6,37.2,71.9,36.6,72.2,36.1L72.2,36.1z"/>
<path class="st0" d="M99.1,25.1c-0.1,0-0.3,0.2-0.6,0.6c-0.2,0.3-0.2,0.5-0.2,0.7l1,14.9c0,0.2,0.1,0.4,0.3,0.7
c0.3,0.3,0.5,0.5,0.8,0.6c0.3,0.1,0.5,0.3,0.7,0.6c0,0,0,0.1,0.1,0.1c0.1-0.1,0.2-0.2,0.2-0.3c-0.1-0.1-0.2-0.2-0.3-0.3
c-0.4-0.4-0.6-0.8-0.6-1.3l-1-14.9c0-0.5,0.1-0.9,0.4-1.4c0.3-0.4,0.7-0.7,1-0.9c0,0,0.1,0,0.1,0c0-0.2,0-0.3,0-0.5c0,0,0,0,0,0
c0,0,0,0-0.1,0h-1C100.1,24.3,99.7,24.9,99.1,25.1L99.1,25.1z"/>
<path class="st0" d="M127.7,17.7c-0.3,0.1-0.5,0.3-0.7,0.5c0,0,0,0.1,0,0.1c0.2,0.2,0.3,0.3,0.5,0.1c0.1-0.1,0.2-0.2,0.3-0.2
c0-0.2,0.1-0.4,0.1-0.6C127.8,17.6,127.8,17.7,127.7,17.7L127.7,17.7z"/>
<path class="st0" d="M131.9,20.7c0.2-1,0.5-1.9,0.7-2.8c-0.4-0.3-0.7-0.5-1.1-0.6c-0.3,1.2-0.5,2.4-0.8,3.7
c-0.3,1.2-0.6,2.4-0.9,3.6h1.2C131.3,23.2,131.6,22,131.9,20.7L131.9,20.7z"/>
<path class="st0" d="M149.1,43.1c-0.9-0.6-1.5-1.3-1.9-1.9c-0.4-0.6-0.7-1.3-0.8-2l-5.1-21.7c-0.5-2-1.4-3.3-2.8-4
c-0.3-0.1-0.6-0.2-0.9-0.3c1.2,0.9,2,2.2,2.4,4.1l5.1,21.7c0.1,0.6,0.4,1.2,0.7,1.7c0.3,0.5,0.8,1,1.6,1.6c0.5,0.3,0.9,0.7,1,1.3
l0,0l0,0c0,0.2,0,0.3,0,0.4h1c0.2,0,0.3-0.1,0.3-0.3C149.5,43.5,149.4,43.3,149.1,43.1L149.1,43.1z"/>
<path class="st0" d="M131.2,43.4c-0.6-0.3-1.1-0.8-1.3-1.4c-0.2-0.6-0.4-1.3-0.5-2.1c-0.2-1.3-0.2-2.7-0.1-4.1
c0.1-1.4,0.3-2.9,0.5-4.4c0.1-1,0.3-2.1,0.6-3.2H129c-0.2,1.2-0.4,2.3-0.6,3.3c-0.2,1.4-0.4,2.9-0.5,4.3c-0.1,1.3,0,2.7,0.1,3.9
c0.1,0.7,0.2,1.3,0.5,1.9c0.1,0.4,0.4,0.7,0.8,0.9l0,0l0,0c0.5,0.4,0.8,0.6,0.8,1.2c0,0.1,0,0.2,0,0.3h1c0.2,0,0.3-0.1,0.3-0.3
C131.6,43.7,131.4,43.6,131.2,43.4L131.2,43.4z"/>
</g>
<path class="st1" d="M134.7,24.3l-0.8-3.4c-0.3-1.4-0.9-2.8-2.2-3.3c-0.3,1.1-0.5,2.3-0.8,3.4c-0.3,1.1-0.5,2.2-0.8,3.3H134.7
L134.7,24.3z M126.6,18.8c-0.2,0.3-0.4,0.5-0.7,0.6c-0.3,0.2-0.6,0.3-0.9,0.3c-0.5,0-1-0.3-1.3-0.7c-0.4-0.5-0.5-1.1-0.4-1.7
c0.1-0.2,0.1-0.4,0.2-0.6c0.7-1.7,1.8-3.1,3.4-4c1.4-0.8,2.9-1.3,4.5-1.3l0.2,0c1.7,0,3.4,0.3,4.9,1.1c2,0.9,3,2.8,3.5,4.8
l5.1,21.7c0.1,0.6,0.3,1.1,0.7,1.6c0.4,0.6,1,1.1,1.5,1.5c0.6,0.3,1,0.8,1.1,1.4l0,0l0,0c0,0.4-0.1,0.9-0.4,1.2
c-0.3,0.3-0.7,0.5-1.2,0.5l-8.7,0c-0.7,0-1.4-0.4-1.6-1.1c-0.3-0.8,0.2-1.4,0.8-1.8l0.1,0l0.1,0c0.3-0.2,0.6-0.5,0.7-0.8
c0.2-0.4,0.3-0.7,0.2-1.1l-2.8-11.9h-6.5c-0.2,1-0.4,2.1-0.5,3.1c-0.2,1.4-0.4,2.8-0.5,4.3c-0.1,1.3-0.1,2.6,0.1,3.8
c0.1,0.6,0.2,1.2,0.4,1.8c0.1,0.4,0.4,0.6,0.7,0.8l0.1,0l0.1,0c0.5,0.4,1,0.7,1,1.4c0,0.9-0.7,1.6-1.6,1.6l-7.6,0
c-0.7,0-1.3-0.2-1.6-0.8c-0.2-0.5-0.2-1,0.1-1.5c0-0.1,0.1-0.1,0.1-0.2l0,0l0,0c0.7-1.1,1.3-2.3,1.8-3.5c0.6-1.3,1.1-2.7,1.6-4.1
c0.5-1.5,0.9-3,1.3-4.5c0.4-1.4,0.7-2.9,1-4.3c0.3-1.5,0.7-2.9,1-4.3c0.3-1.3,0.6-2.7,0.9-4C127.2,18.2,126.9,18.5,126.6,18.8
L126.6,18.8z M17.9,31.9L17.9,31.9c0.5-1.1,0.8-2.3,1-3.4c0.2-1.3,0.2-2.7,0-4.1c-0.1-1-0.4-2.1-0.7-3.1c-0.3-1-0.7-2-1.2-2.9
c-0.2-0.4-0.4-0.7-0.6-1.1l0-0.1c-0.2-0.4-0.5-0.9-0.6-1.3c-0.2-0.5-0.3-1-0.3-1.5c0-1.3,0.5-2.4,1.5-3.1c1.3-1,3-0.9,4.3,0.1
c0.5,0.4,1,0.9,1.4,1.4c0.9,1.3,1.3,2.9,1.4,4.4c0.1,1.7,0.1,3.4,0,5.1c-0.2,2.4-0.6,4.7-1.1,7c-0.5,1.9-1,3.9-1.9,5.7
c-0.7,1.6-1.7,3.1-2.6,4.5c-1,1.5-2.3,2.9-3.7,4c-2.2,1.6-4.6,2.6-7.3,2.6c-0.1,0-0.3,0-0.4,0l0,0c-0.8,0-1.5-0.1-2.3-0.3
c-0.7-0.1-1.4-0.3-2-0.6c-1.6-0.9-2.5-2.4-1.9-4.3c0.5-1.8,1.9-2.7,3.8-2.7l0.2,0c0.5,0,1.1,0.2,1.6,0.4c0.4,0.2,0.8,0.4,1.1,0.6
c0.5,0.2,0.9,0.4,1.4,0.6c0.4,0.2,0.9,0.3,1.3,0.4l0,0c0.8,0.1,1.6,0.1,2.4-0.3c0.6-0.3,1.1-0.7,1.6-1.2c0.2-0.2,0.4-0.5,0.6-0.7
c-1.3-0.9-2.6-1.8-3.8-2.9c-1.9-1.7-3.3-3.9-4.5-6.2c-0.9-1.8-1.7-3.6-2.3-5.5c-0.7-1.9-1.2-3.8-1.6-5.8c-0.1-0.5-0.3-1-0.6-1.4
c-0.2-0.3-0.5-0.7-0.8-0.8C0.5,15.1,0,14.7,0,14v0l0,0c0-0.9,0.7-1.5,1.6-1.5h8.5c0.8,0,1.5,0.6,1.6,1.4l0,0.1l0,0.1
c0,0.8-0.5,1.2-1.1,1.5c-0.6,0.3-0.9,0.8-0.9,1.5l0,0c0,0.3-0.1,0.6,0,1c0,0.4,0.1,0.8,0.2,1.2c0.1,0.6,0.2,1.2,0.5,1.8
c1.2,3.2,2.9,6.3,5.2,8.8C16.2,30.5,17,31.2,17.9,31.9L17.9,31.9z M50.5,33.6v6.8c0,0.4,0,1,0.4,1.3c0.4,0.3,0.8,0.4,1.2,0.4
c0.1,0,0.3,0,0.4,0c0.7,0,1.7-0.1,2.3-0.5c0.9-0.6,1.2-1.5,1.2-2.6c0-0.6-0.1-1.1-0.2-1.6c-0.2-0.5-0.4-0.8-0.8-1.1
c-0.5-0.4-1.1-0.7-1.7-0.9c-0.7-0.3-1.4-0.7-2-1.2C51,34,50.7,33.8,50.5,33.6L50.5,33.6z M43.1,24.8c-0.2,0.3-0.5,0.5-0.8,0.6
c-0.2,0.1-0.4,0.4-0.6,0.5c-0.1,0.2-0.2,0.3-0.2,0.6v14.9c0,0.2,0.1,0.3,0.2,0.5c0.2,0.2,0.4,0.4,0.6,0.5l0,0l0,0
c0.3,0.1,0.5,0.3,0.7,0.6l0,0c0.2-0.2,0.4-0.4,0.6-0.6l0.1,0l0.1,0c0.2-0.1,0.4-0.3,0.6-0.5c0.1-0.1,0.2-0.3,0.2-0.5l0-14.9
c0-0.2-0.1-0.4-0.2-0.6c-0.1-0.2-0.3-0.4-0.6-0.5C43.5,25.2,43.3,25,43.1,24.8L43.1,24.8z M43.1,22.9c0.3-0.4,0.7-0.6,1.2-0.6h6.6
c0.7,0,1.4,0.4,1.5,1.2l0,0.1l0,0.1c0.1,0.8-0.4,1.4-1.1,1.7c-0.2,0.1-0.4,0.3-0.6,0.5c-0.1,0.2-0.2,0.3-0.2,0.6v0.9
c0.5-0.5,1.2-0.7,1.9-0.7c1.4,0,2.4,0.9,2.4,2.4c0,0.7-0.2,1.4-0.7,1.9c-0.3,0.3-0.5,0.6-0.9,0.8c0,0,0,0,0,0
c0.1,0.2,0.4,0.3,0.5,0.4c0.5,0.2,1,0.4,1.5,0.6c0.7,0.2,1.3,0.4,2,0.6c0.9,0.3,1.8,0.8,2.6,1.4c0.9,0.6,1.6,1.4,2.1,2.4
c0.5,1.1,0.6,2.2,0.3,3.3c-0.3,1-0.7,1.9-1.4,2.7c-0.9,1.1-2.1,1.7-3.5,1.9c-1.3,0.2-2.7,0.3-4,0.3l-5.6,0v0h-3.4
c-0.5,0-0.9-0.2-1.2-0.5c-0.3,0.4-0.7,0.6-1.2,0.6h-6.6c-0.5,0-1-0.2-1.3-0.7c-0.3-0.4-0.3-0.9-0.1-1.4c0.2-0.4,0.5-0.7,0.8-0.9
l0.1,0l0.1,0c0.2-0.1,0.4-0.3,0.6-0.5c0.1-0.1,0.2-0.3,0.2-0.5V27c0-0.3-0.2-0.8-0.4-1c-0.1-0.3-0.6-0.3-0.8-0.3
c-0.3,0-0.8,0-1,0.3c-0.2,0.4-0.4,0.8-0.4,1.2c-0.2,2.5-0.4,5-0.6,7.4c-0.2,2.3-0.6,4.7-1.4,6.8c-0.7,1.8-1.9,3.8-3.9,4
c-0.2,0-0.4,0-0.6,0c-1,0-2-0.3-2.8-0.9c-1.3-1-2-2.4-2.1-4c-0.1-1,0-2.2,0.6-3c1.1-1.7,2.7-2.2,4.5-1.2c0.5,0.3,0.9,0.8,1.2,1.3
c0.2,0.4,0.4,0.9,0.4,1.4c0.1-0.4,0.2-0.7,0.3-1.1c0.3-1.7,0.5-3.4,0.6-5.1c0.1-2,0.1-4-0.1-6c0-0.3-0.3-0.6-0.4-0.8
c-0.3-0.3-0.5-0.5-0.9-0.6c-0.8-0.2-1.3-1-1.2-1.8c0.1-0.8,0.7-1.3,1.5-1.3h14.1C42.4,22.3,42.8,22.5,43.1,22.9L43.1,22.9z
M72.7,26c0,0-0.1,0-0.1,0c-0.3,0-0.6-0.1-0.9-0.1c-0.4,0-0.8-0.1-1.2-0.1c-0.1,0-0.2,0-0.4,0c-0.2,0-0.3,0-0.5,0
c-0.6,0.1-1.2,0.4-1.7,0.8c-0.6,0.4-1,1-1.2,1.7c-0.2,0.6-0.2,1.3,0,1.9c0.2,0.8,0.7,1.4,1.3,1.8l0,0c0.7,0.5,1.7,0.7,2.6,0.8
c0.5,0.1,0.9,0.1,1.4,0.1l0.2,0c0.2,0,0.4,0,0.5,0V26L72.7,26z M101.2,42.9c0.2-0.2,0.3-0.3,0.5-0.5l0.1,0l0.1,0
c0.2-0.1,0.4-0.3,0.6-0.5c0.1-0.2,0.2-0.3,0.2-0.5V26.5c0-0.2-0.1-0.4-0.2-0.6c-0.1-0.2-0.3-0.4-0.5-0.5l0,0l0,0
c-0.7-0.3-1.1-1-1-1.7c0.1-0.8,0.7-1.3,1.5-1.3h6.6c0.7,0,1.4,0.5,1.5,1.2l0,0l0,0c0.1,0.8-0.3,1.5-1,1.8l0,0
c-0.2,0.1-0.4,0.3-0.6,0.5c-0.1,0.2-0.2,0.4-0.2,0.6v7.3c0.4-0.1,0.7-0.2,1.1-0.3c0.8-0.2,1.5-0.6,2.2-1c0.4-0.3,0.8-0.6,1.2-0.9
c0.3-0.3,0.6-0.7,0.8-1.1c0.2-0.4,0.3-0.9,0.2-1.3c-0.1-0.4-0.3-0.8-0.5-1.1c-0.3-0.5-0.6-1.1-0.7-1.7c-0.1-0.3-0.1-0.6-0.1-1
c0-0.5,0-1,0.1-1.4c0.5-1.6,1.8-2.5,3.5-2.4l0,0c1.1,0.1,2,0.7,2.7,1.6c0.8,1.1,0.9,2.4,0.7,3.7c-0.2,1-0.4,2.1-0.9,3
c-0.5,1-1.1,1.9-1.8,2.8c-0.6,0.7-1.4,1.4-2.2,2c-0.1,0.1-0.2,0.1-0.3,0.2c0.4,0.4,0.7,0.8,1.1,1.3c0.8,0.9,1.3,2,1.8,3.1
c0.5,1.1,0.9,2.3,1.3,3.5c0.4,1.1,0.7,2.2,1.1,3.3c0.3,1,0.8,1.9,1.3,2.8c0.6,0.9,1.3,1.7,2.2,2.3c0.5,0.3,0.7,0.8,0.7,1.3
c0,0.5-0.4,1-0.9,1.2c-0.3,0.1-0.6,0.2-0.9,0.2c-0.1,0-0.3,0-0.4,0c-1.7-0.2-3.3-0.7-4.6-1.7c-1.1-0.8-2-1.7-2.8-2.9
c-0.7-1.1-1.2-2.3-1.6-3.5c-0.3-0.7-0.5-1.5-0.7-2.2c-0.2-0.7-0.4-1.4-0.5-2c-0.2-0.8-0.5-1.6-0.7-2.5c-0.1-0.5-0.3-1-0.6-1.4
c-0.2-0.2-0.4-0.4-0.6-0.6c-0.4,0.1-0.9,0.3-1.4,0.4v4.1c0,0.2,0.1,0.3,0.2,0.5c0.2,0.2,0.4,0.4,0.6,0.5l0,0l0,0
c0.3,0.2,0.6,0.4,0.8,0.7c0.3,0.5,0.3,1,0,1.5c-0.3,0.5-0.8,0.7-1.3,0.7h-6.6c-0.4,0-0.8-0.1-1.1-0.4c-0.3,0.3-0.7,0.4-1.1,0.4
h-6.6c-0.5,0-1-0.2-1.3-0.6c-0.3-0.4-0.3-0.9-0.2-1.4l0-0.1l0,0c0.2-0.4,0.5-0.7,0.9-0.9l0,0l0,0c0.2-0.1,0.4-0.3,0.5-0.4
c0.1-0.1,0.2-0.3,0.1-0.4l-0.4-6.7h-5.5l-0.2,6.6c0,0.2,0,0.3,0.2,0.5c0.1,0.2,0.3,0.4,0.5,0.5c0.4,0.2,0.7,0.5,0.9,0.9l0,0.1
l0,0.1c0.2,0.5,0.1,1-0.2,1.4c-0.3,0.4-0.8,0.6-1.3,0.6h-6.6c-0.4,0-0.9-0.1-1.2-0.5c-0.3,0.3-0.7,0.4-1.1,0.4h-6.6
c-0.5,0-1-0.2-1.3-0.7c-0.3-0.4-0.3-1-0.1-1.4c0.2-0.5,0.5-0.8,1-1c0.2-0.1,0.4-0.3,0.6-0.5c0.1-0.2,0.2-0.3,0.2-0.5v-4.9
l-0.8-0.1c-0.2,0-0.4,0-0.5,0c0,0,0,0,0,0l0,0l0,0c-0.4,0.5-0.7,1.4-0.9,2c-0.3,0.9-0.6,1.8-0.8,2.8c-0.2,0.7-0.3,1.4-0.5,2.1
c-0.2,0.8-0.3,1.5-0.6,2.2c-0.2,0.6-0.4,1.2-0.8,1.8l-0.8,1.5c-0.7,1.1-1.5,2.2-2.4,3.2c-1.2,1.4-2.8,2.2-4.6,2.5l0,0
c-0.1,0-0.3,0-0.4,0c-0.3,0-0.5,0-0.7-0.1c-0.5-0.2-0.9-0.6-0.9-1.2c-0.1-0.6,0.2-1,0.6-1.3c0.6-0.5,1.2-1.6,1.5-2.3
c0.5-1.2,1-2.4,1.3-3.6c0.3-1.1,0.6-2.2,0.9-3.2c0.4-1.2,0.7-2.3,1.2-3.5c0.4-1.1,1-2.2,1.7-3.2c0.2-0.2,0.3-0.4,0.5-0.6
c-0.6-0.2-1.1-0.4-1.7-0.7c-0.6-0.3-1.2-0.7-1.8-1.2c-0.6-0.5-1.1-1.2-1.5-1.9c-1-1.6-1.3-3.4-0.6-5.3c0.6-1.7,2-2.9,3.7-3.6
c1.3-0.6,2.7-0.8,4.1-0.9c0.8,0,1.5,0,2.3,0c0.7,0,1.4,0.1,2.2,0.2c1.2,0.2,2.4,0.5,3.6,0.9c1.1,0.4,2.2,0.6,3.3,0.8
c0.7,0.1,1.2,0.5,1.4,1.2l0,0.1l0,0.1c0.1,0.8-0.4,1.4-1.1,1.7c-0.2,0.1-0.4,0.4-0.6,0.5c-0.1,0.2-0.3,0.4-0.3,0.6v13.2
c0,0.2,0.1,0.3,0.2,0.5c0.2,0.2,0.4,0.4,0.6,0.5l0,0l0,0c0.3,0.1,0.5,0.3,0.7,0.5l0,0c0.2-0.2,0.4-0.4,0.6-0.5l0,0l0,0
c0.2-0.1,0.5-0.3,0.7-0.5c0.1-0.1,0.2-0.3,0.2-0.5l0.5-14.9c0-0.2-0.1-0.4-0.2-0.5c-0.1-0.2-0.4-0.4-0.6-0.5c-0.7-0.3-1.1-1-1-1.7
c0.1-0.8,0.7-1.3,1.5-1.3h6.6c0.7,0,1.3,0.4,1.5,1.2l0,0.1l0,0.1c0.1,0.8-0.4,1.5-1.1,1.7c-0.2,0.1-0.4,0.3-0.6,0.5
c-0.1,0.2-0.2,0.4-0.3,0.6l-0.2,4.7h5.1l-0.3-4.6c0-0.2-0.1-0.4-0.3-0.6c-0.2-0.2-0.4-0.4-0.6-0.5c-0.7-0.3-1.1-0.9-1.1-1.6v0l0,0
c0.1-0.8,0.7-1.3,1.5-1.3h6.6c0.7,0,1.3,0.4,1.5,1.2l0,0l0,0c0.1,0.8-0.3,1.5-1,1.8c-0.2,0.1-0.4,0.3-0.5,0.5
c-0.1,0.2-0.2,0.3-0.2,0.5l1,14.9c0,0.2,0.1,0.4,0.3,0.5c0.2,0.2,0.4,0.4,0.7,0.5l0,0l0,0C100.8,42.5,101,42.6,101.2,42.9
L101.2,42.9z"/>
<g>
<g>
<path class="st2" d="M7.1,44.9c-0.8,0-1.5-0.1-2.1-0.3c-0.6,0-1.2-0.2-1.7-0.5c-1.3-0.7-1.7-1.7-1.4-2.9
c0.4-1.2,1.2-1.8,2.6-1.8l0.2,0c0.3,0,0.7,0.1,1.1,0.3c0.4,0.2,0.7,0.4,1,0.5c0.5,0.2,1,0.4,1.5,0.6c0.6,0.3,1.1,0.4,1.7,0.5
c0.3,0.1,0.6,0.1,1,0.1c0.7,0,1.5-0.2,2.2-0.5c0.7-0.3,1.4-0.8,2-1.4c0.5-0.5,1-1.1,1.4-1.7c0,0,0-0.1,0-0.2
c0-0.1,0-0.1-0.1-0.1c-1.6-0.9-3.2-2.1-4.6-3.3c-1.5-1.3-2.9-3.3-4.2-5.8c-0.8-1.6-1.6-3.4-2.3-5.3c-0.7-1.9-1.2-3.8-1.6-5.6
c-0.1-0.7-0.4-1.3-0.8-1.9c-0.4-0.6-0.8-1-1.3-1.2c-0.3-0.2-0.4-0.3-0.4-0.4c0-0.2,0.1-0.4,0.4-0.4h8.5c0.2,0,0.4,0.1,0.4,0.3
c0,0.1-0.1,0.2-0.4,0.4c-0.9,0.5-1.5,1.3-1.6,2.4c-0.1,0.4-0.1,0.8,0,1.3c0,0.4,0.1,0.8,0.2,1.2c0.1,0.8,0.3,1.5,0.5,2.1
c1.3,3.6,3.2,6.7,5.5,9.2c1,1.1,2.3,2.2,3.7,3.1c0,0,0.1,0,0.1,0c0,0,0,0,0.1,0c0.1,0,0.1-0.1,0.1-0.1c0,0,0.4-0.9,0.5-1.1
c0.5-1.1,0.8-2.3,1.1-3.7c0.2-1.3,0.3-2.8,0.1-4.4c-0.1-1.1-0.4-2.2-0.8-3.3c-0.4-1.1-0.8-2.2-1.3-3.1c-0.2-0.3-0.4-0.7-0.6-1.1
c-0.3-0.5-0.5-0.9-0.6-1.3c-0.1-0.3-0.2-0.7-0.2-1.1c0-0.9,0.4-1.7,1.1-2.2c0.4-0.3,0.8-0.4,1.3-0.4c0.5,0,1.1,0.2,1.5,0.5
c0.5,0.4,0.9,0.7,1.1,1.2c0.7,1,1.1,2.3,1.2,3.9c0.1,1.5,0.1,3.2,0,4.9c-0.2,2.3-0.6,4.6-1.1,6.8c-0.5,2.2-1.1,4-1.8,5.5
c-0.7,1.4-1.5,2.8-2.5,4.3c-1,1.5-2.2,2.7-3.5,3.7c-2.1,1.5-4.3,2.3-6.6,2.3C7.3,44.9,7.2,44.9,7.1,44.9z"/>
</g>
<g>
<path class="st2" d="M48.8,44.1C48.8,44.1,48.8,44.1,48.8,44.1l-4.5,0C44.1,44.1,44,44,44,44c0-0.1,0-0.2,0-0.3
c0.1-0.1,0.2-0.2,0.3-0.3c0.3-0.1,0.7-0.4,1-0.8c0.3-0.4,0.5-0.8,0.5-1.3V26.4c0-0.5-0.2-0.9-0.5-1.3c-0.3-0.4-0.7-0.7-1-0.9
c-0.3-0.1-0.4-0.3-0.3-0.5c0,0,0-0.1,0.1-0.1c0.1-0.1,0.1-0.1,0.3-0.1h6.6c0.2,0,0.3,0.1,0.3,0.2c0,0.2-0.1,0.4-0.4,0.5
c-0.4,0.2-0.7,0.5-1,0.9c-0.3,0.4-0.5,0.9-0.5,1.3l0,14c0,1,0.3,1.8,0.8,2.2c0.6,0.5,1.2,0.7,2,0.7c0.1,0,0.3,0,0.4,0
c1.4,0,2.4-0.2,3-0.7c1.1-0.8,1.6-1.9,1.7-3.5c0-0.7-0.1-1.4-0.3-2.1c-0.2-0.7-0.6-1.2-1.2-1.7c-0.4-0.3-1-0.7-1.9-1
c-0.9-0.4-1.5-0.8-1.8-1.1c-1-0.6-1.5-1.5-1.5-2.8c0-0.3,0-0.6,0.1-0.9c0.1-0.3,0.2-0.7,0.4-1c0.4-0.5,0.9-0.8,1.5-0.8
c0.8,0,1.2,0.4,1.2,1.2c0,0.4-0.1,0.8-0.4,1.2c-0.3,0.3-0.6,0.5-0.9,0.6c-0.3,0.1-0.4,0.3-0.4,0.8c0,0.2,0.1,0.5,0.3,0.8
c0.2,0.3,0.5,0.6,1,0.9c0.5,0.3,1.1,0.5,1.7,0.7c0.7,0.2,1.3,0.4,1.9,0.6c0.8,0.3,1.6,0.7,2.3,1.2c0.7,0.5,1.3,1.2,1.6,1.9
c0.4,0.8,0.4,1.6,0.2,2.5c-0.2,0.9-0.6,1.6-1.2,2.3c-0.7,0.8-1.6,1.3-2.8,1.5c-1.1,0.2-2.4,0.3-3.8,0.3L48.8,44.1z"/>
</g>
<g>
<path class="st2" d="M59.4,53.2c-0.1,0-0.2,0-0.3-0.1c-0.1-0.1-0.2-0.1-0.2-0.2c0,0,0-0.1,0.1-0.2c0.7-0.5,1.3-1.4,1.9-2.8
c0.5-1.2,1-2.5,1.4-3.8c0.4-1.3,0.7-2.4,0.9-3.2c0.4-1.2,0.7-2.3,1.1-3.4c0.4-1.1,0.9-2.1,1.5-2.9c0.6-0.8,1.2-1.3,1.7-1.8
c0.1,0,0.1-0.1,0.1-0.2c0-0.1-0.1-0.1-0.2-0.2c-0.4-0.1-0.9-0.2-1.3-0.3c-0.7-0.2-1.3-0.4-1.9-0.7c-0.6-0.3-1.1-0.7-1.6-1.1
c-0.5-0.4-0.9-0.9-1.3-1.5c-0.9-1.5-1-2.9-0.5-4.2c0.5-1.3,1.5-2.3,3-2.9c1-0.4,2.2-0.7,3.6-0.8c0.3,0,0.6,0,0.9,0
c0.4,0,0.9,0,1.3,0c0.7,0,1.4,0.1,2.1,0.2c1.2,0.2,2.4,0.5,3.4,0.9c1,0.4,2.2,0.7,3.6,0.9c0.2,0,0.3,0.1,0.4,0.3
c0,0.2-0.1,0.4-0.4,0.5c-0.4,0.2-0.7,0.5-1,0.9c-0.3,0.4-0.5,0.9-0.5,1.4v13.2c0,0.5,0.2,0.9,0.5,1.3c0.3,0.4,0.7,0.7,1,0.8
c0.1,0,0.2,0.1,0.3,0.2c0.1,0.2,0.1,0.3,0.1,0.3c0,0-0.1,0.1-0.3,0.1h-6.6c-0.1,0-0.2,0-0.3-0.1c0-0.1,0-0.2,0-0.3
c0.1-0.1,0.2-0.3,0.3-0.3c0.3-0.1,0.7-0.4,1-0.8c0.3-0.4,0.5-0.8,0.5-1.3v-5.8c0-0.1-0.1-0.2-0.2-0.2l-0.4,0l-1.4-0.1
c-0.3,0-0.5,0-0.7,0c-0.3,0.1-0.6,0.2-0.8,0.5c-0.4,0.5-0.8,1.3-1.1,2.3c-0.4,1-0.6,2-0.9,2.9c-0.2,0.7-0.3,1.4-0.5,2.1
c-0.2,0.8-0.4,1.5-0.5,2.2c-0.2,0.6-0.4,1.1-0.7,1.5L65.8,48c-0.5,0.9-1.3,1.9-2.3,3c-1,1.1-2.3,1.9-3.9,2.1
C59.6,53.2,59.5,53.2,59.4,53.2z M70.1,24.5c-0.2,0-0.5,0-0.7,0c-0.8,0.1-1.6,0.5-2.2,1c-0.8,0.6-1.3,1.4-1.6,2.2
c-0.3,0.9-0.3,1.8,0,2.7c0.3,1.1,1,1.9,1.9,2.4c0.7,0.5,1.7,0.8,3,1c0.5,0.1,1.1,0.1,1.6,0.1c0,0,0.8,0,1.1,0c0,0,0.6,0,0.6,0
c0.1,0,0.1,0,0.1-0.1c0,0,0.1-0.1,0.1-0.1v-8.4c0-0.2-0.1-0.4-0.4-0.5c-0.2-0.1-0.5-0.2-0.8-0.2l-1-0.1c-0.4,0-0.9-0.1-1.3-0.1
C70.3,24.5,70.2,24.5,70.1,24.5z"/>
</g>
<g>
<path class="st2" d="M93.5,44.1c-0.2,0-0.3-0.1-0.3-0.1c-0.1-0.1-0.1-0.2,0-0.3c0.1-0.1,0.2-0.2,0.3-0.3c0.3-0.2,0.7-0.4,1-0.8
c0.3-0.4,0.4-0.8,0.4-1.3l-0.5-7.6c0-0.1-0.1-0.2-0.2-0.2h-7.4c-0.1,0-0.2,0.1-0.2,0.2l-0.2,7.6c0,0.5,0.1,0.9,0.4,1.3
c0.3,0.4,0.6,0.7,1,0.8c0.1,0.1,0.2,0.2,0.3,0.3c0.1,0.2,0,0.3,0,0.3c0,0-0.1,0.1-0.3,0.1h-6.6c-0.1,0-0.3,0-0.3-0.1
c0,0-0.1-0.1,0.1-0.3c0.1-0.1,0.2-0.2,0.3-0.3c0.3-0.1,0.7-0.4,1.1-0.8c0.4-0.4,0.5-0.8,0.6-1.3l0.5-14.9c0-0.5-0.1-0.9-0.5-1.3
c-0.3-0.4-0.7-0.7-1-0.9c-0.2-0.1-0.4-0.3-0.3-0.5c0-0.1,0.1-0.2,0.3-0.2h6.6c0.2,0,0.3,0.1,0.3,0.2c0,0.2-0.1,0.4-0.4,0.5
c-0.4,0.2-0.7,0.5-1,0.9c-0.3,0.4-0.5,0.9-0.5,1.3l-0.2,5.7c0,0.1,0,0.1,0.1,0.1c0,0,0.1,0.1,0.1,0.1H94c0.1,0,0.1,0,0.1-0.1
s0.1-0.1,0.1-0.1l-0.4-5.7c0-0.5-0.2-0.9-0.6-1.3c-0.3-0.4-0.7-0.7-1.1-0.9c-0.3-0.1-0.4-0.4-0.4-0.5c0-0.1,0.1-0.2,0.3-0.2h6.6
c0.2,0,0.3,0.1,0.3,0.2c0,0.2-0.1,0.4-0.3,0.5c-0.3,0.2-0.7,0.5-1,0.9c-0.3,0.4-0.5,0.9-0.4,1.3l1,14.9c0,0.5,0.2,0.9,0.6,1.3
c0.4,0.4,0.7,0.7,1.1,0.8c0.1,0.1,0.2,0.1,0.3,0.3c0.1,0.2,0.1,0.3,0.1,0.3c0,0-0.1,0.1-0.3,0.1H93.5z"/>
</g>
<g>
<path class="st2" d="M26.4,44.3c-0.8,0-1.5-0.2-2.1-0.7c-1-0.7-1.5-1.8-1.6-3.1c-0.1-1,0-1.8,0.4-2.3c0.5-0.8,1.1-1.1,1.7-1.1
c0.4,0,0.7,0.1,1.1,0.4c0.3,0.2,0.5,0.5,0.7,0.9c0.2,0.4,0.3,0.9,0.2,1.3c-0.1,0.5-0.3,0.9-0.7,1.3c-0.4,0.4-0.5,0.8-0.3,1.3
c0.1,0.4,0.4,0.5,0.8,0.5c0,0,0.1,0,0.1,0c0.5,0,1-0.3,1.3-0.7c0.2-0.2,0.4-0.7,0.7-1.4c0.3-0.7,0.5-1.5,0.7-2.5
c0.3-1.5,0.5-3.3,0.6-5.3c0.1-2,0.1-4.1-0.1-6.2c-0.1-0.5-0.3-0.9-0.7-1.4c-0.4-0.5-0.9-0.8-1.5-1c-0.3-0.1-0.4-0.2-0.4-0.5
c0-0.1,0.1-0.2,0.3-0.2h14.1c0.2,0,0.3,0.1,0.3,0.2c0,0.2-0.1,0.4-0.4,0.5c-0.3,0.2-0.7,0.5-1,0.9c-0.3,0.4-0.5,0.9-0.5,1.3
v14.9c0,0.5,0.2,0.9,0.5,1.3c0.3,0.4,0.7,0.7,1,0.8c0.1,0.1,0.2,0.1,0.3,0.3c0.1,0.2,0.1,0.3,0.1,0.3c0,0-0.1,0.1-0.3,0.1h-6.6
c-0.2,0-0.3,0-0.3-0.1c0-0.1,0-0.2,0-0.3c0-0.1,0.2-0.2,0.3-0.3c0.4-0.2,0.7-0.4,1-0.8c0.3-0.4,0.5-0.8,0.5-1.3V27
c0-0.4-0.2-0.9-0.5-1.6c-0.3-0.6-0.9-0.9-1.9-0.9c-1,0-1.6,0.3-2,0.8c-0.4,0.5-0.6,1.1-0.6,1.8c-0.2,2.4-0.4,4.9-0.6,7.4
c-0.2,2.6-0.7,4.7-1.4,6.5c-0.8,2-1.8,3.1-2.9,3.2C26.8,44.2,26.6,44.3,26.4,44.3z"/>
</g>
<g>
<path class="st2" d="M122.3,52.4c-0.1,0-0.1,0-0.2,0c-1.6-0.2-2.9-0.7-4-1.5c-1.1-0.8-1.9-1.7-2.5-2.5c-0.5-0.8-1-1.9-1.4-3.2
c-0.2-0.7-0.5-1.4-0.6-2.1c-0.2-0.7-0.4-1.4-0.6-2.1c-0.2-0.9-0.5-1.7-0.7-2.4c-0.2-0.8-0.5-1.4-0.9-1.9
c-0.5-0.5-0.9-0.9-1.4-1.1c0,0,0,0-0.1,0c0,0,0,0-0.1,0c-0.8,0.3-1.6,0.5-2.4,0.6c-0.1,0-0.2,0.1-0.2,0.2v5
c0,0.5,0.2,0.9,0.5,1.3c0.3,0.4,0.7,0.7,1,0.8c0.1,0.1,0.2,0.1,0.3,0.3c0,0.1,0.1,0.2,0,0.3c0,0-0.1,0.1-0.3,0.1h-6.6
c-0.1,0-0.2,0-0.3-0.1c0-0.1,0-0.2,0-0.3c0.1-0.1,0.2-0.2,0.3-0.3c0.4-0.2,0.7-0.4,1-0.8c0.3-0.4,0.5-0.8,0.5-1.3V26.5
c0-0.5-0.2-0.9-0.5-1.3c-0.3-0.4-0.7-0.7-1-0.9c-0.2-0.1-0.4-0.3-0.3-0.5c0-0.1,0.1-0.2,0.3-0.2h6.6c0.2,0,0.3,0.1,0.3,0.2
c0,0.2-0.1,0.4-0.4,0.5c-0.4,0.1-0.7,0.4-1,0.9c-0.3,0.4-0.5,0.9-0.5,1.3V35c0,0.1,0,0.1,0.1,0.1c0,0,0.1,0,0.1,0c0,0,0,0,0,0
c0.8-0.1,1.6-0.3,2.4-0.5c0.9-0.3,1.7-0.6,2.5-1.1c0.4-0.3,0.9-0.6,1.3-1c0.5-0.4,0.8-0.9,1.1-1.4c0.3-0.8,0.4-1.5,0.3-2.1
c-0.1-0.5-0.3-0.9-0.6-1.4c-0.3-0.5-0.4-0.9-0.5-1.2c0-0.2-0.1-0.5-0.1-0.9c0-0.4,0-0.7,0.1-1c0.4-1.1,1.1-1.6,2.1-1.6l0.2,0
c0.7,0.1,1.3,0.4,1.8,1.1c0.5,0.8,0.7,1.7,0.5,2.8c-0.2,1.1-0.5,2-0.8,2.7c-0.4,0.9-1,1.7-1.6,2.5c-0.7,0.8-1.3,1.3-1.9,1.7
c-0.5,0.3-0.9,0.6-1.4,0.8c-0.1,0-0.1,0.1-0.1,0.2c0,0.1,0,0.1,0.1,0.2c0.3,0.2,0.5,0.4,0.8,0.6c0.4,0.4,0.8,0.9,1.2,1.4
c0.6,0.8,1.2,1.7,1.6,2.8c0.4,1.1,0.9,2.2,1.3,3.4c0.4,1,0.7,2.1,1.1,3.2c0.4,1.1,0.8,2.1,1.5,3.1c0.7,1.1,1.6,2,2.6,2.6
c0.2,0.1,0.1,0.2,0.1,0.2c0,0.1-0.1,0.1-0.1,0.2C122.6,52.4,122.5,52.4,122.3,52.4z"/>
</g>
<g>
<path class="st2" d="M138.3,44.1c-0.2,0-0.4-0.1-0.5-0.3c0-0.1,0.2-0.3,0.4-0.4c0.4-0.2,0.8-0.7,1.2-1.3c0.3-0.6,0.4-1.3,0.3-2
l-3-12.6c0-0.1-0.1-0.2-0.2-0.2h-8.1c-0.1,0-0.2,0.1-0.2,0.2c-0.3,1.4-0.5,2.7-0.7,4c-0.2,1.5-0.4,2.9-0.5,4.4
c-0.1,1.4-0.1,2.8,0.1,4.1c0.1,0.8,0.3,1.5,0.5,2.1s0.7,1.1,1.3,1.4c0.4,0.3,0.4,0.3,0.4,0.4c0,0.1,0,0.3-0.4,0.3h-7.6
c-0.3,0-0.5,0-0.5-0.2c0,0,0-0.1,0-0.2c0.1-0.2,0.2-0.3,0.2-0.3c0.8-1.3,1.4-2.5,1.9-3.6c0.6-1.4,1.1-2.8,1.6-4.3
c0.5-1.5,0.9-3,1.3-4.6c0.4-1.4,0.7-2.9,1-4.3c0.3-1.4,0.7-2.9,1-4.3c0.4-2,0.9-3.9,1.3-5.8c0-0.1,0-0.1-0.1-0.2
c0,0-0.1-0.1-0.1-0.1c0,0,0,0,0,0c-0.6,0.1-1.2,0.3-1.7,0.6c-0.7,0.3-1.2,0.8-1.6,1.3c-0.1,0.1-0.2,0.2-0.4,0.3
c-0.1,0.1-0.2,0.1-0.3,0.1c-0.1,0-0.3-0.1-0.4-0.2c-0.2-0.3-0.2-0.5-0.2-0.6c0.1-0.2,0.1-0.4,0.2-0.5c0.7-1.6,1.7-2.8,2.9-3.5
c1.3-0.7,2.6-1.1,3.9-1.1l0.2,0c1.6,0,3.1,0.3,4.4,0.9c1.4,0.7,2.4,2,2.9,4l5.1,21.7c0.2,0.7,0.4,1.4,0.8,2
c0.4,0.6,1,1.2,1.9,1.8c0.3,0.1,0.5,0.4,0.5,0.6c0,0.2,0,0.2-0.1,0.3c-0.1,0.1-0.2,0.1-0.3,0.1H138.3z M130.9,16.2
c-0.1,0-0.2,0.1-0.2,0.2c-0.3,1.4-0.6,2.8-1,4.3c-0.4,1.5-0.7,3-1.1,4.6c0,0.1,0,0.1,0,0.2s0.1,0.1,0.2,0.1h7.1
c0.1,0,0.1,0,0.2-0.1c0,0,0.1-0.1,0-0.2l-1.1-4.6c-0.6-2.6-1.9-4.1-3.8-4.4C131.2,16.2,131.1,16.2,130.9,16.2
C130.9,16.2,130.9,16.2,130.9,16.2z"/>
</g>
</g>
<g>
<path class="st3" d="M23.1,17.4c-0.1-1.6-0.6-2.9-1.3-4c-0.3-0.4-0.7-0.8-1.2-1.2c-1-0.8-2.2-0.8-3.1-0.1
c-0.8,0.6-1.1,1.3-1.1,2.3c0,0.4,0.1,0.8,0.2,1.1c0.1,0.4,0.3,0.8,0.6,1.2l0,0.1c0.2,0.4,0.4,0.8,0.6,1.1c0.5,0.9,0.9,1.9,1.3,3
c0.4,1.1,0.7,2.2,0.8,3.3c0.2,1.6,0.2,3.1-0.1,4.4c-0.2,1.3-0.6,2.5-1,3.5l0,0.1c-0.1,0.2-0.2,0.4-0.3,0.6
c-0.1,0.2-0.1,0.3-0.2,0.5c-1.4-0.9-2.6-2-3.6-3.1c-2.3-2.5-4.1-5.6-5.4-9.1c-0.2-0.6-0.4-1.2-0.5-2c-0.1-0.4-0.1-0.8-0.2-1.2
c0-0.4,0-0.8,0-1.2c0.1-1,0.6-1.8,1.5-2.2c0.3-0.2,0.6-0.3,0.6-0.6c0-0.3-0.3-0.5-0.6-0.5H1.6C1.2,13.4,1,13.7,1,14
c0,0.2,0.2,0.4,0.5,0.6c0.4,0.2,0.8,0.6,1.2,1.1c0.4,0.5,0.6,1.1,0.8,1.8c0.4,1.8,0.9,3.7,1.6,5.7c0.7,1.9,1.5,3.7,2.3,5.4
c1.3,2.5,2.7,4.5,4.2,5.9c1.4,1.3,3,2.4,4.6,3.4c-0.4,0.6-0.9,1.2-1.4,1.7c-0.6,0.6-1.2,1-1.9,1.4c-0.9,0.4-1.9,0.6-3,0.4
c-0.5-0.1-1.1-0.2-1.6-0.5c-0.5-0.2-1-0.5-1.5-0.6c-0.3-0.2-0.6-0.4-1-0.6c-0.4-0.2-0.8-0.3-1.2-0.3l0,0l-0.2,0
c-1.5,0-2.4,0.7-2.8,2c-0.3,0.9-0.2,2.2,1.5,3.1c0.5,0.3,1.1,0.5,1.7,0.5C5.5,45,6.3,45.1,7,45.1c0.1,0,0.2,0,0.4,0
c2.3,0,4.6-0.8,6.7-2.4c1.3-1,2.5-2.3,3.5-3.8c1-1.5,1.9-3,2.6-4.3c0.7-1.4,1.3-3.3,1.8-5.5c0.5-2.2,0.9-4.5,1.1-6.9
C23.2,20.6,23.2,19,23.1,17.4L23.1,17.4z"/>
<path class="st3" d="M61.3,40.1c0.2-0.9,0.2-1.8-0.2-2.6c-0.4-0.8-0.9-1.4-1.7-2c-0.8-0.5-1.6-0.9-2.4-1.2
c-0.6-0.2-1.3-0.4-1.9-0.6c-0.6-0.2-1.2-0.4-1.7-0.7c-0.4-0.2-0.8-0.5-0.9-0.8c-0.2-0.4-0.3-0.6-0.3-0.7c0-0.5,0.2-0.6,0.2-0.6
c0.4-0.1,0.7-0.3,1-0.7c0.3-0.4,0.5-0.8,0.5-1.3c0-0.9-0.5-1.4-1.4-1.4c-0.7,0-1.2,0.3-1.6,0.8c-0.2,0.3-0.4,0.7-0.4,1
c-0.1,0.4-0.1,0.7-0.1,0.9c0,1.4,0.5,2.4,1.6,3c0.4,0.3,1,0.7,1.9,1.1c0.8,0.4,1.4,0.7,1.8,1c0.5,0.4,0.9,0.9,1.1,1.6
c0.2,0.7,0.3,1.3,0.3,2c-0.1,1.5-0.6,2.6-1.6,3.3c-0.6,0.5-1.6,0.7-2.9,0.7c-0.1,0-0.3,0-0.4,0c-0.7,0-1.3-0.2-1.8-0.7
c-0.5-0.4-0.8-1.1-0.8-2.1l0-14c0-0.4,0.1-0.8,0.5-1.2c0.3-0.4,0.6-0.7,1-0.8c0.4-0.2,0.5-0.5,0.5-0.7c0-0.1-0.1-0.4-0.5-0.4
h-6.6c-0.4,0-0.5,0.2-0.5,0.4c0,0.2,0,0.5,0.5,0.7c0.3,0.1,0.6,0.4,0.9,0.8c0.3,0.4,0.4,0.8,0.4,1.2v14.9c0,0.4-0.1,0.8-0.4,1.1
c-0.3,0.4-0.6,0.6-1,0.8c-0.2,0.1-0.3,0.2-0.4,0.4c-0.1,0.2-0.1,0.4,0,0.5c0.1,0.1,0.2,0.2,0.5,0.2h4.4v0l4.6,0
c1.4,0,2.7-0.1,3.8-0.3c1.2-0.2,2.2-0.7,2.9-1.6C60.7,41.8,61.1,41,61.3,40.1L61.3,40.1z"/>
<path class="st3" d="M79,43.2c-0.3-0.1-0.7-0.4-1-0.7c-0.3-0.3-0.4-0.7-0.4-1.2V28.1c0-0.4,0.2-0.8,0.5-1.2
c0.3-0.4,0.6-0.7,1-0.9c0.4-0.2,0.5-0.5,0.5-0.7c-0.1-0.3-0.3-0.4-0.5-0.4c-1.4-0.2-2.6-0.5-3.6-0.9c-1-0.4-2.2-0.7-3.4-0.9
c-0.7-0.1-1.4-0.2-2.1-0.2c-0.7,0-1.5-0.1-2.2,0c-1.4,0.1-2.7,0.3-3.7,0.8c-1.6,0.7-2.6,1.7-3.1,3c-0.5,1.4-0.3,2.9,0.5,4.4
c0.3,0.6,0.8,1.2,1.3,1.6c0.5,0.4,1.1,0.8,1.6,1.1c0.6,0.3,1.3,0.6,2,0.7c0.4,0.1,0.9,0.2,1.3,0.3c-0.6,0.4-1.2,1-1.8,1.8
c-0.6,0.8-1.2,1.8-1.5,2.9c-0.4,1.1-0.8,2.3-1.1,3.4c-0.2,0.8-0.6,1.9-0.9,3.2c-0.4,1.3-0.8,2.6-1.4,3.8
c-0.6,1.3-1.3,2.3-1.9,2.7c-0.2,0.1-0.2,0.2-0.2,0.4c0,0.1,0.1,0.2,0.3,0.3c0.1,0,0.3,0.1,0.4,0.1c0.1,0,0.2,0,0.3,0
c1.6-0.3,3-1,4-2.2c1-1.2,1.8-2.2,2.3-3.1l0.8-1.4c0.3-0.5,0.5-1,0.7-1.6c0.2-0.7,0.4-1.4,0.5-2.2c0.2-0.7,0.3-1.4,0.5-2.1
C68.7,40,69,39,69.4,38c0.3-1,0.7-1.8,1.1-2.3c0.2-0.3,0.4-0.4,0.7-0.5c0.2,0,0.5,0,0.7,0l1.4,0.1c0.1,0,0.3,0,0.4,0v5.8
c0,0.4-0.1,0.8-0.4,1.2c-0.3,0.4-0.6,0.6-0.9,0.7c-0.2,0.1-0.4,0.2-0.4,0.4c-0.1,0.2,0,0.4,0,0.5c0.1,0.1,0.2,0.2,0.5,0.2h6.6
c0.2,0,0.4-0.1,0.5-0.2c0.1-0.1,0.1-0.3-0.1-0.6C79.2,43.4,79.1,43.3,79,43.2L79,43.2z M73.6,25.5v8.4c-0.5,0-1,0-1.5,0l-0.2,0
c-0.5,0-1,0-1.5-0.1c-1.2-0.2-2.2-0.5-2.9-1c-0.9-0.5-1.5-1.3-1.8-2.3c-0.3-0.9-0.3-1.7,0-2.6c0.3-0.8,0.8-1.5,1.6-2.1
c0.6-0.5,1.4-0.8,2.1-1c0.2,0,0.4,0,0.6,0c0.1,0,0.3,0,0.4,0c0.4,0,0.8,0.1,1.3,0.1c0.3,0,0.6,0.1,0.9,0.1c0.3,0,0.5,0.1,0.7,0.2
C73.6,25.3,73.6,25.4,73.6,25.5L73.6,25.5z"/>
<path class="st3" d="M100.1,43.2c-0.3-0.1-0.7-0.4-1-0.8c-0.3-0.3-0.5-0.7-0.5-1.1l-1-14.9c0-0.4,0.1-0.8,0.4-1.2
c0.3-0.4,0.6-0.7,0.9-0.8c0.3-0.1,0.5-0.4,0.4-0.8c0-0.1-0.1-0.4-0.5-0.4h-6.6c-0.4,0-0.5,0.3-0.5,0.4c0,0.2,0.1,0.5,0.5,0.7
c0.3,0.1,0.7,0.4,1,0.8c0.3,0.4,0.5,0.8,0.5,1.2l0.4,5.7h-7.2l0.2-5.7c0-0.4,0.2-0.8,0.5-1.2c0.3-0.4,0.6-0.7,1-0.8
c0.5-0.2,0.5-0.5,0.5-0.8c0-0.1-0.1-0.4-0.5-0.4h-6.6c-0.4,0-0.5,0.2-0.5,0.4c0,0.3,0.1,0.6,0.4,0.7c0.3,0.1,0.6,0.4,0.9,0.8
c0.3,0.4,0.4,0.8,0.4,1.2l-0.5,14.9c0,0.4-0.2,0.8-0.5,1.1c-0.3,0.4-0.7,0.6-1,0.8c-0.1,0.1-0.3,0.2-0.4,0.3
c-0.1,0.2-0.2,0.4-0.1,0.5c0.1,0.2,0.4,0.2,0.5,0.2h6.6c0.2,0,0.4-0.1,0.5-0.2c0.1-0.1,0.1-0.2,0-0.5c-0.1-0.2-0.2-0.3-0.4-0.4
c-0.3-0.1-0.6-0.4-0.9-0.7c-0.3-0.3-0.4-0.7-0.4-1.1l0.2-7.6h7.4l0.5,7.6c0,0.4-0.1,0.8-0.4,1.1c-0.3,0.4-0.6,0.6-0.9,0.7
c-0.2,0.1-0.3,0.2-0.4,0.4c-0.1,0.2,0,0.4,0,0.5c0.1,0.1,0.2,0.2,0.5,0.2h6.6c0.2,0,0.4-0.1,0.5-0.2c0.1-0.1,0.1-0.3-0.1-0.5
C100.4,43.4,100.2,43.3,100.1,43.2L100.1,43.2z"/>
<path class="st3" d="M41.9,43.2c-0.3-0.1-0.6-0.4-1-0.8c-0.3-0.3-0.5-0.7-0.5-1.1V26.5c0-0.4,0.2-0.8,0.5-1.2
c0.3-0.4,0.6-0.7,0.9-0.8c0.3-0.1,0.5-0.4,0.5-0.7c0-0.1-0.1-0.4-0.5-0.4H27.8c-0.4,0-0.5,0.2-0.5,0.4c0,0.4,0.1,0.6,0.5,0.7
c0.6,0.2,1,0.5,1.4,0.9c0.4,0.5,0.6,0.9,0.7,1.3c0.2,2.1,0.2,4.2,0.1,6.2c-0.1,2-0.3,3.8-0.6,5.3c-0.2,0.9-0.5,1.8-0.7,2.4
c-0.3,0.7-0.5,1.1-0.7,1.3c-0.3,0.4-0.7,0.6-1.1,0.6c-0.5,0-0.7-0.2-0.7-0.4c-0.1-0.4,0-0.8,0.3-1.1c0.4-0.4,0.7-0.9,0.8-1.4
c0.1-0.5,0-1-0.2-1.5c-0.2-0.4-0.5-0.7-0.8-0.9c-1.2-0.7-2.3-0.4-3.1,0.8c-0.4,0.5-0.5,1.3-0.4,2.4c0.1,1.4,0.6,2.5,1.7,3.3
c0.6,0.5,1.4,0.7,2.2,0.7c0.2,0,0.3,0,0.5,0c1.3-0.1,2.3-1.2,3.1-3.3c0.7-1.7,1.1-3.9,1.4-6.5c0.2-2.6,0.4-5,0.6-7.4
c0-0.6,0.2-1.2,0.6-1.7c0.3-0.5,0.9-0.7,1.8-0.7c0.9,0,1.4,0.3,1.7,0.8c0.3,0.6,0.5,1.1,0.5,1.5v14.3c0,0.4-0.1,0.8-0.4,1.1
c-0.3,0.4-0.6,0.6-1,0.8c-0.2,0.1-0.3,0.3-0.4,0.4c-0.1,0.2-0.1,0.4,0,0.5c0.1,0.1,0.2,0.2,0.5,0.2h6.6c0.2,0,0.4-0.1,0.5-0.2
c0.1-0.1,0.1-0.3-0.1-0.5C42.2,43.4,42.1,43.3,41.9,43.2L41.9,43.2z"/>
<path class="st3" d="M122.8,51.8c-1-0.6-1.8-1.5-2.5-2.6c-0.6-0.9-1.1-1.9-1.4-3c-0.4-1.1-0.7-2.2-1.1-3.2
c-0.4-1.2-0.8-2.3-1.3-3.4c-0.4-1.1-1-2.1-1.6-2.8c-0.5-0.5-0.9-1-1.3-1.4c-0.3-0.3-0.5-0.5-0.8-0.7c0.5-0.3,1-0.5,1.4-0.8
c0.6-0.4,1.3-1,2-1.8c0.7-0.8,1.2-1.6,1.6-2.5c0.3-0.8,0.6-1.7,0.8-2.8c0.2-1.1,0-2.1-0.5-2.9c-0.5-0.7-1.1-1.1-1.9-1.2
c-1.2-0.1-2,0.5-2.5,1.8c-0.1,0.3-0.1,0.6-0.1,1c0,0.4,0.1,0.7,0.1,0.9c0,0.4,0.2,0.8,0.5,1.3c0.3,0.4,0.5,0.9,0.6,1.3
c0.2,0.6,0.1,1.3-0.2,2c-0.2,0.5-0.6,1-1,1.4c-0.5,0.4-0.9,0.7-1.3,1c-0.8,0.5-1.6,0.9-2.5,1.1c-0.8,0.2-1.6,0.4-2.3,0.5v-8.5
c0-0.4,0.2-0.8,0.5-1.2c0.3-0.4,0.6-0.7,1-0.8c0.5-0.2,0.5-0.5,0.5-0.7c0-0.1-0.1-0.4-0.5-0.4h-6.6c-0.4,0-0.5,0.2-0.5,0.4
c0,0.2,0,0.5,0.5,0.7c0.3,0.1,0.6,0.4,0.9,0.8c0.3,0.4,0.4,0.8,0.4,1.2v14.9c0,0.4-0.1,0.8-0.4,1.1c-0.3,0.4-0.6,0.6-1,0.8
c-0.2,0.1-0.3,0.2-0.4,0.4c-0.1,0.2-0.1,0.4,0,0.4c0.1,0.2,0.4,0.2,0.5,0.2h6.6c0.2,0,0.4-0.1,0.5-0.2c0.1-0.1,0.1-0.3,0-0.5
c-0.1-0.1-0.2-0.3-0.4-0.3c-0.3-0.1-0.7-0.4-1-0.7c-0.3-0.3-0.5-0.7-0.5-1.1v-5c0.8-0.1,1.6-0.4,2.4-0.6c0.4,0.2,0.9,0.5,1.3,1
c0.4,0.5,0.7,1.1,0.9,1.8c0.2,0.8,0.4,1.6,0.7,2.4c0.2,0.7,0.4,1.3,0.6,2.1c0.2,0.7,0.4,1.5,0.7,2.1c0.4,1.3,0.9,2.4,1.5,3.2
c0.6,0.9,1.4,1.8,2.5,2.6c1.1,0.8,2.5,1.4,4.1,1.6c0.1,0,0.2,0,0.2,0c0.2,0,0.3,0,0.4-0.1c0.2-0.1,0.3-0.2,0.3-0.3
C123.1,52,123,51.9,122.8,51.8L122.8,51.8z"/>
<path class="st3" d="M146.9,42.9c-0.8-0.6-1.5-1.2-1.8-1.8c-0.4-0.6-0.6-1.2-0.8-1.9l-5.1-21.7c-0.5-2.1-1.5-3.5-3-4.2
c-1.4-0.6-2.9-1-4.5-1l-0.2,0c-1.4,0-2.7,0.4-4,1.2c-1.3,0.7-2.3,1.9-3,3.6c-0.1,0.1-0.1,0.3-0.2,0.5c-0.1,0.2-0.1,0.5,0.2,0.8
c0.2,0.3,0.4,0.3,0.5,0.3c0.1,0,0.3,0,0.4-0.1c0.3-0.2,0.4-0.3,0.4-0.4c0.4-0.5,0.9-0.9,1.5-1.2c0.5-0.3,1.1-0.4,1.6-0.6
c-0.4,1.9-0.9,3.8-1.3,5.8c-0.3,1.5-0.7,2.9-1,4.3c-0.3,1.5-0.7,2.9-1,4.3c-0.4,1.6-0.9,3.1-1.3,4.6c-0.5,1.4-1,2.9-1.6,4.2
c-0.5,1.1-1.1,2.3-1.9,3.6c0,0.1-0.1,0.2-0.2,0.3c-0.1,0.2-0.1,0.4,0,0.4c0.1,0.2,0.4,0.3,0.7,0.3h7.6c0.4,0,0.6-0.3,0.6-0.5
c0-0.2-0.1-0.2-0.5-0.6c-0.6-0.3-1-0.7-1.2-1.3c-0.2-0.6-0.4-1.3-0.5-2c-0.2-1.3-0.2-2.6-0.1-4c0.1-1.4,0.3-2.9,0.5-4.4
c0.2-1.3,0.4-2.6,0.7-4h8.1l3,12.6c0.1,0.7,0.1,1.3-0.3,1.8c-0.3,0.6-0.7,1-1.1,1.2c-0.4,0.3-0.6,0.4-0.5,0.6
c0.1,0.3,0.3,0.5,0.7,0.5h8.7c0.2,0,0.4-0.1,0.5-0.2c0.1-0.1,0.1-0.2,0.1-0.4C147.5,43.3,147.3,43.1,146.9,42.9L146.9,42.9z
M135.9,25.3h-7.1c0.3-1.5,0.7-3.1,1.1-4.6c0.4-1.5,0.7-3,1-4.4c0.1,0,0.2,0,0.3,0c1.8,0.3,3,1.7,3.6,4.3L135.9,25.3L135.9,25.3z
"/>
</g>
<g>
<g>
<path class="st2" d="M58.4,16.6c-0.4,0-0.6-0.1-0.8-0.2c-0.2-0.1-0.4-0.3-0.5-0.5c-0.1-0.2-0.2-0.4-0.2-0.7c0-0.3,0-0.6,0-0.8
c0-0.2,0-0.5,0.1-0.8c0.1-0.3,0.1-0.7,0.2-1c0.1-0.4,0.2-0.8,0.3-1.2c0.1-0.4,0.2-0.8,0.4-1.2c0-0.1,0-0.2,0-0.3
c0.1,0,0.2-0.1,0.2-0.2c0.2-0.4,0.4-0.9,0.6-1.4c0.2-0.5,0.4-1,0.7-1.5c0.2-0.5,0.4-0.9,0.7-1.3c0.2-0.4,0.4-0.7,0.6-1
c0.2-0.2,0.3-0.5,0.5-0.7c-0.2,0.4-0.4,0.8-0.6,1.2c-0.4,0.9-0.9,2-1.3,3.1c-0.1,0.2,0,0.3,0.1,0.5L59,8.7c0,0-0.1,0.1-0.1,0.2
c-0.1,0.3-0.2,0.5-0.3,0.8c-0.1,0.2-0.1,0.4-0.2,0.6c-0.1,0.2-0.2,0.4-0.2,0.5c0,0.1,0,0.3,0.1,0.4c0.1,0.1,0.2,0.2,0.3,0.2
c0,0,0.1,0,0.2,0c0,0,0,0,0,0c-0.2,0.5-0.3,1.1-0.3,1.7c0,0.5,0.1,0.9,0.2,1.2c0.1,0.2,0.1,0.3,0.2,0.5
c-0.1-0.1-0.2-0.3-0.3-0.4c-0.1-0.2-0.2-0.2-0.4-0.2c0,0-0.1,0-0.1,0l-0.1,0c-0.2,0.1-0.3,0.2-0.3,0.4c0,0.6,0.1,1.1,0.4,1.5
c0.3,0.3,0.6,0.5,0.9,0.6C58.8,16.6,58.6,16.6,58.4,16.6z M60.6,15.7C60.6,15.7,60.7,15.7,60.6,15.7
C60.6,15.7,60.6,15.7,60.6,15.7C60.6,15.7,60.6,15.7,60.6,15.7z M61.9,14.5c0.1-0.2,0.2-0.4,0.3-0.5c0.2-0.3,0.3-0.7,0.4-1
c0.1-0.3,0.2-0.7,0.2-0.9c0-0.3,0.1-0.5,0.1-0.7c0-0.7-0.1-1.2-0.3-1.5c-0.2-0.2-0.5-0.5-1.1-0.5c0.1,0,0.2-0.1,0.2-0.1
C62,9.1,62.2,9,62.4,9c0.5,0,0.9,0.1,1,0.4c0.2,0.3,0.3,0.7,0.3,1.2c0,0.3,0,0.6-0.1,0.9c-0.1,0.4-0.2,0.8-0.4,1.2
c-0.2,0.4-0.4,0.8-0.7,1.2C62.3,14.1,62.1,14.3,61.9,14.5z M65.1,2.8c0.1-0.3,0.2-0.7,0.2-1c0-0.4-0.1-0.7-0.2-0.9
c-0.1-0.2-0.3-0.3-0.6-0.3c0.3-0.1,0.6-0.2,0.8-0.2c0.3,0,0.4,0,0.4,0.1c0.1,0,0.1,0.1,0.1,0.1c0,0.1,0,0.1,0.1,0.2
c0,0.1,0,0.2,0,0.3c0,0.1,0,0.3-0.2,0.7C65.6,2.1,65.4,2.5,65.1,2.8C65.1,2.9,65.1,2.8,65.1,2.8z"/>
</g>
<g>
<path class="st2" d="M67.2,16.3c-0.2,0-0.4,0-0.6-0.1c-0.2-0.1-0.3-0.2-0.5-0.3c-0.1-0.1-0.3-0.3-0.4-0.6
c-0.1-0.3-0.1-0.6-0.1-0.9c0-0.4,0-0.7,0.1-1c0.1-0.3,0.2-0.7,0.3-1.1c0.1-0.3,0.2-0.7,0.3-1c0.1-0.3,0.3-0.6,0.4-0.9
c0.1-0.3,0.3-0.5,0.4-0.7c0.1-0.2,0.2-0.4,0.4-0.5c0.1-0.1,0.2-0.1,0.3-0.2c0.1,0,0.2-0.1,0.3-0.1c0.1,0,0.1,0,0.1,0
c0,0,0,0,0.1,0.1C68.4,9,68.4,9,68.5,9.1c-0.2,0.2-0.3,0.5-0.5,0.8c-0.2,0.3-0.3,0.7-0.4,1.2c-0.1,0.2-0.1,0.5-0.2,0.8
c-0.1-0.1-0.2-0.1-0.3-0.1c-0.2,0-0.4,0.1-0.5,0.3c0,0.1-0.1,0.3-0.2,0.5c-0.1,0.3-0.1,0.6-0.1,1.2c0,0.5,0,0.9,0.1,1.2
c0.1,0.3,0.3,0.6,0.4,0.8c0.2,0.2,0.4,0.3,0.6,0.4c0.2,0.1,0.3,0.1,0.5,0.1h0C67.8,16.3,67.5,16.3,67.2,16.3z M68.5,16.1
c0,0,0.1-0.1,0.1-0.2c0-0.1,0-0.2,0-0.3c0.2,0.1,0.3,0.2,0.5,0.2c0,0,0,0,0,0C68.9,15.9,68.7,16,68.5,16.1z M69.8,15.8
c-0.1,0-0.2,0-0.2,0c0,0,0.1-0.1,0.2-0.1C69.8,15.8,69.8,15.8,69.8,15.8z M71.6,13.7c0.1-0.2,0.2-0.3,0.3-0.5
c0.3-0.5,0.5-1.1,0.6-1.7c0.1-0.6,0.2-1.1,0.2-1.6c0-0.6-0.1-1.1-0.4-1.5c-0.2-0.3-0.6-0.7-1.5-0.7c-0.1,0-0.3,0-0.5,0.1
c0.2-0.1,0.5-0.3,0.8-0.3c0.3-0.1,0.6-0.1,1-0.1c0.4,0,0.8,0.1,1,0.4c0.3,0.3,0.4,0.8,0.4,1.5c0,0.5-0.1,1-0.3,1.6
c-0.2,0.6-0.4,1.1-0.8,1.7C72.3,12.9,72,13.3,71.6,13.7z"/>
</g>
<g>
<path class="st2" d="M76.2,16.3c-0.3,0-0.4-0.1-0.5-0.3c-0.1-0.3-0.2-0.7-0.2-1.2c0-0.4,0-0.7,0.1-1.2c0.1-0.5,0.2-0.9,0.4-1.3
c0.2-0.4,0.3-0.8,0.5-1.2c0.2-0.4,0.3-0.6,0.4-0.7c0.1-0.2,0.2-0.3,0.3-0.5c0,0,0,0,0,0c-0.1,0.4-0.3,0.7-0.4,1.1
c-0.1,0.4-0.2,0.6-0.2,0.8c0,0.1,0,0.3,0.2,0.4c-0.1,0.1-0.1,0.2-0.2,0.3c0,0.1-0.1,0.1-0.1,0.2l0,0.4c0,0.1,0,0.2,0,0.4
c0,0.1,0,0.2,0,0.3c0,0.3,0,0.5,0,0.7c0,0.2,0,0.4,0.1,0.6c0.1,0.2,0.2,0.4,0.4,0.5c0.2,0.1,0.4,0.2,0.7,0.2c0,0,0,0,0.1,0
c-0.2,0.1-0.4,0.2-0.6,0.3C76.7,16.3,76.4,16.3,76.2,16.3z M81.1,10.6c0.1-0.4,0.2-0.7,0.2-1.1c0.1-0.5,0.1-0.9,0.2-1.3
c0-0.4,0-0.7,0-0.9c0-1-0.1-1.9-0.2-2.6c-0.2-0.7-0.4-1.3-0.6-1.8c-0.3-0.5-0.6-0.8-1-1c-0.4-0.2-0.8-0.3-1.2-0.3
c-0.2,0-0.4,0-0.6,0c-0.1,0-0.2,0-0.2,0c0.2-0.1,0.4-0.2,0.6-0.3c0.3-0.1,0.5-0.1,0.8-0.1c0.4,0,0.8,0.1,1.2,0.2
C80.7,1.7,81,2,81.2,2.4c0.3,0.4,0.5,0.9,0.7,1.5c0.2,0.6,0.2,1.4,0.2,2.4c0,0.4,0,0.8-0.1,1.3c-0.1,0.5-0.2,1-0.4,1.6
C81.5,9.6,81.3,10.1,81.1,10.6z M78.8,8.6c-0.1-0.1-0.2-0.2-0.4-0.2c0.2-0.2,0.3-0.3,0.4-0.3c0,0.1,0,0.1,0,0.2
C78.8,8.4,78.8,8.5,78.8,8.6z"/>
</g>
<g>
<path class="st2" d="M88.1,16.6c-0.1,0-0.1,0-0.1-0.1c-0.1-0.1-0.1-0.3-0.1-0.4c0-0.1,0-0.3,0-0.5c0-0.2,0-0.4,0.1-0.6
c0-0.2,0.1-0.4,0.1-0.5c0-0.2,0.1-0.3,0.1-0.4c0-0.1,0-0.3-0.1-0.4c0-0.1-0.1-0.1-0.2-0.1c0.2-0.4,0.5-0.8,0.7-1.2
c0.2-0.5,0.4-0.9,0.5-1.3c0.1-0.4,0.2-0.7,0.4-1c0-0.1,0.1-0.2,0.2-0.4c0.1-0.1,0.2-0.3,0.3-0.4C90,9.1,90.1,9,90.2,8.9
c0.1,0,0.1-0.1,0.1-0.1c0.1,0,0.2-0.1,0.3-0.2c0.1-0.1,0.1-0.2,0.1-0.4c0-0.2-0.2-0.3-0.3-0.5c-0.1-0.1-0.3-0.2-0.4-0.3
c-0.1-0.1-0.2-0.1-0.4-0.1c0.1,0,0.1,0,0.2,0c0.1,0,0.3,0,0.5,0c0.2,0,0.3,0.1,0.5,0.2c0.2,0.1,0.3,0.2,0.4,0.3
c0.1,0.1,0.1,0.1,0.1,0.3c0,0.1,0,0.2,0,0.3c0,0,0,0.1-0.1,0.1c0,0.1-0.1,0.1-0.2,0.2c-0.1,0.1-0.2,0.2-0.3,0.3
c0,0-0.1,0.1-0.1,0.2c-0.1,0.3-0.2,0.6-0.4,0.8c-0.2,0.3-0.3,0.7-0.5,1.1c-0.3,0.9-0.6,1.7-0.8,2.3c-0.3,0.9-0.3,1.2-0.3,1.3
c0,0.4,0.1,0.7,0.2,0.9c0.2,0.2,0.4,0.3,0.6,0.3c0,0,0,0,0.1,0c-0.1,0.1-0.3,0.2-0.4,0.2C88.5,16.6,88.3,16.6,88.1,16.6z
M83.8,16.2c-0.5,0-0.6-0.2-0.7-0.3c-0.1-0.3-0.2-0.7-0.2-1.2c0-0.3,0.1-0.8,0.2-1.2c0.1-0.5,0.3-0.9,0.5-1.4
c0.2-0.5,0.4-0.9,0.7-1.3c0.3-0.4,0.6-0.8,0.9-1.2c0.1-0.1,0.3-0.3,0.4-0.4C85.4,9.5,85.2,9.7,85,10c-0.2,0.3-0.4,0.6-0.5,1
c-0.1,0.4-0.3,0.7-0.4,1.1c-0.1,0.4-0.2,0.7-0.3,1.1c-0.1,0.4-0.1,0.7-0.1,0.9c0,0.6,0.1,1,0.4,1.2c0.3,0.2,0.5,0.4,0.8,0.4
c0.1,0,0.3,0,0.4,0C84.8,16,84.2,16.2,83.8,16.2z"/>
</g>
</g>
<g>
<path class="st3" d="M66.4,1.1c0,0.2-0.1,0.5-0.2,0.9c-0.2,0.4-0.4,0.8-0.7,1.3c-0.3,0.5-0.8,1-1.4,1.6c-0.6,0.6-1.3,1.3-2.1,2
c-0.4,0.4-0.9,0.7-1.3,1.1c-0.5,0.4-0.9,0.8-1.3,1.1c-0.1,0.3-0.2,0.5-0.3,0.7c-0.1,0.2-0.1,0.4-0.2,0.6
c-0.1,0.2-0.1,0.4-0.2,0.5h0.1c0.3-0.4,0.6-0.7,0.9-1c0.3-0.3,0.7-0.5,1-0.7c0.3-0.2,0.7-0.3,1-0.4c0.3-0.1,0.6-0.1,0.8-0.1
c0.7,0,1.1,0.2,1.4,0.6c0.2,0.4,0.4,0.8,0.4,1.4c0,0.3-0.1,0.6-0.2,1c-0.1,0.4-0.3,0.8-0.5,1.2c-0.2,0.4-0.4,0.8-0.7,1.3
c-0.3,0.4-0.6,0.8-1,1.1c0.3,0,0.6-0.1,0.9-0.2c0.3-0.1,0.7-0.2,1.1-0.4c0.4-0.2,0.7-0.3,1-0.5c0.3-0.2,0.6-0.4,0.8-0.5l0,0.4
c-0.3,0.2-0.5,0.3-0.9,0.5c-0.3,0.2-0.7,0.4-1.1,0.5c-0.4,0.2-0.8,0.3-1.2,0.4c-0.4,0.1-0.8,0.2-1.2,0.2
c-0.2,0.1-0.3,0.3-0.5,0.4c-0.2,0.2-0.4,0.3-0.7,0.4c-0.2,0.1-0.5,0.2-0.8,0.3c-0.3,0.1-0.5,0.1-0.8,0.1c-0.4,0-0.8-0.1-1.1-0.3
c-0.3-0.2-0.5-0.4-0.6-0.6c-0.1-0.3-0.2-0.5-0.3-0.9c0-0.3-0.1-0.6-0.1-0.9c0-0.2,0-0.5,0.1-0.8c0.1-0.3,0.1-0.7,0.2-1.1
c0.1-0.4,0.2-0.8,0.3-1.2c0.1-0.4,0.3-0.8,0.4-1.2c-0.2,0.1-0.3,0.1-0.3-0.1c0-0.1,0.1-0.2,0.2-0.3c0.1-0.1,0.1-0.1,0.2-0.1
c0.2-0.4,0.4-0.9,0.6-1.4c0.2-0.5,0.5-1,0.7-1.5c0.2-0.5,0.5-0.9,0.7-1.3c0.2-0.4,0.4-0.8,0.6-1c1-1.5,2-2.6,2.8-3.3
c0.9-0.7,1.6-1,2.3-1c0.3,0,0.5,0,0.6,0.1c0.1,0.1,0.3,0.2,0.3,0.3c0.1,0.1,0.1,0.2,0.1,0.4C66.4,0.9,66.4,1,66.4,1.1L66.4,1.1z
M60.2,15.8c-0.6,0-1-0.1-1.3-0.3c-0.3-0.3-0.5-0.6-0.7-0.9l-0.1,0c0,0.5,0.1,0.9,0.3,1.2c0.2,0.3,0.5,0.4,0.8,0.4
c0.1,0,0.2,0,0.4-0.1c0.1,0,0.2-0.1,0.3-0.1C60,15.9,60.1,15.9,60.2,15.8L60.2,15.8z M62.5,11.3c0-0.6-0.1-1.1-0.3-1.3
c-0.2-0.2-0.5-0.4-0.8-0.4c-0.2,0-0.5,0.1-0.8,0.2c-0.3,0.1-0.6,0.3-0.8,0.6c-0.3,0.3-0.5,0.6-0.7,1.1c-0.2,0.4-0.3,1-0.3,1.6
c0,0.4,0,0.8,0.1,1.1c0.1,0.3,0.2,0.5,0.4,0.7c0.2,0.2,0.4,0.3,0.6,0.3c0.2,0.1,0.5,0.1,0.8,0.1c0.2-0.1,0.3-0.3,0.5-0.6
c0.2-0.3,0.4-0.6,0.6-0.9c0.1-0.3,0.3-0.7,0.4-1c0.1-0.3,0.2-0.6,0.2-0.9C62.5,11.6,62.5,11.4,62.5,11.3L62.5,11.3z M64.9,1.8
c0-0.3,0-0.5-0.1-0.6C64.7,1,64.5,1,64.3,1c-0.3,0-0.6,0.2-1,0.5c-0.4,0.3-0.8,0.8-1.2,1.4c-0.4,0.6-0.8,1.4-1.3,2.3
c-0.4,0.9-0.9,1.9-1.3,3.1c0.3-0.2,0.6-0.6,1.1-0.9c0.5-0.4,1-0.9,1.6-1.5C62.7,5.4,63,5,63.4,4.6c0.3-0.4,0.6-0.7,0.8-1
c0.2-0.3,0.4-0.6,0.5-0.9C64.9,2.4,64.9,2.1,64.9,1.8L64.9,1.8z"/>
<path class="st3" d="M72.8,15.6C72,16,71,16.2,70,16.2c-0.3,0-0.5,0-0.7-0.1c-0.7,0.4-1.4,0.5-2.1,0.5c-0.3,0-0.5,0-0.7-0.1
c-0.2-0.1-0.5-0.2-0.6-0.4c-0.2-0.2-0.3-0.4-0.5-0.7c-0.1-0.3-0.2-0.7-0.2-1.1c0-0.4,0-0.8,0.1-1.1c0.1-0.3,0.2-0.7,0.3-1.1
c0.1-0.3,0.2-0.7,0.3-1c0.1-0.3,0.3-0.6,0.4-0.9c0.1-0.3,0.3-0.6,0.4-0.8C67,9.2,67.1,9,67.2,8.8c0.1-0.1,0.2-0.2,0.4-0.3
c0.2-0.1,0.3-0.1,0.5-0.1c0.1,0,0.2,0,0.3,0.1c0.1,0,0.1,0.1,0.2,0.1h0.1c0.2-0.2,0.5-0.4,0.7-0.6c0.2-0.2,0.5-0.4,0.8-0.6
c0.3-0.2,0.6-0.3,0.9-0.4c0.3-0.1,0.7-0.2,1.1-0.2c0.5,0,1,0.2,1.3,0.5C73.8,7.8,74,8.4,74,9.2c0,0.5-0.1,1.1-0.3,1.7
c-0.2,0.6-0.5,1.2-0.8,1.8c-0.3,0.6-0.8,1.1-1.2,1.6c-0.5,0.5-1,0.9-1.5,1.3c0,0,0.1,0,0.2,0.1c0.1,0,0.3,0,0.5,0
c0.6,0,1.3-0.2,2-0.5c0.8-0.3,1.5-0.8,2.3-1.4l0.2,0.3C74.6,14.7,73.7,15.2,72.8,15.6L72.8,15.6z M67.5,15
c-0.2-0.3-0.3-0.7-0.3-1c-0.1-0.3-0.1-0.7-0.1-1c0-0.3,0-0.6,0.1-0.8h-0.1c0,0.1-0.1,0.3-0.2,0.5c-0.1,0.2-0.1,0.6-0.1,1.1
c0,0.4,0,0.8,0.1,1.1c0.1,0.3,0.2,0.5,0.3,0.6c0.1,0.1,0.3,0.2,0.4,0.3c0.1,0,0.3,0.1,0.3,0.1h0.2C67.9,15.6,67.6,15.3,67.5,15
L67.5,15z M72.3,9.9c0-0.5-0.1-0.9-0.3-1.3c-0.2-0.3-0.6-0.5-1.1-0.5c-0.2,0-0.4,0-0.7,0.1c-0.3,0.1-0.6,0.2-0.8,0.4
c-0.1,0.1-0.3,0.3-0.5,0.5c-0.2,0.2-0.3,0.5-0.5,0.8c-0.2,0.3-0.3,0.7-0.4,1.1c-0.1,0.4-0.2,0.9-0.2,1.4c0,0.1,0,0.3,0,0.6
c0,0.3,0.1,0.6,0.2,0.9c0.1,0.3,0.3,0.6,0.5,0.9c0.2,0.3,0.6,0.4,1,0.5c0.4-0.2,0.8-0.6,1.2-1c0.4-0.4,0.7-0.9,0.9-1.4
c0.2-0.5,0.4-1.1,0.6-1.6C72.2,10.9,72.3,10.4,72.3,9.9L72.3,9.9z"/>
<path class="st3" d="M82.5,6.3c0,0.4,0,0.9-0.1,1.4c-0.1,0.5-0.2,1.1-0.4,1.6c-0.2,0.6-0.3,1.1-0.6,1.7c-0.2,0.6-0.5,1.1-0.7,1.6
c-0.4,0.8-0.9,1.5-1.3,2.1c-0.4,0.5-0.8,1-1.2,1.3c-0.4,0.3-0.8,0.5-1.1,0.7c-0.3,0.1-0.7,0.2-1,0.2c-0.4,0-0.7-0.2-0.8-0.5
c-0.1-0.3-0.2-0.8-0.2-1.3c0-0.4,0.1-0.8,0.2-1.3c0.1-0.5,0.2-0.9,0.4-1.3c0.2-0.4,0.3-0.8,0.5-1.2c0.2-0.4,0.3-0.6,0.4-0.8
c0.5-0.8,0.9-1.5,1.4-1.9c0.4-0.5,0.7-0.7,1-0.7c0.2,0,0.3,0,0.3,0.1c0,0.1,0.1,0.3,0.1,0.5c0,0.3-0.1,0.6-0.2,1
c-0.2,0.4-0.4,0.8-0.6,1.2c-0.2,0.4-0.5,0.8-0.8,1.3c-0.3,0.4-0.5,0.8-0.7,1.1c0,0.1,0,0.3,0,0.4c0,0.1,0,0.2,0,0.3
c0,0.1,0,0.2,0,0.2c0,0.3,0,0.5,0,0.7c0,0.2,0,0.4,0.1,0.5c0,0.1,0.1,0.2,0.2,0.3c0.1,0.1,0.2,0.1,0.4,0.1c0.2,0,0.3,0,0.5-0.1
c0.2-0.1,0.4-0.2,0.6-0.4c0.2-0.2,0.5-0.5,0.7-1c0.3-0.4,0.5-1,0.8-1.7c0.2-0.4,0.3-0.9,0.5-1.4c0.1-0.5,0.2-0.9,0.3-1.4
c0.1-0.4,0.1-0.9,0.1-1.2c0-0.4,0-0.7,0-0.8c0-1-0.1-1.9-0.2-2.5c-0.1-0.7-0.3-1.2-0.6-1.6c-0.2-0.4-0.5-0.7-0.8-0.9
c-0.3-0.2-0.6-0.3-1-0.3c-0.2,0-0.4,0-0.5,0c-0.2,0-0.3,0.1-0.5,0.2c-0.2,0.1-0.4,0.3-0.4,0.4C77,2.8,77,2.9,77,3s0,0.2,0.1,0.2
c0,0,0.1,0.1,0.1,0.1c0,0.1,0,0.1-0.1,0.1c-0.1,0-0.1-0.1-0.2-0.2c-0.1-0.1-0.1-0.3-0.1-0.5c0-0.3,0.1-0.5,0.2-0.8
c0.1-0.2,0.3-0.4,0.5-0.6c0.2-0.2,0.5-0.3,0.8-0.4c0.3-0.1,0.6-0.1,1-0.1c0.5,0,0.9,0.1,1.3,0.3c0.4,0.2,0.8,0.5,1.1,0.9
c0.3,0.4,0.5,1,0.7,1.6C82.5,4.4,82.5,5.3,82.5,6.3L82.5,6.3z M78.4,8.8c-0.1,0-0.2,0.1-0.4,0.4c-0.1,0.3-0.3,0.6-0.4,1
c-0.1,0.4-0.3,0.7-0.4,1.1C77.1,11.6,77,11.9,77,12c0.1-0.1,0.2-0.3,0.4-0.5c0.1-0.2,0.3-0.4,0.4-0.6c0.1-0.2,0.2-0.5,0.3-0.7
c0.1-0.2,0.2-0.4,0.2-0.6c0.1-0.2,0.1-0.4,0.2-0.5C78.5,8.9,78.5,8.8,78.4,8.8L78.4,8.8z"/>
<path class="st3" d="M92.1,14.8c-0.5,0.4-1,0.7-1.5,1.1c-0.5,0.3-1,0.6-1.4,0.9c-0.4,0.2-0.8,0.4-1.1,0.4c-0.2,0-0.4-0.1-0.5-0.3
c-0.1-0.2-0.2-0.4-0.2-0.7c0-0.1,0-0.3,0-0.5c0-0.2,0-0.4,0.1-0.6c0-0.2,0.1-0.4,0.1-0.6c0-0.2,0.1-0.3,0.1-0.4h-0.1
c-0.6,0.8-1.3,1.4-2,1.9c-0.7,0.5-1.3,0.7-1.9,0.7c-0.5,0-0.9-0.2-1-0.5c-0.2-0.3-0.3-0.8-0.3-1.4c0-0.4,0.1-0.8,0.2-1.3
c0.1-0.5,0.3-1,0.5-1.4c0.2-0.5,0.5-1,0.8-1.4c0.3-0.5,0.6-0.9,1-1.2c0.9-0.9,1.8-1.5,2.6-1.8C88.3,7.2,89,7,89.8,7
c0.1,0,0.3,0,0.5,0.1c0.2,0,0.4,0.1,0.6,0.2c0.2,0.1,0.4,0.2,0.5,0.4c0.1,0.2,0.2,0.4,0.2,0.6c0,0.2,0,0.3,0,0.4
c0,0.1-0.1,0.2-0.1,0.3c-0.1,0.1-0.1,0.2-0.2,0.3c-0.1,0.1-0.2,0.2-0.4,0.3c-0.1,0.3-0.2,0.6-0.4,0.9c-0.1,0.3-0.3,0.6-0.5,1.1
c-0.3,0.9-0.6,1.7-0.8,2.3c-0.2,0.6-0.3,1-0.3,1.2c0,0.3,0,0.5,0.1,0.6c0.1,0.1,0.2,0.1,0.3,0.1c0.3,0,0.5-0.1,0.8-0.2
c0.3-0.1,0.6-0.3,0.9-0.5c0.3-0.2,0.7-0.5,1-0.7c0.3-0.3,0.7-0.5,1-0.8l0.2,0.3C93,14.1,92.6,14.4,92.1,14.8L92.1,14.8z
M90.3,8.5c0-0.1-0.1-0.2-0.2-0.3C90,8.1,89.9,8,89.8,8c-0.1-0.1-0.3-0.1-0.4-0.1c-0.1,0-0.2,0-0.3,0c-0.4,0-0.7,0-1,0.1
c-0.3,0.1-0.6,0.2-0.9,0.4c-0.3,0.2-0.6,0.4-0.9,0.8c-0.3,0.3-0.6,0.7-0.9,1.2c-0.2,0.3-0.3,0.6-0.5,0.9
c-0.1,0.4-0.3,0.7-0.4,1.1c-0.1,0.4-0.2,0.7-0.3,1c-0.1,0.3-0.1,0.6-0.1,0.8c0,0.5,0.1,0.8,0.3,0.9c0.2,0.2,0.4,0.2,0.6,0.2
c0.5,0,1-0.2,1.6-0.7c0.6-0.5,1.1-1.2,1.6-2.3c0.2-0.5,0.4-0.9,0.5-1.3c0.1-0.4,0.2-0.7,0.4-1.1c0-0.1,0.1-0.3,0.2-0.4
c0.1-0.2,0.2-0.3,0.3-0.5c0.1-0.1,0.2-0.3,0.4-0.4C90.1,8.5,90.2,8.5,90.3,8.5L90.3,8.5z"/>
</g>
<g>
<path class="st4" d="M147.2,12.4c-1.6,0-2.9,1.3-2.9,2.9s1.3,2.9,2.9,2.9s2.9-1.3,2.9-2.9S148.8,12.4,147.2,12.4z M147.2,17.6
c-1.3,0-2.3-1-2.3-2.3s1-2.3,2.3-2.3s2.3,1,2.3,2.3S148.5,17.6,147.2,17.6z"/>
<g>
<path class="st5" d="M146.1,13.4c0.2,0,0.6-0.1,0.9-0.1c0.5,0,0.8,0.1,1.1,0.3c0.2,0.2,0.3,0.4,0.3,0.7c0,0.5-0.3,0.8-0.7,1v0
c0.3,0.1,0.5,0.4,0.5,0.8c0.1,0.5,0.2,0.9,0.3,1H148c-0.1-0.1-0.1-0.4-0.2-0.9c-0.1-0.5-0.3-0.7-0.7-0.7h-0.5v1.6h-0.5V13.4z
M146.6,15.1h0.5c0.5,0,0.8-0.3,0.8-0.7c0-0.5-0.3-0.7-0.9-0.7c-0.2,0-0.4,0-0.5,0V15.1z"/>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 46 KiB

View File

@@ -4,7 +4,7 @@ import {AuthProvider} from "../context/AuthContext";
import {createTTheme} from "../styles/theme/create-theme";
import {Experimental_CssVarsProvider as CssVarsProvider} from '@mui/material/styles';
import {BrowserRouter as Router} from "react-router-dom";
import {NavigationRoutes} from "./NavigationRoutes";
import {NavigationRoutes} from "../components/navigation/NavigationRoutes";
import {SnackbarProvider} from 'notistack';
import {UserProvider} from "../context/UserContext";
import {SelectProvider} from "../context/SelectContext";

View File

@@ -1,10 +0,0 @@
import {paths} from "../path";
import {Loading} from "../components/core/Loading";
export function HomeRedirect({auth}) {
const redirectPath = auth ? paths.dashboard.overview : paths.auth.signIn;
window.location.replace(redirectPath);
return (
<Loading loading={true}/>
)
}

View File

@@ -1,4 +1,3 @@
import {SideNav} from "../../components/navigation/SideNav";
import Box from "@mui/material/Box";
import {MainNav} from "../../components/navigation/MainNav";
import Container from "@mui/material/Container";
@@ -14,12 +13,10 @@ export function UserLayout({children}) {
minHeight: '100%',
}}
>
<SideNav/>
<Box sx={{
display: 'flex',
flex: '1 1 auto',
flexDirection: 'column',
pl: {xl: 'var(--SideNav-width)'}
}}>
<MainNav/>
<Container maxWidth="xl" sx={{py: '16px'}}>

View File

@@ -1,79 +0,0 @@
import Paper from "@mui/material/Paper";
import React, {useEffect, useState} from "react";
import {useAlert} from "../../hooks/useAlert";
import {Card} from "@mui/material";
import Stack from "@mui/material/Stack";
import Typography from "@mui/material/Typography";
import IconButton from "@mui/material/IconButton";
import Box from "@mui/material/Box";
import DeleteIcon from '@mui/icons-material/Delete';
import ElectricalServicesIcon from '@mui/icons-material/ElectricalServices';
import Toolbar from "@mui/material/Toolbar";
import AddCircleIcon from '@mui/icons-material/AddCircle';
import {BarCreateModal} from "../../components/BarCreateModal";
import PowerIcon from '@mui/icons-material/Power';
import ContentCopyIcon from '@mui/icons-material/ContentCopy';
import {barClient} from "../../lib/clients/BarClient";
export function BarChangePage() {
const [bars, setBars] = useState([])
const [open, setOpen] = useState(false)
const [oldId, setOldId] = useState(null);
const {createError, createSuccess, createWarning} = useAlert();
const createHandler = (id, name) => {
if (id) {
barClient.copyBar(id, name, setBars, bars, createError, createSuccess, setOpen)
} else {
barClient.createBar(name, bars, createSuccess, createError, setBars, setOpen)
}
}
// eslint-disable-next-line
useEffect(() => barClient.getBarList(setBars, createError), []);
return (<>
<BarCreateModal open={open} setOpen={setOpen} create={createHandler} id={oldId}/>
<Paper sx={{p: 1}}>
<Toolbar>
<Typography variant='h6'>Списки ингредиентов (бары)</Typography>
<IconButton edge="end" onClick={() => {
setOldId(null);
setOpen(true);
}}>
<AddCircleIcon/>
</IconButton>
</Toolbar>
{bars.map((b) => {
return <Card key={b.id} sx={{m: 2, p: 2}}>
<Stack direction='row' justifyContent={'space-between'}>
<Typography>{b.name}</Typography>
<Box>
<IconButton onClick={() => {
setOldId(b.id)
setOpen(true);
}}>
<ContentCopyIcon/>
</IconButton>
{b.active && <IconButton disabled>
<PowerIcon/>
</IconButton>}
{!b.active && <>
<IconButton
onClick={() => barClient.deleteBar(b, bars, createError, createSuccess, setBars)}>
<DeleteIcon/>
</IconButton>
<IconButton
onClick={() => barClient.changeBar(b.id, bars, createWarning, createSuccess, createError, setBars)}>
<ElectricalServicesIcon/>
</IconButton>
</>}
</Box>
</Stack>
</Card>
})}
</Paper>
</>
)
}

View File

@@ -1,90 +0,0 @@
import Typography from "@mui/material/Typography";
import * as React from "react";
import {useEffect, useMemo} from "react";
import {useAlert} from "../../../hooks/useAlert";
import Stack from "@mui/material/Stack";
import Box from "@mui/material/Box";
import {CocktailItemCalc} from "./CocktailItemCalc";
import {IngredientCalcCard} from "./IngredientCalcCard";
import {cocktailClient} from "../../../lib/clients/CocktailClient";
export function CalcPage() {
const {createError} = useAlert();
const [cocktails, setCocktails] = React.useState([]);
const [load, setLoad] = React.useState(false);
const [cocktailMap, setCocktailMap] = React.useState({});
const changeHandler = (id, value) => {
setCocktailMap((prev) => ({
...prev,
[id]: value
}));
}
useEffect(() => {
cocktailClient.getCocktailsForCalcPage(load, setLoad, setCocktails, setCocktailMap, createError)
// eslint-disable-next-line
}, [load]);
const ingredients = useMemo(() => {
let map = {}
if (!cocktails) {
return [];
}
cocktails.forEach((c) => {
const receipts = c.receipt;
const countMeter = cocktailMap[c.id];
if (!receipts) {
return
}
receipts.forEach((r) => {
const ingredient = r.ingredient;
const id = ingredient.id;
const ingredientCount = r.count;
const resultCount = ingredientCount * countMeter;
if (map[id]) {
map[id] = {
...map[id],
count: map[id].count + resultCount
}
} else {
map[id] = {
ingredient: ingredient,
count: resultCount
}
}
})
})
return Object.values(map);
},
[cocktails, cocktailMap])
const deleteHandler = (id) => {
const state = cocktails.filter((c) => c.id !== id);
setCocktails(state);
}
console.log(cocktailMap)
return (
<Box padding={2}>
<Typography variant="h4" align="center">Коктейли</Typography>
<Stack mt={2}>
{cocktails.map((item, i) => (
<CocktailItemCalc key={i} cocktail={item} deleteHandler={deleteHandler}
changeHandler={changeHandler}/>
))}
</Stack>
<Typography variant="h4" mt={2} align="center">Ингредиенты</Typography>
<Stack mt={2}>
{ingredients.map((item, i) => (
<IngredientCalcCard key={i} count={item.count} ingredient={item.ingredient}/>
))}
</Stack>
</Box>
)
}

View File

@@ -1,40 +0,0 @@
import {Card} from "@mui/material";
import Stack from "@mui/material/Stack";
import Box from "@mui/material/Box";
import IconButton from "@mui/material/IconButton";
import DeleteIcon from "@mui/icons-material/Delete";
import React from "react";
import Typography from "@mui/material/Typography";
import {Counter} from "./Counter";
export function CocktailItemCalc({cocktail, deleteHandler, changeHandler}) {
return (
<Card sx={{mb: 1, display: 'relative', p: 2}}>
<Stack justifyContent={'start'} spacing={2}>
<Stack direction='row' justifyContent='start' alignItems='center'>
<Box sx={{width: '100px', height: '100px'}}>
<img src={cocktail.image} loading='lazy' height={'100px'} width={'100px'} alt={cocktail.id}/>
</Box>
<Box sx={{width: 'calc(90% - 100px)', pr: 2, ml: 2}}>
<Stack>
<Typography>{cocktail.name}</Typography>
<Typography>{cocktail.volume}</Typography>
<Typography>{cocktail.category}</Typography>
<Typography>{cocktail.alcoholic}</Typography>
<Typography color={'textSecondary'}>{cocktail.components}</Typography>
</Stack>
</Box>
<Stack direction='row'>
<Stack sx={{width: '5%'}} spacing={1} justifyContent='flex-start'>
<IconButton size='small' onClick={() => deleteHandler(cocktail.id)}>
<DeleteIcon/>
</IconButton>
</Stack>
</Stack>
</Stack>
<Counter id={cocktail.id} changeHandler={changeHandler}/>
</Stack>
</Card>
)
}

View File

@@ -1,65 +0,0 @@
import React, {useState} from 'react';
import {Box, TextField, Button} from '@mui/material';
import {styled} from '@mui/material/styles';
// Стилизуем контейнер счетчика
styled(Box)`
display: flex;
align-items: center;
justify-content: center;
width: 150px;
height: 50px;
border-radius: 8px;
//box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
//background-color: #ffffff;
`;
export function Counter({id, changeHandler}) {
const [value, setValue] = useState(1);
const handleChange = (newValue) => {
setValue(newValue);
changeHandler(id, newValue);
}
return (
<Box>
<Button onClick={() => {
if (value > 0) {
setValue(value - 1);
}
}}
sx={{
width: '20px',
height: '55px',
borderRadius: '50%',
margin: '0 8px',
backgroundColor: 'transparent',
}}></Button>
<TextField
value={value}
onChange={(e) => {
const newValue = parseInt(e.target.value, 10);
if (!isNaN(newValue)) {
handleChange(newValue);
}
}}
inputProps={{inputMode: 'numeric'}}
sx={{
width: '40px',
height: '15px',
fontSize: '10px',
textAlign: 'center'
}}
/>
<Button onClick={() => handleChange(value + 1)}
sx={{
width: '20px',
height: '55px',
borderRadius: '50%',
margin: '0 8px',
backgroundColor: 'transparent',
}}>+</Button>
</Box>
);
}

View File

@@ -1,21 +0,0 @@
import {Card} from "@mui/material";
import Stack from "@mui/material/Stack";
import Box from "@mui/material/Box";
import React from "react";
export function IngredientCalcCard({ingredient, count}) {
return (
<Card sx={{mb: 1, height: '130px', display: 'relative', pt: 1}}>
<Stack direction='row' justifyContent='start' alignItems='center'>
<Box sx={{width: '100px', height: '100px'}}>
<img src={ingredient.image} loading='lazy' height={'100px'} width={'100px'} alt={ingredient.id}/>
</Box>
<Box sx={{width: 'calc(90% - 100px)', pr: 2}}>{ingredient.name}</Box>
<Stack direction='row'>
<Box mr={1} pt={'3px'}>{count}</Box>
</Stack>
</Stack>
</Card>
)
}

View File

@@ -1,196 +0,0 @@
import Grid from "@mui/material/Grid";
import {useAlert} from "../../../hooks/useAlert";
import * as React from "react";
import {useCallback, useEffect, useState} from "react";
import {Cocktail} from "../../../components/cocktails/Cocktail";
import {Fab, Skeleton} from "@mui/material";
import Box from "@mui/material/Box";
import {NoResult} from "../../../components/cocktails/NoResult";
import {FilterBlock} from "../../../components/cocktails/FilterBlock";
import {CocktailInfoModal} from "../../../components/cocktails/CocktailInfoModal";
import {useUser} from "../../../hooks/useUser";
import {blue} from "@mui/material/colors";
import UpIcon from "@mui/icons-material/KeyboardArrowUp";
import {useSelect} from "../../../hooks/useSelect";
import Paper from "@mui/material/Paper";
import CheckMarks from "../../../components/cocktails/CheckMarks";
import {cocktailClient} from "../../../lib/clients/CocktailClient";
const emptyFilter = {
search: "",
all: false,
hidden: true,
onlyFavourite: false,
glass: [],
category: [],
alcohol: [],
iCount: [],
ingredient: [],
inMenu: "",
sorting: "Название по возрастанию"
}
const CocktailsPageContent = () => {
const {user} = useUser();
const {createError, createSuccess} = useAlert();
const [rows, setRows] = useState([]);
const [filter, setFilter] = useState(emptyFilter)
// const [chips, setChips] = useState([])
const chips = [];
const [page, setPage] = useState(-1);
const [load, setLoad] = useState(false);
const [isEnd, setIsEnd] = useState(false);
const [isNew, setIsNew] = useState(true);
const {selectCocktail, getCocktail, getOpenCocktail} = useSelect();
const loading = useCallback(() => {
const size = Math.floor((window.innerWidth) / 350) * 5;
if (load || (!isNew && isEnd)) {
return false;
}
cocktailClient.getMenu(setRows, setIsNew, setPage, setLoad, setIsEnd, isNew, rows, page, size, filter, createError);
// eslint-disable-next-line
}, [load, isEnd, page]);
useEffect(() => {
const handleScroll = () => {
const {scrollTop, scrollHeight, clientHeight} = document.documentElement;
if (scrollTop + clientHeight >= scrollHeight - 100) {
loading();
}
}
window.addEventListener('scroll', handleScroll);
return () => window.removeEventListener('scroll', handleScroll);
// eslint-disable-next-line
}, [loading]);
// eslint-disable-next-line
useEffect(() => loading(), [filter])
const renderSkeleton = () => {
return Array.from({length: 3}, () => null)
.map((v, index) => <Skeleton sx={{m: 2}}
key={index}
variant="rounded"
width={350}
height={690}/>);
}
const handleChangeRating = (row, value) => {
const newState = rows.map((r) => {
if (row.id === r.id) {
let newRating = r.rating;
newRating.rating = value
return {
...r,
rating: newRating
}
}
return r;
})
cocktailClient.changeRating(row.id, newState, value, setRows, createSuccess, createError)
}
const handleFilterChange = (filterName, value) => {
const newState = {
...filter,
[filterName]: value
}
setFilter(newState)
setIsNew(true);
setIsEnd(false);
setPage(-1);
}
const handleFavourite = (row) => {
const value = !row.rating.favourite;
const newState = rows.map((r) => {
if (r.id === row.id) {
let newRating = r.rating;
newRating.favourite = value;
return {
...r,
rating: newRating
}
}
return r;
});
cocktailClient.changeFavourite(value, row.id, newState, setRows, createSuccess, createError)
}
const handleFilterClear = () => {
setFilter(emptyFilter);
setIsNew(true);
setIsEnd(false);
setPage(-1);
}
const handleSelectCocktail = (row) => selectCocktail(row.id)
const deleteHandle = (row) => cocktailClient.deleteCocktail(row.id, rows, setRows, createSuccess, createError)
const hideHandler = (id) => {
cocktailClient.hiddenCocktail(id)
.then(() => {
createSuccess("Коктейль скрыт успешно");
setRows(rows.filter((r) => r.id !== id))
}).catch(() => createError("Ошибка при попытке скрыть коктейль"))
}
return (
<Box>
{/*<Loading loading={load}/>*/}
{/*Модальное окно информации о коктейле*/}
<CocktailInfoModal row={getCocktail()} open={getOpenCocktail()}/>
{/*Блок фильтров*/}
<FilterBlock
filter={filter}
handleFilterChange={handleFilterChange}
handleClearFilter={handleFilterClear}
barmen={user.role !== 'USER'}
/>
{
(filter.all && filter.iCount === 1) && (
<Paper sx={{mt: 1}}>
<CheckMarks rows={chips} name={"Выбор ингредиента"} filterName={"ingredient"}
filterValue={filter.ingredient}
handleChange={handleFilterChange}
identity
/>
</Paper>
)
}
<Box>
{/*Основное содержимое*/}
<Grid container rowSpacing={2} columnSpacing={{xs: 1, sm: 1, md: 2}} sx={{m: 1}}>
{rows.length > 0 && rows.map((row) => {
return (
<Cocktail key={row.id} row={row} handleFavourite={handleFavourite}
handleChangeRating={handleChangeRating}
handleSelect={handleSelectCocktail}
deleteHandler={deleteHandle}
hideHandler={hideHandler}
/>
)
})}
{load && renderSkeleton()}
{rows.length === 0 && (<NoResult/>)}
</Grid>
</Box>
<Fab sx={{
alpha: '30%',
position: 'sticky',
left: 'calc(100% - 16px)',
bottom: '16px',
color: 'common.white',
bgcolor: blue[600],
'&:hover': {
bgcolor: blue[600],
},
}}
onClick={() => window.window.scrollTo(0, 0)}
aria-label='Expand'
color='inherit'>
<UpIcon/>
</Fab>
</Box>
);
}
export default CocktailsPageContent;

View File

@@ -1,142 +0,0 @@
import Box from "@mui/material/Box";
import Toolbar from "@mui/material/Toolbar";
import Typography from "@mui/material/Typography";
import * as React from "react";
import {useEffect, useState} from "react";
import Paper from "@mui/material/Paper";
import {Autocomplete, FormControl, FormControlLabel, InputLabel} from "@mui/material";
import {useAlert} from "../../../hooks/useAlert";
import {useSearchParams} from "react-router-dom";
import TextField from "@mui/material/TextField";
import Switch from "@mui/material/Switch";
import Stack from "@mui/material/Stack";
import Button from "@mui/material/Button";
import Select from "@mui/material/Select";
import MenuItem from "@mui/material/MenuItem";
import {ingredientClient} from "../../../lib/clients/IngredientClient";
const emptyIngredient = {
id: null,
name: "",
enName: "",
have: false,
image: null,
type: "",
alcohol: false,
abv: null,
description: null
}
export function EditIngredientPage() {
const [searchParams] = useSearchParams();
const [ingredients, setIngredients] = useState([]);
const [types, setTypes] = useState([]);
const [ingredient, setIngredient] = useState(emptyIngredient)
const {createError, createSuccess} = useAlert();
useEffect(() => {
ingredientClient.allList(searchParams.get("id"), setIngredients, setIngredient, createError)
ingredientClient.getType(setTypes)
// eslint-disable-next-line
}, []);
const changeIngredientValue = (name, value) => {
setIngredient((prev) => ({
...prev,
[name]: value
}))
}
return (
<Box>
{/*Заголовок*/}
<Toolbar>
<Typography variant="h6" component="div" sx={{flexGrow: 1}}>Ингредиенты</Typography>
</Toolbar>
{/*Поиск*/}
<Paper elevation={6} sx={{my: 2, display: 'grid', p: 2}}>
<Autocomplete
disablePortal
options={ingredients}
defaultChecked={emptyIngredient}
onChange={(e, v) => {
return !v ? setIngredient(emptyIngredient) : setIngredient(v)
}}
isOptionEqualToValue={(selected, value) => selected.id === value.id}
getOptionKey={(selected) => selected.id}
getOptionLabel={(selected) => selected.name}
renderInput={(params) => <TextField {...params} label="Ингредиенты"/>}
/>
</Paper>
{/*Форма ингредиента*/}
<Paper elevation={6} sx={{my: 2, display: 'grid', p: 1, pb: 2}}>
<Stack>
<Box display={'flex'} justifyContent={'flex-end'} pr={2}>
<FormControlLabel control={
<Switch
checked={ingredient.have}
onChange={() => changeIngredientValue("have", !ingredient.have)}
/>}
label={"Наличие"} labelPlacement={'start'}/>
</Box>
<Box>
<img src={ingredient.image} alt={""} loading={'eager'}/>
</Box>
<Box m={1}>
<TextField sx={{mr: 1, mb: 2, minWidth: 330}}
variant="outlined" label={"Название"}
value={ingredient.name}
onChange={(e) => changeIngredientValue("name", e.target.value)}/>
</Box>
<Box height={70} mt={1} ml={1}>
<FormControlLabel sx={{pt: 1}}
control={
<Switch
checked={ingredient.alcohol}
onChange={() => changeIngredientValue("alcohol", !ingredient.alcohol)}
/>}
label="Алкогольный"/>
{ingredient.alcohol && (
<TextField sx={{width: 100}}
variant='outlined' label='Градус'
value={!ingredient.abv ? "" : ingredient.abv}
onChange={(e) => changeIngredientValue("abv", e.target.value)}/>
)}
</Box>
<Box mb={2} ml={1}>
<FormControl sx={{width: 330}}>
<InputLabel id="select-label">Категория</InputLabel>
<Select
id="select-label"
autoWidth
label={"Категория"}
value={!ingredient.type ? "" : ingredient.type}
onChange={(e) => changeIngredientValue("type", e.target.value)}
>
<MenuItem value="">
<em>None</em>
</MenuItem>
{types.map((c) => {
return (<MenuItem key={c.id} value={c.name}>{c.name}</MenuItem>)
})}
</Select>
</FormControl>
</Box>
<Box pr={2} ml={1}>
<TextField sx={{width: '100%'}}
label={"Описание"} variant='outlined' multiline
onChange={(e) => changeIngredientValue("description", e.target.value)}
value={!ingredient.description ? "" : ingredient.description}/>
</Box>
</Stack>
</Paper>
<Box display={'flex'} justifyContent={'flex-end'}>
<Button variant='contained'
onClick={() => ingredientClient.saveIngredient(ingredient, createSuccess, createError)}>Сохранить</Button>
</Box>
</Box>
)
}

View File

@@ -1,126 +0,0 @@
import Box from "@mui/material/Box";
import Typography from "@mui/material/Typography";
import Toolbar from "@mui/material/Toolbar";
import Paper from "@mui/material/Paper";
import {Fab, FormControl, InputAdornment, InputLabel, OutlinedInput, Tabs} from "@mui/material";
import IconButton from "@mui/material/IconButton";
import SearchIcon from "@mui/icons-material/Search";
import * as React from "react";
import {useEffect, useMemo, useState} from "react";
import {Loading} from "../../../components/core/Loading";
import {useAlert} from "../../../hooks/useAlert";
import {IngredientInfoModal} from "../../../components/Ingredients/IngredientInfoModal";
import Tab from "@mui/material/Tab";
import {a11yProps} from "../../../components/core/tabProps";
import {CustomTabPanel} from "../../../components/core/TabPanel";
import {IngredientList} from "../../../components/Ingredients/IngredientList";
import {blue} from "@mui/material/colors";
import UpIcon from "@mui/icons-material/KeyboardArrowUp";
import {useSelect} from "../../../hooks/useSelect";
import {ingredientClient} from "../../../lib/clients/IngredientClient";
export function IngredientsPage() {
const [value, setValue] = React.useState(0);
const handleChange = (event, newValue) => setValue(newValue);
const [loading, setLoading] = useState(true);
const [findString, setFindString] = useState("");
const [ingredients, setIngredients] = useState([]);
const {getIngredient, selectIngredient} = useSelect();
const {createError, createSuccess} = useAlert();
useEffect(() => {
ingredientClient.getAllIngredients(setIngredients, setLoading, createError)
// eslint-disable-next-line react-hooks/exhaustive-deps
}, []);
const visibleIngredients = useMemo(() => {
if (findString.length === 0) {
return ingredients;
}
const reg = new RegExp("(.*?)" + findString + "(.*?)", "i");
return ingredients.filter((ingredient) => ingredient.name.match(reg) !== null);
}, [findString, ingredients]);
const ingredientsToAdd = visibleIngredients.filter((ingredient) => !ingredient.have);
const ingredientsInBar = visibleIngredients.filter((ingredient) => ingredient.have);
const changeHandler = (row, value) => {
const newState = ingredients.map((ingredient) => {
if (ingredient.id === row.id) {
return {
...ingredient,
have: value
}
} else {
return ingredient;
}
})
ingredientClient.changeIngredientIsHave(row.id, value, newState, setIngredients, createError)
}
const handleDelete = (id) => {
const newState = ingredients.filter((ingredient) => ingredient.id !== id);
setIngredients(newState)
ingredientClient.deleteIngredientIsHave(id, createSuccess, createError)
}
return (
<Box>
{/*Заголовок*/}
<Toolbar>
<Typography variant="h6" component="div" sx={{flexGrow: 1}}>Ингредиенты бара</Typography>
</Toolbar>
{/*Поиск*/}
<Paper elevation={6} sx={{my: 2}}>
<FormControl sx={{m: 1, width: 'calc(100% - 20px'}}>
<InputLabel htmlFor="outlined-adornment-amount">Поиск</InputLabel>
<OutlinedInput
onChange={(e) => setFindString(e.target.value)}
label="With normal TextField"
startAdornment={
<InputAdornment position="start">
<IconButton edge="end">
<SearchIcon/>
</IconButton>
</InputAdornment>
}
/>
</FormControl>
</Paper>
{/*Рабочее поле ингредиентов*/}
<Box>
<Tabs value={value} onChange={handleChange} aria-label="basic tabs example">
<Tab label="В баре" {...a11yProps(0)} />
<Tab label="Список" {...a11yProps(1)} />
</Tabs>
</Box>
<Box>
<CustomTabPanel value={value} index={0}>
<IngredientList rows={ingredientsInBar} value={false} changeHandler={changeHandler}
infoHandler={selectIngredient}/>
</CustomTabPanel>
<CustomTabPanel value={value} index={1}>
<IngredientList rows={ingredientsToAdd} value={true} changeHandler={changeHandler}
infoHandler={selectIngredient}/>
</CustomTabPanel>
</Box>
<Fab sx={{
alpha: '30%',
position: 'sticky',
bottom: '16px',
color: 'common.white',
bgcolor: blue[600],
'&:hover': {
bgcolor: blue[600],
},
}}
onClick={() => window.window.scrollTo(0, 0)}
aria-label='Expand'
color='inherit'>
<UpIcon/>
</Fab>
{/*Загрузчик*/}
<Loading loading={loading}/>
{/*Модальное окно информации об ингредиенте*/}
<IngredientInfoModal ingredient={getIngredient()} handleDelete={handleDelete}/>
</Box>
)
}

View File

@@ -1,37 +0,0 @@
import * as React from 'react';
import Box from '@mui/material/Box';
import {NavigationMenu} from "./NavigationMenu";
export function SideNav() {
return (
<Box
sx={{
'--SideNav-background': 'var(--mui-palette-neutral-950)',
'--SideNav-color': 'var(--mui-palette-common-white)',
'--NavItem-color': 'var(--mui-palette-neutral-300)',
'--NavItem-hover-background': 'rgba(255, 255, 255, 0.04)',
'--NavItem-active-background': 'var(--mui-palette-primary-main)',
'--NavItem-active-color': 'var(--mui-palette-primary-contrastText)',
'--NavItem-disabled-color': 'var(--mui-palette-neutral-500)',
'--NavItem-icon-color': 'var(--mui-palette-neutral-400)',
'--NavItem-icon-active-color': 'var(--mui-palette-primary-contrastText)',
'--NavItem-icon-disabled-color': 'var(--mui-palette-neutral-600)',
bgcolor: 'var(--SideNav-background)',
color: 'var(--SideNav-color)',
display: {xs: 'none', xl: 'flex'},
flexDirection: 'column',
height: '100%',
left: 0,
maxWidth: '100%',
position: 'fixed',
scrollbarWidth: 'none',
top: 0,
width: 'var(--SideNav-width)',
zIndex: 'var(--SideNav-zIndex)',
'&::-webkit-scrollbar': {display: 'none'},
}}
>
<NavigationMenu/>
</Box>
);
}

View File

@@ -27,6 +27,12 @@ export function UserProvider({children}) {
return;
}
if (Object.keys(state.user).length === 0) {
const userMock = {
name: 'Sergey',
lastName: 'Kayashov'
}
setState((prev) => ({...prev, error: "", isLoading: false, user: userMock}))
return;
const {data, errorData} = await userClient.getMe();
if (errorData) {
setState((prev) => ({...prev, error: errorData, isLoading: false, user: {}}));

126
front/src/data/constants.js Normal file
View File

@@ -0,0 +1,126 @@
// src/data/constants.js
/**
* Константы для приложения «КартХолл»
*/
// Классы участников
export const CLASSES = [
'Юниоры',
'Взрослые',
'Pro',
'Amateur',
'Симулятор A',
'Симулятор B'
];
// Статусы этапов
export const STAGE_STATUSES = {
GOING: 'Идёт',
REGISTRATION_OPEN: 'Регистрация открыта',
PRE_REGISTRATION: 'Предрегистрация',
COMPLETED: 'Завершено'
};
// Моковые данные этапов соревнований
export const MOCK_STAGES = [
{
id: 1,
title: 'SWC Зимний чемпионат',
stage: '2й этап',
date: '2026-02-08',
class: 'Юниоры',
status: STAGE_STATUSES.GOING,
description: 'Главный зимний турнир года. Призовой фонд — 500 000 ₽.',
location: 'Москва, стадион "Лужники"',
registrationLink: 'https://example.com/register/1'
},
{
id: 2,
title: 'Honda Winter Cup',
stage: '1й этап',
date: '2026-01-31',
class: 'Pro',
status: STAGE_STATUSES.REGISTRATION_OPEN,
description: 'Отборочный этап серии Honda. Участие — по заявке.',
location: 'Санкт-Петербург, трасса "Ижора"',
registrationLink: 'https://example.com/register/2'
},
{
id: 3,
title: 'Кубок Покровска (онлайн)',
stage: '1й этап',
date: '2026-02-01',
class: 'Симулятор A',
status: STAGE_STATUSES.PRE_REGISTRATION,
description: 'Онлайн‑соревнование для пилотов симулятора.',
location: 'Онлайн-платформа',
registrationLink: 'https://example.com/register/3'
},
{
id: 4,
title: 'Гран-при Урала',
stage: 'Финальный этап',
date: '2026-03-15',
class: 'Взрослые',
status: STAGE_STATUSES.PRE_REGISTRATION,
description: 'Заключительный этап сезона. Борьба за чемпионский титул.',
location: 'Екатеринбург, автодром "Урал"',
registrationLink: 'https://example.com/register/4'
},
{
id: 5,
title: 'Открытый кубок Москвы',
stage: 'Квалификационный раунд',
date: '2026-01-20',
class: 'Amateur',
status: STAGE_STATUSES.COMPLETED,
description: 'Первый этап для начинающих пилотов.',
location: 'Москва, картодром "Сокольники"',
registrationLink: null
},
{
id: 6,
title: 'Этап 6',
stage: 'Тест',
date: '2026-04-01',
class: 'Pro',
status: STAGE_STATUSES.REGISTRATION_OPEN,
description: 'Тестовый этап для проверки системы.',
location: 'Казань, трасса "Казань‑Ринг"',
registrationLink: 'https://example.com/register/6'
},
{
id: 7,
title: 'Этап 7',
stage: 'Тест',
date: '2026-05-01',
class: 'Юниоры',
status: STAGE_STATUSES.GOING,
description: 'Пробный заезд для юниоров.',
location: 'Нижний Новгород, картодром "Нижегородский"',
registrationLink: null
},
{
id: 8,
title: 'Этап 8',
stage: 'Тест',
date: '2026-06-01',
class: 'Взрослые',
status: STAGE_STATUSES.PRE_REGISTRATION,
description: 'Экспериментальный формат гонки.',
location: 'Сочи, автодром "Сочи Автоспорт"',
registrationLink: 'https://example.com/register/8'
}
];
// Дополнительные константы (если понадобятся позже)
export const DEFAULT_PAGINATION = {
page: 1,
limit: 5
};
export const SORT_ORDERS = {
ASC: 'asc',
DESC: 'desc'
};

View File

@@ -5,6 +5,7 @@ import axios from "axios";
class TokenUtil {
checkToken(token) {
return true;
if (token == null || isExpired(token)) {
return false;
}

View File

@@ -1,10 +1,8 @@
import {paths} from "./path";
export const navItems = [
{key: 'menu', title: 'Меню', href: paths.dashboard.overview, icon: 'menu'},
{key: 'barList', title: 'Список баров', href: paths.bar.list, icon: 'basket', forBarmen: true},
{key: 'ingredients', title: 'Список ингредиентов', href: paths.bar.ingredients, icon: 'basket', forBarmen: true},
{key: 'ingredientEdit', title: 'Ингредиенты', href: paths.bar.ingredientEdit, icon: 'ingredients', forAdmin: true},
{key: 'cocktailEdit', title: 'Коктейли', href: paths.bar.cocktailEdit, icon: 'cocktail', forAdmin: true},
{key: 'calc', title: 'Калькулятор', href: paths.bar.calc, icon: 'calc', forAdmin: true},
{key: 'home', title: 'Домашняя страница', href: paths.home, icon: 'menu'},
{key: 'championships', title: 'Чемпионаты', href: paths.chp.championships, icon: 'basket'},
{key: 'calendar', title: 'Календарь', href: paths.calendar, icon: 'basket'},
{key: 'stages', title: 'Этапы', href: paths.stg.stages, icon: 'ingredients'},
];

View File

@@ -1,25 +1,17 @@
export const paths = {
home: '/',
chp:
{
championships: '/championships',
championship: '/championships/:id',
},
stg:
{
stages: '/stages',
stage: '/stages/:id',
},
calendar: '/calendar',
auth: {signIn: '/auth/sign-in', bot: 'https://t.me/kayashovBarClientBot', tg: '/tg'},
dashboard: {
overview: '/menu'
},
visitor: {
inBar: "/visitors"
},
orders: {
my: '/orders'
},
bar: {
list: "/barList",
ordersQueue: '/queue',
ingredients: '/ingredients',
cocktails: "/cocktails",
ingredientEdit: '/ingredients/edit',
cocktailEdit: '/cocktail/edit',
menu: '/menuList',
calc: '/calc',
},
errors: {notFound: '/errors/not-found'},
notFound: '*',
};

View File

@@ -6,7 +6,7 @@ import {colorSchemes} from "./color-schemes";
export function createTTheme() {
return extendTheme({
breakpoints: {values: {xs: 0, sm: 450, md: 600, lg: 900, xl: 1440}},
breakpoints: {values: {xs: 0, sm: 550, md: 900, lg: 1200, xl: 1500}},
colorSchemes: colorSchemes,
components: components,
shadows: shadows,