Browse Source

Accept Merge Request #34 merge 1.0.29 : (master -> test)

Merge Request: merge 1.0.29
Created By: @seirios
Accepted By: @seirios
URL: https://coding.net/t/aft/p/AFT-WEB/git/merge/34
seirios 7 years ago
parent
commit
aa5918389c
100 changed files with 23091 additions and 5620 deletions
  1. 2 1
      .gitignore
  2. 5 0
      bin/clean.js
  3. 459 6
      css/base.less
  4. 0 39
      html/css/highTech.css
  5. BIN
      html/css/iconfont/iconfont.eot
  6. 0 922
      html/css/iconfont/iconfont.svg
  7. BIN
      html/css/iconfont/iconfont.ttf
  8. BIN
      html/css/iconfont/iconfont.woff
  9. 0 47
      html/css/index.css
  10. 0 17
      html/css/style.css
  11. 0 158
      html/highTech.html
  12. BIN
      html/img/discount_ioc_1.png
  13. BIN
      html/img/discount_ioc_2.png
  14. BIN
      html/img/discount_ioc_3.png
  15. BIN
      html/img/discount_ioc_4.png
  16. BIN
      html/img/discount_ioc_5.png
  17. BIN
      html/img/flowChart.png
  18. BIN
      html/img/img1.jpg
  19. BIN
      html/img/logo.png
  20. BIN
      html/img/logo_sm.png
  21. BIN
      html/img/mx_img_1.png
  22. BIN
      html/img/mx_img_2.png
  23. BIN
      html/img/mx_img_3.png
  24. BIN
      html/img/mx_img_4.png
  25. BIN
      html/img/search_ioc.png
  26. BIN
      html/img/slide_img_s_1.png
  27. BIN
      html/img/zc_img_1.png
  28. 0 355
      html/index.html
  29. 0 9
      html/js/public.js
  30. BIN
      image/achievement_ico_1.png
  31. BIN
      image/achievement_ico_2.png
  32. BIN
      image/avatar1.png
  33. BIN
      image/avatar2.png
  34. BIN
      image/avatar3.png
  35. BIN
      image/avatar4.png
  36. BIN
      image/avatarImg.png
  37. BIN
      image/demand_ico_1.png
  38. BIN
      image/demand_ico_2.png
  39. BIN
      image/demand_ico_3.png
  40. BIN
      image/demand_ico_4.png
  41. BIN
      image/demand_ico_5.png
  42. BIN
      image/demand_ico_6.png
  43. BIN
      image/demand_ico_6_atv.png
  44. BIN
      image/demand_sup.png
  45. BIN
      image/list_title_ico_1.png
  46. BIN
      image/list_title_ico_2.png
  47. BIN
      image/list_title_ico_3.png
  48. BIN
      image/logo.jpg
  49. BIN
      image/logo.png
  50. BIN
      html/img/li_ioc.png
  51. BIN
      image/search.png
  52. 0 0
      image/slide_img_1.png
  53. 818 786
      js/component/DicIndustryList.js
  54. 1165 1139
      js/component/DicProvinceList.js
  55. 1047 1004
      js/component/DicTechFieldList.js
  56. 13489 0
      js/component/NewDicProvinceList.js
  57. 35 47
      js/component/account/achievement/techAchievement.jsx
  58. 26 7
      js/component/account/achievement/techAchievement.less
  59. 1008 493
      js/component/account/achievement/techAchievementDesc.jsx
  60. 28 3
      js/component/account/content.less
  61. 51 23
      js/component/account/demand/techDemand.jsx
  62. 24 4
      js/component/account/demand/techDemand.less
  63. 795 281
      js/component/account/demand/techDemandDesc.jsx
  64. 411 0
      js/component/account/index/collection.jsx
  65. 51 132
      js/component/account/index/content.jsx
  66. 22 4
      js/component/account/index/content.less
  67. 12 11
      js/component/account/index/leftTab.jsx
  68. 112 0
      js/component/account/index/normal.jsx
  69. 320 0
      js/component/account/index/orderList.jsx
  70. 1 0
      js/component/account/services/achievement.jsx
  71. 4 4
      js/component/account/services/activity.jsx
  72. 41 22
      js/component/account/services/activityCostList.jsx
  73. 15 10
      js/component/account/services/annualReport.jsx
  74. 4 3
      js/component/account/services/cognizance.jsx
  75. 18 19
      js/component/account/services/companyDetail.jsx
  76. 54 10
      js/component/account/services/content.jsx
  77. 7 5
      js/component/account/services/contract/contract.jsx
  78. 36 42
      js/component/account/services/copyright/copyright.jsx
  79. 111 0
      js/component/account/services/evaluate/create.jsx
  80. 17 0
      js/component/account/services/evaluate/create.less
  81. 171 0
      js/component/account/services/evaluate/index.jsx
  82. 0 0
      js/component/account/services/evaluate/index.less
  83. 516 0
      js/component/account/services/evaluate/info.jsx
  84. 63 0
      js/component/account/services/evaluate/info.less
  85. 126 0
      js/component/account/services/evaluate/steps.jsx
  86. 44 0
      js/component/account/services/evaluate/steps.less
  87. 172 0
      js/component/account/services/evaluate/steps/dict.js
  88. 287 0
      js/component/account/services/evaluate/steps/step1.jsx
  89. 151 0
      js/component/account/services/evaluate/steps/step2.jsx
  90. 199 0
      js/component/account/services/evaluate/steps/step3.jsx
  91. 206 0
      js/component/account/services/evaluate/steps/step4.jsx
  92. 344 0
      js/component/account/services/evaluate/steps/step5.jsx
  93. 96 0
      js/component/account/services/evaluate/steps/step6.jsx
  94. 140 0
      js/component/account/services/evaluate/steps/step7.jsx
  95. 358 0
      js/component/account/services/evaluate/steps/step8.jsx
  96. 12 12
      js/component/account/services/finance.jsx
  97. 2 2
      js/component/account/services/honorList.jsx
  98. 5 2
      js/component/account/services/intellectualDesc.jsx
  99. 11 1
      js/component/account/services/leftTab.jsx
  100. 0 0
      js/component/account/services/orgTechCenter.jsx

+ 2 - 1
.gitignore

@@ -28,4 +28,5 @@ node_modules
 clean.sh
 build
 .project
-.vscode
+.vscode
+dll

+ 5 - 0
bin/clean.js

@@ -0,0 +1,5 @@
+const del = require('del');
+ 
+del(['build/*']).then(paths => {
+    console.log('Deleted files and folders:\n', paths.join('\n'));
+});

+ 459 - 6
css/base.less

@@ -1,7 +1,461 @@
+/*! normalize.css v7.0.0 | MIT License | github.com/necolas/normalize.css */
+
+/* Document
+   ========================================================================== */
+
+/**
+ * 1. Correct the line height in all browsers.
+ * 2. Prevent adjustments of font size after orientation changes in
+ *    IE on Windows Phone and in iOS.
+ */
+
+html {
+  line-height: 1.15; /* 1 */
+  -ms-text-size-adjust: 100%; /* 2 */
+  -webkit-text-size-adjust: 100%; /* 2 */
+}
+
+/* Sections
+   ========================================================================== */
+
+/**
+ * Remove the margin in all browsers (opinionated).
+ */
+
+body {
+  margin: 0;
+}
+
+/**
+ * Add the correct display in IE 9-.
+ */
+
+article,
+aside,
+footer,
+header,
+nav,
+section {
+  display: block;
+}
+
+/**
+ * Correct the font size and margin on `h1` elements within `section` and
+ * `article` contexts in Chrome, Firefox, and Safari.
+ */
+
+h1 {
+  font-size: 2em;
+  margin: 0.67em 0;
+}
+
+/* Grouping content
+   ========================================================================== */
+
+/**
+ * Add the correct display in IE 9-.
+ * 1. Add the correct display in IE.
+ */
+
+figcaption,
+figure,
+main { /* 1 */
+  display: block;
+}
+
+/**
+ * Add the correct margin in IE 8.
+ */
+
+figure {
+  margin: 1em 40px;
+}
+
+/**
+ * 1. Add the correct box sizing in Firefox.
+ * 2. Show the overflow in Edge and IE.
+ */
+
+hr {
+  box-sizing: content-box; /* 1 */
+  height: 0; /* 1 */
+  overflow: visible; /* 2 */
+}
+
+/**
+ * 1. Correct the inheritance and scaling of font size in all browsers.
+ * 2. Correct the odd `em` font sizing in all browsers.
+ */
+
+pre {
+  font-family: monospace, monospace; /* 1 */
+  font-size: 1em; /* 2 */
+}
+
+/* Text-level semantics
+   ========================================================================== */
+
+/**
+ * 1. Remove the gray background on active links in IE 10.
+ * 2. Remove gaps in links underline in iOS 8+ and Safari 8+.
+ */
+
+a {
+  background-color: transparent; /* 1 */
+  -webkit-text-decoration-skip: objects; /* 2 */
+}
+
+/**
+ * 1. Remove the bottom border in Chrome 57- and Firefox 39-.
+ * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.
+ */
+
+abbr[title] {
+  border-bottom: none; /* 1 */
+  text-decoration: underline; /* 2 */
+  text-decoration: underline dotted; /* 2 */
+}
+
+/**
+ * Prevent the duplicate application of `bolder` by the next rule in Safari 6.
+ */
+
+b,
+strong {
+  font-weight: inherit;
+}
+
+/**
+ * Add the correct font weight in Chrome, Edge, and Safari.
+ */
+
+b,
+strong {
+  font-weight: bolder;
+}
+
+/**
+ * 1. Correct the inheritance and scaling of font size in all browsers.
+ * 2. Correct the odd `em` font sizing in all browsers.
+ */
+
+code,
+kbd,
+samp {
+  font-family: monospace, monospace; /* 1 */
+  font-size: 1em; /* 2 */
+}
+
+/**
+ * Add the correct font style in Android 4.3-.
+ */
+
+dfn {
+  font-style: italic;
+}
+
+/**
+ * Add the correct background and color in IE 9-.
+ */
+
+mark {
+  background-color: #ff0;
+  color: #000;
+}
+
+/**
+ * Add the correct font size in all browsers.
+ */
+
+small {
+  font-size: 80%;
+}
+
+/**
+ * Prevent `sub` and `sup` elements from affecting the line height in
+ * all browsers.
+ */
+
+sub,
+sup {
+  font-size: 75%;
+  line-height: 0;
+  position: relative;
+  vertical-align: baseline;
+}
+
+sub {
+  bottom: -0.25em;
+}
+
+sup {
+  top: -0.5em;
+}
+
+/* Embedded content
+   ========================================================================== */
+
+/**
+ * Add the correct display in IE 9-.
+ */
+
+audio,
+video {
+  display: inline-block;
+}
+
+/**
+ * Add the correct display in iOS 4-7.
+ */
+
+audio:not([controls]) {
+  display: none;
+  height: 0;
+}
+
+/**
+ * Remove the border on images inside links in IE 10-.
+ */
+
+img {
+  border-style: none;
+}
+
+/**
+ * Hide the overflow in IE.
+ */
+
+svg:not(:root) {
+  overflow: hidden;
+}
+
+/* Forms
+   ========================================================================== */
+
+/**
+ * 1. Change the font styles in all browsers (opinionated).
+ * 2. Remove the margin in Firefox and Safari.
+ */
+
+button,
+input,
+optgroup,
+select,
+textarea {
+  font-family: sans-serif; /* 1 */
+  font-size: 100%; /* 1 */
+  line-height: 1.15; /* 1 */
+  margin: 0; /* 2 */
+}
+
+/**
+ * Show the overflow in IE.
+ * 1. Show the overflow in Edge.
+ */
+
+button,
+input { /* 1 */
+  overflow: visible;
+}
+
+/**
+ * Remove the inheritance of text transform in Edge, Firefox, and IE.
+ * 1. Remove the inheritance of text transform in Firefox.
+ */
+
+button,
+select { /* 1 */
+  text-transform: none;
+}
+
+/**
+ * 1. Prevent a WebKit bug where (2) destroys native `audio` and `video`
+ *    controls in Android 4.
+ * 2. Correct the inability to style clickable types in iOS and Safari.
+ */
+
+button,
+html [type="button"], /* 1 */
+[type="reset"],
+[type="submit"] {
+  -webkit-appearance: button; /* 2 */
+}
+
+/**
+ * Remove the inner border and padding in Firefox.
+ */
+
+button::-moz-focus-inner,
+[type="button"]::-moz-focus-inner,
+[type="reset"]::-moz-focus-inner,
+[type="submit"]::-moz-focus-inner {
+  border-style: none;
+  padding: 0;
+}
+
+/**
+ * Restore the focus styles unset by the previous rule.
+ */
+
+button:-moz-focusring,
+[type="button"]:-moz-focusring,
+[type="reset"]:-moz-focusring,
+[type="submit"]:-moz-focusring {
+  outline: 1px dotted ButtonText;
+}
+
+/**
+ * Correct the padding in Firefox.
+ */
+
+fieldset {
+  padding: 0.35em 0.75em 0.625em;
+}
+
+/**
+ * 1. Correct the text wrapping in Edge and IE.
+ * 2. Correct the color inheritance from `fieldset` elements in IE.
+ * 3. Remove the padding so developers are not caught out when they zero out
+ *    `fieldset` elements in all browsers.
+ */
+
+legend {
+  box-sizing: border-box; /* 1 */
+  color: inherit; /* 2 */
+  display: table; /* 1 */
+  max-width: 100%; /* 1 */
+  padding: 0; /* 3 */
+  white-space: normal; /* 1 */
+}
+
+/**
+ * 1. Add the correct display in IE 9-.
+ * 2. Add the correct vertical alignment in Chrome, Firefox, and Opera.
+ */
+
+progress {
+  display: inline-block; /* 1 */
+  vertical-align: baseline; /* 2 */
+}
+
+/**
+ * Remove the default vertical scrollbar in IE.
+ */
+
+textarea {
+  overflow: auto;
+}
+
+/**
+ * 1. Add the correct box sizing in IE 10-.
+ * 2. Remove the padding in IE 10-.
+ */
+
+[type="checkbox"],
+[type="radio"] {
+  box-sizing: border-box; /* 1 */
+  padding: 0; /* 2 */
+}
+
+/**
+ * Correct the cursor style of increment and decrement buttons in Chrome.
+ */
+
+[type="number"]::-webkit-inner-spin-button,
+[type="number"]::-webkit-outer-spin-button {
+  height: auto;
+}
+
+/**
+ * 1. Correct the odd appearance in Chrome and Safari.
+ * 2. Correct the outline style in Safari.
+ */
+
+[type="search"] {
+  -webkit-appearance: textfield; /* 1 */
+  outline-offset: -2px; /* 2 */
+}
+
+/**
+ * Remove the inner padding and cancel buttons in Chrome and Safari on macOS.
+ */
+
+[type="search"]::-webkit-search-cancel-button,
+[type="search"]::-webkit-search-decoration {
+  -webkit-appearance: none;
+}
+
+/**
+ * 1. Correct the inability to style clickable types in iOS and Safari.
+ * 2. Change font properties to `inherit` in Safari.
+ */
+
+::-webkit-file-upload-button {
+  -webkit-appearance: button; /* 1 */
+  font: inherit; /* 2 */
+}
+
+/* Interactive
+   ========================================================================== */
+
+/*
+ * Add the correct display in IE 9-.
+ * 1. Add the correct display in Edge, IE, and Firefox.
+ */
+
+details, /* 1 */
+menu {
+  display: block;
+}
+
+/*
+ * Add the correct display in all browsers.
+ */
+
+summary {
+  display: list-item;
+}
+
+/* Scripting
+   ========================================================================== */
+
+/**
+ * Add the correct display in IE 9-.
+ */
+
+canvas {
+  display: inline-block;
+}
+
+/**
+ * Add the correct display in IE.
+ */
+
+template {
+  display: none;
+}
+
+/* Hidden
+   ========================================================================== */
+
+/**
+ * Add the correct display in IE 10-.
+ */
+
+[hidden] {
+  display: none;
+}
+
 body {
     color: #333;
     font-size: 14px;
     background: #f0f0f0;
+    .ant-input-number,
+    .ant-input-number-lg {
+        .ant-input-number-handler-wrap {
+            display: none;
+        }
+    }
 }
 
 #root {
@@ -36,6 +490,7 @@ body {
 .footer {
     border-top: 1px solid #d8d8d8;
 }
+
 // .ant-modal-content {
 //     .ant-modal-body {
 //         .ant-form {
@@ -47,10 +502,8 @@ body {
 //         }
 //     }
 // }
-@font-face {font-family: 'myiconfont';
+@font-face {
+    font-family: 'myiconfont';
     src: url('./iconfont/iconfont.eot');
-    src: url('./iconfont/iconfont.eot?#iefix') format('embedded-opentype'),
-    url('./iconfont/iconfont.woff') format('woff'),
-    url('./iconfont/iconfont.ttf') format('truetype'),
-    url('./iconfont/iconfont.svg#myiconfont') format('svg');
-}
+    src: url('./iconfont/iconfont.eot?#iefix') format('embedded-opentype'), url('./iconfont/iconfont.woff') format('woff'), url('./iconfont/iconfont.ttf') format('truetype'), url('./iconfont/iconfont.svg#myiconfont') format('svg');
+}

+ 0 - 39
html/css/highTech.css

@@ -1,39 +0,0 @@
-h4{margin: 0; padding: 0;}
-.header_search{height: 90px; line-height: 90px;}
-.logo img{height: 100%;}
-.search .form-control{margin-top: 28px;}
-.search input{border-radius: 20px 0 0 20px;background: url(../img/search_ioc.png) no-repeat;background-position: 12px 8px; padding-left: 40px;}
-.search button{padding: 5px 21px;border-radius: 0 20px 20px 0;font-size: 16px;
-	letter-spacing: 8px;background: #58a3ff;border-color: #58a3ff; color: #fff;outline:none;}
-.search button:hover{background: #58a3ff;border-color: #58a3ff; color: #fff;}
-.search button:active{background: #58a3ff;border-color: #58a3ff; color: #fff;outline: none;}
-.search button:focus{background: #58a3ff;border-color: #58a3ff; color: #fff;outline: none;}
-
-nav{border-bottom: 1px solid #ececec;background: #fafafa; overflow: auto; margin-bottom: 42px;}
-nav ul li{float: left;}
-nav ul li.active a{line-height: 36px!important;}
-nav a{height: 40px;line-height: 44px;display: inline-block;text-align: center; color: #333333; padding: 0 20px;}
-nav a:hover{color: #333333;}
-.active{background: #fff; border:1px solid #ececec; border-top:4px solid #58a3ff; border-bottom: none; color: #58a3ff}
-
-.content{/*padding: 20px; border: 1px solid #ececec;*/ overflow: auto;}
-.content h4{padding-left: 10px; border-left: 4px solid #58a3ff; margin-bottom: 20px;}
-.discount{margin-bottom: 60px; overflow: auto;}
-.discount_content{width: 180px;height: 248px; padding: 10px; margin-right: 25px; border: 1px solid #d9eaff; float: left;}
-.clear_mg{margin-right: 0;}
-.discount_img{text-align: center;margin: 10px 0 20px 0;}
-.discount_info{font-size: 14px; }
-.discount_info span{font-size: 15px; margin-bottom: 15px; display: block;}
-.blue{color: #58a3ff;}
-.green{color: #8ce2c5;}
-.red{color: #ed2977;}
-.yellow{color: #ff8a33;}
-.purple{color: #9a53f2;}
-.discount_info p{line-height: 22px; color: #7a7a7a;}
-
-.process{background: #f0f7ff; padding-top: 20px; margin-bottom: 20px;}
-.flow_chart{margin: 20px 0 60px 0;text-align: center;}
-.advantage { padding: 10px 0 0 34px;}
-.advantage li {list-style-image: url(../img/li_ioc.png);}
-.advantage span{margin-bottom: 20px; display: block; color: #333333;font-weight: bold;}
-.advantage p{line-height: 28px;color: #666666; margin-bottom: 30px;}

BIN
html/css/iconfont/iconfont.eot


+ 0 - 922
html/css/iconfont/iconfont.svg

@@ -1,922 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
-<svg xmlns="http://www.w3.org/2000/svg">
-<metadata>
-Created by FontForge 20120731 at Thu Mar  9 14:34:02 2017
- By admin
-</metadata>
-<defs>
-<font id="anticon" horiz-adv-x="1024" >
-  <font-face 
-    font-family="anticon"
-    font-weight="500"
-    font-stretch="normal"
-    units-per-em="1024"
-    panose-1="2 0 6 3 0 0 0 0 0 0"
-    ascent="896"
-    descent="-128"
-    x-height="792"
-    bbox="-0.142858 -128.087 1024.37 896.923"
-    underline-thickness="0"
-    underline-position="0"
-    unicode-range="U+0078-E94F"
-  />
-<missing-glyph 
- />
-    <glyph glyph-name=".notdef" 
- />
-    <glyph glyph-name=".notdef" 
- />
-    <glyph glyph-name=".null" horiz-adv-x="0" 
- />
-    <glyph glyph-name="nonmarkingreturn" horiz-adv-x="341" 
- />
-    <glyph glyph-name="x" unicode="x" horiz-adv-x="1001" 
-d="M281 543q-27 -1 -53 -1h-83q-18 0 -36.5 -6t-32.5 -18.5t-23 -32t-9 -45.5v-76h912v41q0 16 -0.5 30t-0.5 18q0 13 -5 29t-17 29.5t-31.5 22.5t-49.5 9h-133v-97h-438v97zM955 310v-52q0 -23 0.5 -52t0.5 -58t-10.5 -47.5t-26 -30t-33 -16t-31.5 -4.5q-14 -1 -29.5 -0.5
-t-29.5 0.5h-32l-45 128h-439l-44 -128h-29h-34q-20 0 -45 1q-25 0 -41 9.5t-25.5 23t-13.5 29.5t-4 30v167h911zM163 247q-12 0 -21 -8.5t-9 -21.5t9 -21.5t21 -8.5q13 0 22 8.5t9 21.5t-9 21.5t-22 8.5zM316 123q-8 -26 -14 -48q-5 -19 -10.5 -37t-7.5 -25t-3 -15t1 -14.5
-t9.5 -10.5t21.5 -4h37h67h81h80h64h36q23 0 34 12t2 38q-5 13 -9.5 30.5t-9.5 34.5q-5 19 -11 39h-368zM336 498v228q0 11 2.5 23t10 21.5t20.5 15.5t34 6h188q31 0 51.5 -14.5t20.5 -52.5v-227h-327z" />
-    <glyph glyph-name="stepforward" unicode="&#xe600;" 
-d="M327 820l431 -356v300q0 15 10.5 25.5t25.5 10.5v0q15 0 25.5 -10.5t10.5 -25.5v-760q0 -15 -10.5 -25.5t-25.5 -10.5v0q-15 0 -25.5 10.5t-10.5 25.5v301l-431 -357q-21 -18 -46 -7t-25 39v808q0 28 25 39t46 -7z" />
-    <glyph glyph-name="stepbackward" unicode="&#xe601;" 
-d="M759 820l-431 -356v300q0 15 -10.5 25.5t-25.5 10.5v0q-15 0 -25.5 -10.5t-10.5 -25.5v-760q0 -15 10.5 -25.5t25.5 -10.5v0q15 0 25.5 10.5t10.5 25.5v301l431 -357q21 -18 46 -7t25 39v808q0 28 -25 39t-46 -7z" />
-    <glyph glyph-name="forward" unicode="&#xe602;" 
-d="M575 790l436 -375q13 -12 13 -30t-13 -29l-436 -378q-18 -17 -40.5 -6.5t-22.5 36.5v377v375q0 26 22.5 36.5t40.5 -6.5zM63 790l436 -375q13 -12 13 -30t-13 -29l-436 -378q-18 -17 -40.5 -6.5t-22.5 36.5v752q0 26 22.5 36.5t40.5 -6.5z" />
-    <glyph glyph-name="banckward" unicode="&#xe603;" horiz-adv-x="1025" 
-d="M449 790l-436 -376q-13 -11 -13 -29t13 -30l436 -377q18 -17 40.5 -6.5t22.5 36.5v377v375q0 26 -22.5 36.5t-40.5 -6.5zM961 790l-436 -376q-13 -11 -13 -29t13 -30l436 -377q18 -17 40.5 -6.5t22.5 36.5v752q0 26 -22.5 36.5t-40.5 -6.5z" />
-    <glyph glyph-name="caretright" unicode="&#xe604;" 
-d="M393 820l489 -403q14 -13 14 -32t-14 -32l-489 -405q-21 -18 -46 -7t-25 39v808q0 28 25 39t46 -7z" />
-    <glyph glyph-name="caretleft" unicode="&#xe605;" 
-d="M631 820l-489 -403q-14 -13 -14 -32t14 -32l489 -405q21 -18 46 -7t25 39v808q0 28 -25 39t-46 -7z" />
-    <glyph glyph-name="caretdown" unicode="&#xe606;" 
-d="M76 504l403 -489q13 -15 32 -15t32 15l405 489q18 20 7 45t-39 25h-808q-28 0 -39 -25t7 -45z" />
-    <glyph glyph-name="caretup" unicode="&#xe607;" 
-d="M76 263l405 489q13 14 32 14t32 -14l403 -489q18 -20 7 -45.5t-39 -25.5h-808q-28 0 -39 25.5t7 45.5z" />
-    <glyph glyph-name="rightcircle" unicode="&#xe608;" 
-d="M512 895q-104 0 -199 -40.5t-163 -109t-109 -163t-41 -199t41 -199t109 -163t163 -109t199 -40.5t199 40.5t163 109t109 163t41 199t-41 199t-109 163t-163 109t-199 40.5zM681 358l-235 -220q-11 -11 -26 -10.5t-25 11.5t-9.5 26t11.5 25l207 194l-207 195
-q-11 10 -11.5 25t9.5 26t25 11.5t26 -9.5l235 -221q12 -11 12 -26.5t-12 -26.5z" />
-    <glyph glyph-name="leftcircle" unicode="&#xe609;" 
-d="M512 895q-104 0 -199 -40.5t-163 -109t-109 -163t-41 -199t41 -199t109 -163t163 -109t199 -40.5t199 40.5t163 109t109 163t41 199t-41 199t-109 163t-163 109t-199 40.5zM629 139q-10 -11 -25 -11.5t-26 9.5l-235 221q-12 11 -12 26.5t11 26.5l236 220q11 11 26 10.5
-t25 -11.5t9.5 -26t-11.5 -25l-207 -195l207 -194q11 -10 11.5 -25t-9.5 -26z" />
-    <glyph glyph-name="upcircle" unicode="&#xe60a;" 
-d="M512 895q-104 0 -199 -40.5t-163 -109t-109 -163t-41 -199t41 -199t109 -163t163 -109t199 -40.5t199 40.5t163 109t109 163t41 199t-41 199t-109 163t-163 109t-199 40.5zM757 278.5q-11 -10.5 -25.5 -10t-24.5 11.5l-195 208l-195 -208q-10 -11 -25 -11.5t-25.5 10
-t-11 25t9.5 25.5l221 236q10 11 26 11t26 -11l221 -236q10 -11 9.5 -25.5t-11.5 -25z" />
-    <glyph glyph-name="downcircle" unicode="&#xe60b;" 
-d="M512 895q-104 0 -199 -40.5t-163 -109t-109 -163t-41 -199t41 -199t109 -163t163 -109t199 -40.5t199 40.5t163 109t109 163t41 199t-41 199t-109 163t-163 109t-199 40.5zM759 430l-221 -236q-10 -11 -26 -11t-26 11l-221 236q-10 11 -9.5 25.5t11 25t25.5 10t25 -11.5
-l195 -208l195 208q10 11 24.5 11.5t25.5 -10t11.5 -25t-9.5 -25.5z" />
-    <glyph glyph-name="rightcircleo" unicode="&#xe60c;" 
-d="M511.5 823q89.5 0 171.5 -34q79 -34 140 -95t94 -139q35 -82 35 -171.5t-35 -171.5q-33 -78 -94 -139t-140 -95q-81 -34 -170.5 -34t-171.5 34q-79 34 -140 95t-94 139q-35 82 -35 171.5t35 171.5q33 78 94 139t140 95q81 34 170.5 34zM512 895q-104 0 -199 -40.5
-t-163 -109t-109 -163t-41 -199t41 -199t109 -163t163 -109t199 -40.5t199 40.5t163 109t109 163t41 199t-41 199t-109 163t-163 109t-199 40.5v0zM681 411l-235 220q-11 11 -26 10.5t-25 -11.5t-9.5 -26t11.5 -25l207 -195l-207 -194q-11 -10 -11.5 -25t9.5 -26t25 -11.5
-t26 9.5l235 221q12 11 12 26.5t-12 26.5z" />
-    <glyph glyph-name="leftcircleo" unicode="&#xe60d;" 
-d="M511.5 823q89.5 0 171.5 -34q79 -34 140 -95t94 -139q35 -82 35 -171.5t-35 -171.5q-33 -78 -94 -139t-140 -95q-81 -34 -170.5 -34t-171.5 34q-79 34 -140 95t-94 139q-35 82 -35 171.5t35 171.5q33 78 94 139t140 95q81 34 170.5 34zM512 895q-104 0 -199 -40.5
-t-163 -109t-109 -163t-41 -199t41 -199t109 -163t163 -109t199 -40.5t199 40.5t163 109t109 163t41 199t-41 199t-109 163t-163 109t-199 40.5v0zM331 384.5q0 -15.5 12 -26.5l235 -221q11 -10 26 -9.5t25 11.5t9.5 26t-11.5 25l-207 194l207 195q11 10 11.5 25t-9.5 26
-t-25 11.5t-26 -10.5l-236 -220q-11 -11 -11 -26.5z" />
-    <glyph glyph-name="upcircleo" unicode="&#xe60e;" 
-d="M511.5 823q89.5 0 171.5 -34q79 -34 140 -95t94 -139q35 -82 35 -171.5t-35 -171.5q-33 -78 -94 -139t-140 -95q-81 -34 -170.5 -34t-171.5 34q-79 34 -140 95t-94 139q-35 82 -35 171.5t35 171.5q33 78 94 139t140 95q81 34 170.5 34zM512 895q-104 0 -199 -40.5
-t-163 -109t-109 -163t-41 -199t41 -199t109 -163t163 -109t199 -40.5t199 40.5t163 109t109 163t41 199t-41 199t-109 163t-163 109t-199 40.5v0zM512 576q-16 0 -26 -11l-221 -236q-10 -11 -9.5 -25.5t11 -25t25.5 -10t25 11.5l195 208l195 -208q10 -11 24.5 -11.5t25.5 10
-t11.5 25t-9.5 25.5l-221 236q-10 11 -26 11z" />
-    <glyph glyph-name="downcircleo" unicode="&#xe60f;" 
-d="M511.5 823q89.5 0 171.5 -34q79 -34 140 -95t94 -139q35 -82 35 -171.5t-35 -171.5q-33 -78 -94 -139t-140 -95q-81 -34 -170.5 -34t-171.5 34q-79 34 -140 95t-94 139q-35 82 -35 171.5t35 171.5q33 78 94 139t140 95q81 34 170.5 34zM512 895q-104 0 -199 -40.5
-t-163 -109t-109 -163t-41 -199t41 -199t109 -163t163 -109t199 -40.5t199 40.5t163 109t109 163t41 199t-41 199t-109 163t-163 109t-199 40.5v0zM512 183q-16 0 -26 11l-221 236q-10 11 -9.5 25.5t11 25t25.5 10t25 -11.5l195 -208l195 208q10 11 24.5 11.5t25.5 -10
-t11.5 -25t-9.5 -25.5l-221 -236q-10 -11 -26 -11z" />
-    <glyph glyph-name="verticleleft" unicode="&#xe610;" 
-d="M273 78l382 307l-380 305q-14 11 -16 29t9.5 32t29.5 16t32 -9l358 -288v262q0 15 10.5 25.5t25.5 10.5h8q15 0 25.5 -10.5t10.5 -25.5v-696q0 -15 -10.5 -25.5t-25.5 -10.5h-8q-15 0 -25.5 10.5t-10.5 25.5v264l-360 -290q-12 -10 -27 -10q-21 0 -35 17q-11 14 -9 32
-t16 29z" />
-    <glyph glyph-name="verticleright" unicode="&#xe611;" 
-d="M752 78l-382 307l380 305q14 11 16 29t-9.5 32t-29.5 16t-32 -9l-358 -288v262q0 15 -10.5 25.5t-25.5 10.5h-8q-15 0 -25.5 -10.5t-10.5 -25.5v-696q0 -15 10.5 -25.5t25.5 -10.5h8q15 0 25.5 10.5t10.5 25.5v264l360 -290q12 -10 27 -10q21 0 34 17q12 14 10 32t-16 29
-z" />
-    <glyph glyph-name="rollback" unicode="&#xe612;" 
-d="M811.5 471.5q-88.5 88.5 -213.5 88.5h-336l114 114q12 12 12 28.5t-12 28t-28.5 11.5t-28.5 -12l-183 -183q-12 -12 -12 -28.5t12 -28.5l178 -178q12 -12 28.5 -12t28 11.5t11.5 28t-11 28.5l-113 112h340q92 0 157 -65t65 -157v-192q0 -17 12 -28.5t28.5 -11.5t28 11.5
-t11.5 28.5v192q0 125 -88.5 213.5z" />
-    <glyph glyph-name="retweet" unicode="&#xe613;" 
-d="M366 579h349l-119 -119q-11 -11 -11 -26t10.5 -25.5t25.5 -10.5t25 11l179 178q11 11 11 25.5t-11 25.5l-184 184q-10 10 -25 10t-25.5 -10.5t-10.5 -25.5t10 -25l120 -120h-344q-124 0 -211.5 -87.5t-87.5 -211.5q0 -15 10.5 -25.5t25.5 -10.5t25.5 10.5t10.5 25.5
-q0 94 66.5 160.5t160.5 66.5zM923 455q-15 0 -25.5 -10.5t-10.5 -25.5q0 -94 -66.5 -160.5t-160.5 -66.5h-349l120 120q10 10 10 25t-10.5 25.5t-25.5 10.5t-25 -11l-179 -178q-10 -11 -10 -25.5t10 -25.5l184 -184q10 -10 25 -10t25.5 10.5t10.5 25.5t-10 25l-120 120h344
-q124 0 211.5 87.5t87.5 211.5q0 15 -10.5 25.5t-25.5 10.5z" />
-    <glyph glyph-name="shrink" unicode="&#xe614;" 
-d="M109 247h211l-232 -232q-13 -13 -13 -31t13 -31t31 -13t31 13l236 236v-210q0 -18 13 -31t31 -13t31 13t13 31v312q0 19 -13 31.5t-31 12.5h-321q-18 0 -31 -12.5t-13 -31t13 -31.5t31 -13zM595 431h321q18 0 31 13t13 31t-13 31t-31 13h-211l232 232q13 13 13 31.5
-t-13 31t-31 12.5t-31 -12l-236 -236v209q0 18 -13 31t-31 13t-31 -13t-13 -31v-312q0 -18 13 -31t31 -13z" />
-    <glyph glyph-name="arrowsalt" unicode="&#xe615;" 
-d="M430 23h-211l232 232q13 13 13 31.5t-13 31t-31 12.5t-31 -12l-236 -236v209q0 18 -13 31t-31 13t-31 -13t-13 -31v-312q0 -18 13 -31t31 -13h321q18 0 31 13t13 31t-13 31t-31 13zM916 831h-321q-18 0 -31 -13t-13 -31t13 -31t31 -13h211l-232 -232q-13 -13 -13 -31
-t13 -31t31 -13t31 13l236 236v-210q0 -18 13 -31t31 -13t31 13t13 31v312q0 18 -13 31t-31 13z" />
-    <glyph glyph-name="doubleright" unicode="&#xe617;" 
-d="M431 17q-11 14 -9 32t16 29l381 307l-379 305q-14 11 -16 29t9 32t29 16t32 -9l422 -339q17 -13 17 -34t-17 -34l-424 -341q-12 -10 -27 -10q-21 0 -34 17zM101 17q-11 14 -9 32t16 29l381 307l-379 305q-14 11 -16 29t9 32t29 16t32 -9l422 -339q17 -13 17 -34t-17 -34
-l-424 -341q-12 -10 -27 -10q-21 0 -34 17z" />
-    <glyph glyph-name="doubleleft" unicode="&#xe618;" 
-d="M559 0q-15 0 -27 10l-424 341q-17 13 -17 34t17 34l422 339q14 11 32 9t29 -16t9 -32t-16 -29l-379 -305l381 -307q14 -11 16 -29t-9 -32q-13 -17 -34 -17zM889 0q-15 0 -27 10l-424 341q-17 13 -17 34t17 34l422 339q14 11 32 9t29 -16t9 -32t-16 -29l-379 -305
-l381 -307q14 -11 16 -29t-9 -32q-13 -17 -34 -17z" />
-    <glyph glyph-name="arrowdown" unicode="&#xe619;" 
-d="M558 725v-574v0l208 216q13 14 31 14t31.5 -12.5t13.5 -30.5t-12 -32l-284 -294q-13 -14 -31.5 -14t-31.5 14l-285 296q-12 13 -12 30q0 19 14 32q13 13 31 12.5t31 -13.5l208 -216v0v573q0 17 12 30t29 14q19 1 33 -12.5t14 -32.5z" />
-    <glyph glyph-name="arrowup" unicode="&#xe61a;" 
-d="M470 43v574v0l-208 -216q-13 -14 -31 -14t-31.5 12.5t-13.5 30.5t12 32l284 294q13 14 31.5 14t31.5 -14l285 -296q12 -13 12 -30q0 -19 -14 -32q-13 -13 -31 -12.5t-31 13.5l-208 216v0v-573q0 -17 -12 -30t-29 -14q-19 -1 -33 12.5t-14 32.5z" />
-    <glyph glyph-name="arrowright" unicode="&#xe61b;" 
-d="M173 428h574v0l-216 208q-14 13 -14 31t12.5 31.5t30.5 13.5t32 -12l294 -284q14 -13 14 -31.5t-14 -31.5l-296 -285q-13 -12 -30 -12q-19 0 -32 14q-13 13 -12.5 31t13.5 31l216 208v0h-573q-17 0 -30 12t-14 29q-1 19 12.5 33t32.5 14z" />
-    <glyph glyph-name="arrowleft" unicode="&#xe61c;" 
-d="M855 428h-574v0l216 208q14 13 14 31t-12.5 31.5t-30.5 13.5t-32 -12l-294 -284q-14 -13 -14 -31.5t14 -31.5l296 -285q13 -12 30 -12q19 0 32 14q13 13 12.5 31t-13.5 31l-216 208v0h573q17 0 30 12t14 29q1 19 -12.5 33t-32.5 14z" />
-    <glyph glyph-name="down" unicode="&#xe61d;" 
-d="M896 596q0 -15 -10 -28l-341 -423q-13 -17 -34 -17t-34 17l-339 422q-11 14 -9 32t16 29t32 9t29 -16l305 -379l307 381q11 14 29 16t32 -9q17 -13 17 -34z" />
-    <glyph glyph-name="up" unicode="&#xe61e;" 
-d="M896 236q0 15 -10 28l-341 423q-13 17 -34 17t-34 -17l-339 -422q-11 -14 -9 -32t16 -29t32 -9t29 16l305 379l307 -381q11 -14 29 -16t32 9q17 13 17 34z" />
-    <glyph glyph-name="right" unicode="&#xe61f;" 
-d="M301 0q15 0 27 10l424 341q16 13 16 34t-16 34l-422 339q-14 11 -32 9t-29.5 -16t-9.5 -32t16 -29l380 -305l-382 -307q-14 -11 -16 -29t9 -32q14 -17 35 -17z" />
-    <glyph glyph-name="left" unicode="&#xe620;" 
-d="M724 0q-15 0 -27 10l-424 341q-16 13 -16 34t16 34l422 339q14 11 32 9t29.5 -16t9.5 -32t-16 -29l-380 -305l382 -307q14 -11 16 -29t-10 -32q-13 -17 -34 -17z" />
-    <glyph glyph-name="minussquareo" unicode="&#xe621;" 
-d="M888 760v0v0v-753v0h-752v0v753v0h752zM888 832h-752q-30 0 -51 -21t-21 -51v-753q0 -29 21 -50.5t51 -21.5h753q29 0 50.5 21.5t21.5 50.5v753q0 30 -21.5 51t-51.5 21v0zM732 347h-442q-14 0 -25 10.5t-11 25.5v0q0 15 11 25.5t25 10.5h442q14 0 25 -10.5t11 -25.5v0
-q0 -15 -11 -25.5t-25 -10.5z" />
-    <glyph glyph-name="minuscircle" unicode="&#xe622;" 
-d="M512 896q-139 0 -257 -68.5t-186.5 -186.5t-68.5 -257t68.5 -257t186.5 -186.5t257 -68.5t257 68.5t186.5 186.5t68.5 257t-68.5 257t-186.5 186.5t-257 68.5zM832 384q0 -15 -10.5 -25.5t-25.5 -10.5h-568q-15 0 -25.5 10.5t-10.5 25.5v0q0 15 10.5 25.5t25.5 10.5h568
-q15 0 25.5 -10.5t10.5 -25.5v0z" />
-    <glyph glyph-name="minuscircleo" unicode="&#xe623;" 
-d="M512 896q-139 0 -257 -68.5t-186.5 -186.5t-68.5 -257t68.5 -257t186.5 -186.5t257 -68.5t257 68.5t186.5 186.5t68.5 257t-68.5 257t-186.5 186.5t-257 68.5zM823 73q-61 -61 -140 -94q-81 -35 -171 -35t-171 34q-79 34 -140 95t-94 140q-35 81 -35 171t34 171
-q34 79 95 140t140 94q81 35 171 35t171 -34q79 -34 140 -95t94 -140q35 -81 35 -171t-34 -171q-34 -79 -95 -140zM796 348h-568q-15 0 -25.5 10.5t-10.5 25.5v0q0 15 10.5 25.5t25.5 10.5h568q15 0 25.5 -10.5t10.5 -25.5v0q0 -15 -10.5 -25.5t-25.5 -10.5z" />
-    <glyph glyph-name="minus" unicode="&#xe624;" 
-d="M796 348h-568q-15 0 -25.5 10.5t-10.5 25.5v0q0 15 10.5 25.5t25.5 10.5h568q15 0 25.5 -10.5t10.5 -25.5v0q0 -15 -10.5 -25.5t-25.5 -10.5z" />
-    <glyph glyph-name="pluscircleo" unicode="&#xe625;" 
-d="M512 896q-139 0 -257 -68.5t-186.5 -186.5t-68.5 -257t68.5 -257t186.5 -186.5t257 -68.5t257 68.5t186.5 186.5t68.5 257t-68.5 257t-186.5 186.5t-257 68.5zM823 73q-61 -61 -140 -94q-81 -35 -171 -35t-171 34q-79 34 -140 95t-94 140q-35 81 -35 171t34 171
-q34 79 95 140t140 94q81 35 171 35t171 -34q79 -34 140 -95t94 -140q35 -81 35 -171t-34 -171q-34 -79 -95 -140zM732 420h-184v183q0 15 -10.5 25.5t-25.5 10.5v0q-14 0 -25 -10.5t-11 -25.5v-183h-184q-15 0 -25.5 -11t-10.5 -25v0q0 -15 10.5 -25.5t25.5 -10.5h184v-183
-q0 -15 11 -25.5t25 -10.5v0q15 0 25.5 10.5t10.5 25.5v183h184q15 0 25.5 10.5t10.5 25.5v0q0 14 -10.5 25t-25.5 11z" />
-    <glyph glyph-name="pluscircle" unicode="&#xe626;" 
-d="M512 896q-139 0 -257 -68.5t-186.5 -186.5t-68.5 -257t68.5 -257t186.5 -186.5t257 -68.5t257 68.5t186.5 186.5t68.5 257t-68.5 257t-186.5 186.5t-257 68.5zM768 384q0 -15 -10.5 -25.5t-25.5 -10.5h-184v-183q0 -15 -10.5 -25.5t-25.5 -10.5v0q-14 0 -25 10.5
-t-11 25.5v183h-184q-15 0 -25.5 10.5t-10.5 25.5v0q0 14 10.5 25t25.5 11h184v183q0 15 11 25.5t25 10.5v0q15 0 25.5 -10.5t10.5 -25.5v-183h184q15 0 25.5 -11t10.5 -25v0z" />
-    <glyph glyph-name="plus" unicode="&#xe627;" 
-d="M866 420h-318v310q0 15 -10.5 25.5t-25.5 10.5v0q-15 0 -25.5 -10.5t-10.5 -25.5v-310h-312q-14 0 -25 -10.5t-11 -25.5v0q0 -15 11 -25.5t25 -10.5h312v-312q0 -14 10.5 -25t25.5 -11v0q15 0 25.5 11t10.5 25v312h318q15 0 25.5 10.5t10.5 25.5v0q0 15 -10.5 25.5
-t-25.5 10.5z" />
-    <glyph glyph-name="infocirlce" unicode="&#xe628;" 
-d="M512 896q-139 0 -257 -68.5t-186.5 -186.5t-68.5 -257t68.5 -257t186.5 -186.5t257 -68.5t257 68.5t186.5 186.5t68.5 257t-68.5 257t-186.5 186.5t-257 68.5zM509 712q15 0 25.5 -11t10.5 -25.5t-10.5 -25t-25.5 -10.5t-25.5 10.5t-10.5 25t10.5 25.5t25.5 11zM666 154
-q0 -15 -10.5 -25.5t-25.5 -10.5h-85h-72h-85q-15 0 -25.5 10.5t-10.5 25.5v0q0 15 10.5 25.5t25.5 10.5h85v314h-60q-15 0 -25.5 11t-10.5 25v0q0 15 10.5 25.5t25.5 10.5h60h36v0q15 0 25.5 -10.5t10.5 -25.5v-350h85q15 0 25.5 -10.5t10.5 -25.5v0z" />
-    <glyph glyph-name="infocirlceo" unicode="&#xe629;" 
-d="M512 896q-139 0 -257 -68.5t-186.5 -186.5t-68.5 -257t68.5 -257t186.5 -186.5t257 -68.5t257 68.5t186.5 186.5t68.5 257t-68.5 257t-186.5 186.5t-257 68.5zM823 73q-61 -61 -140 -94q-81 -35 -171 -35t-171 34q-79 34 -140 95t-94 140q-35 81 -35 171t34 171
-q34 79 95 140t140 94q81 35 171 35t171 -34q79 -34 140 -95t94 -140q35 -81 35 -171t-34 -171q-34 -79 -95 -140zM630 190h-85v350q0 15 -10.5 25.5t-25.5 10.5v0h-36h-60q-15 0 -25.5 -10.5t-10.5 -25.5v0q0 -14 10.5 -25t25.5 -11h60v-314h-85q-15 0 -25.5 -10.5
-t-10.5 -25.5v0q0 -15 10.5 -25.5t25.5 -10.5h85h72h85q15 0 25.5 10.5t10.5 25.5v0q0 15 -10.5 25.5t-25.5 10.5zM509 676zM473 675.5q0 14.5 10.5 25.5t25.5 11t25.5 -11t10.5 -25.5t-10.5 -25t-25.5 -10.5t-25.5 10.5t-10.5 25z" />
-    <glyph glyph-name="info" unicode="&#xe62a;" 
-d="M660 136h-85v404q0 15 -10.5 25.5t-25.5 10.5v0h-36h-60q-15 0 -25.5 -10.5t-10.5 -25.5v0q0 -14 10.5 -25t25.5 -11h60v-368h-85q-15 0 -25.5 -10.5t-10.5 -25.5v0q0 -15 10.5 -25.5t25.5 -10.5h85h72h85q15 0 25.5 10.5t10.5 25.5v0q0 15 -10.5 25.5t-25.5 10.5z
-M539 676zM503 675.5q0 14.5 10.5 25.5t25.5 11t25.5 -11t10.5 -25.5t-10.5 -25t-25.5 -10.5t-25.5 10.5t-10.5 25z" />
-    <glyph glyph-name="exclamation" unicode="&#xe62b;" 
-d="M512 193q-17 0 -28.5 11.5t-11.5 28.5v495q0 17 11.5 28.5t28.5 11.5t28.5 -11.5t11.5 -28.5v-495q0 -17 -11.5 -28.5t-28.5 -11.5zM512 83zM467 83q0 19 13 32t32 13t32 -13t13 -32t-13 -32t-32 -13t-32 13t-13 32z" />
-    <glyph glyph-name="exclamationcircle" unicode="&#xe62c;" 
-d="M512 896q-139 0 -257 -68.5t-186.5 -186.5t-68.5 -257t68.5 -257t186.5 -186.5t257 -68.5t257 68.5t186.5 186.5t68.5 257t-68.5 257t-186.5 186.5t-257 68.5zM472 665q0 17 11.5 28.5t28.5 11.5t28.5 -11.5t11.5 -28.5v-369q0 -17 -11.5 -28.5t-28.5 -11.5t-28.5 11.5
-t-11.5 28.5v369zM512 102q-19 0 -32 13t-13 32t13 32t32 13t32 -13t13 -32t-13 -32t-32 -13z" />
-    <glyph glyph-name="exclamationcircleo" unicode="&#xe62d;" 
-d="M512 824q90 0 171 -34q79 -34 140 -95t94 -140q35 -81 35 -171t-34 -171q-34 -79 -95 -140t-140 -94q-81 -35 -171 -35t-171 34q-79 34 -140 95t-94 140q-35 81 -35 171t34 171q34 79 95 140t140 94q81 35 171 35zM512 896q-139 0 -257 -68.5t-186.5 -186.5t-68.5 -257
-t68.5 -257t186.5 -186.5t257 -68.5t257 68.5t186.5 186.5t68.5 257t-68.5 257t-186.5 186.5t-257 68.5v0zM512 256q-17 0 -28.5 11.5t-11.5 28.5v369q0 17 11.5 28.5t28.5 11.5t28.5 -11.5t11.5 -28.5v-369q0 -17 -11.5 -28.5t-28.5 -11.5zM512 147zM467 147q0 19 13 32
-t32 13t32 -13t13 -32t-13 -32t-32 -13t-32 13t-13 32z" />
-    <glyph glyph-name="closecircle" unicode="&#xe62e;" 
-d="M512 896q-139 0 -257 -68.5t-186.5 -186.5t-68.5 -257t68.5 -257t186.5 -186.5t257 -68.5t257 68.5t186.5 186.5t68.5 257t-68.5 257t-186.5 186.5t-257 68.5zM717 229q11 -10 11 -25t-10.5 -25.5t-25.5 -10.5t-26 10l-154 155l-154 -155q-11 -10 -26 -10t-25.5 10.5
-t-10.5 25.5t11 25l154 155l-154 155q-11 10 -11 25t10.5 25.5t25.5 10.5t26 -10l154 -155l154 155q11 10 26 10t25.5 -10.5t10.5 -25t-11 -25.5l-154 -155z" />
-    <glyph glyph-name="closecircleo" unicode="&#xe62f;" 
-d="M717.5 589.5q-10.5 10.5 -25.5 10.5t-26 -10l-154 -155l-154 155q-11 10 -26 10t-25.5 -10.5t-10.5 -25.5t11 -25l154 -155l-154 -155q-11 -10 -11 -25t10.5 -25.5t25.5 -10.5t26 10l154 155l154 -155q11 -10 26 -10t25.5 10.5t10.5 25t-11 25.5l-154 155l154 155
-q11 10 11 25t-10.5 25.5zM512 896q-139 0 -257 -68.5t-186.5 -186.5t-68.5 -257t68.5 -257t186.5 -186.5t257 -68.5t257 68.5t186.5 186.5t68.5 257t-68.5 257t-186.5 186.5t-257 68.5zM823 73q-61 -61 -140 -94q-81 -35 -171 -35t-171 34q-79 34 -140 95t-94 140
-q-35 81 -35 171t34 171q34 79 95 140t140 94q81 35 171 35t171 -34q79 -34 140 -95t94 -140q35 -81 35 -171t-34 -171q-34 -79 -95 -140z" />
-    <glyph glyph-name="checkcircle" unicode="&#xe630;" 
-d="M512 896q-139 0 -257 -68.5t-186.5 -186.5t-68.5 -257t68.5 -257t186.5 -186.5t257 -68.5t257 68.5t186.5 186.5t68.5 257t-68.5 257t-186.5 186.5t-257 68.5zM772 540l-359 -361v0l-1 -1q-3 -3 -8 -6q-8 -5 -18 -5q-21 0 -31 18l-109 191q-8 13 -4 27t17 21.5t27.5 3.5
-t21.5 -17l86 -149l327 328q11 11 26 11t25.5 -10.5t10.5 -25.5t-11 -25z" />
-    <glyph glyph-name="checkcircleo" unicode="&#xe631;" 
-d="M721 590l-327 -328l-86 149q-7 13 -21.5 17t-27.5 -3.5t-17 -21.5t4 -27l109 -191q10 -18 31 -18q10 0 18 5q5 3 8 6l1 1l359 360q11 11 11 26t-10.5 25.5t-25.5 10.5t-26 -11zM512 896q-139 0 -257 -68.5t-186.5 -186.5t-68.5 -257t68.5 -257t186.5 -186.5t257 -68.5
-t257 68.5t186.5 186.5t68.5 257t-68.5 257t-186.5 186.5t-257 68.5zM823 73q-61 -61 -140 -94q-81 -35 -171 -35t-171 34q-79 34 -140 95t-94 140q-35 81 -35 171t34 171q34 79 95 140t140 94q81 35 171 35t171 -34q79 -34 140 -95t94 -140q35 -81 35 -171t-34 -171
-q-34 -79 -95 -140z" />
-    <glyph glyph-name="check" unicode="&#xe632;" 
-d="M328 96q-3 0 -5 1q-20 2 -30 20l-159 278q-8 15 -4 31t18.5 24t30.5 3.5t25 -18.5l133 -233l491 492q11 12 28 12t28.5 -11.5t11.5 -28.5t-12 -28l-526 -528l-2 -2q-11 -12 -28 -12z" />
-    <glyph glyph-name="close" unicode="&#xe633;" 
-d="M568 381l254 255q12 11 12 27.5t-11.5 28t-28 11.5t-27.5 -12l-255 -254l-255 254q-11 12 -27.5 12t-28 -11.5t-11.5 -28t12 -27.5l254 -255l-254 -255q-12 -11 -12 -27.5t11.5 -28t28 -11.5t27.5 12l255 255l255 -255q11 -12 27.5 -12t28 11.5t11.5 28t-12 27.5z" />
-    <glyph glyph-name="customerservice" unicode="&#xe634;" 
-d="M838 579q-6 26 -18 52q-25 59 -72 105q-46 45 -107 70q-63 26 -131 26t-131 -26q-60 -25 -107 -70.5t-72 -104.5q-11 -25 -18 -53q-24 -8 -45 -23q-22 -16 -38 -38q-35 -47 -35 -106q0 -72 51 -123q37 -37 87 -48q4 -1 8 -1q15 0 25 11q10 10 10 25l-1 227q0 107 77 183
-q78 76 188.5 76t188.5 -76t78 -183v-236q0 -107 -78 -183q-31 -31 -71 -50q1 11 1 22q-1 46 -34 79t-79 35h-3q-48 0 -82 -34.5t-34 -82.5q0 -47 33.5 -81t80.5 -35v0h2v0h2h1v0v0q66 1 126 26t107 70.5t73 104.5q22 53 26 111q35 13 62 40q51 51 51 123q0 58 -34 104.5
-t-88 63.5zM82 355q1 -3 3 -7q-2 5 -3 7zM92 333q2 -4 5 -9q-4 6 -5 9zM160 332l-3 3l3 -3l2 -2zM173 332q-4 3 -7 6q-31 31 -31 73q0 29 14 53q9 17 24 29v-161zM181 316q-1 0 -2 0.5t-1 1.5q1 -1 3 -2v0zM188 571v0q1 5 4 13q-2 -7 -4 -13zM204 248l-10 2q9 -2 10 -2h2h-2z
-M210 248h-1h1v0zM237 274v1l-1 227l1 -227v-1zM307 756q7 5 10 7q-6 -4 -10 -7zM382 799q-30 -13 -58 -31q28 18 58 31q1 0 2.5 0.5t2.5 0.5q-3 0 -5 -1zM442 761l2 0.5t3 0.5h2zM742 730q-45 44 -104 69q-1 0 -2.5 0.5t-2.5 0.5q1 0 2.5 -0.5t2.5 -0.5q59 -25 104 -69l6 -6
-zM754 718q4 -4 9 -10q-5 6 -9 10zM765 706q2 -3 8 -10q-4 4 -8 10zM404 52v0v3v-3zM512 161h3h-3v0zM544.5 21q-12.5 -13 -30.5 -14h-2q-19 0 -32 13.5t-13 31.5q0 19 13 32.5t32 13.5t32 -13.5t13 -32t-12.5 -31.5zM565 44v8v3v-1v-2v-8zM615 19l1 3l-1 -3q1 1 2.5 1.5
-t2.5 0.5q-2 -1 -5 -2zM742 38l-6 -6q1 1 3.5 3t2.5 3l6 6q-3 -4 -6 -6zM784 266v-14v14v236v6v-3v-3v-236zM813 140q-3 -7 -7 -14q4 7 7 14q0 1 1 2.5t1 2.5q-1 -3 -2 -5zM813 628q-3 7 -7 14q4 -7 7 -14q1 -2 3 -7q-1 3 -3 7zM831 572q0 3 -1 7q0 -1 0.5 -3t0.5 -4v0z
-M839 510q7 -3 12 -7q-5 4 -12 7v0zM864 332q-11 -11 -25 -18v0q14 7 25 18q0 1 1 1q0 1 1 1q-1 0 -1 -1q-1 0 -1 -1zM858 338q-5 -5 -11 -10v168q17 -13 27 -30q15 -25 15 -55q0 -42 -31 -73zM945 460l-2 6q1 -2 2 -6zM935 485q1 -1 3 -6q-1 1 -1.5 3.5t-1.5 2.5zM943 356
-q0 2 2 7q-1 -2 -2 -7z" />
-    <glyph glyph-name="creditcard" unicode="&#xe635;" 
-d="M952 766h-880q-30 0 -51 -21t-21 -51v-120v-96v-405q0 -29 21 -50.5t51 -21.5h880q30 0 51 21.5t21 50.5v405v96v120q0 30 -21 51t-51 21zM952 73h-880v405h880v-405zM72 574v120h880v-120h-880zM237 192v0q18 0 31 13t13 31v0q0 18 -13 31t-31 13v0q-18 0 -31 -13
-t-13 -31v0q0 -18 13 -31t31 -13zM404 192v0q18 0 31 13t13 31v0q0 18 -13 31t-31 13v0q-19 0 -31.5 -13t-12.5 -31v0q0 -18 12.5 -31t31.5 -13z" />
-    <glyph glyph-name="codesquareo" unicode="&#xe636;" 
-d="M888 832h-752q-30 0 -51 -21t-21 -51v-753q0 -29 21 -50.5t51 -21.5h753q29 0 50.5 21.5t21.5 50.5v753q0 30 -21.5 51t-51.5 21zM888 7h-752v753h752v-753zM203.5 357.5q10.5 -10.5 25.5 -10.5t25 11l140 141q11 10 11 25t-10 26l-141 142q-10 10 -25 10t-25.5 -10.5
-t-10.5 -25t10 -25.5l115 -117l-115 -115q-10 -11 -10 -26t10.5 -25.5zM383 384q0 -15 10.5 -25.5t24.5 -10.5l199 -1h1q14 0 25 10.5t11 25.5t-11 25.5t-25 10.5l-199 1v0q-15 0 -25.5 -10.5t-10.5 -25.5z" />
-    <glyph glyph-name="book" unicode="&#xe637;" 
-d="M822 832h-259h-72h-121h-72h-94q-29 0 -50.5 -21t-21.5 -51v-753q0 -29 21.5 -50.5t50.5 -21.5h619q29 0 50.5 21.5t21.5 50.5v753q0 30 -21.5 51t-51.5 21zM491 760v-209l-9 8l-33 34q-8 7 -18 7t-17 -7l-44 -44v211h121zM298 760v-277q0 -15 10 -25t25 -10v0
-q37 0 63 25l35 35l35 -34q25 -25 60 -26h1q15 0 25.5 10t10.5 25v277h260v-624h-618v624h93zM204 7v57h618v-57h-618z" />
-    <glyph glyph-name="barschart" unicode="&#xe638;" 
-d="M203 730v-696q0 -15 -10.5 -25.5t-25.5 -10.5v0q-15 0 -25.5 10.5t-10.5 25.5v696q0 15 10.5 25.5t25.5 10.5v0q15 0 25.5 -10.5t10.5 -25.5zM167 70h694q15 0 25.5 -10.5t10.5 -25.5v0q0 -15 -10.5 -25.5t-25.5 -10.5h-694q-15 0 -25.5 10.5t-10.5 25.5v0
-q0 15 10.5 25.5t25.5 10.5zM394 537v-371q0 -15 -10.5 -25.5t-25.5 -10.5v0q-15 0 -25.5 10.5t-10.5 25.5v371q0 15 10.5 25.5t25.5 10.5v0q15 0 25.5 -10.5t10.5 -25.5zM777 667v-501q0 -15 -10.5 -25.5t-25.5 -10.5v0q-15 0 -25.5 10.5t-10.5 25.5v501q0 15 10.5 25.5
-t25.5 10.5v0q15 0 25.5 -10.5t10.5 -25.5zM585 411v-245q0 -15 -10.5 -25.5t-25.5 -10.5v0q-15 0 -25.5 10.5t-10.5 25.5v245q0 15 10.5 25.5t25.5 10.5v0q14 0 25 -10.5t11 -25.5z" />
-    <glyph glyph-name="bars" unicode="&#xe639;" 
-d="M187 639zM124 639q0 26 18.5 44.5t44.5 18.5t44.5 -18.5t18.5 -44.5t-18.5 -44.5t-44.5 -18.5t-44.5 18.5t-18.5 44.5zM856 610h-498q-15 0 -25.5 10.5t-10.5 25.5v0q0 15 10.5 25.5t25.5 10.5h498q15 0 25.5 -10.5t10.5 -25.5v0q0 -15 -10.5 -25.5t-25.5 -10.5zM187 384
-zM124 384q0 26 18.5 44.5t44.5 18.5t44.5 -18.5t18.5 -44.5t-18.5 -44.5t-44.5 -18.5t-44.5 18.5t-18.5 44.5zM856 355h-498q-15 0 -25.5 10.5t-10.5 25.5v0q0 15 10.5 25.5t25.5 10.5h498q15 0 25.5 -10.5t10.5 -25.5v0q0 -15 -10.5 -25.5t-25.5 -10.5zM187 129zM124 129
-q0 26 18.5 44.5t44.5 18.5t44.5 -18.5t18.5 -44.5t-18.5 -44.5t-44.5 -18.5t-44.5 18.5t-18.5 44.5zM856 100h-498q-15 0 -25.5 10.5t-10.5 25.5v0q0 15 10.5 25.5t25.5 10.5h498q15 0 25.5 -10.5t10.5 -25.5v0q0 -15 -10.5 -25.5t-25.5 -10.5z" />
-    <glyph glyph-name="question" unicode="&#xe63a;" 
-d="M644 633q-61 64 -152 64q-84 0 -143.5 -59.5t-59.5 -143.5q0 -15 10.5 -25.5t25.5 -10.5t25.5 10.5t10.5 25.5q0 54 38.5 92.5t92.5 38.5h1q59 0 99 -42q35 -37 32 -85q-1 -18 -4 -29t-21 -37.5t-54 -62.5q-43 -43 -66.5 -77t-27.5 -72q-2 -15 7.5 -26.5t24.5 -12.5h4
-q14 0 24 9t12 23q3 35 73 105q61 61 79.5 98t20.5 78q5 79 -52 139zM486 80zM443 80q0 18 12.5 30.5t30.5 12.5t30.5 -12.5t12.5 -30.5t-12.5 -30.5t-30.5 -12.5t-30.5 12.5t-12.5 30.5z" />
-    <glyph glyph-name="questioncircle" unicode="&#xe63b;" 
-d="M512 896q-139 0 -257 -68.5t-186.5 -186.5t-68.5 -257t68.5 -257t186.5 -186.5t257 -68.5t257 68.5t186.5 186.5t68.5 257t-68.5 257t-186.5 186.5t-257 68.5zM505.5 83q-17.5 0 -30.5 13t-13 31t13 30.5t30.5 12.5t30.5 -12.5t13 -30.5t-13 -31t-30.5 -13zM691 505
-q-2 -38 -19.5 -70.5t-67.5 -83.5q-59 -58 -61 -87q-2 -13 -12 -22.5t-24 -9.5h-4q-15 2 -24.5 13.5t-7.5 26.5q3 33 23.5 63t58.5 67q30 30 45.5 52t18 31t2.5 24q2 39 -26 69q-33 34 -81 34v0q-45 0 -76.5 -31.5t-31.5 -75.5q0 -15 -10.5 -25.5t-25.5 -10.5t-25.5 10.5
-t-10.5 25.5q0 74 52.5 126.5t126.5 52.5q80 1 134 -56q50 -53 46 -123z" />
-    <glyph glyph-name="questioncircleo" unicode="&#xe63c;" 
-d="M512 896q-139 0 -257 -68.5t-186.5 -186.5t-68.5 -257t68.5 -257t186.5 -186.5t257 -68.5t257 68.5t186.5 186.5t68.5 257t-68.5 257t-186.5 186.5t-257 68.5zM823 73q-61 -61 -140 -94q-81 -35 -171 -35t-171 34q-79 34 -140 95t-94 140q-35 81 -35 171t34 171
-q34 79 95 140t140 94q81 35 171 35t171 -34q79 -34 140 -95t94 -140q35 -81 35 -171t-34 -171q-34 -79 -95 -140zM546 372zM507 232h-4q-15 2 -24.5 13.5t-7.5 26.5q3 33 23.5 63t58.5 67q30 30 45.5 52t18 31.5t2.5 23.5q2 39 -26 69q-33 35 -81 35v0q-45 0 -76.5 -32
-t-31.5 -76q0 -15 -10.5 -25.5t-25.5 -10.5t-25.5 10.5t-10.5 25.5q0 74 52.5 126.5t126.5 53.5q80 0 134 -57q50 -53 46 -123q-2 -37 -19.5 -70t-67.5 -84q-59 -58 -61 -86q-2 -14 -12 -23.5t-24 -9.5zM506 127zM462 127q0 18 13 30.5t30.5 12.5t30.5 -12.5t13 -30.5
-t-13 -30.5t-30.5 -12.5t-30.5 12.5t-13 30.5z" />
-    <glyph glyph-name="pause" unicode="&#xe63d;" 
-d="M326 704v0q-15 0 -25.5 -11t-10.5 -25v-568q0 -14 10.5 -25t25.5 -11v0q15 0 25 11t9 25v568q1 14 -9 25t-25 11zM698 704v0q-14 0 -25 -11t-11 -25v-568q0 -14 11 -25t25 -11v0q15 0 25.5 11t10.5 25v568q0 14 -10.5 25t-25.5 11z" />
-    <glyph glyph-name="pausecircle" unicode="&#xe63e;" 
-d="M512 896q-139 0 -257 -68.5t-186.5 -186.5t-68.5 -257t68.5 -257t186.5 -186.5t257 -68.5t257 68.5t186.5 186.5t68.5 257t-68.5 257t-186.5 186.5t-257 68.5zM393 228q0 -15 -10.5 -25.5t-25.5 -10.5v0q-15 0 -25.5 10.5t-10.5 25.5v312q0 15 10.5 25.5t25.5 10.5v0
-q15 0 25.5 -10.5t10.5 -25.5v-312zM703 228q0 -15 -10.5 -25.5t-25.5 -10.5v0q-15 0 -25.5 10.5t-10.5 25.5v312q0 15 10.5 25.5t25.5 10.5v0q15 0 25.5 -10.5t10.5 -25.5v-312z" />
-    <glyph glyph-name="pausecircleo" unicode="&#xe63f;" 
-d="M512 896q-139 0 -257 -68.5t-186.5 -186.5t-68.5 -257t68.5 -257t186.5 -186.5t257 -68.5t257 68.5t186.5 186.5t68.5 257t-68.5 257t-186.5 186.5t-257 68.5zM823 73q-61 -61 -140 -94q-81 -35 -171 -35t-171 34q-79 34 -140 95t-94 140q-35 81 -35 171t34 171
-q34 79 95 140t140 94q81 35 171 35t171 -34q79 -34 140 -95t94 -140q35 -81 35 -171t-34 -171q-34 -79 -95 -140zM357 576v0q-15 0 -25.5 -10.5t-10.5 -25.5v-312q0 -15 10.5 -25.5t25.5 -10.5v0q15 0 25.5 10.5t10.5 25.5v312q0 15 -10.5 25.5t-25.5 10.5zM667 576v0
-q-15 0 -25.5 -10.5t-10.5 -25.5v-312q0 -15 10.5 -25.5t25.5 -10.5v0q15 0 25.5 10.5t10.5 25.5v312q0 15 -10.5 25.5t-25.5 10.5z" />
-    <glyph glyph-name="clockcircle" unicode="&#xe640;" 
-d="M512 896q-139 0 -257 -68.5t-186.5 -186.5t-68.5 -257t68.5 -257t186.5 -186.5t257 -68.5t257 68.5t186.5 186.5t68.5 257t-68.5 257t-186.5 186.5t-257 68.5zM769 356q0 -15 -10.5 -25.5t-25.5 -10.5h-185v0q-30 0 -51 21t-21 51v0v240q0 15 10.5 25.5t25.5 10.5v0
-q15 0 25.5 -10.5t10.5 -25.5v-240h185q15 0 25.5 -10.5t10.5 -25.5v0z" />
-    <glyph glyph-name="clockcircleo" unicode="&#xe641;" 
-d="M512 896q-139 0 -257 -68.5t-186.5 -186.5t-68.5 -257t68.5 -257t186.5 -186.5t257 -68.5t257 68.5t186.5 186.5t68.5 257t-68.5 257t-186.5 186.5t-257 68.5zM823 73q-61 -61 -140 -94q-81 -35 -171 -35t-171 34q-79 34 -140 95t-94 140q-35 81 -35 171t34 171
-q34 79 95 140t140 94q81 35 171 35t171 -34q79 -34 140 -95t94 -140q35 -81 35 -171t-34 -171q-34 -79 -95 -140zM733 392h-185v240q0 15 -10.5 25.5t-25.5 10.5v0q-15 0 -25.5 -10.5t-10.5 -25.5v-240v0q0 -30 21 -51t51 -21v0h185q15 0 25.5 10.5t10.5 25.5v0
-q0 15 -10.5 25.5t-25.5 10.5z" />
-    <glyph glyph-name="swap" unicode="&#xe642;" 
-d="M194 481q-1 0 -1 0.5t-0.5 0.5h-0.5h-0.5h-0.5h-0.5h-0.5v0h-1h-0.5h-0.5v0l-0.5 0.5l-0.5 0.5h-0.5h-0.5h-0.5h-0.5h-1l-1 1v0v0h-0.5h-0.5l-0.5 0.5l-0.5 0.5h-0.5h-0.5h-1v1h-0.5h-0.5l-0.5 0.5l-0.5 0.5h-0.5h-0.5v0.5v0.5h-1l-1 1v0l-0.5 0.5l-0.5 0.5h-1q-1 2 -2 3
-q-1 0 -1 0.5v0.5v0l-1 1v1h-1v1v0l-0.5 0.5l-0.5 0.5v0v0.5t-0.5 0.5h-0.5v1l-0.5 0.5l-0.5 0.5v1v0v0.5t-0.5 0.5h-0.5v0.5v0.5q0 1 -0.5 1t-0.5 0.5v1v0.5v0v0v0.5v0.5v0.5v0.5l-1 1v0.5v0.5v0.5v0.5v0v0.5v0.5v1v0v1v4v1v0.5v0.5v0.5v0.5v0.5v0.5v0.5v0.5v0l1 1v0.5v0.5
-v0.5v0.5v0v0.5v0.5v0q1 1 1 1.5v0.5v0.5v0.5l0.5 0.5l0.5 0.5v0v0.5v0.5l0.5 0.5l0.5 0.5v0.5t0.5 1l0.5 0.5v0v0v0.5t0.5 0.5t0.5 0.5v0.5l0.5 0.5l0.5 0.5q0 1 1 1v0v1h1l0.5 0.5l0.5 0.5l178 178q10 11 25 11t25 -11v0q11 -11 11 -25.5t-11 -25.5l-116 -116h545
-q15 0 25.5 -10.5t10.5 -25.5v0q0 -15 -10.5 -25.5t-25.5 -10.5h-631v0h-2h-0.5h-0.5zM830 287q1 0 1 -0.5t0.5 -0.5h0.5h0.5h0.5h0.5h0.5v0v0h2v0v0l0.5 -0.5l0.5 -0.5h0.5h0.5h0.5h0.5h1v-1h1v0h0.5h0.5l0.5 -0.5l0.5 -0.5h0.5h0.5h1v-1h0.5h0.5l0.5 -0.5l0.5 -0.5h0.5h0.5
-v-0.5v-0.5h1l1 -1l0.5 -0.5l0.5 -0.5v0h1q1 -2 2 -3q1 0 1 -0.5v-0.5v0l1 -1v-1h1v-1h0.5t0.5 -0.5v-0.5v0v-0.5t0.5 -0.5t0.5 -0.5v-0.5l0.5 -0.5l0.5 -0.5v-0.5v-0.5v-0.5t0.5 -0.5h0.5v-0.5v-0.5v-1l0.5 -0.5t0.5 -1v-0.5v0v-0.5v-0.5v0v-0.5v-0.5l1 -1v-0.5v-0.5v-0.5
-v-0.5v0v-0.5v-0.5v-1v0v-1v-4v-1v-0.5v-1v-0.5v0v-0.5v-0.5v-0.5v-0.5v0l-1 -1v-0.5v-0.5v-0.5v-0.5v0v-0.5v-0.5l-1 -1v-0.5v-0.5v-0.5v-0.5l-0.5 -0.5l-0.5 -0.5v0v-0.5v-0.5l-0.5 -0.5l-0.5 -0.5v-0.5t-0.5 -1l-0.5 -0.5v0v0v-0.5t-0.5 -0.5t-0.5 -0.5v-0.5l-1 -1v0
-q0 -1 -0.5 -1h-0.5v-1h-1l-0.5 -0.5t-0.5 -1.5l-177 -177q-11 -11 -26 -11t-25 11v0q-11 10 -11 25t11 26l116 116h-545q-14 0 -25 10.5t-11 25.5v0q0 15 11 25.5t25 10.5h632v0h1h1z" />
-    <glyph glyph-name="swapleft" unicode="&#xe643;" 
-d="M164 320h-1l-0.5 0.5l-0.5 0.5h-0.5h-0.5h-0.5h-0.5v0h-1h-1v0v0l-0.5 0.5l-0.5 0.5h-0.5h-0.5h-0.5h-0.5h-1l-1 1v0v0h-0.5h-0.5l-0.5 0.5l-0.5 0.5h-0.5h-0.5h-1v1h-0.5h-0.5l-0.5 0.5l-0.5 0.5h-0.5h-0.5v0.5v0.5h-1l-1 1v0l-0.5 0.5l-0.5 0.5h-1q-1 2 -2 3
-q-1 0 -1 0.5v0.5v0l-1 1v1h-1v1v0l-0.5 0.5l-0.5 0.5v0v0.5t-0.5 0.5h-0.5v1l-0.5 0.5l-0.5 0.5v1v0v0.5t-0.5 0.5h-0.5v0.5v0.5q0 1 -0.5 1t-0.5 0.5v1v0.5v0v0.5v0.5v0v0.5v0.5l-1 1v0.5v0.5v0.5v0.5v0v0.5v0.5v1v1v0v4v1v0.5v0.5v0.5v0.5v0.5v0.5v0.5v0.5v0l1 1v0.5v0.5
-v0.5v0.5v0v0.5v0.5v1q1 0 1 0.5v0.5v0.5v0.5l0.5 0.5l0.5 0.5v0v1v0l0.5 0.5l0.5 0.5v1l0.5 0.5l0.5 0.5v0v0v0.5t0.5 0.5t0.5 0.5v0.5l0.5 0.5l0.5 0.5q0 1 0.5 1h0.5v1h1l0.5 0.5t0.5 1.5l178 177q10 11 25 11t25 -11v0q11 -11 11 -25.5t-11 -25.5l-116 -116h545
-q15 0 25.5 -10.5t10.5 -25.5v0q0 -15 -10.5 -25.5t-25.5 -10.5h-631v0h-2h-1z" />
-    <glyph glyph-name="swapright" unicode="&#xe644;" 
-d="M830 320h1l0.5 0.5l0.5 0.5h0.5h0.5h0.5h0.5v0v0h2v0v0l0.5 0.5l0.5 0.5h0.5h0.5h0.5h0.5h1v1h1v0h0.5h0.5l0.5 0.5l0.5 0.5h0.5h0.5h1v1h0.5h0.5l0.5 0.5l0.5 0.5h0.5h0.5v0.5v0.5h1l1 1v0.5t0.5 0.5h0.5h1q1 2 2 3q1 0 1 0.5v0.5v0l1 1v1h1v1h0.5t0.5 0.5v0.5v0v0.5
-t0.5 0.5t0.5 0.5v0.5l0.5 0.5l0.5 0.5v0.5v0.5v0.5t0.5 0.5h0.5v0.5v0.5v1l0.5 0.5t0.5 1v0.5v0v0v0.5v0.5v0.5v0.5l1 1v0.5v0.5v0.5v0.5v0v0.5v0.5v1v1v0v4v1v0.5v0.5v0.5v0.5v0.5v0.5v0.5v0.5v0l-1 1v0.5v0.5v0.5v0.5v0v0.5v0.5l-1 1v0.5v0.5v0.5v0.5l-0.5 0.5l-0.5 0.5v0
-v0.5v0.5l-0.5 0.5l-0.5 0.5v0.5t-0.5 1l-0.5 0.5v0v0l-0.5 0.5l-0.5 0.5v0.5v0.5l-0.5 0.5l-0.5 0.5q0 1 -1 1v0l-0.5 0.5l-0.5 0.5l-0.5 0.5t-0.5 1.5l-177 177q-11 11 -26 11t-25 -11v0q-11 -10 -11 -25t11 -26l116 -116h-545q-14 0 -25 -10.5t-11 -25.5v0q0 -15 11 -25.5
-t25 -10.5h632v0h1h0.5h0.5z" />
-    <glyph glyph-name="plussquareo" unicode="&#xe645;" 
-d="M888 760v0v0v-753v0h-752v0v753v0h752zM888 832h-752q-30 0 -51 -21t-21 -51v-753q0 -29 21 -50.5t51 -21.5h753q29 0 50.5 21.5t21.5 50.5v753q0 30 -21.5 51t-51.5 21v0zM732 420h-184v183q0 15 -10.5 25.5t-25.5 10.5v0q-14 0 -25 -10.5t-11 -25.5v-183h-184
-q-15 0 -25.5 -11t-10.5 -25v0q0 -15 10.5 -25.5t25.5 -10.5h184v-183q0 -15 11 -25.5t25 -10.5v0q15 0 25.5 10.5t10.5 25.5v183h184q15 0 25.5 10.5t10.5 25.5v0q0 14 -10.5 25t-25.5 11z" />
-    <glyph glyph-name="frown" unicode="&#xe646;" 
-d="M512 896q-139 0 -257 -68.5t-186.5 -186.5t-68.5 -257t68.5 -257t186.5 -186.5t257 -68.5t257 68.5t186.5 186.5t68.5 257t-68.5 257t-186.5 186.5t-257 68.5zM254 454q-25 0 -42.5 17.5t-17.5 42t17.5 42.5t42.5 18t42.5 -18t17.5 -42.5t-17.5 -42t-42.5 -17.5zM640 130
-q-15 0 -25.5 11t-10.5 25q0 39 -27 66t-65 27t-65 -27t-27 -66q0 -14 -10.5 -25t-25.5 -11t-25.5 11t-10.5 25q0 68 48 116.5t116 48.5t116 -48.5t48 -116.5q0 -14 -10.5 -25t-25.5 -11zM769.5 454q-24.5 0 -42 17.5t-17.5 42t17.5 42.5t42 18t42.5 -18t18 -42.5t-18 -42
-t-42.5 -17.5z" />
-    <glyph glyph-name="menufold" unicode="&#xe658;" 
-d="M97 695h828q15 0 25.5 10.5t10.5 25.5t-10.5 25.5t-25.5 10.5h-828q-15 0 -25.5 -10.5t-10.5 -25.5t10.5 -25.5t25.5 -10.5zM923 450h-565q-15 0 -25.5 -10.5t-10.5 -25.5t10.5 -25.5t25.5 -10.5h565q15 0 25.5 10.5t10.5 25.5t-10.5 25.5t-25.5 10.5zM925 72h-825
-q-15 0 -25.5 -10.5t-10.5 -25.5t10.5 -25.5t25.5 -10.5h825q15 0 25.5 10.5t10.5 25.5t-10.5 25.5t-25.5 10.5zM195 281q11 -10 25 -10q15 0 26 11q10 10 10 25t-10 25l-96 94l94 88q11 11 11.5 26t-10 25.5t-25.5 11t-25 -9.5l-121 -114q-12 -11 -12 -26t11 -26z" />
-    <glyph glyph-name="mail" unicode="&#xe659;" 
-d="M886 768h-753q-30 0 -51 -21t-21 -51v-626q0 -30 21 -51t51 -21h753q30 0 51 21t21 51v626q0 30 -21 51t-51 21zM809 696l-268 -224l-2 -1l-1 -2q-11 -11 -26 -11h-1q-15 0 -25 11l-2 1l-274 226h599zM886 70h-753v0v597l303 -250q31 -31 76 -31v0q45 0 76 32l298 249
-v-597v0z" />
-    <glyph glyph-name="link" unicode="&#xe65b;" 
-d="M542 230l-179 -179q-39 -38 -93 -38t-92 38q-39 39 -39 93t39 93l178 179q11 10 11 25t-10.5 25.5t-25.5 10.5t-25 -11l-179 -178q-60 -60 -60 -144t59.5 -143.5t143.5 -59.5t144 59l179 179q10 11 10 26t-10.5 25.5t-25.5 10.5t-25 -11zM899.5 773.5
-q-59.5 59.5 -143.5 59.5t-144 -60l-179 -179q-10 -10 -10 -25t10.5 -25.5t25.5 -10.5t25 10l179 179q39 39 93 39t92.5 -38.5t38.5 -93t-39 -92.5l-178 -179q-11 -10 -11 -25t10.5 -25.5t25.5 -10.5t26 10l179 179q59 60 59 144t-59.5 143.5zM486 308l102 102q11 10 11 25
-t-10.5 25.5t-25.5 10.5t-25 -11l-102 -102q-11 -10 -11 -25t10.5 -25.5t25.5 -10.5t25 11z" />
-    <glyph glyph-name="areachart" unicode="&#xe65c;" 
-d="M923 -64h-824q-15 0 -25.5 10.5t-10.5 25.5v825q0 15 10.5 25.5t25.5 10.5t25.5 -10.5t10.5 -25.5v-789h788q15 0 25.5 -10.5t10.5 -25.5t-10.5 -25.5t-25.5 -10.5zM192 96l117 209q4 7 12 9.5t16 -0.5l111 -52l118 171q11 15 27 7l110 -56l160 251q7 11 19.5 7.5
-t12.5 -16.5v-520q0 -16 -11.5 -27.5t-27.5 -11.5h-646q-11 0 -17 9.5t-1 19.5z" />
-    <glyph glyph-name="linechart" unicode="&#xe65d;" 
-d="M923 -64h-824q-15 0 -25.5 10.5t-10.5 25.5v825q0 15 10.5 25.5t25.5 10.5t25.5 -10.5t10.5 -25.5v-789h788q15 0 25.5 -10.5t10.5 -25.5t-10.5 -25.5t-25.5 -10.5zM385 153q-19 0 -30 16l-157 250q-8 13 -5 27.5t15.5 22.5t27 5t22.5 -15l112 -182l46 177q4 16 19 23
-l182 88q13 6 26 2.5t21 -15.5l91 -148l134 403q5 14 18 21t27 2t21 -18t2 -27l-158 -477q-7 -22 -30 -24.5t-35 16.5l-115 186l-137 -66l-62 -240q-6 -23 -29 -26q-3 -1 -6 -1z" />
-    <glyph glyph-name="home" unicode="&#xe65e;" 
-d="M932 454l-372 358q-20 18 -48 18t-48 -18l-372 -358q-11 -10 -12 -25t9 -26v0q10 -11 25 -12t26 9l372 358l372 -358q11 -10 26 -9t25 12v0q10 11 9 26t-12 25zM833 321v0q-15 0 -25.5 -10.5t-10.5 -25.5v-277h-143v240q0 30 -21 51t-51 21h-140q-30 0 -51 -21t-21 -51
-v-240h-143v277q0 15 -10.5 25.5t-25.5 10.5v0q-15 0 -25.5 -10.5t-10.5 -25.5v-277q0 -30 21 -51t51 -21h570q30 0 51 21t21 51v277q0 15 -10.5 25.5t-25.5 10.5zM442 248h140v-240h-140v240z" />
-    <glyph glyph-name="laptop" unicode="&#xe65f;" 
-d="M887 760v0v0v-559v0l-752 -1v0v560v0h752zM887 832h-752q-30 0 -51 -21t-21 -51v-559q0 -30 21 -51t51 -21h752q30 0 51 21t21 51v559q0 30 -21 51t-51 21v0zM923 -16h-824q-15 0 -25.5 10.5t-10.5 25.5v0q0 15 10.5 25.5t25.5 10.5h824q15 0 25.5 -10.5t10.5 -25.5v0
-q0 -15 -10.5 -25.5t-25.5 -10.5z" />
-    <glyph glyph-name="star" unicode="&#xe660;" 
-d="M956 497.5q-8 23.5 -26.5 39t-42.5 19.5l-205 31l-92 195q-11 24 -33 37q-21 13 -45 13t-45 -13q-22 -13 -33 -37l-92 -195l-205 -31q-24 -4 -42.5 -19.5t-26.5 -39t-2.5 -47t22.5 -41.5l151 -154l-36 -218q-6 -40 20 -70.5t66 -30.5q22 0 42 11l181 100l181 -100
-q20 -11 42 -11q40 0 66 30.5t20 70.5l-36 218l151 154q17 18 22.5 41.5t-2.5 47z" />
-    <glyph glyph-name="staro" unicode="&#xe661;" 
-d="M512 760q9 0 13 -9l105 -222q3 -7 11 -9l235 -35q9 -2 12 -10.5t-4 -14.5l-171 -176q-5 -5 -4 -12l41 -247q1 -7 -3.5 -12t-11.5 -5q-4 0 -7 2l-209 115q-3 2 -7 2t-7 -2l-209 -115q-3 -2 -7 -2q-7 0 -11.5 5t-3.5 12l41 247q1 7 -4 12l-171 176q-7 6 -4 14.5t12 9.5
-l235 36q8 1 11 9l105 222q4 9 13 9zM512 832q-24 0 -45 -13q-22 -13 -33 -37l-92 -195l-205 -31q-24 -4 -42.5 -19.5t-26.5 -39t-2.5 -47t22.5 -41.5l151 -154l-36 -218q-6 -40 20 -70.5t66 -30.5q22 0 42 11l181 100l181 -100q20 -11 42 -11q40 0 66 30.5t20 70.5l-36 218
-l151 154q17 18 22.5 41.5t-2.5 47t-26.5 39t-42.5 19.5l-205 31l-92 195q-11 24 -33 37q-21 13 -45 13v0z" />
-    <glyph glyph-name="filter" unicode="&#xe663;" 
-d="M890.5 719.5q-9.5 23.5 -30.5 37t-46 13.5h-602q-25 0 -46 -13.5t-30.5 -37t-4.5 -48t22 -42.5l273 -263v-262q0 -15 11 -25l125 -129q10 -11 26 -11q6 0 13 2q23 9 23 34v393l248 261q18 18 23 42.5t-4.5 48zM821 680l-259 -272q-10 -10 -10 -25v-322l-54 58v262
-q0 15 -10 25l-284 274q-5 5 -2 11.5t10 6.5h602q7 0 9.5 -6.5t-2.5 -11.5z" />
-    <glyph glyph-name="exception" unicode="&#xe665;" 
-d="M667.5 63q13.5 0 23 9.5t9.5 23.5v382q0 14 -9.5 23.5t-23 9.5t-22.5 -9.5t-9 -23.5v-382q0 -14 9 -23.5t22.5 -9.5zM632 -26q0 15 10.5 25.5t25.5 10.5t25.5 -10.5t10.5 -25.5t-10.5 -26t-25.5 -11t-25.5 11t-10.5 26zM542 644h-317q-13 0 -22.5 -10.5t-9.5 -25.5
-t9.5 -25.5t22.5 -10.5h317q14 0 23.5 10.5t9.5 25.5t-9.5 25.5t-23.5 10.5zM225 380h127q14 0 23.5 10.5t9.5 25.5t-9.5 25.5t-23.5 10.5h-127q-13 0 -22.5 -10.5t-9.5 -25.5t9.5 -25.5t22.5 -10.5zM225 188h191q14 0 23.5 10.5t9.5 25.5t-9.5 25.5t-23.5 10.5h-191
-q-13 0 -22.5 -10.5t-9.5 -25.5t9.5 -25.5t22.5 -10.5zM857 833h-690q-42 0 -72 -30t-30 -72v-690q0 -42 30 -72t72 -30h254q15 0 25.5 10.5t10.5 25.5t-10.5 25.5t-25.5 10.5h-254q-12 0 -21 9t-9 21v690q0 12 9 21t21 9h690q12 0 21 -9t9 -21v-690q0 -12 -9 -21t-21 -9h-69
-q-15 0 -25.5 -10.5t-10.5 -25.5t10.5 -25.5t25.5 -10.5h69q42 0 72 30t30 72v690q0 42 -30 72t-72 30z" />
-    <glyph glyph-name="meho" unicode="&#xe666;" 
-d="M512 896q-139 0 -257 -68.5t-186.5 -186.5t-68.5 -257t68.5 -257t186.5 -186.5t257 -68.5t257 68.5t186.5 186.5t68.5 257t-68.5 257t-186.5 186.5t-257 68.5zM254 454q-25 0 -42.5 17.5t-17.5 42t17.5 42.5t42.5 18t42.5 -18t17.5 -42.5t-17.5 -42t-42.5 -17.5zM643 118
-h-264q-15 0 -25.5 10.5t-10.5 25.5t10.5 25.5t25.5 10.5h264q15 0 25.5 -10.5t10.5 -25.5t-10.5 -25.5t-25.5 -10.5zM769.5 454q-24.5 0 -42 17.5t-17.5 42t17.5 42.5t42 18t42.5 -18t18 -42.5t-18 -42t-42.5 -17.5z" />
-    <glyph glyph-name="meh" unicode="&#xe667;" 
-d="M512 896q-139 0 -257 -68.5t-186.5 -186.5t-68.5 -257t68.5 -257t186.5 -186.5t257 -68.5t257 68.5t186.5 186.5t68.5 257t-68.5 257t-186.5 186.5t-257 68.5zM823 73q-61 -61 -140 -94q-81 -35 -171 -35t-171 34q-79 34 -140 95t-94 140q-35 81 -35 171t34 171
-q34 79 95 140t140 94q81 35 171 35t171 -34q79 -34 140 -95t94 -140q35 -81 35 -171t-34 -171q-34 -79 -95 -140zM254 514zM194 513.5q0 24.5 17.5 42.5t42.5 18t42.5 -18t17.5 -42.5t-17.5 -42t-42.5 -17.5t-42.5 17.5t-17.5 42zM770 514zM710 513.5q0 24.5 17.5 42.5
-t42 18t42.5 -18t18 -42.5t-18 -42t-42.5 -17.5t-42 17.5t-17.5 42zM643 190h-264q-15 0 -25.5 -10.5t-10.5 -25.5t10.5 -25.5t25.5 -10.5h264q15 0 25.5 10.5t10.5 25.5t-10.5 25.5t-25.5 10.5z" />
-    <glyph glyph-name="shoppingcart" unicode="&#xe668;" 
-d="M923 194h-596l30 61l497 1q13 0 22.5 8t11.5 20l69 386q3 16 -7.5 28t-26.5 12l-632 3l-5 25q-3 12 -13 20t-22 8h-155q-14 0 -24.5 -10.5t-10.5 -25t10.5 -25t24.5 -10.5h126l24 -112l58 -281l-75 -122q-13 -18 -3 -37t32 -19h63q-21 -28 -21 -62q0 -43 30 -73t72.5 -30
-t72.5 30t30 73q0 34 -20 62h161q-21 -28 -21 -62q0 -43 30 -73t72.5 -30t72.5 30t30 73q0 34 -20 62h113q15 0 25 10t10 24.5t-10 25t-25 10.5zM306 643l576 -2l-57 -316l-452 -1zM403 30q-13 0 -22.5 9.5t-9.5 22.5t9.5 22.5t22.5 9.5t22 -9.5t9 -22.5t-9 -22.5t-22 -9.5z
-M728 30q-13 0 -22.5 9.5t-9.5 22.5t9.5 22.5t22.5 9.5t22 -9.5t9 -22.5t-9 -22.5t-22 -9.5z" />
-    <glyph glyph-name="save" unicode="&#xe669;" 
-d="M650 768h-450q-30 0 -51 -21t-21 -51v-623q0 -30 21 -51t51 -21h623q30 0 51 21t21 51v450zM329 696h217v-206q0 -15 -10.5 -25.5t-25.5 -10.5h-145q-15 0 -25.5 10.5t-10.5 25.5v206zM823 73h-623v623h57v-206q0 -45 31.5 -76.5t76.5 -31.5h145q44 0 76 32t32 76v206h2
-l203 -203v-420v0zM469 526q15 0 25.5 10.5t10.5 25.5v43q0 15 -10.5 25.5t-25.5 10.5t-25.5 -10.5t-10.5 -25.5v-43q0 -15 10.5 -25.5t25.5 -10.5z" />
-    <glyph glyph-name="user" unicode="&#xe66a;" 
-d="M819 103q-25 60 -71 106t-106 71q-20 9 -42 15q61 20 107 66q81 81 81 195t-81 194.5t-195 80.5t-194.5 -80.5t-80.5 -194.5t80 -195q46 -46 107 -66q-23 -6 -42 -15q-60 -25 -106 -71t-71 -106q-26 -62 -26 -130q0 -15 10.5 -25.5t25.5 -10.5t25.5 10.5t10.5 25.5
-q0 108 76.5 185t185 77t185 -76.5t76.5 -185.5q0 -15 10.5 -25.5t25.5 -10.5t25.5 10.5t10.5 25.5q-1 68 -27 130zM309 556q0 84 59.5 143.5t143.5 59.5t143.5 -59.5t59.5 -143.5t-59.5 -144t-143.5 -60t-143.5 60t-59.5 144z" />
-    <glyph glyph-name="videocamera" unicode="&#xe66b;" 
-d="M1010 573q-11 10 -26 10q-9 0 -18 -5l-126 -67v188q0 29 -20.5 50t-50.5 21h-698q-29 0 -50 -21t-21 -50v-630q0 -29 21 -50t50 -21h698q30 0 50.5 21t20.5 50v203l123 -79q10 -6 22 -6q13 0 25 9q14 12 14 31v316q0 18 -14 30zM945 477v-178l-103 66v57zM761 667v-566
-q0 -10 -6.5 -17t-16.5 -7h-636q-9 0 -16 7t-7 17v566q0 10 7 17t16 7h636q10 0 16.5 -7t6.5 -17z" />
-    <glyph glyph-name="totop" unicode="&#xe66c;" 
-d="M920 74h-816q-15 0 -25.5 -10.5t-10.5 -25.5t10.5 -25.5t25.5 -10.5h816q15 0 25.5 10.5t10.5 25.5t-10.5 25.5t-25.5 10.5zM365.5 576q14.5 0 25.5 10l85 85v-449q0 -15 10.5 -25.5t25.5 -10.5t25.5 10.5t10.5 25.5v449l85 -85q10 -10 25 -10t25.5 10.5t10.5 25.5
-t-10 25l-146 146q-11 11 -26 11t-25 -11l-147 -146q-10 -11 -10 -25.5t10.5 -25t25 -10.5z" />
-    <glyph glyph-name="team" unicode="&#xe66d;" 
-d="M839 409q-30 30 -67 47q44 23 72 64q35 51 35 113q0 84 -59 142.5t-142 58.5q-65 0 -117 -36q-45 -33 -67 -83q-60 64 -147 64q-84 0 -143 -59t-59 -142q0 -62 35 -113q28 -41 73 -65q-38 -17 -68 -47q-67 -67 -67 -161v-165q0 -37 26.5 -64t64.5 -27h276q27 0 49.5 15.5
-t33.5 40.5h248q37 0 64 26.5t27 63.5v165q-1 95 -68 162zM586 725q38 38 92 38t92 -38t38 -91.5t-38 -92t-92 -38.5t-92 38t-38 92t38 92zM216 578q0 54 38 92t92 38t92 -38t38 -92t-38 -92t-92 -38t-92 38t-38 92zM504 27q0 -8 -6 -13.5t-14 -5.5h-276q-8 0 -13.5 5.5
-t-5.5 13.5v165q0 65 46 111t111 46t112 -46l1 -1v-1q45 -46 45 -109v-165zM486 372q-21 17 -46 28q62 33 90 96q24 -25 54 -40q-38 -17 -68 -47q-17 -17 -30 -37zM835 82q0 -8 -5.5 -13.5t-13.5 -5.5h-241v129q0 69 -38 126q12 23 29 40q47 47 112 47t111 -46.5t46 -111.5
-v-165z" />
-    <glyph glyph-name="solution" unicode="&#xe66f;" 
-d="M575 608q0 15 -9.5 25.5t-23.5 10.5h-317q-13 0 -22.5 -10.5t-9.5 -25.5t9.5 -25.5t22.5 -10.5h317q14 0 23.5 10.5t9.5 25.5zM225 380h127q14 0 23.5 10.5t9.5 25.5t-9.5 25.5t-23.5 10.5h-127q-13 0 -22.5 -10.5t-9.5 -25.5t9.5 -25.5t22.5 -10.5zM225 188h191
-q14 0 23.5 10.5t9.5 25.5t-9.5 25.5t-23.5 10.5h-191q-13 0 -22.5 -10.5t-9.5 -25.5t9.5 -25.5t22.5 -10.5zM857 833h-690q-42 0 -72 -30t-30 -72v-690q0 -42 30 -72t72 -30h254q15 0 25.5 10.5t10.5 24.5q1 15 -10 26t-26 11h-254q-12 0 -21 9t-9 21v690q0 12 9 21t21 9
-h690q12 0 21 -9t9 -21v-373q0 -15 10.5 -25.5t25.5 -10.5v0q15 0 25.5 10.5t10.5 25.5v373q0 42 -30 72t-72 30zM894 94q-25 26 -57 42q33 38 33 88q0 57 -40 97t-96.5 40t-96.5 -40t-40 -97q0 -52 36 -91q-28 -15 -51 -37q-49 -48 -62 -116q-3 -16 7.5 -29t27.5 -13v0
-q13 0 23 8t13 21q10 52 51 86t95 34t95.5 -34t51.5 -86q3 -13 12.5 -21t22.5 -8v0q17 0 28 13t8 29q-13 66 -61 114zM733.5 160q-26.5 0 -45.5 19t-19 45.5t19 45.5t45.5 19t45.5 -19t19 -45.5t-19 -45.5t-45.5 -19z" />
-    <glyph glyph-name="sharealt" unicode="&#xe671;" 
-d="M814 233q-38 0 -70.5 -18t-53.5 -49l-236 168q6 24 6 48q0 39 -15 75l257 130q45 -51 112 -51q61 0 104.5 43.5t43.5 104.5t-43.5 104.5t-104.5 43.5t-104.5 -43.5t-43.5 -104.5q0 -17 4 -33l-264 -133q-59 62 -144 62q-82 0 -140 -58t-58 -140t58 -140t140 -58
-q49 0 91.5 22.5t69.5 60.5l243 -172v-10q0 -61 43.5 -104.5t104.5 -43.5t104.5 43.5t43.5 104.5t-43.5 104.5t-104.5 43.5zM814 760q31 0 53.5 -22.5t22.5 -54t-22.5 -53.5t-53.5 -22t-53.5 22t-22.5 53.5t22.5 54t53.5 22.5zM262 256q-52 0 -89 37t-37 89t37 89t89 37
-t89 -37t37 -89t-37 -89t-89 -37zM814 9q-31 0 -53.5 22t-22.5 53.5t22.5 54t53.5 22.5t53.5 -22.5t22.5 -54t-22.5 -53.5t-53.5 -22z" />
-    <glyph glyph-name="setting" unicode="&#xe672;" 
-d="M962 456l-4 24l-73 25q-10 30 -24 58l34 69l-14 19q-43 60 -102 103l-20 14l-69 -35q-28 14 -58 24l-24 73l-24 4q-39 6 -72 6t-72 -6l-24 -4l-25 -73q-30 -10 -57 -24l-69 35l-20 -15q-59 -43 -102 -102l-14 -20l34 -69q-14 -28 -24 -57l-73 -25l-4 -24q-6 -39 -6 -72
-t6 -72l4 -24l73 -25q10 -30 24 -57l-34 -69l14 -20q22 -30 47 -55q23 -23 55 -47l20 -14l69 34q28 -14 57 -24l25 -73l24 -4q39 -6 72 -6t72 6l24 4l25 73q29 10 57 24l69 -35l20 15q32 23 55 47q24 23 47 55l14 20l-34 69q14 28 24 58l73 24l4 24q6 39 6 72t-6 72zM896 385
-v-1q0 -19 -2 -42l-36 -11l-31 -11l-10 -32q-8 -27 -21 -52l-16 -29l32 -63q-14 -17 -28 -31v-1q-14 -14 -32 -27l-62 31l-29 -15q-26 -13 -54 -22l-31 -10l-10 -31l-12 -35q-21 -3 -42 -3q-19 0 -42 3l-11 35l-11 31l-31 10q-28 9 -53 22l-29 15l-30 -15l-33 -16
-q-17 13 -31 28q-15 14 -28 31l31 62l-15 29q-14 27 -22 53l-10 32l-66 22q-3 21 -3 42q0 19 3 42l66 22l10 31q8 27 22 53l15 30l-15 29l-16 33q26 33 59 59l62 -31l30 15q25 14 53 22l31 10l10 31l12 36q23 2 42 2q20 0 42 -2l22 -67l31 -9q28 -9 54 -22l29 -16l62 32
-q33 -27 60 -60l-32 -62l15 -29q14 -26 23 -53l9 -32l31 -10l36 -12q3 -22 2 -41zM512 558q-72 0 -123 -51t-51 -123t51 -123t123 -51t123 51t51 123t-51 123t-123 51zM584 312q-30 -30 -72 -30t-72 30t-30 72t30 72t72.5 30t72 -30t29.5 -72t-30 -72z" />
-    <glyph glyph-name="picture" unicode="&#xe674;" 
-d="M886 768h-752q-30 0 -51 -21.5t-21 -50.5v-626q0 -29 21 -50.5t51 -21.5h752q30 0 51 21.5t21 50.5v626q0 30 -21 51t-51 21zM886 70v0h-752v0v213l186 190l217 -270q9 -10 22.5 -11.5t24.5 5.5l161 109l141 -67v-169zM886 330l-118 48q-21 16 -42 2l-156 -105l-222 275
-q-10 12 -26 12t-27 -11l-161 -165v310v0h752v0v-366zM696 622q-42 0 -71.5 -29.5t-29.5 -71.5t29.5 -71.5t71.5 -29.5t71.5 29.5t29.5 71.5t-29.5 71.5t-71.5 29.5zM696 492q-12 0 -20.5 8.5t-8.5 20.5t8.5 20.5t20.5 8.5t20.5 -8.5t8.5 -20.5t-8.5 -20.5t-20.5 -8.5z" />
-    <glyph glyph-name="phone" unicode="&#xe675;" 
-d="M914 733q-66 101 -128 101q-36 0 -64 -28q-48 -48 -77 -93q-44 -68 -29 -115q4 -15 17.5 -31t44.5 -47v0q32 -32 38 -41q10 -14 -19 -60q-27 -43 -99 -118q-61 -58 -99 -85q-48 -35 -71 -35q-5 0 -8 2q-9 7 -41 38q-32 32 -47.5 45t-30.5 17q-12 4 -25 4q-43 0 -100 -40
-q-40 -27 -82 -70q-33 -32 -28 -73q6 -57 100 -119q78 -50 176 -50q101 0 210.5 53.5t206.5 151.5q68 68 117 144q48 76 70 153q49 170 -32 296zM878 457q-20 -67 -63 -135q-43 -69 -106 -132q-44 -44 -92 -80q-47 -34 -95 -58q-47 -22 -93 -34q-45 -12 -87 -12
-q-77 0 -137 39q-35 23 -52 40q-16 16 -17 27q-1 7 8 15q39 39 72 62q39 27 60 27q2 0 3 -1q5 -2 12 -9q11 -9 38 -35q35 -36 49 -46l2 -1q21 -14 48 -14q24 0 52 12q27 11 61 36q41 30 106 91l1 1l2 2q76 80 107 129q16 25 24 47q7 20 8 37q2 31 -15 55q-10 14 -44 48l-2 2
-q-26 26 -35 37q-7 9 -9 13q-4 16 21 55q24 37 67 80v0q8 8 14 8q10 0 26 -15q18 -17 42 -54q31 -48 38 -106q6 -62 -14 -131z" />
-    <glyph glyph-name="paperclip" unicode="&#xe676;" 
-d="M885 629q-73 72 -177 72v0q-49 0 -94 -18q-46 -18 -82 -53l-233 -231q-42 -41 -41.5 -99.5t42 -100t100.5 -41.5h1q59 0 100 41l205 202q10 10 10 25t-10 25q-11 10 -25.5 10t-25.5 -10l-204 -202q-21 -21 -50 -21h-1q-30 1 -50 21q-21 21 -21 50.5t20 49.5l233 231
-q52 50 126 50v0q74 0 126.5 -51.5t52.5 -124.5t-52 -124l-247 -245q-76 -75 -186 -75v0q-110 0 -187 76.5t-77.5 184.5t76.5 184l319 316q10 10 10 24.5t-10 25.5q-11 10 -25.5 10t-25.5 -10l-319 -316q-47 -47 -73 -109q-24 -60 -24 -125t25 -125q25 -62 73 -110
-q48 -47 111 -72q60 -25 127 -25v0q66 0 126 24q63 25 110 72l248 245q35 35 54 81q18 45 18 93q0 103 -73 175z" />
-    <glyph glyph-name="notification" unicode="&#xe677;" 
-d="M922 518h-57v18q0 20 -14 34.5t-34 14.5h-172q-12 24 -33 24q-70 0 -145 22.5t-132 54.5t-103 63.5t-72 54t-25 22.5q-10 6 -22 6q-19 0 -33 -13.5t-14 -33.5v-801q0 -20 14 -34t33 -14q13 0 24 7q4 6 12.5 15t35 36t55.5 52t73.5 55t89 51.5t101 36.5t111.5 15
-q19 0 30 22h4q2 -74 -25 -171q-6 -20 1.5 -39.5t24.5 -31.5q16 -10 35 -10q22 0 40 15q84 69 105 169q7 34 6 68q4 5 10 14q19 29 19 45v23h57q15 0 25.5 10.5t10.5 25.5v138q0 15 -10.5 25.5t-25.5 10.5zM584 275q-92 -6 -186 -46q-84 -36 -167 -98q-48 -37 -93 -81v679
-q50 -39 104 -73q83 -51 165 -81q91 -33 177 -37v-2v-7v-253v-1zM793 291q-6 -10 -14 -21q-5 -3 -8 -7q-11 -13 -8 -30v0q4 -27 -3 -60q-13 -62 -59 -109q29 116 18 202q-2 14 -12 23t-24 9h-25v30q0 4 -2 9v176h137v-222zM886 380h-21v66h21v-66z" />
-    <glyph glyph-name="menuunfold" unicode="&#xe679;" 
-d="M925 695h-828q-15 0 -25.5 10.5t-10.5 25.5t10.5 25.5t25.5 10.5h828q15 0 25.5 -10.5t10.5 -25.5t-10.5 -25.5t-25.5 -10.5zM99 450h565q15 0 25.5 -10.5t10.5 -25.5t-10.5 -25.5t-25.5 -10.5h-565q-15 0 -25.5 10.5t-10.5 25.5t10.5 25.5t25.5 10.5zM97 72h825
-q15 0 25.5 -10.5t10.5 -25.5t-10.5 -25.5t-25.5 -10.5h-825q-15 0 -25.5 10.5t-10.5 25.5t10.5 25.5t25.5 10.5zM827 281q-11 -10 -26 -10t-25 11q-11 10 -11 25t11 25l96 94l-94 88q-11 11 -11.5 26t9.5 25.5t25 11t26 -9.5l121 -114q11 -11 11 -26t-11 -26z" />
-    <glyph glyph-name="inbox" unicode="&#xe67a;" 
-d="M885 450v0l-112 286q-4 12 -14 19.5t-23 7.5h-455q-13 0 -23 -8t-14 -20l-105 -282v-1v0q-2 -8 -1 -15v-5v-366q0 -25 17.5 -43t42.5 -18h628q25 0 43 18t18 43v366q0 3 -1 4q1 7 -1 14zM589 493v-16q0 -34 -21.5 -54.5t-55.5 -20.5t-55 20.5t-21 54.5l-1 16h-205l79 193
-h399l82 -193h-201zM214 416h158q18 -43 55 -67t85 -24q52 0 90 27q34 24 51 64h157v-334h-596v334z" />
-    <glyph glyph-name="lock" unicode="&#xe67b;" 
-d="M801 596q-24 60 -67 106q-43 45 -100 71q-58 26 -122 26t-122 -26q-56 -26 -99.5 -71.5t-67.5 -105.5q-25 -61 -25 -128v-436q0 -26 18 -45t43 -19h505q26 0 44 19t18 45v385v17v34q0 67 -25 128zM414 714h1l1 1q45 21 96 21q50 0 96 -21q45 -20 80 -57t54 -85
-q21 -50 21 -105v-27h-502v0v27q0 55 20 105q20 48 55 85t78 56zM763 377v-345v-1h-502v1v345h502zM483 235v-83q0 -12 8.5 -20.5t20.5 -8.5t21 8.5t9 20.5v83q24 16 24 46q0 22 -15.5 38t-38 16t-38.5 -16t-16 -38q0 -30 25 -46z" />
-    <glyph glyph-name="qrcode" unicode="&#xe67c;" 
-d="M876 492h-63v-103h-91v103h-153v102h-51v39h51v52h51v63h-51v51h-166v-63h103v-39h-52v-115h52v-90h-52v-52h-90v52h-63v-52h-39v52h-115v-52h-51v-63h63v51h91v-51h51v-102h63v102h102v52h193v-40h-153v-63h51v-102h114v63h-51v39h205v51h39v-51h63v63h-51v103zM466 287
-h-63v-166h51v-39h-51v-63h103v-51h63v51h51v63h-63v-51h-39v90h102v64h-154v102zM96 338h63v-63h-63v63zM153 531h154q23 0 40 17t17 40v154q0 23 -17 40t-40 17h-154q-23 0 -40 -17t-17 -40v-154q0 -23 17 -40t40 -17zM159 594v142h142v-142h-142zM198 697h64v-64h-64v64z
-M870 799h-154q-23 0 -40 -17t-17 -40v-154q0 -23 17 -40t40 -17h154q24 0 40.5 17t16.5 40v154q0 23 -16.5 40t-40.5 17zM864 736v-142h-142v142h142zM762 697h63v-64h-63v64zM870 236h-154q-23 0 -40 -17t-17 -40v-154q0 -24 17 -40.5t40 -16.5h154q24 0 40.5 16.5
-t16.5 40.5v154q0 23 -16.5 40t-40.5 17zM864 173v-142h-142v142h142zM762 133h63v-63h-63v63zM307 236h-154q-23 0 -40 -17t-17 -40v-154q0 -24 17 -40.5t40 -16.5h154q23 0 40 16.5t17 40.5v154q0 23 -17 40t-40 17zM301 173v-142h-142v142h142zM198 133h64v-63h-64v63z
-" />
-    <glyph glyph-name="tags" unicode="&#xe67d;" 
-d="M910 352l-360 362q-12 13 -30 13h-362q-26 0 -44 -18t-18 -43v-224q0 -17 12 -30l359 -354q18 -18 43.5 -18t44.5 18l28 28l28 -28q19 -18 44 -18t44 18l210 208q18 17 18 42.5t-17 43.5zM280 457q-32 0 -54.5 22.5t-22.5 54.5t22.5 54.5t54.5 22.5t54.5 -22.5
-t22.5 -54.5t-22.5 -54.5t-54.5 -22.5v0zM869 306l-210 -207q-2 -2 -4 -2t-4 2l-32 31l142 140q16 16 16 39t-16 39l-319 322h72l355 -358q1 -1 1 -3t-1 -3v0zM869 306zM280 560q-11 0 -18.5 -7.5t-7.5 -18.5t7.5 -18.5t18.5 -7.5t18.5 7.5t7.5 18.5t-7.5 18.5t-18.5 7.5v0z
-" />
-    <glyph glyph-name="tagso" unicode="&#xe67e;" 
-d="M280 617q-34 0 -58.5 -24t-24.5 -58.5t24.5 -59t58.5 -24.5t58.5 24.5t24.5 59t-24.5 58.5t-58.5 24zM280 514q-8 0 -14 6t-6 14t6 14t14 6t14 -6t6 -14t-6 -14t-14 -6zM910 352l-360 362q-12 13 -30 13h-362q-26 0 -44 -18t-18 -43v-224q0 -17 12 -30l359 -354
-q18 -18 43.5 -18t44.5 18l28 28l28 -28q19 -18 44 -18t44 18l210 208q18 17 18 42.5t-17 43.5zM765 266q18 17 18 42.5t-18 43.5l-309 312h56l351 -355l-208 -205l-27 26zM159 451v213h209l351 -355l-140 -138l-37 -36l-31 -31z" />
-    <glyph glyph-name="cloudo" unicode="&#xe67f;" 
-d="M702 35h-404q-48 0 -90.5 17t-76.5 50q-34 34 -52 76t-18 90q0 83 53 147q19 23 42 40q0 38 15 71q14 33 41 60l1 1q27 26 61 39.5t72 13.5q12 0 24 -1q24 26 54 46q72 48 159 48q58 0 109 -20q51 -21 92 -61q42 -41 63 -90q14 -34 19 -71q32 -25 55 -60l7 -11v-1
-q35 -59 35 -128q0 -52 -19 -99q-20 -46 -58 -83t-84 -56q-47 -18 -100 -18zM263 535q-18 -17 -26 -37v0q-9 -21 -9 -44q0 -7 1 -13l2 -23l-19 -12q-24 -14 -43 -37v0q-36 -44 -36 -101q0 -33 12 -62t36.5 -52.5t53.5 -35.5q29 -11 63 -11h404q39 0 72.5 13.5t61 40
-t41.5 59.5t14 71q0 54 -29 98l-2 4q-20 29 -49 49l-14 10l-2 17q-2 34 -15 64q-15 37 -47 67q-31 31 -68 46q-38 15 -82 15q-66 0 -119 -35q-30 -21 -51 -48l-15 -19l-23 6q-14 4 -30 3q-24 0 -44.5 -8t-37.5 -25z" />
-    <glyph glyph-name="cloud" unicode="&#xe680;" 
-d="M926 411v1l-1 2q-26 39 -65 66q-3 43 -20 82q-20 48 -59 86t-88 58q-48 19 -103 19q-84 0 -152 -45q-38 -26 -65 -61q-21 5 -42 5q-34 0 -64 -12t-54 -35q-25 -24 -37 -53q-13 -30 -13 -64q0 -10 1 -18q-31 -19 -56 -49q-48 -59 -48 -135q0 -44 16 -83t48 -70t71 -46.5
-t84 -15.5h440q50 0 94 17q44 18 79 53q36 35 54 78t18 92q0 70 -38 128z" />
-    <glyph glyph-name="cloudupload" unicode="&#xe681;" 
-d="M926 411v1l-1 2q-26 39 -65 66q-3 43 -20 82q-20 48 -59 86t-88 58q-48 19 -103 19q-84 0 -152 -45q-38 -26 -65 -61q-21 5 -42 5q-34 0 -64 -12t-54 -35q-25 -24 -37 -53q-13 -30 -13 -64q0 -10 1 -18q-31 -19 -56 -49q-48 -59 -48 -135q0 -44 16 -83t48 -70t71 -46.5
-t84 -15.5h440q50 0 94 17q44 18 79 53q36 35 54 78t18 92q0 70 -38 128zM751.5 367.5q-10.5 -10.5 -25.5 -10.5t-26 11l-68 68v-246q0 -15 -10.5 -25.5t-25.5 -10.5t-25.5 10.5t-10.5 25.5v246l-68 -69q-11 -10 -25.5 -10t-25 10.5t-10.5 25.5t10 25l130 130q10 10 25 10
-t25 -10l130 -130q11 -10 11 -25t-10.5 -25.5z" />
-    <glyph glyph-name="clouddownload" unicode="&#xe682;" 
-d="M926 411v1l-1 2q-26 39 -65 66q-3 43 -20 82q-20 48 -59 86t-88 58q-48 19 -103 19q-84 0 -152 -45q-38 -26 -65 -61q-21 5 -42 5q-34 0 -64 -12t-54 -35q-25 -24 -37 -53q-13 -30 -13 -64q0 -10 1 -18q-31 -19 -56 -49q-48 -59 -48 -135q0 -44 16 -83t48 -70t71 -46.5
-t84 -15.5h440q50 0 94 17q44 18 79 53q36 35 54 78t18 92q0 70 -38 128zM751 294l-129 -130q-11 -10 -26 -10t-25 10l-130 130q-10 10 -10 25t10.5 25.5t25 10.5t25.5 -11l68 -68v246q0 15 10.5 25.5t25.5 10.5t25.5 -10.5t10.5 -25.5v-246l69 68q10 11 25 11t25.5 -10.5
-t10.5 -25.5t-11 -25z" />
-    <glyph glyph-name="clouddownloado" unicode="&#xe683;" 
-d="M926 411v1l-1 2q-26 39 -65 66q-3 43 -20 82q-20 48 -59 86t-88 58q-48 19 -103 19q-84 0 -152 -45q-38 -26 -65 -61q-21 5 -42 5q-34 0 -64 -12t-54 -35q-25 -24 -37 -53q-13 -30 -13 -64q0 -10 1 -18q-31 -19 -56 -49q-48 -59 -48 -135q0 -44 16 -83t48 -70t71 -46.5
-t84 -15.5h440q50 0 94 17q44 18 79 53q36 35 54 78t18 92q0 70 -38 128zM142 203q-11 25 -11 55q0 25 8 47t24 42h1q17 22 40 35l38 22l-6 43q-1 5 -1 13q0 19 7 36v1q7 16 21 29t31 20t36 7q15 0 28 -4l43 -12l26 36q21 27 51 48q50 33 111 33q42 0 77 -15q36 -14 65 -42
-q29 -29 43 -63q13 -29 15 -63l1 -31l27 -18q27 -18 46 -45l2 -3q14 -21 21 -43.5t7 -47.5q0 -35 -13 -65t-38.5 -54.5t-55.5 -36.5q-31 -13 -67 -13h-440q-31 0 -57 11q-25 10 -48 31q-21 21 -31 45v0zM466.5 355q14.5 0 25.5 -11l68 -68v246q0 15 10.5 25.5t25.5 10.5
-t25.5 -10.5t10.5 -25.5v-246l69 68q10 11 25 11t25.5 -10.5t10.5 -25.5t-11 -25l-129 -130q-11 -10 -26 -10t-25 10l-130 130q-10 10 -10 25t10.5 25.5t25 10.5z" />
-    <glyph glyph-name="clouduploado" unicode="&#xe684;" 
-d="M926 411v1l-1 2q-26 39 -65 66q-3 43 -20 82q-20 48 -59 86t-88 58q-48 19 -103 19q-84 0 -152 -45q-38 -26 -65 -61q-21 5 -42 5q-34 0 -64 -12t-54 -35q-25 -24 -37 -53q-13 -30 -13 -64q0 -10 1 -18q-31 -19 -56 -49q-48 -59 -48 -135q0 -44 16 -83t48 -70t71 -46.5
-t84 -15.5h440q50 0 94 17q44 18 79 53q36 35 54 78t18 92q0 70 -38 128zM142 203q-11 25 -11 55q0 25 8 47t24 42h1q17 22 40 35l38 22l-6 43q-1 5 -1 13q0 19 7 36v1q7 16 21 29t31 20t36 7q15 0 28 -4l43 -12l26 36q21 27 51 48q50 33 111 33q42 0 77 -15q36 -14 65 -42
-q29 -29 43 -63q13 -29 15 -63l1 -31l27 -18q27 -18 46 -45l2 -3q14 -21 21 -43.5t7 -47.5q0 -35 -13 -65t-38.5 -54.5t-55.5 -36.5q-31 -13 -67 -13h-440q-31 0 -57 11q-25 10 -48 31q-21 21 -31 45v0zM466.5 357q14.5 0 25.5 11l68 68v-246q0 -15 10.5 -25.5t25.5 -10.5
-t25.5 10.5t10.5 25.5v246l69 -68q10 -11 25 -11t25.5 10.5t10.5 25.5t-11 25l-129 130q-11 10 -26 10t-25 -10l-130 -130q-10 -10 -10 -25t10.5 -25.5t25 -10.5z" />
-    <glyph glyph-name="enviroment" unicode="&#xe685;" 
-d="M512 592q-54 0 -92 -38.5t-38 -92.5t38 -92t92 -38t92 38t38 92t-38 92.5t-92 38.5zM871 621q-31 62 -86 109t-125 74q-71 26 -148 26v0q-77 0 -149 -26q-69 -27 -124 -74t-86 -109q-32 -64 -32 -133q0 -97 47 -197q39 -83 109 -164q92 -108 212 -192q10 -7 22.5 -7
-t23.5 7q120 85 212 192q70 82 109 164q47 100 47 197q0 69 -32 133zM655 319q-59 -59 -143 -59t-143 59t-59 142.5t59 142.5t143 59t143 -59t59 -142.5t-59 -142.5z" />
-    <glyph glyph-name="enviromento" unicode="&#xe686;" 
-d="M512 663q-84 0 -143 -59t-59 -142.5t59 -142.5t143 -59t143 59t59 142.5t-59 142.5t-143 59zM512 331q-54 0 -92 38t-38 92t38 92.5t92 38.5t92 -38.5t38 -92.5t-38 -92t-92 -38zM871 621q-31 62 -86 109t-125 74q-71 26 -148 26v0q-77 0 -149 -26q-69 -27 -124 -74
-t-86 -109q-32 -64 -32 -133q0 -97 47 -197q39 -83 109 -164q92 -108 212 -192q10 -7 22.5 -7t23.5 7q120 85 212 192q70 82 109 164q47 100 47 197q0 69 -32 133zM831 487q0 -81 -40 -166q-34 -73 -98 -148q-77 -90 -181 -166q-104 76 -181 166q-63 75 -98 148
-q-40 85 -40 167q0 53 24 102q25 48 69 86q45 39 102 61q60 22 124 22v0q64 0 124 -22q57 -22 102 -61q45 -38 69 -86q24 -50 24 -103z" />
-    <glyph glyph-name="eye" unicode="&#xe687;" 
-d="M512 487q-42 0 -72 -30t-30 -72t30 -72t72 -30t72 30t30 72t-30 72t-72 30zM963 384q0 14 -21 62q-26 65 -61 109q-57 71 -139 112q-99 50 -230 50t-231 -50q-80 -41 -138 -112q-34 -43 -61 -109q-21 -48 -21 -62v0v0v0v0q0 -14 21 -62q27 -66 61 -109q57 -71 139 -112
-q100 -50 230 -50t230 50q81 41 139 112q35 44 62 109q20 48 20 62v0v0v0v0zM512 212q-72 0 -122.5 50.5t-50.5 122t50.5 122.5t122.5 51t122.5 -51t50.5 -122.5t-50.5 -122t-122.5 -50.5z" />
-    <glyph glyph-name="eyeo" unicode="&#xe688;" 
-d="M963 384q0 14 -21 62q-26 65 -61 109q-57 71 -139 112q-99 50 -230 50t-231 -50q-80 -41 -138 -112q-34 -43 -61 -109q-21 -48 -21 -62v0v0v0v0q0 -14 21 -62q27 -66 61 -109q57 -71 139 -112q100 -50 230 -50t230 50q81 41 139 112q35 44 62 109q20 48 20 62v0v0v0v0z
-M889 384q-25 -77 -64 -126h-1q-46 -59 -114 -93q-85 -42 -198.5 -42t-198.5 42q-67 34 -114 93q-40 49 -65 126q25 77 65 126q47 59 114 93q85 43 199 43t198 -43q67 -33 114 -93q40 -49 65 -126zM512 558q-72 0 -122.5 -50.5t-50.5 -122.5t50.5 -122.5t122.5 -50.5
-t122.5 50.5t50.5 122.5t-50.5 122.5t-122.5 50.5zM614 385q0 -42 -30 -72t-72 -30t-72 30t-30 72t30 72t72 30t72 -30t30 -72z" />
-    <glyph glyph-name="camera" unicode="&#xe689;" 
-d="M899 659h-168l-94 100h-1q-10 10 -26 10h-196q-16 0 -27 -10v0l-94 -100h-168q-26 0 -44.5 -18.5t-18.5 -44.5v-532q0 -26 18.5 -44.5t44.5 -18.5l774 -1q26 0 44.5 19t18.5 45v532q0 26 -18.5 44.5t-44.5 18.5zM428 696h168l35 -37h-238zM511 164q-72 0 -123 51t-51 123
-t51 123t123 51t123 -51t51 -123t-51 -123t-123 -51zM511 440q-42 0 -72 -30t-30 -72.5t30 -72.5t72.5 -30t72.5 30t30 72.5t-30 72.5t-73 30z" />
-    <glyph glyph-name="camerao" unicode="&#xe68a;" 
-d="M511 164q72 0 123 51t51 123t-51 123t-123 51t-123 -51t-51 -123t51 -123t123 -51zM439 410q30 30 72.5 30t72.5 -30t30 -72.5t-30 -72.5t-72.5 -30t-72.5 30t-30 72.5t30 72.5zM899 659h-168l-94 100h-1q-10 10 -26 10h-196q-16 0 -27 -10v0l-94 -100h-168
-q-26 0 -44.5 -18.5t-18.5 -44.5v-532q0 -26 18.5 -44.5t44.5 -18.5l774 -1q26 0 44.5 19t18.5 45v532q0 26 -18.5 44.5t-44.5 18.5zM428 696h168l35 -37h-238zM881 81h-739v497h739v-497z" />
-    <glyph glyph-name="windows" unicode="&#xe68b;" 
-d="M527 27l434 -71v401h-434v-330zM527 758v-329h434v401zM68 429h367v317l-367 -61v-256zM68 99l367 -60v318h-367v-258z" />
-    <glyph glyph-name="export2" unicode="&#xe690;" 
-d="M248.5 473q14.5 0 25 10.5t10.5 25.5v203q0 8 5.5 13.5t13.5 5.5h567q8 0 13 -5.5t5 -13.5v-587q0 -7 -5 -12.5t-13 -5.5h-255q-15 0 -25.5 -10.5t-10.5 -25.5t10.5 -25.5t25.5 -10.5h255q37 0 63.5 26.5t26.5 63.5v587q0 38 -26.5 64t-63.5 26h-567q-38 0 -64 -26
-t-26 -64v-203q0 -15 10.5 -25.5t25 -10.5zM622 263q44 66 55 136q2 14 -7 26t-23 14q-3 1 -5 1q-14 0 -24 -9t-12 -22l-3.5 -17.5t-14 -40t-26.5 -50.5q-70 -104 -206 -104h-4q-14 0 -25 -10.5t-11 -25.5v-42l-100 96l101 84v-35q0 -14 10.5 -24.5t25 -10.5t25 10.5
-t10.5 24.5v111q0 23 -20 33q-7 3 -16 3q-12 0 -22 -8l-190 -159q-13 -10 -13 -26q-1 -16 11 -27l190 -181q17 -16 38.5 -7t21.5 33v91q152 13 234 136z" />
-    <glyph glyph-name="export" unicode="&#xe691;" 
-d="M838 330q-15 0 -25.5 -10.5t-10.5 -25.5v-204q0 -8 -5.5 -13t-12.5 -5h-567q-8 0 -13.5 5t-5.5 13v587q0 8 5.5 13.5t13.5 5.5h254q15 0 25.5 10.5t10.5 25t-10.5 25t-25.5 10.5h-254q-37 0 -63.5 -26t-26.5 -64v-587q0 -37 26.5 -63.5t63.5 -26.5h567q37 0 63.5 26.5
-t26.5 63.5v204q0 15 -10.5 25.5t-25.5 10.5zM464 540q-45 -68 -54 -136q-2 -15 7 -26.5t23 -13.5q2 -1 5 -1q13 0 23.5 9t12.5 22q0 5 3 17.5t14 40t27 50.5q70 103 206 104l3 -1q15 0 25.5 10.5t10.5 25.5v42l101 -95l-101 -84v34q0 15 -10.5 25.5t-25.5 10.5t-25.5 -10.5
-t-10.5 -25.5v-111q0 -22 21 -32q7 -3 15 -3q13 0 23 8l190 158q12 11 13 26q0 17 -11 28l-190 181q-17 16 -39 6.5t-22 -32.5v-91q-152 -13 -234 -136z" />
-    <glyph glyph-name="edit" unicode="&#xe692;" 
-d="M862 68h-701q-14 0 -24 -10t-10 -24.5t10 -24.5t24 -10h701q14 0 24 10t10 24.5t-10 24.5t-24 10zM334 171q7 0 14 3h1l195 91l2 1l332 332q18 18 18 43t-18 42l-67 67q-18 18 -42.5 18t-42.5 -18l-331 -330l-1 -2l-1 -2l-91 -194q-9 -18 2 -35q11 -16 30 -16zM728 656
-l40 40l55 -55l-40 -40zM402 275l49 103l229 229l55 -55l-229 -229z" />
-    <glyph glyph-name="circledowno" unicode="&#xe693;" 
-d="M512 895q-104 0 -199 -40.5t-163.5 -109t-109 -163t-40.5 -199t40.5 -199t109 -163t163.5 -109t199 -40.5t198.5 40.5t163 109t109 163t40.5 199t-40.5 199t-109 163t-163 109t-198.5 40.5zM822 73q-61 -61 -139 -94q-82 -35 -171.5 -35t-171.5 35q-79 33 -139.5 94
-t-94.5 140q-34 81 -34 170.5t35 171.5q33 79 94 139.5t140 94.5q81 34 170.5 34t171.5 -34q79 -34 139.5 -95t94.5 -139q34 -82 34 -171.5t-34 -171.5q-34 -78 -95 -139zM768 520q-16 0 -28 -12l-229 -229l-228 228q-12 12 -28.5 12t-28 -11.5t-11.5 -28t12 -28.5l256 -255
-q11 -12 27.5 -12t28.5 12l257 256q12 12 12 28.5t-12 27.5q-12 12 -28 12z" />
-    <glyph glyph-name="circledown" unicode="&#xe694;" 
-d="M512 895q-104 0 -199 -40.5t-163.5 -109t-109 -163t-40.5 -199t40.5 -199t109 -163t163.5 -109t199 -40.5t198.5 40.5t163 109t109 163t40.5 199t-40.5 199t-109 163t-163 109t-198.5 40.5zM796 452l-258 -256q-11 -12 -27 -12q-17 0 -28 12l-256 255q-12 12 -12 28.5
-t11.5 28t28 11.5t28.5 -12l227 -228l230 229q12 12 28.5 12t28 -11.5t11.5 -28.5q0 -16 -12 -28z" />
-    <glyph glyph-name="appstoreo" unicode="&#xe695;" 
-d="M380 335h-233q-34 0 -58.5 -24.5t-24.5 -58.5v-233q0 -34 24.5 -58.5t58.5 -24.5h233q34 0 58.5 24.5t24.5 58.5v233q0 34 -24.5 58.5t-58.5 24.5zM395 19q0 -6 -5 -11q-4 -4 -10 -4h-233q-6 0 -10.5 4.5t-4.5 10.5v233q0 6 4.5 10.5t10.5 4.5h233q6 0 10.5 -4.5
-t4.5 -10.5v-233v0zM380 831h-233q-34 0 -58.5 -24.5t-24.5 -58.5v-233q0 -34 24.5 -58.5t58.5 -24.5h233q34 0 58.5 24.5t24.5 58.5v233q0 34 -24.5 58.5t-58.5 24.5zM395 515q0 -6 -5 -11q-4 -4 -10 -4h-233q-6 0 -10.5 4.5t-4.5 10.5v233q0 6 4.5 10.5t10.5 4.5h233
-q6 0 10.5 -4.5t4.5 -10.5v-233v0zM876 335h-233q-34 0 -58.5 -24.5t-24.5 -58.5v-233q0 -34 24.5 -58.5t58.5 -24.5h233q35 0 59 24.5t24 58.5v233q0 34 -24.5 58.5t-58.5 24.5zM891 19q0 -6 -4 -11q-5 -4 -11 -4h-233q-6 0 -10.5 4.5t-4.5 10.5v233q0 6 4.5 10.5t10.5 4.5
-h233q6 0 10.5 -4.5t4.5 -10.5v-233zM876 831h-233q-34 0 -58.5 -24.5t-24.5 -58.5v-233q0 -34 24.5 -58.5t58.5 -24.5h233q35 0 59 24.5t24 58.5v233q0 34 -24.5 58.5t-58.5 24.5zM891 515q0 -6 -4 -11q-5 -4 -11 -4h-233q-6 0 -10.5 4.5t-4.5 10.5v233q0 6 4.5 10.5
-t10.5 4.5h233q6 0 10.5 -4.5t4.5 -10.5v-233z" />
-    <glyph glyph-name="appstore" unicode="&#xe696;" 
-d="M380 335h-233q-34 0 -58.5 -24.5t-24.5 -58.5v-233q0 -34 24.5 -58.5t58.5 -24.5h233q34 0 58.5 24.5t24.5 58.5v233q0 34 -24.5 58.5t-58.5 24.5zM380 831h-233q-34 0 -58.5 -24.5t-24.5 -58.5v-233q0 -34 24.5 -58.5t58.5 -24.5h233q34 0 58.5 24.5t24.5 58.5v233
-q0 34 -24.5 58.5t-58.5 24.5zM876 335h-233q-34 0 -58.5 -24.5t-24.5 -58.5v-233q0 -34 24.5 -58.5t58.5 -24.5h233q35 0 59 24.5t24 58.5v233q0 34 -24.5 58.5t-58.5 24.5zM876 831h-233q-34 0 -58.5 -24.5t-24.5 -58.5v-233q0 -34 24.5 -58.5t58.5 -24.5h233q35 0 59 24.5
-t24 58.5v233q0 34 -24.5 58.5t-58.5 24.5z" />
-    <glyph glyph-name="scan" unicode="&#xe697;" 
-d="M128.5 584q13.5 0 23 9.5t9.5 22.5v99q0 8 5.5 13.5t13.5 5.5h99q13 0 22.5 9.5t9.5 23t-9.5 23t-22.5 9.5h-126q-23 0 -40 -17t-17 -40v-126q0 -13 9.5 -22.5t23 -9.5zM279 33h-99q-8 0 -13.5 5.5t-5.5 13.5v98q0 14 -9.5 23.5t-23 9.5t-23 -9.5t-9.5 -23.5v-125
-q0 -24 17 -40.5t40 -16.5h126q13 0 22.5 9.5t9.5 23t-9.5 23t-22.5 9.5zM894.5 183q-13.5 0 -23 -9.5t-9.5 -23.5v-98q0 -8 -5.5 -13.5t-13.5 -5.5h-99q-13 0 -22.5 -9.5t-9.5 -23t9.5 -23t22.5 -9.5h126q24 0 40.5 16.5t16.5 40.5v125q0 14 -9.5 23.5t-23 9.5zM870 799
-h-126q-13 0 -22.5 -9.5t-9.5 -23t9.5 -23t22.5 -9.5h99q8 0 13.5 -5.5t5.5 -13.5v-99q0 -13 9.5 -22.5t23 -9.5t23 9.5t9.5 22.5v126q0 23 -16.5 40t-40.5 17zM250 588v-409q0 -24 16.5 -41t40.5 -17h409q24 0 41 17t17 41v409q0 24 -17 40.5t-41 16.5h-409
-q-24 0 -40.5 -16.5t-16.5 -40.5zM311 202v362q0 8 6 14t14 6h361q9 0 14.5 -6t5.5 -14v-362q0 -8 -5.5 -13.5t-14.5 -5.5h-361q-8 0 -14 5.5t-6 13.5z" />
-    <glyph glyph-name="hdd" unicode="&#xe69a;" 
-d="M786 765v0q-4 15 -17 24.5t-29 9.5h-462q-16 0 -29 -9.5t-17 -24.5v0q-3 -8 -68 -243q-68 -245 -68 -248v-257q0 -20 14.5 -34.5t34.5 -14.5h733q20 0 34.5 14.5t14.5 34.5l1 265zM864 224v-193h-705v193h705zM861 287h-699l127 449h440zM588 70q13 0 22.5 9.5t9.5 22.5
-v51q0 13 -9.5 22.5t-22.5 9.5t-22 -9.5t-9 -22.5v-51q0 -13 9 -22.5t22 -9.5zM691 70q13 0 22.5 9.5t9.5 22.5v51q0 13 -9.5 22.5t-22.5 9.5t-22 -9.5t-9 -22.5v-51q0 -13 9 -22.5t22 -9.5zM794 70q13 0 22 9.5t9 22.5v51q0 13 -9 22.5t-22 9.5t-22.5 -9.5t-9.5 -22.5v-51
-q0 -13 9.5 -22.5t22.5 -9.5z" />
-    <glyph glyph-name="ie" unicode="&#xe69b;" 
-d="M878 548q24 66 22 118q-3 57 -37 91q-33 33 -111.5 27.5t-173.5 -47.5q-13 1 -27 1q-65 0 -126 -21q-58 -21 -107 -60q-101 -80 -132 -203l-7 -28l17 22q69 89 150 136q-22 -21 -25 -25q-73 -73 -126 -159q-49 -80 -75 -160q-25 -75 -24 -135t28 -88q37 -36 99 -36
-q69 0 160 44q78 -39 168 -39q121 0 219 70t137 184l3 8h-213l-1 -3q-21 -38 -58 -60t-80.5 -22t-80.5 22t-57 60q-18 32 -19 69h319h204l1 5q2 20 2 43q0 100 -49 186zM201 222q45 -111 146 -177q-54 -23 -95 -26q-45 -3 -67 20q-23 23 -19 71t35 112zM859 578
-q-30 42 -70 75q-39 32 -85 53q108 42 149 1q37 -38 6 -129zM402 423q5 57 48 96t101 39t100.5 -39t48.5 -96h-298z" />
-    <glyph glyph-name="delete" unicode="&#xe69f;" 
-d="M178 -50q-1 0 -3 1l1 -0.5t2 -0.5zM170 -46q-3 2 -5 3q2 -1 5 -3zM950.5 692.5q-10.5 10.5 -26.5 10.5h-184v58q0 29 -21 49.5t-50 20.5h-314q-30 0 -50.5 -20.5t-20.5 -49.5v-58h-185q-15 0 -25.5 -10.5t-10.5 -25t10.5 -25t25.5 -10.5h31v-623q0 -29 21 -49.5t50 -20.5
-h632q29 0 50 20.5t21 49.5v623h20q15 0 26 10.5t11 25t-10.5 25zM354 760h315v-57h-315v57zM833 9h-632v623h91h541v-623v0zM511.5 512q-14.5 0 -25 -10.5t-10.5 -25.5v-334q0 -15 10.5 -25.5t25 -10.5t25 10.5t10.5 25.5v334q0 15 -10.5 25.5t-25 10.5zM317 512
-q-15 0 -25.5 -10.5t-10.5 -25.5v-334q0 -15 10.5 -25.5t25.5 -10.5t25.5 10.5t10.5 25.5v334q0 15 -10.5 25.5t-25.5 10.5zM704 512q-15 0 -25.5 -10.5t-10.5 -25.5v-334q0 -15 10.5 -25.5t25.5 -10.5t25.5 10.5t10.5 25.5v334q0 15 -10.5 25.5t-25.5 10.5z" />
-    <glyph glyph-name="enter" unicode="&#xe6a0;" 
-d="M900 510v192q0 17 -11.5 28.5t-28 11.5t-28.5 -11.5t-12 -28.5v-192q0 -92 -65 -157t-157 -65h-340l113 112q11 12 11 28.5t-11.5 28t-28 11.5t-28.5 -12l-178 -178q-12 -12 -12 -28.5t12 -28.5l183 -183q12 -12 28.5 -12t28.5 11.5t12 28t-12 28.5l-114 114h336
-q125 0 213.5 88.5t88.5 213.5z" />
-    <glyph glyph-name="pushpino" unicode="&#xe6a1;" 
-d="M303 728q2 -10 1 -20l-1 -36l29 -23l214 -170l30 -24l37 12q44 15 90 15q49 0 95 -16q26 -10 51 -24l-169 -170l-43 -43l-13 -13v0l-169 -170q-27 45 -36 96q-13 72 10 141l12 37l-24 30l-170 214l-23 29l-36 -1h-1.5h-2.5q-8 0 -16 1zM318 831q-14 0 -24 -10l-219 -219
-q-11 -11 -9.5 -27t14.5 -24q48 -31 104 -31h6l170 -215q-28 -84 -11.5 -175.5t74.5 -163.5q11 -13 27 -13q14 0 24 10l206 207l223 -223q10 -10 23.5 -10t23 9.5t9.5 23t-10 23.5l-223 223l206 207q11 11 10 26t-13 25q-98 80 -226 80q-57 0 -112 -18l-215 170q2 60 -30 110
-q-10 15 -28 15v0z" />
-    <glyph glyph-name="pushpin" unicode="&#xe6a2;" 
-d="M949 -7l-223 223l206 207q11 11 10 26t-13 25q-72 58 -163 74t-175 -12l-215 170q2 60 -30 110q-9 13 -25 14.5t-27 -9.5l-219 -219q-11 -11 -9.5 -27t14.5 -24q50 -33 110 -31l170 -215q-28 -84 -11.5 -175.5t74.5 -163.5q10 -12 25 -13t26 10l206 207l223 -223
-q10 -10 23.5 -10t23 9.5t9.5 23t-10 23.5z" />
-    <glyph glyph-name="heart" unicode="&#xe6a3;" horiz-adv-x="1025" 
-d="M1000 648q-23 56 -66 99q-84 85 -201 85q-64 0 -121.5 -28t-99.5 -79q-42 51 -99.5 79t-121.5 28q-117 0 -201 -86q-43 -43 -66 -99q-25 -59 -24 -122q1 -69 29 -130.5t79 -104.5q5 -4 9 -8q14 -12 113 -102q208 -191 257 -235q11 -9 25 -9t25 9q33 30 181 165
-q158 144 196 179q52 43 81 105t29 132q0 64 -24 122z" />
-    <glyph glyph-name="hearto" unicode="&#xe6a4;" horiz-adv-x="1025" 
-d="M1000 648q-23 56 -66 99q-84 85 -201 85q-64 0 -121.5 -28t-99.5 -79q-42 51 -99.5 79t-121.5 28q-117 0 -201 -86q-43 -43 -66 -99q-25 -59 -24 -122q1 -69 29 -130.5t79 -104.5q5 -4 9 -8q14 -12 113 -102q208 -191 257 -235q11 -9 25 -9t25 9q33 30 181 165
-q158 144 196 179q52 43 81 105t29 132q0 64 -24 122zM568 672q30 40 73.5 61.5t91.5 21.5q85 0 147 -62q32 -32 49 -74q18 -44 18 -93q0 -53 -22 -101q-22 -46 -60 -77l-2 -2q-62 -55 -197 -180q-108 -98 -154 -140q-58 53 -202 184l-48 44q-76 69 -94 85q-1 2 -2 3
-q-6 4 -8 7q-39 32 -60 78.5t-21 97.5q-1 49 18 93q17 42 49 74q62 63 147 63q48 0 91.5 -22t73.5 -61q21 -28 56 -28t56 28z" />
-    <glyph glyph-name="smile-circle" unicode="&#xe6a7;" 
-d="M512 896q-139 0 -257 -68.5t-186.5 -186.5t-68.5 -257t68.5 -257t186.5 -186.5t257 -68.5t257 68.5t186.5 186.5t68.5 257t-68.5 257t-186.5 186.5t-257 68.5zM254 454q-25 0 -42.5 17.5t-17.5 42t17.5 42.5t42.5 18t42.5 -18t17.5 -42.5t-17.5 -42t-42.5 -17.5zM512 130
-q-68 0 -116 48.5t-48 116.5q0 15 10.5 25.5t25.5 10.5t25.5 -10.5t10.5 -25.5q0 -38 27 -65.5t65 -27.5t65 27.5t27 65.5q0 15 10.5 25.5t25.5 10.5t25.5 -10.5t10.5 -25.5q0 -68 -48 -116.5t-116 -48.5zM769.5 454q-24.5 0 -42 17.5t-17.5 42t17.5 42.5t42 18t42.5 -18
-t18 -42.5t-18 -42t-42.5 -17.5z" />
-    <glyph glyph-name="smileo" unicode="&#xe6a8;" 
-d="M512 896q-139 0 -257 -68.5t-186.5 -186.5t-68.5 -257t68.5 -257t186.5 -186.5t257 -68.5t257 68.5t186.5 186.5t68.5 257t-68.5 257t-186.5 186.5t-257 68.5zM823 73q-61 -61 -140 -94q-81 -35 -171 -35t-171 34q-79 34 -140 95t-94 140q-35 81 -35 171t34 171
-q34 79 95 140t140 94q81 35 171 35t171 -34q79 -34 140 -95t94 -140q35 -81 35 -171t-34 -171q-34 -79 -95 -140zM640 331q-15 0 -25.5 -10.5t-10.5 -25.5q0 -38 -27 -65.5t-65 -27.5t-65 27.5t-27 65.5q0 15 -10.5 25.5t-25.5 10.5t-25.5 -10.5t-10.5 -25.5
-q0 -68 48 -116.5t116 -48.5t116 48.5t48 116.5q0 15 -10.5 25.5t-25.5 10.5zM254 514zM194 513.5q0 24.5 17.5 42.5t42.5 18t42.5 -18t17.5 -42.5t-17.5 -42t-42.5 -17.5t-42.5 17.5t-17.5 42zM770 514zM710 513.5q0 24.5 17.5 42.5t42 18t42.5 -18t18 -42.5t-18 -42
-t-42.5 -17.5t-42 17.5t-17.5 42z" />
-    <glyph glyph-name="frowno" unicode="&#xe6a9;" 
-d="M512 896q-139 0 -257 -68.5t-186.5 -186.5t-68.5 -257t68.5 -257t186.5 -186.5t257 -68.5t257 68.5t186.5 186.5t68.5 257t-68.5 257t-186.5 186.5t-257 68.5zM823 73q-61 -61 -140 -94q-81 -35 -171 -35t-171 34q-79 34 -140 95t-94 140q-35 81 -35 171t34 171
-q34 79 95 140t140 94q81 35 171 35t171 -34q79 -34 140 -95t94 -140q35 -81 35 -171t-34 -171q-34 -79 -95 -140zM640 130q-15 0 -25.5 11t-10.5 25q0 39 -27 66t-65 27t-65 -27t-27 -66q0 -14 -10.5 -25t-25.5 -11t-25.5 11t-10.5 25q0 68 48 116.5t116 48.5t116 -48.5
-t48 -116.5q0 -14 -10.5 -25t-25.5 -11zM254 514zM194 513.5q0 24.5 17.5 42.5t42.5 18t42.5 -18t17.5 -42.5t-17.5 -42t-42.5 -17.5t-42.5 17.5t-17.5 42zM770 514zM710 513.5q0 24.5 17.5 42.5t42 18t42.5 -18t18 -42.5t-18 -42t-42.5 -17.5t-42 17.5t-17.5 42z" />
-    <glyph glyph-name="calculator" unicode="&#xe6aa;" 
-d="M857 832h-689q-16 0 -27.5 -11.5t-11.5 -27.5v-818q0 -16 11.5 -27.5t27.5 -11.5h689q16 0 27 11.5t11 27.5v818q0 16 -11 27.5t-27 11.5zM818 14h-612v740h612v-740v0zM324 410h377q16 0 27.5 11.5t11.5 27.5v185q0 16 -11.5 27.5t-27.5 11.5h-377q-16 0 -27.5 -11.5
-t-11.5 -27.5v-185q0 -16 11.5 -27.5t27.5 -11.5zM362 595h300v-108h-300v108zM293 189h23v-23q0 -16 11.5 -27.5t27.5 -11.5t27.5 11.5t11.5 27.5v23h23q16 0 27.5 11.5t11.5 27.5t-11.5 27t-27.5 11h-23v24q0 16 -11.5 27t-27.5 11t-27.5 -11t-11.5 -27v-24h-23
-q-16 0 -27.5 -11t-11.5 -27t11.5 -27.5t27.5 -11.5zM607 328q-16 0 -27.5 -11t-11.5 -27t11.5 -27.5t27.5 -11.5h124q16 0 27.5 11.5t11.5 27.5t-11.5 27t-27.5 11h-124zM731 162h-124q-16 0 -27.5 -11.5t-11.5 -27.5t11.5 -27.5t27.5 -11.5h124q16 0 27.5 11.5t11.5 27.5
-t-11.5 27.5t-27.5 11.5z" />
-    <glyph glyph-name="chrome" unicode="&#xe6ac;" horiz-adv-x="1025" 
-d="M258 449l-146 254q71 90 176 141.5t224 51.5q138 0 255.5 -68t185.5 -183h-418q-11 1 -23 1q-90 0 -161 -55.5t-93 -141.5v0zM695 571h294q35 -90 35 -187q0 -103 -40 -197.5t-107.5 -163t-161.5 -109.5t-197 -42l209 363q47 67 47 149q0 110 -79 187v0v0zM326 384
-q0 77 54.5 131.5t131.5 54.5t131.5 -54.5t54.5 -131.5t-54.5 -131.5t-131.5 -54.5t-131.5 54.5t-54.5 131.5zM582 131l-146 -253q-122 18 -222 89t-157 181t-57 236q0 135 66 251l209 -362q32 -68 96 -109.5t141 -41.5q36 0 70 9z" />
-    <glyph glyph-name="github" unicode="&#xe6ad;" horiz-adv-x="1025" 
-d="M0 371q0 -166 95.5 -298.5t247.5 -185.5q6 -1 10 -1t6.5 1.5t4 3t2 5t0.5 5v6v6.5v88q-37 -4 -66 0.5t-45.5 14t-29 23.5t-17 25.5t-9 24t-5.5 14.5q-9 15 -27 27.5t-27 20t-2 14.5q50 26 113 -66q34 -51 119 -30q10 41 40 70q-116 21 -172 86t-56 158q0 87 55 151
-q-22 65 6 137q29 2 65 -11.5t50.5 -23t25.5 -17.5q57 16 128.5 16t129.5 -16q13 9 29 19t49 21.5t61 9.5q27 -71 7 -135q56 -64 56 -151q0 -93 -57 -158.5t-172 -85.5q43 -43 43 -104v-129q0 -1 1 -3q0 -6 0.5 -9t4.5 -6t12 -3q153 52 250.5 185.5t97.5 300.5
-q0 104 -40.5 199t-109 163.5t-163.5 109t-199 40.5t-199 -40.5t-163.5 -109t-109 -163.5t-40.5 -199v0z" />
-    <glyph glyph-name="iconfontdesktop" unicode="&#xe6b4;" 
-d="M902 766h-779q-23 0 -40 -17t-17 -40v-480q0 -24 17 -40.5t40 -16.5h357v-108h-147q-13 0 -22.5 -9.5t-9.5 -22.5t9.5 -22t22.5 -9h358q13 0 22.5 9t9.5 22t-9.5 22.5t-22.5 9.5h-148v108h359q24 0 40.5 16.5t16.5 40.5v480q0 23 -16.5 40t-40.5 17zM896 703v-468h-767
-v468h767z" />
-    <glyph glyph-name="caretcircleoup" unicode="&#xe6b5;" 
-d="M512 895q-104 0 -199 -40.5t-163.5 -109t-109 -163.5t-40.5 -199t40.5 -198.5t109 -163t163.5 -109t199 -40.5t198.5 40.5t163 109t109 163t40.5 198.5t-40.5 199t-109 163.5t-163 109t-198.5 40.5zM828 67q-62 -62 -142 -96q-83 -35 -174 -35t-174 35q-81 34 -143 96
-t-96 142q-35 83 -35 174t35 175q34 80 96 142t142 96q83 35 174.5 35t174.5 -35q80 -34 142 -96t96 -142q35 -83 35 -174.5t-35 -174.5q-34 -80 -96 -142zM528 559q-7 7 -16 7h-1q-10 0 -16 -7l-229 -244q-10 -11 -4.5 -25t21.5 -14h457q16 0 22 14t-5 25z" />
-    <glyph glyph-name="upload" unicode="&#xe6b6;" 
-d="M488 822q10 10 24 10t24 -10l156 -156q10 -10 10 -24.5t-10 -24.5t-24 -10t-25 10l-96 97v-578q0 -14 -10.5 -24t-24.5 -10t-24.5 10t-10.5 24v578l-97 -97q-10 -10 -24 -10t-24 10t-10 24.5t10 24.5zM924.5 256q-14.5 0 -24.5 -10.5t-10 -24.5v-195q0 -9 -6 -15t-15 -6
-h-716q-9 0 -15 6t-6 15v195q0 14 -10 24.5t-24.5 10.5t-24.5 -10.5t-10 -24.5v-223q0 -26 18 -44t44 -18h772q26 0 44 18.5t18 43.5v223q0 14 -10 24.5t-24.5 10.5z" />
-    <glyph glyph-name="download" unicode="&#xe6b7;" 
-d="M488 112q10 -10 24 -10t24 10l156 156q11 10 11 24t-10.5 24.5t-24.5 10.5t-24 -11l-97 -96v577q0 15 -10.5 25t-24.5 10t-24 -10t-10 -25v-577l-97 97q-11 10 -25 10t-24 -10.5t-10 -24.5t10 -24zM924.5 256q-14.5 0 -24.5 -10.5t-10 -24.5v-195q0 -9 -6 -15t-15 -6
-h-716q-9 0 -15 6t-6 15v195q0 14 -10 24.5t-24.5 10.5t-24.5 -10.5t-10 -24.5v-223q0 -26 18 -44t44 -18h772q26 0 44 18.5t18 43.5v223q0 14 -10 24.5t-24.5 10.5z" />
-    <glyph glyph-name="piechart" unicode="&#xe6b8;" 
-d="M467 -128q95 0 180 36t150 101l-330 328v465q-95 0 -181.5 -36.5t-149 -99t-99.5 -148.5t-37 -180.5t37 -181t99.5 -148.5t149 -99t181.5 -37v0v0zM531 404h493q0 100 -39 191t-105 157t-157.5 105t-191.5 39v-492v0zM557 339l332 -327q64 64 99.5 148.5t35.5 178.5h-467
-v0z" />
-    <glyph glyph-name="lock1" unicode="&#xe6b9;" 
-d="M824 614q-26 64 -73 113q-46 50 -107 77q-63 28 -132 28t-132 -28q-61 -27 -108 -76.5t-72 -113.5q-27 -66 -27 -139v-470q0 -29 19.5 -49t46.5 -20h545q28 0 47.5 20t18.5 49v415l1 19v36q0 72 -27 139zM407 741v0l1 1q49 22 104 22q54 0 104 -22q48 -22 86 -62
-q38 -39 59 -92t21 -113v-29h-541v0v29q0 59 22 113q21 53 59 92.5t85 60.5zM783 378v-373q0 -1 -1 -1h-540q-1 0 -1 1v373h542zM480 224v-90q0 -13 9.5 -22t22.5 -9t22.5 9t9.5 22v90q27 17 27 49q0 25 -17.5 42t-41.5 17t-41.5 -17t-17.5 -42q0 -32 27 -49z" />
-    <glyph glyph-name="unlock" unicode="&#xe6ba;" 
-d="M241 446v30q0 58 22 113q21 52 59 91q38 40 85 61v0l1 1q49 22 104 22q54 0 104 -22q48 -22 86 -61q21 -23 53 -83q10 -20 31 -20h14q14 0 21.5 11.5t2.5 24.5v0q-26 64 -73 113q-46 50 -107 77q-63 28 -132 28t-132 -28q-61 -27 -108 -76.5t-72 -113.5q-27 -66 -27 -139
-v-470q0 -29 19.5 -49t46.5 -20h545q28 0 47 20t19 49l1 377q0 26 -19 45t-45 19h-546v0zM783 5q0 -1 -1 -1h-540q-1 0 -1 1v373h542v-373zM480 224v-90q0 -13 9.5 -22t22.5 -9t22.5 9t9.5 22v90q27 17 27 49q0 25 -17.5 42t-41.5 17t-41.5 -17t-17.5 -42q0 -32 27 -49z" />
-    <glyph glyph-name="windowso" unicode="&#xe6bc;" 
-d="M527 27l434 -71v401h-434v-330zM599 285h290v-244l-290 47v197zM527 758v-329h434v401zM889 501h-290v196l290 48v-244zM68 429h367v317l-367 -61v-256zM140 624l223 37v-160h-223v123zM68 99l367 -60v318h-367v-258zM140 285h223v-161l-223 36v125z" />
-    <glyph glyph-name="dotchart" unicode="&#xe6bd;" 
-d="M923 8h-788v789q0 15 -10.5 25.5t-25.5 10.5t-25.5 -10.5t-10.5 -25.5v-825q0 -15 10.5 -25.5t25.5 -10.5h824q15 0 25.5 10.5t10.5 25.5t-10.5 25.5t-25.5 10.5zM319 259zM253 259.5q0 27.5 19 46.5t46.5 19t47 -19t19.5 -46.5t-19.5 -47t-47 -19.5t-46.5 19.5t-19 47z
-M598 299zM512 299q0 35 25 60t60.5 25t60.5 -25t25 -60t-25 -60t-60.5 -25t-60.5 25t-25 60zM623 514zM563 514q0 25 17.5 42.5t42.5 17.5t42.5 -17.5t17.5 -42.5t-17.5 -42.5t-42.5 -17.5t-42.5 17.5t-17.5 42.5zM850 657zM805 657.5q0 18.5 13 32t32 13.5t32.5 -13.5
-t13.5 -32t-13.5 -32t-32.5 -13.5t-32 13.5t-13 32zM863 466zM830 466q0 14 9.5 23.5t23.5 9.5t23.5 -9.5t9.5 -23.5t-9.5 -23.5t-23.5 -9.5t-23.5 9.5t-9.5 23.5z" />
-    <glyph glyph-name="barchart" unicode="&#xe6be;" 
-d="M923 -64h-824q-15 0 -25.5 10.5t-10.5 25.5v824q0 15 10.5 25.5t25.5 10.5t25.5 -10.5t10.5 -25.5v-788h788q15 0 25.5 -10.5t10.5 -25.5t-10.5 -25.5t-25.5 -10.5zM264 523q-29 -1 -50 -22t-22 -50q0 -23 11.5 -41t30.5 -28v-285q0 -13 9.5 -22.5t22.5 -9.5v0
-q13 0 22.5 9.5t9.5 22.5v285q19 9 30.5 27t11.5 40q0 31 -22.5 53t-53.5 21zM542 641q-30 -1 -51 -22t-21 -50q-1 -23 10.5 -41t31.5 -28v-403q0 -13 9 -22.5t23 -9.5v0q13 0 22.5 9.5t9.5 22.5v403q18 9 30 27t12 40q0 31 -22.5 53t-53.5 21zM895 438q0 31 -22.5 53
-t-53.5 21q-29 -1 -50 -22t-22 -50q0 -23 11.5 -41t30.5 -28v-274q0 -13 9.5 -22.5t22.5 -9.5v0q13 0 22.5 9.5t9.5 22.5v274q19 9 30.5 27t11.5 40z" />
-    <glyph glyph-name="codesquare" unicode="&#xe6bf;" 
-d="M888 832h-752q-30 0 -51 -21t-21 -51v-753q0 -29 21 -50.5t51 -21.5h753q29 0 50.5 21.5t21.5 50.5v753q0 30 -21.5 51t-51.5 21zM229 347q-15 0 -25.5 10.5t-10.5 25.5t10 26l115 115l-115 117q-10 11 -10 25.5t10.5 25t25.5 10.5t25 -10l141 -142q10 -11 10 -26
-t-11 -25l-140 -141q-10 -11 -25 -11zM618 347v0l-199 1q-15 0 -25.5 10.5t-10.5 25.5t10.5 25.5t25.5 10.5v0l199 -1q15 0 25.5 -10.5t10.5 -25.5t-11 -25.5t-25 -10.5z" />
-    <glyph glyph-name="plussquare" unicode="&#xe6c0;" 
-d="M888 832h-752q-30 0 -51 -21t-21 -51v-753q0 -29 21 -50.5t51 -21.5h753q29 0 50.5 21.5t21.5 50.5v753q0 30 -21.5 51t-51.5 21zM732 348h-184v-183q0 -15 -10.5 -25.5t-25 -10.5t-25.5 10.5t-11 25.5v183h-184q-15 0 -25.5 10.5t-10.5 25t10.5 25.5t25.5 11h184v183
-q0 15 11 25.5t25.5 10.5t25 -10.5t10.5 -25.5v-183h184q15 0 25.5 -11t10.5 -25.5t-10.5 -25t-25.5 -10.5z" />
-    <glyph glyph-name="minussquare" unicode="&#xe6c1;" 
-d="M888 832h-752q-30 0 -51 -21t-21 -51v-753q0 -29 21 -50.5t51 -21.5h753q29 0 50.5 21.5t21.5 50.5v753q0 30 -21.5 51t-51.5 21zM768 383q0 -15 -11 -25.5t-25 -10.5h-442q-14 0 -25 10.5t-11 25.5v0q0 15 11 25.5t25 10.5h442q14 0 25 -10.5t11 -25.5v0z" />
-    <glyph glyph-name="closesquare" unicode="&#xe6c2;" 
-d="M888 832h-752q-30 0 -51 -21t-21 -51v-753q0 -29 21 -50.5t51 -21.5h753q29 0 50.5 21.5t21.5 50.5v753q0 30 -21.5 51t-51.5 21zM717.5 178.5q-10.5 -10.5 -25.5 -10.5t-26 10l-154 155l-154 -155q-11 -10 -26 -10t-25.5 10.5t-10.5 25.5t11 25l154 155l-154 155
-q-11 10 -11 25t10.5 25.5t25.5 10.5t26 -10l154 -155l154 155q11 10 26 10t25.5 -10.5t10.5 -25.5t-11 -25l-154 -155l154 -155q11 -11 11 -25.5t-10.5 -25z" />
-    <glyph glyph-name="closesquareo" unicode="&#xe6c3;" 
-d="M717.5 589.5q-10.5 10.5 -25.5 10.5t-26 -10l-154 -155l-154 155q-11 10 -26 10t-25.5 -10.5t-10.5 -25.5t11 -25l154 -155l-154 -155q-11 -10 -11 -25t10.5 -25.5t25.5 -10.5t26 10l154 155l154 -155q11 -10 26 -10t25.5 10.5t10.5 25t-11 25.5l-154 155l154 155
-q11 10 11 25t-10.5 25.5zM888 760v0v0v-753v0h-752v0v753v0h752zM888 832h-752q-30 0 -51 -21t-21 -51v-753q0 -29 21 -50.5t51 -21.5h753q29 0 50.5 21.5t21.5 50.5v753q0 30 -21.5 51t-51.5 21v0z" />
-    <glyph glyph-name="checksquare" unicode="&#xe6c4;" 
-d="M888 832h-752q-30 0 -51 -21t-21 -51v-753q0 -29 21 -50.5t51 -21.5h753q29 0 50.5 21.5t21.5 50.5v753q0 30 -21.5 51t-51.5 21zM772 539l-359 -360l-1 -1q-3 -3 -8 -6q-8 -5 -18 -5q-21 0 -31 18l-109 191q-8 13 -4 27t17 21.5t27.5 3.5t21.5 -17l86 -149l327 328
-q11 11 26 11t25.5 -10.5t10.5 -25.5t-11 -26z" />
-    <glyph glyph-name="checksquareo" unicode="&#xe6c5;" 
-d="M721 590l-327 -328l-86 149q-7 13 -21.5 17t-27.5 -3.5t-17 -21.5t4 -27l109 -191q10 -18 31 -18q10 0 18 5q5 3 8 6l1 1l359 360q11 11 11 26t-10.5 25.5t-25.5 10.5t-26 -11zM888 760v0v0v-753v0h-752v0v753v0h752zM888 832h-752q-30 0 -51 -21t-21 -51v-753
-q0 -29 21 -50.5t51 -21.5h753q29 0 50.5 21.5t21.5 50.5v753q0 30 -21.5 51t-51.5 21v0z" />
-    <glyph glyph-name="fastbackward" unicode="&#xe6c6;" 
-d="M525 414l436 376q18 17 40.5 6.5t22.5 -36.5v-752q0 -26 -22.5 -36.5t-40.5 6.5l-436 377q-13 12 -13 30t13 29zM36 800v0q15 0 25.5 -10.5t10.5 -25.5v-298l377 324q18 17 40.5 6.5t22.5 -36.5v-375v-377q0 -26 -22.5 -36.5t-40.5 6.5l-377 326v-300q0 -15 -10.5 -25.5
-t-25.5 -10.5v0q-15 0 -25.5 10.5t-10.5 25.5v760q0 15 10.5 25.5t25.5 10.5z" />
-    <glyph glyph-name="fastforward" unicode="&#xe6c7;" 
-d="M499 414l-436 376q-18 17 -40.5 6.5t-22.5 -36.5v-752q0 -26 22.5 -36.5t40.5 6.5l436 378q13 11 13 29t-13 29zM988 800v0q-15 0 -25.5 -10.5t-10.5 -25.5v-298l-377 324q-18 17 -40.5 6.5t-22.5 -36.5v-375v-377q0 -26 22.5 -36.5t40.5 6.5l377 326v-300
-q0 -15 10.5 -25.5t25.5 -10.5v0q15 0 25.5 10.5t10.5 25.5v760q0 15 -10.5 25.5t-25.5 10.5z" />
-    <glyph glyph-name="upsquare" unicode="&#xe6c8;" 
-d="M888 832h-752q-30 0 -51 -21t-21 -51v-753q0 -29 21 -50.5t51 -21.5h753q29 0 50.5 21.5t21.5 50.5v753q0 30 -21.5 51t-51.5 21zM757.5 277q-10.5 -10 -25.5 -9.5t-25 10.5l-195 208l-195 -208q-10 -10 -25 -10.5t-26 9.5t-11.5 25t10.5 26l221 236q10 11 26 11t26 -11
-l221 -236q10 -11 9.5 -26t-11 -25z" />
-    <glyph glyph-name="downsquare" unicode="&#xe6c9;" 
-d="M888 832h-752q-30 0 -51 -21t-21 -51v-753q0 -29 21 -50.5t51 -21.5h753q29 0 50.5 21.5t21.5 50.5v753q0 30 -21.5 51t-51.5 21zM759 451l-221 -236q-10 -11 -26 -11t-26 11l-221 236q-11 11 -10.5 26t11.5 25t26 9.5t25 -11.5l195 -207l195 207q10 11 25 11.5
-t25.5 -9.5t11 -25t-9.5 -26z" />
-    <glyph glyph-name="leftsquare" unicode="&#xe6ca;" 
-d="M888 832h-752q-30 0 -51 -21t-21 -51v-753q0 -29 21 -50.5t51 -21.5h753q29 0 50.5 21.5t21.5 50.5v753q0 30 -21.5 51t-51.5 21zM616 189q11 -10 11.5 -25t-9.5 -25.5t-25 -11t-26 9.5l-236 221q-11 10 -11 26t11 26l236 221q11 11 26 10.5t25 -11.5t9.5 -26t-10.5 -25
-l-208 -195z" />
-    <glyph glyph-name="rightsquare" unicode="&#xe6cb;" 
-d="M888 832h-752q-30 0 -51 -21t-21 -51v-753q0 -29 21 -50.5t51 -21.5h753q29 0 50.5 21.5t21.5 50.5v753q0 30 -21.5 51t-51.5 21zM694 358l-236 -221q-11 -10 -26 -9.5t-25 11t-9.5 25.5t10.5 25l208 195l-208 195q-10 10 -10.5 25t9.5 26t25 11.5t26 -10.5l236 -221
-q11 -10 11 -26t-11 -26z" />
-    <glyph glyph-name="rightsquareo" unicode="&#xe6cc;" 
-d="M888 760v0v0v-753v0h-752v0v753v0h752zM888 832h-752q-30 0 -51 -21t-21 -51v-753q0 -29 21 -50.5t51 -21.5h753q29 0 50.5 21.5t21.5 50.5v753q0 30 -21.5 51t-51.5 21v0zM705 384q0 16 -11 26l-236 221q-11 11 -26 10.5t-25 -11.5t-9.5 -26t10.5 -25l208 -195
-l-208 -195q-10 -10 -10.5 -25t9.5 -26t25 -11.5t26 10.5l236 221q11 10 11 26z" />
-    <glyph glyph-name="leftsquareo" unicode="&#xe6cd;" 
-d="M888 760v0v0v-753v0h-752v0v753v0h752zM888 832h-752q-30 0 -51 -21t-21 -51v-753q0 -29 21 -50.5t51 -21.5h753q29 0 50.5 21.5t21.5 50.5v753q0 30 -21.5 51t-51.5 21v0zM331 358l236 -221q11 -10 26 -9.5t25 11t9.5 25.5t-11.5 25l-207 195l207 195q11 10 11.5 25
-t-9.5 26t-25 11.5t-26 -10.5l-236 -221q-11 -10 -11 -26t11 -26z" />
-    <glyph glyph-name="down-square-o" unicode="&#xe6ce;" 
-d="M888 760v0v0v-753h-752v753h752zM888 832h-752q-30 0 -51 -21t-21 -51v-753q0 -29 21 -50.5t51 -21.5h753q29 0 50.5 21.5t21.5 50.5v753q0 30 -21.5 51t-51.5 21v0zM538 215l221 236q10 11 9.5 26t-11 25t-25.5 9.5t-25 -11.5l-195 -207l-195 207q-10 11 -25 11.5
-t-26 -9.5t-11.5 -25t10.5 -26l221 -236q10 -11 26 -11t26 11z" />
-    <glyph glyph-name="up-square-o" unicode="&#xe6cf;" 
-d="M888 760v0v0v-753v0h-752v0v753v0h752zM888 832h-752q-30 0 -51 -21t-21 -51v-753q0 -29 21 -50.5t51 -21.5h753q29 0 50.5 21.5t21.5 50.5v753q0 30 -21.5 51t-51.5 21v0zM512 575q-16 0 -26 -11l-221 -236q-11 -11 -10.5 -26t11.5 -25t26 -9.5t25 10.5l195 208
-l195 -208q10 -10 25 -10.5t25.5 9.5t11 25t-9.5 26l-221 236q-10 11 -26 11z" />
-    <glyph glyph-name="play" unicode="&#xe6d0;" 
-d="M512 894q-139 0 -256.5 -68.5t-186 -186t-68.5 -256.5t68.5 -256.5t186 -186t256.5 -68.5t256.5 68.5t186 186t68.5 256.5t-68.5 256.5t-186 186t-256.5 68.5zM712 369l-291 -247q-6 -6 -15 -6q-8 0 -14.5 5.5t-6.5 14.5v495q0 8 6.5 13.5t15 5.5t14.5 -6l291 -247
-q6 -6 6 -14t-6 -14z" />
-    <glyph glyph-name="playcircleo" unicode="&#xe6d1;" 
-d="M512 894q-139 0 -256.5 -68.5t-186 -186t-68.5 -256.5t68.5 -256.5t186 -186t256.5 -68.5t256.5 68.5t186 186t68.5 256.5t-68.5 256.5t-186 186t-256.5 68.5zM822 73q-60 -61 -139 -95q-82 -34 -171 -34t-171 34q-78 34 -139 95q-61 60 -95 139q-34 82 -34 171t35 171
-q33 78 94 140q60 60 139 94q82 34 171 34t171 -34q78 -34 139 -95q61 -60 95 -139q34 -82 34 -171t-35 -171q-33 -79 -94 -139zM712 397l-291 247q-6 6 -15 6q-8 0 -14.5 -5.5t-6.5 -13.5v-495q0 -9 6.5 -14t15 -5t14.5 5l291 247q6 6 6 14t-6 14z" />
-    <glyph glyph-name="tag" unicode="&#xe6d2;" 
-d="M963 291v3q-1 9 -4 18q-4 10 -10 19q-4 5 -7 8l-479 483q-4 5 -9 8q-12 7 -25 7h-291q-31 0 -53 -22t-22 -52v-298q0 -5 1 -10l0.5 -1l0.5 -1q1 -4 2 -7q1 -1 1 -2q4 -7 10 -13l477 -472q9 -8 18 -13q17 -9 35 -9q15 0 28 6q14 5 25 16l280 277q3 2 5 5q3 3 5 7q2 3 3 5
-q2 3 3 5q0 2 1 3q5 14 5 30zM264.5 560q-29.5 0 -50.5 21t-21 50.5t21 50.5t50.5 21t50.5 -21t21 -50.5t-21 -50.5t-50.5 -21z" />
-    <glyph glyph-name="tago" unicode="&#xe6d3;" 
-d="M963 291v3q-1 9 -4 18q-4 10 -10 19q-4 5 -7 8l-479 483q-4 5 -9 8q-12 7 -25 7h-291q-31 0 -52.5 -22t-21.5 -52v-298v-10l0.5 -1l0.5 -1q1 -4 2 -7q1 -1 1 -2q4 -7 10 -13l238 -236l239 -236q9 -8 19 -13q16 -9 34 -9q15 0 28 6q14 5 25 16l280 277q3 2 5 5q3 3 5 7
-q2 3 3 5q2 3 3 5q0 2 1 3q5 14 5 30zM891 287v0v0v0v0v0h-1v0l-280 -277v0q-1 -1 -2 -1t-1 1h-0.5h-0.5l-239 236l-231 229v288q0 2 2 2h281l471 -476h1v-1v0v0v-1zM264 632zM193 631.5q0 29.5 21 50.5t50.5 21t50.5 -21t21 -50.5t-21 -50.5t-50.5 -21t-50.5 21t-21 50.5z
-" />
-    <glyph glyph-name="addfile" unicode="&#xe910;" 
-d="M860 128h-156v156q0 15 -10.5 25.5t-25.5 10.5t-25.5 -10.5t-10.5 -25.5v-156h-148q-15 0 -25.5 -10.5t-10.5 -25.5t10.5 -25.5t25.5 -10.5h148v-148q0 -15 10.5 -25.5t25.5 -10.5t25.5 10.5t10.5 25.5v148h156q15 0 25.5 10.5t10.5 25.5t-10.5 25.5t-25.5 10.5zM875 594
-l-278 281q-6 6 -15 11q-2 2 -4 2q-1 1 -3 2q-14 6 -29 6h-346q-30 0 -51 -21t-21 -51v-880q0 -30 21 -51t51 -21h212q15 0 25.5 10.5t10.5 25.5t-10.5 25.5t-25.5 10.5h-212v880h312v-240q0 -30 21 -51t51 -21h240v-156q0 -15 10.5 -25.5t25.5 -10.5t25.5 10.5t10.5 25.5
-v188q0 29 -21 50zM584 584v202l200 -202h-200z" />
-    <glyph glyph-name="folder1" unicode="&#xe662;" 
-d="M952 704h-463l-25 78q-7 22 -26 36t-43 14h-323q-30 0 -51 -21t-21 -51v-688q0 -30 21 -51t51 -21h880q30 0 51 21t21 51v560q0 30 -21 51t-51 21zM72 760h323l18 -56h-341v56zM952 72h-880v560h880v-560z" />
-    <glyph glyph-name="file1" unicode="&#xe664;" 
-d="M875 594l-278 281q-6 6 -15 11q-2 2 -4 2q-1 1 -3 2q-14 6 -29 6h-346q-30 0 -51 -21t-21 -51v-880q0 -30 21 -51t51 -21h624q30 0 51 21t21 51v600q0 29 -21 50zM784 584h-200v202zM824 -56h-624v880h312v-240q0 -30 21 -51t51 -21h240v-568z" />
-    <glyph glyph-name="switcher" unicode="&#xe913;" 
-d="M572 292h-376q-15 0 -25.5 -10.5t-10.5 -25.5t10.5 -25.5t25.5 -10.5h376q15 0 25.5 10.5t10.5 25.5t-10.5 25.5t-25.5 10.5zM696 568v-624h-624v624h624zM696 640h-624q-30 0 -51 -21t-21 -51v-624q0 -30 21 -51t51 -21h624q30 0 51 21t21 51v624q0 30 -21 51t-51 21z
-M952 896h-592q-15 0 -25.5 -10.5t-10.5 -25.5t10.5 -25.5t25.5 -10.5h592v-596q0 -15 10.5 -25.5t25.5 -10.5t25.5 10.5t10.5 25.5v596q0 30 -21 51t-51 21zM824 768h-660q-15 0 -25.5 -10.5t-10.5 -25.5t10.5 -25.5t25.5 -10.5h660v-660q0 -15 10.5 -25.5t25.5 -10.5
-t25.5 10.5t10.5 25.5v660q0 30 -21 51t-51 21z" />
-    <glyph glyph-name="addfolder" unicode="&#xe914;" 
-d="M988 256h-156v156q0 15 -10.5 25.5t-25.5 10.5t-25.5 -10.5t-10.5 -25.5v-156h-148q-15 0 -25.5 -10.5t-10.5 -25.5t10.5 -25.5t25.5 -10.5h148v-148q0 -15 10.5 -25.5t25.5 -10.5t25.5 10.5t10.5 25.5v148h156q15 0 25.5 10.5t10.5 25.5t-10.5 25.5t-25.5 10.5zM952 704
-h-463l-25 78q-7 22 -26 36t-43 14h-323q-30 0 -51 -21t-21 -51v-688q0 -30 21 -51t51 -21h468q15 0 25.5 10.5t10.5 25.5t-10.5 25.5t-25.5 10.5h-468v560h880v-148q0 -15 10.5 -25.5t25.5 -10.5t25.5 10.5t10.5 25.5v148q0 30 -21 51t-51 21zM72 704v56h323l18 -56h-341z
-" />
-    <glyph glyph-name="folderopen" unicode="&#xe699;" 
-d="M960 512v120q0 30 -21 51t-51 21h-399l-25 78q-7 22 -26 36t-43 14h-323q-30 0 -51 -21t-21 -51v-688q0 -5 1 -11v0v-2v-1l0.5 -0.5l0.5 -0.5v-1v-1.5t0.5 -1l0.5 -0.5v-1q0 -2 1 -3v0q5 -17 18 -29v0q1 0 1.5 -0.5l1 -1t0.5 -1.5q1 0 1 -0.5t0.5 -0.5t1 -0.5t1.5 -0.5
-v-0.5v-0.5q1 0 1.5 -0.5l1.5 -1.5v0q15 -10 32 -11l1 -1h3h1h1h2h788q25 0 44.5 15.5t25.5 39.5l92 368q8 31 -11 58t-51 31zM72 760h323l41 -128h452v-120h-724q-25 0 -44.5 -15t-25.5 -39l-22 -89v391zM860 72h-788l92 368h788z" />
-    <glyph glyph-name="search1" unicode="&#xe670;" 
-d="M950 -2l-206 205q88 107 88 245q0 159 -112.5 271.5t-271.5 112.5t-271.5 -112.5t-112.5 -271.5t112.5 -271.5t271.5 -112.5q138 0 245 88l206 -206q10 -10 25 -10t26 10q10 11 10 26t-10 26zM569 160q-57 -24 -121 -24t-121 24q-56 24 -99.5 67.5t-66.5 99.5
-q-25 57 -25 121t25 121q23 56 66.5 99.5t99.5 67.5q57 24 121 24t121 -24q56 -24 99.5 -67.5t67.5 -99.5q24 -57 24 -121t-24 -121q-24 -56 -67.5 -99.5t-99.5 -67.5z" />
-    <glyph glyph-name="ellipsis1" unicode="&#xe647;" 
-d="M128 384q0 -27 18.5 -45.5t45.5 -18.5t45.5 18.5t18.5 45.5t-18.5 45.5t-45.5 18.5t-45.5 -18.5t-18.5 -45.5zM448 384q0 -27 18.5 -45.5t45.5 -18.5t45.5 18.5t18.5 45.5t-18.5 45.5t-45.5 18.5t-45.5 -18.5t-18.5 -45.5zM768 384q0 -27 18.5 -45.5t45.5 -18.5
-t45.5 18.5t18.5 45.5t-18.5 45.5t-45.5 18.5t-45.5 -18.5t-18.5 -45.5z" />
-    <glyph glyph-name="calendar" unicode="&#xe6bb;" 
-d="M888 768h-120v28q0 15 -10.5 25.5t-25.5 10.5t-25.5 -10.5t-10.5 -25.5v-28h-368v28q0 15 -10.5 25.5t-25.5 10.5t-25.5 -10.5t-10.5 -25.5v-28h-120q-30 0 -51 -21t-21 -51v-688q0 -30 21 -51t51 -21h752q30 0 51 21t21 51v688q0 30 -21 51t-51 21zM136 696h120v-20
-q0 -15 10.5 -25.5t25.5 -10.5t25.5 10.5t10.5 25.5v20h368v-20q0 -15 10.5 -25.5t25.5 -10.5t25.5 10.5t10.5 25.5v20h120v-112h-752v112zM888 8h-752v504h752v-504zM288 384h64q13 0 22.5 -9.5t9.5 -22.5t-9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5t9.5 22.5
-t22.5 9.5zM480 384h64q13 0 22.5 -9.5t9.5 -22.5t-9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5t9.5 22.5t22.5 9.5zM672 384h64q13 0 22.5 -9.5t9.5 -22.5t-9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5t9.5 22.5t22.5 9.5zM288 190h64q13 0 22.5 -9.5
-t9.5 -22.5t-9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5t9.5 22.5t22.5 9.5zM480 190h64q13 0 22.5 -9.5t9.5 -22.5t-9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5t9.5 22.5t22.5 9.5z" />
-    <glyph glyph-name="filetext1" unicode="&#xe698;" 
-d="M875 594l-278 281q-7 6 -15 11q-3 2 -4 2q-1 1 -3 2q-14 6 -29 6h-345q-30 0 -51.5 -21t-21.5 -51v-880q0 -30 21.5 -51t51.5 -21h623q30 0 50.5 21t20.5 51v600q0 30 -20 50zM583 786l201 -202h-201v202zM823 -56h-623v880h311v-240q0 -30 21.5 -51t51.5 -21h239v-568z
-M584 412q0 15 -10.5 25.5t-25.5 10.5h-256q-15 0 -25.5 -10.5t-10.5 -25.5t10.5 -25.5t25.5 -10.5h256q15 0 25.5 10.5t10.5 25.5zM776 252q0 15 -10.5 25.5t-25.5 10.5h-448q-15 0 -25.5 -10.5t-10.5 -25.5t10.5 -25.5t25.5 -10.5h448q15 0 25.5 10.5t10.5 25.5zM648 92
-q0 15 -10.5 25.5t-25.5 10.5h-320q-15 0 -25.5 -10.5t-10.5 -25.5t10.5 -25.5t25.5 -10.5h320q15 0 25.5 10.5t10.5 25.5z" />
-    <glyph glyph-name="copy1" unicode="&#xe648;" 
-d="M875 658l-214 217q-7 6 -15 11q-3 2 -4 2q-1 1 -3 2q-14 6 -29 6h-281q-30 0 -51.5 -21t-21.5 -51v-56h-56q-29 0 -50.5 -21.5t-21.5 -50.5v-752q0 -30 21.5 -51t50.5 -21h496q29 0 50 21t21 51v56h57q30 0 50.5 21t20.5 51v536q0 30 -20 50zM647 786l137 -138h-137v138z
-M695 -56h-495v752h56v-624q0 -30 21.5 -51t51.5 -21h366v-56zM823 72h-495v752h247v-176q0 -30 21.5 -51t51.5 -21h175v-504zM640 476q0 15 -10.5 25.5t-25.5 10.5h-184q-15 0 -25.5 -10.5t-10.5 -25.5t10.5 -25.5t25.5 -10.5h184q15 0 25.5 10.5t10.5 25.5zM768 348
-q0 15 -10.5 25.5t-25.5 10.5h-312q-15 0 -25.5 -10.5t-10.5 -25.5t10.5 -25.5t25.5 -10.5h312q15 0 25.5 10.5t10.5 25.5zM704 220q0 15 -10.5 25.5t-25.5 10.5h-248q-15 0 -25.5 -10.5t-10.5 -25.5t10.5 -25.5t25.5 -10.5h248q15 0 25.5 10.5t10.5 25.5z" />
-    <glyph glyph-name="jpgfile1" unicode="&#xe69c;" 
-d="M875 594l-278 281q-7 6 -15 11q-3 2 -4 2q-1 1 -3 2q-14 6 -29 6h-345q-30 0 -51.5 -21t-21.5 -51v-880q0 -30 21.5 -51t51.5 -21h623q30 0 50.5 21t20.5 51v600q0 30 -20 50zM583 786l201 -202h-201v202zM823 -56h-623v880h311v-240q0 -30 21.5 -51t51.5 -21h239v-568z
-M350 200q0 -18 -5.5 -25t-16.5 -7q-15 0 -25 19l-30 -23q20 -34 61 -34q30 0 45.5 18.5t15.5 47.5v123h-45v-119zM501 319h-64v-186h44v62h22q31 0 52 16t21 48q0 60 -75 60zM500 230h-19v53h18q34 0 34 -25q0 -28 -33 -28zM683 239v-36h30v-30q-6 -5 -18 -5q-50 0 -50 58
-q0 27 13 42.5t34 15.5q18 0 34 -15l23 29q-24 24 -59 24q-39 0 -65 -26t-26 -71q0 -46 25.5 -70.5t66.5 -24.5q39 0 61 22v87h-69z" />
-    <glyph glyph-name="pdffile1" unicode="&#xe6b3;" 
-d="M875 594l-278 281q-7 6 -15 11q-3 2 -4 2q-1 1 -3 2q-14 6 -29 6h-345q-30 0 -51.5 -21t-21.5 -51v-880q0 -30 21.5 -51t51.5 -21h623q30 0 50.5 21t20.5 51v600q0 30 -20 50zM583 786l201 -202h-201v202zM823 -56h-623v880h311v-240q0 -30 21.5 -51t51.5 -21h239v-568z
-M333 320h-67v-192h46v64h22q33 0 54.5 16.5t21.5 49.5q0 62 -77 62zM332 228h-20v56h18q35 0 35 -26q0 -30 -33 -30zM498 320h-56v-192h58q44 0 69 24.5t25 72.5t-25.5 71.5t-70.5 23.5zM495 165h-6v118h6q25 0 38.5 -13t13.5 -45q0 -60 -52 -60zM752 282v38h-122v-192h46
-v73h65v38h-65v43h76z" />
-    <glyph glyph-name="exclefile1" unicode="&#xe6b0;" 
-d="M875 594l-278 281q-7 6 -15 11q-3 2 -4 2q-1 1 -3 2q-14 6 -29 6h-345q-30 0 -51.5 -21t-21.5 -51v-880q0 -30 21.5 -51t51.5 -21h623q30 0 50.5 21t20.5 51v600q0 30 -20 50zM583 786l201 -202h-201v202zM823 -56h-623v880h311v-240q0 -30 21.5 -51t51.5 -21h239v-568z
-M460 229l-56 155h86l16 -57q5 -18 14 -53h2q15 29 30 53l33 57h82l-111 -159l60 -162h-86l-19 63q-4 14 -14 54h-2q-14 -25 -31 -54l-39 -63h-82z" />
-    <glyph glyph-name="pptfile1" unicode="&#xe6b1;" 
-d="M875 594l-278 281q-7 6 -15 11q-3 2 -4 2q-1 1 -3 2q-14 6 -29 6h-345q-30 0 -51.5 -21t-21.5 -51v-880q0 -30 21.5 -51t51.5 -21h623q30 0 50.5 21t20.5 51v600q0 30 -20 50zM583 786l201 -202h-201v202zM823 -56h-623v880h311v-240q0 -30 21.5 -51t51.5 -21h239v-568z
-M538 390h-112l-57 -334h77l19 119h37q55 0 96 28t51 82q10 56 -21 80.5t-90 24.5zM574 285q-9 -49 -65 -49h-33l16 93h32q29 0 41.5 -10t8.5 -34z" />
-    <glyph glyph-name="unknowfile1" unicode="&#xe6af;" 
-d="M875 594l-278 281q-7 6 -15 11q-3 2 -4 2q-1 1 -3 2q-14 6 -29 6h-345q-30 0 -51.5 -21t-21.5 -51v-880q0 -30 21.5 -51t51.5 -21h623q30 0 50.5 21t20.5 51v600q0 30 -20 50zM583 786l201 -202h-201v202zM823 -56h-623v880h311v-240q0 -30 21.5 -51t51.5 -21h239v-568z
-M510 329q0 18 -11 28t-29 10q-28 0 -58 -29l-55 51q52 59 125 59q56 0 90.5 -28t34.5 -84q0 -21 -10 -40.5t-24 -34t-27.5 -29t-22 -33t-5.5 -39.5h-88q-5 30 6.5 57t28.5 43.5t31 35.5t14 33zM432 62q0 19 12 31t29.5 12t29.5 -12.5t12 -30.5t-12 -30.5t-29.5 -12.5
-t-29.5 12.5t-12 30.5z" />
-    <glyph glyph-name="wordfile1" unicode="&#xe6b2;" 
-d="M875 594l-278 281q-7 6 -15 11q-3 2 -4 2q-1 1 -3 2q-14 6 -29 6h-345q-30 0 -51.5 -21t-21.5 -51v-880q0 -30 21.5 -51t51.5 -21h623q30 0 50.5 21t20.5 51v600q0 30 -20 50zM583 786l201 -202h-201v202zM823 -56h-623v880h311v-240q0 -30 21.5 -51t51.5 -21h239v-568z
-M559 142q-1 14 -1 46v48l-7 136h-60l-55 -136q-21 -57 -34 -94h-2l5 94l5 136h-73l2 -298h88l49 130q3 8 24 70h2q-2 -35 -1 -70l4 -130h90l104 298h-68l-43 -136q-3 -11 -12.5 -43t-15.5 -51h-1z" />
-    <glyph glyph-name="dingding" unicode="&#xe923;" 
-d="M913 513q-3 -11 -12 -31v0l-1 -2q-16 -34 -48.5 -90.5t-56.5 -96.5l-24 -40q0 1 -1 1l-27 -47h131l-251 -335l57 228h-103l36 150q-46 -11 -104 -30q-3 -1 -7 -2.5t-19 -2t-32 4t-44.5 20.5t-56.5 42l-5 5l-11.5 11.5t-13.5 17t-9.5 17.5t-2 16t12.5 11q14 5 136 22
-l114 14q-218 -3 -270 5q-38 6 -79 59.5t-52 110.5l-3 15q2 21 49 7q31 -8 118 -27.5t160 -34.5l72 -14q-5 1 -13 3.5t-33 10.5l-50 16t-58.5 19t-63 21t-60.5 21t-53.5 20t-39 16.5t-20.5 11.5q-21 24 -45 99t-20 126q0 2 1 5t6.5 7t14.5 2q271 -124 456 -192
-q30 -11 76 -26.5t73.5 -25t62 -23t53.5 -25t36.5 -25.5t22.5 -30t1 -35z" />
-    <glyph glyph-name="dingding-o" unicode="&#xe925;" 
-d="M512 896q-139 0 -257 -68.5t-186.5 -186.5t-68.5 -257t68.5 -257t186.5 -186.5t257 -68.5t257 68.5t186.5 186.5t68.5 257t-68.5 257t-186.5 186.5t-257 68.5zM749 415q-1 -6 -7 -19v0v0q-6 -13 -16.5 -32t-20.5 -36.5t-19.5 -33t-15.5 -25.5l-6 -10v1l-17 -28h79
-l-151 -201l35 136h-62l21 90q-28 -6 -63 -17q-3 -3 -10.5 -4.5t-32 7.5t-52.5 34l-3 3l-7 7t-8 9.5t-5.5 10t-1 10t7.5 6.5q8 3 81 13l69 9q-131 -2 -162 3q-23 4 -47.5 36t-31.5 66l-2 10q3 11 30 3q18 -5 70.5 -16.5t96 -20.5l43.5 -9q-220 68 -235 84q-12 15 -26.5 59.5
-t-12.5 75.5q0 1 0.5 3t4 4.5t8.5 0.5q163 -74 274 -115q19 -7 46.5 -16t43.5 -15t37 -14t32.5 -15t21.5 -15.5t13.5 -18t0.5 -20.5z" />
-    <glyph glyph-name="mobile1" unicode="&#xe678;" 
-d="M760 896h-496q-30 0 -51 -21t-21 -51v-880q0 -30 21 -51t51 -21h496q30 0 51 21t21 51v880q0 30 -21 51t-51 21zM542 -64h-60q-15 0 -24.5 9.5t-9.5 22.5t9.5 22.5t24.5 9.5h60q15 0 24.5 -9.5t9.5 -22.5t-9.5 -22.5t-24.5 -9.5zM760 65h-496v704h496v-704z" />
-    <glyph glyph-name="tablet1" unicode="&#xe66e;" 
-d="M824 896h-624q-30 0 -51 -21t-21 -51v-880q0 -30 21 -51t51 -21h624q30 0 51 21t21 51v880q0 30 -21 51t-51 21zM542 -64h-60q-15 0 -24.5 9.5t-9.5 22.5t9.5 22.5t24.5 9.5h60q15 0 24.5 -9.5t9.5 -22.5t-9.5 -22.5t-24.5 -9.5zM824 65h-624v759h624v-759z" />
-    <glyph glyph-name="bells" unicode="&#xe64e;" 
-d="M860 64h-28v448q0 123 -82 214t-202 104v30q0 15 -10.5 25.5t-25.5 10.5t-25.5 -10.5t-10.5 -25.5v-30q-120 -13 -202 -104t-82 -214v-448h-28q-15 0 -25.5 -10.5t-10.5 -25.5t10.5 -25.5t25.5 -10.5h276v-48q0 -30 21 -51t51 -21t51 21t21 51v48h276q15 0 25.5 10.5
-t10.5 25.5t-10.5 25.5t-25.5 10.5zM760 64h-496v448q0 103 72.5 175.5t175.5 72.5t175.5 -72.5t72.5 -175.5v-448z" />
-    <glyph glyph-name="disconnect" unicode="&#xe64f;" 
-d="M900 772q-60 60 -144.5 60t-143.5 -60l-180 -180q-11 -10 -11 -25t11 -26t26 -11t25 11l180 180q38 38 92.5 38t93 -38.5t38.5 -93t-38 -92.5l-180 -180q-10 -11 -10 -25.5t10.5 -25t25.5 -10.5t25 10l180 180q60 59 60 143.5t-60 144.5zM377 615q15 0 25.5 10.5
-t10.5 25.5v145q0 15 -10.5 25.5t-25.5 10.5t-26 -10.5t-11 -25.5v-145q1 -15 11 -26q11 -10 26 -10zM809 139q-11 11 -25 10q-16 0 -26.5 -10.5t-10.5 -25.5t11 -25l102 -103q11 -10 26 -10t25.5 10.5t10.5 25.5t-10 25zM924 285h-145q-16 0 -26 -11q-11 -11 -11 -25.5
-t11 -25t26 -10.5h144q15 0 26 10.5t11 25.5t-10.5 25.5t-25.5 10.5zM648 153q-15 0 -25.5 -10.5t-10.5 -25.5v-145q0 -15 10.5 -25.5t25.5 -10.5t25.5 10.5t10.5 25.5v145q0 15 -11 25q-10 11 -25 11zM541 227l-180 -180q-38 -39 -92.5 -39t-93.5 39q-38 39 -38 93t38 93
-l180 180q10 10 10 25t-10.5 25.5t-25.5 10.5t-25 -10l-180 -180q-60 -60 -60 -144q0 -85 60 -144q60 -60 144 -60q85 0 144 60l180 180q11 10 11 25t-11 25.5t-26 10.5t-25 -10zM215 629q11 -11 26 -11t25.5 10.5t10.5 25.5t-11 26l-102 102q-11 11 -26 11t-25.5 -10.5
-t-10.5 -25.5t11 -26zM101 483h145q15 0 25 11q11 10 11 25t-10.5 25.5t-25.5 10.5h-145q-15 0 -25.5 -10.5t-10.5 -25.5q-1 -15 10 -25.5t26 -10.5z" />
-    <glyph glyph-name="database" unicode="&#xe650;" 
-d="M824 896h-624q-30 0 -51 -21t-21 -51v-880q0 -30 21 -51t51 -21h624q30 0 51 21t21 51v880q0 30 -21 51t-51 21zM824 -47h-624v244q0 -1 1 -1h622q1 0 1 1v-244zM824 267q0 1 -1 1h-622q-1 0 -1 -1v244q0 -1 1 -1h622q1 0 1 1v-244zM824 581q0 1 -1 1h-622q-1 0 -1 -1
-v243h624v-243zM321 75zM285 75q0 -15 10.5 -25.5t25.5 -10.5t25.5 10.5t10.5 25.5t-10.5 25.5t-25.5 10.5t-25.5 -10.5t-10.5 -25.5zM321 389zM285 389q0 -15 10.5 -25.5t25.5 -10.5t25.5 10.5t10.5 25.5t-10.5 25.5t-25.5 10.5t-25.5 -10.5t-10.5 -25.5zM321 703zM285 703
-q0 -15 10.5 -25.5t25.5 -10.5t25.5 10.5t10.5 25.5t-10.5 25.5t-25.5 10.5t-25.5 -10.5t-10.5 -25.5z" />
-    <glyph glyph-name="barcode" unicode="&#xe652;" 
-d="M706 128h70q1 0 1 1v638q0 1 -1 1h-70q-1 0 -1 -1v-638q0 -1 1 -1zM534 72h-70q-1 0 -1 -1v-70q0 -1 1 -1h70q1 0 1 1v70q0 1 -1 1zM640 72h-70q-1 0 -1 -1v-70q0 -1 1 -1h70q1 0 1 1v70q0 1 -1 1zM428 72h-214q-1 0 -1 -1v-70q0 -1 1 -1h214q1 0 1 1v70q0 1 -1 1z
-M670 768h-34q-1 0 -1 -1v-638q0 -1 1 -1h34q1 0 1 1v638q0 1 -1 1zM213 767q0 1 -1 1h-34q-1 0 -1 -1v-638q0 -1 1 -1h34q1 0 1 1v638zM1023 768h-70q-1 0 -1 -1v-766q0 -1 1 -1h70q1 0 1 1v766q0 1 -1 1zM916 72h-240q-1 0 -1 -1v-70q0 -1 1 -1h240q1 0 1 1v70q0 1 -1 1z
-M916 768h-34q-1 0 -1 -1v-638q0 -1 1 -1h34q1 0 1 1v638q0 1 -1 1zM108 128h34q1 0 1 1v638q0 1 -1 1h-34q-1 0 -1 -1v-638q0 -1 1 -1zM354 128h34q1 0 1 1v638q0 1 -1 1h-34q-1 0 -1 -1v-638q0 -1 1 -1zM424 128h70q1 0 1 1v638q0 1 -1 1h-70q-1 0 -1 -1v-638q0 -1 1 -1z
-M530 128h70q1 0 1 1v638q0 1 -1 1h-70q-1 0 -1 -1v-638q0 -1 1 -1zM812 128h34q1 0 1 1v638q0 1 -1 1h-34q-1 0 -1 -1v-638q0 -1 1 -1zM71 768h-70q-1 0 -1 -1v-766q0 -1 1 -1h70q1 0 1 1v766q0 1 -1 1zM178 72h-70q-1 0 -1 -1v-70q0 -1 1 -1h70q1 0 1 1v70q0 1 -1 1z
-M248 128h70q1 0 1 1v638q0 1 -1 1h-70q-1 0 -1 -1v-638q0 -1 1 -1z" />
-    <glyph glyph-name="hourglass" unicode="&#xe653;" 
-d="M860 8h-92v219l-192 157l192 157v219h92q15 0 25.5 10.5t10.5 25.5t-10.5 25.5t-25.5 10.5h-696q-15 0 -25.5 -10.5t-10.5 -25.5t10.5 -25.5t25.5 -10.5h92v-219l192 -157l-192 -157v-219h-92q-15 0 -25.5 -10.5t-10.5 -25.5t10.5 -25.5t25.5 -10.5h696q15 0 25.5 10.5
-t10.5 25.5t-10.5 25.5t-25.5 10.5zM328 581v179h368v-179l-182 -147l-2 2l-2 -2zM696 8h-368v179l184 149l184 -149v-179z" />
-    <glyph glyph-name="key" unicode="&#xe654;" 
-d="M876 427q-77 78 -186.5 84t-193.5 -60l-369 369q-11 11 -26 11t-25.5 -10.5t-10.5 -25.5t11 -25l369 -370q-66 -84 -60 -193.5t84 -186.5q84 -84 203.5 -84t204 84t84 203.5t-84.5 203.5zM825 71q-63 -63 -152.5 -63t-153 63t-63.5 152.5t63.5 153t153 63.5t152.5 -63.5
-t63 -153t-63 -152.5zM353 596l76 76q11 10 11 25t-10.5 25.5t-25.5 10.5t-26 -10l-76 -77zM333 768q11 11 11 25.5t-10.5 25t-25.5 10.5t-26 -10l-76 -77l51 -50z" />
-    <glyph glyph-name="flag" unicode="&#xe655;" 
-d="M888 640h-176v56q0 30 -21 51t-51 21h-360q-3 27 -23.5 45.5t-48.5 18.5h-72q-30 0 -51 -21t-21 -51v-752q0 -30 21 -51t51 -21h72q30 0 51 21t21 51v256h360v-56q0 -30 21 -51t51 -21h176q30 0 51 21t21 51v360q0 30 -21 51t-51 21zM208 8h-72v752h72v-752zM640 336
-h-360v360h360v-360zM888 208h-176v360h176v-360z" />
-    <glyph glyph-name="layout" unicode="&#xe656;" 
-d="M136 624zM100 624q0 -15 10.5 -25.5t25.5 -10.5t25.5 10.5t10.5 25.5t-10.5 25.5t-25.5 10.5t-25.5 -10.5t-10.5 -25.5zM952 768h-880q-30 0 -51 -21t-21 -51v-624q0 -30 21 -51t51 -21h880q30 0 51 21t21 51v624q0 30 -21 51t-51 21zM256 72h-184v408h184v-408zM952 72
-h-624v169q0 -1 1 -1h622q1 0 1 1v-169zM952 311q0 1 -1 1h-622q-1 0 -1 -1v169h624v-169zM952 552h-880v144h880v-144zM240 624zM204 624q0 -15 10.5 -25.5t25.5 -10.5t25.5 10.5t10.5 25.5t-10.5 25.5t-25.5 10.5t-25.5 -10.5t-10.5 -25.5zM344 624zM308 624
-q0 -15 10.5 -25.5t25.5 -10.5t25.5 10.5t10.5 25.5t-10.5 25.5t-25.5 10.5t-25.5 -10.5t-10.5 -25.5z" />
-    <glyph glyph-name="printer" unicode="&#xe673;" 
-d="M392 144h240v-72h-240v72zM392 312h240v-72h-240v72zM888 648h-120v112q0 30 -21 51t-51 21h-368q-30 0 -51 -21t-21 -51v-112h-120q-30 0 -51 -21t-21 -51v-304q0 -30 21 -51t51 -21h120v-192q0 -30 21 -51t51 -21h368q30 0 51 21t21 51v192h120q30 0 51 21t21 51v304
-q0 30 -21 51t-51 21zM328 759q0 1 1 1h366q1 0 1 -1v-110q0 -1 -1 -1h-366q-1 0 -1 1v110zM696 8h-368v368h368v-368zM888 272h-120v104q0 30 -21 51t-51 21h-368q-30 0 -51 -21t-21 -51v-104h-120v304h752v-304zM820 508zM784 508q0 -15 10.5 -25.5t25.5 -10.5t25.5 10.5
-t10.5 25.5t-10.5 25.5t-25.5 10.5t-25.5 -10.5t-10.5 -25.5z" />
-    <glyph glyph-name="USB" unicode="&#xe6d7;" 
-d="M768 704v-192h56v-138h-276v330h60l-96 128l-96 -128h60v-440h-276v129q37 17 50 55q6 16 6 32q0 40 -28 68t-68 28t-68 -28t-28 -68q0 -31 18 -56t46 -34v-126q0 -30 21 -51t51 -21h276v-71q-27 -11 -43.5 -35t-16.5 -54q0 -40 28 -68t68 -28t68 28t28 68q0 30 -16.5 54
-t-43.5 35v181h276q30 0 51 21t21 51v138h64v192h-192zM160 456q-10 0 -17 7t-7 17t7 17t17 7t17 -7t7 -17t-7 -17t-17 -7zM888 584h-48v48h48v-48z" />
-    <glyph glyph-name="skin" unicode="&#xe6d8;" 
-d="M888 832h-259q-2 -5 -3 -11q-13 -36 -44 -58.5t-70 -22.5t-70 22.5t-44 58.5q-1 6 -3 11h-259q-30 0 -51 -21t-21 -51v-368q0 -30 21 -51t51 -21h56v-312q0 -30 21 -51t51 -21h496q30 0 51 21t21 51v312h56q30 0 51 21t21 51v368q0 30 -21 51t-51 21zM888 392h-129
-q1 0 1 -1v-382q0 -1 -1 -1h-494q-1 0 -1 1v382q0 1 1 1h-129v368h210q26 -43 70 -69t96 -26t96 26t70 69h210v-368z" />
-    <glyph glyph-name="tool" unicode="&#xe6d9;" 
-d="M925 731l-167 -166l-68 67l166 166q-63 40 -139.5 32t-130.5 -63q-43 -42 -57.5 -99.5t0.5 -111.5l-189 -189q-54 15 -111.5 0.5t-99.5 -57.5q-55 -54 -63 -130.5t32 -139.5l166 166l67 -68l-166 -166q63 -42 140.5 -34t132.5 63q43 42 57.5 99.5t-0.5 111.5l189 189
-q54 -16 111.5 -1t99.5 57q56 56 63.5 133.5t-33.5 140.5zM395 44q-47 -47 -114 -45l95 95q18 18 18 43t-18 43l-68 68q-18 18 -43.5 18t-43.5 -18l-95 -95q-1 67 46 114q37 37 88 44.5t96 -15.5q21 -12 39 -29q17 -17 28 -39q24 -44 16.5 -95.5t-44.5 -88.5zM468 273
-q-13 21 -30 37q-17 18 -37 30l155 155q13 -21 30 -37q17 -18 37 -30zM852 501q-37 -37 -88 -44.5t-96 15.5q-21 12 -39 29q-17 17 -28 39q-24 44 -16.5 95.5t44.5 87.5q47 47 114 46l-95 -95q-18 -18 -18 -43.5t18 -43.5l68 -67q18 -18 43.5 -18t43.5 18l95 95
-q1 -67 -46 -114z" />
-    <glyph glyph-name="car" unicode="&#xe6dc;" 
-d="M952 448h8l-50 242q-5 29 -30.5 49.5t-55.5 20.5h-624q-30 0 -55 -20.5t-31 -49.5l-50 -242h8q-30 0 -51 -21t-21 -51v-176q0 -28 18.5 -48.5t45.5 -23.5v0q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5h384q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5v0
-q27 3 45.5 23.5t18.5 48.5v176q0 30 -21 51t-51 21zM182 688h656l50 -240h-752zM952 200h-64v-72q0 -23 -16.5 -39.5t-39.5 -16.5t-39.5 16.5t-16.5 39.5v72h-528v-72q0 -23 -16.5 -39.5t-39.5 -16.5t-39.5 16.5t-16.5 39.5v72h-64v176h880v-176zM192 288zM156 288
-q0 -15 10.5 -25.5t25.5 -10.5t25.5 10.5t10.5 25.5t-10.5 25.5t-25.5 10.5t-25.5 -10.5t-10.5 -25.5zM832 288zM796 288q0 -15 10.5 -25.5t25.5 -10.5t25.5 10.5t10.5 25.5t-10.5 25.5t-25.5 10.5t-25.5 -10.5t-10.5 -25.5z" />
-    <glyph glyph-name="addusergroup" unicode="&#xe6dd;" 
-d="M420 470q-5 24 -5 48q0 13 1 25q-38 5 -63.5 34.5t-25.5 68.5q0 43 30.5 73.5t73.5 30.5q28 0 52 -14t37 -37q33 18 69 24q-22 45 -64.5 72t-93.5 27q-73 0 -124.5 -51.5t-51.5 -124.5q0 -70 48 -121t117 -55zM777 307q-73 35 -154 35q-146 0 -249 -103t-103 -249
-q0 -15 10.5 -25.5t25.5 -10.5t25.5 10.5t10.5 25.5q0 116 82 198t198 82q28 0 56 -6q44 33 98 43zM909 142h-88v88q0 15 -10.5 25.5t-25.5 10.5t-25.5 -10.5t-10.5 -25.5v-88h-88q-15 0 -25.5 -10.5t-10.5 -25.5t10.5 -25.5t25.5 -10.5h88v-88q0 -15 10.5 -25.5t25.5 -10.5
-t25.5 10.5t10.5 25.5v88h88q15 0 25.5 10.5t10.5 25.5t-10.5 25.5t-25.5 10.5zM799 518q0 73 -51.5 124.5t-124.5 51.5t-124.5 -51.5t-51.5 -124.5t51.5 -124.5t124.5 -51.5t124.5 51.5t51.5 124.5zM623 414q-43 0 -73.5 30.5t-30.5 73.5t30.5 73.5t73.5 30.5t73.5 -30.5
-t30.5 -73.5t-30.5 -73.5t-73.5 -30.5zM454 397q-24 33 -33 73q-94 -3 -172.5 -50.5t-124 -127.5t-45.5 -174q0 -15 10.5 -25.5t25.5 -10.5t25.5 10.5t10.5 25.5q0 116 82 198t198 82q11 0 23 -1z" />
-    <glyph glyph-name="carryout" unicode="&#xe6df;" 
-d="M162 312h380q14 0 24 10t10 24v4q0 14 -10 24t-24 10h-380q-14 0 -24 -10t-10 -24v-4q0 -14 10 -24t24 -10zM537.5 265.5q-10.5 -10.5 -10.5 -25.5t11 -25l84 -85l1 -1l1 -1l4 -3q10 -10 23.5 -10t23.5 10l224 224q10 10 10 24t-10 23l-3 4q-10 10 -24 10t-24 -10
-l-197 -197l-63 63q-10 10 -25 10t-25.5 -10.5zM952 704h-84v28q0 15 -10.5 25.5t-25.5 10.5t-25.5 -10.5t-10.5 -25.5v-28h-248v28q0 15 -10.5 25.5t-25.5 10.5t-25.5 -10.5t-10.5 -25.5v-28h-248v28q0 15 -10.5 25.5t-25.5 10.5t-25.5 -10.5t-10.5 -25.5v-28h-84
-q-30 0 -51 -21t-21 -51v-560q0 -30 21 -51t51 -21h880q30 0 51 21t21 51v560q0 30 -21 51t-51 21zM952 72h-880v376h880v-376zM952 520h-880v112h84v-20q0 -15 10.5 -25.5t25.5 -10.5t25.5 10.5t10.5 25.5v20h248v-20q0 -15 10.5 -25.5t25.5 -10.5t25.5 10.5t10.5 25.5v20
-h248v-20q0 -15 10.5 -25.5t25.5 -10.5t25.5 10.5t10.5 25.5v20h84v-112zM162 188h252q14 0 24 10t10 24v4q0 14 -10 24t-24 10h-252q-14 0 -24 -10t-10 -24v-4q0 -14 10 -24t24 -10z" />
-    <glyph glyph-name="deleteuser" unicode="&#xe6e0;" 
-d="M722 320q-95 63 -210 63q-104 0 -192.5 -51.5t-140 -140t-51.5 -193.5v0v-1v-1q0 -15 10.5 -25.5t25.5 -10.5t25.5 10.5t10.5 25.5v2v0q0 130 91.5 221.5t220.5 91.5q58 0 111 -21q46 27 99 30zM787 96l62 62q11 11 11 26t-10.5 25.5t-25.5 10.5t-26 -10l-62 -63l-62 63
-q-11 10 -26 10t-25.5 -10.5t-10.5 -25.5t11 -26l62 -62l-62 -62q-11 -10 -11 -25t10.5 -25.5t25.5 -10.5t26 10l62 62l62 -62q11 -10 26 -10t25.5 10.5t10.5 25.5t-11 25zM736 607.5q0 92.5 -65.5 158.5t-158.5 66t-158.5 -66t-65.5 -158.5t65.5 -158.5t158.5 -66t158.5 66
-t65.5 158.5zM512 455q-63 0 -107.5 44.5t-44.5 108t44.5 108t107.5 44.5t107.5 -44.5t44.5 -108t-44.5 -108t-107.5 -44.5z" />
-    <glyph glyph-name="deleteusergroup" unicode="&#xe6e1;" 
-d="M420 470q-5 24 -5 48q0 13 1 25q-38 5 -63.5 34.5t-25.5 68.5q0 43 30.5 73.5t73.5 30.5q28 0 52 -14t37 -37q33 18 69 24q-22 45 -64.5 72t-93.5 27q-73 0 -124.5 -51.5t-51.5 -124.5q0 -70 48 -121t117 -55zM898 44l-62 62l62 62q11 11 11 26t-10.5 25.5t-25.5 10.5
-t-26 -11l-62 -62l-62 62q-11 11 -26 11t-25.5 -10.5t-10.5 -25.5t11 -26l62 -62l-62 -62q-11 -11 -11 -26t10.5 -25.5t25.5 -10.5t26 11l62 62l62 -62q11 -11 26 -11t25.5 10.5t10.5 25.5t-11 26zM777 307q-73 35 -154 35q73 0 124.5 51.5t51.5 124.5t-51.5 124.5
-t-124.5 51.5t-124.5 -51.5t-51.5 -124.5t51.5 -124.5t124.5 -51.5q-146 0 -249 -103t-103 -249q0 -15 10.5 -25.5t25.5 -10.5t25.5 10.5t10.5 25.5q0 116 82 198t198 82q28 0 56 -6q44 33 98 43zM519 518q0 43 30.5 73.5t73.5 30.5t73.5 -30.5t30.5 -73.5t-30.5 -73.5
-t-73.5 -30.5t-73.5 30.5t-30.5 73.5zM454 397q-24 33 -33 73q-94 -3 -172.5 -50.5t-124 -127.5t-45.5 -174q0 -15 10.5 -25.5t25.5 -10.5t25.5 10.5t10.5 25.5q0 116 82 198t198 82q11 0 23 -1z" />
-    <glyph glyph-name="man" unicode="&#xe6e2;" 
-d="M384 576q-133 0 -226.5 -93.5t-93.5 -226.5t93.5 -226.5t226.5 -93.5t226.5 93.5t93.5 226.5t-93.5 226.5t-226.5 93.5zM384 8q-103 0 -175.5 72.5t-72.5 175.5t72.5 175.5t175.5 72.5t175.5 -72.5t72.5 -175.5t-72.5 -175.5t-175.5 -72.5zM949.5 821.5
-q-10.5 10.5 -25.5 10.5h-376q-15 0 -25.5 -10.5t-10.5 -25.5t10.5 -25.5t25.5 -10.5h340v-340q0 -15 10.5 -25.5t25.5 -10.5t25.5 10.5t10.5 25.5v376q0 15 -10.5 25.5z" />
-    <glyph glyph-name="isv" unicode="&#xe6e3;" 
-d="M860 292q-15 0 -25.5 -10.5t-10.5 -25.5v-248h-624v248q0 15 -10.5 25.5t-25.5 10.5t-25.5 -10.5t-10.5 -25.5v-248q0 -30 21 -51t51 -21h624q30 0 51 21t21 51v248q0 15 -10.5 25.5t-25.5 10.5zM888 832h-752q-30 0 -51 -21t-21 -51v-204q0 -71 51 -122t123 -51
-q41 0 77 18t60 50q24 -32 60 -50t77 -18q42 0 77.5 18t60.5 49q24 -31 59.5 -49t76.5 -18q72 0 123 51t51 122v204q0 30 -21 51t-51 21zM339 658v-102q0 -42 -29.5 -71.5t-72 -29.5t-72 29.5t-29.5 71.5v204h203v-102zM512 455q-42 0 -71.5 29.5t-29.5 71.5v204h202v-204
-v-11q-4 -38 -33 -64t-68 -26zM888 556q0 -42 -29.5 -71.5t-72 -29.5t-72 29.5t-29.5 71.5v204h203v-204z" />
-    <glyph glyph-name="gift" unicode="&#xe6e4;" 
-d="M888 576h-248q53 0 90.5 37.5t37.5 90.5t-37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5h-248q-30 0 -51 -21t-21 -51v-112q0 -30 21 -51t51 -21h-8v-312q0 -30 21 -51t51 -21h624
-q30 0 51 21t21 51v312h-8q30 0 51 21t21 51v112q0 30 -21 51t-51 21zM384 648q-23 0 -39.5 16.5t-16.5 39.5t16.5 39.5t39.5 16.5t39.5 -16.5t16.5 -39.5v-56h-56zM476 8h-276v312h276v-312zM476 392h-340v112h340v-112zM584 704q0 23 16.5 39.5t39.5 16.5t39.5 -16.5
-t16.5 -39.5t-16.5 -39.5t-39.5 -16.5h-56v56zM824 8h-276v312h276v-312zM888 392h-340v112h340v-112z" />
-    <glyph glyph-name="idcard" unicode="&#xe6e5;" 
-d="M200 128h176q30 0 51 21t21 51v88q0 41 -19 76t-51 57q38 37 38 91q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5q0 -54 38 -91q-32 -22 -51 -57t-19 -76v-88q0 -30 21 -51t51 -21zM288 568q23 0 39.5 -16.5t16.5 -39.5t-16.5 -39.5t-39.5 -16.5t-39.5 16.5
-t-16.5 39.5t16.5 39.5t39.5 16.5zM200 283v1v4q0 36 26 62t62 26t62 -26t26 -62v-4v-1v-78q0 -5 -5 -5h-166q-5 0 -5 5v78zM952 768h-880q-30 0 -51 -21t-21 -51v-624q0 -30 21 -51t51 -21h880q30 0 51 21t21 51v624q0 30 -21 51t-51 21zM952 72h-880v624h880v-624zM548 348
-h248q15 0 25.5 10.5t10.5 25.5t-10.5 25.5t-25.5 10.5h-248q-15 0 -25.5 -10.5t-10.5 -25.5t10.5 -25.5t25.5 -10.5zM548 184h184q15 0 25.5 10.5t10.5 25.5t-10.5 25.5t-25.5 10.5h-184q-15 0 -25.5 -10.5t-10.5 -25.5t10.5 -25.5t25.5 -10.5zM548 512h312q15 0 25.5 10.5
-t10.5 25.5t-10.5 25.5t-25.5 10.5h-312q-15 0 -25.5 -10.5t-10.5 -25.5t10.5 -25.5t25.5 -10.5z" />
-    <glyph glyph-name="medicinebox" unicode="&#xe6e6;" 
-d="M952 584h-120v112q0 30 -21 51t-51 21h-496q-30 0 -51 -21t-21 -51v-112h-120q-30 0 -51 -21t-21 -51v-440q0 -30 21 -51t51 -21h880q30 0 51 21t21 51v440q0 30 -21 51t-51 21zM264 696h496v-112h-496v112zM952 72h-880v440h880v-440zM388 256h88v-88q0 -15 10.5 -25.5
-t25.5 -10.5t25.5 10.5t10.5 25.5v88h88q15 0 25.5 10.5t10.5 25.5t-10.5 25.5t-25.5 10.5h-88v88q0 15 -10.5 25.5t-25.5 10.5t-25.5 -10.5t-10.5 -25.5v-88h-88q-15 0 -25.5 -10.5t-10.5 -25.5t10.5 -25.5t25.5 -10.5z" />
-    <glyph glyph-name="redenvelopes" unicode="&#xe6e7;" 
-d="M512 457l-59 59q-11 10 -25.5 10t-25 -10.5t-10.5 -25t10 -25.5l67 -67h-115q-14 0 -24 -10t-10 -24v-4q0 -14 10 -24t24 -10h122v-64h-90q-14 0 -24 -10t-10 -24v-4q0 -14 10 -24t24 -10h90v-84q0 -15 10.5 -25.5t25.5 -10.5t25.5 10.5t10.5 25.5v84h90q14 0 24 10
-t10 24v4q0 14 -10 24t-24 10h-90v64h122q14 0 24 10t10 24v4q0 14 -10 24t-24 10h-114l67 68q11 10 11 25t-10.5 25.5t-25.5 10.5t-26 -10zM896 770h-1q-3 26 -23.5 44t-47.5 18h-624q-27 0 -47.5 -18t-23.5 -44h-1h1q-1 -5 -1 -10v-752q0 -30 21 -51t51 -21h624q30 0 51 21
-t21 51v752q0 5 -1 10h1zM715 760l-158 -78q-19 -10 -45 -10t-45 10l-157 78h405zM824 8h-624v725l248 -126q26 -14 64 -14t64 14l248 126v-725z" />
-    <glyph glyph-name="rest" unicode="&#xe6e8;" 
-d="M275 615q15 0 25.5 10.5t10.5 25.5v209q0 15 -10.5 25.5t-25.5 10.5t-25.5 -10.5t-10.5 -25.5v-209q0 -15 10.5 -25.5t25.5 -10.5zM888 471h-120q0 30 -21 51t-51 21h-496q-30 0 -51 -21t-21 -51v-248q0 -5 1 -10q-1 -10 -1 -21q0 -133 93.5 -226.5t226.5 -93.5
-q119 0 208.5 77.5t107.5 193.5h124q30 0 51 21t21 51v184q0 30 -21 51t-51 21zM696 215h-1q1 -12 1 -23q0 -103 -72.5 -175.5t-175.5 -72.5t-175.5 72.5t-72.5 175.5q0 11 1 23h-1v256h496v-256zM888 223h-112v176h112v-176zM613 615q15 0 25.5 10.5t10.5 25.5v209
-q0 15 -10.5 25.5t-25.5 10.5t-25.5 -10.5t-10.5 -25.5v-209q0 -15 10.5 -25.5t25.5 -10.5zM443 615q15 0 25.5 10.5t10.5 25.5v209q0 15 -10.5 25.5t-25.5 10.5t-25.5 -10.5t-10.5 -25.5v-209q0 -15 10.5 -25.5t25.5 -10.5z" />
-    <glyph glyph-name="Safety" unicode="&#xe6ea;" 
-d="M512 832l-384 -128v-384q0 -159 112.5 -271.5t271.5 -112.5t271.5 112.5t112.5 271.5v384zM824 320q0 -129 -91.5 -220.5t-220.5 -91.5t-220.5 91.5t-91.5 220.5v330l312 110l312 -110v-330zM378 421q-10 10 -25 10t-25.5 -10.5t-10.5 -25.5t11 -25l129 -129l2 -3
-q10 -9 24 -9t24 9l224 224q10 10 10 24t-10 24l-3 3q-10 10 -24 10t-24 -10l-197 -197z" />
-    <glyph glyph-name="wallet" unicode="&#xe6eb;" 
-d="M620 384zM584 384q0 -15 10.5 -25.5t25.5 -10.5t25.5 10.5t10.5 25.5t-10.5 25.5t-25.5 10.5t-25.5 -10.5t-10.5 -25.5zM952 768h-880q-30 0 -51 -21t-21 -51v-624q0 -30 21 -51t51 -21h880q30 0 51 21t21 51v624q0 30 -21 51t-51 21zM952 328h-432v112h432v-112z
-M952 512h-432q-30 0 -51 -21t-21 -51v-112q0 -30 21 -51t51 -21h432v-184h-880v624h880v-184z" />
-    <glyph glyph-name="woman" unicode="&#xe6ec;" 
-d="M512 320q119 0 203.5 84.5t84.5 203.5t-84.5 203.5t-203.5 84.5t-203.5 -84.5t-84.5 -203.5t84.5 -203.5t203.5 -84.5zM512 824q89 0 152.5 -63.5t63.5 -152.5t-63.5 -152.5t-152.5 -63.5t-152.5 63.5t-63.5 152.5t63.5 152.5t152.5 63.5zM860 256h-696
-q-15 0 -25.5 -10.5t-10.5 -25.5t10.5 -25.5t25.5 -10.5h312v-276q0 -15 10.5 -25.5t25.5 -10.5t25.5 10.5t10.5 25.5v276h312q15 0 25.5 10.5t10.5 25.5t-10.5 25.5t-25.5 10.5z" />
-    <glyph glyph-name="adduser" unicode="&#xe6ed;" 
-d="M860 132h-88v88q0 15 -10.5 25.5t-25.5 10.5t-25.5 -10.5t-10.5 -25.5v-88h-88q-15 0 -25.5 -10.5t-10.5 -25.5t10.5 -25.5t25.5 -10.5h88v-88q0 -15 10.5 -25.5t25.5 -10.5t25.5 10.5t10.5 25.5v88h88q15 0 25.5 10.5t10.5 25.5t-10.5 25.5t-25.5 10.5zM736 607.5
-q0 92.5 -65.5 158.5t-158.5 66t-158.5 -66t-65.5 -158.5t65.5 -158.5t158.5 -66t158.5 66t65.5 158.5zM512 455q-63 0 -107.5 44.5t-44.5 108t44.5 108t107.5 44.5t107.5 -44.5t44.5 -108t-44.5 -108t-107.5 -44.5zM722 320q-95 63 -210 63q-104 0 -192.5 -51.5t-140 -140
-t-51.5 -193.5v0v-1v-1q0 -15 10.5 -25.5t25.5 -10.5t25.5 10.5t10.5 25.5v2v0q0 130 91.5 221.5t220.5 91.5q58 0 111 -21q46 27 99 30z" />
-    <glyph glyph-name="bank" unicode="&#xe6ee;" 
-d="M940 419l-402 401q-10 11 -25 11t-26 -11l-401 -401q-11 -11 -11 -26t10.5 -25.5t25.5 -10.5t25 11l377 376l376 -376q10 -11 25 -11t25.5 11t10.5 25.5t-10 25.5zM828 292q-15 0 -25.5 -10.5t-10.5 -25.5v-248h-560v248q0 15 -10.5 25.5t-25.5 10.5t-25.5 -10.5
-t-10.5 -25.5v-248q0 -30 21 -51t51 -21h560q30 0 51 21t21 51v248q0 15 -10.5 25.5t-25.5 10.5zM320 358v-4q0 -14 10 -24t24 -10h122v-64h-90q-14 0 -24 -10t-10 -24v-4q0 -14 10 -24t24 -10h90v-84q0 -15 10.5 -25.5t25.5 -10.5t25.5 10.5t10.5 25.5v84h90q14 0 24 10
-t10 24v4q0 14 -10 24t-24 10h-90v64h122q14 0 24 10t10 24v4q0 14 -10 24t-24 10h-135q2 1 2 2l85 85q11 10 11 25t-10.5 25.5t-25.5 10.5t-26 -10l-59 -60l-60 60q-10 10 -25 10t-25.5 -10.5t-10.5 -25.5t10 -25l85 -85l2 -2h-134q-14 0 -24 -10t-10 -24z" />
-    <glyph glyph-name="Trophy" unicode="&#xe6ef;" 
-d="M760 384h8q53 0 90.5 37.5t37.5 90.5v256h-128q-4 27 -24 45.5t-48 18.5h-368q-28 0 -48.5 -18.5t-23.5 -45.5h-128v-256q0 -53 37.5 -90.5t90.5 -37.5h8q19 -75 77 -127t135 -63v-186h-312q-15 0 -25.5 -10.5t-10.5 -25.5t10.5 -25.5t25.5 -10.5h696q15 0 25.5 10.5
-t10.5 25.5t-10.5 25.5t-25.5 10.5h-312v186q77 11 135 63t77 127zM768 696h56v-184q0 -23 -16.5 -39.5t-39.5 -16.5v240zM256 456q-23 0 -39.5 16.5t-16.5 39.5v184h56v-240zM512 264q-76 0 -130 54t-54 130v312h368v-312q0 -76 -54 -130t-130 -54z" />
-    <glyph glyph-name="Contacts" unicode="&#xe6f0;" 
-d="M100 526h120q15 0 25.5 10.5t10.5 25.5t-10.5 25.5t-25.5 10.5h-120q-15 0 -25.5 -10.5t-10.5 -25.5t10.5 -25.5t25.5 -10.5zM256 204q0 15 -10.5 25.5t-25.5 10.5h-120q-15 0 -25.5 -10.5t-10.5 -25.5t10.5 -25.5t25.5 -10.5h120q15 0 25.5 10.5t10.5 25.5zM888 832
-h-688q-30 0 -51 -21t-21 -51v-56h72v56h688v-752h-688v54h-72v-54q0 -30 21 -51t51 -21h688q30 0 51 21t21 51v752q0 30 -21 51t-51 21zM100 347h120q15 0 25.5 10.5t10.5 25.5t-10.5 25.5t-25.5 10.5h-120q-15 0 -25.5 -10.5t-10.5 -25.5t10.5 -25.5t25.5 -10.5zM309 114
-q0 -15 10.5 -25.5t25.5 -10.5t25.5 10.5t10.5 25.5q0 76 54 130t130 54t130 -54t54 -130q0 -15 10.5 -25.5t25.5 -10.5t25.5 10.5t10.5 25.5q0 106 -75 181t-181 75t-181 -75t-75 -181zM725 530q0 66 -47 113t-113 47t-113 -47t-47 -113t47 -113t113 -47t113 47t47 113z
-M565 442q-36 0 -62 26t-26 62t26 62t62 26t62 -26t26 -62t-26 -62t-62 -26z" />
-    <glyph glyph-name="loading1" unicode="&#xe6ae;" 
-d="M512 -128q-104 0 -199 40q-92 39 -163 110t-110 163q-40 95 -40 199q0 15 10.5 25.5t25.5 10.5t25.5 -10.5t10.5 -25.5q0 -90 35 -171q33 -79 94 -140t140 -95q81 -34 171 -34t171 35q79 33 140 94t95 140q34 81 34 171t-35 171q-33 79 -94 140t-140 95q-81 34 -171 34
-q-15 0 -25.5 10.5t-10.5 25.5t10.5 25.5t25.5 10.5q104 0 199 -40q92 -39 163 -110t110 -163q40 -95 40 -199t-40 -199q-39 -92 -110 -163t-163 -110q-95 -40 -199 -40z" />
-    <glyph glyph-name="loading2" unicode="&#xe64d;" 
-d="M988 348q-15 0 -25.5 10.5t-10.5 25.5q0 90 -35 171q-33 79 -94 140t-140 95q-81 34 -171 34q-15 0 -25.5 10.5t-10.5 25.5t10.5 25.5t25.5 10.5q104 0 199 -40q92 -39 163 -110t110 -163q40 -95 40 -199q0 -15 -10.5 -25.5t-25.5 -10.5z" />
-    <glyph glyph-name="like2" unicode="&#xe69d;" 
-d="M958 421v3q-2 3 -2 4q-15 58 -66 77q-24 8 -50 8h-1h-87h-32.5h-32.5h-21q4 27 7 41q13 67 -5 119q-7 20 -24 66l-9 24q-16 40 -54 56q-29 13 -59 13q-34 0 -66 -17q-51 -26 -50 -83q1 -23 1 -36q1 -41 2 -62q0 -5 -2 -9q-3 -6 -10.5 -19t-11.5 -20q-35 -61 -53 -90
-q-12 -18 -32.5 -30t-35.5 -15l-15 -3h-113q-30 0 -51 -21t-21 -51v-368q0 -30 21 -51t51 -21h248h80h80h50h50h94q42 0 72 10q40 13 64.5 44t28.5 73q2 23 -3 45q25 40 23 84q-1 12 -5 24q24 36 23 76q0 15 -5 30q14 21 20 45l4 5v44zM248 8h-112v368h112v-368zM888 391
-l-2 -8q-3 -11 -9 -21l-19 -28l9 -32q2 -6 2 -13q1 -17 -11 -33l-18 -28l9 -32q1 -5 2 -9q1 -20 -12 -40l-16 -25l6 -25v0v-3q3 -13 2 -25v0v-1q-2 -20 -13 -33q-11 -14 -30 -21q-19 -6 -50 -6h-94h-24.5h-25h-25.5h-25h-77h-83h-64l1 388q46 22 72 62v1q19 30 53 91l1 1v0
-q2 3 14 24q1 1 4 6t4 7q14 24 12 51q-1 22 -2 57v2v16v20q-1 6 2 10q2 4 9 8q16 8 32 8q15 0 31 -7q10 -4 15 -15q7 -21 9 -24q15 -41 23 -64q12 -35 2 -82q-3 -17 -7 -43l-14 -84h106h32h32h88h1v0q13 0 26 -4q15 -6 20 -27q1 0 1.5 -2t0.5 -3v-14z" />
-    <glyph glyph-name="dislike2" unicode="&#xe69e;" 
-d="M960 352v44l-4 6q-6 24 -20 44q5 14 5 30q2 40 -23 76q4 12 5 25q2 43 -23 83q5 22 2 46q-3 41 -27.5 72t-64.5 44q-30 10 -72 10h-94h-50h-51h-79h-80h-248q-30 0 -51 -21t-21 -51v-368q0 -30 21 -51t51 -21h113q6 -1 16 -3t32.5 -14.5t34.5 -30.5q18 -29 53 -90
-q4 -7 11.5 -20t10.5 -18q2 -5 2 -10q-1 -20 -2 -62q0 -13 -1 -36q-1 -56 50 -83q32 -17 66 -17q30 0 59 12q38 17 54 57l9 24q15 41 24 65q18 53 5 120q-4 19 -7 41h21h32.5h32.5h87h1q26 0 50 8q52 19 66 77l2 4v3zM248 392h-112v368h112v-368zM888 363q0 -1 -1 -3
-q0 -2 -1 -2q-5 -21 -20 -27q-13 -4 -26 -4v0h-1h-88h-32h-15.5h-16.5h-106l14 -84q4 -26 7 -43q10 -48 -2 -82q-8 -23 -24 -63q-1 -5 -4.5 -14t-4.5 -10q-4 -12 -14 -16q-16 -7 -31 -7q-16 0 -32 8q-7 4 -10 8q-2 3 -2 10q1 23 1 37v1q1 39 2 57q2 27 -12 51q-1 2 -4 6.5
-t-4 6.5q-13 23 -14 24v0l-1 2q-34 60 -53 91h-1q-25 40 -71 62l-1 388h64h83h77h25h25.5h25h24.5h94q31 0 50 -6t30 -21q11 -13 13 -33v-1v0q1 -12 -2 -24v-4v0l-6 -25l16 -25q13 -20 12 -39q0 -5 -2 -9l-9 -33l18 -28q12 -16 11 -33q0 -7 -2 -13l-9 -32l19 -28q6 -10 9 -21
-l2 -8v-14z" />
-    <glyph glyph-name="like1" unicode="&#xe64c;" 
-d="M184 448h-48q-30 0 -51 -21t-21 -51v-368q0 -30 21 -51t51 -21h48q30 0 51 21t21 51v368q0 30 -21 51t-51 21zM957 422q-11 43 -47 56q-21 6 -42 6h-226q-7 0 -8 1.5t0 8.5q2 10 4.5 26.5t5 30.5t4.5 26q12 62 -4 109q-6 17 -36 97q-10 28 -36 39q-53 22 -102 -3
-q-34 -18 -33 -54q0 -10 1 -48t2 -58q1 -18 -8 -33q-73 -125 -76 -130q-4 -6 -28 -32q-17 -18 -24 -30t-7 -29q0 -284 -1 -397q0 -30 21.5 -51t51.5 -21h390q40 0 66 9q32 10 51 34t22 58q2 29 -6 50q-1 4 2 9q28 37 26 76q-1 10 -7 29q-3 7 2 13q26 33 25 69q0 7 -3.5 21
-t-3.5 16q-2 6 0 9q19 21 26 53q0 1 1 2v29z" />
-    <glyph glyph-name="dislike1" unicode="&#xe64b;" 
-d="M256 392q0 -30 -21 -51t-51 -21h-48q-30 0 -51 21t-21 51v368q0 30 21 51t51 21h48q30 0 51 -21t21 -51v-368zM957 346q-11 -43 -47 -56q-21 -6 -42 -6h-226q-7 0 -8 -1.5t0 -8.5q2 -10 4.5 -26.5t5 -30.5t4.5 -26q12 -62 -4 -109q-6 -17 -36 -97q-10 -28 -36 -39
-q-53 -22 -102 3q-34 18 -33 54q0 10 1 48t2 58q1 18 -8 33q-73 125 -76 130q-4 6 -28 32q-17 18 -24 30t-7 29q0 284 -1 397q0 30 21.5 51t51.5 21h390q40 0 66 -9q32 -10 51 -34t22 -58q2 -29 -6 -50q-1 -4 2 -9q28 -37 26 -76q-1 -10 -7 -29q-3 -7 2 -13q26 -33 25 -69
-q0 -7 -3.5 -21t-3.5 -15q-2 -7 0 -9q19 -22 26 -54q0 -1 1 -2v-28q-2 -7 -3 -10z" />
-    <glyph glyph-name="bulb1" unicode="&#xe649;" 
-d="M640 -56h-256q-15 0 -25.5 -10.5t-10.5 -25.5t10.5 -25.5t25.5 -10.5h256q15 0 25.5 10.5t10.5 25.5t-10.5 25.5t-25.5 10.5zM896 522q0 155 -112.5 264.5t-271.5 109.5t-271.5 -109.5t-112.5 -264.5q0 -102 52 -188.5t140 -135.5v-62q0 -30 21 -51t51 -21h240
-q30 0 51 21t21 51v62q88 49 140 135.5t52 188.5zM733 309q-43 -42 -99 -65l-1 -0.5l-1 -0.5v-107h-240v107l-1 0.5l-1 0.5q-56 23 -99 65t-67 96q-24 56 -24 117t24 117q24 54 67 96t99 65q58 24 122 24t122 -24q56 -23 99 -65t67 -96q24 -56 24 -117t-24 -117
-q-24 -54 -67 -96z" />
-    <glyph glyph-name="rocket1" unicode="&#xe90f;" 
-d="M954 799l-6 21l-21 5q-27 7 -72 7q-111 0 -235 -34q-63 -18 -112 -41q-50 -25 -78 -53q-25 -25 -65 -97q-9 -17 -19 -36q-60 -18 -143 -70q-97 -61 -132 -107q-11 -14 -6 -31.5t22 -23.5q3 -1 10.5 -4t11.5 -4q79 -30 111 -46v0l192 -193q16 -33 46 -112q4 -10 9 -21
-q6 -17 23 -22q5 -1 10 -1q12 0 22 7q46 34 106 132q53 84 70 143q21 11 37 19q73 40 98 65q35 35 64.5 106.5t46.5 163.5q16 83 16 152q0 47 -6 75zM293 457q-21 -47 -46 -105q-29 14 -82 34q33 27 76 54q31 19 59 34q-4 -10 -7 -17zM568 113q-27 -43 -54 -76q-20 51 -34 82
-q55 23 106 46q1 0 15 7q-14 -28 -33 -59zM888 725q0 -64 -14 -140q-16 -81 -42 -145q-24 -61 -50 -87v0q-17 -17 -82 -52q-58 -32 -144 -71q-56 -25 -126 -54l-126 126q27 65 54 126q39 86 71 144q35 64 52 82q19 19 59 38q43 21 100 36q113 32 216 32q17 0 31 -1
-q1 -16 1 -34zM185 144q-29 0 -51.5 -17t-31.5 -44l-37 -125q-1 -2 -1 -5q0 -7 5 -12t12 -5q3 0 5 1l124 37q27 9 44.5 32t17.5 52q0 35 -25.5 60.5t-61.5 25.5zM594.5 466.5q18.5 -18.5 45.5 -18.5t45.5 18.5t18.5 45.5t-18.5 45.5t-45.5 18.5t-45.5 -18.5t-18.5 -45.5
-t18.5 -45.5z" />
-    <glyph glyph-name="select1" unicode="&#xe64a;" 
-d="M888 832h-752q-30 0 -51 -21t-21 -51v-752q0 -30 21 -51t51 -21h504q15 0 25.5 10.5t10.5 25.5t-10.5 25.5t-25.5 10.5h-504v752h752v-504q0 -15 10.5 -25.5t25.5 -10.5t25.5 10.5t10.5 25.5v504q0 30 -21 51t-51 21zM634 314l103 103q9 9 4.5 20t-16.5 11h-241
-q-15 0 -25.5 -10.5t-10.5 -25.5v-240q0 -13 11 -17.5t20 4.5l103 104l188 -188q11 -11 26 -11t25.5 10.5t10.5 25.5t-10 26z" />
-    <glyph glyph-name="apple1" unicode="&#xe68c;" 
-d="M902 547q-21 31 -49 52.5t-55.5 31t-46.5 13.5t-36 4q-35 4 -75 -7.5t-73 -25t-48 -13.5q-17 0 -75 22.5t-94 21.5q-65 -1 -121.5 -35.5t-90.5 -92.5q-32 -56 -40 -128t5.5 -142t39.5 -133.5t60 -112.5q20 -30 34.5 -48t36 -40t44.5 -32.5t47 -9.5q29 1 77.5 21.5
-t89.5 20.5q40 0 88 -20.5t81 -20.5q25 1 47 11t42.5 30.5t34 37.5t33.5 47q44 64 71 146v0q-8 3 -17.5 8t-33 22.5t-40.5 38.5t-31.5 58t-14.5 80q-1 36 11 70t24.5 53.5t34 39t26.5 23t14 9.5zM716 896q-39 -2 -81 -23.5t-70 -54.5q-27 -30 -41.5 -73t-9.5 -85
-q41 -3 80.5 17.5t68.5 55.5q28 34 43 77t10 86z" />
-    <glyph glyph-name="apple-o" unicode="&#xe6d4;" 
-d="M698 577h10h2l2 -1q30 -1 59 -13q13 -5 25 -12q-4 -5 -10 -11q-30 -37 -46 -79q-21 -52 -21 -110q1 -125 88 -210q16 -15 33 -27q-18 -40 -42 -74q-37 -55 -58 -74q-21 -20 -40 -21h-2q-17 0 -47 14q-64 27 -119 27q-56 0 -122 -28q-31 -13 -48 -14h-1q-15 0 -38 22
-t-61 77q-66 95 -88 218q-11 65 -5 120q7 57 31 101q25 42 65 67q41 24 86 25h1q23 0 77 -21q58 -24 90 -24q29 0 87 23q63 25 92 25zM698 649q-41 0 -103 -24t-76 -24q-17 0 -74 22.5t-93 22.5h-2q-65 -1 -121.5 -35.5t-90.5 -92.5q-32 -57 -40 -128.5t5.5 -141.5
-t39.5 -133.5t60 -112.5q20 -29 34 -47.5t35 -40t43.5 -32t45.5 -10.5h3q30 1 78.5 21.5t89.5 20.5q40 0 87 -20.5t79 -20.5h3q25 1 47 11t42.5 30.5t33.5 37.5t34 47q44 64 71 146v0q-8 3 -17.5 8t-33 22.5t-40.5 38.5t-31.5 58t-15.5 80q0 36 12 70t24.5 53.5t34 39t26 23
-t14.5 9.5q-21 31 -49 52.5t-55.5 31t-46.5 13.5t-36 4q-9 1 -17 1zM716 896q-39 -2 -81 -23.5t-70 -54.5q-27 -30 -41.5 -73t-9.5 -85q41 -3 80.5 17.5t68.5 55.5q28 34 43 77t10 86z" />
-    <glyph glyph-name="android1" unicode="&#xe938;" 
-d="M888 575q-26 0 -44.5 -18.5t-18.5 -44.5v-247q0 -27 18.5 -45.5t44 -18.5t44 18.5t18.5 45.5v247q0 26 -18 44.5t-44 18.5zM136.5 575q-25.5 0 -44 -18.5t-18.5 -44.5v-247q0 -27 18.5 -45.5t44 -18.5t44 18.5t18.5 45.5v247q0 26 -18.5 44.5t-44 18.5zM236 573v-452
-q0 -20 14.5 -34t34.5 -14h55v-138q0 -26 18.5 -44.5t44 -18.5t44 18.5t18.5 44.5v138h97v-138q0 -26 18 -44.5t44 -18.5t44 18.5t18 44.5v138h56q20 0 34 14t14 35v451h-554zM643 807l52 75q5 8 -2 13t-13 -3l-53 -78q-55 22 -115 22t-115 -22l-53 77q-6 9 -13 3
-q-7 -4 -2 -13l52 -74q-62 -29 -101.5 -80t-44.5 -114h554q-5 63 -44.5 114t-101.5 80zM395 690q-13 0 -22 9t-9 22t9 22t22 9t22 -9t9 -22t-9 -22t-22 -9zM632.5 690q-12.5 0 -21.5 9t-9 22t9 22t21.5 9t21.5 -9t9 -22t-9 -22t-21.5 -9z" />
-    <glyph glyph-name="android" unicode="&#xe68d;" 
-d="M888.5 601.5q-24.5 24.5 -60.5 24.5q-6 0 -13 -1v1h-4q-9 53 -43 100q-32 44 -81 74l29 41v4v2l1 2q1 7 1 10q0 16 -10 26.5t-26 10.5q-18 0 -30 -18l-33 -48q-53 18 -107 18t-107 -18l-33 48q-12 18 -30 18q-16 0 -26 -10.5t-10 -26.5q0 -11 7 -19l26 -37
-q-50 -30 -82 -75q-34 -47 -42 -100h-6v-1q-6 1 -12 1q-37 0 -61 -24t-24 -60v-269q0 -36 24 -60.5t60 -24.5q6 0 13 1v-107q0 -25 17.5 -42.5t42.5 -17.5h37v-67q0 -36 24 -60q24 -25 60.5 -25t60.5 24q24 25 24 61v66h73v-66q0 -36 25 -60q24 -25 60 -25t61 25q24 24 24 60
-v67h36q25 0 43 17.5t18 42.5v105q6 -1 12 -1q36 0 61 24q24 25 24 61v268q1 36 -23.5 60.5zM209 272q0 -12 -12 -12t-12 12v269q0 12 12 12t12 -12v-269zM358 726q66 48 154 48t154 -48q56 -42 71 -100h-450q15 58 71 100zM403 -45q-1 -10 -12 -10q-12 0 -12 12v67h24v-69z
-M646 -45q-2 -10 -12 -10q-13 0 -13 12v67h25v-69zM743 96h-461v457h461v-457zM840 272q0 -12 -12.5 -12t-12.5 12v269q0 12 12.5 12t12.5 -12v-269zM585 712q-16 0 -26 -10.5t-10 -26.5t10 -26t26 -10t26.5 10t10 26t-10.5 26.5t-26 10.5zM439.5 712q-15.5 0 -26 -10.5
-t-10.5 -26.5t10.5 -26t26 -10t26 10t10.5 26t-10.5 26.5t-26 10.5z" />
-    <glyph glyph-name="aliwangwang-o1" unicode="&#xe68f;" 
-d="M985 560q-37 88 -106 157q-68 69 -158 106q-92 39 -192 39q-83 0 -160 -26q-54 25 -122 40t-105 17.5t-69 2.5h-12q-25 -1 -38.5 -21.5t-4.5 -43.5l84 -211q-69 -117 -69 -253q0 -101 39 -193q38 -88 106 -157q69 -68 158 -106q92 -39 193 -39q100 0 193 39
-q88 37 157 106q68 68 106 157q39 92 39 193.5t-39 192.5zM919 202q-32 -75 -91 -134t-134 -91h-1q-78 -33 -164.5 -33t-164.5 33q-76 32 -135 91t-90 134v1q-34 78 -34 164q0 117 59 216l18 30l-83 210q40 -1 82 -7q91 -14 158 -45l26 -12l28 9q65 22 136 22q86 0 164 -33
-q76 -32 135 -91t91 -134v0q33 -78 33 -165q0 -86 -33 -165zM511.5 577q-20.5 0 -34.5 -14t-14 -34v-72q0 -20 14 -34.5t34.5 -14.5t34.5 14.5t14 34.5v72q0 20 -14 34t-34.5 14zM740.5 577q-20.5 0 -34.5 -14t-14 -34v-72q0 -20 14 -34.5t34.5 -14.5t34.5 14.5t14 34.5v72
-q0 20 -14 34t-34.5 14z" />
-    <glyph glyph-name="aliwangwang" unicode="&#xe68e;" 
-d="M985 560q-37 88 -106 157q-68 69 -158 106q-91 39 -192 39q-83 0 -160 -26q-54 25 -122 40t-105 17.5t-69 2.5h-12q-25 -1 -38.5 -21.5t-4.5 -43.5l84 -211q-69 -117 -69 -253q0 -101 39 -193q38 -88 106 -157q69 -68 158 -106q92 -39 193 -39t193 39q88 37 157 106
-q68 68 106 157q39 92 39 193.5t-39 192.5zM560 457q0 -20 -14 -34.5t-34.5 -14.5t-34.5 14.5t-14 34.5v72q0 20 14 34t34.5 14t34.5 -14t14 -34v-72zM789 457q0 -20 -14 -34.5t-34.5 -14.5t-34.5 14.5t-14 34.5v72q0 20 14 34t34.5 14t34.5 -14t14 -34v-72z" />
-    <glyph glyph-name="pay-circle1" unicode="&#xe6a5;" 
-d="M512 896q-139 0 -257 -68.5t-186.5 -186.5t-68.5 -257t68.5 -257t186.5 -186.5t257 -68.5t257 68.5t186.5 186.5t68.5 257t-68.5 257t-186.5 186.5t-257 68.5zM737 419q0 -14 -10.5 -23.5t-24.5 -9.5h-154v-64h122q14 0 24.5 -10.5t10.5 -24.5v-4q0 -14 -10.5 -23.5
-t-24.5 -9.5h-122v-149q0 -15 -10.5 -25.5t-25.5 -10.5t-25.5 10.5t-10.5 25.5v149h-122q-15 0 -24.5 9.5t-9.5 23.5v4q0 14 10 24.5t24 10.5h122v64h-154q-15 0 -25 10t-10 24v3q0 14 10 24.5t25 10.5h166l-2 1l-118 118q-11 11 -11 26t10.5 25.5t25.5 10.5t26 -10l93 -93
-l92 92q11 11 25.5 11t25.5 -10.5t10.5 -25.5t-10.5 -25l-118 -118q-1 -1 -2 -1h167q14 0 24.5 -11t10.5 -25v-4z" />
-    <glyph glyph-name="pay-circle-o1" unicode="&#xe6a6;" 
-d="M512 896q-139 0 -257 -68.5t-186.5 -186.5t-68.5 -257t68.5 -257t186.5 -186.5t257 -68.5t257 68.5t186.5 186.5t68.5 257t-68.5 257t-186.5 186.5t-257 68.5zM823 73q-61 -61 -140 -94q-81 -35 -171 -35t-171 35q-79 33 -140 94t-94 140q-35 81 -35 171t35 171
-q33 79 94 140t140 94q81 35 171 35t171 -35q79 -33 140 -94t94 -140q35 -81 35 -171t-35 -171q-33 -79 -94 -140zM702 459h-167q1 0 2 1l118 118q11 10 11 25t-10.5 25.5t-25.5 10.5t-26 -11l-92 -92l-93 93q-11 10 -26 10t-25.5 -10.5t-10.5 -25.5t11 -26l118 -118l2 -1
-h-166q-14 0 -24.5 -10.5t-10.5 -24.5v-3q0 -14 10 -24t25 -10h154v-64h-123q-13 0 -23 -10.5t-10 -24.5v-4q0 -14 9.5 -23.5t23.5 -9.5h123v-149q0 -15 10.5 -25.5t25.5 -10.5t25.5 10.5t10.5 25.5v149h122q14 0 24.5 9.5t10.5 23.5v4q0 14 -10.5 24.5t-24.5 10.5h-122v64
-h154q14 0 24.5 9.5t10.5 23.5v4q0 14 -10.5 25t-24.5 11z" />
-    <glyph glyph-name="poweroff" unicode="&#xe6d5;" 
-d="M512 512q15 0 25.5 10.5t10.5 25.5v312q0 15 -10.5 25.5t-25.5 10.5t-25.5 -10.5t-10.5 -25.5v-312q0 -15 10.5 -25.5t25.5 -10.5zM512 -128q-104 0 -199 40q-92 39 -163 110t-110 163q-40 95 -40 199q0 123 55 231q53 105 147 177q12 9 27 7t24 -14t7 -27t-14 -24
-q-81 -61 -127 -151q-47 -94 -47 -199q0 -90 35 -171q33 -79 94 -140t140 -95q81 -34 171 -34t171 35q79 33 140 94t95 140q34 81 34 171q0 105 -47 199q-46 90 -127 151q-12 9 -14 24t7 27t24 14t27 -7q94 -72 147 -177q55 -109 55 -231q0 -104 -40 -200q-39 -91 -110 -162
-t-163 -110q-95 -40 -199 -40z" />
-    <glyph glyph-name="trademark" unicode="&#xe651;" 
-d="M666.5 397q46.5 43 46.5 115q0 37 -14 69q-14 30 -39 51q-25 19 -59 27.5t-125 8.5h-113v-578h65v264h23l194 -264h82l-196 264q89 0 135.5 43zM516 420h-88v182h91q66 0 96 -22q31 -22 31 -69.5t-32 -69.5q-31 -22 -98 -21zM512 896q-139 0 -257 -68.5t-186.5 -186.5
-t-68.5 -257t68.5 -257t186.5 -186.5t257 -68.5t257 68.5t186.5 186.5t68.5 257t-68.5 257t-186.5 186.5t-257 68.5zM512 -56q-182 0 -311 129t-129 311t129 311t311 129t311 -129t129 -311t-129 -311t-311 -129z" />
-    <glyph glyph-name="find" unicode="&#xe6db;" 
-d="M521 512q-58 4 -99.5 -37.5t-37.5 -99.5l-98 -217l217 98q58 -4 99.5 37.5t37.5 99.5l98 217zM551.5 344.5q-16.5 -16.5 -39.5 -16.5t-39.5 16.5t-16.5 39.5t16.5 39.5t39.5 16.5t39.5 -16.5t16.5 -39.5t-16.5 -39.5zM512 896q-139 0 -257 -68.5t-186.5 -186.5
-t-68.5 -257t68.5 -257t186.5 -186.5t257 -68.5t257 68.5t186.5 186.5t68.5 257t-68.5 257t-186.5 186.5t-257 68.5zM512 -56q-182 0 -311 129t-129 311t129 311t311 129t311 -129t129 -311t-129 -311t-311 -129z" />
-    <glyph glyph-name="copyright" unicode="&#xe6de;" 
-d="M518 176q-79 0 -121 56q-42 53 -42 150q0 96 43 152q44 58 121 58q63 0 101 -29q38 -31 49 -91h80q-14 96 -74 142q-59 46 -156 46q-119 0 -185 -83q-62 -75 -62 -195q0 -121 62 -195q65 -79 184 -79q96 0 156 51q59 50 78 153h-81q-19 -136 -153 -136zM512 896
-q-139 0 -257 -68.5t-186.5 -186.5t-68.5 -257t68.5 -257t186.5 -186.5t257 -68.5t257 68.5t186.5 186.5t68.5 257t-68.5 257t-186.5 186.5t-257 68.5zM512 -56q-182 0 -311 129t-129 311t129 311t311 129t311 -129t129 -311t-129 -311t-311 -129z" />
-    <glyph glyph-name="sound" unicode="&#xe6e9;" 
-d="M464 731l-233 -155h-166q-27 0 -46 -21t-19 -51v-240q0 -30 19 -51t46 -21h166l233 -155q23 -15 39.5 -5t16.5 40v624q0 30 -16.5 40t-39.5 -5zM448 134l-191 130h-185v240h185l191 127v-497zM640 232q-15 0 -25.5 -10.5t-10.5 -25.5t10.5 -25.5t25.5 -10.5
-q93 0 158.5 65.5t65.5 158.5t-65.5 158.5t-158.5 65.5q-15 0 -25.5 -10.5t-10.5 -25.5t10.5 -25.5t25.5 -10.5q63 0 107.5 -44.5t44.5 -107.5t-44.5 -107.5t-107.5 -44.5zM640 768q-15 0 -25.5 -10.5t-10.5 -25.5t10.5 -25.5t25.5 -10.5q129 0 220.5 -91.5t91.5 -220.5
-t-91.5 -220.5t-220.5 -91.5q-15 0 -25.5 -10.5t-10.5 -25.5t10.5 -25.5t25.5 -10.5q159 0 271.5 112.5t112.5 271.5t-112.5 271.5t-271.5 112.5z" />
-    <glyph glyph-name="earth" unicode="&#xe6f1;" 
-d="M512 896q-139 0 -257 -68.5t-186.5 -186.5t-68.5 -257t68.5 -257t186.5 -186.5t257 -68.5t257 68.5t186.5 186.5t68.5 257t-68.5 257t-186.5 186.5t-257 68.5zM394 808q-46 -39 -80 -104q-31 16 -59 36h-2q65 47 141 68zM198 692q40 -31 87 -54q-35 -94 -41 -204h-169
-q17 150 123 258zM72 362h170q4 -126 43 -232q-46 -23 -87 -54q-56 56 -88.5 130t-37.5 156zM253 28h2q28 20 59 36q35 -65 80 -104q-76 21 -141 68zM481 -10q-59 19 -103 100q50 16 103 20v-120zM481 182q-67 -4 -132 -25q-32 92 -35 205h167v-180zM481 434h-165
-q6 97 33 177q64 -21 132 -25v-152v0zM481 658q-53 4 -103 20q44 82 103 100v-120zM949 434h-169q-6 110 -41 204q46 23 87 54q106 -108 123 -258zM771 740h-2q-28 -20 -59 -36q-35 65 -81 104q77 -21 142 -68zM553 774q53 -22 93 -96q-45 -15 -93 -19v115zM553 587
-q62 4 122 24q27 -80 33 -177h-155v153zM553 362h157q-3 -113 -35 -205q-59 19 -122 24v181zM553 -6v115q48 -4 93 -19q-40 -74 -93 -96zM630 -40q46 39 80 104q31 -16 59 -36h2q-65 -47 -141 -68zM826 76q-40 31 -87 54q39 106 43 232h169q-4 -82 -36.5 -156t-88.5 -130z
-" />
-    <glyph glyph-name="wifi" unicode="&#xe6d6;" 
-d="M964 576q-92 93 -212 140.5t-241 47.5t-240.5 -47.5t-212.5 -140.5q-10 -10 -10 -25t10.5 -25.5t25.5 -10.5t25 11q82 81 188 123.5t214 42.5t214 -42.5t188 -123.5q10 -11 25 -11t25.5 10.5t10.5 25.5t-10 25zM194 422q-10 -11 -10 -26t10.5 -25.5t25.5 -10.5t25 11
-q54 54 124.5 82t141.5 28t141.5 -28t124.5 -82q10 -11 25 -11t25.5 10.5t10.5 25.5t-10 26q-86 86 -201.5 116.5t-231 0t-201.5 -116.5zM693 258v0q-75 75 -181 75t-181 -75q-11 -11 -11 -26t10.5 -25.5t25.5 -10.5t26 11q54 54 130 54t130 -54v0l3 -3q10 -11 25 -11
-t25.5 11t10.5 25.5t-10 25.5q-3 2 -3 3zM512 54zM458 54q0 -22 16 -38t38 -16t38 16t16 38t-16 38t-38 16t-38 -16t-16 -38z" />
-    <glyph glyph-name="sync" unicode="&#xe6da;" 
-d="M989 384q-15 1 -26 -8.5t-12 -24.5q-7 -83 -42.5 -157.5t-96.5 -131.5t-138.5 -87.5t-161.5 -30.5q-133 0 -243 73q-97 64 -149 167h100q15 0 25.5 10.5t10.5 25.5t-10.5 25.5t-25.5 10.5h-184q-15 0 -25.5 -10.5t-10.5 -25.5v-184q0 -15 10.5 -25.5t25.5 -10.5
-t25.5 10.5t10.5 25.5v86q59 -100 157 -165q128 -85 283 -85q98 0 188 35.5t161 101.5t112.5 153t48.5 183q2 15 -8 26.5t-25 12.5zM988 768q-15 0 -25.5 -10.5t-10.5 -25.5v-86q-59 100 -157 165q-128 85 -283 85q-98 0 -188 -35.5t-161 -101.5t-112.5 -153t-49.5 -183
-q-1 -15 9 -26.5t25 -12.5h2q14 0 24.5 9.5t11.5 23.5q6 83 42 157.5t97 131.5t138.5 87.5t161.5 30.5q133 0 243 -73q97 -64 149 -167h-100q-15 0 -25.5 -10.5t-10.5 -25.5t10.5 -25.5t25.5 -10.5h184q15 0 25.5 10.5t10.5 25.5v184q0 15 -10.5 25.5t-25.5 10.5z" />
-    <glyph glyph-name="login" unicode="&#xe657;" 
-d="M443 274q-11 -11 -11 -26t10.5 -25.5t25.5 -10.5t26 11l136 135q10 11 10 26t-10 26l-136 135q-11 11 -26 11t-25.5 -10.5t-10.5 -25.5t11 -26l74 -74h-481q-15 0 -25.5 -10.5t-10.5 -25.5t10.5 -25.5t25.5 -10.5h481zM984 583q-39 92 -110 163t-163 110q-95 40 -199 40
-q-123 0 -231 -55q-105 -53 -177 -147q-9 -12 -7 -27t14 -24t27 -7t24 14q61 81 151 127q94 47 199 47q90 0 171 -35q79 -33 140 -94t94 -140q35 -81 35 -171t-34 -171q-34 -79 -95 -140t-140 -94q-81 -35 -171 -35q-105 0 -199 47q-90 46 -151 127q-9 12 -24 14t-27 -7
-t-14 -24t7 -27q72 -94 177 -147q108 -55 231 -55q104 0 199 40q92 39 163 110t110 163q40 95 40 199t-40 199z" />
-    <glyph glyph-name="logout" unicode="&#xe65a;" 
-d="M772 29q-116 -85 -260 -85q-90 0 -171 34q-79 34 -140 95t-94 140q-35 81 -35 171t34 171q34 79 95 140t140 94q81 35 171 35q144 0 260 -85q12 -9 26.5 -6.5t23.5 14.5t7 26.5t-14 23.5q-135 99 -303 99q-104 0 -199 -40q-92 -39 -163 -110t-110 -163q-40 -95 -40 -199
-t40 -199q39 -92 110 -163t163 -110q95 -40 199 -40q168 0 303 99q12 9 14 23.5t-6.5 26.5t-23.5 14.5t-27 -6.5zM1014 410l-136 135q-11 11 -26 11t-25.5 -10.5t-10.5 -25.5t11 -26l74 -74h-481q-15 0 -25.5 -10.5t-10.5 -25.5t10.5 -25.5t25.5 -10.5h481l-74 -74
-q-11 -11 -11 -26t10.5 -25.5t25.5 -10.5t26 11l136 135q10 11 10 26t-10 26z" />
-    <glyph glyph-name="reload1" unicode="&#xe616;" 
-d="M954 392q-2 15 -14.5 23.5t-27 6t-23 -14.5t-6.5 -27q5 -28 5 -60q0 -76 -28.5 -144.5t-81.5 -121.5t-122 -81.5t-144 -28.5t-144 28.5t-122 81.5t-81.5 122t-28.5 144t28.5 144t81.5 122t122 81.5t144 28.5h13l-82 -82q-11 -11 -11 -25.5t10.5 -25.5t25.5 -11t26 11
-l135 136q11 10 11 25t-11 26l-135 135q-11 11 -26 11t-25.5 -10.5t-10.5 -25.5t11 -25l66 -67q-89 -1 -171 -35q-81 -34 -143 -96t-96 -143q-35 -83 -35 -174t35 -174q34 -81 96 -143t143 -96q83 -35 174 -35t174 35q81 34 143 96t96 142q35 83 35 175q0 37 -6 72z" />
-    <glyph glyph-name="message1" unicode="&#xe6ab;" 
-d="M292 471q-23 0 -39 -16t-16 -39t16 -39t39 -16t39 16t16 39t-16 39t-39 16zM732 471q-23 0 -39 -16t-16 -39t16 -39t39 -16t39 16t16 39t-16 39t-39 16zM512 471q-23 0 -39 -16t-16 -39t16 -39t39 -16t39 16t16 39t-16 39t-39 16zM983 604q-39 86 -110 153
-q-71 66 -163 102q-94 37 -198 37t-198 -37q-92 -36 -163 -102q-71 -67 -110 -153q-41 -90 -41 -187q0 -88 33 -169.5t94 -147.5l23 -196q3 -19 20 -28q7 -4 16 -4t18 5l148 84q78 -24 160 -24q103 0 198 37q92 37 163 103t110 152q41 89 41 188q0 97 -41 187zM918 259
-q-33 -73 -94 -130q-61 -56 -140 -87q-82 -33 -172 -33q-79 0 -152 25q-16 5 -30 -3l-115 -65l-18 155q-1 12 -10 21q-56 56 -85.5 127t-29.5 148q0 82 34 157q33 73 94 130t140 88q82 32 172 32t172 -32q79 -32 140 -88.5t94 -129.5q34 -75 34 -157.5t-34 -157.5z" />
-    <glyph glyph-name="shake" unicode="&#xe94f;" 
-d="M760 896h-496q-30 0 -51 -21t-21 -51v-880q0 -30 21 -51t51 -21h464q33 0 68.5 22t35.5 50v880q0 30 -21 51t-51 21zM542 -64h-60q-15 0 -24.5 9.5t-9.5 22.5t9.5 22.5t24.5 9.5h60q15 0 24.5 -9.5t9.5 -22.5t-9.5 -22.5t-24.5 -9.5zM760 65h-496v704h496v-704zM80 870
-l-44 -10q-19 -12 -29 -33t-6 -44l127 -832l-75 853q-3 39 27 66zM130 886q-20 -11 -31.5 -31t-10.5 -44l54 -839v856q0 39 32 63zM988 860l-44 10q30 -26 27 -66l-75 -853l127 832q4 23 -6 44t-29 33zM936 812q1 23 -10.5 43t-31.5 31l-44 6q32 -25 32 -64v-856z" />
-  </font>
-</defs></svg>

BIN
html/css/iconfont/iconfont.ttf


BIN
html/css/iconfont/iconfont.woff


+ 0 - 47
html/css/index.css

@@ -1,47 +0,0 @@
-.hot{margin-top: 20px; line-height: 14px;}
-.hot span{float: left;margin-right: 35px;font-size: 16px;color: #58a3ff;}
-.hot ul{float: left;}
-.hot li{margin-right: 30px; float: left;/*list-style-type:square;*/ line-height: 16px;}
-.hot li:last-child{margin-right:0 ;}
-
-.logo{height: 260px; line-height: 330px; text-align: center;}
-.search input{border-color: #58a3ff;border-radius: 0;}
-.search button{padding: 6px 30px;border-radius: 0;background: #58a3ff;color: #fff;border-color: #58a3ff;}
-.search button:hover{background: #58a3ff;color: #fff;border-color: #58a3ff;}
-.header_nav{margin-bottom: 20px;}
-
-.content_lt{width: 670px;margin-right: 20px;float: left;}
-.content_nav{border-bottom: 1px solid #ececec;background: #fafafa; overflow: auto;}
-.content_nav ul li{float: left;}
-.content_nav ul li.active a{line-height: 36px!important;}
-.content_nav a{width: 80px;height: 40px;line-height: 44px;display: inline-block;text-align: center; color: #333333;}
-.content_nav a:hover{/*line-height: 36px;background: #fff; border:1px solid #ececec; border-top:4px solid #58a3ff; border-bottom: none; color: #58a3ff!important;*/}
-.active{background: #fff; border:1px solid #ececec; border-top:4px solid #58a3ff; border-bottom: none; color: #58a3ff}
-
-.content_list{width: 670px; float: left;margin-top: 20px;}
-.content_list>div{border-top: none;}
-.info_img{float: left; width: 120px; height:96px;margin:0 20px;}
-.info_img img{width: 100%;height: 100%;}
-.content_info{float: left; padding: 20px 0; width: 100%; border-bottom: 1px solid #ececec;}
-.content_info:hover{background: #fafafa;}
-.info_act{background: #fafafa;}
-
-.info_txt{ width: 500px; float: left;font-size: 16px; line-height: 28px;color: #333333;}
-.info_txt>p{display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; overflow: hidden;height: 56px;}
-
-.source{font-size: 14px;}
-.source span{margin-right: 25px;}
-.source i{padding: 6px 9px;margin-right: 12px;background: #f5f5f5; color: #999999;}
-.source .name{color: #4466bf;background: #f0f7ff;}
-
-.zc_info_txt{padding: 0 20px;font-size: 16px; color: #333333;}
-.zc_info_txt .source span{margin-right: 15px;color: #999999;}
-
-.content_rt{width: 310px;float: left;border: 1px solid #ececec;}
-
-.content_rt div{padding: 10px; border-bottom: 1px dashed #d9d9d9; overflow: auto;}
-.content_rt div:last-child{border: none;}
-.content_rt ul li{float: left;}
-.content_rt ul li a{padding: 3px 10px; border: 1px solid #c9c9c9; display: block; border-radius: 30px; font-size: 12px; margin: 0 10px 10px 0;}
-.content_rt ul li a:hover{color: #fff;background: #58a3ff;border-color: #58a3ff;}
-.content_rt h4{margin-bottom: 14px;}

+ 0 - 17
html/css/style.css

@@ -1,17 +0,0 @@
-body{color: #333333;font-family: "微软雅黑";}
-input{outline:none} 
-li{list-style-type: none;}
-ul,li{margin: 0;padding: 0;}
-i{font-style:normal}
-a{color: #a3a3a3}
-a:hover{text-decoration:none;color: #9bc8ff;}
-
-.container {
-    width: 1000px;
-}
-header{height: 35px; line-height: 35px; background-color: #F3F3F3;border-bottom:1px solid #eeeeee;font-size: 12px;color: #999999;}
-.lt{float: left;}
-.rt{float: right;}
-.rt a{padding: 0 5px; }
-.rt div{float: right;}
-.login{border-right: 2px solid #CFCFCF;}

+ 0 - 158
html/highTech.html

@@ -1,158 +0,0 @@
-<!DOCTYPE html>
-<html>
-
-<head>
-	<meta charset="utf-8" />
-	<title></title>
-	<!-- 新 Bootstrap 核心 CSS 文件 -->
-	<link href="//cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
-	<link href="css/style.css" rel="stylesheet" />
-	<link href="css/highTech.css" rel="stylesheet" />
-	<!-- jQuery文件。务必在bootstrap.min.js 之前引入 -->
-	<script src="//cdn.bootcss.com/jquery/2.1.1/jquery.min.js"></script>
-	<!-- 最新的 Bootstrap 核心 JavaScript 文件 -->
-	<script src="//cdn.bootcss.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
-</head>
-
-<body>
-	<header>
-		<div class="container">
-			<div class="lt">欢迎进入科技认知计算交易平台!</div>
-			<div class="rt">
-				<a href="http://aftt.hnzhiming.com/user/login.html" class="login">登录</a>
-				<a href="http://aftt.hnzhiming.com/user/signIn.html">注册</a>
-			</div>
-		</div>
-	</header>
-	<div class="container header_search">
-		<div class="row clearfix">
-			<div class="col-md-3 logo">
-				<img src="img/logo_sm.png" />
-			</div>
-			<div class="col-md-7 col-md-offset-2 search">
-				<div class="row clearfix">
-					<div class="input-group ">
-						<input type="text" class="form-control" placeholder="平台资源关键词搜索">
-						<span class="input-group-btn">
-			              		<button class="btn" type="button">搜索</button>
-			             	</span>
-					</div>
-					<!-- /input-group -->
-				</div>
-			</div>
-		</div>
-	</div>
-	<div class="container">
-		<div class="row clearfix">
-			<nav>
-				<ul id="myTab">
-					<li class="active"><a href="#">高企自评</a></li>
-					<li><a href="#">高企申请</a></li>
-					<li><a href="#">在线咨询</a></li>
-					<li><a href="#">社交分享</a></li>
-					<li><a href="#">政策解读</a></li>
-				</ul>
-			</nav>
-			<div class="content">
-				<h4>高新技术企业认定有哪些好处?</h4>
-				<div class="discount">
-					<div class="discount_content">
-						<div class="discount_img">
-							<img src="img/discount_ioc_1.png" />
-						</div>
-						<div class="discount_info">
-							<span class="blue">1.企业税收减免</span>
-							<p>高企所得税减免40%,同时可享受办理研发经费加计扣除。</p>
-						</div>
-					</div>
-					<div class="discount_content">
-						<div class="discount_img">
-							<img src="img/discount_ioc_2.png" />
-						</div>
-						<div class="discount_info">
-							<span class="green">2.财政直接补贴</span>
-							<p>地区对新认定的高新技术企业资助均会高于5万元以上</p>
-						</div>
-					</div>
-					<div class="discount_content">
-						<div class="discount_img">
-							<img src="img/discount_ioc_3.png" />
-						</div>
-						<div class="discount_info">
-							<span class="red">3.企业上市优先</span>
-							<p>吸引政策和资金扶持,推动企业产业化扩张,促进企业融资上市。</p>
-						</div>
-					</div>
-					<div class="discount_content">
-						<div class="discount_img">
-							<img src="img/discount_ioc_4.png" />
-						</div>
-						<div class="discount_info">
-							<span class="yellow">4.政策资金倾斜</span>
-							<p>土地、电力、排污、节能、科研资金、税收等各项扶持政策。</p>
-						</div>
-					</div>
-					<div class="discount_content clear_mg">
-						<div class="discount_img">
-							<img src="img/discount_ioc_5.png" />
-						</div>
-						<div class="discount_info">
-							<span class="purple">5.企业品牌提升</span>
-							<p>政府帮企业背书,大大提高了企业品牌知名度。</p>
-						</div>
-					</div>
-				</div>
-
-			</div>
-		</div>
-	</div>
-	<div class="process">
-		<div class="container">
-			<div class="row clearfix">
-				<div class="content">
-					<h4>高企认定流程:</h4>
-					<div class="flow_chart">
-						<img src="img/flowChart.png" />
-					</div>
-
-				</div>
-			</div>
-		</div>
-	</div>
-
-	<div class="container">
-		<div class="row clearfix">
-			<div class="content">
-				<h4>我们的优势</h4>
-				<div class="advantage">
-					<ul>
-						<li>
-							<span>优势一</span>
-							<p>1、总部位于长沙,在全国有15家分(子)咨询机构。<br> 2、为各单位提供政策咨询、科技咨询、知识产权运营,企业上市服务等共22500项。
-								<br> 3、协助各省市2860家单位获得各级政策扶持和资金支持12.4亿。
-							</p>
-						</li>
-						<li>
-							<span>优势二</span>
-							<p>1、借助各省科技咨询中心专家库平台和专业人脉优势。<br> 2、拥有遍布全国各地区的人脉网络。
-							</p>
-						</li>
-						<li>
-							<span>优势三</span>
-							<p>1、国家科技部认定的技术转移示范机构、国家工信部门认定的企业核心服务机构。<br> 2、是目前全国唯一将知识产权运营、科技咨询、金融服务整合在一起的咨询服务机构,可为企业成长提供一站式解决方案。
-							</p>
-						</li>
-						<li>
-							<span>优势四</span>
-							<p>1、获得国家科技部、财政部、工信委等相关部门的政策支持和肯定。<br> 2、由政府出资与省知识产权局、湘大知识产权学院共建了湖南省专利信息集成化平台。
-								<br> 3、建立了专业的知识产权运营服务平台门户网站-GO阿凡提网。
-							</p>
-						</li>
-					</ul>
-				</div>
-			</div>
-		</div>
-	</div>
-</body>
-
-</html>

BIN
html/img/discount_ioc_1.png


BIN
html/img/discount_ioc_2.png


BIN
html/img/discount_ioc_3.png


BIN
html/img/discount_ioc_4.png


BIN
html/img/discount_ioc_5.png


BIN
html/img/flowChart.png


BIN
html/img/img1.jpg


BIN
html/img/logo.png


BIN
html/img/logo_sm.png


BIN
html/img/mx_img_1.png


BIN
html/img/mx_img_2.png


BIN
html/img/mx_img_3.png


BIN
html/img/mx_img_4.png


BIN
html/img/search_ioc.png


BIN
html/img/slide_img_s_1.png


BIN
html/img/zc_img_1.png


File diff suppressed because it is too large
+ 0 - 355
html/index.html


+ 0 - 9
html/js/public.js

@@ -1,9 +0,0 @@
-$(function () {
-    //	$('div.dropdown').mouseover(function() {
-    //	  	$(this).addClass('open');    
-    //	}).mouseout(function() {        
-    //		$(this).removeClass('open');    
-    //	});
-    //	$("#myCarousel").carousel('cycle');
-    //	$("#myCarousel1").carousel('cycle');
-})

BIN
image/achievement_ico_1.png


BIN
image/achievement_ico_2.png


BIN
image/avatar1.png


BIN
image/avatar2.png


BIN
image/avatar3.png


BIN
image/avatar4.png


BIN
image/avatarImg.png


BIN
image/demand_ico_1.png


BIN
image/demand_ico_2.png


BIN
image/demand_ico_3.png


BIN
image/demand_ico_4.png


BIN
image/demand_ico_5.png


BIN
image/demand_ico_6.png


BIN
image/demand_ico_6_atv.png


BIN
image/demand_sup.png


BIN
image/list_title_ico_1.png


BIN
image/list_title_ico_2.png


BIN
image/list_title_ico_3.png


BIN
image/logo.jpg


BIN
image/logo.png


BIN
html/img/li_ioc.png


BIN
image/search.png


html/img/slide_img_1.png → image/slide_img_1.png


File diff suppressed because it is too large
+ 818 - 786
js/component/DicIndustryList.js


File diff suppressed because it is too large
+ 1165 - 1139
js/component/DicProvinceList.js


File diff suppressed because it is too large
+ 1047 - 1004
js/component/DicTechFieldList.js


File diff suppressed because it is too large
+ 13489 - 0
js/component/NewDicProvinceList.js


+ 35 - 47
js/component/account/achievement/techAchievement.jsx

@@ -5,8 +5,8 @@ import $ from 'jquery/src/ajax';
 import moment from 'moment';
 import './techAchievement.less';
 import TechAchievementDesc from './techAchievementDesc.jsx';
-import { provinceArr, achievementCategoryList } from '../../dataDic.js';
-import { companySearch, getAchievementCategory } from '../../tools.js';
+import { achievementCategoryList, techAuditStatusList } from '../../dataDic.js';
+import { getAchievementCategory, getTechAuditStatus } from '../../tools.js';
 
 const AchievementList = React.createClass({
     loadData(pageNo) {
@@ -26,15 +26,14 @@ const AchievementList = React.createClass({
                 name: this.state.name, //名称
                 keyword: this.state.keyword, // 关键词
                 category: this.state.category, //类型(0--专利, 2--软著, 3--项目, 4--版权, 5--工业设计, 6--配方, 7--非标)
-                ownerType: this.state.ownerType, //所有人类型(0-个人,1-组织)
-                status: this.state.status ? Number(this.state.status) : undefined, //状态
                 releaseDateStartDate: this.state.releaseDate[0],
                 releaseDateEndDate: this.state.releaseDate[1],
                 releaseStatus: this.state.releaseStatus ? Number(this.state.releaseStatus) : undefined, //是否发布(0--未发布,1--已发布)
+                auditStatus: this.state.auditStatus
             },
             success: function (data) {
                 let theArr = [];
-                if (!data.data && !data.data.list) {
+                if (!data.data || !data.data.list) {
                     if (data.error && data.error.length) {
                         message.warning(data.error[0].message);
                     };
@@ -54,7 +53,8 @@ const AchievementList = React.createClass({
                             ownerMobile: thisdata.ownerMobile,
                             status: thisdata.status,
                             releaseDate: thisdata.releaseDate,
-                            releaseDateFormattedDate: thisdata.releaseDateFormattedDate
+                            releaseDateFormattedDate: thisdata.releaseDateFormattedDate,
+                            auditStatus: thisdata.auditStatus
                         });
                     };
                 }
@@ -126,23 +126,10 @@ const AchievementList = React.createClass({
                         }
                     }
                 }, {
-                    title: '所有人联系方式',
-                    dataIndex: 'ownerMobile',
-                    key: 'ownerMobile',
-                }, {
-                    title: '状态',
-                    dataIndex: 'status',
-                    key: 'status',
-                    render: text => {
-                        switch (text) {
-                            case "0":
-                                return <span>进行中</span>;
-                            case "1":
-                                return <span>未解决</span>;
-                            case "2":
-                                return <span>已解决</span>;
-                        }
-                    }
+                    title: '审核状态',
+                    dataIndex: 'auditStatus',
+                    key: 'auditStatus',
+                    render: text => { return getTechAuditStatus(text) }
                 }, {
                     title: '发布时间',
                     dataIndex: 'releaseDateFormattedDate',
@@ -160,7 +147,14 @@ const AchievementList = React.createClass({
                 <Select.Option value={item.value} key={item.key}>{item.key}</Select.Option>
             )
         });
+        let auditArr = [];
+        techAuditStatusList.map(function (item) {
+            auditArr.push(
+                <Select.Option value={item.value} key={item.key}>{item.key}</Select.Option>
+            )
+        });
         this.state.achievementCategoryOption = theArr;
+        this.state.auditStatusOption = auditArr;
         this.loadData();
     },
     tableRowClick(record, index) {
@@ -222,9 +216,9 @@ const AchievementList = React.createClass({
         this.state.keyword = undefined;
         this.state.category = undefined;
         this.state.ownerType = undefined;
-        this.state.status = undefined;
         this.state.releaseStatus = undefined;
         this.state.releaseDate = [];
+        this.state.auditStatus = undefined;
         this.loadData();
     },
     searchSwitch() {
@@ -232,13 +226,16 @@ const AchievementList = React.createClass({
             searchMore: !this.state.searchMore
         });
     },
+    downLoadFile() {
+        window.open(globalConfig.context + '/api/user/achievement/downloadTemplate?sign=achievement_template')
+    },
     render() {
         const rowSelection = {
             selectedRowKeys: this.state.selectedRowKeys,
             onChange: (selectedRowKeys, selectedRows) => {
                 this.setState({
-                    selectedRows: selectedRows,
-                    selectedRowKeys: selectedRowKeys
+                    selectedRows: selectedRows.slice(-1),
+                    selectedRowKeys: selectedRowKeys.slice(-1)
                 });
             }
         };
@@ -249,7 +246,8 @@ const AchievementList = React.createClass({
                 <div className="content-title">
                     <span>科技成果管理</span>
                     <div className="patent-addNew">
-                        <Button type="primary" onClick={this.addClick}>发布成果<Icon type="plus" /></Button>
+                        <Button onClick={this.downLoadFile}>下载批量导入模板</Button>
+                        <Button className="addButton" type="primary" onClick={this.addClick}>发布成果<Icon type="plus" /></Button>
                     </div>
                 </div>
                 <div className="user-search">
@@ -267,19 +265,11 @@ const AchievementList = React.createClass({
                         onChange={(e) => { this.setState({ category: e }) }}>
                         {this.state.achievementCategoryOption}
                     </Select>
-                    <Select placeholder="选择所有人类型"
-                        style={{ width: 120 }}
-                        value={this.state.ownerType}
-                        onChange={(e) => { this.setState({ ownerType: e }) }}>
-                        <Select.Option value="0" >个人</Select.Option>
-                        <Select.Option value="1" >组织</Select.Option>
-                    </Select>
-                    <Select placeholder="选择成果状态" style={{ width: 120 }}
-                        value={this.state.status}
-                        onChange={(e) => { this.setState({ status: e }) }}>
-                        <Select.Option value="0" >进行中</Select.Option>
-                        <Select.Option value="1" >未解决</Select.Option>
-                        <Select.Option value="2" >已解决</Select.Option>
+                    <Select placeholder="选择审核状态"
+                        style={{ width: 160 }}
+                        value={this.state.auditStatus}
+                        onChange={(e) => { this.setState({ auditStatus: e }) }}>
+                        {this.state.auditStatusOption}
                     </Select>
                     <Select placeholder="选择是否发布" style={{ width: 120 }}
                         value={this.state.releaseStatus}
@@ -294,13 +284,11 @@ const AchievementList = React.createClass({
                         onClick={this.delectRow}>删除<Icon type="minus" /></Button>
                     <span>更多搜索<Switch defaultChecked={false} onChange={this.searchSwitch} /></span>
                     <div className="search-more" style={this.state.searchMore ? { display: 'none' } : {}}>
-                        <p>
-                            <span>发布时间 :</span>
-                            <RangePicker
-                                value={[this.state.releaseDate[0] ? moment(this.state.releaseDate[0]) : null,
-                                this.state.releaseDate[1] ? moment(this.state.releaseDate[1]) : null]}
-                                onChange={(data, dataString) => { this.setState({ releaseDate: dataString }); }} />
-                        </p>
+                        <span>发布时间 :</span>
+                        <RangePicker
+                            value={[this.state.releaseDate[0] ? moment(this.state.releaseDate[0]) : null,
+                            this.state.releaseDate[1] ? moment(this.state.releaseDate[1]) : null]}
+                            onChange={(data, dataString) => { this.setState({ releaseDate: dataString }); }} />
                     </div>
                 </div>
                 <div className="patent-table">

+ 26 - 7
js/component/account/achievement/techAchievement.less

@@ -21,10 +21,8 @@
         }
         .search-more {
             margin: 10px 0;
-            >p {
-                span {
-                    margin-right: 10px
-                }
+            >span {
+                margin-right: 10px
             }
         }
     }
@@ -33,15 +31,15 @@
 .patent-addNew {
     float: right;
     margin-left: 20px;
-    button {
+    .addButton {
         background: #ea0862;
         color: #fff;
         border: none;
         border-radius: 4px;
-        padding: 6px 10px;
+        padding: 4px 10px;
         margin-left: 20px;
     }
-    button:hover {
+    .addButton:hover {
         background: #ea0862;
     }
 }
@@ -69,4 +67,25 @@
     .set-submit {
         margin-right: 20px;
     }
+    .demandDetailShow-upload {
+        .anticon-eye-o {
+            margin-left: -8px;
+        }
+        .anticon-delete {
+            display: none
+        }
+    }
+}
+
+.ant-modal-content {
+    .modal-submit {
+        margin-left: 20px;
+    }
+}
+.ant-table-thead {
+    .ant-table-selection-column {
+        .ant-checkbox-wrapper{
+            display: none;
+        }
+    }
 }

File diff suppressed because it is too large
+ 1008 - 493
js/component/account/achievement/techAchievementDesc.jsx


+ 28 - 3
js/component/account/content.less

@@ -7,14 +7,39 @@
     .content-right {
         width: 84%;
         height: 100%;
-        float:left;
-        overflow-y:auto;
+        float: left;
+        overflow-y: auto;
         padding: 20px;
         .ant-spin-nested-loading {
             height: 100%;
-            .ant-spin-container{
+            .ant-spin-container {
                 height: 100%;
             }
         }
     }
+    .loading-container {
+        text-align: center;
+        margin-bottom: 20px;
+        padding: 30px 50px;
+        margin: 20px 0;
+    }
+    .content-container {
+        background: #FFF;
+        padding: 20px;
+    }
+    .content-title {
+        color: #333;
+        font-size: 16px;
+        padding: 0 0 10px 0;
+    }
+    .content-body {
+        min-height: 400px;
+    }
+    .content-search {
+        margin-bottom: 6px;
+    }
+    .content-actions {
+        float: right;
+        margin-right: 20px;
+    }
 }

+ 51 - 23
js/component/account/demand/techDemand.jsx

@@ -5,8 +5,8 @@ import $ from 'jquery/src/ajax';
 import moment from 'moment';
 import './techDemand.less';
 import TechDemandDesc from './techDemandDesc.jsx';
-import { provinceArr, demandTypeList } from '../../dataDic.js';
-import { companySearch, getDemandType } from '../../tools.js';
+import { demandTypeList } from '../../dataDic.js';
+import { getDemandType } from '../../tools.js';
 
 const DemandList = React.createClass({
     loadData(pageNo) {
@@ -32,10 +32,11 @@ const DemandList = React.createClass({
                 validityPeriodEndDate: this.state.validityPeriodDate[1],
                 releaseDateStartDate: this.state.releaseDate[0],
                 releaseDateEndDate: this.state.releaseDate[1],
+                auditStatus: this.state.auditStatus
             },
             success: function (data) {
                 let theArr = [];
-                if (!data.data && !data.data.list) {
+                if (!data.data || !data.data.list) {
                     if (data.error && data.error.length) {
                         message.warning(data.error[0].message);
                     };
@@ -56,7 +57,8 @@ const DemandList = React.createClass({
                             releaseStatus: thisdata.releaseStatus,
                             employerId: thisdata.employerId,
                             releaseDateFormattedDate: thisdata.releaseDateFormattedDate,
-                            validityPeriodFormattedDate: thisdata.validityPeriodFormattedDate
+                            validityPeriodFormattedDate: thisdata.validityPeriodFormattedDate,
+                            auditStatus: thisdata.auditStatus
                         });
                     };
                 }
@@ -112,6 +114,24 @@ const DemandList = React.createClass({
                     key: 'demandType',
                     render: text => { return getDemandType(text); }
                 }, {
+                    title: '审核状态',
+                    dataIndex: 'auditStatus',
+                    key: 'auditStatus',
+                    render: text => {
+                        switch (text) {
+                            case "0":
+                                return <span>未提交审核(草稿)</span>;
+                            case "1":
+                                return <span>提交审核</span>;
+                            case "2":
+                                return <span>审核中</span>;
+                            case "3":
+                                return <span>审核通过</span>;
+                            case "4":
+                                return <span>审核未通过</span>;
+                        }
+                    }
+                }, {
                     title: '需求状态',
                     dataIndex: 'status',
                     key: 'status',
@@ -204,6 +224,7 @@ const DemandList = React.createClass({
     },
     reset() {
         this.state.serialNumber = undefined;
+        this.state.auditStatus = undefined;
         this.state.name = undefined;
         this.state.keyword = undefined;
         this.state.demandType = undefined;
@@ -224,8 +245,8 @@ const DemandList = React.createClass({
             selectedRowKeys: this.state.selectedRowKeys,
             onChange: (selectedRowKeys, selectedRows) => {
                 this.setState({
-                    selectedRows: selectedRows,
-                    selectedRowKeys: selectedRowKeys
+                    selectedRows: selectedRows.slice(-1),
+                    selectedRowKeys: selectedRowKeys.slice(-1)
                 });
             }
         };
@@ -262,11 +283,14 @@ const DemandList = React.createClass({
                         <Select.Option value="1" >未解决</Select.Option>
                         <Select.Option value="2" >已解决</Select.Option>
                     </Select>
-                    <Select placeholder="选择是否发布" style={{ width: 120 }}
-                        value={this.state.releaseStatus}
-                        onChange={(e) => { this.setState({ releaseStatus: e }) }}>
-                        <Select.Option value="0" >未发布</Select.Option>
-                        <Select.Option value="1" >已发布</Select.Option>
+                    <Select placeholder="选择审核状态" style={{ width: 160 }}
+                        value={this.state.auditStatus}
+                        onChange={(e) => { this.setState({ auditStatus: e }) }}>
+                        <Select.Option value="0" >未提交审核(草稿)</Select.Option>
+                        <Select.Option value="1" >提交审核</Select.Option>
+                        <Select.Option value="2" >审核中</Select.Option>
+                        <Select.Option value="3" >审核通过</Select.Option>
+                        <Select.Option value="4" >审核未通过</Select.Option>
                     </Select>
                     <Button type="primary" onClick={this.search}>搜索</Button>
                     <Button onClick={this.reset}>重置</Button>
@@ -275,18 +299,22 @@ const DemandList = React.createClass({
                         onClick={this.delectRow}>删除<Icon type="minus" /></Button>
                     <span>更多搜索<Switch defaultChecked={false} onChange={this.searchSwitch} /></span>
                     <div className="search-more" style={this.state.searchMore ? { display: 'none' } : {}}>
-                        <p>
-                            <span>有效期限 :</span>
-                            <RangePicker
-                                value={[this.state.validityPeriodDate[0] ? moment(this.state.validityPeriodDate[0]) : null,
-                                this.state.validityPeriodDate[1] ? moment(this.state.validityPeriodDate[1]) : null]}
-                                onChange={(data, dataString) => { this.setState({ validityPeriodDate: dataString }); }} />
-                            <span>发布时间 :</span>
-                            <RangePicker
-                                value={[this.state.releaseDate[0] ? moment(this.state.releaseDate[0]) : null,
-                                this.state.releaseDate[1] ? moment(this.state.releaseDate[1]) : null]}
-                                onChange={(data, dataString) => { this.setState({ releaseDate: dataString }); }} />
-                        </p>
+                        <Select placeholder="选择是否发布" style={{ width: 120 }}
+                            value={this.state.releaseStatus}
+                            onChange={(e) => { this.setState({ releaseStatus: e }) }}>
+                            <Select.Option value="0" >未发布</Select.Option>
+                            <Select.Option value="1" >已发布</Select.Option>
+                        </Select>
+                        <span>有效期限 :</span>
+                        <RangePicker
+                            value={[this.state.validityPeriodDate[0] ? moment(this.state.validityPeriodDate[0]) : null,
+                            this.state.validityPeriodDate[1] ? moment(this.state.validityPeriodDate[1]) : null]}
+                            onChange={(data, dataString) => { this.setState({ validityPeriodDate: dataString }); }} />
+                        <span>发布时间 :</span>
+                        <RangePicker
+                            value={[this.state.releaseDate[0] ? moment(this.state.releaseDate[0]) : null,
+                            this.state.releaseDate[1] ? moment(this.state.releaseDate[1]) : null]}
+                            onChange={(data, dataString) => { this.setState({ releaseDate: dataString }); }} />
                     </div>
                 </div>
                 <div className="patent-table">

+ 24 - 4
js/component/account/demand/techDemand.less

@@ -21,10 +21,8 @@
         }
         .search-more {
             margin: 10px 0;
-            >p {
-                span {
-                    margin-right: 10px
-                }
+            span {
+                margin-right: 10px
             }
         }
     }
@@ -69,4 +67,26 @@
     .set-submit {
         margin-right: 20px;
     }
+    .demandDetailShow-upload {
+        .anticon-eye-o {
+            margin-left: -8px;
+        }
+        .anticon-delete {
+            display: none
+        }
+    }
+}
+
+.ant-modal-content {
+    .modal-submit {
+        margin-left: 20px;
+    }
+}
+
+.ant-table-thead {
+    .ant-table-selection-column {
+        .ant-checkbox-wrapper {
+            display: none;
+        }
+    }
 }

File diff suppressed because it is too large
+ 795 - 281
js/component/account/demand/techDemandDesc.jsx


+ 411 - 0
js/component/account/index/collection.jsx

@@ -0,0 +1,411 @@
+import React from 'react';
+import { Spin, Button, Tabs, Table } from 'antd';
+import ajax from 'jquery/src/ajax/xhr.js'
+import $ from 'jquery/src/ajax';
+import DemandDesc from '../../portal/search/demandDesc';
+import AchievementDesc from '../../portal/search/achievementDesc';
+import { getProvince } from '../../NewDicProvinceList';
+
+import avatarImg from '../../../../image/avatarImg.png';
+
+import './content.less';
+
+const TabPane = Tabs.TabPane;
+
+const Content = React.createClass({
+    achievementLoadData(pageNo) {
+        this.state.data = [];
+        this.setState({
+            loading: true
+        });
+        $.ajax({
+            method: "get",
+            dataType: "json",
+            crossDomain: false,
+            url: globalConfig.context + "/api/user/portal/achievementInterestList",
+            data: {
+                pageNo: pageNo || 1,
+                pageSize: this.state.achievementPagination.pageSize
+            },
+            success: function (data) {
+                let theArr = [];
+                if (!data.data || !data.data.list) {
+                    if (data.error && data.error.length) {
+                        message.warning(data.error[0].message);
+                    };
+                } else {
+                    for (let i = 0; i < data.data.list.length; i++) {
+                        let thisdata = data.data.list[i];
+                        theArr.push({
+                            key: i,
+                            interestId: thisdata.id,
+                            id: thisdata.achievementId,
+                            createTime: thisdata.createTime,
+                            name: thisdata.name,
+                            serialNumber: thisdata.serialNumber,
+                            keyword: thisdata.keyword,
+                            deletedSign: thisdata.deletedSign,
+                            auditStatus: thisdata.auditStatus,
+                            createTimeFormattedDate: thisdata.createTimeFormattedDate
+                        });
+                    };
+                }
+                this.state.achievementPagination.current = data.data.pageNo;
+                this.state.achievementPagination.total = data.data.totalCount;
+                this.setState({
+                    achievementDataSource: theArr,
+                    achievementPagination: this.state.achievementPagination
+                });
+            }.bind(this),
+        }).always(function () {
+            this.setState({
+                loading: false
+            });
+        }.bind(this));
+    },
+    demandLoadData(pageNo) {
+        this.state.data = [];
+        this.setState({
+            loading: true
+        });
+        $.ajax({
+            method: "get",
+            dataType: "json",
+            crossDomain: false,
+            url: globalConfig.context + "/api/user/portal/demandInterestList",
+            data: {
+                pageNo: pageNo || 1,
+                pageSize: this.state.demandPagination.pageSize
+            },
+            success: function (data) {
+                let theArr = [];
+                if (!data.data || !data.data.list) {
+                    if (data.error && data.error.length) {
+                        message.warning(data.error[0].message);
+                    };
+                } else {
+                    for (let i = 0; i < data.data.list.length; i++) {
+                        let thisdata = data.data.list[i];
+                        theArr.push({
+                            key: i,
+                            interestId: thisdata.id,
+                            id: thisdata.demandId,
+                            createTime: thisdata.createTime,
+                            keyword: thisdata.keyword,
+                            name: thisdata.name,
+                            status: thisdata.status,
+                            serialNumber: thisdata.serialNumber,
+                            deletedSign: thisdata.deletedSign,
+                            auditStatus: thisdata.auditStatus,
+                            createTimeFormattedDate: thisdata.createTimeFormattedDate
+                        });
+                    };
+                }
+                this.state.demandPagination.current = data.data.pageNo;
+                this.state.demandPagination.total = data.data.totalCount;
+                this.setState({
+                    demandDataSource: theArr,
+                    demandPagination: this.state.demandPagination
+                });
+            }.bind(this),
+        }).always(function () {
+            this.setState({
+                loading: false
+            });
+        }.bind(this));
+    },
+    subscriberLoadData(pageNo) {
+        this.state.data = [];
+        this.setState({
+            loading: true
+        });
+        $.ajax({
+            method: "get",
+            dataType: "json",
+            crossDomain: false,
+            url: globalConfig.context + "/api/user/interest/interestUserList",
+            data: {
+                pageNo: pageNo || 1,
+                pageSize: this.state.subscriberPagination.pageSize
+            },
+            success: function (data) {
+                let theArr = [];
+                if (!data.data || !data.data.list) {
+                    if (data.error && data.error.length) {
+                        message.warning(data.error[0].message);
+                    };
+                } else {
+                    for (let i = 0; i < data.data.list.length; i++) {
+                        let thisdata = data.data.list[i];
+                        theArr.push({
+                            key: i,
+                            interestId: thisdata.interestId,  //关注ID  /api/user/interest/interestUser接口 interestId
+                            uid: thisdata.uid,  //被关注人ID
+                            username: thisdata.username,  //个人用户名称
+                            unitName: thisdata.unitName, //组织用户名称
+                            name: thisdata.type == 0 ? thisdata.username : thisdata.unitName,
+                            userProvince: thisdata.userProvince, //个人用户省份
+                            orgProvince: thisdata.orgProvince, 		//组织用户省份
+                            province: thisdata.type == 0 ? thisdata.userProvince : thisdata.orgProvince,
+                            createTime: thisdata.createTime,
+                            type: thisdata.type, 	//被关注人类型 (0--个人用户,1--组织用户)
+                            demandNum: thisdata.demandNum, 	//科技需求数量
+                            achievementNum: thisdata.achievementNum, 	//科技成果数量
+                            personPortraitUrl: thisdata.personPortraitUrl,// 个人用户头像URL
+                            logoUrl: thisdata.logoUrl, //公司LOGO URL
+                            avaterUrl: thisdata.type == 0 ? thisdata.personPortraitUrl : thisdata.logoUrl,
+                            createTimeFormattedDate: thisdata.createTimeFormattedDate, //关注时间
+                        });
+                    };
+                }
+                this.state.subscriberPagination.current = data.data.pageNo;
+                this.state.subscriberPagination.total = data.data.totalCount;
+                this.setState({
+                    subscriberDataSource: theArr,
+                    subscriberPagination: this.state.subscriberPagination
+                });
+            }.bind(this),
+        }).always(function () {
+            this.setState({
+                loading: false
+            });
+        }.bind(this));
+    },
+    getInitialState() {
+        return {
+            loading: false,
+            achievementShowDesc: false,
+            achievementPagination: {
+                defaultCurrent: 1,
+                defaultPageSize: 10,
+                showQuickJumper: true,
+                pageSize: 10,
+                onChange: function (page) {
+                    this.achievementLoadData(page);
+                }.bind(this),
+                showTotal: function (total) {
+                    return '共' + total + '条数据';
+                }
+            },
+            achievementColumns: [
+                {
+                    title: '编号',
+                    dataIndex: 'serialNumber',
+                    key: 'serialNumber',
+                }, {
+                    title: '成果名称',
+                    dataIndex: 'name',
+                    key: 'name',
+                }, {
+                    title: '关键字',
+                    dataIndex: 'keyword',
+                    key: 'keyword',
+                }, {
+                    title: '状态',
+                    dataIndex: 'auditStatus',
+                    key: 'auditStatus',
+                    render: (text, record) => {
+                        if (record.deletedSign == 1) {
+                            return "已删除"
+                        } else if (record.auditStatus != 3) {
+                            return "已下架"
+                        } else {
+                            return "正常"
+                        }
+                    }
+                }, {
+                    title: '关注时间',
+                    dataIndex: 'createTimeFormattedDate',
+                    key: 'createTimeFormattedDate',
+                }
+            ],
+            achievementDataSource: [],
+            demandShowDesc: false,
+            demandPagination: {
+                defaultCurrent: 1,
+                defaultPageSize: 10,
+                showQuickJumper: true,
+                pageSize: 10,
+                onChange: function (page) {
+                    this.demandLoadData(page);
+                }.bind(this),
+                showTotal: function (total) {
+                    return '共' + total + '条数据';
+                }
+            },
+            demandColumns: [
+                {
+                    title: '编号',
+                    dataIndex: 'serialNumber',
+                    key: 'serialNumber',
+                }, {
+                    title: '需求名称',
+                    dataIndex: 'name',
+                    key: 'name',
+                }, {
+                    title: '关键字',
+                    dataIndex: 'keyword',
+                    key: 'keyword',
+                }, {
+                    title: '状态',
+                    dataIndex: 'auditStatus',
+                    key: 'auditStatus',
+                    render: (text, record) => {
+                        if (record.deletedSign == 1) {
+                            return "已删除"
+                        } else if (record.auditStatus != 3) {
+                            return "已下架"
+                        } else if (record.status == 0) {
+                            return "未解决"
+                        } else if (record.status == 1) {
+                            return "已解决"
+                        }
+                    }
+                }, {
+                    title: '关注时间',
+                    dataIndex: 'createTimeFormattedDate',
+                    key: 'createTimeFormattedDate',
+                }
+            ],
+            demandDataSource: [],
+            subscriberShowDesc: false,
+            subscriberPagination: {
+                defaultCurrent: 1,
+                defaultPageSize: 10,
+                showQuickJumper: true,
+                pageSize: 10,
+                onChange: function (page) {
+                    this.subscriberLoadData(page);
+                }.bind(this),
+                showTotal: function (total) {
+                    return '共' + total + '条数据';
+                }
+            },
+            subscriberColumns: [
+                {
+                    title: null,
+                    dataIndex: 'avaterUrl',
+                    key: 'avaterUrl',
+                    width: 120,
+                    render: text => {
+                        return <div className="avatar-box">
+                            <img src={text ? (globalConfig.avatarHost + '/upload' + text) : avatarImg} alt="" />
+                        </div>
+                    }
+                }, {
+                    title: '名称',
+                    dataIndex: 'name',
+                    key: 'name',
+                }, {
+                    title: '地区',
+                    dataIndex: 'province',
+                    key: 'province',
+                    render: (text) => { return getProvince(text); }
+                }, {
+                    title: '类型',
+                    dataIndex: 'type',
+                    key: 'type',
+                    render: (text) => {
+                        if (text == 0) {
+                            return "个人用户"
+                        } else if (text == 1) {
+                            return "组织用户"
+                        }
+                    }
+                }, {
+                    title: '科技成果数量',
+                    dataIndex: 'achievementNum',
+                    key: 'achievementNum',
+                }, {
+                    title: '科技需求数量',
+                    dataIndex: 'demandNum',
+                    key: 'demandNum',
+                }, {
+                    title: '关注时间',
+                    dataIndex: 'createTimeFormattedDate',
+                    key: 'createTimeFormattedDate',
+                }
+            ],
+            subscriberDataSource: [],
+        };
+    },
+    componentWillMount() {
+        this.achievementLoadData();
+    },
+    tabChange(key) {
+        if (key == 1) {
+            this.achievementLoadData();
+        } else if (key == 2) {
+            this.demandLoadData();
+        } else if (key == 3) {
+            this.subscriberLoadData();
+        }
+    },
+    demandRowClick(record, index) {
+        this.state.demandRowData = record;
+        if (record.deletedSign !== 1 && record.auditStatus == 3) {
+            this.setState({
+                demandShowDesc: true
+            });
+        };
+    },
+    achievementRowClick(record, index) {
+        this.state.achievementRowData = record;
+        if (record.deletedSign !== 1 && record.auditStatus == 3) {
+            this.setState({
+                achievementShowDesc: true
+            });
+        };
+    },
+    subscriberRowClick(record, index) {
+        window.open(globalConfig.context + '/user/subscriberDetail.html?rid=' + record.uid + '&type=' + record.type);
+    },
+    demandCloseDesc(e) {
+        this.setState({
+            demandShowDesc: e
+        });
+        this.demandLoadData();
+    },
+    achievementCloseDesc(e) {
+        this.setState({
+            achievementShowDesc: e
+        });
+        this.achievementLoadData();
+    },
+    render() {
+        return (
+            <div className="collection">
+                <Spin spinning={this.state.loading} >
+                    <Tabs defaultActiveKey="1" onChange={this.tabChange}>
+                        <TabPane tab="我感兴趣的成果" key="1">
+                            <Table columns={this.state.achievementColumns}
+                                dataSource={this.state.achievementDataSource}
+                                pagination={this.state.achievementPagination}
+                                onRowClick={this.achievementRowClick} />
+                        </TabPane>
+                        <TabPane tab="我感兴趣的需求" key="2">
+                            <Table columns={this.state.demandColumns}
+                                dataSource={this.state.demandDataSource}
+                                pagination={this.state.demandPagination}
+                                onRowClick={this.demandRowClick} />
+                        </TabPane>
+                        <TabPane tab="我感兴趣的用户" key="3">
+                            <Table columns={this.state.subscriberColumns}
+                                dataSource={this.state.subscriberDataSource}
+                                pagination={this.state.subscriberPagination}
+                                onRowClick={this.subscriberRowClick} />
+                        </TabPane>
+                    </Tabs>
+                </Spin>
+                <DemandDesc data={this.state.demandRowData}
+                    showDesc={this.state.demandShowDesc}
+                    closeDesc={this.demandCloseDesc} />
+                <AchievementDesc data={this.state.achievementRowData}
+                    showDesc={this.state.achievementShowDesc}
+                    closeDesc={this.achievementCloseDesc} />
+            </div>
+        )
+    }
+});
+
+export default Content;

+ 51 - 132
js/component/account/index/content.jsx

@@ -1,142 +1,61 @@
-import React from 'react';
-import { Spin, Button, Tabs } from 'antd';
-import ajax from 'jquery/src/ajax/xhr.js'
-import $ from 'jquery/src/ajax';
-
+import React, { Component } from 'react';
 import '../content.less';
-import './content.less';
-import LeftTab from './leftTab.jsx';
-
-import weixin from '../../../../image/weixin-w.png';
-import qq from '../../../../image/qq-w.png';
-import weibo from '../../../../image/weibo-w.png';
-
-const TabPane = Tabs.TabPane;
+import LeftTab from './leftTab';
 
-const Content = React.createClass({
-    getInitialState() {
-        return {
-            per: '24',
+class Content extends Component {
+    constructor() {
+        super();
+        this.state = {
             loading: false,
-            userlvl: '0',
-            userid: '1234567',
-            follow: '0',
-            chengguo: '0',
-            kaifa: '0',
-            fuwu: '0',
-            xuqiu: '0',
-            activityArr: [{ type: '成果对接会', title: '龙岗区在线科技成果对接会——智能制造业专场', time: '2017-01-10', link: '' },
-            { type: '成果对接会', title: '钛白粉行业技术在线对接会', time: '2017-01-11', link: '' }]
+            component: 'div'
         };
-    },
-    getData() {
-        this.setState({
-            loading: false
-        });
-        $.ajax({
-            method: "get",
-            dataType: "json",
-            url: globalConfig.context + "/api/user/homePage",
-            success: function (data) {
-                if (data.data && data.data.personPortraitUrl && data.data.nickname) {
+    }
+    componentWillMount() {
+        if (window.location.hash) {
+            this.getKey(window.location.hash.substr(1));
+        } else {
+            this.getKey("normal");
+        };
+    }
+    getKey(key) {
+        switch (key) {
+            case 'normal':
+                require.ensure([], () => {
+                    const Normal = require('./normal').default;
                     this.setState({
-                        personPortraitUrl: data.data.personPortraitUrl,
-                        logoUrl:data.data.logoUrl,
-                        type:data.data.type,
-                        nickname: data.data.nickname,
-                        lvl: data.data.lvl,
-                        number: data.data.number
-                    })
-                };
-            }.bind(this),
-        }).done(function (data) {
-            if (data.error && data.error.length) {
-                message.warning(data.error[0].message);
-            }
-        }.bind(this)).always(function () {
-            this.setState({
-                loading: false
-            });
-        }.bind(this));
-    },
-    componentDidMount() {
-        this.getData();
-    },
-    handlekey(key) {
-        this.setState({
-            leftKey: key,
-        });
-    },
-    tabChange(key) {
-
-    },
+                        component: Normal
+                    });
+                });
+                break;
+            case 'collection':
+                require.ensure([], () => {
+                    const Collection = require('./collection').default;
+                    this.setState({
+                        component: Collection
+                    });
+                });
+                break;
+            case 'orderList':
+                require.ensure([], () => {
+                    const OrderList = require('./orderList').default;
+                    this.setState({
+                        component: OrderList
+                    });
+                });
+                break;
+        };
+        window.location.hash = key;
+    }
     render() {
         return (
-                <div className="acc-content">
-                    <LeftTab handlekey={this.handlekey} />
-                    <div className="content-right">
-                        <Spin spinning={this.state.loading} className='spin-box'>
-                            <div className="index-content">
-                                <div className="index-userdata clearfix">
-                                    <p className="acc-title">{this.state.number}</p>
-                                    <div className="userdata-img">
-                                        {this.state.type == 0 ?
-                                        <img src={globalConfig.avatarHost + "/upload" + this.state.personPortraitUrl} alt="" /> : 
-                                        <img src={globalConfig.avatarHost + "/upload" + this.state.logoUrl} alt="" />}
-                                    </div>
-                                    <div className="userdata-content">
-                                        {(() => {
-                                            switch (userData.lvl || this.state.userlvl) {
-                                                case '0':
-                                                    return <p className="userdata-lvl">等级:<span>LV1</span> 普通用户</p>;
-                                                case '1':
-                                                    return <p className="userdata-lvl">等级:<span>LV2</span> 已认证用户</p>;
-                                            };
-                                        })()}
-                                        <p>完善资料 {this.state.per}% ,<a href="./set.html">继续完善</a>,有助于提高您的资信</p>
-                                        <p className="userdata-relate" style={{ 'display': 'none' }}>
-                                            <Button className="relateqq"><img src={qq} alt="" /> QQ账号登录</Button>
-                                            <Button className="relateweibo"><img src={weibo} alt="" />微博账号登录</Button>
-                                            <Button className="relateweixin"><img src={weixin} alt="" />微信账号登录</Button>
-                                        </p>
-                                        <div className="userdata-follow">已有<a href="">{this.state.follow}</a>人关注你</div>
-                                    </div>
-                                </div>
-                                <div className="index-record">
-                                    <p className="acc-title">我的轨迹</p>
-                                    <ul className="record-list clearfix">
-                                        <li>技术成果:<a href="">{this.state.chengguo}</a>项</li>
-                                        <li>技术开发:<a href="">{this.state.kaifa}</a>项</li>
-                                        <li>科技服务:<a href="">{this.state.fuwu}</a>项</li>
-                                        <li>发布需求:<a href="">{this.state.xuqiu}</a>项</li>
-                                    </ul>
-                                </div>
-                                <div className="index-activity">
-                                    <Tabs defaultActiveKey="1" onChange={this.tabChange}>
-                                        <TabPane tab="活动" key="1">
-                                            <p className="acc-title">即将举办的活动</p>
-                                            <ul className="activity-list">
-                                                {
-                                                    this.state.activityArr.map(function (item, i) {
-                                                        return <li key={i}>
-                                                            <span className="list-type">[{item.type}]</span>
-                                                            <span className="list-title">{item.title}</span>
-                                                            <a href={item.link}>报名</a>
-                                                            <span className="list-time">{item.time}</span>
-                                                        </li>;
-                                                    })
-                                                }
-                                            </ul>
-                                        </TabPane>
-                                        <TabPane tab="其他" key="2">Content of Tab Pane 2</TabPane>
-                                    </Tabs>
-                                </div>
-                            </div>
-                        </Spin>
-                    </div>
+            <div className="acc-content">
+                <LeftTab handlekey={this.getKey.bind(this)} />
+                <div className="content-right">
+                    <this.state.component />
                 </div>
-            )
+            </div>
+        )
     }
-});
+}
 
-export default Content;
+export default Content;

+ 22 - 4
js/component/account/index/content.less

@@ -6,9 +6,8 @@
             font-size: 16px;
             margin-bottom: 10px;
             span {
-                font-size: 12px;
-                color: #999;
-                margin-left: 10px;
+                font-size: 18px;
+                color: @a-color;
             }
         }
         .index-userdata {
@@ -101,7 +100,7 @@
             .activity-list {
                 li {
                     border-bottom: 1px dashed #eee;
-                    padding:10px 0;
+                    padding: 10px 0;
                     .list-type {
                         color: #666
                     }
@@ -124,4 +123,23 @@
                 }
             }
         }
+    }
+
+    .collection {
+        background: #fff;
+        padding: 20px;
+        .avatar-box {
+            height: 80px;
+            width: 80px;
+            padding-top: 80px;
+            margin: 0 auto;
+            position: relative;
+            img {
+                position: absolute;
+                top: 0;
+                left: 0;
+                height: 80px;
+                width: auto;
+            }
+        }
     }

+ 12 - 11
js/component/account/index/leftTab.jsx

@@ -8,7 +8,7 @@ const MenuItemGroup = Menu.ItemGroup;
 const LeftTab = React.createClass({
     getInitialState() {
         return {
-            current: 'tongchang',
+            current: 'normal'
         };
     },
     handleClick(e) {
@@ -17,24 +17,25 @@ const LeftTab = React.createClass({
             current: e.key,
         });
     },
+    componentWillMount() {
+        if (window.location.hash) {
+            this.state.current = window.location.hash.substr(1);
+        };
+    },
     render() {
         return (
             <Menu onClick={this.handleClick}
                 selectedKeys={[this.state.current]}
                 mode="vertical"
-                className="account-left"
-                >
-                <Menu.Item key="tongchang">
+                className="account-left">
+                <Menu.Item key="normal">
                     常用功能
                 </Menu.Item>
-                <Menu.Item key="in">
-                    供应发布
-                </Menu.Item>
-                <Menu.Item key="want">
-                    需求发布
+                <Menu.Item key="collection">
+                    我感兴趣
                 </Menu.Item>
-                <Menu.Item key="my">
-                    我的收藏
+                <Menu.Item key="orderList">
+                    我的订单
                 </Menu.Item>
             </Menu>
         );

+ 112 - 0
js/component/account/index/normal.jsx

@@ -0,0 +1,112 @@
+import React from 'react';
+import { Spin, Button, Tabs } from 'antd';
+import ajax from 'jquery/src/ajax/xhr.js'
+import $ from 'jquery/src/ajax';
+
+import '../content.less';
+import './content.less';
+import LeftTab from './leftTab.jsx';
+import Collection from './collection';
+
+import weixin from '../../../../image/weixin-w.png';
+import qq from '../../../../image/qq-w.png';
+import weibo from '../../../../image/weibo-w.png';
+
+const TabPane = Tabs.TabPane;
+
+const Content = React.createClass({
+    getInitialState() {
+        return {
+            loading: false
+        };
+    },
+    getData() {
+        this.setState({
+            loading: false
+        });
+        $.ajax({
+            method: "get",
+            dataType: "json",
+            url: globalConfig.context + "/api/user/homePage"
+        }).done(function (data) {
+            if (data.error && data.error.length) {
+                message.warning(data.error[0].message);
+            } else {
+                this.setState({
+                    achievementNum: data.data.achievementNum,
+                    copyrightNum: data.data.copyrightNum,
+                    demandNum: data.data.demandNum,
+                    email: data.data.email,
+                    intellectualPropertyNum: data.data.intellectualPropertyNum,
+                    logoUrl: data.data.logoUrl,
+                    level: data.data.lvl,
+                    nickname: data.data.nickname,
+                    number: data.data.number,
+                    patentNum: data.data.patentNum,
+                    personPortraitUrl: data.data.personPortraitUrl,
+                    techProjectNum: data.data.techProjectNum,
+                    type: data.data.type,
+                    uid: data.data.uid
+                })
+            }
+        }.bind(this)).always(function () {
+            this.setState({
+                loading: false
+            });
+        }.bind(this));
+    },
+    componentWillMount() {
+        this.getData();
+    },
+    tabChange(key) {
+
+    },
+    render() {
+        return (
+            <Spin spinning={this.state.loading} className='spin-box'>
+                <div className="index-content">
+                    <div className="index-userdata clearfix">
+                        <p className="acc-title">欢迎, No.<span>{this.state.number}</span>     </p>
+                        <div className="userdata-img">
+                            <img src={globalConfig.avatarHost + "/upload" + (this.state.type == 0 ? this.state.personPortraitUrl : this.state.logoUrl)} alt="" />
+                        </div>
+                        <div className="userdata-content">
+                            {(() => {
+                                if (this.state.level > 0) {
+                                    return <p className="userdata-lvl"><span>Lv.{this.state.level}</span> 用户</p>;
+                                } else {
+                                    return <p className="userdata-lvl"><span>用户未认证</span><a style={{ marginLeft: '20px' }} href={userData.type == 1 ? globalConfig.context + "/user/groupCertify.html" : globalConfig.context + "/user/certify.html"}>进行实名认证</a></p>;
+                                };
+                            })()}
+                            <p><a href={globalConfig.context + "/user/account/set.html"}>填写完整资料</a>,有助于提高您的资信</p>
+                            <p><a href={globalConfig.context + "/portal/search/achievement.html"}>成果搜索</a></p>
+                            <p><a href={globalConfig.context + "/portal/search/demand.html"}>需求搜索</a></p>
+                            <p><a href={globalConfig.context + "/portal/search/subscriber.html"}>用户搜索</a></p>
+                            <p className="userdata-relate" style={{ 'display': 'none' }}>
+                                <Button className="relateqq"><img src={qq} alt="" /> QQ账号登录</Button>
+                                <Button className="relateweibo"><img src={weibo} alt="" />微博账号登录</Button>
+                                <Button className="relateweixin"><img src={weixin} alt="" />微信账号登录</Button>
+                            </p>
+                        </div>
+                    </div>
+                    <div className="index-record">
+                        <p className="acc-title">我的轨迹</p>
+                        <ul className="record-list clearfix">
+                            <li>专利:<a href={globalConfig.context + "/user/account/services.html#patent"}>{this.state.patentNum || 0}</a> 项</li>
+                            <li>软著:<a href={globalConfig.context + "/user/account/services.html#copyright"}>{this.state.copyrightNum || 0}</a> 项</li>
+                            <li>知识产权:<a href={globalConfig.context + "/user/account/services.html#cognizance"}>{this.state.intellectualPropertyNum || 0}</a> 项</li>
+                            <li>科技项目:<a href={globalConfig.context + "/user/account/services.html#technology"}>{this.state.techProjectNum || 0}</a> 项</li>
+                            <li>技术成果:<a href={globalConfig.context + "/user/account/achievement.html#techAchievement"}>{this.state.achievementNum || 0}</a> 项</li>
+                            <li>发布需求:<a href={globalConfig.context + "/user/account/demand.html#techDemand"}>{this.state.demandNum || 0}</a> 项</li>
+                        </ul>
+                    </div>
+                    <div className="index-activity">
+                        <Collection />
+                    </div>
+                </div>
+            </Spin>
+        )
+    }
+});
+
+export default Content;

+ 320 - 0
js/component/account/index/orderList.jsx

@@ -0,0 +1,320 @@
+import React from 'react';
+import { Spin, Button, Tabs, Table } from 'antd';
+import ajax from 'jquery/src/ajax/xhr.js'
+import $ from 'jquery/src/ajax';
+import DemandDesc from '../../portal/search/demandDesc';
+import AchievementDesc from '../../portal/search/achievementDesc';
+import { getOrderStatus } from '../../tools';
+
+import './content.less';
+
+const TabPane = Tabs.TabPane;
+
+const Content = React.createClass({
+    achievementLoadData(pageNo) {
+        this.state.data = [];
+        this.setState({
+            loading: true
+        });
+        $.ajax({
+            method: "get",
+            dataType: "json",
+            crossDomain: false,
+            url: globalConfig.context + "/api/user/portal/order/achievementOrderList",
+            data: {
+                pageNo: pageNo || 1,
+                pageSize: this.state.achievementPagination.pageSize
+            },
+            success: function (data) {
+                let theArr = [];
+                if (!data.data || !data.data.list) {
+                    if (data.error && data.error.length) {
+                        message.warning(data.error[0].message);
+                    };
+                } else {
+                    for (let i = 0; i < data.data.list.length; i++) {
+                        let thisdata = data.data.list[i];
+                        theArr.push({
+                            key: i,
+                            orderId: thisdata.id,
+                            serialNumber: thisdata.serialNumber,
+                            id: thisdata.achievementId,
+                            createTime: thisdata.createTime,
+                            status: thisdata.status,
+                            intentionMoney: thisdata.intentionMoney,
+                            contractMoney: thisdata.contractMoney,
+                            commission: thisdata.commission,
+                            serviceMoney: thisdata.serviceMoney,
+                            name: thisdata.name,
+                            achievementSerialNumber: thisdata.achievementSerialNumber,
+                            deletedSign: thisdata.deletedSign,
+                            auditStatus: thisdata.auditStatus,
+                            createTimeFormattedDate: thisdata.createTimeFormattedDate
+                        });
+                    };
+                }
+                this.state.achievementPagination.current = data.data.pageNo;
+                this.state.achievementPagination.total = data.data.totalCount;
+                this.setState({
+                    achievementDataSource: theArr,
+                    achievementPagination: this.state.achievementPagination
+                });
+            }.bind(this),
+        }).always(function () {
+            this.setState({
+                loading: false
+            });
+        }.bind(this));
+    },
+    demandLoadData(pageNo) {
+        this.state.data = [];
+        this.setState({
+            loading: true
+        });
+        $.ajax({
+            method: "get",
+            dataType: "json",
+            crossDomain: false,
+            url: globalConfig.context + "/api/user/portal/order/demandOrderList",
+            data: {
+                pageNo: pageNo || 1,
+                pageSize: this.state.demandPagination.pageSize
+            },
+            success: function (data) {
+                let theArr = [];
+                if (!data.data || !data.data.list) {
+                    if (data.error && data.error.length) {
+                        message.warning(data.error[0].message);
+                    };
+                } else {
+                    for (let i = 0; i < data.data.list.length; i++) {
+                        let thisdata = data.data.list[i];
+                        theArr.push({
+                            key: i,
+                            orderId: thisdata.id,
+                            name: thisdata.name,
+                            demandSerialNumber: thisdata.demandSerialNumber,
+                            id: thisdata.demandId,
+                            createTime: thisdata.createTime,
+                            createTimeFormattedDate: thisdata.createTimeFormattedDate,
+                            serialNumber: thisdata.serialNumber,
+                            status: thisdata.status,
+                            auditStatus: thisdata.auditStatus,
+                            deletedSign: thisdata.deletedSign,
+                            intentionMoney: thisdata.intentionMoney,  //意向金
+                            contractMoney: thisdata.contractMoney,  //合同金
+                            commission: thisdata.commission,  //佣金
+                            serviceMoney: thisdata.serviceMoney  //服务金
+                        });
+                    };
+                }
+                this.state.demandPagination.current = data.data.pageNo;
+                this.state.demandPagination.total = data.data.totalCount;
+                this.setState({
+                    demandDataSource: theArr,
+                    demandPagination: this.state.demandPagination
+                });
+            }.bind(this),
+        }).always(function () {
+            this.setState({
+                loading: false
+            });
+        }.bind(this));
+    },
+    getInitialState() {
+        return {
+            loading: false,
+            demandShowDesc: false,
+            achievementShowDesc: false,
+            achievementPagination: {
+                defaultCurrent: 1,
+                defaultPageSize: 10,
+                showQuickJumper: true,
+                pageSize: 10,
+                onChange: function (page) {
+                    this.achievementLoadData(page);
+                }.bind(this),
+                showTotal: function (total) {
+                    return '共' + total + '条数据';
+                }
+            },
+            achievementColumns: [
+                {
+                    title: '编号',
+                    dataIndex: 'serialNumber',
+                    key: 'serialNumber',
+                }, {
+                    title: '成果名称',
+                    dataIndex: 'name',
+                    key: 'name',
+                }, {
+                    title: '订单状态',
+                    dataIndex: 'auditStatus',
+                    key: 'auditStatus',
+                    render: (text, record) => {
+                        if (record.deletedSign == 1) {
+                            return "已删除"
+                        } else if (record.auditStatus != 3) {
+                            return "已下架"
+                        } else {
+                            return "正常"
+                        }
+                    }
+                }, {
+                    title: '流程状态',
+                    dataIndex: 'status',
+                    key: 'status',
+                    render: (text, record) => { return getOrderStatus(text); }
+                }, {
+                    title: '意向金',
+                    dataIndex: 'intentionMoney',
+                    key: 'intentionMoney',
+                }, {
+                    title: '合同金',
+                    dataIndex: 'contractMoney',
+                    key: 'contractMoney',
+                }, {
+                    title: '佣金',
+                    dataIndex: 'commission',
+                    key: 'commission',
+                }, {
+                    title: '服务金',
+                    dataIndex: 'serviceMoney',
+                    key: 'serviceMoney',
+                }, {
+                    title: '接单时间',
+                    dataIndex: 'createTimeFormattedDate',
+                    key: 'createTimeFormattedDate',
+                }
+            ],
+            achievementDataSource: [],
+            demandPagination: {
+                defaultCurrent: 1,
+                defaultPageSize: 10,
+                showQuickJumper: true,
+                pageSize: 10,
+                onChange: function (page) {
+                    this.demandLoadData(page);
+                }.bind(this),
+                showTotal: function (total) {
+                    return '共' + total + '条数据';
+                }
+            },
+            demandColumns: [
+                {
+                    title: '编号',
+                    dataIndex: 'serialNumber',
+                    key: 'serialNumber',
+                }, {
+                    title: '需求名称',
+                    dataIndex: 'name',
+                    key: 'name',
+                }, {
+                    title: '订单状态',
+                    dataIndex: 'auditStatus',
+                    key: 'auditStatus',
+                    render: (text, record) => {
+                        if (record.deletedSign == 1) {
+                            return "已删除"
+                        } else if (record.auditStatus != 3) {
+                            return "已下架"
+                        } else {
+                            return "正常"
+                        }
+                    }
+                }, {
+                    title: '流程状态',
+                    dataIndex: 'status',
+                    key: 'status',
+                    render: (text, record) => { return getOrderStatus(text); }
+                }, {
+                    title: '意向金',
+                    dataIndex: 'intentionMoney',
+                    key: 'intentionMoney',
+                }, {
+                    title: '合同金',
+                    dataIndex: 'contractMoney',
+                    key: 'contractMoney',
+                }, {
+                    title: '佣金',
+                    dataIndex: 'commission',
+                    key: 'commission',
+                }, {
+                    title: '服务金',
+                    dataIndex: 'serviceMoney',
+                    key: 'serviceMoney',
+                }, {
+                    title: '接单时间',
+                    dataIndex: 'createTimeFormattedDate',
+                    key: 'createTimeFormattedDate',
+                }
+            ],
+            demandDataSource: [],
+        };
+    },
+    componentWillMount() {
+        this.achievementLoadData();
+        this.demandLoadData();
+    },
+    tabChange(key) {
+
+    },
+    demandRowClick(record, index) {
+        this.state.demandRowData = record;
+        if (record.deletedSign != 1 && record.auditStatus == 3) {
+            this.setState({
+                demandShowDesc: true
+            });
+        };
+    },
+    achievementRowClick(record, index) {
+        this.state.achievementRowData = record;
+        if (record.deletedSign != 1 && record.auditStatus == 3) {
+            this.setState({
+                achievementShowDesc: true
+            });
+        };
+    },
+    demandCloseDesc(e) {
+        this.setState({
+            demandShowDesc: e
+        });
+        this.demandLoadData();
+    },
+    achievementCloseDesc(e) {
+        this.setState({
+            achievementShowDesc: e
+        });
+        this.achievementLoadData();
+    },
+    render() {
+        return (
+            <div className="collection">
+                <Spin spinning={this.state.loading} >
+                    <Tabs defaultActiveKey="1" onChange={this.tabChange}>
+                        <TabPane tab="我的成果订单" key="1">
+                            <Table columns={this.state.achievementColumns}
+                                dataSource={this.state.achievementDataSource}
+                                pagination={this.state.achievementPagination}
+                                onRowClick={this.achievementRowClick} />
+                        </TabPane>
+                        <TabPane tab="我的需求订单" key="2">
+                            <Table columns={this.state.demandColumns}
+                                dataSource={this.state.demandDataSource}
+                                pagination={this.state.demandPagination}
+                                onRowClick={this.demandRowClick} />
+                        </TabPane>
+                    </Tabs>
+                </Spin>
+                <DemandDesc data={this.state.demandRowData}
+                    showDesc={this.state.demandShowDesc}
+                    closeDesc={this.demandCloseDesc} />
+                <AchievementDesc data={this.state.achievementRowData}
+                    showDesc={this.state.achievementShowDesc}
+                    closeDesc={this.achievementCloseDesc} />
+            </div>
+        )
+    }
+});
+
+export default Content;

+ 1 - 0
js/component/account/services/achievement.jsx

@@ -86,6 +86,7 @@ const AchievementDescFrom = Form.create()(React.createClass({
         if (!this.props.visible && nextProps.visible) {
             this.props.form.resetFields();
             this.state.fileList = [];
+            this.state.enclosureUrl = null;
         };
     },
     render() {

+ 4 - 4
js/component/account/services/activity.jsx

@@ -36,7 +36,7 @@ const ActivityForm = Form.create()(React.createClass({
                 this.setState({
                     data: data.data,
                     targetKeys: data.data.intellectualPropertyNumber ? data.data.intellectualPropertyNumber.split(",") : [],
-                    techField: [Number(data.data.technicalField1), data.data.technicalField2 ? Number(data.data.technicalField2) : null, data.data.technicalField3 ? Number(data.data.technicalField3) : null]
+                    techField: [data.data.technicalField1, data.data.technicalField2, data.data.technicalField3]
                 });
             };
         }.bind(this)).always(function (data) {
@@ -239,7 +239,7 @@ const ActivityForm = Form.create()(React.createClass({
                             {getFieldDecorator('budget', {
                                 initialValue: theData.budget
                             })(
-                                <InputNumber />
+                                <InputNumber min={0} max={999999} step={0.01} />
                                 )}
                             <span>万元</span>
                         </FormItem>
@@ -311,7 +311,7 @@ const ActivityForm = Form.create()(React.createClass({
                         <div style={{ width: '50%' }}>
                             <Upload
                                 name="ratepay"
-                                action={globalConfig.context + "/api/admin/uploadProof"}
+                                action={globalConfig.context + "/api/user/cognizance/uploadProof"}
                                 data={{ 'sign': 'proof', 'uid': this.props.uid }}
                                 beforeUpload={beforeUploadFile}
                                 fileList={this.state.fileList}
@@ -450,7 +450,7 @@ const Activity = React.createClass({
 
                     mockData: this.state.mockData,
 
-                    techField: [Number(thisdata.technicalField1), Number(thisdata.technicalField2), Number(thisdata.technicalField3)],
+                    techField: [thisdata.technicalField1, thisdata.technicalField2, thisdata.technicalField3],
                     technicalField: getTechField(thisdata.technicalField1, thisdata.technicalField2, thisdata.technicalField3),
                     technicalField1: thisdata.technicalField1,
                     technicalField2: thisdata.technicalField2,

+ 41 - 22
js/component/account/services/activityCostList.jsx

@@ -12,9 +12,17 @@ const ActivityDescFrom = Form.create()(React.createClass({
         return {
             loading: false,
             activityNumberOption: [],
-            activityNumberObj: []
+            activityNumberObj: [],
+            yearOption: []
         };
     },
+    getYearOption() {
+        let Option = Select.Option, d = new Date(), thisYear = d.getFullYear(), theArr = [];
+        for (let i = thisYear; i >= 2000; i--) {
+            theArr.push(<Option value={i.toString()} key={i.toString()}>{i}</Option>)
+        };
+        this.state.yearOption = theArr;
+    },
     allCostCount() {
         this.state.internalAllCost = this.props.form.getFieldValue('internalLaborCost') + this.props.form.getFieldValue('internalDirectCost') +
             this.props.form.getFieldValue('internalDepreciationCost') + this.props.form.getFieldValue('internalAmortizationCost') +
@@ -31,10 +39,23 @@ const ActivityDescFrom = Form.create()(React.createClass({
             loading: false
         });
     },
+    componentWillMount() {
+        this.getYearOption();
+        let _me = this;
+        if (this.props.activityNumberList) {
+            this.props.activityNumberList.map(function (item) {
+                _me.state.activityNumberOption.push(
+                    <Select.Option value={item.aid} key={item.uid}>{item.activityNumber}</Select.Option>
+                );
+                _me.state.activityNumberObj[item.aid] = item.activityNumber;
+            });
+        }
+    },
     componentWillReceiveProps(nextProps) {
         this.allCostCount();
         let _me = this;
         if (!this.props.visible && nextProps.visible && nextProps.activityNumberList) {
+            _me.state.activityNumberOption = [];
             nextProps.activityNumberList.map(function (item) {
                 _me.state.activityNumberOption.push(
                     <Select.Option value={item.aid} key={item.uid}>{item.activityNumber}</Select.Option>
@@ -120,7 +141,7 @@ const ActivityDescFrom = Form.create()(React.createClass({
                     <Select
                         placeholder="请选择年份"
                         style={{ width: 200 }} >
-                        {this.props.yearOption}
+                        {this.state.yearOption}
                     </Select>
                     )}
                 <p className="activityCost-title">内部研究开发费用(万元)</p>
@@ -131,7 +152,7 @@ const ActivityDescFrom = Form.create()(React.createClass({
                     >
                         {getFieldDecorator('internalAllCost')(
                             <span className="number-box">
-                                {this.state.internalAllCost}
+                                {this.state.internalAllCost || 0}
                             </span>
                         )}
                     </FormItem>
@@ -143,7 +164,7 @@ const ActivityDescFrom = Form.create()(React.createClass({
                             rules: [{ type: "number", required: true, message: '此项为必填项!' }],
                             initialValue: theData.internalLaborCost
                         })(
-                            <InputNumber />
+                            <InputNumber min={0} max={999999} step={0.01} />
                             )}
                     </FormItem>
                     <FormItem className="half-item"
@@ -154,7 +175,7 @@ const ActivityDescFrom = Form.create()(React.createClass({
                             rules: [{ type: "number", required: true, message: '此项为必填项!' }],
                             initialValue: theData.internalDirectCost
                         })(
-                            <InputNumber />
+                            <InputNumber min={0} max={999999} step={0.01} />
                             )}
                     </FormItem>
                     <FormItem className="half-item"
@@ -165,7 +186,7 @@ const ActivityDescFrom = Form.create()(React.createClass({
                             rules: [{ type: "number", required: true, message: '此项为必填项!' }],
                             initialValue: theData.internalDepreciationCost
                         })(
-                            <InputNumber />
+                            <InputNumber min={0} max={999999} step={0.01} />
                             )}
                     </FormItem>
                     <FormItem className="half-item"
@@ -176,7 +197,7 @@ const ActivityDescFrom = Form.create()(React.createClass({
                             rules: [{ type: "number", required: true, message: '此项为必填项!' }],
                             initialValue: theData.internalAmortizationCost
                         })(
-                            <InputNumber />
+                            <InputNumber min={0} max={999999} step={0.01} />
                             )}
                     </FormItem>
                     <FormItem className="half-item"
@@ -187,7 +208,7 @@ const ActivityDescFrom = Form.create()(React.createClass({
                             rules: [{ type: "number", required: true, message: '此项为必填项!' }],
                             initialValue: theData.internalDesignCost
                         })(
-                            <InputNumber />
+                            <InputNumber min={0} max={999999} step={0.01} />
                             )}
                     </FormItem>
                     <FormItem className="half-item"
@@ -198,7 +219,7 @@ const ActivityDescFrom = Form.create()(React.createClass({
                             rules: [{ type: "number", required: true, message: '此项为必填项!' }],
                             initialValue: theData.internalEquipmentCost
                         })(
-                            <InputNumber />
+                            <InputNumber min={0} max={999999} step={0.01} />
                             )}
                     </FormItem>
                     <FormItem className="half-item"
@@ -209,7 +230,7 @@ const ActivityDescFrom = Form.create()(React.createClass({
                             rules: [{ type: "number", required: true, message: '此项为必填项!' }],
                             initialValue: theData.internalOtherCost
                         })(
-                            <InputNumber />
+                            <InputNumber min={0} max={999999} step={0.01} />
                             )}
                     </FormItem>
                 </div>
@@ -223,7 +244,7 @@ const ActivityDescFrom = Form.create()(React.createClass({
                             rules: [{ type: "number", required: true, message: '此项为必填项!' }],
                             initialValue: theData.externalTotalCost
                         })(
-                            <InputNumber />
+                            <InputNumber min={0} max={999999} step={0.01} />
                             )}
                     </FormItem>
                     <FormItem className="half-item"
@@ -234,7 +255,7 @@ const ActivityDescFrom = Form.create()(React.createClass({
                             rules: [{ type: "number", required: true, message: '此项为必填项!' }],
                             initialValue: theData.externalAbroadCost
                         })(
-                            <InputNumber />
+                            <InputNumber min={0} max={999999} step={0.01} />
                             )}
                     </FormItem>
                 </div>
@@ -246,7 +267,7 @@ const ActivityDescFrom = Form.create()(React.createClass({
                     >
                         {getFieldDecorator('allCost')(
                             <span className="number-box">
-                                {this.state.allCost}
+                                {this.state.allCost || 0}
                             </span>
                         )}
                     </FormItem>
@@ -342,7 +363,6 @@ const ActivityDesc = React.createClass({
                         footer=''
                     >
                         <ActivityDescFrom data={this.props.data}
-                            yearOption={this.state.yearOption}
                             visible={this.state.visible}
                             activityNumberList={this.props.activityNumberList}
                             spinState={this.spinChange}
@@ -452,6 +472,13 @@ const Activity = React.createClass({
             });
         }.bind(this));
     },
+    getYearOption() {
+        let Option = Select.Option, d = new Date(), thisYear = d.getFullYear(), theArr = [];
+        for (let i = thisYear; i >= 2000; i--) {
+            theArr.push(<Option value={i.toString()} key={i.toString()}>{i}</Option>)
+        };
+        this.state.yearOption = theArr;
+    },
     getInitialState() {
         return {
             selectedRowKeys: [],
@@ -531,13 +558,6 @@ const Activity = React.createClass({
             dataSource: []
         };
     },
-    getYearOption() {
-        let Option = Select.Option, d = new Date(), thisYear = d.getFullYear(), theArr = [];
-        for (let i = thisYear; i >= 1950; i--) {
-            theArr.push(<Option value={i.toString()} key={i.toString()}>{i}</Option>)
-        };
-        this.state.yearOption = theArr;
-    },
     componentWillMount() {
         this.loadData();
         this.getYearOption();
@@ -641,7 +661,6 @@ const Activity = React.createClass({
                 </div>
                 <ActivityDesc data={this.state.RowData}
                     activityNumberList={this.state.activityNumberList}
-                    yearOption={this.state.yearOption}
                     showDesc={this.state.showDesc} closeDesc={this.closeDesc} />
             </div >
         );

+ 15 - 10
js/component/account/services/annualReport.jsx

@@ -3,6 +3,7 @@ import { Icon, Form, Button, Input, Spin, Table, message, Select, Modal, InputNu
 import './annualReport.less';
 import { annualReportStateList } from '../../dataDic.js';
 import { beforeUploadFile, getAnnualReportState } from '../../tools.js';
+import { getProvince } from '../../NewDicProvinceList'
 import moment from 'moment';
 import ajax from 'jquery/src/ajax/xhr.js';
 import $ from 'jquery/src/ajax';
@@ -83,7 +84,7 @@ const AnnualReportDescFrom = Form.create()(React.createClass({
                     </div>
                     <div className="half-item">
                         <p className="item-title">所属地区: </p>
-                        <p>{theData.location || " "}</p>
+                        <p>{theData.location}</p>
                     </div>
                     <div className="half-item">
                         <p className="item-title">高新技术企业认定证书编号: </p>
@@ -262,8 +263,9 @@ const AnnualReportDescFrom = Form.create()(React.createClass({
                                 rules: [{ type: 'number', required: true, message: '此项为必填项!' }],
                                 initialValue: this.props.data.totalTax
                             })(
-                                <InputNumber />
+                                <InputNumber min={0} max={999999} step={0.01} />
                                 )}
+                            <span>万元</span>
                         </FormItem>
                     </div>
                     <div className="four-item">
@@ -275,8 +277,9 @@ const AnnualReportDescFrom = Form.create()(React.createClass({
                                 rules: [{ type: 'number', required: true, message: '此项为必填项!' }],
                                 initialValue: this.props.data.incomeTaxRelief
                             })(
-                                <InputNumber />
+                                <InputNumber min={0} max={999999} step={0.01} />
                                 )}
+                            <span>万元</span>
                         </FormItem>
                     </div>
                     <div className="four-item">
@@ -288,8 +291,9 @@ const AnnualReportDescFrom = Form.create()(React.createClass({
                                 rules: [{ type: 'number', required: true, message: '此项为必填项!' }],
                                 initialValue: this.props.data.totalExportVolume
                             })(
-                                <InputNumber />
+                                <InputNumber min={0} max={999999} step={0.01} />
                                 )}
+                            <span>万元</span>
                         </FormItem>
                     </div>
                     <div className="four-item">
@@ -301,8 +305,9 @@ const AnnualReportDescFrom = Form.create()(React.createClass({
                                 rules: [{ type: 'number', required: true, message: '此项为必填项!' }],
                                 initialValue: this.props.data.basicResearchCost
                             })(
-                                <InputNumber />
+                                <InputNumber min={0} max={999999} step={0.01} />
                                 )}
+                            <span>万元</span>
                         </FormItem>
                     </div>
                 </div>
@@ -344,7 +349,7 @@ const AnnualReportDesc = React.createClass({
                 locationProvince: thisdata.locationProvince,
                 locationCity: thisdata.locationCity,
                 locationArea: thisdata.locationArea,
-                location: thisdata.locationProvince + " / " + thisdata.locationCity + " / " + thisdata.locationArea,
+                location: getProvince(thisdata.locationProvince, thisdata.locationCity, thisdata.locationArea),
                 certificateNumber: thisdata.certificateNumber,
                 issuingDate: thisdata.issuingDate,
                 issuingDateFormattedDate: thisdata.issuingDateFormattedDate,
@@ -539,22 +544,22 @@ const AnnualReportAdd = React.createClass({
                     <div className="clearfix">
                         <div className="half-item">
                             <span>纳税总额:  </span>
-                            <InputNumber onChange={(e) => { this.state.totalTax = e; }} />
+                            <InputNumber min={0} max={999999} step={0.01} onChange={(e) => { this.state.totalTax = e; }} />
                             <span> (万元)</span>
                         </div>
                         <div className="half-item">
                             <span>高企所得税减免额:  </span>
-                            <InputNumber onChange={(e) => { this.state.incomeTaxRelief = e; }} />
+                            <InputNumber min={0} max={999999} step={0.01} onChange={(e) => { this.state.incomeTaxRelief = e; }} />
                             <span> (万元)</span>
                         </div>
                         <div className="half-item">
                             <span>出口创汇总额(人民币):  </span>
-                            <InputNumber onChange={(e) => { this.state.totalExportVolume = e; }} />
+                            <InputNumber min={0} max={999999} step={0.01} onChange={(e) => { this.state.totalExportVolume = e; }} />
                             <span> (万元)</span>
                         </div>
                         <div className="half-item">
                             <span>基础研究投入费用:  </span>
-                            <InputNumber onChange={(e) => { this.state.basicResearchCost = e; }} />
+                            <InputNumber min={0} max={999999} step={0.01} onChange={(e) => { this.state.basicResearchCost = e; }} />
                             <span> (万元)</span>
                         </div>
                     </div>

+ 4 - 3
js/component/account/services/cognizance.jsx

@@ -1,6 +1,6 @@
 import React from 'react';
 import { Icon, InputNumber, Form, Button, Input, Radio, Select, Spin, Table, message, Cascader, Modal } from 'antd';
-import { provinceArr, cognizanceStateList } from '../../dataDic.js';
+import { cognizanceStateList } from '../../dataDic.js';
 import { techFieldList } from '../../DicTechFieldList.js';
 import { getTime, getCognizanceState } from '../../tools.js';
 import ajax from 'jquery/src/ajax/xhr.js';
@@ -237,7 +237,7 @@ const CognizanceDescFrom = Form.create()(React.createClass({
                         <span className="item-title">技术领域: </span>
                         {getFieldDecorator('technicalField', {
                             rules: [{ type: 'array', required: true, message: '此项为必填项!' }],
-                            initialValue: [Number(theData.technicalField1), Number(theData.technicalField2), Number(theData.technicalField3)]
+                            initialValue: [theData.technicalField1, theData.technicalField2, theData.technicalField3]
                         })(
                             <Cascader options={techFieldList} placeholder="请选择技术领域" />
                             )}
@@ -301,8 +301,9 @@ const CognizanceDescFrom = Form.create()(React.createClass({
                                         rules: [{ type: 'number', required: true, message: '此项为必填项!' }],
                                         initialValue: theData.basicResearchCost
                                     })(
-                                        <InputNumber />
+                                        <InputNumber min={0} max={999999} step={0.01} />
                                         )}
+                                    <span>万元</span>
                                 </FormItem>
                             </div>
                         </div>

+ 18 - 19
js/component/account/services/companyDetail.jsx

@@ -1,7 +1,7 @@
 import React from 'react';
 import { Icon, Form, Button, Input, Spin, message, InputNumber, DatePicker, Select, Checkbox, Cascader, Table, Radio } from 'antd';
 import './techProduct.less';
-import { provinceSelect } from '../../tools';
+import { getProvince, areaSelect } from '../../NewDicProvinceList';
 import { industryList, scaleList, companyType } from '../../dataDic';
 import { techFieldList } from '../../DicTechFieldList';
 import moment from 'moment';
@@ -34,8 +34,8 @@ const CompanyDetail = Form.create()(React.createClass({
                 unitName: thisdata.unitName,
                 postalAddress: thisdata.postalAddress,
                 postcode: thisdata.postcode,
-                contacts: thisdata.contacts,
-                contactMobile: thisdata.contactMobile,
+                firstMobile: thisdata.firstMobile,
+                firstContacts: thisdata.firstContacts,
                 contactsFixedTel: thisdata.contactsFixedTel,
                 contactsFax: thisdata.contactsFax,
                 legalPersonTel: thisdata.legalPersonTel,
@@ -64,7 +64,7 @@ const CompanyDetail = Form.create()(React.createClass({
                 techTotal: thisdata.techTotal,
                 listedDateFormattedDate: thisdata.listedDateFormattedDate,
                 registrationTimeFormattedDate: thisdata.registrationTimeFormattedDate,
-                address: [thisdata.province, thisdata.city, thisdata.area],
+                address: [thisdata.licenceProvince, thisdata.licenceCity, thisdata.licenceArea],
                 field: thisdata.field ? thisdata.field.split(',') : [],
                 registerType: thisdata.registerType ? thisdata.registerType.split(',') : []
             });
@@ -184,7 +184,7 @@ const CompanyDetail = Form.create()(React.createClass({
                     dataIndex: 'investment',
                     key: 'investment',
                     render: (text, record, index) => {
-                        return <InputNumber value={record.investment} onChange={(e) => { record.investment = e; this.setState({ humanTableData: this.state.humanTableData }); }} />
+                        return <InputNumber min={0} max={999999} step={0.01} value={record.investment} onChange={(e) => { record.investment = e; this.setState({ humanTableData: this.state.humanTableData }); }} />
                     }
                 }
             ],
@@ -219,7 +219,7 @@ const CompanyDetail = Form.create()(React.createClass({
                     dataIndex: 'investment',
                     key: 'investment',
                     render: (text, record, index) => {
-                        return <InputNumber value={record.investment} onChange={(e) => { record.investment = e; this.setState({ legalTableData: this.state.legalTableData }); }} />
+                        return <InputNumber min={0} max={999999} step={0.01} value={record.investment} onChange={(e) => { record.investment = e; this.setState({ legalTableData: this.state.legalTableData }); }} />
                     }
                 }
             ],
@@ -246,13 +246,13 @@ const CompanyDetail = Form.create()(React.createClass({
                         uid: this.state.data.uid,
                         hid: this.state.data.hid,
                         unitName: values.unitName,
-                        province: values.address[0],
-                        city: values.address[1],
-                        area: values.address[2],
+                        licenceProvince: values.address[0],
+                        licenceCity: values.address[1],
+                        licenceArea: values.address[2],
                         postalAddress: values.postalAddress,
                         postcode: values.postcode,
-                        contacts: values.contacts,
-                        contactMobile: values.contactMobile,
+                        firstMobile: values.firstMobile,
+                        firstContacts: values.firstContacts,
                         contactsFixedTel: values.contactsFixedTel,
                         contactsFax: values.contactsFax,
                         legalPersonTel: values.legalPersonTel,
@@ -517,7 +517,7 @@ const CompanyDetail = Form.create()(React.createClass({
                                 rules: [{ type: 'array', required: true, message: '此项为必填项!' }],
                                 initialValue: theData.address
                             })(
-                                <Cascader options={provinceSelect()} />
+                                <Cascader options={areaSelect()} />
                                 )}
                         </FormItem>
                         <FormItem className="half-item"
@@ -551,7 +551,7 @@ const CompanyDetail = Form.create()(React.createClass({
                         >
                             {getFieldDecorator('contacts', {
                                 rules: [{ required: true, message: '此项为必填项!' }],
-                                initialValue: theData.contacts
+                                initialValue: theData.firstContacts
                             })(
                                 <Input />
                                 )}
@@ -562,7 +562,7 @@ const CompanyDetail = Form.create()(React.createClass({
                         >
                             {getFieldDecorator('contactMobile', {
                                 rules: [{ required: true, message: '此项为必填项!' }],
-                                initialValue: theData.contactMobile
+                                initialValue: theData.firstMobile
                             })(
                                 <Input />
                                 )}
@@ -638,7 +638,7 @@ const CompanyDetail = Form.create()(React.createClass({
                                 rules: [{ type: 'number', required: true, message: '此项为必填项!' }],
                                 initialValue: theData.registeredCapital
                             })(
-                                <InputNumber />
+                                <InputNumber min={0} max={999999} step={0.01} />
                                 )}
                             <span>万元</span>
                         </FormItem>
@@ -749,7 +749,7 @@ const CompanyDetail = Form.create()(React.createClass({
                         >
                             {getFieldDecorator('field', {
                                 rules: [{ type: 'array', required: true, message: '此项为必填项!' }],
-                                initialValue: [Number(theData.field[0]), theData.field[1] ? Number(theData.field[1]) : null, theData.field[2] ? Number(theData.field[2]) : null]
+                                initialValue: theData.field
                             })(
                                 <Cascader options={techFieldList} />
                                 )}
@@ -932,7 +932,7 @@ const CompanyDetail = Form.create()(React.createClass({
                             {getFieldDecorator('firmTotal', {
                                 initialValue: theData.firmTotal || 0
                             })(
-                                <InputNumber />
+                                <InputNumber min={0} max={9999} step={1} />
                                 )}
                         </FormItem>
                         <FormItem className="half-item"
@@ -942,7 +942,7 @@ const CompanyDetail = Form.create()(React.createClass({
                             {getFieldDecorator('techTotal', {
                                 initialValue: theData.techTotal || 0
                             })(
-                                <InputNumber />
+                                <InputNumber min={0} max={9999} step={1} />
                                 )}
                             <span>其中科技人员占比
                         {(() => {
@@ -956,7 +956,6 @@ const CompanyDetail = Form.create()(React.createClass({
                     </div>
                     <FormItem style={{ marginTop: '20px' }}>
                         <Button className="set-submit" type="primary" htmlType="submit">保存</Button>
-                        <Button type="ghost" style={{ marginLeft: '20px' }} onClick={this.props.closeModal}>取消</Button>
                     </FormItem>
                 </Form >
             );

+ 54 - 10
js/component/account/services/content.jsx

@@ -1,24 +1,40 @@
 import React from 'react';
 import '../content.less';
+import { Spin } from 'antd';
 import LeftTab from './leftTab.jsx';
 
-import Contract from './contract/contract';
-
 const Content = React.createClass({
     getInitialState() {
         return {
             loading: false,
             leftKey: 'contract',
-            component: Contract,
-            userType: '0'
+            component: null,
+            userType: '0',
+            params: {}
         };
     },
     handlekey(key) {
-        switch (key) {
+        let paramsStr = key.split('?');
+        if (paramsStr[1]) {
+            let params = {};
+            paramsStr[1].split('&').forEach((it) => {
+                let arr = it.split('=');
+                if (arr[0]) {
+                    params[arr[0]] = arr[1] || '';
+                }
+            });
+            this.state.params = params;
+        } else {
+            this.state.params = {};
+        }
+        switch (paramsStr[0]) {
             case 'contract':
-                this.setState({
-                    component: Contract,
-                    leftKey: 'contract'
+                require.ensure([], () => {
+                    const Contract = require('./contract/contract').default;
+                    this.setState({
+                        component: Contract,
+                        leftKey: 'contract'
+                    });
                 });
                 break;
             case 'patent':
@@ -166,20 +182,48 @@ const Content = React.createClass({
                     });
                 });
                 break;
+            case 'evaluate':
+                require.ensure([], () => {
+                    const Evaluate = require('./evaluate').default;
+                    this.setState({
+                        component: Evaluate,
+                        leftKey: 'evaluate'
+                    });
+                });
+                break;
+            case 'createEvaluate':
+                require.ensure([], () => {
+                    const CreateEvaluate = require('./evaluate/create').default;
+                    this.setState({
+                        component: CreateEvaluate,
+                        leftKey: 'evaluate'
+                    });
+                });
+                break;
         };
         window.location.hash = key;
     },
     componentWillMount() {
         if (window.location.hash) {
             this.handlekey(window.location.hash.substr(1));
-        };
+        } else {
+            this.handlekey(this.state.leftKey);
+        }
     },
     render() {
+        let component;
+        if (this.state.component) {
+            component = <this.state.component handlekey={this.handlekey} {...this.state.params} />;
+        } else {
+            component = <div className="loading-container">
+                <Spin />
+            </div>
+        }
         return (
             <div className="acc-content">
                 <LeftTab handlekey={this.handlekey} />
                 <div className="content-right">
-                    <this.state.component />
+                    {component}
                 </div>
             </div>
         )

+ 7 - 5
js/component/account/services/contract/contract.jsx

@@ -26,12 +26,14 @@ const Contract = React.createClass({
                 type: this.state.contractType,
                 status: this.state.contractState,
                 serialNumber: this.state.serialNumber,
-                startDateFormattedDate: this.state.startDateFormattedDate,
-                endDateFormattedDate: this.state.endDateFormattedDate,
+                startDateFormattedDate: this.state.startDateFormattedDate[0],
+                endDateFormattedDate: this.state.endDateFormattedDate[1],
+                completeStartDate: this.state.endDateFormattedDate[0],
+                completeEndDate: this.state.endDateFormattedDate[1]
             },
             success: function (data) {
                 let theArr = [];
-                if (!data.data && !data.data.list) {
+                if (!data.data || !data.data.list) {
                     if (data.error && data.error.length) {
                         message.warning(data.error[0].message);
                     };
@@ -267,13 +269,13 @@ const Contract = React.createClass({
                         <Button type="primary" onClick={this.search}>搜索</Button>
                         <Button onClick={this.reset}>重置</Button>
                         <div className="search-more" style={this.state.searchMore ? { display: 'none' } : {}}>
-                            <span>创建时间:</span>
+                            <span>签订时间:</span>
                             <RangePicker style={{ width: '240px' }}
                                 allowClear={false}
                                 value={[this.state.startDateFormattedDate[0] ? moment(this.state.startDateFormattedDate[0]) : null,
                                 this.state.startDateFormattedDate[1] ? moment(this.state.startDateFormattedDate[1]) : null]}
                                 onChange={(date, dateString) => { this.setState({ startDateFormattedDate: dateString }) }} />
-                            <span>结束时间:</span>
+                            <span>完成时间:</span>
                             <RangePicker style={{ width: '240px' }}
                                 allowClear={false}
                                 value={[this.state.endDateFormattedDate[0] ? moment(this.state.endDateFormattedDate[0]) : null,

+ 36 - 42
js/component/account/services/copyright/copyright.jsx

@@ -27,43 +27,43 @@ const copyright = React.createClass({
                 copyrightName: this.state.copyrightName,
                 status: this.state.status,
                 createTime: this.state.createTime,
-                acceptTime: this.state.acceptTime,
-                authTime: this.state.authTime
+                acceptTime: this.state.acceptTime
             },
             success: function (data) {
-                if (data.error.length || !data.data || !data.data.list) {
+                this.state.data = [];
+                if (!data.data || !data.data.list) {
                     message.warning(data.error[0].message);
-                    return;
-                };
-                for (let i = 0; i < data.data.list.length; i++) {
-                    let thisdata = data.data.list[i];
-                    this.state.data.push({
-                        key: i,
-                        id: thisdata.id,
-                        uid: thisdata.uid,
-                        province: thisdata.province,
-                        unitName: thisdata.unitName,
-                        serialNumber: thisdata.serialNumber,
-                        createTime: thisdata.createTime,
-                        acceptTime: thisdata.acceptTime,
-                        principal: thisdata.principal,
-                        contact: thisdata.contact,
-                        copyrightName: thisdata.copyrightName,
-                        copyrightNumber: thisdata.copyrightNumber,
-                        status: thisdata.status,
-                        comment: thisdata.comment,
-                        workIssue: thisdata.workIssue,
-                        outsource: thisdata.outsource,
-                        inUrgent: thisdata.inUrgent,
-                        authorizedDate: thisdata.authorizedDate,
-                        fisrtContact: thisdata.fisrtContact,
-                        secondContact: thisdata.secondContact,
-                        thirdContact: thisdata.thirdContact,
-                        authorizedDateFormattedDate: thisdata.authorizedDateFormattedDate,
-                        createTimeFormattedDate: thisdata.createTimeFormattedDate,
-                        acceptTimeFormattedDate: thisdata.acceptTimeFormattedDate,
-                        expectTime: [thisdata.acceptTime, thisdata.inUrgent]
-                    });
+                } else {
+                    for (let i = 0; i < data.data.list.length; i++) {
+                        let thisdata = data.data.list[i];
+                        this.state.data.push({
+                            key: i,
+                            id: thisdata.id,
+                            uid: thisdata.uid,
+                            province: thisdata.province,
+                            unitName: thisdata.unitName,
+                            serialNumber: thisdata.serialNumber,
+                            createTime: thisdata.createTime,
+                            acceptTime: thisdata.acceptTime,
+                            principal: thisdata.principal,
+                            contact: thisdata.contact,
+                            copyrightName: thisdata.copyrightName,
+                            copyrightNumber: thisdata.copyrightNumber,
+                            status: thisdata.status,
+                            comment: thisdata.comment,
+                            workIssue: thisdata.workIssue,
+                            outsource: thisdata.outsource,
+                            inUrgent: thisdata.inUrgent,
+                            authorizedDate: thisdata.authorizedDate,
+                            fisrtContact: thisdata.fisrtContact,
+                            secondContact: thisdata.secondContact,
+                            thirdContact: thisdata.thirdContact,
+                            authorizedDateFormattedDate: thisdata.authorizedDateFormattedDate,
+                            createTimeFormattedDate: thisdata.createTimeFormattedDate,
+                            acceptTimeFormattedDate: thisdata.acceptTimeFormattedDate,
+                            expectTime: [thisdata.acceptTime, thisdata.inUrgent]
+                        });
+                    };
                 };
                 this.state.pagination.defaultCurrent = data.data.pageNo;
                 this.state.pagination.total = data.data.totalCount;
@@ -161,9 +161,9 @@ const copyright = React.createClass({
                     render: (text) => {
                         if (text[0]) {
                             if (text[1]) {
-                                return getTime(getInUrgentTime(moment(text[0]), text[1]))
+                                return getTime(getInUrgentTime(moment(text[0]), text[1],function(data){ debugger;}))
                             } else {
-                                return getTime(getInUrgentTime(moment(text[0]), 45))
+                                return getTime(getInUrgentTime(moment(text[0]), 45,function(data){ debugger;}))
                             }
                         };
                         return;
@@ -258,12 +258,6 @@ const copyright = React.createClass({
                                 value={[this.state.acceptTime[0] ? moment(this.state.acceptTime[0]) : null,
                                 this.state.acceptTime[1] ? moment(this.state.acceptTime[1]) : null]}
                                 onChange={(date, dateString) => { this.setState({ acceptTime: dateString }) }} />
-                            <span>下证时间:</span>
-                            <RangePicker style={{ width: '240px' }}
-                                allowClear={false}
-                                value={[this.state.authTime[0] ? moment(this.state.authTime[0]) : null,
-                                this.state.authTime[1] ? moment(this.state.authTime[1]) : null]}
-                                onChange={(date, dateString) => { this.setState({ authTime: dateString }) }} />
                         </div>
                     </div>
                     <div className="foster-table">

+ 111 - 0
js/component/account/services/evaluate/create.jsx

@@ -0,0 +1,111 @@
+import React from 'react';
+import { Icon, message, Button, Spin, Checkbox } from 'antd';
+import './create.less';
+import ajax from 'jquery/src/ajax/xhr.js'
+import $ from 'jquery/src/ajax';
+import Steps from './steps';
+
+const CreateEvaluate = React.createClass({
+  getInitialState() {
+    return {
+      title: '',
+      id: '',
+      checked: false,
+      loading: false,
+      announce: ''
+    };
+  },
+  componentWillMount() {
+    if (this.props.id) {
+      this.state.id = this.props.id;
+    } else {
+      this.setState({
+        loading: true
+      })
+      $.ajax({
+        url: globalConfig.context + '/open/html/get/evaluation_announcement'
+      }).done(function (res) {
+        if (res) {
+          this.setState({
+            loading: true,
+            announce: res
+          })
+        }
+      }.bind(this)).always(function () {
+        this.setState({
+          loading: false
+        })
+      }.bind(this));
+    }
+  },
+  returnList() {
+    if (this.props.handlekey) {
+      this.props.handlekey('evaluate');
+    }
+  },
+  announce() {
+    return {
+      __html: this.state.announce
+    }
+  },
+  agree() {
+    $.ajax({
+      url: globalConfig.context + '/api/user/evaluate/create'
+    }).done(function (res) {
+      if (res && res.data) {
+        this.setState({
+          loading: true,
+          id: res.data
+        })
+      }
+    }.bind(this)).always(function () {
+      this.setState({
+        loading: false
+      })
+    }.bind(this));
+  },
+  onChanged(e) {
+    this.setState({
+      checked: e.target.checked
+    });
+  },
+  titleChanged(title) {
+    this.setState({
+      title: title
+    });
+  },
+  renderBody() {
+    if (this.state.id) {
+      return <Steps id={this.state.id} title={this.titleChanged} />
+    } else {
+      return <div>
+        <div className="announce-head">
+          本系统使用说明
+          <p>使用本系统之前,请您务必仔细阅读并透彻理解本声明。当您使用本系统,将视为您认可本声明内容。</p>
+        </div>
+        <div className="announce-body" dangerouslySetInnerHTML={this.announce()} />
+        <div className="announce-foot">
+          <Checkbox checked={this.state.checked} onChange={this.onChanged}>我同意以上声明</Checkbox>
+          <Button type="primary" onClick={this.agree} disabled={!this.state.checked}>继续</Button>
+        </div>
+      </div>
+    }
+  },
+  render() {
+    return (
+      <Spin spinning={this.state.loading}>
+        <div className="content-container">
+          <div className="content-title">
+            科技评估 {this.state.title ? '- ' + this.state.title : ''}
+            <div className="content-actions"><Button type="primary" onClick={this.returnList}>返回列表</Button></div>
+          </div>
+          <div className="content-body">
+            {this.renderBody()}
+          </div>
+        </div>
+      </Spin>
+    )
+  },
+});
+
+export default CreateEvaluate;

+ 17 - 0
js/component/account/services/evaluate/create.less

@@ -0,0 +1,17 @@
+.announce-head {
+  font-size: 14px;
+  font-weight: bold;
+  p {
+    font-weight: lighter;
+  }
+}
+.announce-body {
+  margin: 10px 0 15px;
+  p {
+    margin: 6px 0;
+  }
+}
+.announce-foot { 
+  border-top: 1px solid #80b9ff;
+  padding: 10px 0;
+}

+ 171 - 0
js/component/account/services/evaluate/index.jsx

@@ -0,0 +1,171 @@
+import React from 'react';
+import { Icon, message, Button, Spin, Table } from 'antd';
+import Moment from 'moment';
+import './index.less';
+import ajax from 'jquery/src/ajax/xhr.js'
+import $ from 'jquery/src/ajax';
+import money from '../../../money.js';
+
+const Evaluate = React.createClass({
+  getInitialState() {
+    return {
+      loading: false,
+      dataSource: [],
+      pagination: {
+        defaultCurrent: 1,
+        current: 1,
+        defaultPageSize: 10,
+        showQuickJumper: true,
+        pageSize: 10,
+        onChange: function (page) {
+          this.loadData(page);
+        }.bind(this),
+        showTotal: function (total) {
+          return '共' + (total || 0) + '条数据';
+        }
+      },
+      selectedRowKeys: []
+    };
+  },
+  componentWillMount() {
+    this.loadData(1);
+  },
+  showCreate() {
+    if (this.props.handlekey) {
+      this.props.handlekey('createEvaluate');
+    }
+  },
+  loadData(pageNo) {
+    if (this.state.loading) {
+      return;
+    }
+    this.setState({
+      loading: true
+    });
+    let { pagination } = this.state;
+    $.ajax({
+      url: globalConfig.context + '/api/user/evaluate/list',
+      data: {
+        pageNo: pageNo || 1,
+        pageSize: pagination.pageSize,
+      },
+      success: function (data) {
+        if (!data.data || !data.data.list) {
+          return;
+        }
+        pagination.current = data.data.pageNo;
+        pagination.total = data.data.totalCount;
+        this.setState({
+          dataSource: data.data.list,
+          pagination: pagination
+        });
+      }.bind(this),
+    }).always(function () {
+      this.setState({
+        loading: false
+      });
+    }.bind(this));
+  },
+  tableRowClick(it) {
+    if (this.props.handlekey) {
+      this.props.handlekey('createEvaluate?id=' + it.id);
+    }
+  },
+  remove() {
+    if (this.state.loading || !this.state.selectedRowKeys.length) {
+      return;
+    }
+    this.setState({
+      loading: true
+    });
+    $.ajax({
+      url: globalConfig.context + '/api/user/evaluate/remove',
+      data: {
+        ids: this.state.selectedRowKeys.join(',')
+      },
+      method: 'post',
+      success: function (res) {
+        if (res.error && res.error.length) {
+          message.error(res.error[0].message);
+        } else {
+          message.info("删除" + (res.data || 0) + '条记录。', 2, () => {
+            this.loadData(this.state.pagination.current);
+          })
+        }
+      }.bind(this),
+    }).always(function () {
+      this.setState({
+        loading: false
+      });
+    }.bind(this));
+  },
+  preview(e, it) {
+    e.stopPropagation();
+    e.preventDefault();
+    window.open(globalConfig.context + '/user/account/evaluateInfo?id=' + it.id);
+  },
+  render() {
+    const rowSelection = {
+      onChange: (selectedRowKeys, selectedRows) => {
+        this.setState({
+          selectedRowKeys
+        });
+      },
+      getCheckboxProps: record => ({
+        disabled: record.step === 7
+      })
+    }, columns = [
+      {
+        title: '编号',
+        dataIndex: 'id',
+        key: 'id',
+      }, {
+        title: '技术名称',
+        dataIndex: 'name',
+        key: 'name',
+      }, {
+        title: '价值',
+        dataIndex: 'value',
+        key: 'value',
+        render: (text, it) => { return it.value ? money(it.value) : ''; }
+      }, {
+        title: '预览',
+        dataIndex: 'preview',
+        key: 'preview',
+        render: (text, record) => {
+          return record.value ?
+            <Icon type="eye-o" style={{ fontSize: 18 }} onClick={(e) => {
+              this.preview(e, record)
+            }}></Icon> : <div />
+        }
+      }, {
+        title: '日期',
+        dataIndex: 'createTime',
+        key: 'createTime',
+        render: (text, it) => { return Moment(it.createTime).format('YYYY/MM/DD') }
+      }
+    ];
+    return (
+      <Spin spinning={this.state.loading}>
+        <div className="content-container">
+          <div className="content-title">
+            科技评估管理列表
+              <div className="content-actions"><Button type="primary" onClick={this.showCreate}>开始新评估<Icon type="plus" /></Button></div>
+          </div>
+          <div className="content-search">
+            <Button type="danger" onClick={this.remove} disabled={!this.state.selectedRowKeys.length}>删除</Button>
+          </div>
+          <div className="content-body">
+            <Table rowKey="id" columns={columns}
+              dataSource={this.state.dataSource}
+              pagination={this.state.pagination}
+              onRowClick={this.tableRowClick}
+              rowSelection={rowSelection} />
+          </div>
+        </div>
+      </Spin>
+    )
+  },
+});
+
+export default Evaluate;

+ 0 - 0
js/component/account/services/evaluate/index.less


File diff suppressed because it is too large
+ 516 - 0
js/component/account/services/evaluate/info.jsx


+ 63 - 0
js/component/account/services/evaluate/info.less

@@ -0,0 +1,63 @@
+.report-container {
+  width: 595px;
+  margin: auto;
+  line-height: 1.5;
+  font-size: 14px;
+  color: #333;
+  .export {
+    position: fixed;
+    top: 10%;
+    right: 20%;
+    z-index: 2;
+  }
+}
+
+.report-title {
+  text-align: center;
+  font-size: 24px;
+  font-weight: bold;
+}
+
+.report-subtitle {
+  text-align: center;
+  font-size: 18px;
+  font-weight: bold;
+  margin-bottom: 10px;
+}
+
+.report-page {
+  height: 842px;
+  padding: 5px 50px 25px;
+  position: relative;
+  p {
+    margin: 4px 0;
+  }
+  .ant-table-wrapper {
+    margin-bottom: 12px;
+  }
+}
+
+.report-info {
+  margin: 115px 0;
+  .ant-row {
+    margin: 4px 0;
+  }
+}
+.report-announce {
+  position: absolute;
+  bottom: 30px;
+  left: 0;
+  width: 100%;
+  color: #999;
+  text-align: center;
+  font-size: 12px;
+}
+.report-pageno {
+  position: absolute;
+  bottom: 6px;
+  left: 0;
+  width: 100%;
+  color: #999;
+  text-align: center;
+  font-size: 12px;
+}

+ 126 - 0
js/component/account/services/evaluate/steps.jsx

@@ -0,0 +1,126 @@
+import React from 'react';
+import { Steps, Spin } from 'antd';
+import './steps.less';
+import ajax from 'jquery/src/ajax/xhr.js'
+import $ from 'jquery/src/ajax';
+import Step1 from './steps/step1';
+import Step2 from './steps/step2';
+import Step3 from './steps/step3';
+import Step4 from './steps/step4';
+import Step5 from './steps/step5';
+import Step6 from './steps/step6';
+import Step7 from './steps/step7';
+import Step8 from './steps/step8';
+
+const Step = Steps.Step;
+const steps = [{
+  title: '基本信息',
+  content: Step1
+}, {
+  title: '法律状况评估',
+  content: Step2
+}, {
+  title: '技术状况评估',
+  content: Step3
+}, {
+  title: '历史收入',
+  content: Step4
+}, {
+  title: '收入预估',
+  content: Step5
+}, {
+  title: '所得税预估',
+  content: Step6
+}, {
+  title: '风险预估',
+  content: Step7
+}, {
+  title: '评估值',
+  content: Step8
+}];
+
+const EvaluateSteps = React.createClass({
+  getInitialState() {
+    return {
+      current: 0,
+      loading: true,
+      steps: null,
+      value: 0,
+      step: 0
+    };
+  },
+  next(values) {
+    if (this.state.current == 7) {
+      this.state.value = values;
+      return;
+    } else {
+      this.state.value = 0;
+    }
+    const current = this.state.current + 1;
+    this.state.steps[this.state.current] = values;
+    if (this.state.current === 0 && this.props.title) {
+      this.props.title(values.name);
+    }
+    this.setState({
+      current: current,
+      steps: this.state.steps
+    });
+  },
+  prev() {
+    const current = this.state.current - 1;
+    this.setState({ current });
+  },
+  componentWillMount() {
+    $.ajax({
+      url: globalConfig.context + '/api/user/evaluate/info/' + this.props.id
+    }).done(function (res) {
+      if (res && res.data) {
+        this.setState({
+          steps: res.data.steps || {},
+          current: res.data.step || 0,
+          step: res.data.step || 0,
+          value: res.data.value || 0,
+          loading: false
+        })
+        if (this.props.title) {
+          this.props.title(res.data.name || '');
+        }
+      }
+    }.bind(this)).fail(function () {
+      this.setState({
+        loading: false
+      })
+    }.bind(this));
+    this.setState({
+      current: this.props.step || 0
+    })
+  },
+  progressDot(dot, { index }) {
+    return <span style={{ cursor: 'pointer' }} onClick={() => {
+      if (index == this.state.step || !!this.state.steps[index]) {
+        this.setState({
+          current: index
+        })
+      }
+    }}>{dot}</span>
+  },
+  render() {
+    this.state.StepContent = steps[this.state.current].content;
+    let loadContent = !!this.state.steps
+    return (
+      <Spin spinning={this.state.loading} >
+        <div style={{ marginTop: 10 }}>
+          <Steps current={this.state.current} progressDot={this.progressDot} value={this.state.value}>
+            {steps.map(item => <Step key={item.title} title={item.title} />)}
+          </Steps>
+          <div className="steps-content">{
+            loadContent ? <this.state.StepContent next={this.next} prev={this.prev} id={this.props.id} data={this.state.steps[this.state.current]} record={this.state.steps} value={this.state.value} />
+              : <div />
+          }</div>
+        </div>
+      </Spin >
+    )
+  },
+});
+
+export default EvaluateSteps;

+ 44 - 0
js/component/account/services/evaluate/steps.less

@@ -0,0 +1,44 @@
+.steps-content {
+    margin-top: 16px;
+    min-height: 360px;
+    text-align: left;
+    padding: 6px 24px;
+}
+
+.steps-name {
+    margin: 16px 0 0;
+    font-size: 16px;
+    font-weight: bold;
+}
+
+.steps-action {
+    padding: 6px 0;
+}
+.steps-result {
+    min-height: 300px;
+    margin-bottom: 20px;
+    .steps-value {
+        font-size: 24px;
+        font-weight: bold;
+        color: #ff0036;
+    }
+}
+.steps-form {
+    min-height: 300px;
+    .ant-form-item {
+        border-radius: 3px;
+        background: #fafafa;
+        padding: 10px 24px;
+        margin-bottom: 12px;
+        .ant-form-item-label {
+            text-align: left;
+        }
+    }
+    .ant-input-number {
+        width: 160px;
+    }
+}
+
+.steps-cell-key {
+    font-weight: bold;
+}

+ 172 - 0
js/component/account/services/evaluate/steps/dict.js

@@ -0,0 +1,172 @@
+
+module.exports = {
+  toMap(arr) {
+    let map = {};
+    arr.forEach((it) => {
+      map[it.id] = it.text;
+    });
+    return map;
+  },
+  transferTypes: [
+    { id: "1", text: "所有权转让" },
+    { id: "2", text: "独占许可" },
+    { id: "3", text: "普通许可" }
+  ],
+  leftTimes: [
+    { id: "3", text: "3年" },
+    { id: "4", text: "4年" },
+    { id: "5", text: "5年" },
+    { id: "6", text: "6年" },
+    { id: "7", text: "7年" },
+    { id: "8", text: "8年" },
+    { id: "9", text: "9年" },
+    { id: "10", text: "10年" },
+    { id: "11", text: "11年" },
+    { id: "12", text: "12年" },
+    { id: "13", text: "13年" },
+    { id: "14", text: "14年" },
+    { id: "15", text: "15年" },
+    { id: "16", text: "16年" },
+    { id: "17", text: "17年" },
+    { id: "18", text: "18年" },
+    { id: "19", text: "19年" },
+    { id: "20", text: "20年以上" }
+  ],
+  accessMethods: [
+    { id: "1", text: "自主研发" },
+    { id: "2", text: "外购取得" },
+    { id: "3", text: "许可取得" },
+  ],
+  legalStatus: [
+    { id: "1", text: "已获专利证书-发明专利,受法律保护" },
+    { id: "2", text: "已获专利证书-实用新型专利,受法律保护" },
+    { id: "3", text: "已获专利证书-外观技术专利,受法律保护" },
+    { id: "4", text: "已申请尚未获得证书,一定程度上受法律保护" },
+    { id: "5", text: "专有技术,未申请法律保护" },
+  ],
+  maintenanceStatus: [
+    { id: "1", text: "专利按时缴纳年费" },
+    { id: "2", text: "专利已过期或未按时缴纳年费" },
+  ],
+  confidentialities: [
+    { id: "1", text: "他人无法获知,保密性强" },
+    { id: "2", text: "他人较少可能获知,保密性较强" },
+    { id: "3", text: "他人可能获知,保密性一般" },
+    { id: "4", text: "他人很有可能获知,保密性较差" },
+    { id: "5", text: "无法保密" },
+  ],
+  decidabilities: [
+    { id: "1", text: "易发现且易判定" },
+    { id: "2", text: "易发现但不易判定" },
+    { id: "3", text: "难以发现他人是否侵权" },
+    { id: "4", text: "非专利技术,无法判定他人侵权" },
+  ],
+  rightLimitations: [
+    { id: "1", text: "否" },
+    { id: "2", text: "是" },
+  ],
+  progressiveness: [
+    { id: "1", text: "填补了世界空白" },
+    { id: "2", text: "填补了国内空白" },
+    { id: "3", text: "国家级领先技术" },
+    { id: "4", text: "省域级领先技术" },
+    { id: "5", text: "市域级领先技术" },
+    { id: "6", text: "先进性方面与类似技术相差不大" },
+  ],
+  innovativeness: [
+    { id: "1", text: "具有突破性创新" },
+    { id: "2", text: "非突破性创新,但功效有显著提升" },
+    { id: "3", text: "非突破性创新,但功效有一定提升" },
+    { id: "4", text: "有类似技术且功效差不多" },
+    { id: "5", text: "功效差于现行类似技术" },
+    { id: "6", text: "功效无法判定" },
+  ],
+  ripeness: [
+    { id: "1", text: "技术成熟并已产业化多年" },
+    { id: "2", text: "技术成熟,已产业化一年以下" },
+    { id: "3", text: "技术成熟,已成功进行试生产,即将产业化" },
+    { id: "4", text: "技术已研发完成,尚未投入生产" },
+    { id: "5", text: "技术处于中试阶段" },
+    { id: "6", text: "仅为概念或早期阶段、小试阶段" },
+  ],
+  alternatives: [
+    { id: "1", text: "具有不可替代性" },
+    { id: "2", text: "与其他类似技术相比具有优势,较难被替代" },
+    { id: "3", text: "有其他相同的替代技术" },
+    { id: "4", text: "有其他更好的替代技术" },
+  ],
+  defensive: [
+    { id: "1", text: "技术复杂程度高,所需资金量大" },
+    { id: "2", text: "技术复杂程度较高,所需资金量较大" },
+    { id: "3", text: "技术复杂程度较高,但所需资金量不大" },
+    { id: "4", text: "技术复杂程度不高,所需资金量较大" },
+    { id: "5", text: "技术复杂程度不高,所需资金量不大" },
+    { id: "6", text: "技术简单,所需资金量小" },
+  ],
+  prospect: [
+    { id: "1", text: "技术产品所属领域发展前景好" },
+    { id: "2", text: "技术产品所属领域发展前景较好" },
+    { id: "3", text: "技术产品所属领域发展前景一般" },
+    { id: "4", text: "技术产品所属领域发展前景较差" },
+    { id: "5", text: "技术产品所属领域发展前景差" },
+  ],
+  supplyAndDemand: [
+    { id: "1", text: "解决了行业的必需技术问题,为广大厂商所需要,具有一定垄断性" },
+    { id: "2", text: "解决了行业的重要技术问题,供不应求" },
+    { id: "3", text: "解决了行业一般技术问题,形成一定需求" },
+    { id: "4", text: "解决了行业非重要技术问题,形成少量需求" },
+    { id: "5", text: "解决了生产中某一附加技术问题或改进了某一技术环节,对于整体生产环节的改进有一定作用,形成一定潜在需求" },
+    { id: "6", text: "解决了生产中某一附加技术问题或改进了某一技术环节,对于整体生产环节的改进并未产生作用" },
+  ],
+  rangeOfApplication: [
+    { id: "1", text: "技术产品应用于全国" },
+    { id: "2", text: "技术产品应用于省域或省级区域" },
+    { id: "3", text: "技术产品应用范围较小" },
+    { id: "4", text: "技术产品应用范围非常小" },
+  ],
+  imitable: [
+    { id: "1", text: "较低" },
+    { id: "2", text: "中等" },
+    { id: "3", text: "高" },
+  ],
+  profitability: [
+    { id: "1", text: "可以单独应用于产品,发挥技术作用" },
+    { id: "2", text: "需要与其他相关技术或专利一起应用于产品,共同发挥作用,且占主要作用" },
+    { id: "3", text: "需要与其他相关技术或专利一起应用于产品,共同发挥作用,只起次要作用" },
+  ],
+  political: [
+    { id: "1", text: "政府大力支持,出台了支持行业发展的政策,政策风险低" },
+    { id: "2", text: "政府鼓励发展的行业或项目,政策风险较低" },
+    { id: "3", text: "政府既未鼓励、也未限制的行业,政策风险一般" },
+    { id: "4", text: "政府限制发展的行业或项目,政策风险较高" },
+    { id: "5", text: "政府限制或禁止的行业或项目,出台了相关限制或禁止政策,风险高" },
+  ],
+  technical: [
+    { id: "1", text: "技术先进,创新性好,技术成熟,防御力高" },
+    { id: "2", text: "技术较先进,创新性较好,防御力较高,技术较成熟" },
+    { id: "3", text: "技术先进度一般,创新性较好,防御力一般,技术较成熟" },
+    { id: "4", text: "技术先进度一般,创新性一般,防御力一般,技术尚未产业化" },
+    { id: "5", text: "技术先进度一般,创新性一般,防御力一般,技术处于研发或试验阶段" },
+  ],
+  market: [
+    { id: "1", text: "产品市场容量大,产品供不应求,具有一定垄断地位" },
+    { id: "2", text: "产品市场容量较大,产品供不应求,具有先发优势" },
+    { id: "3", text: "产品市场容量不大,产品供需大致平衡" },
+    { id: "4", text: "产品市场容量小,但能够在竞争中取得一定市场份额" },
+    { id: "5", text: "产品市场容量小,供大于求,竞争激烈" },
+  ],
+  capital: [
+    { id: "1", text: "所需资金量小,融资渠道宽" },
+    { id: "2", text: "所需资金量较小,融资渠道较宽" },
+    { id: "3", text: "所需资金量较大,融资渠道较宽" },
+    { id: "4", text: "所需资金量较大,融资渠道较窄" },
+    { id: "5", text: "所需资金量大,且融资渠道窄" },
+  ],
+  management: [
+    { id: "1", text: "拟实施该技术的企业管理内部规范,内控健全有效,管理层团队稳定" },
+    { id: "2", text: "拟实施该技术的企业管理内部较规范,管理层团队较稳定,内控体系较健全" },
+    { id: "3", text: "拟实施该技术的企业管理内部较规范,管理层团队较稳定,内控体系较存在缺陷" },
+    { id: "4", text: "拟实施该技术的企业管理内部不够规范,内控体系存在缺陷,管理层团队较稳定" },
+    { id: "5", text: "拟实施该技术的企业管理内部不规范,内控体系存在较大缺陷,管理层团队不稳定" },
+  ]
+}

+ 287 - 0
js/component/account/services/evaluate/steps/step1.jsx

@@ -0,0 +1,287 @@
+import React from 'react';
+import { Form, Select, Input, Cascader, Spin, message, Button, DatePicker } from 'antd';
+import ajax from 'jquery/src/ajax/xhr.js'
+import $ from 'jquery/src/ajax';
+import moment from 'moment';
+import { transferTypes, leftTimes } from './dict.js';
+
+const FormItem = Form.Item;
+const Option = Select.Option;
+const MonthPicker = DatePicker.MonthPicker;
+
+const formItemLayout = {
+  labelCol: { span: 4 },
+  wrapperCol: { span: 10 },
+};
+const currency = ['人民币 (RMB)', '美金 (USD)', '台币(TWD)', '港币 (HKD)', '澳门元(MOP)', '欧元 (EUR)', '英镑 (GBP)', '日元 (JPY)', '澳大利亚元 (AUD)', '巴西里亚尔(BRL)', '加拿大元 (CAD)', '瑞士法郎 (CHF)', '丹麦克朗(DKK)', '印尼卢比 (IDR)', '韩国元 (KRW)', '林吉特(MYR)', '新西兰元 (NZD)', '菲律宾比索 (PHP)', '瑞典克朗 (SEK)', '新加坡元 (SGD)', '泰国铢 (THB)', '越南盾 (VND)', '南非兰特 (ZAR)']
+
+const EvaluateStep1 = Form.create({})(React.createClass({
+  getInitialState() {
+    return {
+      loading: true,
+      industry: [],
+      district: [],
+      subIndustries: {},
+      subIndustry: [],
+      initialData: {}
+    };
+  },
+  componentWillMount() {
+    this.loadData();
+    this.state.initialData = this.props.data || {};
+  },
+  loadData() {
+    $.when($.ajax({
+      url: globalConfig.context + '/open/findIndustryCategory'
+    }), $.ajax({
+      url: globalConfig.context + '/open/findDistrict'
+    })).done(function (industryRes, districtRes) {
+      let i = [], d = [{
+        id: 0, level: 0, pid: 0, name: '全国'
+      }];
+      if (industryRes[0] && industryRes[0].data) {
+        i = industryRes[0].data;
+      }
+      if (districtRes[0] && districtRes[0].data) {
+        d = d.concat(districtRes[0].data);
+      }
+      this.setState({
+        loading: false,
+        industry: i,
+        district: d
+      });
+      if (this.state.initialData) {
+        this.changeFormField({
+          'industry': this.stringify(this.state.initialData.industry),
+          'transferArea': this.state.initialData.transferArea && this.state.initialData.transferArea.split(',')
+        });
+        this.loadSubIndustry(this.state.initialData.industry, this.state.initialData.subIndustry)
+      }
+    }.bind(this)).fail(function () {
+      this.setState({
+        loading: false
+      })
+    }.bind(this));
+  },
+  loadIndustry(pid, initValue) {
+    if (this.industryLoader) {
+      this.industryLoader.abort();
+    }
+    this.setState({
+      loading: true
+    })
+    this.industryLoader = $.ajax({
+      url: globalConfig.context + '/open/findIndustryCategory',
+      method: 'get',
+      data: {
+        id: pid || 0
+      }
+    }).done(function (res) {
+      if (res.data && res.data.length) {
+        this.state.subIndustries[pid] = res.data;
+        this.setState({
+          loading: false,
+          subIndustry: res.data
+        })
+        if (initValue) {
+          this.changeFormField({
+            'subIndustry': initValue.split(',')
+          });
+        }
+      }
+    }.bind(this)).always(function () {
+      this.setState({
+        loading: false
+      })
+    }.bind(this));
+  },
+  loadSubIndustry(pid, initValue) {
+    let { subIndustries } = this.state;
+    pid = Number(pid);
+    this.changeFormField({
+      'subIndustry': []
+    });
+    if (subIndustries[pid]) {
+      this.setState({
+        subIndustry: subIndustries[pid]
+      })
+    } else {
+      this.loadIndustry(pid, initValue)
+    }
+  },
+  subIndustryChanged(values) {
+    let warn = false
+    while (values.length > 3) {
+      values.pop();
+      warn = true;
+    }
+    if (warn) {
+      message.warn("子行业最多选择三个!")
+      this.changeFormField({
+        'subIndustry': values
+      });
+    }
+  },
+  districtChanged(values) {
+    let warn = false
+    values.forEach((val) => {
+      if (val === '0') {
+        warn = true;
+      }
+    });
+    if (warn) {
+      this.changeFormField({
+        'transferArea': ['0']
+      });
+    }
+  },
+  changeFormField(data) {
+    setTimeout(function () {
+      this.props.form.setFieldsValue(data);
+    }.bind(this), 10);
+  },
+  next() {
+    if (this.state.loading) {
+      return;
+    }
+    this.props.form.validateFields((err, values) => {
+      if (!err) {
+        this.setState({
+          loading: true
+        })
+        values.id = this.props.id;
+        values.subIndustry = values.subIndustry.join(',');
+        values.transferArea = values.transferArea.join(',');
+        values.benchmarkDate = values.benchmarkDate.format('YYYY-MM-DD')
+        $.ajax({
+          url: globalConfig.context + '/api/user/evaluate/step1',
+          method: 'post',
+          data: values
+        }).done(function (res) {
+          if (res.error && res.error.length) {
+            message.error(res.error[0].message)
+          } else {
+            if (this.props.next) {
+              this.props.next(values);
+            }
+          }
+        }.bind(this)).fail(function () {
+          this.setState({
+            loading: false
+          })
+        }.bind(this));
+      }
+    });
+  },
+  onDateChange(date) {
+    date && date.date(1)
+    this.changeFormField({
+      'benchmarkDate': date
+    });
+  },
+  stringify(val) {
+    return val && String(val)
+  },
+  render() {
+    const { getFieldDecorator } = this.props.form;
+    let { subIndustry, industry, district, loading, initialData } = this.state;
+    return (
+      <Spin spinning={loading}>
+        <Form className="steps-form">
+          <FormItem label="技术名称" {...formItemLayout}>
+            {getFieldDecorator('name', {
+              rules: [{ required: true, message: '请输入技术名称!' }],
+              initialValue: initialData.name
+            })(
+              <Input placeholder="请输入技术名称" />
+              )}
+          </FormItem>
+          <FormItem label="所属主行业" {...formItemLayout}>
+            {getFieldDecorator('industry', {
+              rules: [{ required: true, message: '请选择技术所属主行业!' }]
+            })(
+              <Select placeholder="请选择技术所属主行业" onChange={this.loadSubIndustry}>
+                {industry.map((it) => {
+                  return <Option key={it.id} value={String(it.id)}>{it.name}</Option>
+                })}
+              </Select>
+              )}
+          </FormItem>
+          <FormItem label="所属子行业" {...formItemLayout}>
+            {getFieldDecorator('subIndustry', {
+              rules: [{ required: true, message: '请选择技术所属子行业!' }]
+            })(
+              <Select placeholder="请选择技术所属子行业" allowClear={true} multiple={true} onChange={this.subIndustryChanged}>
+                {
+                  subIndustry.length ? subIndustry.map((it) => {
+                    return <Option key={it.id} value={String(it.id)}>{it.name}</Option>
+                  }) : []
+                }
+              </Select>
+              )}
+          </FormItem>
+          <FormItem label="转让方式" {...formItemLayout}>
+            {getFieldDecorator('transferType', {
+              rules: [{ required: true, message: '请选择技术转让方式!' }],
+              initialValue: this.stringify(initialData.transferType)
+            })(
+              <Select placeholder="请选择技术转让方式">
+                {transferTypes.map((it) => {
+                  return <Option key={it.id} value={it.id}>{it.text}</Option>
+                })}
+              </Select>
+              )}
+          </FormItem>
+          <FormItem label="预估技术剩余寿命" {...formItemLayout}>
+            {getFieldDecorator('timeLeft', {
+              rules: [{ required: true, message: '请选择技术剩余寿命!' }],
+              initialValue: this.stringify(initialData.timeLeft)
+            })(
+              <Select placeholder="请选择技术剩余寿命">
+                {leftTimes.map((it) => {
+                  return <Option key={it.id} value={it.id}>{it.text}</Option>
+                })}
+              </Select>
+              )}
+          </FormItem>
+          <FormItem label="转让区域" {...formItemLayout}>
+            {getFieldDecorator('transferArea', {
+              rules: [{ required: true, message: '请选择技术转让区域!' }]
+            })(
+              <Select placeholder="请选择技术转让区域" allowClear={true} multiple={true} onChange={this.districtChanged}>
+                {district.map((it) => {
+                  return <Option key={it.id} value={String(it.id)}>{it.name}</Option>
+                })}
+              </Select>
+              )}
+          </FormItem>
+          <FormItem label="评估基准日" {...formItemLayout}>
+            {getFieldDecorator('benchmarkDate', {
+              rules: [{ required: true, message: '请输入评估基准日!' }],
+              initialValue: initialData.benchmarkDate ? moment(initialData.benchmarkDate, 'YYYY-MM-DD') : null
+            })(
+              <MonthPicker allowClear={false} onChange={this.onDateChange} placeholder="请输入评估基准日" format="YYYY-MM-DD" />
+              )}
+          </FormItem>
+          <FormItem label="评估币种" {...formItemLayout}>
+            {getFieldDecorator('currencyType', {
+              rules: [{ required: true, message: '请选择评估币种!' }],
+              initialValue: initialData.currencyType || '人民币 (RMB)'
+            })(
+              <Select placeholder="请选择评估币种">
+                {currency.map((it, idx) => {
+                  return <Option key={idx} value={it}>{it}</Option>
+                })}
+              </Select>
+              )}
+          </FormItem>
+        </Form>
+        <div className="steps-action">
+          <Button type="primary" onClick={this.next}>保存,下一步</Button>
+        </div>
+      </Spin>
+    )
+  },
+}));
+
+export default EvaluateStep1;

+ 151 - 0
js/component/account/services/evaluate/steps/step2.jsx

@@ -0,0 +1,151 @@
+import React from 'react';
+import { Spin, Form, Button, Select, message } from 'antd';
+import ajax from 'jquery/src/ajax/xhr.js'
+import $ from 'jquery/src/ajax';
+import { accessMethods, legalStatus, maintenanceStatus, confidentialities, decidabilities, rightLimitations } from './dict.js';
+
+const FormItem = Form.Item;
+const Option = Select.Option;
+
+const formItemLayout = {
+  labelCol: { span: 6 },
+  wrapperCol: { span: 10 }
+};
+
+const EvaluateStep2 = Form.create({})(React.createClass({
+  getInitialState() {
+    return {
+      loading: false,
+      initialData: {}
+    };
+  },
+  componentWillMount() {
+    this.state.initialData = this.props.data || {};
+  },
+  next() {
+    if (this.state.loading) {
+      return;
+    }
+    this.props.form.validateFields((err, values) => {
+      if (!err) {
+        this.setState({
+          loading: true
+        })
+        values.id = this.props.id;
+        $.ajax({
+          url: globalConfig.context + '/api/user/evaluate/step2',
+          method: 'post',
+          data: values
+        }).done(function (res) {
+          if (res.error && res.error.length) {
+            message.error(res.error[0].message)
+          } else {
+            if (this.props.next) {
+              this.props.next(values);
+            }
+          }
+        }.bind(this)).fail(function () {
+          this.setState({
+            loading: false
+          })
+        }.bind(this));
+      }
+    });
+  },
+  prev() {
+    if (this.props.prev) {
+      this.props.prev();
+    }
+  },
+  stringify(val) {
+    return val && String(val)
+  },
+  render() {
+    let { loading, initialData } = this.state;
+    const { getFieldDecorator } = this.props.form;
+    return (
+      <Spin spinning={loading}>
+        <Form className="steps-form">
+          <FormItem label="取得方式" {...formItemLayout}>
+            {getFieldDecorator('accessMethod', {
+              rules: [{ required: true, message: '请选择技术取得的方式!' }],
+              initialValue: this.stringify(initialData.accessMethod)
+            })(
+              <Select placeholder="请选择技术取得的方式">
+                {accessMethods.map((it) => {
+                  return <Option key={it.id} value={it.id}>{it.text}</Option>
+                })}
+              </Select>
+              )}
+          </FormItem>
+          <FormItem label="法律状态" {...formItemLayout}>
+            {getFieldDecorator('legalStatus', {
+              rules: [{ required: true, message: '请选择法律保护状态!' }],
+              initialValue: this.stringify(initialData.legalStatus)
+            })(
+              <Select placeholder="请选择法律保护状态">
+                {legalStatus.map((it) => {
+                  return <Option key={it.id} value={it.id}>{it.text}</Option>
+                })}
+              </Select>
+              )}
+          </FormItem>
+          <FormItem label="专利维护" {...formItemLayout}>
+            {getFieldDecorator('patentMaintenance', {
+              rules: [{ required: true, message: '请选择专利维护状态!' }],
+              initialValue: this.stringify(initialData.patentMaintenance)
+            })(
+              <Select placeholder="请选择专利维护状态">
+                {maintenanceStatus.map((it) => {
+                  return <Option key={it.id} value={it.id}>{it.text}</Option>
+                })}
+              </Select>
+              )}
+          </FormItem>
+          <FormItem label="保密性" {...formItemLayout}>
+            {getFieldDecorator('confidentiality', {
+              rules: [{ required: true, message: '请选择保密性!' }],
+              initialValue: this.stringify(initialData.confidentiality)
+            })(
+              <Select placeholder="请选择保密性">
+                {confidentialities.map((it) => {
+                  return <Option key={it.id} value={it.id}>{it.text}</Option>
+                })}
+              </Select>
+              )}
+          </FormItem>
+          <FormItem label="他人侵权的易判定性" {...formItemLayout}>
+            {getFieldDecorator('decidability', {
+              rules: [{ required: true, message: '请选择他人侵权的易判定性!' }],
+              initialValue: this.stringify(initialData.decidability)
+            })(
+              <Select placeholder="请选择他人侵权的易判定性">
+                {decidabilities.map((it) => {
+                  return <Option key={it.id} value={it.id}>{it.text}</Option>
+                })}
+              </Select>
+              )}
+          </FormItem>
+          <FormItem label="是否涉及质押、担保、诉讼等权利限制" {...formItemLayout}>
+            {getFieldDecorator('hasRightLimitation', {
+              rules: [{ required: true, message: '请选择是否涉及质押、担保、诉讼等权利限制!' }],
+              initialValue: this.stringify(initialData.hasRightLimitation)
+            })(
+              <Select placeholder="请选择是否涉及质押、担保、诉讼等权利限制">
+                {rightLimitations.map((it) => {
+                  return <Option key={it.id} value={it.id}>{it.text}</Option>
+                })}
+              </Select>
+              )}
+          </FormItem>
+        </Form>
+        <div className="steps-action">
+          <Button type="primary" onClick={this.next}>保存,下一步</Button>
+          <Button style={{ marginLeft: 8 }} onClick={this.prev}>上一步</Button>
+        </div>
+      </Spin>
+    )
+  },
+}));
+
+export default EvaluateStep2;

+ 199 - 0
js/component/account/services/evaluate/steps/step3.jsx

@@ -0,0 +1,199 @@
+import React from 'react';
+import { Spin, Form, Button, Select, message } from 'antd';
+import ajax from 'jquery/src/ajax/xhr.js'
+import $ from 'jquery/src/ajax';
+import { progressiveness, innovativeness, ripeness, alternatives, defensive, prospect, supplyAndDemand, rangeOfApplication, imitable, profitability } from './dict.js';
+
+const FormItem = Form.Item;
+const Option = Select.Option;
+
+const formItemLayout = {
+  labelCol: { span: 4 },
+  wrapperCol: { span: 10 },
+};
+
+const EvaluateStep3 = Form.create({})(React.createClass({
+  getInitialState() {
+    return {
+      loading: false,
+      initialData: {}
+    };
+  },
+  componentWillMount() {
+    this.state.initialData = this.props.data || {};
+  },
+  next() {
+    if (this.state.loading) {
+      return;
+    }
+    this.props.form.validateFields((err, values) => {
+      if (!err) {
+        this.setState({
+          loading: true
+        })
+        values.id = this.props.id;
+        $.ajax({
+          url: globalConfig.context + '/api/user/evaluate/step3',
+          method: 'post',
+          data: values
+        }).done(function (res) {
+          if (res.error && res.error.length) {
+            message.error(res.error[0].message)
+          } else {
+            if (this.props.next) {
+              this.props.next(values);
+            }
+          }
+        }.bind(this)).fail(function () {
+          this.setState({
+            loading: false
+          })
+        }.bind(this));
+      }
+    });
+  },
+  prev() {
+    if (this.props.prev) {
+      this.props.prev();
+    }
+  },
+  stringify(val) {
+    return val && String(val)
+  },
+  render() {
+    let { loading, initialData } = this.state;
+    const { getFieldDecorator } = this.props.form;
+    return (
+      <Spin spinning={loading}>
+        <Form className="steps-form">
+          <FormItem label="先进性" {...formItemLayout}>
+            {getFieldDecorator('progressiveness', {
+              rules: [{ required: true, message: '请选择技术的先进性!' }],
+              initialValue: this.stringify(initialData.progressiveness)
+            })(
+              <Select placeholder="请选择技术的先进性">
+                {progressiveness.map((it) => {
+                  return <Option key={it.id} value={it.id}>{it.text}</Option>
+                })}
+              </Select>
+              )}
+          </FormItem>
+          <FormItem label="创新性" {...formItemLayout}>
+            {getFieldDecorator('innovativeness', {
+              rules: [{ required: true, message: '请选择技术的创新性!' }],
+              initialValue: this.stringify(initialData.innovativeness)
+            })(
+              <Select placeholder="请选择技术的创新性">
+                {innovativeness.map((it) => {
+                  return <Option key={it.id} value={it.id}>{it.text}</Option>
+                })}
+              </Select>
+              )}
+          </FormItem>
+          <FormItem label="成熟度" {...formItemLayout}>
+            {getFieldDecorator('ripeness', {
+              rules: [{ required: true, message: '请选择技术的成熟度!' }],
+              initialValue: this.stringify(initialData.ripeness)
+            })(
+              <Select placeholder="请选择技术的成熟度">
+                {ripeness.map((it) => {
+                  return <Option key={it.id} value={it.id}>{it.text}</Option>
+                })}
+              </Select>
+              )}
+          </FormItem>
+          <FormItem label="替代性" {...formItemLayout}>
+            {getFieldDecorator('alternatives', {
+              rules: [{ required: true, message: '请选择技术的替代性!' }],
+              initialValue: this.stringify(initialData.alternatives)
+            })(
+              <Select placeholder="请选择技术的替代性">
+                {alternatives.map((it) => {
+                  return <Option key={it.id} value={it.id}>{it.text}</Option>
+                })}
+              </Select>
+              )}
+          </FormItem>
+          <FormItem label="技术防御力" {...formItemLayout}>
+            {getFieldDecorator('defensive', {
+              rules: [{ required: true, message: '请选择技术的防御力!' }],
+              initialValue: this.stringify(initialData.defensive)
+            })(
+              <Select placeholder="请选择技术的防御力">
+                {defensive.map((it) => {
+                  return <Option key={it.id} value={it.id}>{it.text}</Option>
+                })}
+              </Select>
+              )}
+          </FormItem>
+          <FormItem label="技术领域发展前景" {...formItemLayout}>
+            {getFieldDecorator('prospect', {
+              rules: [{ required: true, message: '请选择技术领域发展前景!' }],
+              initialValue: this.stringify(initialData.prospect)
+            })(
+              <Select placeholder="请选择技术领域发展前景">
+                {prospect.map((it) => {
+                  return <Option key={it.id} value={it.id}>{it.text}</Option>
+                })}
+              </Select>
+              )}
+          </FormItem>
+          <FormItem label="供求关系" {...formItemLayout}>
+            {getFieldDecorator('supplyAndDemand', {
+              rules: [{ required: true, message: '请选择技术的供求关系!' }],
+              initialValue: this.stringify(initialData.supplyAndDemand)
+            })(
+              <Select placeholder="请选择技术的供求关系">
+                {supplyAndDemand.map((it) => {
+                  return <Option key={it.id} value={it.id}>{it.text}</Option>
+                })}
+              </Select>
+              )}
+          </FormItem>
+          <FormItem label="产品应用范围" {...formItemLayout}>
+            {getFieldDecorator('rangeOfApplication', {
+              rules: [{ required: true, message: '请选择技术的应用范围!' }],
+              initialValue: this.stringify(initialData.rangeOfApplication)
+            })(
+              <Select placeholder="请选择技术的应用范围">
+                {rangeOfApplication.map((it) => {
+                  return <Option key={it.id} value={it.id}>{it.text}</Option>
+                })}
+              </Select>
+              )}
+          </FormItem>
+          <FormItem label="遭他人模仿可能性" {...formItemLayout}>
+            {getFieldDecorator('imitable', {
+              rules: [{ required: true, message: '请选择技术的模仿可能性!' }],
+              initialValue: this.stringify(initialData.imitable)
+            })(
+              <Select placeholder="请选择技术的模仿可能性">
+                {imitable.map((it) => {
+                  return <Option key={it.id} value={it.id}>{it.text}</Option>
+                })}
+              </Select>
+              )}
+          </FormItem>
+          <FormItem label="独立获利能力" {...formItemLayout}>
+            {getFieldDecorator('profitability', {
+              rules: [{ required: true, message: '请选择技术的独立获利能力!' }],
+              initialValue: this.stringify(initialData.profitability)
+            })(
+              <Select placeholder="请选择技术的独立获利能力">
+                {profitability.map((it) => {
+                  return <Option key={it.id} value={it.id}>{it.text}</Option>
+                })}
+              </Select>
+              )}
+          </FormItem>
+        </Form>
+        <div className="steps-action">
+          <Button type="primary" onClick={() => this.next()}>保存,下一步</Button>
+          <Button style={{ marginLeft: 8 }} onClick={() => this.prev()}>上一步</Button>
+        </div>
+      </Spin>
+    )
+  },
+}));
+
+export default EvaluateStep3;

+ 206 - 0
js/component/account/services/evaluate/steps/step4.jsx

@@ -0,0 +1,206 @@
+import React from 'react';
+import { Spin, Form, Button, message, Radio, Table, InputNumber } from 'antd';
+import ajax from 'jquery/src/ajax/xhr.js'
+import $ from 'jquery/src/ajax';
+
+const RadioButton = Radio.Button;
+const RadioGroup = Radio.Group;
+const FormItem = Form.Item;
+
+const formItemLayout = {
+  labelCol: { span: 4 },
+  wrapperCol: { span: 10 },
+};
+
+const now = new Date();
+
+const EvaluateStep4 = Form.create({})(React.createClass({
+  getInitialState() {
+    return {
+      loading: false,
+      initialData: {},
+      hasIncome: '1',
+      dataSource: []
+    };
+  },
+  componentWillMount() {
+    let initialData = this.props.data || {}, dataSource = [];
+    if (initialData.incomes) {
+      dataSource = initialData.incomes;
+    } else {
+      let step1 = this.props.record && this.props.record[0] || {};
+      let year = now.getFullYear();//Number(step1.benchmarkDate && step1.benchmarkDate.split('-')[0]) || now.getFullYear();
+      for (let i = 1; i < 4; i++) {
+        dataSource.push({
+          year: year - i,
+          income: '',
+          profit: ''
+        })
+      }
+    }
+    this.state.dataSource = dataSource;
+    this.state.initialData = initialData;
+    this.state.hasIncome = initialData.hasIncome || '1'
+  },
+  next() {
+    if (this.state.loading) {
+      return;
+    }
+    this.props.form.validateFields((err, values) => {
+      if (!err) {
+        this.setState({
+          loading: true
+        })
+        let data = {
+          id: this.props.id,
+          hasIncome: values.hasIncome
+        }, val = {
+          hasIncome: values.hasIncome
+        }
+        if (data.hasIncome == 2) {
+          let incomes = [], year = 0;
+          for (let i = 0; i < 3; i++) {
+            year = this.state.dataSource[i].year;
+            incomes.push({
+              year: year,
+              income: values['income' + year] || 0,
+              profit: values['profit' + year] || 0
+            })
+          }
+          data.incomes = JSON.stringify(incomes);
+          val.incomes = incomes;
+        }
+        $.ajax({
+          url: globalConfig.context + '/api/user/evaluate/step4',
+          method: 'post',
+          data: data
+        }).done(function (res) {
+          if (res.error && res.error.length) {
+            message.error(res.error[0].message)
+          } else {
+            if (this.props.next) {
+              this.props.next(val);
+            }
+          }
+        }.bind(this)).fail(function () {
+          this.setState({
+            loading: false
+          })
+        }.bind(this));
+      } else {
+        for (let field in err) {
+          if (err.hasOwnProperty(field)) {
+            message.error(err[field].errors[0].message)
+            break;
+          }
+        }
+      }
+    });
+  },
+  prev() {
+    if (this.props.prev) {
+      this.props.prev();
+    }
+  },
+  onRadioChange(e) {
+    this.setState({
+      hasIncome: e.target.value,
+    });
+  },
+  tableCols() {
+    const { getFieldDecorator } = this.props.form;
+    return [
+      {
+        title: '年份',
+        dataIndex: 'year',
+        key: 'year',
+        render: (text, it) => {
+          return <div>{text}</div>
+        }
+      },
+      {
+        title: '营收(元)',
+        dataIndex: 'income',
+        key: 'income',
+        render: (text, it, index) => {
+          let rules = [];
+          if (index === 0) {
+            rules.push({ required: index === 0, message: '请输入' + it.year + '营收情况!' })
+            rules.push({
+              validator: (rule, value, callback) => {
+                if (!Number(value)) {
+                  callback('请输入' + it.year + '营收情况!' );
+                } else {
+                  callback();
+                }
+              },
+            })
+          }
+          return getFieldDecorator('income' + it.year, {
+            initialValue: text || 0,
+            rules: rules
+          })(<InputNumber min={0} placeholder="请输入营收情况" />);
+        }
+      },
+      {
+        title: '利润率(%)',
+        dataIndex: 'profit',
+        key: 'profit',
+        render: (text, it, index) => {
+          let rules = [];
+          if (index === 0) {
+            rules.push({ required: index === 0, message: '请输入' + it.year + '利润率!' })
+            rules.push({
+              validator: (rule, value, callback) => {
+                if (!Number(value)) {
+                  callback('请输入' + it.year + '利润率!' );
+                } else {
+                  callback();
+                }
+              },
+            })
+          }
+          return getFieldDecorator('profit' + it.year, {
+            initialValue: text || 0,
+            rules: rules
+          })(<InputNumber min={0} placeholder="请输入利润率" />);
+        }
+      },
+    ]
+  },
+  stringify(val) {
+    return val && String(val)
+  },
+  render() {
+    let { loading, initialData } = this.state;
+    const { getFieldDecorator } = this.props.form;
+    return (
+      <Spin spinning={loading}>
+        <div style={{ marginBottom: 10 }}>若该技术曾被应用于生产活动并产生收益,可选择【有历史收入】,若否,请选择【无历史收入】。</div>
+        <Form className="steps-form">
+          <FormItem label="是否有历史收入" {...formItemLayout}>
+            {getFieldDecorator('hasIncome', {
+              initialValue: this.stringify(initialData.hasIncome) || '1'
+            })(
+              <RadioGroup size="large" onChange={this.onRadioChange}>
+                <RadioButton value="1">无历史收入</RadioButton>
+                <RadioButton value="2">有历史收入</RadioButton>
+              </RadioGroup>
+              )}
+          </FormItem>
+          {
+            this.state.hasIncome == 1 ?
+              <div style={{ marginTop: 10 }}>无历史收入, 请直接进入下一步</div> :
+              <Table pagination={false} rowKey="year" columns={this.tableCols()} dataSource={this.state.dataSource} />
+          }
+        </Form>
+        <div className="steps-action">
+          <Button type="primary" onClick={() => this.next()}>保存,下一步</Button>
+          <Button style={{ marginLeft: 8 }} onClick={() => this.prev()}>上一步</Button>
+        </div>
+      </Spin>
+    )
+  },
+}));
+
+export default EvaluateStep4;

+ 344 - 0
js/component/account/services/evaluate/steps/step5.jsx

@@ -0,0 +1,344 @@
+import React from 'react';
+import { Spin, Form, Button, message, Radio, Table, InputNumber } from 'antd';
+import ajax from 'jquery/src/ajax/xhr.js'
+import $ from 'jquery/src/ajax';
+import money from '../../../../money.js';
+
+const RadioButton = Radio.Button;
+const RadioGroup = Radio.Group;
+const FormItem = Form.Item;
+
+const formItemLayout = {
+  labelCol: { span: 4 },
+  wrapperCol: { span: 10 },
+};
+const NUMBERS = {
+  1: '第一年',
+  2: '第二年',
+  3: '第三年',
+  4: '第四年',
+  5: '第五年',
+}
+
+const EvaluateStep5 = Form.create({})(React.createClass({
+  getInitialState() {
+    return {
+      loading: false,
+      initialData: {},
+      hasIncome: '1',
+      type: '1',
+      dataSource: []
+    };
+  },
+  componentWillMount() {
+    let initialData = this.props.data || {}, dataSource = initialData.forecastIncomes || [];
+    let step4 = this.props.record && this.props.record[3] || {};
+    let type = initialData.type || '1';
+    if (step4.hasIncome == 2) {
+      $.ajax({
+        url: globalConfig.context + '/api/user/evaluate/step5/' + this.props.id
+      }).done(function (res) {
+        if (res.error && res.error.length) {
+          message.error(res.error[0].message)
+        } else if (res.data && res.data.length === 3) {
+          for (let i = 0; i < 3; i++) {
+            dataSource[i] = Object.assign({
+              key: i,
+              income: 0,
+              unitPrice: 0,
+              saleCount: 0,
+              marketScale: 0,
+              marketRate: 0,
+              recommend: res.data[i] || 0
+            }, dataSource[i]);
+          }
+          this.setState({
+            loading: false,
+            dataSource: dataSource
+          })
+        }
+      }.bind(this)).fail(function () {
+        this.setState({
+          loading: false
+        })
+      }.bind(this));
+    } else {
+      for (let i = 0; i < 3; i++) {
+        dataSource[i] = Object.assign({
+          key: i,
+          income: 0,
+          unitPrice: 0,
+          saleCount: 0,
+          marketScale: 0,
+          marketRate: 0
+        }, dataSource[i] || {});
+      }
+      this.state.dataSource = dataSource;
+    }
+    this.state.initialData = initialData;
+    this.state.type = type;
+    this.state.hasIncome = String(step4.hasIncome) || '1'
+  },
+  next() {
+    if (this.state.loading) {
+      return;
+    }
+    this.props.form.validateFields((err, values) => {
+      if (!err) {
+        this.setState({
+          loading: true
+        })
+
+        let incomes = [];
+        for (let i = 0; i < 3; i++) {
+          incomes.push({
+            unitPrice: values['unitPrice' + i] || 0,
+            saleCount: values['saleCount' + i] || 0,
+            marketScale: values['marketScale' + i] || 0,
+            marketRate: values['marketRate' + i] || 0,
+            income: values['income' + i] || 0
+          })
+        }
+
+        $.ajax({
+          url: globalConfig.context + '/api/user/evaluate/step5',
+          method: 'post',
+          data: {
+            id: this.props.id,
+            type: values.type,
+            forecastIncomes: JSON.stringify(incomes)
+          }
+        }).done(function (res) {
+          if (res.error && res.error.length) {
+            message.error(res.error[0].message)
+          } else {
+            if (this.props.next) {
+              this.props.next({
+                type: values.type,
+                forecastIncomes: incomes
+              });
+            }
+          }
+        }.bind(this)).fail(function () {
+          this.setState({
+            loading: false
+          })
+        }.bind(this));
+      } else {
+        for (let field in err) {
+          if (err.hasOwnProperty(field)) {
+            message.error(err[field].errors[0].message)
+            break;
+          }
+        }
+      }
+    });
+  },
+  prev() {
+    if (this.props.prev) {
+      this.props.prev();
+    }
+  },
+  onRadioChange(e) {
+    this.props.form.resetFields();
+    this.setState({
+      type: e.target.value,
+    });
+  },
+  tableCols() {
+    const { getFieldDecorator, getFieldValue, setFieldsValue } = this.props.form;
+    const { type } = this.state;
+    let cols = [{
+      title: '年份',
+      dataIndex: 'key',
+      key: 'key',
+      render: (text, it, idx) => {
+        return <div>{NUMBERS[idx + 1]}</div>
+      }
+    }];
+    switch (type) {
+      case "2":
+        function calc(rate, scale, key) {
+          let fv = {};
+          fv['income' + key] = (scale * rate / 100) | 0
+          setFieldsValue(fv);
+        }
+        cols.push({
+          title: '市场规模(元)',
+          dataIndex: 'marketScale',
+          key: 'marketScale',
+          render: (text, it, idx) => {
+            return getFieldDecorator('marketScale' + it.key, {
+              initialValue: text || 0,
+              rules: [{
+                validator: (rule, value, callback) => {
+                  if (!Number(value)) {
+                    callback('请输入' + NUMBERS[idx + 1] + '市场规模!');
+                  } else {
+                    callback();
+                  }
+                },
+              }]
+            })(<InputNumber min={0} placeholder="请输入市场规模" onChange={value => {
+              calc(Number(getFieldValue('marketRate' + it.key)) || 0, Number(value) || 0, it.key);
+            }} />);
+          }
+        });
+        cols.push({
+          title: '技术覆盖率/市场份额(%)',
+          dataIndex: 'marketRate',
+          key: 'marketRate',
+          render: (text, it, idx) => {
+            return getFieldDecorator('marketRate' + it.key, {
+              initialValue: text || 0,
+              rules: [{
+                validator: (rule, value, callback) => {
+                  if (!Number(value)) {
+                    callback('请输入' + NUMBERS[idx + 1] + '市场份额!');
+                  } else {
+                    callback();
+                  }
+                },
+              }]
+            })(<InputNumber min={0} placeholder="请输入市场份额" onChange={value => {
+              calc(Number(value) || 0, getFieldValue('marketScale' + it.key) || 0, it.key);
+            }} />);
+          }
+        });
+        cols.push({
+          title: '营业收入(元)',
+          dataIndex: 'income',
+          key: 'income',
+          render: (text, it, idx) => {
+            return getFieldDecorator('income' + it.key, {
+              initialValue: text || 0
+            })(<InputNumber min={0} disabled={true} />);
+          }
+        });
+        break;
+      case "3":
+        function calc(rate, scale, key) {
+          let fv = {};
+          fv['income' + key] = (scale * rate) | 0
+          setFieldsValue(fv);
+        }
+        cols.push({
+          title: '单价(元)',
+          dataIndex: 'unitPrice',
+          key: 'unitPrice',
+          render: (text, it, idx) => {
+            return getFieldDecorator('unitPrice' + it.key, {
+              initialValue: text || 0,
+              rules: [{
+                validator: (rule, value, callback) => {
+                  if (!Number(value)) {
+                    callback('请输入' + NUMBERS[idx + 1] + '单价!');
+                  } else {
+                    callback();
+                  }
+                },
+              }]
+            })(<InputNumber min={0} placeholder="请输入单价" onChange={value => {
+              calc(Number(getFieldValue('saleCount' + it.key)) || 0, Number(value) || 0, it.key);
+            }} />);
+          }
+        });
+        cols.push({
+          title: '销量',
+          dataIndex: 'saleCount',
+          key: 'saleCount',
+          render: (text, it, idx) => {
+            return getFieldDecorator('saleCount' + it.key, {
+              initialValue: text || 0,
+              rules: [{
+                validator: (rule, value, callback) => {
+                  if (!Number(value)) {
+                    callback('请输入' + NUMBERS[idx + 1] + '销量!');
+                  } else {
+                    callback();
+                  }
+                },
+              }]
+            })(<InputNumber min={0} placeholder="请输入销量" onChange={value => {
+              calc(Number(value) || 0, getFieldValue('unitPrice' + it.key) || 0, it.key);
+            }} />);
+          }
+        });
+        cols.push({
+          title: '营业收入(元)',
+          dataIndex: 'income',
+          key: 'income',
+          render: (text, it, idx) => {
+            return getFieldDecorator('income' + it.key, {
+              initialValue: text || 0
+            })(<InputNumber min={0} disabled={true} />);
+          }
+        });
+        break;
+      default:
+        cols.push({
+          title: '营业收入(元)',
+          dataIndex: 'income',
+          key: 'income',
+          render: (text, it, idx) => {
+            return getFieldDecorator('income' + it.key, {
+              initialValue: text || 0,
+              rules: [{
+                validator: (rule, value, callback) => {
+                  if (!Number(value)) {
+                    callback('请输入' + NUMBERS[idx + 1] + '预估营业收入!');
+                  } else {
+                    callback();
+                  }
+                },
+              }]
+            })(<InputNumber min={0} placeholder="请输入预估营业收入" />);
+          }
+        })
+        break;
+    }
+    if (this.state.hasIncome == '2') {
+      cols.push({
+        title: '参考值(元)',
+        dataIndex: 'recommend',
+        key: 'recommend',
+        render: (text) => {
+          return money(text)
+        }
+      })
+    }
+    return cols
+  },
+  stringify(val) {
+    return val && String(val)
+  },
+  render() {
+    let { loading, dataSource, type } = this.state;
+    const { getFieldDecorator, getFieldValue, setFieldsValue } = this.props.form;
+    return (
+      <Spin spinning={loading}>
+        <div style={{ marginBottom: 10 }}>根据市场等,预测该技术应用于生产活动并产生收入情况。(选择以下三种方式中的一种预估方法)</div>
+        <Form className="steps-form">
+          <FormItem label="请选择预测方法" {...formItemLayout}>
+            {getFieldDecorator('type', {
+              initialValue: this.stringify(type)
+            })(
+              <RadioGroup size="large" onChange={this.onRadioChange}>
+                <RadioButton value="1">直接输入预测值法</RadioButton>
+                <RadioButton value="2">市场份额法</RadioButton>
+                <RadioButton value="3">数量单价法</RadioButton>
+              </RadioGroup>
+              )}
+          </FormItem>
+          <Table pagination={false} columns={this.tableCols()} dataSource={dataSource} />
+        </Form>
+        <div className="steps-action">
+          <Button type="primary" onClick={() => this.next()}>保存,下一步</Button>
+          <Button style={{ marginLeft: 8 }} onClick={() => this.prev()}>上一步</Button>
+        </div>
+      </Spin>
+    )
+  },
+}));
+
+export default EvaluateStep5;

+ 96 - 0
js/component/account/services/evaluate/steps/step6.jsx

@@ -0,0 +1,96 @@
+import React from 'react';
+import { Spin, Form, Button, InputNumber, message } from 'antd';
+import ajax from 'jquery/src/ajax/xhr.js'
+import $ from 'jquery/src/ajax';
+
+const FormItem = Form.Item;
+
+const formItemLayout = {
+  labelCol: { span: 6 },
+  wrapperCol: { span: 10 },
+};
+
+const EvaluateStep6 = Form.create({})(React.createClass({
+  getInitialState() {
+    return {
+      loading: false,
+      initialData: {}
+    };
+  },
+  componentWillMount() {
+    this.state.initialData = this.props.data || {};
+  },
+  next() {
+    if (this.state.loading) {
+      return;
+    }
+    this.props.form.validateFields((err, values) => {
+      if (!err) {
+        this.setState({
+          loading: true
+        })
+        $.ajax({
+          url: globalConfig.context + '/api/user/evaluate/step6',
+          method: 'post',
+          data: {
+            id: this.props.id,
+            taxRate: values.taxRate
+          }
+        }).done(function (res) {
+          if (res.error && res.error.length) {
+            message.error(res.error[0].message)
+          } else {
+            if (this.props.next) {
+              this.props.next(values);
+            }
+          }
+        }.bind(this)).fail(function () {
+          this.setState({
+            loading: false
+          })
+        }.bind(this));
+      }
+    });
+  },
+  prev() {
+    if (this.props.prev) {
+      this.props.prev();
+    }
+  },
+  stringify(val) {
+    return val && String(val)
+  },
+  render() {
+    let { loading, initialData } = this.state;
+    const { getFieldDecorator } = this.props.form;
+    return (
+      <Spin spinning={loading}>
+        <div style={{ marginBottom: 10 }}>提示:一般企业所得税率为25%,如果应用该项技术的公司有所得税优惠政策,按照优惠政策填列。如为高新技术企业请填15%</div>
+        <Form className="steps-form">
+          <FormItem label="预估企业所得税率(%)" {...formItemLayout}>
+            {getFieldDecorator('taxRate', {
+              initialValue: this.stringify(initialData.taxRate),
+              rules: [{ required: true, message: '请输入预估企业所得税率!' }, {
+                validator: (rule, value, callback) => {
+                  if (!Number(value)) {
+                    callback('请输入预估企业所得税率!');
+                  } else {
+                    callback();
+                  }
+                },
+              }]
+            })(
+              <InputNumber min={0} placeholder="请输入预估企业所得税率" />
+              )}
+          </FormItem>
+        </Form>
+        <div className="steps-action">
+          <Button type="primary" onClick={() => this.next()}>保存,下一步</Button>
+          <Button style={{ marginLeft: 8 }} onClick={() => this.prev()}>上一步</Button>
+        </div>
+      </Spin>
+    )
+  },
+}));
+
+export default EvaluateStep6;

+ 140 - 0
js/component/account/services/evaluate/steps/step7.jsx

@@ -0,0 +1,140 @@
+import React from 'react';
+import { Spin, Form, Button, Select } from 'antd';
+import ajax from 'jquery/src/ajax/xhr.js'
+import $ from 'jquery/src/ajax';
+import { political, technical, market, capital, management } from './dict.js';
+
+const FormItem = Form.Item;
+const Option = Select.Option;
+
+const formItemLayout = {
+  labelCol: { span: 4 },
+  wrapperCol: { span: 10 },
+};
+
+const EvaluateStep7 = Form.create({})(React.createClass({
+  getInitialState() {
+    return {
+      loading: false,
+      initialData: {}
+    };
+  },
+  componentWillMount() {
+    this.state.initialData = this.props.data || {};
+  },
+  next() {
+    if (this.state.loading) {
+      return;
+    }
+    this.props.form.validateFields((err, values) => {
+      if (!err) {
+        this.setState({
+          loading: true
+        })
+        values.id = this.props.id;
+        $.ajax({
+          url: globalConfig.context + '/api/user/evaluate/step7',
+          method: 'post',
+          data: values
+        }).done(function (res) {
+          if (res.error && res.error.length) {
+            message.error(res.error[0].message)
+          } else {
+            if (this.props.next) {
+              this.props.next(values);
+            }
+          }
+        }.bind(this)).fail(function () {
+          this.setState({
+            loading: false
+          })
+        }.bind(this));
+      }
+    });
+  },
+  prev() {
+    if (this.props.prev) {
+      this.props.prev();
+    }
+  },
+  stringify(val) {
+    return val && String(val)
+  },
+  render() {
+    let { loading, initialData } = this.state;
+    const { getFieldDecorator } = this.props.form;
+    return (
+      <Spin spinning={loading}>
+        <div style={{ marginBottom: 10 }}>项目整体获利情况受政策、技术、市场、资金、管理等影响。</div>
+        <Form className="steps-form">
+          <FormItem label="政策风险" {...formItemLayout}>
+            {getFieldDecorator('political', {
+              rules: [{ required: true, message: '请选择政策风险!' }],
+              initialValue: this.stringify(initialData.political)
+            })(
+              <Select placeholder="请选择政策风险">
+                {political.map((it) => {
+                  return <Option key={it.id} value={it.id}>{it.text}</Option>
+                })}
+              </Select>
+              )}
+          </FormItem>
+          <FormItem label="技术风险" {...formItemLayout}>
+            {getFieldDecorator('technical', {
+              rules: [{ required: true, message: '请选择技术风险!' }],
+              initialValue: this.stringify(initialData.technical)
+            })(
+              <Select placeholder="请选择技术风险">
+                {technical.map((it) => {
+                  return <Option key={it.id} value={it.id}>{it.text}</Option>
+                })}
+              </Select>
+              )}
+          </FormItem>
+          <FormItem label="市场风险" {...formItemLayout}>
+            {getFieldDecorator('market', {
+              rules: [{ required: true, message: '请选择市场风险!' }],
+              initialValue: this.stringify(initialData.market)
+            })(
+              <Select placeholder="请选择市场风险">
+                {market.map((it) => {
+                  return <Option key={it.id} value={it.id}>{it.text}</Option>
+                })}
+              </Select>
+              )}
+          </FormItem>
+          <FormItem label="资金风险" {...formItemLayout}>
+            {getFieldDecorator('capital', {
+              rules: [{ required: true, message: '请选择资金风险!' }],
+              initialValue: this.stringify(initialData.capital)
+            })(
+              <Select placeholder="请选择资金风险">
+                {capital.map((it) => {
+                  return <Option key={it.id} value={it.id}>{it.text}</Option>
+                })}
+              </Select>
+              )}
+          </FormItem>
+          <FormItem label="管理风险" {...formItemLayout}>
+            {getFieldDecorator('management', {
+              rules: [{ required: true, message: '请选择管理风险!' }],
+              initialValue: this.stringify(initialData.management)
+            })(
+              <Select placeholder="请选择管理风险">
+                {management.map((it) => {
+                  return <Option key={it.id} value={it.id}>{it.text}</Option>
+                })}
+              </Select>
+              )}
+          </FormItem>
+        </Form>
+        <div className="steps-action">
+          <Button type="primary" onClick={() => this.next()}>保存,下一步</Button>
+          <Button style={{ marginLeft: 8 }} onClick={() => this.prev()}>上一步</Button>
+        </div>
+      </Spin>
+    )
+  },
+}));
+
+export default EvaluateStep7;

+ 358 - 0
js/component/account/services/evaluate/steps/step8.jsx

@@ -0,0 +1,358 @@
+import React from 'react';
+import { Spin, Form, Button, message, Table } from 'antd';
+import ajax from 'jquery/src/ajax/xhr.js'
+import $ from 'jquery/src/ajax';
+import dict from './dict.js';
+import money from '../../../../money.js';
+
+const FormItem = Form.Item;
+
+const formItemLayout = {
+  labelCol: { span: 4 },
+  wrapperCol: { span: 10 },
+};
+
+const NUMBERS = {
+  1: '第一年',
+  2: '第二年',
+  3: '第三年',
+  4: '第四年',
+  5: '第五年',
+}
+
+const getText = (map, key, field) => {
+  if (field) {
+    return map[key] ? (map[key][field || 'text'] || '') : key;
+  }
+  return map[key] ? map[key] : key;
+}
+
+const EvaluateStep8 = Form.create({})(React.createClass({
+  getInitialState() {
+    return {
+      loading: true,
+      record: {},
+      industries: {},
+      subIndustries: {},
+      districts: {},
+      value: 0,
+      recommends: []
+    };
+  },
+  componentWillMount() {
+    let record = this.props.record || {}, dictMap = {};
+    if (record[0] && record[0].industry) {
+      this.loadData(record[0].industry);
+    } else {
+      this.state.loading = false;
+    }
+    this.state.record = record;
+    this.state.value = this.props.value || 0;
+    for (let key in dict) {
+      if (dict.hasOwnProperty(key) && key != 'toMap') {
+        dictMap[key] = dict.toMap(dict[key]);
+      }
+    }
+    this.state.dictMap = dictMap;
+  },
+  loadData(pid) {
+    $.when($.ajax({
+      url: globalConfig.context + '/open/findIndustryCategory'
+    }), $.ajax({
+      url: globalConfig.context + '/open/findIndustryCategory',
+      data: { id: pid }
+    }), $.ajax({
+      url: globalConfig.context + '/open/findDistrict'
+    }), $.ajax({
+      url: globalConfig.context + '/api/user/evaluate/step5/' + this.props.id
+    })).done(function (industryRes, subIndustryRes, districtRes, recommendRes) {
+      let i = {}, si = {}, d = { 0: "全国" }, r = [];
+      if (industryRes[0] && industryRes[0].data) {
+        industryRes[0].data.forEach(it => {
+          i[String(it.id)] = it;
+        })
+      }
+      if (subIndustryRes[0] && subIndustryRes[0].data) {
+        subIndustryRes[0].data.forEach(it => {
+          si[String(it.id)] = it;
+        })
+      }
+      if (districtRes[0] && districtRes[0].data) {
+        districtRes[0].data.forEach(it => {
+          d[String(it.id)] = it.name;
+        })
+      }
+      if (recommendRes[0] && recommendRes[0].data) {
+        r = recommendRes[0].data;
+      }
+      this.setState({
+        loading: false,
+        industries: i,
+        subIndustries: si,
+        districts: d,
+        recommends: r
+      })
+    }.bind(this)).fail(function () {
+      this.setState({
+        loading: false
+      })
+    }.bind(this));
+  },
+  next() {
+    if (this.props.next) {
+      this.props.next();
+    }
+  },
+  prev() {
+    if (this.props.prev) {
+      this.props.prev();
+    }
+  },
+  step1Col() {
+    return [{ dataIndex: 'key', key: 'key', width: '40%', className: 'steps-cell-key' }, { dataIndex: 'text', key: 'text', width: '60%' }]
+  },
+  step4Col() {
+    return [{
+      title: '年份', dataIndex: 'year', key: 'year'
+    }, {
+      title: '营收', dataIndex: 'income', key: 'income', render: (text) => { return money(text || 0) + '元' }
+    }, {
+      title: '利润率', dataIndex: 'profit', key: 'profit', render: (text) => { return (text || 0) + '%' }
+    }]
+  },
+  step5Col() {
+    const step = this.state.record[4];
+    let cols = [{
+      title: '年份', dataIndex: 'key', key: 'key', render: (text) => { return NUMBERS[text + 1] }
+    }]
+    switch (step.type) {
+      case "2":
+        cols.push({ title: '市场规模', dataIndex: 'marketScale', key: 'marketScale', render: (text) => { return money(text || 0) + '元' } });
+        cols.push({ title: '技术覆盖率/市场份额', dataIndex: 'marketRate', key: 'marketRate', render: (text) => { return (text || 0) + '%' } });
+        break;
+      case "3":
+        cols.push({ title: '单价', dataIndex: 'unitPrice', key: 'unitPrice', render: (text) => { return money(text || 0) + '元' } });
+        cols.push({ title: '销量', dataIndex: 'saleCount', key: 'saleCount' });
+        break;
+    }
+    cols.push({ title: '营业收入', dataIndex: 'income', key: 'income', render: (text) => { return money(text || 0) + '元' } });
+    if(this.state.record[3].hasIncome=='2') {
+      cols.push({ title: '建议值', dataIndex: 'recommend', key: 'recommend', render: (text) => { return money(text || 0) + '元' } });
+    }
+    return cols;
+  },
+  step1Data() {
+    const step = this.state.record[0], { industries, subIndustries, districts } = this.state;
+    const { transferTypes, leftTimes } = this.state.dictMap;
+    return step ? [{
+      key: "技术名称",
+      text: step.name
+    }, {
+      key: "所属主行业",
+      text: getText(industries, String(step.industry), 'name')
+    }, {
+      key: "所属子行业",
+      text: step.subIndustry.split(',').map(it => {
+        return getText(subIndustries, it, 'name');
+      }).join(',')
+    }, {
+      key: "转让方式",
+      text: getText(transferTypes, String(step.transferType))
+    }, {
+      key: "预估技术剩余寿命",
+      text: getText(leftTimes, String(step.timeLeft))
+    }, {
+      key: "转让区域",
+      text: step.transferArea.split(',').map(it => {
+        return districts[it] || it;
+      }).join(',')
+    }, {
+      key: "评估基准日",
+      text: step.benchmarkDate
+    }, {
+      key: "评估币种",
+      text: step.currencyType
+    }] : []
+  },
+  step2Data() {
+    const step = this.state.record[1];
+    const { accessMethods, legalStatus, maintenanceStatus, confidentialities, decidabilities, rightLimitations } = this.state.dictMap;
+    return step ? [{
+      key: "取得方式",
+      text: getText(accessMethods, String(step.accessMethod))
+    }, {
+      key: "法律状态",
+      text: getText(legalStatus, String(step.legalStatus))
+    }, {
+      key: "专利维护",
+      text: getText(maintenanceStatus, String(step.patentMaintenance))
+    }, {
+      key: "保密性",
+      text: getText(confidentialities, String(step.confidentiality))
+    }, {
+      key: "他人侵权的易判定性",
+      text: getText(decidabilities, String(step.decidability))
+    }, {
+      key: "是否涉及质押、担保、诉讼等权利限制",
+      text: getText(rightLimitations, String(step.hasRightLimitation))
+    }] : []
+  },
+  step3Data() {
+    const step = this.state.record[2];
+    const { progressiveness, innovativeness, ripeness, alternatives,
+      defensive, prospect, supplyAndDemand, rangeOfApplication, imitable, profitability } = this.state.dictMap;
+    return step ? [{
+      key: "先进性",
+      text: getText(progressiveness, String(step.progressiveness))
+    }, {
+      key: "创新性",
+      text: getText(innovativeness, String(step.innovativeness))
+    }, {
+      key: "成熟度",
+      text: getText(ripeness, String(step.ripeness))
+    }, {
+      key: "替代性",
+      text: getText(alternatives, String(step.alternatives))
+    }, {
+      key: "技术防御力",
+      text: getText(defensive, String(step.defensive))
+    }, {
+      key: "技术领域发展前景",
+      text: getText(prospect, String(step.prospect))
+    }, {
+      key: "供求关系",
+      text: getText(supplyAndDemand, String(step.supplyAndDemand))
+    }, {
+      key: "产品应用范围",
+      text: getText(rangeOfApplication, String(step.rangeOfApplication))
+    }, {
+      key: "遭他人模仿可能性",
+      text: getText(imitable, String(step.imitable))
+    }, {
+      key: "独立获利能力",
+      text: getText(profitability, String(step.profitability))
+    }] : []
+  },
+  step4Data() {
+    const step = this.state.record[3];
+    return step.hasIncome == 2 && step.incomes || []
+  },
+  step5Data() {
+    const step = this.state.record[4], { recommends } = this.state;
+    let res = [];
+    if (step.forecastIncomes) {
+      step.forecastIncomes.forEach((it, idx) => {
+        res.push(Object.assign({}, it, {
+          key: idx,
+          recommend: recommends[idx]
+        }))
+      })
+    }
+    return res
+  },
+  step6Data() {
+    const step = this.state.record[5];
+    return step ? [{
+      key: "企业所得税率预估",
+      text: step.taxRate + '%'
+    }] : []
+  },
+  step7Data() {
+    const step = this.state.record[6];
+    const { political, technical, market, capital, management } = this.state.dictMap;
+    return step ? [{
+      key: "政策风险",
+      text: getText(political, String(step.political))
+    }, {
+      key: "技术风险",
+      text: getText(technical, String(step.technical))
+    }, {
+      key: "市场风险",
+      text: getText(market, String(step.market))
+    }, {
+      key: "资金风险",
+      text: getText(capital, String(step.capital))
+    }, {
+      key: "管理风险",
+      text: getText(management, String(step.management))
+    }] : []
+  },
+  step5Title() {
+    const step = this.state.record[4];
+    let title = "收入直接预估"
+    switch (step.type) {
+      case "2":
+        title = "市场占比预估"
+        break;
+      case "3":
+        title = "产品开发预估"
+        break;
+    }
+    return title;
+  },
+  calc() {
+    if(this.state.loading) {
+      return;
+    }
+    this.setState({
+      loading: true
+    })
+    $.ajax({
+      url: globalConfig.context + '/api/user/evaluate/calc/' + this.props.id
+    }).done(function (res) {
+      let val = res && res.data || 0;
+      this.setState({
+        value: val,
+        loading: false
+      })
+      if (this.props.next) {
+        this.props.next(val)
+      }
+    }.bind(this)).fail(function () {
+      this.setState({
+        loading: false
+      })
+    }.bind(this));
+  },
+  render() {
+    let { loading, record, value } = this.state;
+    const tableProps = {
+      showHeader: false,
+      pagination: false,
+      size: 'middle'
+    }
+    return (
+      <Spin spinning={loading}>
+        <div className="steps-result">
+          <div className="steps-name">基本信息</div>
+          <Table {...tableProps} columns={this.step1Col()} dataSource={this.step1Data()}></Table>
+          <div className="steps-name">法律状况评估</div>
+          <Table {...tableProps} columns={this.step1Col()} dataSource={this.step2Data()}></Table>
+          <div className="steps-name">技术状况评估</div>
+          <Table {...tableProps} columns={this.step1Col()} dataSource={this.step3Data()}></Table>
+          <div className="steps-name">历史收入</div>
+          <Table columns={this.step4Col()} dataSource={this.step4Data()} locale={{ emptyText: "无历史收入" }} rowKey="year" pagination={false} size="middle"></Table>
+          <div className="steps-name">收入预估</div>
+          <Table columns={this.step5Col()} dataSource={this.step5Data()} pagination={false} size="middle" showHeader={true} title={this.step5Title}></Table>
+          <div className="steps-name">所得税预估</div>
+          <Table {...tableProps} columns={this.step1Col()} dataSource={this.step6Data()}></Table>
+          <div className="steps-name">风险预估</div>
+          <Table {...tableProps} columns={this.step1Col()} dataSource={this.step7Data()}></Table>
+          {
+            value ? <div><div className="steps-name">价值评估结果:</div>
+              <div className="steps-value">{money(value)}元</div></div> : <div />
+          }
+        </div>
+        <div className="steps-action">
+          {
+            value ? <Button type="primary" onClick={() => window.open(globalConfig.context + '/user/account/evaluateInfo?id=' + this.props.id)}>查看评估报告</Button>
+              : <Button type="primary" onClick={this.calc}>确认表单,开始估值</Button>
+          }
+          <Button style={{ marginLeft: 8 }} onClick={() => this.prev()}>上一步</Button>
+        </div>
+      </Spin>
+    )
+  },
+}));
+
+export default EvaluateStep8;

+ 12 - 12
js/component/account/services/finance.jsx

@@ -152,7 +152,7 @@ const FinanceDescFrom = Form.create()(React.createClass({
                             rules: [{ type: 'number', required: true, message: '此项为必填项!' }],
                             initialValue: theData.mainBusinessIncome
                         })(
-                            <InputNumber />
+                            <InputNumber min={0} max={9999} step={0.01} />
                             )}
                     </FormItem>
                     <FormItem className="half-item"
@@ -163,7 +163,7 @@ const FinanceDescFrom = Form.create()(React.createClass({
                             rules: [{ type: 'number', required: true, message: '此项为必填项!' }],
                             initialValue: theData.managementCost
                         })(
-                            <InputNumber />
+                            <InputNumber min={0} max={9999} step={0.01} />
                             )}
                         {this.state.managementCost && this.state.managementCost != this.props.form.getFieldValue('managementCost') ? <span style={{ color: '#f50' }}>与财务报表不一致!</span> : <span></span>}
                     </FormItem>
@@ -178,7 +178,7 @@ const FinanceDescFrom = Form.create()(React.createClass({
                                 }],
                             initialValue: theData.researchCost
                         })(
-                            <InputNumber />
+                            <InputNumber min={0} max={9999} step={0.01} />
                             )}
                         {this.state.researchCost && this.state.researchCost != this.props.form.getFieldValue('researchCost') ? <span style={{ color: '#f50' }}>与财务报表不一致!</span> : <span></span>}
                     </FormItem>
@@ -190,7 +190,7 @@ const FinanceDescFrom = Form.create()(React.createClass({
                             rules: [{ type: 'number', required: true, message: '此项为必填项!' }],
                             initialValue: theData.operatingProfit
                         })(
-                            <InputNumber />
+                            <InputNumber min={0} max={9999} step={0.01} />
                             )}
                         {this.state.operatingProfit && this.state.operatingProfit != this.props.form.getFieldValue('operatingProfit') ? <span style={{ color: '#f50' }}>与财务报表不一致!</span> : <span></span>}
                     </FormItem>
@@ -202,7 +202,7 @@ const FinanceDescFrom = Form.create()(React.createClass({
                             rules: [{ type: 'number', required: true, message: '此项为必填项!' }],
                             initialValue: theData.variousTax
                         })(
-                            <InputNumber />
+                            <InputNumber min={0} max={9999} step={0.01} />
                             )}
                     </FormItem>
                     <FormItem className="half-item"
@@ -213,7 +213,7 @@ const FinanceDescFrom = Form.create()(React.createClass({
                             rules: [{ type: 'number', required: true, message: '此项为必填项!' }],
                             initialValue: theData.currentAsset
                         })(
-                            <InputNumber />
+                            <InputNumber min={0} max={9999} step={0.01} />
                             )}
                     </FormItem>
                     <FormItem className="half-item"
@@ -224,7 +224,7 @@ const FinanceDescFrom = Form.create()(React.createClass({
                             rules: [{ type: 'number', required: true, message: '此项为必填项!' }],
                             initialValue: theData.netFixedAsset
                         })(
-                            <InputNumber />
+                            <InputNumber min={0} max={9999} step={0.01} />
                             )}
                     </FormItem>
                     <FormItem className="half-item"
@@ -235,7 +235,7 @@ const FinanceDescFrom = Form.create()(React.createClass({
                             rules: [{ type: 'number', required: true, message: '此项为必填项!' }],
                             initialValue: theData.totalAsset
                         })(
-                            <InputNumber />
+                            <InputNumber min={0} max={9999} step={0.01} />
                             )}
                     </FormItem>
                     <FormItem className="half-item"
@@ -246,7 +246,7 @@ const FinanceDescFrom = Form.create()(React.createClass({
                             rules: [{ type: 'number', required: true, message: '此项为必填项!' }],
                             initialValue: theData.netAsset
                         })(
-                            <InputNumber />
+                            <InputNumber min={0} max={9999} step={0.01} />
                             )}
                     </FormItem>
                     <FormItem className="half-item"
@@ -257,7 +257,7 @@ const FinanceDescFrom = Form.create()(React.createClass({
                             rules: [{ type: 'number', required: true, message: '此项为必填项!' }],
                             initialValue: theData.grossProfit
                         })(
-                            <InputNumber />
+                            <InputNumber min={0} max={9999} step={0.01} />
                             )}
                         {this.state.grossProfit && this.state.grossProfit != this.props.form.getFieldValue('grossProfit') ? <span style={{ color: '#f50' }}>与财务报表不一致!</span> : <span></span>}
                     </FormItem>
@@ -269,7 +269,7 @@ const FinanceDescFrom = Form.create()(React.createClass({
                             rules: [{ type: 'number', required: true, message: '此项为必填项!' }],
                             initialValue: theData.netProfit
                         })(
-                            <InputNumber />
+                            <InputNumber min={0} max={9999} step={0.01} />
                             )}
                     </FormItem>
                     <FormItem className="half-item"
@@ -280,7 +280,7 @@ const FinanceDescFrom = Form.create()(React.createClass({
                             rules: [{ type: 'number', required: true, message: '此项为必填项!' }],
                             initialValue: theData.salesRevenue
                         })(
-                            <InputNumber />
+                            <InputNumber min={0} max={9999} step={0.01} />
                             )}
                     </FormItem>
                 </div>

+ 2 - 2
js/component/account/services/honorList.jsx

@@ -48,6 +48,7 @@ const HonorListDescFrom = Form.create()(React.createClass({
         if (!this.props.visible && nextProps.visible) {
             this.props.form.resetFields();
             this.state.fileList = [];
+            this.state.enclosureUrl = null;
         };
     },
     componentWillMount() {
@@ -188,8 +189,7 @@ const HonorListDesc = React.createClass({
                     <Modal maskClosable={false} title="企业荣誉及其他证明材料" visible={this.state.visible}
                         onOk={this.handleOk} onCancel={this.handleCancel}
                         width='800px'
-                        footer=''
-                    >
+                        footer='' >
                         <HonorListDescFrom
                             data={this.props.data}
                             spinState={this.spinChange}

+ 5 - 2
js/component/account/services/intellectualDesc.jsx

@@ -38,7 +38,8 @@ const IntellectualDescFrom = Form.create()(React.createClass({
         return {
             loading: false,
             intellectualGetOption: [],
-            catagoryOption: []
+            catagoryOption: [],
+            data: {}
         };
     },
     componentWillMount() {
@@ -53,7 +54,9 @@ const IntellectualDescFrom = Form.create()(React.createClass({
                 <Select.Option value={item.value} key={item.key}>{item.key}</Select.Option>
             )
         });
-        this.loadData();
+        if (this.props.data.id) {
+            this.loadData(this.props.data.id, this.props.data.type);
+        };
     },
     handleSubmit(e) {
         e.preventDefault();

+ 11 - 1
js/component/account/services/leftTab.jsx

@@ -13,7 +13,8 @@ const LeftTab = React.createClass({
             keyList: [
                 { key: 'sub1', value: ['contract', 'patent', 'copyright', 'intellectual'] },
                 { key: 'sub2', value: ['standard', 'activity', 'activityCostList', 'orgTechCenter', 'techProduct', 'ratepay', 'finance', 'achievement', 'honorList', 'annualReport', 'cognizance', 'companyDetail'] },
-                { key: 'sub3', value: ['technology'] }
+                { key: 'sub3', value: ['technology'] },
+                { key: 'sub4', value: ['evaluate'] }
             ]
         };
     },
@@ -35,6 +36,10 @@ const LeftTab = React.createClass({
                 });
             });
             this.state.current = theKey;
+            if(theKey=='createEvaluate') {
+                this.state.subKey = 'sub4'
+                this.state.current = 'evaluate';
+            }
         };
     },
     render() {
@@ -103,6 +108,11 @@ const LeftTab = React.createClass({
                         申报管理
                     </Menu.Item>
                 </SubMenu>
+                <SubMenu key="sub4" title={<span>科技评估</span>}>
+                    <Menu.Item key="evaluate">
+                        科技评估管理
+                    </Menu.Item>
+                </SubMenu>
             </Menu>
         );
     }

+ 0 - 0
js/component/account/services/orgTechCenter.jsx


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