From c9f6a499d00d4a4685ed7b528db74e0d96f50580 Mon Sep 17 00:00:00 2001
From: 陈婷婷 <506607603@qq.com>
Date: 星期二, 07 四月 2026 12:04:55 +0800
Subject: [PATCH] Merge branch 'master' of http://101.37.171.70:10101/r/MES-WEB-VUEUI

---
 src/views/scMould/warehouse/Sc_MouldProdBackBillEdit.vue         |    4 
 public/fonts/glyphicons-halflings-regular.ttf                    |    0 
 src/views/KCGL/MoveStockBill/Kf_MoveStockBillList.vue            |   38 
 public/fonts/glyphicons-halflings-regular.svg                    |  288 
 src/views/printTemplateDesigner/panels/preview.vue               |   85 
 src/i18n/de.json                                                 |  251 
 src/views/printTemplateDesigner/json-view.vue                    |   81 
 src/i18n/ja.json                                                 |  251 
 src/views/printTemplateDesigner/panels/print-data.js             |   38 
 src/hiprint/css/image/jquery.minicolors.png                      |    0 
 src/hiprint/css/print-lock.css                                   |  352 
 src/views/component/printList/barcode.vue                        |    2 
 src/views/printTemplateDesigner/design/font-size.js              |   38 
 src/assets/hi.png                                                |    0 
 src/i18n/cn.json                                                 |  253 
 src/hiprint/css/hiprint.css                                      |  997 ++
 src/i18n/en.json                                                 |  252 
 src/permission.js                                                |    5 
 src/views/scMould/warehouse/Sc_MouldProdOutBillEdit.vue          |    5 
 public/css/print-lock.css                                        |  352 
 src/api/login.js                                                 |    2 
 src/i18n/fr.json                                                 |  251 
 src/hiprint/plugins/watermark.js                                 |  199 
 src/views/component/printList/preview.vue                        |  194 
 src/views/scMould/warehouse/Sc_MouldMoveStockRequestBillEdit.vue |    4 
 src/views/printTemplateDesigner/design/index.vue                 | 1241 +++
 src/router/index.js                                              |   20 
 src/views/printTemplateDesigner/design/preview.vue               |   85 
 src/hiprintVue/index.js                                          |   89 
 .env.development                                                 |   12 
 src/views/ProductInBill/Kf_ProductInBillList.vue                 |    2 
 src/main.js                                                      |   14 
 .env.production                                                  |   10 
 src/i18n/it.json                                                 |  251 
 src/views/KCGL/MoveStockBill/Kf_MoveStockBillEdit.vue            |  261 
 src/views/scMould/warehouse/Sc_MouldInRequestBillEdit.vue        |    4 
 src/views/printTemplateDesigner/design/panel.js                  |  745 +
 src/views/scMould/warehouse/Sc_MouldOutRequestBillEdit.vue       |    5 
 src/utils/decodeVerHiPrint.js                                    |   26 
 src/hiprint/css/image/v_img.svg                                  |    1 
 src/utils/ruoyi.js                                               |    4 
 src/hiprint/plugins/qrcode.js                                    |  617 +
 src/i18n/es.json                                                 |  251 
 src/views/scMould/warehouse/Sc_MouldProdMoveBillEdit.vue         |    4 
 .env.staging                                                     |    2 
 public/fonts/glyphicons-halflings-regular.woff2                  |    0 
 src/views/printTemplateDesigner/design/scale.js                  |   31 
 src/views/printTemplateDesigner/design/print-data.js             |   54 
 src/views/printTemplateDesigner/panels/index.vue                 |  349 
 src/views/CaiGouGuanLi/CaiGouRuKu/Kf_POStockInBillList.vue       |   54 
 src/hiprint/plugins/jquery.hiwprint.js                           |  119 
 src/views/CaiGouGuanLi/CaiGouRuKu/Kf_POStockInBillEdit.vue       |  308 
 src/assets/logo.png                                              |    0 
 src/hiprint/css/image/l_img.svg                                  |    1 
 public/fonts/glyphicons-halflings-regular.eot                    |    0 
 public/fonts/glyphicons-halflings-regular.woff                   |    0 
 public/index.html                                                |   55 
 src/i18n/ru.json                                                 |  251 
 src/i18n/cn_tw.json                                              |  252 
 src/hiprint/hiprint.bundle.js                                    | 11379 ++++++++++++++++++++++++++++
 src/hiprint/hiprint.config.js                                    | 2238 +++++
 src/utils/request.js                                             |   88 
 src/views/component/printList/index.vue                          |  480 
 src/views/login.vue                                              |    7 
 public/static/printTemplate/测试.json                              |   92 
 package.json                                                     |   26 
 public/css/bootstrap.min.css                                     |    6 
 src/hiprint/etypes/default-etyps-provider.js                     |  153 
 src/views/printTemplateDesigner/panels/providers.js              |  429 +
 69 files changed, 23,501 insertions(+), 457 deletions(-)

diff --git a/.env.development b/.env.development
index 317b137..b084cc9 100644
--- a/.env.development
+++ b/.env.development
@@ -5,21 +5,23 @@
 ENV = 'development'
 
 # 鏅轰簯杩堟�滾-MOM绠$悊绯荤粺/寮�鍙戠幆澧�
-# VUE_APP_BASE_API = http://localhost:81/API/
+VUE_APP_BASE_API = http://localhost:81/API/
 # VUE_APP_BASE_API = 'http://47.96.97.237/API/'
 # VUE_APP_BASE_API = 'http://220.189.218.155:9010/API/'
 # VUE_APP_BASE_API = 'http://localhost:8082/LuBaoAPI/'
-# VUE_APP_BASE_API = 'http://localhost:8082/API/'
+VUE_APP_BASE_API = 'http://localhost:8082/API/'
+#VUE_APP_BASE_API = 'http://localhost:8082/LuBaoAPI/'
 #閿﹂殕
 # VUE_APP_BASE_API_INNER = http://192.168.1.11/API/
 # VUE_APP_BASE_API = http://61.174.29.234:8880/API/
 # 瀹佹尝 鍥涚淮灏�
-VUE_APP_BASE_API_INNER = http://192.168.0.236:9010/API/
-VUE_APP_BASE_API = http://220.189.218.155:9010/API/
+# VUE_APP_BASE_API_INNER = http://192.168.0.236:9010/API/
+# VUE_APP_BASE_API = http://220.189.218.155:9010/API/
 #鏉滆春
 # VUE_APP_BASE_API = http://localhost:8082/API/
 # 鍐呯綉鍦板潃娴嬭瘯
+VUE_APP_BASE_API_INNER = http://192.168.1.11/API/
 # VUE_APP_BASE_API_INNER = http://192.168.1.11/API/
 # VUE_APP_BASE_API_INNER = http://192.168.1.11/API/
 # 璺敱鎳掑姞杞�
-VUE_CLI_BABEL_TRANSPILE_MODULES = true
+VUE_CLI_BABEL_TRANSPILE_MODULES = true 
\ No newline at end of file
diff --git a/.env.production b/.env.production
index 6b9d2a0..c6109e2 100644
--- a/.env.production
+++ b/.env.production
@@ -5,14 +5,16 @@
 ENV = 'production'
 
 # 瀹佹尝 鍥涚淮灏�
-VUE_APP_BASE_API_INNER = http://192.168.0.236:9010/API/
-VUE_APP_BASE_API = http://220.189.218.155:9010/API/
+# VUE_APP_BASE_API_INNER = http://192.168.0.236:9010/API/
+# VUE_APP_BASE_API = http://220.189.218.155:9010/API/
 # 浣欏 閿﹂殕 鏅鸿兘瀹跺眳
 # VUE_APP_BASE_API_INNER = http://192.168.1.11/API/
 # VUE_APP_BASE_API = http://61.174.29.234:8880/API/
 # 鏅轰簯杩堟�滾-MOM绠$悊绯荤粺/鐢熶骇鐜
-# VUE_APP_BASE_API = http://47.96.97.237/API/
+VUE_APP_BASE_API = http://47.96.97.237/API/
 #鏉滆春
 # VUE_APP_BASE_API = http://localhost:8082/API/
-# 璺敱鎳掑姞杞� 
+# 闄堥晲鍝�
+# VUE_APP_BASE_API = http://localhost:81/API/
+# 璺敱鎳掑姞杞�
 VUE_CLI_BABEL_TRANSPILE_MODULES = true
\ No newline at end of file
diff --git a/.env.staging b/.env.staging
index ceed279..a95581a 100644
--- a/.env.staging
+++ b/.env.staging
@@ -9,7 +9,7 @@
 ENV = 'staging'
 
 # 鏅轰簯杩堟�滾-MOM绠$悊绯荤粺/娴嬭瘯鐜
-VUE_APP_BASE_API = 'http://localhost:81/API/'
+VUE_APP_BASE_API = http://localhost:81/API/
 
 # 璺敱鎳掑姞杞�
 VUE_CLI_BABEL_TRANSPILE_MODULES = true
diff --git a/package.json b/package.json
index 1db4057..2b9f146 100644
--- a/package.json
+++ b/package.json
@@ -24,24 +24,34 @@
     "url": "https://gitee.com/y_project/RuoYi-Vue.git"
   },
   "dependencies": {
+    "@claviska/jquery-minicolors": "^2.3.6",
     "@riophae/vue-treeselect": "0.4.0",
     "axios": "0.28.1",
+    "bwip-js": "^4.9.0",
+    "canvg": "^3.0.11",
     "clipboard": "2.0.8",
     "core-js": "^3.46.0",
     "dayjs": "^1.11.19",
+    "dom-to-image-more": "^3.7.2",
     "echarts": "5.4.0",
     "element-ui": "2.15.14",
     "file-saver": "2.0.5",
     "fuse.js": "6.4.3",
     "highlight.js": "9.18.5",
+    "jquery": "^3.7.1",
     "js-beautify": "1.13.0",
     "js-cookie": "3.0.1",
+    "jsbarcode": "^3.12.3",
     "jsencrypt": "3.0.0-rc.1",
+    "jspdf": "^2.5.2",
+    "lodash": "^4.17.21",
     "moment": "^2.30.1",
     "nprogress": "0.2.0",
+    "nzh": "^1.0.14",
     "print-js": "^1.6.0",
     "quill": "2.0.2",
     "screenfull": "5.0.2",
+    "socket.io-client": "^4.8.3",
     "sortablejs": "^1.10.2",
     "splitpanes": "2.4.1",
     "vue": "2.6.12",
@@ -53,17 +63,27 @@
     "xlsx": "^0.18.5"
   },
   "devDependencies": {
-    "@vue/cli-plugin-babel": "4.4.6",
-    "@vue/cli-service": "4.4.6",
+    "@vue/cli-plugin-babel": "~5.0.0",
+    "@vue/cli-service": "^4.5.15",
+    "ant-design-vue": "^1.7.8",
+    "babel-loader": "^8.1.0",
     "babel-plugin-dynamic-import-node": "2.3.3",
+    "bootstrap": "^3.3.7",
     "chalk": "4.1.0",
     "compression-webpack-plugin": "6.1.2",
+    "concurrent-tasks": "^1.0.7",
     "connect": "3.6.6",
+    "copy-webpack-plugin": "^5.1.2",
+    "cross-env": "^5.0.5",
+    "less-loader": "^6.1.1",
     "sass": "1.32.13",
     "sass-loader": "10.1.1",
     "script-ext-html-webpack-plugin": "2.1.5",
     "svg-sprite-loader": "5.1.1",
-    "vue-template-compiler": "2.6.12"
+    "uglifyjs-webpack-plugin": "^2.2.0",
+    "vue-ls": "^4.2.0",
+    "vue-template-compiler": "2.6.12",
+    "webpack-cli": "^4.9.1"
   },
   "engines": {
     "node": ">=8.9",
diff --git a/public/css/bootstrap.min.css b/public/css/bootstrap.min.css
new file mode 100644
index 0000000..ed3905e
--- /dev/null
+++ b/public/css/bootstrap.min.css
@@ -0,0 +1,6 @@
+/*!
+ * Bootstrap v3.3.7 (http://getbootstrap.com)
+ * Copyright 2011-2016 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0;font-size:2em}mark{color:#000;background:#ff0}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{margin:0;font:inherit;color:inherit}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input{line-height:normal}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid silver}legend{padding:0;border:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,:after,:before{color:#000!important;text-shadow:none!important;background:0 0!important;-webkit-box-shadow:none!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}blockquote,pre{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff2) format('woff2'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\002a"}.glyphicon-plus:before{content:"\002b"}.glyphicon-eur:before,.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}:after,:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:focus,a:hover{color:#23527c;text-decoration:underline}a:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.carousel-inner>.item>a>img,.carousel-inner>.item>img,.img-responsive,.thumbnail a>img,.thumbnail>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{display:inline-block;max-width:100%;height:auto;padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role=button]{cursor:pointer}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-weight:400;line-height:1;color:#777}.h1,.h2,.h3,h1,h2,h3{margin-top:20px;margin-bottom:10px}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small{font-size:65%}.h4,.h5,.h6,h4,h5,h6{margin-top:10px;margin-bottom:10px}.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-size:75%}.h1,h1{font-size:36px}.h2,h2{font-size:30px}.h3,h3{font-size:24px}.h4,h4{font-size:18px}.h5,h5{font-size:14px}.h6,h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}.small,small{font-size:85%}.mark,mark{padding:.2em;background-color:#fcf8e3}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#337ab7}a.text-primary:focus,a.text-primary:hover{color:#286090}.text-success{color:#3c763d}a.text-success:focus,a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:focus,a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:focus,a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:focus,a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#337ab7}a.bg-primary:focus,a.bg-primary:hover{background-color:#286090}.bg-success{background-color:#dff0d8}a.bg-success:focus,a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:focus,a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:focus,a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:focus,a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ol,ul{margin-top:0;margin-bottom:10px}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;margin-left:-5px;list-style:none}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-top:0;margin-bottom:20px}dd,dt{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[data-original-title],abbr[title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child{margin-bottom:0}blockquote .small,blockquote footer,blockquote small{display:block;font-size:80%;line-height:1.42857143;color:#777}blockquote .small:before,blockquote footer:before,blockquote small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #eee;border-left:0}.blockquote-reverse .small:before,.blockquote-reverse footer:before,.blockquote-reverse small:before,blockquote.pull-right .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before{content:''}.blockquote-reverse .small:after,.blockquote-reverse footer:after,.blockquote-reverse small:after,blockquote.pull-right .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after{content:'\00A0 \2014'}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;font-weight:700;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{margin-right:-15px;margin-left:-15px}.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>td,.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>td,.table>thead:first-child>tr:first-child>th{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>tbody>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>thead>tr>th{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #ddd}.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*=col-]{position:static;display:table-column;float:none}table td[class*=col-],table th[class*=col-]{position:static;display:table-cell;float:none}.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>thead>tr>td.active,.table>thead>tr>th.active{background-color:#f5f5f5}.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover{background-color:#e8e8e8}.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{background-color:#dff0d8}.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{background-color:#d0e9c6}.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>thead>tr>td.info,.table>thead>tr>th.info{background-color:#d9edf7}.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover{background-color:#c4e3f3}.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>thead>tr>td.warning,.table>thead>tr>th.warning{background-color:#fcf8e3}.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover{background-color:#faf2cc}.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{background-color:#f2dede}.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{background-color:#ebcccc}.table-responsive{min-height:.01%;overflow-x:auto}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=checkbox],input[type=radio]{margin:4px 0 0;margin-top:1px\9;line-height:normal}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=file]:focus,input[type=checkbox]:focus,input[type=radio]:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control::-ms-expand{background-color:transparent;border:0}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eee;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}input[type=search]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date].form-control,input[type=time].form-control,input[type=datetime-local].form-control,input[type=month].form-control{line-height:34px}.input-group-sm input[type=date],.input-group-sm input[type=time],.input-group-sm input[type=datetime-local],.input-group-sm input[type=month],input[type=date].input-sm,input[type=time].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm{line-height:30px}.input-group-lg input[type=date],.input-group-lg input[type=time],.input-group-lg input[type=datetime-local],.input-group-lg input[type=month],input[type=date].input-lg,input[type=time].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg{line-height:46px}}.form-group{margin-bottom:15px}.checkbox,.radio{position:relative;display:block;margin-top:10px;margin-bottom:10px}.checkbox label,.radio label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{position:absolute;margin-top:4px\9;margin-left:-20px}.checkbox+.checkbox,.radio+.radio{margin-top:-5px}.checkbox-inline,.radio-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px}fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox][disabled],input[type=radio].disabled,input[type=radio][disabled]{cursor:not-allowed}.checkbox-inline.disabled,.radio-inline.disabled,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio-inline{cursor:not-allowed}.checkbox.disabled label,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .radio label{cursor:not-allowed}.form-control-static{min-height:34px;padding-top:7px;padding-bottom:7px;margin-bottom:0}.form-control-static.input-lg,.form-control-static.input-sm{padding-right:0;padding-left:0}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}select[multiple].input-sm,textarea.input-sm{height:auto}.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.form-group-sm select.form-control{height:30px;line-height:30px}.form-group-sm select[multiple].form-control,.form-group-sm textarea.form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-lg{height:46px;line-height:46px}select[multiple].input-lg,textarea.input-lg{height:auto}.form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.form-group-lg select.form-control{height:46px;line-height:46px}.form-group-lg select[multiple].form-control,.form-group-lg textarea.form-control{height:auto}.form-group-lg .form-control-static{height:46px;min-height:38px;padding:11px 16px;font-size:18px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.form-group-lg .form-control+.form-control-feedback,.input-group-lg+.form-control-feedback,.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.form-group-sm .form-control+.form-control-feedback,.input-group-sm+.form-control-feedback,.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .help-block,.has-success .radio,.has-success .radio-inline,.has-success.checkbox label,.has-success.checkbox-inline label,.has-success.radio label,.has-success.radio-inline label{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.has-success .form-control-feedback{color:#3c763d}.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .help-block,.has-warning .radio,.has-warning .radio-inline,.has-warning.checkbox label,.has-warning.checkbox-inline label,.has-warning.radio label,.has-warning.radio-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .help-block,.has-error .radio,.has-error .radio-inline,.has-error.checkbox label,.has-error.checkbox-inline label,.has-error.radio label,.has-error.radio-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.has-error .form-control-feedback{color:#a94442}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .form-control,.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .checkbox,.form-inline .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .checkbox label,.form-inline .radio label{padding-left:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .checkbox,.form-horizontal .radio{min-height:27px}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.form-horizontal .control-label{padding-top:7px;margin-bottom:0;text-align:right}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:11px;font-size:18px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;border:1px solid transparent;border-radius:4px}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn.focus,.btn:focus,.btn:hover{color:#333;text-decoration:none}.btn.active,.btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;opacity:.65}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default.focus,.btn-default:focus{color:#333;background-color:#e6e6e6;border-color:#8c8c8c}.btn-default:hover{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active.focus,.btn-default.active:focus,.btn-default.active:hover,.btn-default:active.focus,.btn-default:active:focus,.btn-default:active:hover,.open>.dropdown-toggle.btn-default.focus,.open>.dropdown-toggle.btn-default:focus,.open>.dropdown-toggle.btn-default:hover{color:#333;background-color:#d4d4d4;border-color:#8c8c8c}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled.focus,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled].focus,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4}.btn-primary.focus,.btn-primary:focus{color:#fff;background-color:#286090;border-color:#122b40}.btn-primary:hover{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active.focus,.btn-primary.active:focus,.btn-primary.active:hover,.btn-primary:active.focus,.btn-primary:active:focus,.btn-primary:active:hover,.open>.dropdown-toggle.btn-primary.focus,.open>.dropdown-toggle.btn-primary:focus,.open>.dropdown-toggle.btn-primary:hover{color:#fff;background-color:#204d74;border-color:#122b40}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled.focus,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled].focus,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#337ab7;border-color:#2e6da4}.btn-primary .badge{color:#337ab7;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success.focus,.btn-success:focus{color:#fff;background-color:#449d44;border-color:#255625}.btn-success:hover{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active.focus,.btn-success.active:focus,.btn-success.active:hover,.btn-success:active.focus,.btn-success:active:focus,.btn-success:active:hover,.open>.dropdown-toggle.btn-success.focus,.open>.dropdown-toggle.btn-success:focus,.open>.dropdown-toggle.btn-success:hover{color:#fff;background-color:#398439;border-color:#255625}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled.focus,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled].focus,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info.focus,.btn-info:focus{color:#fff;background-color:#31b0d5;border-color:#1b6d85}.btn-info:hover{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active.focus,.btn-info.active:focus,.btn-info.active:hover,.btn-info:active.focus,.btn-info:active:focus,.btn-info:active:hover,.open>.dropdown-toggle.btn-info.focus,.open>.dropdown-toggle.btn-info:focus,.open>.dropdown-toggle.btn-info:hover{color:#fff;background-color:#269abc;border-color:#1b6d85}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled.focus,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled].focus,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning.focus,.btn-warning:focus{color:#fff;background-color:#ec971f;border-color:#985f0d}.btn-warning:hover{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active.focus,.btn-warning.active:focus,.btn-warning.active:hover,.btn-warning:active.focus,.btn-warning:active:focus,.btn-warning:active:hover,.open>.dropdown-toggle.btn-warning.focus,.open>.dropdown-toggle.btn-warning:focus,.open>.dropdown-toggle.btn-warning:hover{color:#fff;background-color:#d58512;border-color:#985f0d}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled.focus,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled].focus,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger.focus,.btn-danger:focus{color:#fff;background-color:#c9302c;border-color:#761c19}.btn-danger:hover{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active.focus,.btn-danger.active:focus,.btn-danger.active:hover,.btn-danger:active.focus,.btn-danger:active:focus,.btn-danger:active:hover,.open>.dropdown-toggle.btn-danger.focus,.open>.dropdown-toggle.btn-danger:focus,.open>.dropdown-toggle.btn-danger:hover{color:#fff;background-color:#ac2925;border-color:#761c19}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled.focus,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled].focus,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{font-weight:400;color:#337ab7;border-radius:0}.btn-link,.btn-link.active,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#23527c;text-decoration:underline;background-color:transparent}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#777;text-decoration:none}.btn-group-lg>.btn,.btn-lg{padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.btn-group-sm>.btn,.btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-xs>.btn,.btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease;-webkit-transition-duration:.35s;-o-transition-duration:.35s;transition-duration:.35s;-webkit-transition-property:height,visibility;-o-transition-property:height,visibility;transition-property:height,visibility}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid\9;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown,.dropup{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{color:#262626;text-decoration:none;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;background-color:#337ab7;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#777}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px dashed;border-bottom:4px solid\9}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{right:auto;left:0}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;float:left}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control:focus{z-index:3}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn,textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn,textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto}.input-group .form-control,.input-group-addon,.input-group-btn{display:table-cell}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:focus,.nav>li>a:hover{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:focus,.nav>li.disabled>a:hover{color:#777;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{background-color:#eee;border-color:#337ab7}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:focus,.nav-tabs>li.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{color:#fff;background-color:#337ab7}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;-webkit-overflow-scrolling:touch;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1)}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-right:0;padding-left:0}}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:200px}}.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-bottom,.navbar-fixed-top{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;height:50px;padding:15px 15px;font-size:18px;line-height:20px}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{padding:10px 15px;margin-top:8px;margin-right:-15px;margin-bottom:8px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1)}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .form-control,.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .checkbox label,.navbar-form .radio label{padding-left:0}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-right:15px;margin-left:15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:focus,.navbar-default .navbar-toggle:hover{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:focus,.navbar-default .navbar-nav>.open>a:hover{color:#555;background-color:#e7e7e7}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:focus,.navbar-default .btn-link:hover{color:#333}.navbar-default .btn-link[disabled]:focus,.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:focus,fieldset[disabled] .navbar-default .btn-link:hover{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{color:#fff;background-color:#080808}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:focus,.navbar-inverse .btn-link:hover{color:#fff}.navbar-inverse .btn-link[disabled]:focus,.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:focus,fieldset[disabled] .navbar-inverse .btn-link:hover{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.42857143;color:#337ab7;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{z-index:2;color:#23527c;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{z-index:3;color:#fff;cursor:default;background-color:#337ab7;border-color:#337ab7}.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{color:#777;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:focus,.pager li>a:hover{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{color:#777;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:focus,a.label:hover{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#777}.label-default[href]:focus,.label-default[href]:hover{background-color:#5e5e5e}.label-primary{background-color:#337ab7}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#286090}.label-success{background-color:#5cb85c}.label-success[href]:focus,.label-success[href]:hover{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:focus,.label-info[href]:hover{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-group-xs>.btn .badge,.btn-xs .badge{top:0;padding:1px 5px}a.badge:focus,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#337ab7;background-color:#fff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron .h1,.jumbotron h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{padding-right:15px;padding-left:15px;border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-right:60px;padding-left:60px}.jumbotron .h1,.jumbotron h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail a>img,.thumbnail>img{margin-right:auto;margin-left:auto}a.thumbnail.active,a.thumbnail:focus,a.thumbnail:hover{border-color:#337ab7}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:700}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#337ab7;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-bar-striped,.progress-striped .progress-bar{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress-bar.active,.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{overflow:hidden;zoom:1}.media-body{width:10000px}.media-object{display:block}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-body,.media-left,.media-right{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item,button.list-group-item{color:#555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover,button.list-group-item:focus,button.list-group-item:hover{color:#555;text-decoration:none;background-color:#f5f5f5}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:focus,.list-group-item.disabled:hover{color:#777;cursor:not-allowed;background-color:#eee}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#c7ddef}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:focus,a.list-group-item-success:hover,button.list-group-item-success:focus,button.list-group-item-success:hover{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:focus,a.list-group-item-success.active:hover,button.list-group-item-success.active,button.list-group-item-success.active:focus,button.list-group-item-success.active:hover{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info,button.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:focus,a.list-group-item-info:hover,button.list-group-item-info:focus,button.list-group-item-info:hover{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:focus,a.list-group-item-info.active:hover,button.list-group-item-info.active,button.list-group-item-info.active:focus,button.list-group-item-info.active:hover{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning,button.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:focus,a.list-group-item-warning:hover,button.list-group-item-warning:focus,button.list-group-item-warning:hover{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:focus,a.list-group-item-warning.active:hover,button.list-group-item-warning.active,button.list-group-item-warning.active:focus,button.list-group-item-warning.active:hover{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger,button.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:focus,a.list-group-item-danger:hover,button.list-group-item-danger:focus,button.list-group-item-danger:hover{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:focus,a.list-group-item-danger.active:hover,button.list-group-item-danger.active,button.list-group-item-danger.active:focus,button.list-group-item-danger.active:hover{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>.small,.panel-title>.small>a,.panel-title>a,.panel-title>small,.panel-title>small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-left-radius:0;border-top-right-radius:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.panel-collapse>.table,.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel>.panel-collapse>.table caption,.panel>.table caption,.panel>.table-responsive>.table caption{padding-right:15px;padding-left:15px}.panel>.table-responsive:first-child>.table:first-child,.panel>.table:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table:first-child>thead:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table-responsive:last-child>.table:last-child,.panel>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child td,.panel>.table>tbody:first-child>tr:first-child th{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{margin-bottom:0;border:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.list-group,.panel-group .panel-heading+.panel-collapse>.panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#337ab7}.panel-primary>.panel-heading{color:#fff;background-color:#337ab7;border-color:#337ab7}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#337ab7}.panel-primary>.panel-heading .badge{color:#337ab7;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#337ab7}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out;-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%)}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px;font-style:normal;font-weight:400;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;filter:alpha(opacity=0);opacity:0;line-break:auto}.tooltip.in{filter:alpha(opacity=90);opacity:.9}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{right:5px;bottom:0;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;font-style:normal;font-weight:400;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);line-break:auto}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{content:"";border-width:10px}.popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.popover.right>.arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}.popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}.popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>a>img,.carousel-inner>.item>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-inner>.item.active.right,.carousel-inner>.item.next{left:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.carousel-inner>.item.active.left,.carousel-inner>.item.prev{left:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.carousel-inner>.item.active,.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right{left:0;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);background-color:rgba(0,0,0,0);filter:alpha(opacity=50);opacity:.5}.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);background-repeat:repeat-x}.carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);background-repeat:repeat-x}.carousel-control:focus,.carousel-control:hover{color:#fff;text-decoration:none;filter:alpha(opacity=90);outline:0;opacity:.9}.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block;margin-top:-10px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{left:50%;margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{right:50%;margin-right:-10px}.carousel-control .icon-next,.carousel-control .icon-prev{width:20px;height:20px;font-family:serif;line-height:1}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000\9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{width:30px;height:30px;margin-top:-10px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-10px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.btn-group-vertical>.btn-group:after,.btn-group-vertical>.btn-group:before,.btn-toolbar:after,.btn-toolbar:before,.clearfix:after,.clearfix:before,.container-fluid:after,.container-fluid:before,.container:after,.container:before,.dl-horizontal dd:after,.dl-horizontal dd:before,.form-horizontal .form-group:after,.form-horizontal .form-group:before,.modal-footer:after,.modal-footer:before,.modal-header:after,.modal-header:before,.nav:after,.nav:before,.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before,.pager:after,.pager:before,.panel-body:after,.panel-body:before,.row:after,.row:before{display:table;content:" "}.btn-group-vertical>.btn-group:after,.btn-toolbar:after,.clearfix:after,.container-fluid:after,.container:after,.dl-horizontal dd:after,.form-horizontal .form-group:after,.modal-footer:after,.modal-header:after,.nav:after,.navbar-collapse:after,.navbar-header:after,.navbar:after,.pager:after,.panel-body:after,.row:after{clear:both}.center-block{display:block;margin-right:auto;margin-left:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-lg,.visible-md,.visible-sm,.visible-xs{display:none!important}.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table!important}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}}@media (max-width:767px){.visible-xs-block{display:block!important}}@media (max-width:767px){.visible-xs-inline{display:inline!important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table!important}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table!important}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table!important}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}}@media (min-width:1200px){.visible-lg-block{display:block!important}}@media (min-width:1200px){.visible-lg-inline{display:inline!important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-lg{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table!important}tr.visible-print{display:table-row!important}td.visible-print,th.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}}@media print{.hidden-print{display:none!important}}
+/*# sourceMappingURL=bootstrap.min.css.map */
\ No newline at end of file
diff --git a/public/css/print-lock.css b/public/css/print-lock.css
new file mode 100644
index 0000000..82c1404
--- /dev/null
+++ b/public/css/print-lock.css
@@ -0,0 +1,352 @@
+@media print {
+  body {
+    margin: 0px;
+    padding: 0px;
+  }
+}
+
+@page {
+  margin: 0;
+}
+
+.hiprint-printPaper * {
+  box-sizing: border-box;
+  -moz-box-sizing: border-box; /* Firefox */
+  -webkit-box-sizing: border-box; /* Safari */
+}
+
+.hiprint-printPaper *:focus {
+  outline: -webkit-focus-ring-color auto 0px;
+}
+
+.hiprint-printPaper {
+  position: relative;
+  padding: 0 0 0 0;
+  page-break-after: always;
+  -webkit-user-select: none; /* Chrome/Safari/Opera */
+  -moz-user-select: none; /* Firefox */
+  user-select: none;
+  overflow-x: hidden;
+  overflow: hidden;
+}
+
+.hiprint-printPaper .hiprint-printPaper-content {
+  position: relative;
+}
+
+/* 鐏嫄娴忚鍣ㄦ墦鍗� 绗竴椤佃繃鍚� 閲嶅彔闂 */
+@-moz-document url-prefix() {
+  .hiprint-printPaper .hiprint-printPaper-content {
+    position: relative;
+    margin-top: 20px;
+    top: -20px
+  }
+}
+
+.hiprint-printPaper.design {
+  overflow: visible;
+}
+
+
+.hiprint-printTemplate .hiprint-printPanel {
+  page-break-after: always;
+}
+
+.hiprint-printPaper, hiprint-printPanel {
+  box-sizing: border-box;
+  border: 0px;
+}
+
+.hiprint-printPanel .hiprint-printPaper:last-child {
+  page-break-after: avoid;
+}
+
+.hiprint-printTemplate .hiprint-printPanel:last-child {
+  page-break-after: avoid;
+}
+
+.hiprint-printPaper .hideheaderLinetarget {
+  border-top: 0px dashed rgb(201, 190, 190) !important;
+}
+
+.hiprint-printPaper .hidefooterLinetarget {
+  border-top: 0px dashed rgb(201, 190, 190) !important;
+}
+
+.hiprint-printPaper.design {
+  border: 1px dashed rgba(170, 170, 170, 0.7);
+}
+
+.design .hiprint-printElement-table-content, .design .hiprint-printElement-longText-content {
+  overflow: hidden;
+  box-sizing: border-box;
+}
+
+.design .resize-panel {
+  box-sizing: border-box;
+  border: 1px dotted;
+}
+
+.hiprint-printElement-text {
+  background-color: transparent;
+  background-repeat: repeat;
+  padding: 0 0 0 0;
+  border: 0.75pt none rgb(0, 0, 0);
+  direction: ltr;
+  font-family: 'SimSun';
+  font-size: 9pt;
+  font-style: normal;
+  font-weight: normal;
+  padding-bottom: 0pt;
+  padding-left: 0pt;
+  padding-right: 0pt;
+  padding-top: 0pt;
+  text-align: left;
+  text-decoration: none;
+  line-height: 9.75pt;
+  box-sizing: border-box;
+  word-wrap: break-word;
+  word-break: break-all;
+}
+
+.design .hiprint-printElement-text-content {
+  border: 1px dashed rgb(206, 188, 188);
+  box-sizing: border-box;
+}
+
+.hiprint-printElement-longText {
+  background-color: transparent;
+  background-repeat: repeat;
+  border: 0.75pt none rgb(0, 0, 0);
+  direction: ltr;
+  font-family: 'SimSun';
+  font-size: 9pt;
+  font-style: normal;
+  font-weight: normal;
+  padding-bottom: 0pt;
+  padding-left: 0pt;
+  padding-right: 0pt;
+  padding-top: 0pt;
+  text-align: left;
+  text-decoration: none;
+  line-height: 9.75pt;
+  box-sizing: border-box;
+  word-wrap: break-word;
+  word-break: break-all;
+  /*white-space: pre-wrap*/
+}
+
+
+.hiprint-printElement-table {
+  background-color: transparent;
+  background-repeat: repeat;
+  color: rgb(0, 0, 0);
+  border-color: rgb(0, 0, 0);
+  border-style: none;
+  direction: ltr;
+  font-family: 'SimSun';
+  font-size: 9pt;
+  font-style: normal;
+  font-weight: normal;
+  padding-bottom: 0pt;
+  padding-left: 0pt;
+  padding-right: 0pt;
+  padding-top: 0pt;
+  text-align: left;
+  text-decoration: none;
+  padding: 0 0 0 0;
+  box-sizing: border-box;
+  line-height: 9.75pt;
+}
+
+.hiprint-printElement-table thead {
+  background: #e8e8e8;
+  font-weight: 700;
+}
+
+table.hiprint-printElement-tableTarget {
+  width: 100%;
+}
+
+.hiprint-printElement-tableTarget, .hiprint-printElement-tableTarget tr, .hiprint-printElement-tableTarget td {
+  border-color: rgb(0, 0, 0);
+  /*border-style: none;*/
+  /*border: 1px solid rgb(0, 0, 0);*/
+  font-weight: normal;
+  direction: ltr;
+  padding-bottom: 0pt;
+  padding-left: 4pt;
+  padding-right: 4pt;
+  padding-top: 0pt;
+  text-decoration: none;
+  vertical-align: middle;
+  box-sizing: border-box;
+  word-wrap: break-word;
+  word-break: break-all;
+  /*line-height: 9.75pt;
+  font-size: 9pt;*/
+}
+
+.hiprint-printElement-tableTarget-border-all {
+  border: 1px solid;
+}
+.hiprint-printElement-tableTarget-border-none {
+  border: 0px solid;
+}
+.hiprint-printElement-tableTarget-border-lr {
+  border-left: 1px solid;
+  border-right: 1px solid;
+}
+.hiprint-printElement-tableTarget-border-left {
+  border-left: 1px solid;
+}
+.hiprint-printElement-tableTarget-border-right {
+  border-right: 1px solid;
+}
+.hiprint-printElement-tableTarget-border-tb {
+  border-top: 1px solid;
+  border-bottom: 1px solid;
+}
+.hiprint-printElement-tableTarget-border-top {
+  border-top: 1px solid;
+}
+.hiprint-printElement-tableTarget-border-bottom {
+  border-bottom: 1px solid;
+}
+
+.hiprint-printElement-tableTarget-border-td-none td {
+  border: 0px solid;
+}
+.hiprint-printElement-tableTarget-border-td-all td:not(:nth-last-child(-n+2)) {
+  border-right: 1px solid;
+}
+.hiprint-printElement-tableTarget-border-td-all td:not(last-child) {
+  border-right: 1px solid;
+}
+.hiprint-printElement-tableTarget-border-td-all td:last-child {
+  border-left: 1px solid;
+}
+.hiprint-printElement-tableTarget-border-td-all td:last-child:first-child {
+  border-left: none;
+}
+
+/*.hiprint-printElement-tableTarget tr,*/
+.hiprint-printElement-tableTarget td {
+  height: 18pt;
+}
+
+.hiprint-printPaper .hiprint-paperNumber {
+  font-size: 9pt;
+}
+
+.design .hiprint-printElement-table-handle {
+  position: absolute;
+  height: 21pt;
+  width: 21pt;
+  background: red;
+  z-index: 1;
+}
+
+.hiprint-printPaper .hiprint-paperNumber-disabled {
+  float: right !important;
+  right: 0 !important;
+  color: gainsboro !important;
+}
+
+.hiprint-printElement-vline, .hiprint-printElement-hline {
+  border: 0px none rgb(0, 0, 0);
+
+}
+
+.hiprint-printElement-vline {
+  border-left: 0.75pt solid #000;
+  border-right: 0px none rgb(0, 0, 0) !important;
+  border-bottom: 0px none rgb(0, 0, 0) !important;
+  border-top: 0px none rgb(0, 0, 0) !important;
+}
+
+.hiprint-printElement-hline {
+  border-top: 0.75pt solid #000;
+  border-right: 0px none rgb(0, 0, 0) !important;
+  border-bottom: 0px none rgb(0, 0, 0) !important;
+  border-left: 0px none rgb(0, 0, 0) !important;
+}
+
+.hiprint-printElement-oval, .hiprint-printElement-rect {
+  border: 0.75pt solid #000;
+}
+
+.hiprint-text-content-middle {
+}
+
+.hiprint-text-content-middle > div {
+  display: grid;
+  align-items: center;
+}
+
+.hiprint-text-content-bottom {
+}
+
+.hiprint-text-content-bottom > div {
+  display: grid;
+  align-items: flex-end;
+}
+
+.hiprint-text-content-wrap {
+}
+
+.hiprint-text-content-wrap .hiprint-text-content-wrap-nowrap {
+  white-space: nowrap;
+}
+
+.hiprint-text-content-wrap .hiprint-text-content-wrap-clip {
+  white-space: nowrap;
+  overflow: hidden;
+  text-overflow: clip;
+}
+
+.hiprint-text-content-wrap .hiprint-text-content-wrap-ellipsis {
+  white-space: nowrap;
+  overflow: hidden;
+  text-overflow: ellipsis;
+}
+
+/*hi-grid-row */
+.hi-grid-row {
+  position: relative;
+  height: auto;
+  margin-right: 0;
+  margin-left: 0;
+  zoom: 1;
+  display: block;
+  box-sizing: border-box;
+}
+
+.hi-grid-row::after, .hi-grid-row::before {
+  display: table;
+  content: '';
+  box-sizing: border-box;
+}
+
+.hi-grid-col {
+  display: block;
+  box-sizing: border-box;
+  position: relative;
+  float: left;
+  flex: 0 0 auto;
+}
+
+.table-grid-row {
+  margin-left: -0pt;
+  margin-right: -0pt;
+}
+
+.tableGridColumnsGutterRow {
+  padding-left: 0pt;
+  padding-right: 0pt;
+}
+
+.hiprint-gridColumnsFooter {
+  text-align: left;
+  clear: both;
+}
diff --git a/public/fonts/glyphicons-halflings-regular.eot b/public/fonts/glyphicons-halflings-regular.eot
new file mode 100644
index 0000000..b93a495
--- /dev/null
+++ b/public/fonts/glyphicons-halflings-regular.eot
Binary files differ
diff --git a/public/fonts/glyphicons-halflings-regular.svg b/public/fonts/glyphicons-halflings-regular.svg
new file mode 100644
index 0000000..94fb549
--- /dev/null
+++ b/public/fonts/glyphicons-halflings-regular.svg
@@ -0,0 +1,288 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata></metadata>
+<defs>
+<font id="glyphicons_halflingsregular" horiz-adv-x="1200" >
+<font-face units-per-em="1200" ascent="960" descent="-240" />
+<missing-glyph horiz-adv-x="500" />
+<glyph horiz-adv-x="0" />
+<glyph horiz-adv-x="400" />
+<glyph unicode=" " />
+<glyph unicode="*" d="M600 1100q15 0 34 -1.5t30 -3.5l11 -1q10 -2 17.5 -10.5t7.5 -18.5v-224l158 158q7 7 18 8t19 -6l106 -106q7 -8 6 -19t-8 -18l-158 -158h224q10 0 18.5 -7.5t10.5 -17.5q6 -41 6 -75q0 -15 -1.5 -34t-3.5 -30l-1 -11q-2 -10 -10.5 -17.5t-18.5 -7.5h-224l158 -158 q7 -7 8 -18t-6 -19l-106 -106q-8 -7 -19 -6t-18 8l-158 158v-224q0 -10 -7.5 -18.5t-17.5 -10.5q-41 -6 -75 -6q-15 0 -34 1.5t-30 3.5l-11 1q-10 2 -17.5 10.5t-7.5 18.5v224l-158 -158q-7 -7 -18 -8t-19 6l-106 106q-7 8 -6 19t8 18l158 158h-224q-10 0 -18.5 7.5 t-10.5 17.5q-6 41 -6 75q0 15 1.5 34t3.5 30l1 11q2 10 10.5 17.5t18.5 7.5h224l-158 158q-7 7 -8 18t6 19l106 106q8 7 19 6t18 -8l158 -158v224q0 10 7.5 18.5t17.5 10.5q41 6 75 6z" />
+<glyph unicode="+" d="M450 1100h200q21 0 35.5 -14.5t14.5 -35.5v-350h350q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-350v-350q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v350h-350q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5 h350v350q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xa0;" />
+<glyph unicode="&#xa5;" d="M825 1100h250q10 0 12.5 -5t-5.5 -13l-364 -364q-6 -6 -11 -18h268q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-125v-100h275q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-125v-174q0 -11 -7.5 -18.5t-18.5 -7.5h-148q-11 0 -18.5 7.5t-7.5 18.5v174 h-275q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h125v100h-275q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h118q-5 12 -11 18l-364 364q-8 8 -5.5 13t12.5 5h250q25 0 43 -18l164 -164q8 -8 18 -8t18 8l164 164q18 18 43 18z" />
+<glyph unicode="&#x2000;" horiz-adv-x="650" />
+<glyph unicode="&#x2001;" horiz-adv-x="1300" />
+<glyph unicode="&#x2002;" horiz-adv-x="650" />
+<glyph unicode="&#x2003;" horiz-adv-x="1300" />
+<glyph unicode="&#x2004;" horiz-adv-x="433" />
+<glyph unicode="&#x2005;" horiz-adv-x="325" />
+<glyph unicode="&#x2006;" horiz-adv-x="216" />
+<glyph unicode="&#x2007;" horiz-adv-x="216" />
+<glyph unicode="&#x2008;" horiz-adv-x="162" />
+<glyph unicode="&#x2009;" horiz-adv-x="260" />
+<glyph unicode="&#x200a;" horiz-adv-x="72" />
+<glyph unicode="&#x202f;" horiz-adv-x="260" />
+<glyph unicode="&#x205f;" horiz-adv-x="325" />
+<glyph unicode="&#x20ac;" d="M744 1198q242 0 354 -189q60 -104 66 -209h-181q0 45 -17.5 82.5t-43.5 61.5t-58 40.5t-60.5 24t-51.5 7.5q-19 0 -40.5 -5.5t-49.5 -20.5t-53 -38t-49 -62.5t-39 -89.5h379l-100 -100h-300q-6 -50 -6 -100h406l-100 -100h-300q9 -74 33 -132t52.5 -91t61.5 -54.5t59 -29 t47 -7.5q22 0 50.5 7.5t60.5 24.5t58 41t43.5 61t17.5 80h174q-30 -171 -128 -278q-107 -117 -274 -117q-206 0 -324 158q-36 48 -69 133t-45 204h-217l100 100h112q1 47 6 100h-218l100 100h134q20 87 51 153.5t62 103.5q117 141 297 141z" />
+<glyph unicode="&#x20bd;" d="M428 1200h350q67 0 120 -13t86 -31t57 -49.5t35 -56.5t17 -64.5t6.5 -60.5t0.5 -57v-16.5v-16.5q0 -36 -0.5 -57t-6.5 -61t-17 -65t-35 -57t-57 -50.5t-86 -31.5t-120 -13h-178l-2 -100h288q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-138v-175q0 -11 -5.5 -18 t-15.5 -7h-149q-10 0 -17.5 7.5t-7.5 17.5v175h-267q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h117v100h-267q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h117v475q0 10 7.5 17.5t17.5 7.5zM600 1000v-300h203q64 0 86.5 33t22.5 119q0 84 -22.5 116t-86.5 32h-203z" />
+<glyph unicode="&#x2212;" d="M250 700h800q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#x231b;" d="M1000 1200v-150q0 -21 -14.5 -35.5t-35.5 -14.5h-50v-100q0 -91 -49.5 -165.5t-130.5 -109.5q81 -35 130.5 -109.5t49.5 -165.5v-150h50q21 0 35.5 -14.5t14.5 -35.5v-150h-800v150q0 21 14.5 35.5t35.5 14.5h50v150q0 91 49.5 165.5t130.5 109.5q-81 35 -130.5 109.5 t-49.5 165.5v100h-50q-21 0 -35.5 14.5t-14.5 35.5v150h800zM400 1000v-100q0 -60 32.5 -109.5t87.5 -73.5q28 -12 44 -37t16 -55t-16 -55t-44 -37q-55 -24 -87.5 -73.5t-32.5 -109.5v-150h400v150q0 60 -32.5 109.5t-87.5 73.5q-28 12 -44 37t-16 55t16 55t44 37 q55 24 87.5 73.5t32.5 109.5v100h-400z" />
+<glyph unicode="&#x25fc;" horiz-adv-x="500" d="M0 0z" />
+<glyph unicode="&#x2601;" d="M503 1089q110 0 200.5 -59.5t134.5 -156.5q44 14 90 14q120 0 205 -86.5t85 -206.5q0 -121 -85 -207.5t-205 -86.5h-750q-79 0 -135.5 57t-56.5 137q0 69 42.5 122.5t108.5 67.5q-2 12 -2 37q0 153 108 260.5t260 107.5z" />
+<glyph unicode="&#x26fa;" d="M774 1193.5q16 -9.5 20.5 -27t-5.5 -33.5l-136 -187l467 -746h30q20 0 35 -18.5t15 -39.5v-42h-1200v42q0 21 15 39.5t35 18.5h30l468 746l-135 183q-10 16 -5.5 34t20.5 28t34 5.5t28 -20.5l111 -148l112 150q9 16 27 20.5t34 -5zM600 200h377l-182 112l-195 534v-646z " />
+<glyph unicode="&#x2709;" d="M25 1100h1150q10 0 12.5 -5t-5.5 -13l-564 -567q-8 -8 -18 -8t-18 8l-564 567q-8 8 -5.5 13t12.5 5zM18 882l264 -264q8 -8 8 -18t-8 -18l-264 -264q-8 -8 -13 -5.5t-5 12.5v550q0 10 5 12.5t13 -5.5zM918 618l264 264q8 8 13 5.5t5 -12.5v-550q0 -10 -5 -12.5t-13 5.5 l-264 264q-8 8 -8 18t8 18zM818 482l364 -364q8 -8 5.5 -13t-12.5 -5h-1150q-10 0 -12.5 5t5.5 13l364 364q8 8 18 8t18 -8l164 -164q8 -8 18 -8t18 8l164 164q8 8 18 8t18 -8z" />
+<glyph unicode="&#x270f;" d="M1011 1210q19 0 33 -13l153 -153q13 -14 13 -33t-13 -33l-99 -92l-214 214l95 96q13 14 32 14zM1013 800l-615 -614l-214 214l614 614zM317 96l-333 -112l110 335z" />
+<glyph unicode="&#xe001;" d="M700 650v-550h250q21 0 35.5 -14.5t14.5 -35.5v-50h-800v50q0 21 14.5 35.5t35.5 14.5h250v550l-500 550h1200z" />
+<glyph unicode="&#xe002;" d="M368 1017l645 163q39 15 63 0t24 -49v-831q0 -55 -41.5 -95.5t-111.5 -63.5q-79 -25 -147 -4.5t-86 75t25.5 111.5t122.5 82q72 24 138 8v521l-600 -155v-606q0 -42 -44 -90t-109 -69q-79 -26 -147 -5.5t-86 75.5t25.5 111.5t122.5 82.5q72 24 138 7v639q0 38 14.5 59 t53.5 34z" />
+<glyph unicode="&#xe003;" d="M500 1191q100 0 191 -39t156.5 -104.5t104.5 -156.5t39 -191l-1 -2l1 -5q0 -141 -78 -262l275 -274q23 -26 22.5 -44.5t-22.5 -42.5l-59 -58q-26 -20 -46.5 -20t-39.5 20l-275 274q-119 -77 -261 -77l-5 1l-2 -1q-100 0 -191 39t-156.5 104.5t-104.5 156.5t-39 191 t39 191t104.5 156.5t156.5 104.5t191 39zM500 1022q-88 0 -162 -43t-117 -117t-43 -162t43 -162t117 -117t162 -43t162 43t117 117t43 162t-43 162t-117 117t-162 43z" />
+<glyph unicode="&#xe005;" d="M649 949q48 68 109.5 104t121.5 38.5t118.5 -20t102.5 -64t71 -100.5t27 -123q0 -57 -33.5 -117.5t-94 -124.5t-126.5 -127.5t-150 -152.5t-146 -174q-62 85 -145.5 174t-150 152.5t-126.5 127.5t-93.5 124.5t-33.5 117.5q0 64 28 123t73 100.5t104 64t119 20 t120.5 -38.5t104.5 -104z" />
+<glyph unicode="&#xe006;" d="M407 800l131 353q7 19 17.5 19t17.5 -19l129 -353h421q21 0 24 -8.5t-14 -20.5l-342 -249l130 -401q7 -20 -0.5 -25.5t-24.5 6.5l-343 246l-342 -247q-17 -12 -24.5 -6.5t-0.5 25.5l130 400l-347 251q-17 12 -14 20.5t23 8.5h429z" />
+<glyph unicode="&#xe007;" d="M407 800l131 353q7 19 17.5 19t17.5 -19l129 -353h421q21 0 24 -8.5t-14 -20.5l-342 -249l130 -401q7 -20 -0.5 -25.5t-24.5 6.5l-343 246l-342 -247q-17 -12 -24.5 -6.5t-0.5 25.5l130 400l-347 251q-17 12 -14 20.5t23 8.5h429zM477 700h-240l197 -142l-74 -226 l193 139l195 -140l-74 229l192 140h-234l-78 211z" />
+<glyph unicode="&#xe008;" d="M600 1200q124 0 212 -88t88 -212v-250q0 -46 -31 -98t-69 -52v-75q0 -10 6 -21.5t15 -17.5l358 -230q9 -5 15 -16.5t6 -21.5v-93q0 -10 -7.5 -17.5t-17.5 -7.5h-1150q-10 0 -17.5 7.5t-7.5 17.5v93q0 10 6 21.5t15 16.5l358 230q9 6 15 17.5t6 21.5v75q-38 0 -69 52 t-31 98v250q0 124 88 212t212 88z" />
+<glyph unicode="&#xe009;" d="M25 1100h1150q10 0 17.5 -7.5t7.5 -17.5v-1050q0 -10 -7.5 -17.5t-17.5 -7.5h-1150q-10 0 -17.5 7.5t-7.5 17.5v1050q0 10 7.5 17.5t17.5 7.5zM100 1000v-100h100v100h-100zM875 1000h-550q-10 0 -17.5 -7.5t-7.5 -17.5v-350q0 -10 7.5 -17.5t17.5 -7.5h550 q10 0 17.5 7.5t7.5 17.5v350q0 10 -7.5 17.5t-17.5 7.5zM1000 1000v-100h100v100h-100zM100 800v-100h100v100h-100zM1000 800v-100h100v100h-100zM100 600v-100h100v100h-100zM1000 600v-100h100v100h-100zM875 500h-550q-10 0 -17.5 -7.5t-7.5 -17.5v-350q0 -10 7.5 -17.5 t17.5 -7.5h550q10 0 17.5 7.5t7.5 17.5v350q0 10 -7.5 17.5t-17.5 7.5zM100 400v-100h100v100h-100zM1000 400v-100h100v100h-100zM100 200v-100h100v100h-100zM1000 200v-100h100v100h-100z" />
+<glyph unicode="&#xe010;" d="M50 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM650 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400 q0 21 14.5 35.5t35.5 14.5zM50 500h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM650 500h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe011;" d="M50 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200 q0 21 14.5 35.5t35.5 14.5zM850 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200 q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM850 700h200q21 0 35.5 -14.5t14.5 -35.5v-200 q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 300h200 q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM850 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5 t35.5 14.5z" />
+<glyph unicode="&#xe012;" d="M50 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 1100h700q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v200 q0 21 14.5 35.5t35.5 14.5zM50 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 700h700q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700 q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 300h700q21 0 35.5 -14.5t14.5 -35.5v-200 q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe013;" d="M465 477l571 571q8 8 18 8t17 -8l177 -177q8 -7 8 -17t-8 -18l-783 -784q-7 -8 -17.5 -8t-17.5 8l-384 384q-8 8 -8 18t8 17l177 177q7 8 17 8t18 -8l171 -171q7 -7 18 -7t18 7z" />
+<glyph unicode="&#xe014;" d="M904 1083l178 -179q8 -8 8 -18.5t-8 -17.5l-267 -268l267 -268q8 -7 8 -17.5t-8 -18.5l-178 -178q-8 -8 -18.5 -8t-17.5 8l-268 267l-268 -267q-7 -8 -17.5 -8t-18.5 8l-178 178q-8 8 -8 18.5t8 17.5l267 268l-267 268q-8 7 -8 17.5t8 18.5l178 178q8 8 18.5 8t17.5 -8 l268 -267l268 268q7 7 17.5 7t18.5 -7z" />
+<glyph unicode="&#xe015;" d="M507 1177q98 0 187.5 -38.5t154.5 -103.5t103.5 -154.5t38.5 -187.5q0 -141 -78 -262l300 -299q8 -8 8 -18.5t-8 -18.5l-109 -108q-7 -8 -17.5 -8t-18.5 8l-300 299q-119 -77 -261 -77q-98 0 -188 38.5t-154.5 103t-103 154.5t-38.5 188t38.5 187.5t103 154.5 t154.5 103.5t188 38.5zM506.5 1023q-89.5 0 -165.5 -44t-120 -120.5t-44 -166t44 -165.5t120 -120t165.5 -44t166 44t120.5 120t44 165.5t-44 166t-120.5 120.5t-166 44zM425 900h150q10 0 17.5 -7.5t7.5 -17.5v-75h75q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5 t-17.5 -7.5h-75v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-75q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h75v75q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="&#xe016;" d="M507 1177q98 0 187.5 -38.5t154.5 -103.5t103.5 -154.5t38.5 -187.5q0 -141 -78 -262l300 -299q8 -8 8 -18.5t-8 -18.5l-109 -108q-7 -8 -17.5 -8t-18.5 8l-300 299q-119 -77 -261 -77q-98 0 -188 38.5t-154.5 103t-103 154.5t-38.5 188t38.5 187.5t103 154.5 t154.5 103.5t188 38.5zM506.5 1023q-89.5 0 -165.5 -44t-120 -120.5t-44 -166t44 -165.5t120 -120t165.5 -44t166 44t120.5 120t44 165.5t-44 166t-120.5 120.5t-166 44zM325 800h350q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-350q-10 0 -17.5 7.5 t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="&#xe017;" d="M550 1200h100q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM800 975v166q167 -62 272 -209.5t105 -331.5q0 -117 -45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5 t-184.5 123t-123 184.5t-45.5 224q0 184 105 331.5t272 209.5v-166q-103 -55 -165 -155t-62 -220q0 -116 57 -214.5t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5q0 120 -62 220t-165 155z" />
+<glyph unicode="&#xe018;" d="M1025 1200h150q10 0 17.5 -7.5t7.5 -17.5v-1150q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v1150q0 10 7.5 17.5t17.5 7.5zM725 800h150q10 0 17.5 -7.5t7.5 -17.5v-750q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v750 q0 10 7.5 17.5t17.5 7.5zM425 500h150q10 0 17.5 -7.5t7.5 -17.5v-450q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v450q0 10 7.5 17.5t17.5 7.5zM125 300h150q10 0 17.5 -7.5t7.5 -17.5v-250q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5 v250q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="&#xe019;" d="M600 1174q33 0 74 -5l38 -152l5 -1q49 -14 94 -39l5 -2l134 80q61 -48 104 -105l-80 -134l3 -5q25 -44 39 -93l1 -6l152 -38q5 -43 5 -73q0 -34 -5 -74l-152 -38l-1 -6q-15 -49 -39 -93l-3 -5l80 -134q-48 -61 -104 -105l-134 81l-5 -3q-44 -25 -94 -39l-5 -2l-38 -151 q-43 -5 -74 -5q-33 0 -74 5l-38 151l-5 2q-49 14 -94 39l-5 3l-134 -81q-60 48 -104 105l80 134l-3 5q-25 45 -38 93l-2 6l-151 38q-6 42 -6 74q0 33 6 73l151 38l2 6q13 48 38 93l3 5l-80 134q47 61 105 105l133 -80l5 2q45 25 94 39l5 1l38 152q43 5 74 5zM600 815 q-89 0 -152 -63t-63 -151.5t63 -151.5t152 -63t152 63t63 151.5t-63 151.5t-152 63z" />
+<glyph unicode="&#xe020;" d="M500 1300h300q41 0 70.5 -29.5t29.5 -70.5v-100h275q10 0 17.5 -7.5t7.5 -17.5v-75h-1100v75q0 10 7.5 17.5t17.5 7.5h275v100q0 41 29.5 70.5t70.5 29.5zM500 1200v-100h300v100h-300zM1100 900v-800q0 -41 -29.5 -70.5t-70.5 -29.5h-700q-41 0 -70.5 29.5t-29.5 70.5 v800h900zM300 800v-700h100v700h-100zM500 800v-700h100v700h-100zM700 800v-700h100v700h-100zM900 800v-700h100v700h-100z" />
+<glyph unicode="&#xe021;" d="M18 618l620 608q8 7 18.5 7t17.5 -7l608 -608q8 -8 5.5 -13t-12.5 -5h-175v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v375h-300v-375q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v575h-175q-10 0 -12.5 5t5.5 13z" />
+<glyph unicode="&#xe022;" d="M600 1200v-400q0 -41 29.5 -70.5t70.5 -29.5h300v-650q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v1100q0 21 14.5 35.5t35.5 14.5h450zM1000 800h-250q-21 0 -35.5 14.5t-14.5 35.5v250z" />
+<glyph unicode="&#xe023;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM525 900h50q10 0 17.5 -7.5t7.5 -17.5v-275h175q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="&#xe024;" d="M1300 0h-538l-41 400h-242l-41 -400h-538l431 1200h209l-21 -300h162l-20 300h208zM515 800l-27 -300h224l-27 300h-170z" />
+<glyph unicode="&#xe025;" d="M550 1200h200q21 0 35.5 -14.5t14.5 -35.5v-450h191q20 0 25.5 -11.5t-7.5 -27.5l-327 -400q-13 -16 -32 -16t-32 16l-327 400q-13 16 -7.5 27.5t25.5 11.5h191v450q0 21 14.5 35.5t35.5 14.5zM1125 400h50q10 0 17.5 -7.5t7.5 -17.5v-350q0 -10 -7.5 -17.5t-17.5 -7.5 h-1050q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h50q10 0 17.5 -7.5t7.5 -17.5v-175h900v175q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="&#xe026;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM525 900h150q10 0 17.5 -7.5t7.5 -17.5v-275h137q21 0 26 -11.5t-8 -27.5l-223 -275q-13 -16 -32 -16t-32 16l-223 275q-13 16 -8 27.5t26 11.5h137v275q0 10 7.5 17.5t17.5 7.5z " />
+<glyph unicode="&#xe027;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM632 914l223 -275q13 -16 8 -27.5t-26 -11.5h-137v-275q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v275h-137q-21 0 -26 11.5t8 27.5l223 275q13 16 32 16 t32 -16z" />
+<glyph unicode="&#xe028;" d="M225 1200h750q10 0 19.5 -7t12.5 -17l186 -652q7 -24 7 -49v-425q0 -12 -4 -27t-9 -17q-12 -6 -37 -6h-1100q-12 0 -27 4t-17 8q-6 13 -6 38l1 425q0 25 7 49l185 652q3 10 12.5 17t19.5 7zM878 1000h-556q-10 0 -19 -7t-11 -18l-87 -450q-2 -11 4 -18t16 -7h150 q10 0 19.5 -7t11.5 -17l38 -152q2 -10 11.5 -17t19.5 -7h250q10 0 19.5 7t11.5 17l38 152q2 10 11.5 17t19.5 7h150q10 0 16 7t4 18l-87 450q-2 11 -11 18t-19 7z" />
+<glyph unicode="&#xe029;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM540 820l253 -190q17 -12 17 -30t-17 -30l-253 -190q-16 -12 -28 -6.5t-12 26.5v400q0 21 12 26.5t28 -6.5z" />
+<glyph unicode="&#xe030;" d="M947 1060l135 135q7 7 12.5 5t5.5 -13v-362q0 -10 -7.5 -17.5t-17.5 -7.5h-362q-11 0 -13 5.5t5 12.5l133 133q-109 76 -238 76q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5h150q0 -117 -45.5 -224 t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5q192 0 347 -117z" />
+<glyph unicode="&#xe031;" d="M947 1060l135 135q7 7 12.5 5t5.5 -13v-361q0 -11 -7.5 -18.5t-18.5 -7.5h-361q-11 0 -13 5.5t5 12.5l134 134q-110 75 -239 75q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5h-150q0 117 45.5 224t123 184.5t184.5 123t224 45.5q192 0 347 -117zM1027 600h150 q0 -117 -45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5q-192 0 -348 118l-134 -134q-7 -8 -12.5 -5.5t-5.5 12.5v360q0 11 7.5 18.5t18.5 7.5h360q10 0 12.5 -5.5t-5.5 -12.5l-133 -133q110 -76 240 -76q116 0 214.5 57t155.5 155.5t57 214.5z" />
+<glyph unicode="&#xe032;" d="M125 1200h1050q10 0 17.5 -7.5t7.5 -17.5v-1150q0 -10 -7.5 -17.5t-17.5 -7.5h-1050q-10 0 -17.5 7.5t-7.5 17.5v1150q0 10 7.5 17.5t17.5 7.5zM1075 1000h-850q-10 0 -17.5 -7.5t-7.5 -17.5v-850q0 -10 7.5 -17.5t17.5 -7.5h850q10 0 17.5 7.5t7.5 17.5v850 q0 10 -7.5 17.5t-17.5 7.5zM325 900h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 900h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 700h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 700h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 500h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 500h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 300h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 300h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="&#xe033;" d="M900 800v200q0 83 -58.5 141.5t-141.5 58.5h-300q-82 0 -141 -59t-59 -141v-200h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-600q0 -41 29.5 -70.5t70.5 -29.5h900q41 0 70.5 29.5t29.5 70.5v600q0 41 -29.5 70.5t-70.5 29.5h-100zM400 800v150q0 21 15 35.5t35 14.5h200 q20 0 35 -14.5t15 -35.5v-150h-300z" />
+<glyph unicode="&#xe034;" d="M125 1100h50q10 0 17.5 -7.5t7.5 -17.5v-1075h-100v1075q0 10 7.5 17.5t17.5 7.5zM1075 1052q4 0 9 -2q16 -6 16 -23v-421q0 -6 -3 -12q-33 -59 -66.5 -99t-65.5 -58t-56.5 -24.5t-52.5 -6.5q-26 0 -57.5 6.5t-52.5 13.5t-60 21q-41 15 -63 22.5t-57.5 15t-65.5 7.5 q-85 0 -160 -57q-7 -5 -15 -5q-6 0 -11 3q-14 7 -14 22v438q22 55 82 98.5t119 46.5q23 2 43 0.5t43 -7t32.5 -8.5t38 -13t32.5 -11q41 -14 63.5 -21t57 -14t63.5 -7q103 0 183 87q7 8 18 8z" />
+<glyph unicode="&#xe035;" d="M600 1175q116 0 227 -49.5t192.5 -131t131 -192.5t49.5 -227v-300q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v300q0 127 -70.5 231.5t-184.5 161.5t-245 57t-245 -57t-184.5 -161.5t-70.5 -231.5v-300q0 -10 -7.5 -17.5t-17.5 -7.5h-50 q-10 0 -17.5 7.5t-7.5 17.5v300q0 116 49.5 227t131 192.5t192.5 131t227 49.5zM220 500h160q8 0 14 -6t6 -14v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14v460q0 8 6 14t14 6zM820 500h160q8 0 14 -6t6 -14v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14v460 q0 8 6 14t14 6z" />
+<glyph unicode="&#xe036;" d="M321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM900 668l120 120q7 7 17 7t17 -7l34 -34q7 -7 7 -17t-7 -17l-120 -120l120 -120q7 -7 7 -17 t-7 -17l-34 -34q-7 -7 -17 -7t-17 7l-120 119l-120 -119q-7 -7 -17 -7t-17 7l-34 34q-7 7 -7 17t7 17l119 120l-119 120q-7 7 -7 17t7 17l34 34q7 8 17 8t17 -8z" />
+<glyph unicode="&#xe037;" d="M321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM766 900h4q10 -1 16 -10q96 -129 96 -290q0 -154 -90 -281q-6 -9 -17 -10l-3 -1q-9 0 -16 6 l-29 23q-7 7 -8.5 16.5t4.5 17.5q72 103 72 229q0 132 -78 238q-6 8 -4.5 18t9.5 17l29 22q7 5 15 5z" />
+<glyph unicode="&#xe038;" d="M967 1004h3q11 -1 17 -10q135 -179 135 -396q0 -105 -34 -206.5t-98 -185.5q-7 -9 -17 -10h-3q-9 0 -16 6l-42 34q-8 6 -9 16t5 18q111 150 111 328q0 90 -29.5 176t-84.5 157q-6 9 -5 19t10 16l42 33q7 5 15 5zM321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5 t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM766 900h4q10 -1 16 -10q96 -129 96 -290q0 -154 -90 -281q-6 -9 -17 -10l-3 -1q-9 0 -16 6l-29 23q-7 7 -8.5 16.5t4.5 17.5q72 103 72 229q0 132 -78 238 q-6 8 -4.5 18.5t9.5 16.5l29 22q7 5 15 5z" />
+<glyph unicode="&#xe039;" d="M500 900h100v-100h-100v-100h-400v-100h-100v600h500v-300zM1200 700h-200v-100h200v-200h-300v300h-200v300h-100v200h600v-500zM100 1100v-300h300v300h-300zM800 1100v-300h300v300h-300zM300 900h-100v100h100v-100zM1000 900h-100v100h100v-100zM300 500h200v-500 h-500v500h200v100h100v-100zM800 300h200v-100h-100v-100h-200v100h-100v100h100v200h-200v100h300v-300zM100 400v-300h300v300h-300zM300 200h-100v100h100v-100zM1200 200h-100v100h100v-100zM700 0h-100v100h100v-100zM1200 0h-300v100h300v-100z" />
+<glyph unicode="&#xe040;" d="M100 200h-100v1000h100v-1000zM300 200h-100v1000h100v-1000zM700 200h-200v1000h200v-1000zM900 200h-100v1000h100v-1000zM1200 200h-200v1000h200v-1000zM400 0h-300v100h300v-100zM600 0h-100v91h100v-91zM800 0h-100v91h100v-91zM1100 0h-200v91h200v-91z" />
+<glyph unicode="&#xe041;" d="M500 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-682 682l1 475q0 10 7.5 17.5t17.5 7.5h474zM319.5 1024.5q-29.5 29.5 -71 29.5t-71 -29.5t-29.5 -71.5t29.5 -71.5t71 -29.5t71 29.5t29.5 71.5t-29.5 71.5z" />
+<glyph unicode="&#xe042;" d="M500 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-682 682l1 475q0 10 7.5 17.5t17.5 7.5h474zM800 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-56 56l424 426l-700 700h150zM319.5 1024.5q-29.5 29.5 -71 29.5t-71 -29.5 t-29.5 -71.5t29.5 -71.5t71 -29.5t71 29.5t29.5 71.5t-29.5 71.5z" />
+<glyph unicode="&#xe043;" d="M300 1200h825q75 0 75 -75v-900q0 -25 -18 -43l-64 -64q-8 -8 -13 -5.5t-5 12.5v950q0 10 -7.5 17.5t-17.5 7.5h-700q-25 0 -43 -18l-64 -64q-8 -8 -5.5 -13t12.5 -5h700q10 0 17.5 -7.5t7.5 -17.5v-950q0 -10 -7.5 -17.5t-17.5 -7.5h-850q-10 0 -17.5 7.5t-7.5 17.5v975 q0 25 18 43l139 139q18 18 43 18z" />
+<glyph unicode="&#xe044;" d="M250 1200h800q21 0 35.5 -14.5t14.5 -35.5v-1150l-450 444l-450 -445v1151q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe045;" d="M822 1200h-444q-11 0 -19 -7.5t-9 -17.5l-78 -301q-7 -24 7 -45l57 -108q6 -9 17.5 -15t21.5 -6h450q10 0 21.5 6t17.5 15l62 108q14 21 7 45l-83 301q-1 10 -9 17.5t-19 7.5zM1175 800h-150q-10 0 -21 -6.5t-15 -15.5l-78 -156q-4 -9 -15 -15.5t-21 -6.5h-550 q-10 0 -21 6.5t-15 15.5l-78 156q-4 9 -15 15.5t-21 6.5h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-650q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h750q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5 t7.5 17.5v650q0 10 -7.5 17.5t-17.5 7.5zM850 200h-500q-10 0 -19.5 -7t-11.5 -17l-38 -152q-2 -10 3.5 -17t15.5 -7h600q10 0 15.5 7t3.5 17l-38 152q-2 10 -11.5 17t-19.5 7z" />
+<glyph unicode="&#xe046;" d="M500 1100h200q56 0 102.5 -20.5t72.5 -50t44 -59t25 -50.5l6 -20h150q41 0 70.5 -29.5t29.5 -70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v600q0 41 29.5 70.5t70.5 29.5h150q2 8 6.5 21.5t24 48t45 61t72 48t102.5 21.5zM900 800v-100 h100v100h-100zM600 730q-95 0 -162.5 -67.5t-67.5 -162.5t67.5 -162.5t162.5 -67.5t162.5 67.5t67.5 162.5t-67.5 162.5t-162.5 67.5zM600 603q43 0 73 -30t30 -73t-30 -73t-73 -30t-73 30t-30 73t30 73t73 30z" />
+<glyph unicode="&#xe047;" d="M681 1199l385 -998q20 -50 60 -92q18 -19 36.5 -29.5t27.5 -11.5l10 -2v-66h-417v66q53 0 75 43.5t5 88.5l-82 222h-391q-58 -145 -92 -234q-11 -34 -6.5 -57t25.5 -37t46 -20t55 -6v-66h-365v66q56 24 84 52q12 12 25 30.5t20 31.5l7 13l399 1006h93zM416 521h340 l-162 457z" />
+<glyph unicode="&#xe048;" d="M753 641q5 -1 14.5 -4.5t36 -15.5t50.5 -26.5t53.5 -40t50.5 -54.5t35.5 -70t14.5 -87q0 -67 -27.5 -125.5t-71.5 -97.5t-98.5 -66.5t-108.5 -40.5t-102 -13h-500v89q41 7 70.5 32.5t29.5 65.5v827q0 24 -0.5 34t-3.5 24t-8.5 19.5t-17 13.5t-28 12.5t-42.5 11.5v71 l471 -1q57 0 115.5 -20.5t108 -57t80.5 -94t31 -124.5q0 -51 -15.5 -96.5t-38 -74.5t-45 -50.5t-38.5 -30.5zM400 700h139q78 0 130.5 48.5t52.5 122.5q0 41 -8.5 70.5t-29.5 55.5t-62.5 39.5t-103.5 13.5h-118v-350zM400 200h216q80 0 121 50.5t41 130.5q0 90 -62.5 154.5 t-156.5 64.5h-159v-400z" />
+<glyph unicode="&#xe049;" d="M877 1200l2 -57q-83 -19 -116 -45.5t-40 -66.5l-132 -839q-9 -49 13 -69t96 -26v-97h-500v97q186 16 200 98l173 832q3 17 3 30t-1.5 22.5t-9 17.5t-13.5 12.5t-21.5 10t-26 8.5t-33.5 10q-13 3 -19 5v57h425z" />
+<glyph unicode="&#xe050;" d="M1300 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-850q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v850h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM175 1000h-75v-800h75l-125 -167l-125 167h75v800h-75l125 167z" />
+<glyph unicode="&#xe051;" d="M1100 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-650q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v650h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM1167 50l-167 -125v75h-800v-75l-167 125l167 125v-75h800v75z" />
+<glyph unicode="&#xe052;" d="M50 1100h600q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 500h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe053;" d="M250 1100h700q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM250 500h700q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe054;" d="M500 950v100q0 21 14.5 35.5t35.5 14.5h600q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5zM100 650v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000 q-21 0 -35.5 14.5t-14.5 35.5zM300 350v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5zM0 50v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100 q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5z" />
+<glyph unicode="&#xe055;" d="M50 1100h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 500h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe056;" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 1100h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 800h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 500h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 500h800q21 0 35.5 -14.5t14.5 -35.5v-100 q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 200h800 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe057;" d="M400 0h-100v1100h100v-1100zM550 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM550 800h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM267 550l-167 -125v75h-200v100h200v75zM550 500h300q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM550 200h600 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe058;" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM900 0h-100v1100h100v-1100zM50 800h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM1100 600h200v-100h-200v-75l-167 125l167 125v-75zM50 500h300q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h600 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe059;" d="M75 1000h750q31 0 53 -22t22 -53v-650q0 -31 -22 -53t-53 -22h-750q-31 0 -53 22t-22 53v650q0 31 22 53t53 22zM1200 300l-300 300l300 300v-600z" />
+<glyph unicode="&#xe060;" d="M44 1100h1112q18 0 31 -13t13 -31v-1012q0 -18 -13 -31t-31 -13h-1112q-18 0 -31 13t-13 31v1012q0 18 13 31t31 13zM100 1000v-737l247 182l298 -131l-74 156l293 318l236 -288v500h-1000zM342 884q56 0 95 -39t39 -94.5t-39 -95t-95 -39.5t-95 39.5t-39 95t39 94.5 t95 39z" />
+<glyph unicode="&#xe062;" d="M648 1169q117 0 216 -60t156.5 -161t57.5 -218q0 -115 -70 -258q-69 -109 -158 -225.5t-143 -179.5l-54 -62q-9 8 -25.5 24.5t-63.5 67.5t-91 103t-98.5 128t-95.5 148q-60 132 -60 249q0 88 34 169.5t91.5 142t137 96.5t166.5 36zM652.5 974q-91.5 0 -156.5 -65 t-65 -157t65 -156.5t156.5 -64.5t156.5 64.5t65 156.5t-65 157t-156.5 65z" />
+<glyph unicode="&#xe063;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 173v854q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57z" />
+<glyph unicode="&#xe064;" d="M554 1295q21 -72 57.5 -143.5t76 -130t83 -118t82.5 -117t70 -116t49.5 -126t18.5 -136.5q0 -71 -25.5 -135t-68.5 -111t-99 -82t-118.5 -54t-125.5 -23q-84 5 -161.5 34t-139.5 78.5t-99 125t-37 164.5q0 69 18 136.5t49.5 126.5t69.5 116.5t81.5 117.5t83.5 119 t76.5 131t58.5 143zM344 710q-23 -33 -43.5 -70.5t-40.5 -102.5t-17 -123q1 -37 14.5 -69.5t30 -52t41 -37t38.5 -24.5t33 -15q21 -7 32 -1t13 22l6 34q2 10 -2.5 22t-13.5 19q-5 4 -14 12t-29.5 40.5t-32.5 73.5q-26 89 6 271q2 11 -6 11q-8 1 -15 -10z" />
+<glyph unicode="&#xe065;" d="M1000 1013l108 115q2 1 5 2t13 2t20.5 -1t25 -9.5t28.5 -21.5q22 -22 27 -43t0 -32l-6 -10l-108 -115zM350 1100h400q50 0 105 -13l-187 -187h-368q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v182l200 200v-332 q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5zM1009 803l-362 -362l-161 -50l55 170l355 355z" />
+<glyph unicode="&#xe066;" d="M350 1100h361q-164 -146 -216 -200h-195q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5l200 153v-103q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5z M824 1073l339 -301q8 -7 8 -17.5t-8 -17.5l-340 -306q-7 -6 -12.5 -4t-6.5 11v203q-26 1 -54.5 0t-78.5 -7.5t-92 -17.5t-86 -35t-70 -57q10 59 33 108t51.5 81.5t65 58.5t68.5 40.5t67 24.5t56 13.5t40 4.5v210q1 10 6.5 12.5t13.5 -4.5z" />
+<glyph unicode="&#xe067;" d="M350 1100h350q60 0 127 -23l-178 -177h-349q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v69l200 200v-219q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5z M643 639l395 395q7 7 17.5 7t17.5 -7l101 -101q7 -7 7 -17.5t-7 -17.5l-531 -532q-7 -7 -17.5 -7t-17.5 7l-248 248q-7 7 -7 17.5t7 17.5l101 101q7 7 17.5 7t17.5 -7l111 -111q8 -7 18 -7t18 7z" />
+<glyph unicode="&#xe068;" d="M318 918l264 264q8 8 18 8t18 -8l260 -264q7 -8 4.5 -13t-12.5 -5h-170v-200h200v173q0 10 5 12t13 -5l264 -260q8 -7 8 -17.5t-8 -17.5l-264 -265q-8 -7 -13 -5t-5 12v173h-200v-200h170q10 0 12.5 -5t-4.5 -13l-260 -264q-8 -8 -18 -8t-18 8l-264 264q-8 8 -5.5 13 t12.5 5h175v200h-200v-173q0 -10 -5 -12t-13 5l-264 265q-8 7 -8 17.5t8 17.5l264 260q8 7 13 5t5 -12v-173h200v200h-175q-10 0 -12.5 5t5.5 13z" />
+<glyph unicode="&#xe069;" d="M250 1100h100q21 0 35.5 -14.5t14.5 -35.5v-438l464 453q15 14 25.5 10t10.5 -25v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v1000q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe070;" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-438l464 453q15 14 25.5 10t10.5 -25v-438l464 453q15 14 25.5 10t10.5 -25v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5 t-14.5 35.5v1000q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe071;" d="M1200 1050v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -10.5 -25t-25.5 10l-492 480q-15 14 -15 35t15 35l492 480q15 14 25.5 10t10.5 -25v-438l464 453q15 14 25.5 10t10.5 -25z" />
+<glyph unicode="&#xe072;" d="M243 1074l814 -498q18 -11 18 -26t-18 -26l-814 -498q-18 -11 -30.5 -4t-12.5 28v1000q0 21 12.5 28t30.5 -4z" />
+<glyph unicode="&#xe073;" d="M250 1000h200q21 0 35.5 -14.5t14.5 -35.5v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5zM650 1000h200q21 0 35.5 -14.5t14.5 -35.5v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v800 q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe074;" d="M1100 950v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5z" />
+<glyph unicode="&#xe075;" d="M500 612v438q0 21 10.5 25t25.5 -10l492 -480q15 -14 15 -35t-15 -35l-492 -480q-15 -14 -25.5 -10t-10.5 25v438l-464 -453q-15 -14 -25.5 -10t-10.5 25v1000q0 21 10.5 25t25.5 -10z" />
+<glyph unicode="&#xe076;" d="M1048 1102l100 1q20 0 35 -14.5t15 -35.5l5 -1000q0 -21 -14.5 -35.5t-35.5 -14.5l-100 -1q-21 0 -35.5 14.5t-14.5 35.5l-2 437l-463 -454q-14 -15 -24.5 -10.5t-10.5 25.5l-2 437l-462 -455q-15 -14 -25.5 -9.5t-10.5 24.5l-5 1000q0 21 10.5 25.5t25.5 -10.5l466 -450 l-2 438q0 20 10.5 24.5t25.5 -9.5l466 -451l-2 438q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe077;" d="M850 1100h100q21 0 35.5 -14.5t14.5 -35.5v-1000q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v438l-464 -453q-15 -14 -25.5 -10t-10.5 25v1000q0 21 10.5 25t25.5 -10l464 -453v438q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe078;" d="M686 1081l501 -540q15 -15 10.5 -26t-26.5 -11h-1042q-22 0 -26.5 11t10.5 26l501 540q15 15 36 15t36 -15zM150 400h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe079;" d="M885 900l-352 -353l352 -353l-197 -198l-552 552l552 550z" />
+<glyph unicode="&#xe080;" d="M1064 547l-551 -551l-198 198l353 353l-353 353l198 198z" />
+<glyph unicode="&#xe081;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM650 900h-100q-21 0 -35.5 -14.5t-14.5 -35.5v-150h-150 q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5t35.5 -14.5h150v-150q0 -21 14.5 -35.5t35.5 -14.5h100q21 0 35.5 14.5t14.5 35.5v150h150q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5h-150v150q0 21 -14.5 35.5t-35.5 14.5z" />
+<glyph unicode="&#xe082;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM850 700h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5 t35.5 -14.5h500q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5z" />
+<glyph unicode="&#xe083;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM741.5 913q-12.5 0 -21.5 -9l-120 -120l-120 120q-9 9 -21.5 9 t-21.5 -9l-141 -141q-9 -9 -9 -21.5t9 -21.5l120 -120l-120 -120q-9 -9 -9 -21.5t9 -21.5l141 -141q9 -9 21.5 -9t21.5 9l120 120l120 -120q9 -9 21.5 -9t21.5 9l141 141q9 9 9 21.5t-9 21.5l-120 120l120 120q9 9 9 21.5t-9 21.5l-141 141q-9 9 -21.5 9z" />
+<glyph unicode="&#xe084;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM546 623l-84 85q-7 7 -17.5 7t-18.5 -7l-139 -139q-7 -8 -7 -18t7 -18 l242 -241q7 -8 17.5 -8t17.5 8l375 375q7 7 7 17.5t-7 18.5l-139 139q-7 7 -17.5 7t-17.5 -7z" />
+<glyph unicode="&#xe085;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM588 941q-29 0 -59 -5.5t-63 -20.5t-58 -38.5t-41.5 -63t-16.5 -89.5 q0 -25 20 -25h131q30 -5 35 11q6 20 20.5 28t45.5 8q20 0 31.5 -10.5t11.5 -28.5q0 -23 -7 -34t-26 -18q-1 0 -13.5 -4t-19.5 -7.5t-20 -10.5t-22 -17t-18.5 -24t-15.5 -35t-8 -46q-1 -8 5.5 -16.5t20.5 -8.5h173q7 0 22 8t35 28t37.5 48t29.5 74t12 100q0 47 -17 83 t-42.5 57t-59.5 34.5t-64 18t-59 4.5zM675 400h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5z" />
+<glyph unicode="&#xe086;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM675 1000h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5 t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5zM675 700h-250q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h75v-200h-75q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h350q10 0 17.5 7.5t7.5 17.5v50q0 10 -7.5 17.5 t-17.5 7.5h-75v275q0 10 -7.5 17.5t-17.5 7.5z" />
+<glyph unicode="&#xe087;" d="M525 1200h150q10 0 17.5 -7.5t7.5 -17.5v-194q103 -27 178.5 -102.5t102.5 -178.5h194q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-194q-27 -103 -102.5 -178.5t-178.5 -102.5v-194q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v194 q-103 27 -178.5 102.5t-102.5 178.5h-194q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h194q27 103 102.5 178.5t178.5 102.5v194q0 10 7.5 17.5t17.5 7.5zM700 893v-168q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v168q-68 -23 -119 -74 t-74 -119h168q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-168q23 -68 74 -119t119 -74v168q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-168q68 23 119 74t74 119h-168q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h168 q-23 68 -74 119t-119 74z" />
+<glyph unicode="&#xe088;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM759 823l64 -64q7 -7 7 -17.5t-7 -17.5l-124 -124l124 -124q7 -7 7 -17.5t-7 -17.5l-64 -64q-7 -7 -17.5 -7t-17.5 7l-124 124l-124 -124q-7 -7 -17.5 -7t-17.5 7l-64 64 q-7 7 -7 17.5t7 17.5l124 124l-124 124q-7 7 -7 17.5t7 17.5l64 64q7 7 17.5 7t17.5 -7l124 -124l124 124q7 7 17.5 7t17.5 -7z" />
+<glyph unicode="&#xe089;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM782 788l106 -106q7 -7 7 -17.5t-7 -17.5l-320 -321q-8 -7 -18 -7t-18 7l-202 203q-8 7 -8 17.5t8 17.5l106 106q7 8 17.5 8t17.5 -8l79 -79l197 197q7 7 17.5 7t17.5 -7z" />
+<glyph unicode="&#xe090;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5q0 -120 65 -225 l587 587q-105 65 -225 65zM965 819l-584 -584q104 -62 219 -62q116 0 214.5 57t155.5 155.5t57 214.5q0 115 -62 219z" />
+<glyph unicode="&#xe091;" d="M39 582l522 427q16 13 27.5 8t11.5 -26v-291h550q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-550v-291q0 -21 -11.5 -26t-27.5 8l-522 427q-16 13 -16 32t16 32z" />
+<glyph unicode="&#xe092;" d="M639 1009l522 -427q16 -13 16 -32t-16 -32l-522 -427q-16 -13 -27.5 -8t-11.5 26v291h-550q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h550v291q0 21 11.5 26t27.5 -8z" />
+<glyph unicode="&#xe093;" d="M682 1161l427 -522q13 -16 8 -27.5t-26 -11.5h-291v-550q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v550h-291q-21 0 -26 11.5t8 27.5l427 522q13 16 32 16t32 -16z" />
+<glyph unicode="&#xe094;" d="M550 1200h200q21 0 35.5 -14.5t14.5 -35.5v-550h291q21 0 26 -11.5t-8 -27.5l-427 -522q-13 -16 -32 -16t-32 16l-427 522q-13 16 -8 27.5t26 11.5h291v550q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe095;" d="M639 1109l522 -427q16 -13 16 -32t-16 -32l-522 -427q-16 -13 -27.5 -8t-11.5 26v291q-94 -2 -182 -20t-170.5 -52t-147 -92.5t-100.5 -135.5q5 105 27 193.5t67.5 167t113 135t167 91.5t225.5 42v262q0 21 11.5 26t27.5 -8z" />
+<glyph unicode="&#xe096;" d="M850 1200h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94l-249 -249q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l249 249l-94 94q-14 14 -10 24.5t25 10.5zM350 0h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l249 249 q8 7 18 7t18 -7l106 -106q7 -8 7 -18t-7 -18l-249 -249l94 -94q14 -14 10 -24.5t-25 -10.5z" />
+<glyph unicode="&#xe097;" d="M1014 1120l106 -106q7 -8 7 -18t-7 -18l-249 -249l94 -94q14 -14 10 -24.5t-25 -10.5h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l249 249q8 7 18 7t18 -7zM250 600h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94 l-249 -249q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l249 249l-94 94q-14 14 -10 24.5t25 10.5z" />
+<glyph unicode="&#xe101;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM704 900h-208q-20 0 -32 -14.5t-8 -34.5l58 -302q4 -20 21.5 -34.5 t37.5 -14.5h54q20 0 37.5 14.5t21.5 34.5l58 302q4 20 -8 34.5t-32 14.5zM675 400h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5z" />
+<glyph unicode="&#xe102;" d="M260 1200q9 0 19 -2t15 -4l5 -2q22 -10 44 -23l196 -118q21 -13 36 -24q29 -21 37 -12q11 13 49 35l196 118q22 13 45 23q17 7 38 7q23 0 47 -16.5t37 -33.5l13 -16q14 -21 18 -45l25 -123l8 -44q1 -9 8.5 -14.5t17.5 -5.5h61q10 0 17.5 -7.5t7.5 -17.5v-50 q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 -7.5t-7.5 -17.5v-175h-400v300h-200v-300h-400v175q0 10 -7.5 17.5t-17.5 7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5h61q11 0 18 3t7 8q0 4 9 52l25 128q5 25 19 45q2 3 5 7t13.5 15t21.5 19.5t26.5 15.5 t29.5 7zM915 1079l-166 -162q-7 -7 -5 -12t12 -5h219q10 0 15 7t2 17l-51 149q-3 10 -11 12t-15 -6zM463 917l-177 157q-8 7 -16 5t-11 -12l-51 -143q-3 -10 2 -17t15 -7h231q11 0 12.5 5t-5.5 12zM500 0h-375q-10 0 -17.5 7.5t-7.5 17.5v375h400v-400zM1100 400v-375 q0 -10 -7.5 -17.5t-17.5 -7.5h-375v400h400z" />
+<glyph unicode="&#xe103;" d="M1165 1190q8 3 21 -6.5t13 -17.5q-2 -178 -24.5 -323.5t-55.5 -245.5t-87 -174.5t-102.5 -118.5t-118 -68.5t-118.5 -33t-120 -4.5t-105 9.5t-90 16.5q-61 12 -78 11q-4 1 -12.5 0t-34 -14.5t-52.5 -40.5l-153 -153q-26 -24 -37 -14.5t-11 43.5q0 64 42 102q8 8 50.5 45 t66.5 58q19 17 35 47t13 61q-9 55 -10 102.5t7 111t37 130t78 129.5q39 51 80 88t89.5 63.5t94.5 45t113.5 36t129 31t157.5 37t182 47.5zM1116 1098q-8 9 -22.5 -3t-45.5 -50q-38 -47 -119 -103.5t-142 -89.5l-62 -33q-56 -30 -102 -57t-104 -68t-102.5 -80.5t-85.5 -91 t-64 -104.5q-24 -56 -31 -86t2 -32t31.5 17.5t55.5 59.5q25 30 94 75.5t125.5 77.5t147.5 81q70 37 118.5 69t102 79.5t99 111t86.5 148.5q22 50 24 60t-6 19z" />
+<glyph unicode="&#xe104;" d="M653 1231q-39 -67 -54.5 -131t-10.5 -114.5t24.5 -96.5t47.5 -80t63.5 -62.5t68.5 -46.5t65 -30q-4 7 -17.5 35t-18.5 39.5t-17 39.5t-17 43t-13 42t-9.5 44.5t-2 42t4 43t13.5 39t23 38.5q96 -42 165 -107.5t105 -138t52 -156t13 -159t-19 -149.5q-13 -55 -44 -106.5 t-68 -87t-78.5 -64.5t-72.5 -45t-53 -22q-72 -22 -127 -11q-31 6 -13 19q6 3 17 7q13 5 32.5 21t41 44t38.5 63.5t21.5 81.5t-6.5 94.5t-50 107t-104 115.5q10 -104 -0.5 -189t-37 -140.5t-65 -93t-84 -52t-93.5 -11t-95 24.5q-80 36 -131.5 114t-53.5 171q-2 23 0 49.5 t4.5 52.5t13.5 56t27.5 60t46 64.5t69.5 68.5q-8 -53 -5 -102.5t17.5 -90t34 -68.5t44.5 -39t49 -2q31 13 38.5 36t-4.5 55t-29 64.5t-36 75t-26 75.5q-15 85 2 161.5t53.5 128.5t85.5 92.5t93.5 61t81.5 25.5z" />
+<glyph unicode="&#xe105;" d="M600 1094q82 0 160.5 -22.5t140 -59t116.5 -82.5t94.5 -95t68 -95t42.5 -82.5t14 -57.5t-14 -57.5t-43 -82.5t-68.5 -95t-94.5 -95t-116.5 -82.5t-140 -59t-159.5 -22.5t-159.5 22.5t-140 59t-116.5 82.5t-94.5 95t-68.5 95t-43 82.5t-14 57.5t14 57.5t42.5 82.5t68 95 t94.5 95t116.5 82.5t140 59t160.5 22.5zM888 829q-15 15 -18 12t5 -22q25 -57 25 -119q0 -124 -88 -212t-212 -88t-212 88t-88 212q0 59 23 114q8 19 4.5 22t-17.5 -12q-70 -69 -160 -184q-13 -16 -15 -40.5t9 -42.5q22 -36 47 -71t70 -82t92.5 -81t113 -58.5t133.5 -24.5 t133.5 24t113 58.5t92.5 81.5t70 81.5t47 70.5q11 18 9 42.5t-14 41.5q-90 117 -163 189zM448 727l-35 -36q-15 -15 -19.5 -38.5t4.5 -41.5q37 -68 93 -116q16 -13 38.5 -11t36.5 17l35 34q14 15 12.5 33.5t-16.5 33.5q-44 44 -89 117q-11 18 -28 20t-32 -12z" />
+<glyph unicode="&#xe106;" d="M592 0h-148l31 120q-91 20 -175.5 68.5t-143.5 106.5t-103.5 119t-66.5 110t-22 76q0 21 14 57.5t42.5 82.5t68 95t94.5 95t116.5 82.5t140 59t160.5 22.5q61 0 126 -15l32 121h148zM944 770l47 181q108 -85 176.5 -192t68.5 -159q0 -26 -19.5 -71t-59.5 -102t-93 -112 t-129 -104.5t-158 -75.5l46 173q77 49 136 117t97 131q11 18 9 42.5t-14 41.5q-54 70 -107 130zM310 824q-70 -69 -160 -184q-13 -16 -15 -40.5t9 -42.5q18 -30 39 -60t57 -70.5t74 -73t90 -61t105 -41.5l41 154q-107 18 -178.5 101.5t-71.5 193.5q0 59 23 114q8 19 4.5 22 t-17.5 -12zM448 727l-35 -36q-15 -15 -19.5 -38.5t4.5 -41.5q37 -68 93 -116q16 -13 38.5 -11t36.5 17l12 11l22 86l-3 4q-44 44 -89 117q-11 18 -28 20t-32 -12z" />
+<glyph unicode="&#xe107;" d="M-90 100l642 1066q20 31 48 28.5t48 -35.5l642 -1056q21 -32 7.5 -67.5t-50.5 -35.5h-1294q-37 0 -50.5 34t7.5 66zM155 200h345v75q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-75h345l-445 723zM496 700h208q20 0 32 -14.5t8 -34.5l-58 -252 q-4 -20 -21.5 -34.5t-37.5 -14.5h-54q-20 0 -37.5 14.5t-21.5 34.5l-58 252q-4 20 8 34.5t32 14.5z" />
+<glyph unicode="&#xe108;" d="M650 1200q62 0 106 -44t44 -106v-339l363 -325q15 -14 26 -38.5t11 -44.5v-41q0 -20 -12 -26.5t-29 5.5l-359 249v-263q100 -93 100 -113v-64q0 -21 -13 -29t-32 1l-205 128l-205 -128q-19 -9 -32 -1t-13 29v64q0 20 100 113v263l-359 -249q-17 -12 -29 -5.5t-12 26.5v41 q0 20 11 44.5t26 38.5l363 325v339q0 62 44 106t106 44z" />
+<glyph unicode="&#xe109;" d="M850 1200h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-150h-1100v150q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-50h500v50q0 21 14.5 35.5t35.5 14.5zM1100 800v-750q0 -21 -14.5 -35.5 t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v750h1100zM100 600v-100h100v100h-100zM300 600v-100h100v100h-100zM500 600v-100h100v100h-100zM700 600v-100h100v100h-100zM900 600v-100h100v100h-100zM100 400v-100h100v100h-100zM300 400v-100h100v100h-100zM500 400 v-100h100v100h-100zM700 400v-100h100v100h-100zM900 400v-100h100v100h-100zM100 200v-100h100v100h-100zM300 200v-100h100v100h-100zM500 200v-100h100v100h-100zM700 200v-100h100v100h-100zM900 200v-100h100v100h-100z" />
+<glyph unicode="&#xe110;" d="M1135 1165l249 -230q15 -14 15 -35t-15 -35l-249 -230q-14 -14 -24.5 -10t-10.5 25v150h-159l-600 -600h-291q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h209l600 600h241v150q0 21 10.5 25t24.5 -10zM522 819l-141 -141l-122 122h-209q-21 0 -35.5 14.5 t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h291zM1135 565l249 -230q15 -14 15 -35t-15 -35l-249 -230q-14 -14 -24.5 -10t-10.5 25v150h-241l-181 181l141 141l122 -122h159v150q0 21 10.5 25t24.5 -10z" />
+<glyph unicode="&#xe111;" d="M100 1100h1000q41 0 70.5 -29.5t29.5 -70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-596l-304 -300v300h-100q-41 0 -70.5 29.5t-29.5 70.5v600q0 41 29.5 70.5t70.5 29.5z" />
+<glyph unicode="&#xe112;" d="M150 1200h200q21 0 35.5 -14.5t14.5 -35.5v-250h-300v250q0 21 14.5 35.5t35.5 14.5zM850 1200h200q21 0 35.5 -14.5t14.5 -35.5v-250h-300v250q0 21 14.5 35.5t35.5 14.5zM1100 800v-300q0 -41 -3 -77.5t-15 -89.5t-32 -96t-58 -89t-89 -77t-129 -51t-174 -20t-174 20 t-129 51t-89 77t-58 89t-32 96t-15 89.5t-3 77.5v300h300v-250v-27v-42.5t1.5 -41t5 -38t10 -35t16.5 -30t25.5 -24.5t35 -19t46.5 -12t60 -4t60 4.5t46.5 12.5t35 19.5t25 25.5t17 30.5t10 35t5 38t2 40.5t-0.5 42v25v250h300z" />
+<glyph unicode="&#xe113;" d="M1100 411l-198 -199l-353 353l-353 -353l-197 199l551 551z" />
+<glyph unicode="&#xe114;" d="M1101 789l-550 -551l-551 551l198 199l353 -353l353 353z" />
+<glyph unicode="&#xe115;" d="M404 1000h746q21 0 35.5 -14.5t14.5 -35.5v-551h150q21 0 25 -10.5t-10 -24.5l-230 -249q-14 -15 -35 -15t-35 15l-230 249q-14 14 -10 24.5t25 10.5h150v401h-381zM135 984l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-400h385l215 -200h-750q-21 0 -35.5 14.5 t-14.5 35.5v550h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" />
+<glyph unicode="&#xe116;" d="M56 1200h94q17 0 31 -11t18 -27l38 -162h896q24 0 39 -18.5t10 -42.5l-100 -475q-5 -21 -27 -42.5t-55 -21.5h-633l48 -200h535q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-50q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v50h-300v-50 q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v50h-31q-18 0 -32.5 10t-20.5 19l-5 10l-201 961h-54q-20 0 -35 14.5t-15 35.5t15 35.5t35 14.5z" />
+<glyph unicode="&#xe117;" d="M1200 1000v-100h-1200v100h200q0 41 29.5 70.5t70.5 29.5h300q41 0 70.5 -29.5t29.5 -70.5h500zM0 800h1200v-800h-1200v800z" />
+<glyph unicode="&#xe118;" d="M200 800l-200 -400v600h200q0 41 29.5 70.5t70.5 29.5h300q42 0 71 -29.5t29 -70.5h500v-200h-1000zM1500 700l-300 -700h-1200l300 700h1200z" />
+<glyph unicode="&#xe119;" d="M635 1184l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-601h150q21 0 25 -10.5t-10 -24.5l-230 -249q-14 -15 -35 -15t-35 15l-230 249q-14 14 -10 24.5t25 10.5h150v601h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" />
+<glyph unicode="&#xe120;" d="M936 864l249 -229q14 -15 14 -35.5t-14 -35.5l-249 -229q-15 -15 -25.5 -10.5t-10.5 24.5v151h-600v-151q0 -20 -10.5 -24.5t-25.5 10.5l-249 229q-14 15 -14 35.5t14 35.5l249 229q15 15 25.5 10.5t10.5 -25.5v-149h600v149q0 21 10.5 25.5t25.5 -10.5z" />
+<glyph unicode="&#xe121;" d="M1169 400l-172 732q-5 23 -23 45.5t-38 22.5h-672q-20 0 -38 -20t-23 -41l-172 -739h1138zM1100 300h-1000q-41 0 -70.5 -29.5t-29.5 -70.5v-100q0 -41 29.5 -70.5t70.5 -29.5h1000q41 0 70.5 29.5t29.5 70.5v100q0 41 -29.5 70.5t-70.5 29.5zM800 100v100h100v-100h-100 zM1000 100v100h100v-100h-100z" />
+<glyph unicode="&#xe122;" d="M1150 1100q21 0 35.5 -14.5t14.5 -35.5v-850q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v850q0 21 14.5 35.5t35.5 14.5zM1000 200l-675 200h-38l47 -276q3 -16 -5.5 -20t-29.5 -4h-7h-84q-20 0 -34.5 14t-18.5 35q-55 337 -55 351v250v6q0 16 1 23.5t6.5 14 t17.5 6.5h200l675 250v-850zM0 750v-250q-4 0 -11 0.5t-24 6t-30 15t-24 30t-11 48.5v50q0 26 10.5 46t25 30t29 16t25.5 7z" />
+<glyph unicode="&#xe123;" d="M553 1200h94q20 0 29 -10.5t3 -29.5l-18 -37q83 -19 144 -82.5t76 -140.5l63 -327l118 -173h17q19 0 33 -14.5t14 -35t-13 -40.5t-31 -27q-8 -4 -23 -9.5t-65 -19.5t-103 -25t-132.5 -20t-158.5 -9q-57 0 -115 5t-104 12t-88.5 15.5t-73.5 17.5t-54.5 16t-35.5 12l-11 4 q-18 8 -31 28t-13 40.5t14 35t33 14.5h17l118 173l63 327q15 77 76 140t144 83l-18 32q-6 19 3.5 32t28.5 13zM498 110q50 -6 102 -6q53 0 102 6q-12 -49 -39.5 -79.5t-62.5 -30.5t-63 30.5t-39 79.5z" />
+<glyph unicode="&#xe124;" d="M800 946l224 78l-78 -224l234 -45l-180 -155l180 -155l-234 -45l78 -224l-224 78l-45 -234l-155 180l-155 -180l-45 234l-224 -78l78 224l-234 45l180 155l-180 155l234 45l-78 224l224 -78l45 234l155 -180l155 180z" />
+<glyph unicode="&#xe125;" d="M650 1200h50q40 0 70 -40.5t30 -84.5v-150l-28 -125h328q40 0 70 -40.5t30 -84.5v-100q0 -45 -29 -74l-238 -344q-16 -24 -38 -40.5t-45 -16.5h-250q-7 0 -42 25t-66 50l-31 25h-61q-45 0 -72.5 18t-27.5 57v400q0 36 20 63l145 196l96 198q13 28 37.5 48t51.5 20z M650 1100l-100 -212l-150 -213v-375h100l136 -100h214l250 375v125h-450l50 225v175h-50zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe126;" d="M600 1100h250q23 0 45 -16.5t38 -40.5l238 -344q29 -29 29 -74v-100q0 -44 -30 -84.5t-70 -40.5h-328q28 -118 28 -125v-150q0 -44 -30 -84.5t-70 -40.5h-50q-27 0 -51.5 20t-37.5 48l-96 198l-145 196q-20 27 -20 63v400q0 39 27.5 57t72.5 18h61q124 100 139 100z M50 1000h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5zM636 1000l-136 -100h-100v-375l150 -213l100 -212h50v175l-50 225h450v125l-250 375h-214z" />
+<glyph unicode="&#xe127;" d="M356 873l363 230q31 16 53 -6l110 -112q13 -13 13.5 -32t-11.5 -34l-84 -121h302q84 0 138 -38t54 -110t-55 -111t-139 -39h-106l-131 -339q-6 -21 -19.5 -41t-28.5 -20h-342q-7 0 -90 81t-83 94v525q0 17 14 35.5t28 28.5zM400 792v-503l100 -89h293l131 339 q6 21 19.5 41t28.5 20h203q21 0 30.5 25t0.5 50t-31 25h-456h-7h-6h-5.5t-6 0.5t-5 1.5t-5 2t-4 2.5t-4 4t-2.5 4.5q-12 25 5 47l146 183l-86 83zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500 q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe128;" d="M475 1103l366 -230q2 -1 6 -3.5t14 -10.5t18 -16.5t14.5 -20t6.5 -22.5v-525q0 -13 -86 -94t-93 -81h-342q-15 0 -28.5 20t-19.5 41l-131 339h-106q-85 0 -139.5 39t-54.5 111t54 110t138 38h302l-85 121q-11 15 -10.5 34t13.5 32l110 112q22 22 53 6zM370 945l146 -183 q17 -22 5 -47q-2 -2 -3.5 -4.5t-4 -4t-4 -2.5t-5 -2t-5 -1.5t-6 -0.5h-6h-6.5h-6h-475v-100h221q15 0 29 -20t20 -41l130 -339h294l106 89v503l-342 236zM1050 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5 v500q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe129;" d="M550 1294q72 0 111 -55t39 -139v-106l339 -131q21 -6 41 -19.5t20 -28.5v-342q0 -7 -81 -90t-94 -83h-525q-17 0 -35.5 14t-28.5 28l-9 14l-230 363q-16 31 6 53l112 110q13 13 32 13.5t34 -11.5l121 -84v302q0 84 38 138t110 54zM600 972v203q0 21 -25 30.5t-50 0.5 t-25 -31v-456v-7v-6v-5.5t-0.5 -6t-1.5 -5t-2 -5t-2.5 -4t-4 -4t-4.5 -2.5q-25 -12 -47 5l-183 146l-83 -86l236 -339h503l89 100v293l-339 131q-21 6 -41 19.5t-20 28.5zM450 200h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe130;" d="M350 1100h500q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5t35.5 -14.5zM600 306v-106q0 -84 -39 -139t-111 -55t-110 54t-38 138v302l-121 -84q-15 -12 -34 -11.5t-32 13.5l-112 110 q-22 22 -6 53l230 363q1 2 3.5 6t10.5 13.5t16.5 17t20 13.5t22.5 6h525q13 0 94 -83t81 -90v-342q0 -15 -20 -28.5t-41 -19.5zM308 900l-236 -339l83 -86l183 146q22 17 47 5q2 -1 4.5 -2.5t4 -4t2.5 -4t2 -5t1.5 -5t0.5 -6v-5.5v-6v-7v-456q0 -22 25 -31t50 0.5t25 30.5 v203q0 15 20 28.5t41 19.5l339 131v293l-89 100h-503z" />
+<glyph unicode="&#xe131;" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM914 632l-275 223q-16 13 -27.5 8t-11.5 -26v-137h-275 q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h275v-137q0 -21 11.5 -26t27.5 8l275 223q16 13 16 32t-16 32z" />
+<glyph unicode="&#xe132;" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM561 855l-275 -223q-16 -13 -16 -32t16 -32l275 -223q16 -13 27.5 -8 t11.5 26v137h275q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5h-275v137q0 21 -11.5 26t-27.5 -8z" />
+<glyph unicode="&#xe133;" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM855 639l-223 275q-13 16 -32 16t-32 -16l-223 -275q-13 -16 -8 -27.5 t26 -11.5h137v-275q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v275h137q21 0 26 11.5t-8 27.5z" />
+<glyph unicode="&#xe134;" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM675 900h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-275h-137q-21 0 -26 -11.5 t8 -27.5l223 -275q13 -16 32 -16t32 16l223 275q13 16 8 27.5t-26 11.5h-137v275q0 10 -7.5 17.5t-17.5 7.5z" />
+<glyph unicode="&#xe135;" d="M600 1176q116 0 222.5 -46t184 -123.5t123.5 -184t46 -222.5t-46 -222.5t-123.5 -184t-184 -123.5t-222.5 -46t-222.5 46t-184 123.5t-123.5 184t-46 222.5t46 222.5t123.5 184t184 123.5t222.5 46zM627 1101q-15 -12 -36.5 -20.5t-35.5 -12t-43 -8t-39 -6.5 q-15 -3 -45.5 0t-45.5 -2q-20 -7 -51.5 -26.5t-34.5 -34.5q-3 -11 6.5 -22.5t8.5 -18.5q-3 -34 -27.5 -91t-29.5 -79q-9 -34 5 -93t8 -87q0 -9 17 -44.5t16 -59.5q12 0 23 -5t23.5 -15t19.5 -14q16 -8 33 -15t40.5 -15t34.5 -12q21 -9 52.5 -32t60 -38t57.5 -11 q7 -15 -3 -34t-22.5 -40t-9.5 -38q13 -21 23 -34.5t27.5 -27.5t36.5 -18q0 -7 -3.5 -16t-3.5 -14t5 -17q104 -2 221 112q30 29 46.5 47t34.5 49t21 63q-13 8 -37 8.5t-36 7.5q-15 7 -49.5 15t-51.5 19q-18 0 -41 -0.5t-43 -1.5t-42 -6.5t-38 -16.5q-51 -35 -66 -12 q-4 1 -3.5 25.5t0.5 25.5q-6 13 -26.5 17.5t-24.5 6.5q1 15 -0.5 30.5t-7 28t-18.5 11.5t-31 -21q-23 -25 -42 4q-19 28 -8 58q6 16 22 22q6 -1 26 -1.5t33.5 -4t19.5 -13.5q7 -12 18 -24t21.5 -20.5t20 -15t15.5 -10.5l5 -3q2 12 7.5 30.5t8 34.5t-0.5 32q-3 18 3.5 29 t18 22.5t15.5 24.5q6 14 10.5 35t8 31t15.5 22.5t34 22.5q-6 18 10 36q8 0 24 -1.5t24.5 -1.5t20 4.5t20.5 15.5q-10 23 -31 42.5t-37.5 29.5t-49 27t-43.5 23q0 1 2 8t3 11.5t1.5 10.5t-1 9.5t-4.5 4.5q31 -13 58.5 -14.5t38.5 2.5l12 5q5 28 -9.5 46t-36.5 24t-50 15 t-41 20q-18 -4 -37 0zM613 994q0 -17 8 -42t17 -45t9 -23q-8 1 -39.5 5.5t-52.5 10t-37 16.5q3 11 16 29.5t16 25.5q10 -10 19 -10t14 6t13.5 14.5t16.5 12.5z" />
+<glyph unicode="&#xe136;" d="M756 1157q164 92 306 -9l-259 -138l145 -232l251 126q6 -89 -34 -156.5t-117 -110.5q-60 -34 -127 -39.5t-126 16.5l-596 -596q-15 -16 -36.5 -16t-36.5 16l-111 110q-15 15 -15 36.5t15 37.5l600 599q-34 101 5.5 201.5t135.5 154.5z" />
+<glyph unicode="&#xe137;" horiz-adv-x="1220" d="M100 1196h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 1096h-200v-100h200v100zM100 796h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000 q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 696h-500v-100h500v100zM100 396h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 296h-300v-100h300v100z " />
+<glyph unicode="&#xe138;" d="M150 1200h900q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM700 500v-300l-200 -200v500l-350 500h900z" />
+<glyph unicode="&#xe139;" d="M500 1200h200q41 0 70.5 -29.5t29.5 -70.5v-100h300q41 0 70.5 -29.5t29.5 -70.5v-400h-500v100h-200v-100h-500v400q0 41 29.5 70.5t70.5 29.5h300v100q0 41 29.5 70.5t70.5 29.5zM500 1100v-100h200v100h-200zM1200 400v-200q0 -41 -29.5 -70.5t-70.5 -29.5h-1000 q-41 0 -70.5 29.5t-29.5 70.5v200h1200z" />
+<glyph unicode="&#xe140;" d="M50 1200h300q21 0 25 -10.5t-10 -24.5l-94 -94l199 -199q7 -8 7 -18t-7 -18l-106 -106q-8 -7 -18 -7t-18 7l-199 199l-94 -94q-14 -14 -24.5 -10t-10.5 25v300q0 21 14.5 35.5t35.5 14.5zM850 1200h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94 l-199 -199q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l199 199l-94 94q-14 14 -10 24.5t25 10.5zM364 470l106 -106q7 -8 7 -18t-7 -18l-199 -199l94 -94q14 -14 10 -24.5t-25 -10.5h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l199 199 q8 7 18 7t18 -7zM1071 271l94 94q14 14 24.5 10t10.5 -25v-300q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -25 10.5t10 24.5l94 94l-199 199q-7 8 -7 18t7 18l106 106q8 7 18 7t18 -7z" />
+<glyph unicode="&#xe141;" d="M596 1192q121 0 231.5 -47.5t190 -127t127 -190t47.5 -231.5t-47.5 -231.5t-127 -190.5t-190 -127t-231.5 -47t-231.5 47t-190.5 127t-127 190.5t-47 231.5t47 231.5t127 190t190.5 127t231.5 47.5zM596 1010q-112 0 -207.5 -55.5t-151 -151t-55.5 -207.5t55.5 -207.5 t151 -151t207.5 -55.5t207.5 55.5t151 151t55.5 207.5t-55.5 207.5t-151 151t-207.5 55.5zM454.5 905q22.5 0 38.5 -16t16 -38.5t-16 -39t-38.5 -16.5t-38.5 16.5t-16 39t16 38.5t38.5 16zM754.5 905q22.5 0 38.5 -16t16 -38.5t-16 -39t-38 -16.5q-14 0 -29 10l-55 -145 q17 -23 17 -51q0 -36 -25.5 -61.5t-61.5 -25.5t-61.5 25.5t-25.5 61.5q0 32 20.5 56.5t51.5 29.5l122 126l1 1q-9 14 -9 28q0 23 16 39t38.5 16zM345.5 709q22.5 0 38.5 -16t16 -38.5t-16 -38.5t-38.5 -16t-38.5 16t-16 38.5t16 38.5t38.5 16zM854.5 709q22.5 0 38.5 -16 t16 -38.5t-16 -38.5t-38.5 -16t-38.5 16t-16 38.5t16 38.5t38.5 16z" />
+<glyph unicode="&#xe142;" d="M546 173l469 470q91 91 99 192q7 98 -52 175.5t-154 94.5q-22 4 -47 4q-34 0 -66.5 -10t-56.5 -23t-55.5 -38t-48 -41.5t-48.5 -47.5q-376 -375 -391 -390q-30 -27 -45 -41.5t-37.5 -41t-32 -46.5t-16 -47.5t-1.5 -56.5q9 -62 53.5 -95t99.5 -33q74 0 125 51l548 548 q36 36 20 75q-7 16 -21.5 26t-32.5 10q-26 0 -50 -23q-13 -12 -39 -38l-341 -338q-15 -15 -35.5 -15.5t-34.5 13.5t-14 34.5t14 34.5q327 333 361 367q35 35 67.5 51.5t78.5 16.5q14 0 29 -1q44 -8 74.5 -35.5t43.5 -68.5q14 -47 2 -96.5t-47 -84.5q-12 -11 -32 -32 t-79.5 -81t-114.5 -115t-124.5 -123.5t-123 -119.5t-96.5 -89t-57 -45q-56 -27 -120 -27q-70 0 -129 32t-93 89q-48 78 -35 173t81 163l511 511q71 72 111 96q91 55 198 55q80 0 152 -33q78 -36 129.5 -103t66.5 -154q17 -93 -11 -183.5t-94 -156.5l-482 -476 q-15 -15 -36 -16t-37 14t-17.5 34t14.5 35z" />
+<glyph unicode="&#xe143;" d="M649 949q48 68 109.5 104t121.5 38.5t118.5 -20t102.5 -64t71 -100.5t27 -123q0 -57 -33.5 -117.5t-94 -124.5t-126.5 -127.5t-150 -152.5t-146 -174q-62 85 -145.5 174t-150 152.5t-126.5 127.5t-93.5 124.5t-33.5 117.5q0 64 28 123t73 100.5t104 64t119 20 t120.5 -38.5t104.5 -104zM896 972q-33 0 -64.5 -19t-56.5 -46t-47.5 -53.5t-43.5 -45.5t-37.5 -19t-36 19t-40 45.5t-43 53.5t-54 46t-65.5 19q-67 0 -122.5 -55.5t-55.5 -132.5q0 -23 13.5 -51t46 -65t57.5 -63t76 -75l22 -22q15 -14 44 -44t50.5 -51t46 -44t41 -35t23 -12 t23.5 12t42.5 36t46 44t52.5 52t44 43q4 4 12 13q43 41 63.5 62t52 55t46 55t26 46t11.5 44q0 79 -53 133.5t-120 54.5z" />
+<glyph unicode="&#xe144;" d="M776.5 1214q93.5 0 159.5 -66l141 -141q66 -66 66 -160q0 -42 -28 -95.5t-62 -87.5l-29 -29q-31 53 -77 99l-18 18l95 95l-247 248l-389 -389l212 -212l-105 -106l-19 18l-141 141q-66 66 -66 159t66 159l283 283q65 66 158.5 66zM600 706l105 105q10 -8 19 -17l141 -141 q66 -66 66 -159t-66 -159l-283 -283q-66 -66 -159 -66t-159 66l-141 141q-66 66 -66 159.5t66 159.5l55 55q29 -55 75 -102l18 -17l-95 -95l247 -248l389 389z" />
+<glyph unicode="&#xe145;" d="M603 1200q85 0 162 -15t127 -38t79 -48t29 -46v-953q0 -41 -29.5 -70.5t-70.5 -29.5h-600q-41 0 -70.5 29.5t-29.5 70.5v953q0 21 30 46.5t81 48t129 37.5t163 15zM300 1000v-700h600v700h-600zM600 254q-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.5z" />
+<glyph unicode="&#xe146;" d="M902 1185l283 -282q15 -15 15 -36t-14.5 -35.5t-35.5 -14.5t-35 15l-36 35l-279 -267v-300l-212 210l-308 -307l-280 -203l203 280l307 308l-210 212h300l267 279l-35 36q-15 14 -15 35t14.5 35.5t35.5 14.5t35 -15z" />
+<glyph unicode="&#xe148;" d="M700 1248v-78q38 -5 72.5 -14.5t75.5 -31.5t71 -53.5t52 -84t24 -118.5h-159q-4 36 -10.5 59t-21 45t-40 35.5t-64.5 20.5v-307l64 -13q34 -7 64 -16.5t70 -32t67.5 -52.5t47.5 -80t20 -112q0 -139 -89 -224t-244 -97v-77h-100v79q-150 16 -237 103q-40 40 -52.5 93.5 t-15.5 139.5h139q5 -77 48.5 -126t117.5 -65v335l-27 8q-46 14 -79 26.5t-72 36t-63 52t-40 72.5t-16 98q0 70 25 126t67.5 92t94.5 57t110 27v77h100zM600 754v274q-29 -4 -50 -11t-42 -21.5t-31.5 -41.5t-10.5 -65q0 -29 7 -50.5t16.5 -34t28.5 -22.5t31.5 -14t37.5 -10 q9 -3 13 -4zM700 547v-310q22 2 42.5 6.5t45 15.5t41.5 27t29 42t12 59.5t-12.5 59.5t-38 44.5t-53 31t-66.5 24.5z" />
+<glyph unicode="&#xe149;" d="M561 1197q84 0 160.5 -40t123.5 -109.5t47 -147.5h-153q0 40 -19.5 71.5t-49.5 48.5t-59.5 26t-55.5 9q-37 0 -79 -14.5t-62 -35.5q-41 -44 -41 -101q0 -26 13.5 -63t26.5 -61t37 -66q6 -9 9 -14h241v-100h-197q8 -50 -2.5 -115t-31.5 -95q-45 -62 -99 -112 q34 10 83 17.5t71 7.5q32 1 102 -16t104 -17q83 0 136 30l50 -147q-31 -19 -58 -30.5t-55 -15.5t-42 -4.5t-46 -0.5q-23 0 -76 17t-111 32.5t-96 11.5q-39 -3 -82 -16t-67 -25l-23 -11l-55 145q4 3 16 11t15.5 10.5t13 9t15.5 12t14.5 14t17.5 18.5q48 55 54 126.5 t-30 142.5h-221v100h166q-23 47 -44 104q-7 20 -12 41.5t-6 55.5t6 66.5t29.5 70.5t58.5 71q97 88 263 88z" />
+<glyph unicode="&#xe150;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM935 1184l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-900h-200v900h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" />
+<glyph unicode="&#xe151;" d="M1000 700h-100v100h-100v-100h-100v500h300v-500zM400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM801 1100v-200h100v200h-100zM1000 350l-200 -250h200v-100h-300v150l200 250h-200v100h300v-150z " />
+<glyph unicode="&#xe152;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1000 1050l-200 -250h200v-100h-300v150l200 250h-200v100h300v-150zM1000 0h-100v100h-100v-100h-100v500h300v-500zM801 400v-200h100v200h-100z " />
+<glyph unicode="&#xe153;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1000 700h-100v400h-100v100h200v-500zM1100 0h-100v100h-200v400h300v-500zM901 400v-200h100v200h-100z" />
+<glyph unicode="&#xe154;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1100 700h-100v100h-200v400h300v-500zM901 1100v-200h100v200h-100zM1000 0h-100v400h-100v100h200v-500z" />
+<glyph unicode="&#xe155;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM900 1000h-200v200h200v-200zM1000 700h-300v200h300v-200zM1100 400h-400v200h400v-200zM1200 100h-500v200h500v-200z" />
+<glyph unicode="&#xe156;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1200 1000h-500v200h500v-200zM1100 700h-400v200h400v-200zM1000 400h-300v200h300v-200zM900 100h-200v200h200v-200z" />
+<glyph unicode="&#xe157;" d="M350 1100h400q162 0 256 -93.5t94 -256.5v-400q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5z" />
+<glyph unicode="&#xe158;" d="M350 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-163 0 -256.5 92.5t-93.5 257.5v400q0 163 94 256.5t256 93.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM440 770l253 -190q17 -12 17 -30t-17 -30l-253 -190q-16 -12 -28 -6.5t-12 26.5v400q0 21 12 26.5t28 -6.5z" />
+<glyph unicode="&#xe159;" d="M350 1100h400q163 0 256.5 -94t93.5 -256v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 163 92.5 256.5t257.5 93.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM350 700h400q21 0 26.5 -12t-6.5 -28l-190 -253q-12 -17 -30 -17t-30 17l-190 253q-12 16 -6.5 28t26.5 12z" />
+<glyph unicode="&#xe160;" d="M350 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -163 -92.5 -256.5t-257.5 -93.5h-400q-163 0 -256.5 94t-93.5 256v400q0 165 92.5 257.5t257.5 92.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM580 693l190 -253q12 -16 6.5 -28t-26.5 -12h-400q-21 0 -26.5 12t6.5 28l190 253q12 17 30 17t30 -17z" />
+<glyph unicode="&#xe161;" d="M550 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h450q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5h-450q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM338 867l324 -284q16 -14 16 -33t-16 -33l-324 -284q-16 -14 -27 -9t-11 26v150h-250q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h250v150q0 21 11 26t27 -9z" />
+<glyph unicode="&#xe162;" d="M793 1182l9 -9q8 -10 5 -27q-3 -11 -79 -225.5t-78 -221.5l300 1q24 0 32.5 -17.5t-5.5 -35.5q-1 0 -133.5 -155t-267 -312.5t-138.5 -162.5q-12 -15 -26 -15h-9l-9 8q-9 11 -4 32q2 9 42 123.5t79 224.5l39 110h-302q-23 0 -31 19q-10 21 6 41q75 86 209.5 237.5 t228 257t98.5 111.5q9 16 25 16h9z" />
+<glyph unicode="&#xe163;" d="M350 1100h400q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-450q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h450q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400 q0 165 92.5 257.5t257.5 92.5zM938 867l324 -284q16 -14 16 -33t-16 -33l-324 -284q-16 -14 -27 -9t-11 26v150h-250q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h250v150q0 21 11 26t27 -9z" />
+<glyph unicode="&#xe164;" d="M750 1200h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -10.5 -25t-24.5 10l-109 109l-312 -312q-15 -15 -35.5 -15t-35.5 15l-141 141q-15 15 -15 35.5t15 35.5l312 312l-109 109q-14 14 -10 24.5t25 10.5zM456 900h-156q-41 0 -70.5 -29.5t-29.5 -70.5v-500 q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v148l200 200v-298q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5h300z" />
+<glyph unicode="&#xe165;" d="M600 1186q119 0 227.5 -46.5t187 -125t125 -187t46.5 -227.5t-46.5 -227.5t-125 -187t-187 -125t-227.5 -46.5t-227.5 46.5t-187 125t-125 187t-46.5 227.5t46.5 227.5t125 187t187 125t227.5 46.5zM600 1022q-115 0 -212 -56.5t-153.5 -153.5t-56.5 -212t56.5 -212 t153.5 -153.5t212 -56.5t212 56.5t153.5 153.5t56.5 212t-56.5 212t-153.5 153.5t-212 56.5zM600 794q80 0 137 -57t57 -137t-57 -137t-137 -57t-137 57t-57 137t57 137t137 57z" />
+<glyph unicode="&#xe166;" d="M450 1200h200q21 0 35.5 -14.5t14.5 -35.5v-350h245q20 0 25 -11t-9 -26l-383 -426q-14 -15 -33.5 -15t-32.5 15l-379 426q-13 15 -8.5 26t25.5 11h250v350q0 21 14.5 35.5t35.5 14.5zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5z M900 200v-50h100v50h-100z" />
+<glyph unicode="&#xe167;" d="M583 1182l378 -435q14 -15 9 -31t-26 -16h-244v-250q0 -20 -17 -35t-39 -15h-200q-20 0 -32 14.5t-12 35.5v250h-250q-20 0 -25.5 16.5t8.5 31.5l383 431q14 16 33.5 17t33.5 -14zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5z M900 200v-50h100v50h-100z" />
+<glyph unicode="&#xe168;" d="M396 723l369 369q7 7 17.5 7t17.5 -7l139 -139q7 -8 7 -18.5t-7 -17.5l-525 -525q-7 -8 -17.5 -8t-17.5 8l-292 291q-7 8 -7 18t7 18l139 139q8 7 18.5 7t17.5 -7zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50 h-100z" />
+<glyph unicode="&#xe169;" d="M135 1023l142 142q14 14 35 14t35 -14l77 -77l-212 -212l-77 76q-14 15 -14 36t14 35zM655 855l210 210q14 14 24.5 10t10.5 -25l-2 -599q-1 -20 -15.5 -35t-35.5 -15l-597 -1q-21 0 -25 10.5t10 24.5l208 208l-154 155l212 212zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5 v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50h-100z" />
+<glyph unicode="&#xe170;" d="M350 1200l599 -2q20 -1 35 -15.5t15 -35.5l1 -597q0 -21 -10.5 -25t-24.5 10l-208 208l-155 -154l-212 212l155 154l-210 210q-14 14 -10 24.5t25 10.5zM524 512l-76 -77q-15 -14 -36 -14t-35 14l-142 142q-14 14 -14 35t14 35l77 77zM50 300h1000q21 0 35.5 -14.5 t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50h-100z" />
+<glyph unicode="&#xe171;" d="M1200 103l-483 276l-314 -399v423h-399l1196 796v-1096zM483 424v-230l683 953z" />
+<glyph unicode="&#xe172;" d="M1100 1000v-850q0 -21 -14.5 -35.5t-35.5 -14.5h-150v400h-700v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200z" />
+<glyph unicode="&#xe173;" d="M1100 1000l-2 -149l-299 -299l-95 95q-9 9 -21.5 9t-21.5 -9l-149 -147h-312v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM1132 638l106 -106q7 -7 7 -17.5t-7 -17.5l-420 -421q-8 -7 -18 -7 t-18 7l-202 203q-8 7 -8 17.5t8 17.5l106 106q7 8 17.5 8t17.5 -8l79 -79l297 297q7 7 17.5 7t17.5 -7z" />
+<glyph unicode="&#xe174;" d="M1100 1000v-269l-103 -103l-134 134q-15 15 -33.5 16.5t-34.5 -12.5l-266 -266h-329v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM1202 572l70 -70q15 -15 15 -35.5t-15 -35.5l-131 -131 l131 -131q15 -15 15 -35.5t-15 -35.5l-70 -70q-15 -15 -35.5 -15t-35.5 15l-131 131l-131 -131q-15 -15 -35.5 -15t-35.5 15l-70 70q-15 15 -15 35.5t15 35.5l131 131l-131 131q-15 15 -15 35.5t15 35.5l70 70q15 15 35.5 15t35.5 -15l131 -131l131 131q15 15 35.5 15 t35.5 -15z" />
+<glyph unicode="&#xe175;" d="M1100 1000v-300h-350q-21 0 -35.5 -14.5t-14.5 -35.5v-150h-500v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM850 600h100q21 0 35.5 -14.5t14.5 -35.5v-250h150q21 0 25 -10.5t-10 -24.5 l-230 -230q-14 -14 -35 -14t-35 14l-230 230q-14 14 -10 24.5t25 10.5h150v250q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe176;" d="M1100 1000v-400l-165 165q-14 15 -35 15t-35 -15l-263 -265h-402v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM935 565l230 -229q14 -15 10 -25.5t-25 -10.5h-150v-250q0 -20 -14.5 -35 t-35.5 -15h-100q-21 0 -35.5 15t-14.5 35v250h-150q-21 0 -25 10.5t10 25.5l230 229q14 15 35 15t35 -15z" />
+<glyph unicode="&#xe177;" d="M50 1100h1100q21 0 35.5 -14.5t14.5 -35.5v-150h-1200v150q0 21 14.5 35.5t35.5 14.5zM1200 800v-550q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v550h1200zM100 500v-200h400v200h-400z" />
+<glyph unicode="&#xe178;" d="M935 1165l248 -230q14 -14 14 -35t-14 -35l-248 -230q-14 -14 -24.5 -10t-10.5 25v150h-400v200h400v150q0 21 10.5 25t24.5 -10zM200 800h-50q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v-200zM400 800h-100v200h100v-200zM18 435l247 230 q14 14 24.5 10t10.5 -25v-150h400v-200h-400v-150q0 -21 -10.5 -25t-24.5 10l-247 230q-15 14 -15 35t15 35zM900 300h-100v200h100v-200zM1000 500h51q20 0 34.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-34.5 -14.5h-51v200z" />
+<glyph unicode="&#xe179;" d="M862 1073l276 116q25 18 43.5 8t18.5 -41v-1106q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v397q-4 1 -11 5t-24 17.5t-30 29t-24 42t-11 56.5v359q0 31 18.5 65t43.5 52zM550 1200q22 0 34.5 -12.5t14.5 -24.5l1 -13v-450q0 -28 -10.5 -59.5 t-25 -56t-29 -45t-25.5 -31.5l-10 -11v-447q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v447q-4 4 -11 11.5t-24 30.5t-30 46t-24 55t-11 60v450q0 2 0.5 5.5t4 12t8.5 15t14.5 12t22.5 5.5q20 0 32.5 -12.5t14.5 -24.5l3 -13v-350h100v350v5.5t2.5 12 t7 15t15 12t25.5 5.5q23 0 35.5 -12.5t13.5 -24.5l1 -13v-350h100v350q0 2 0.5 5.5t3 12t7 15t15 12t24.5 5.5z" />
+<glyph unicode="&#xe180;" d="M1200 1100v-56q-4 0 -11 -0.5t-24 -3t-30 -7.5t-24 -15t-11 -24v-888q0 -22 25 -34.5t50 -13.5l25 -2v-56h-400v56q75 0 87.5 6.5t12.5 43.5v394h-500v-394q0 -37 12.5 -43.5t87.5 -6.5v-56h-400v56q4 0 11 0.5t24 3t30 7.5t24 15t11 24v888q0 22 -25 34.5t-50 13.5 l-25 2v56h400v-56q-75 0 -87.5 -6.5t-12.5 -43.5v-394h500v394q0 37 -12.5 43.5t-87.5 6.5v56h400z" />
+<glyph unicode="&#xe181;" d="M675 1000h375q21 0 35.5 -14.5t14.5 -35.5v-150h-105l-295 -98v98l-200 200h-400l100 100h375zM100 900h300q41 0 70.5 -29.5t29.5 -70.5v-500q0 -41 -29.5 -70.5t-70.5 -29.5h-300q-41 0 -70.5 29.5t-29.5 70.5v500q0 41 29.5 70.5t70.5 29.5zM100 800v-200h300v200 h-300zM1100 535l-400 -133v163l400 133v-163zM100 500v-200h300v200h-300zM1100 398v-248q0 -21 -14.5 -35.5t-35.5 -14.5h-375l-100 -100h-375l-100 100h400l200 200h105z" />
+<glyph unicode="&#xe182;" d="M17 1007l162 162q17 17 40 14t37 -22l139 -194q14 -20 11 -44.5t-20 -41.5l-119 -118q102 -142 228 -268t267 -227l119 118q17 17 42.5 19t44.5 -12l192 -136q19 -14 22.5 -37.5t-13.5 -40.5l-163 -162q-3 -1 -9.5 -1t-29.5 2t-47.5 6t-62.5 14.5t-77.5 26.5t-90 42.5 t-101.5 60t-111 83t-119 108.5q-74 74 -133.5 150.5t-94.5 138.5t-60 119.5t-34.5 100t-15 74.5t-4.5 48z" />
+<glyph unicode="&#xe183;" d="M600 1100q92 0 175 -10.5t141.5 -27t108.5 -36.5t81.5 -40t53.5 -37t31 -27l9 -10v-200q0 -21 -14.5 -33t-34.5 -9l-202 34q-20 3 -34.5 20t-14.5 38v146q-141 24 -300 24t-300 -24v-146q0 -21 -14.5 -38t-34.5 -20l-202 -34q-20 -3 -34.5 9t-14.5 33v200q3 4 9.5 10.5 t31 26t54 37.5t80.5 39.5t109 37.5t141 26.5t175 10.5zM600 795q56 0 97 -9.5t60 -23.5t30 -28t12 -24l1 -10v-50l365 -303q14 -15 24.5 -40t10.5 -45v-212q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v212q0 20 10.5 45t24.5 40l365 303v50 q0 4 1 10.5t12 23t30 29t60 22.5t97 10z" />
+<glyph unicode="&#xe184;" d="M1100 700l-200 -200h-600l-200 200v500h200v-200h200v200h200v-200h200v200h200v-500zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-12l137 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5 t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe185;" d="M700 1100h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-1000h300v1000q0 41 -29.5 70.5t-70.5 29.5zM1100 800h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-700h300v700q0 41 -29.5 70.5t-70.5 29.5zM400 0h-300v400q0 41 29.5 70.5t70.5 29.5h100q41 0 70.5 -29.5t29.5 -70.5v-400z " />
+<glyph unicode="&#xe186;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-100h200v-300h-300v100h200v100h-200v300h300v-100zM900 700v-300l-100 -100h-200v500h200z M700 700v-300h100v300h-100z" />
+<glyph unicode="&#xe187;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 300h-100v200h-100v-200h-100v500h100v-200h100v200h100v-500zM900 700v-300l-100 -100h-200v500h200z M700 700v-300h100v300h-100z" />
+<glyph unicode="&#xe188;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-300h200v-100h-300v500h300v-100zM900 700h-200v-300h200v-100h-300v500h300v-100z" />
+<glyph unicode="&#xe189;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 400l-300 150l300 150v-300zM900 550l-300 -150v300z" />
+<glyph unicode="&#xe190;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM900 300h-700v500h700v-500zM800 700h-130q-38 0 -66.5 -43t-28.5 -108t27 -107t68 -42h130v300zM300 700v-300 h130q41 0 68 42t27 107t-28.5 108t-66.5 43h-130z" />
+<glyph unicode="&#xe191;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-100h200v-300h-300v100h200v100h-200v300h300v-100zM900 300h-100v400h-100v100h200v-500z M700 300h-100v100h100v-100z" />
+<glyph unicode="&#xe192;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM300 700h200v-400h-300v500h100v-100zM900 300h-100v400h-100v100h200v-500zM300 600v-200h100v200h-100z M700 300h-100v100h100v-100z" />
+<glyph unicode="&#xe193;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 500l-199 -200h-100v50l199 200v150h-200v100h300v-300zM900 300h-100v400h-100v100h200v-500zM701 300h-100 v100h100v-100z" />
+<glyph unicode="&#xe194;" d="M600 1191q120 0 229.5 -47t188.5 -126t126 -188.5t47 -229.5t-47 -229.5t-126 -188.5t-188.5 -126t-229.5 -47t-229.5 47t-188.5 126t-126 188.5t-47 229.5t47 229.5t126 188.5t188.5 126t229.5 47zM600 1021q-114 0 -211 -56.5t-153.5 -153.5t-56.5 -211t56.5 -211 t153.5 -153.5t211 -56.5t211 56.5t153.5 153.5t56.5 211t-56.5 211t-153.5 153.5t-211 56.5zM800 700h-300v-200h300v-100h-300l-100 100v200l100 100h300v-100z" />
+<glyph unicode="&#xe195;" d="M600 1191q120 0 229.5 -47t188.5 -126t126 -188.5t47 -229.5t-47 -229.5t-126 -188.5t-188.5 -126t-229.5 -47t-229.5 47t-188.5 126t-126 188.5t-47 229.5t47 229.5t126 188.5t188.5 126t229.5 47zM600 1021q-114 0 -211 -56.5t-153.5 -153.5t-56.5 -211t56.5 -211 t153.5 -153.5t211 -56.5t211 56.5t153.5 153.5t56.5 211t-56.5 211t-153.5 153.5t-211 56.5zM800 700v-100l-50 -50l100 -100v-50h-100l-100 100h-150v-100h-100v400h300zM500 700v-100h200v100h-200z" />
+<glyph unicode="&#xe197;" d="M503 1089q110 0 200.5 -59.5t134.5 -156.5q44 14 90 14q120 0 205 -86.5t85 -207t-85 -207t-205 -86.5h-128v250q0 21 -14.5 35.5t-35.5 14.5h-300q-21 0 -35.5 -14.5t-14.5 -35.5v-250h-222q-80 0 -136 57.5t-56 136.5q0 69 43 122.5t108 67.5q-2 19 -2 37q0 100 49 185 t134 134t185 49zM525 500h150q10 0 17.5 -7.5t7.5 -17.5v-275h137q21 0 26 -11.5t-8 -27.5l-223 -244q-13 -16 -32 -16t-32 16l-223 244q-13 16 -8 27.5t26 11.5h137v275q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="&#xe198;" d="M502 1089q110 0 201 -59.5t135 -156.5q43 15 89 15q121 0 206 -86.5t86 -206.5q0 -99 -60 -181t-150 -110l-378 360q-13 16 -31.5 16t-31.5 -16l-381 -365h-9q-79 0 -135.5 57.5t-56.5 136.5q0 69 43 122.5t108 67.5q-2 19 -2 38q0 100 49 184.5t133.5 134t184.5 49.5z M632 467l223 -228q13 -16 8 -27.5t-26 -11.5h-137v-275q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v275h-137q-21 0 -26 11.5t8 27.5q199 204 223 228q19 19 31.5 19t32.5 -19z" />
+<glyph unicode="&#xe199;" d="M700 100v100h400l-270 300h170l-270 300h170l-300 333l-300 -333h170l-270 -300h170l-270 -300h400v-100h-50q-21 0 -35.5 -14.5t-14.5 -35.5v-50h400v50q0 21 -14.5 35.5t-35.5 14.5h-50z" />
+<glyph unicode="&#xe200;" d="M600 1179q94 0 167.5 -56.5t99.5 -145.5q89 -6 150.5 -71.5t61.5 -155.5q0 -61 -29.5 -112.5t-79.5 -82.5q9 -29 9 -55q0 -74 -52.5 -126.5t-126.5 -52.5q-55 0 -100 30v-251q21 0 35.5 -14.5t14.5 -35.5v-50h-300v50q0 21 14.5 35.5t35.5 14.5v251q-45 -30 -100 -30 q-74 0 -126.5 52.5t-52.5 126.5q0 18 4 38q-47 21 -75.5 65t-28.5 97q0 74 52.5 126.5t126.5 52.5q5 0 23 -2q0 2 -1 10t-1 13q0 116 81.5 197.5t197.5 81.5z" />
+<glyph unicode="&#xe201;" d="M1010 1010q111 -111 150.5 -260.5t0 -299t-150.5 -260.5q-83 -83 -191.5 -126.5t-218.5 -43.5t-218.5 43.5t-191.5 126.5q-111 111 -150.5 260.5t0 299t150.5 260.5q83 83 191.5 126.5t218.5 43.5t218.5 -43.5t191.5 -126.5zM476 1065q-4 0 -8 -1q-121 -34 -209.5 -122.5 t-122.5 -209.5q-4 -12 2.5 -23t18.5 -14l36 -9q3 -1 7 -1q23 0 29 22q27 96 98 166q70 71 166 98q11 3 17.5 13.5t3.5 22.5l-9 35q-3 13 -14 19q-7 4 -15 4zM512 920q-4 0 -9 -2q-80 -24 -138.5 -82.5t-82.5 -138.5q-4 -13 2 -24t19 -14l34 -9q4 -1 8 -1q22 0 28 21 q18 58 58.5 98.5t97.5 58.5q12 3 18 13.5t3 21.5l-9 35q-3 12 -14 19q-7 4 -15 4zM719.5 719.5q-49.5 49.5 -119.5 49.5t-119.5 -49.5t-49.5 -119.5t49.5 -119.5t119.5 -49.5t119.5 49.5t49.5 119.5t-49.5 119.5zM855 551q-22 0 -28 -21q-18 -58 -58.5 -98.5t-98.5 -57.5 q-11 -4 -17 -14.5t-3 -21.5l9 -35q3 -12 14 -19q7 -4 15 -4q4 0 9 2q80 24 138.5 82.5t82.5 138.5q4 13 -2.5 24t-18.5 14l-34 9q-4 1 -8 1zM1000 515q-23 0 -29 -22q-27 -96 -98 -166q-70 -71 -166 -98q-11 -3 -17.5 -13.5t-3.5 -22.5l9 -35q3 -13 14 -19q7 -4 15 -4 q4 0 8 1q121 34 209.5 122.5t122.5 209.5q4 12 -2.5 23t-18.5 14l-36 9q-3 1 -7 1z" />
+<glyph unicode="&#xe202;" d="M700 800h300v-380h-180v200h-340v-200h-380v755q0 10 7.5 17.5t17.5 7.5h575v-400zM1000 900h-200v200zM700 300h162l-212 -212l-212 212h162v200h100v-200zM520 0h-395q-10 0 -17.5 7.5t-7.5 17.5v395zM1000 220v-195q0 -10 -7.5 -17.5t-17.5 -7.5h-195z" />
+<glyph unicode="&#xe203;" d="M700 800h300v-520l-350 350l-550 -550v1095q0 10 7.5 17.5t17.5 7.5h575v-400zM1000 900h-200v200zM862 200h-162v-200h-100v200h-162l212 212zM480 0h-355q-10 0 -17.5 7.5t-7.5 17.5v55h380v-80zM1000 80v-55q0 -10 -7.5 -17.5t-17.5 -7.5h-155v80h180z" />
+<glyph unicode="&#xe204;" d="M1162 800h-162v-200h100l100 -100h-300v300h-162l212 212zM200 800h200q27 0 40 -2t29.5 -10.5t23.5 -30t7 -57.5h300v-100h-600l-200 -350v450h100q0 36 7 57.5t23.5 30t29.5 10.5t40 2zM800 400h240l-240 -400h-800l300 500h500v-100z" />
+<glyph unicode="&#xe205;" d="M650 1100h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5zM1000 850v150q41 0 70.5 -29.5t29.5 -70.5v-800 q0 -41 -29.5 -70.5t-70.5 -29.5h-600q-1 0 -20 4l246 246l-326 326v324q0 41 29.5 70.5t70.5 29.5v-150q0 -62 44 -106t106 -44h300q62 0 106 44t44 106zM412 250l-212 -212v162h-200v100h200v162z" />
+<glyph unicode="&#xe206;" d="M450 1100h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5zM800 850v150q41 0 70.5 -29.5t29.5 -70.5v-500 h-200v-300h200q0 -36 -7 -57.5t-23.5 -30t-29.5 -10.5t-40 -2h-600q-41 0 -70.5 29.5t-29.5 70.5v800q0 41 29.5 70.5t70.5 29.5v-150q0 -62 44 -106t106 -44h300q62 0 106 44t44 106zM1212 250l-212 -212v162h-200v100h200v162z" />
+<glyph unicode="&#xe209;" d="M658 1197l637 -1104q23 -38 7 -65.5t-60 -27.5h-1276q-44 0 -60 27.5t7 65.5l637 1104q22 39 54 39t54 -39zM704 800h-208q-20 0 -32 -14.5t-8 -34.5l58 -302q4 -20 21.5 -34.5t37.5 -14.5h54q20 0 37.5 14.5t21.5 34.5l58 302q4 20 -8 34.5t-32 14.5zM500 300v-100h200 v100h-200z" />
+<glyph unicode="&#xe210;" d="M425 1100h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM425 800h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5 t17.5 7.5zM825 800h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM25 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150 q0 10 7.5 17.5t17.5 7.5zM425 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM825 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5 v150q0 10 7.5 17.5t17.5 7.5zM25 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM425 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5 t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM825 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="&#xe211;" d="M700 1200h100v-200h-100v-100h350q62 0 86.5 -39.5t-3.5 -94.5l-66 -132q-41 -83 -81 -134h-772q-40 51 -81 134l-66 132q-28 55 -3.5 94.5t86.5 39.5h350v100h-100v200h100v100h200v-100zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-12l137 -100 h-950l138 100h-13q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe212;" d="M600 1300q40 0 68.5 -29.5t28.5 -70.5h-194q0 41 28.5 70.5t68.5 29.5zM443 1100h314q18 -37 18 -75q0 -8 -3 -25h328q41 0 44.5 -16.5t-30.5 -38.5l-175 -145h-678l-178 145q-34 22 -29 38.5t46 16.5h328q-3 17 -3 25q0 38 18 75zM250 700h700q21 0 35.5 -14.5 t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-150v-200l275 -200h-950l275 200v200h-150q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe213;" d="M600 1181q75 0 128 -53t53 -128t-53 -128t-128 -53t-128 53t-53 128t53 128t128 53zM602 798h46q34 0 55.5 -28.5t21.5 -86.5q0 -76 39 -183h-324q39 107 39 183q0 58 21.5 86.5t56.5 28.5h45zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13 l138 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe214;" d="M600 1300q47 0 92.5 -53.5t71 -123t25.5 -123.5q0 -78 -55.5 -133.5t-133.5 -55.5t-133.5 55.5t-55.5 133.5q0 62 34 143l144 -143l111 111l-163 163q34 26 63 26zM602 798h46q34 0 55.5 -28.5t21.5 -86.5q0 -76 39 -183h-324q39 107 39 183q0 58 21.5 86.5t56.5 28.5h45 zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13l138 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe215;" d="M600 1200l300 -161v-139h-300q0 -57 18.5 -108t50 -91.5t63 -72t70 -67.5t57.5 -61h-530q-60 83 -90.5 177.5t-30.5 178.5t33 164.5t87.5 139.5t126 96.5t145.5 41.5v-98zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13l138 -100h-950l137 100 h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe216;" d="M600 1300q41 0 70.5 -29.5t29.5 -70.5v-78q46 -26 73 -72t27 -100v-50h-400v50q0 54 27 100t73 72v78q0 41 29.5 70.5t70.5 29.5zM400 800h400q54 0 100 -27t72 -73h-172v-100h200v-100h-200v-100h200v-100h-200v-100h200q0 -83 -58.5 -141.5t-141.5 -58.5h-400 q-83 0 -141.5 58.5t-58.5 141.5v400q0 83 58.5 141.5t141.5 58.5z" />
+<glyph unicode="&#xe218;" d="M150 1100h900q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5zM125 400h950q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-283l224 -224q13 -13 13 -31.5t-13 -32 t-31.5 -13.5t-31.5 13l-88 88h-524l-87 -88q-13 -13 -32 -13t-32 13.5t-13 32t13 31.5l224 224h-289q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM541 300l-100 -100h324l-100 100h-124z" />
+<glyph unicode="&#xe219;" d="M200 1100h800q83 0 141.5 -58.5t58.5 -141.5v-200h-100q0 41 -29.5 70.5t-70.5 29.5h-250q-41 0 -70.5 -29.5t-29.5 -70.5h-100q0 41 -29.5 70.5t-70.5 29.5h-250q-41 0 -70.5 -29.5t-29.5 -70.5h-100v200q0 83 58.5 141.5t141.5 58.5zM100 600h1000q41 0 70.5 -29.5 t29.5 -70.5v-300h-1200v300q0 41 29.5 70.5t70.5 29.5zM300 100v-50q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v50h200zM1100 100v-50q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v50h200z" />
+<glyph unicode="&#xe221;" d="M480 1165l682 -683q31 -31 31 -75.5t-31 -75.5l-131 -131h-481l-517 518q-32 31 -32 75.5t32 75.5l295 296q31 31 75.5 31t76.5 -31zM108 794l342 -342l303 304l-341 341zM250 100h800q21 0 35.5 -14.5t14.5 -35.5v-50h-900v50q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe223;" d="M1057 647l-189 506q-8 19 -27.5 33t-40.5 14h-400q-21 0 -40.5 -14t-27.5 -33l-189 -506q-8 -19 1.5 -33t30.5 -14h625v-150q0 -21 14.5 -35.5t35.5 -14.5t35.5 14.5t14.5 35.5v150h125q21 0 30.5 14t1.5 33zM897 0h-595v50q0 21 14.5 35.5t35.5 14.5h50v50 q0 21 14.5 35.5t35.5 14.5h48v300h200v-300h47q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-50z" />
+<glyph unicode="&#xe224;" d="M900 800h300v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-375v591l-300 300v84q0 10 7.5 17.5t17.5 7.5h375v-400zM1200 900h-200v200zM400 600h300v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-650q-10 0 -17.5 7.5t-7.5 17.5v950q0 10 7.5 17.5t17.5 7.5h375v-400zM700 700h-200v200z " />
+<glyph unicode="&#xe225;" d="M484 1095h195q75 0 146 -32.5t124 -86t89.5 -122.5t48.5 -142q18 -14 35 -20q31 -10 64.5 6.5t43.5 48.5q10 34 -15 71q-19 27 -9 43q5 8 12.5 11t19 -1t23.5 -16q41 -44 39 -105q-3 -63 -46 -106.5t-104 -43.5h-62q-7 -55 -35 -117t-56 -100l-39 -234q-3 -20 -20 -34.5 t-38 -14.5h-100q-21 0 -33 14.5t-9 34.5l12 70q-49 -14 -91 -14h-195q-24 0 -65 8l-11 -64q-3 -20 -20 -34.5t-38 -14.5h-100q-21 0 -33 14.5t-9 34.5l26 157q-84 74 -128 175l-159 53q-19 7 -33 26t-14 40v50q0 21 14.5 35.5t35.5 14.5h124q11 87 56 166l-111 95 q-16 14 -12.5 23.5t24.5 9.5h203q116 101 250 101zM675 1000h-250q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h250q10 0 17.5 7.5t7.5 17.5v50q0 10 -7.5 17.5t-17.5 7.5z" />
+<glyph unicode="&#xe226;" d="M641 900l423 247q19 8 42 2.5t37 -21.5l32 -38q14 -15 12.5 -36t-17.5 -34l-139 -120h-390zM50 1100h106q67 0 103 -17t66 -71l102 -212h823q21 0 35.5 -14.5t14.5 -35.5v-50q0 -21 -14 -40t-33 -26l-737 -132q-23 -4 -40 6t-26 25q-42 67 -100 67h-300q-62 0 -106 44 t-44 106v200q0 62 44 106t106 44zM173 928h-80q-19 0 -28 -14t-9 -35v-56q0 -51 42 -51h134q16 0 21.5 8t5.5 24q0 11 -16 45t-27 51q-18 28 -43 28zM550 727q-32 0 -54.5 -22.5t-22.5 -54.5t22.5 -54.5t54.5 -22.5t54.5 22.5t22.5 54.5t-22.5 54.5t-54.5 22.5zM130 389 l152 130q18 19 34 24t31 -3.5t24.5 -17.5t25.5 -28q28 -35 50.5 -51t48.5 -13l63 5l48 -179q13 -61 -3.5 -97.5t-67.5 -79.5l-80 -69q-47 -40 -109 -35.5t-103 51.5l-130 151q-40 47 -35.5 109.5t51.5 102.5zM380 377l-102 -88q-31 -27 2 -65l37 -43q13 -15 27.5 -19.5 t31.5 6.5l61 53q19 16 14 49q-2 20 -12 56t-17 45q-11 12 -19 14t-23 -8z" />
+<glyph unicode="&#xe227;" d="M625 1200h150q10 0 17.5 -7.5t7.5 -17.5v-109q79 -33 131 -87.5t53 -128.5q1 -46 -15 -84.5t-39 -61t-46 -38t-39 -21.5l-17 -6q6 0 15 -1.5t35 -9t50 -17.5t53 -30t50 -45t35.5 -64t14.5 -84q0 -59 -11.5 -105.5t-28.5 -76.5t-44 -51t-49.5 -31.5t-54.5 -16t-49.5 -6.5 t-43.5 -1v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-100v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-175q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h75v600h-75q-10 0 -17.5 7.5t-7.5 17.5v150 q0 10 7.5 17.5t17.5 7.5h175v75q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-75h100v75q0 10 7.5 17.5t17.5 7.5zM400 900v-200h263q28 0 48.5 10.5t30 25t15 29t5.5 25.5l1 10q0 4 -0.5 11t-6 24t-15 30t-30 24t-48.5 11h-263zM400 500v-200h363q28 0 48.5 10.5 t30 25t15 29t5.5 25.5l1 10q0 4 -0.5 11t-6 24t-15 30t-30 24t-48.5 11h-363z" />
+<glyph unicode="&#xe230;" d="M212 1198h780q86 0 147 -61t61 -147v-416q0 -51 -18 -142.5t-36 -157.5l-18 -66q-29 -87 -93.5 -146.5t-146.5 -59.5h-572q-82 0 -147 59t-93 147q-8 28 -20 73t-32 143.5t-20 149.5v416q0 86 61 147t147 61zM600 1045q-70 0 -132.5 -11.5t-105.5 -30.5t-78.5 -41.5 t-57 -45t-36 -41t-20.5 -30.5l-6 -12l156 -243h560l156 243q-2 5 -6 12.5t-20 29.5t-36.5 42t-57 44.5t-79 42t-105 29.5t-132.5 12zM762 703h-157l195 261z" />
+<glyph unicode="&#xe231;" d="M475 1300h150q103 0 189 -86t86 -189v-500q0 -41 -42 -83t-83 -42h-450q-41 0 -83 42t-42 83v500q0 103 86 189t189 86zM700 300v-225q0 -21 -27 -48t-48 -27h-150q-21 0 -48 27t-27 48v225h300z" />
+<glyph unicode="&#xe232;" d="M475 1300h96q0 -150 89.5 -239.5t239.5 -89.5v-446q0 -41 -42 -83t-83 -42h-450q-41 0 -83 42t-42 83v500q0 103 86 189t189 86zM700 300v-225q0 -21 -27 -48t-48 -27h-150q-21 0 -48 27t-27 48v225h300z" />
+<glyph unicode="&#xe233;" d="M1294 767l-638 -283l-378 170l-78 -60v-224l100 -150v-199l-150 148l-150 -149v200l100 150v250q0 4 -0.5 10.5t0 9.5t1 8t3 8t6.5 6l47 40l-147 65l642 283zM1000 380l-350 -166l-350 166v147l350 -165l350 165v-147z" />
+<glyph unicode="&#xe234;" d="M250 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM650 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM1050 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44z" />
+<glyph unicode="&#xe235;" d="M550 1100q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM550 700q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM550 300q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44z" />
+<glyph unicode="&#xe236;" d="M125 1100h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM125 700h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5 t17.5 7.5zM125 300h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="&#xe237;" d="M350 1200h500q162 0 256 -93.5t94 -256.5v-500q0 -165 -93.5 -257.5t-256.5 -92.5h-500q-165 0 -257.5 92.5t-92.5 257.5v500q0 165 92.5 257.5t257.5 92.5zM900 1000h-600q-41 0 -70.5 -29.5t-29.5 -70.5v-600q0 -41 29.5 -70.5t70.5 -29.5h600q41 0 70.5 29.5 t29.5 70.5v600q0 41 -29.5 70.5t-70.5 29.5zM350 900h500q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -14.5 -35.5t-35.5 -14.5h-500q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 14.5 35.5t35.5 14.5zM400 800v-200h400v200h-400z" />
+<glyph unicode="&#xe238;" d="M150 1100h1000q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5 t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe239;" d="M650 1187q87 -67 118.5 -156t0 -178t-118.5 -155q-87 66 -118.5 155t0 178t118.5 156zM300 800q124 0 212 -88t88 -212q-124 0 -212 88t-88 212zM1000 800q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM300 500q124 0 212 -88t88 -212q-124 0 -212 88t-88 212z M1000 500q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM700 199v-144q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v142q40 -4 43 -4q17 0 57 6z" />
+<glyph unicode="&#xe240;" d="M745 878l69 19q25 6 45 -12l298 -295q11 -11 15 -26.5t-2 -30.5q-5 -14 -18 -23.5t-28 -9.5h-8q1 0 1 -13q0 -29 -2 -56t-8.5 -62t-20 -63t-33 -53t-51 -39t-72.5 -14h-146q-184 0 -184 288q0 24 10 47q-20 4 -62 4t-63 -4q11 -24 11 -47q0 -288 -184 -288h-142 q-48 0 -84.5 21t-56 51t-32 71.5t-16 75t-3.5 68.5q0 13 2 13h-7q-15 0 -27.5 9.5t-18.5 23.5q-6 15 -2 30.5t15 25.5l298 296q20 18 46 11l76 -19q20 -5 30.5 -22.5t5.5 -37.5t-22.5 -31t-37.5 -5l-51 12l-182 -193h891l-182 193l-44 -12q-20 -5 -37.5 6t-22.5 31t6 37.5 t31 22.5z" />
+<glyph unicode="&#xe241;" d="M1200 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-850q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v850h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM500 450h-25q0 15 -4 24.5t-9 14.5t-17 7.5t-20 3t-25 0.5h-100v-425q0 -11 12.5 -17.5t25.5 -7.5h12v-50h-200v50q50 0 50 25v425h-100q-17 0 -25 -0.5t-20 -3t-17 -7.5t-9 -14.5t-4 -24.5h-25v150h500v-150z" />
+<glyph unicode="&#xe242;" d="M1000 300v50q-25 0 -55 32q-14 14 -25 31t-16 27l-4 11l-289 747h-69l-300 -754q-18 -35 -39 -56q-9 -9 -24.5 -18.5t-26.5 -14.5l-11 -5v-50h273v50q-49 0 -78.5 21.5t-11.5 67.5l69 176h293l61 -166q13 -34 -3.5 -66.5t-55.5 -32.5v-50h312zM412 691l134 342l121 -342 h-255zM1100 150v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 35.5 -14.5t14.5 -35.5z" />
+<glyph unicode="&#xe243;" d="M50 1200h1100q21 0 35.5 -14.5t14.5 -35.5v-1100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v1100q0 21 14.5 35.5t35.5 14.5zM611 1118h-70q-13 0 -18 -12l-299 -753q-17 -32 -35 -51q-18 -18 -56 -34q-12 -5 -12 -18v-50q0 -8 5.5 -14t14.5 -6 h273q8 0 14 6t6 14v50q0 8 -6 14t-14 6q-55 0 -71 23q-10 14 0 39l63 163h266l57 -153q11 -31 -6 -55q-12 -17 -36 -17q-8 0 -14 -6t-6 -14v-50q0 -8 6 -14t14 -6h313q8 0 14 6t6 14v50q0 7 -5.5 13t-13.5 7q-17 0 -42 25q-25 27 -40 63h-1l-288 748q-5 12 -19 12zM639 611 h-197l103 264z" />
+<glyph unicode="&#xe244;" d="M1200 1100h-1200v100h1200v-100zM50 1000h400q21 0 35.5 -14.5t14.5 -35.5v-900q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v900q0 21 14.5 35.5t35.5 14.5zM650 1000h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM700 900v-300h300v300h-300z" />
+<glyph unicode="&#xe245;" d="M50 1200h400q21 0 35.5 -14.5t14.5 -35.5v-900q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v900q0 21 14.5 35.5t35.5 14.5zM650 700h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400 q0 21 14.5 35.5t35.5 14.5zM700 600v-300h300v300h-300zM1200 0h-1200v100h1200v-100z" />
+<glyph unicode="&#xe246;" d="M50 1000h400q21 0 35.5 -14.5t14.5 -35.5v-350h100v150q0 21 14.5 35.5t35.5 14.5h400q21 0 35.5 -14.5t14.5 -35.5v-150h100v-100h-100v-150q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v150h-100v-350q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5zM700 700v-300h300v300h-300z" />
+<glyph unicode="&#xe247;" d="M100 0h-100v1200h100v-1200zM250 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM300 1000v-300h300v300h-300zM250 500h900q21 0 35.5 -14.5t14.5 -35.5v-400 q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe248;" d="M600 1100h150q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-150v-100h450q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5h350v100h-150q-21 0 -35.5 14.5 t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5h150v100h100v-100zM400 1000v-300h300v300h-300z" />
+<glyph unicode="&#xe249;" d="M1200 0h-100v1200h100v-1200zM550 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM600 1000v-300h300v300h-300zM50 500h900q21 0 35.5 -14.5t14.5 -35.5v-400 q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe250;" d="M865 565l-494 -494q-23 -23 -41 -23q-14 0 -22 13.5t-8 38.5v1000q0 25 8 38.5t22 13.5q18 0 41 -23l494 -494q14 -14 14 -35t-14 -35z" />
+<glyph unicode="&#xe251;" d="M335 635l494 494q29 29 50 20.5t21 -49.5v-1000q0 -41 -21 -49.5t-50 20.5l-494 494q-14 14 -14 35t14 35z" />
+<glyph unicode="&#xe252;" d="M100 900h1000q41 0 49.5 -21t-20.5 -50l-494 -494q-14 -14 -35 -14t-35 14l-494 494q-29 29 -20.5 50t49.5 21z" />
+<glyph unicode="&#xe253;" d="M635 865l494 -494q29 -29 20.5 -50t-49.5 -21h-1000q-41 0 -49.5 21t20.5 50l494 494q14 14 35 14t35 -14z" />
+<glyph unicode="&#xe254;" d="M700 741v-182l-692 -323v221l413 193l-413 193v221zM1200 0h-800v200h800v-200z" />
+<glyph unicode="&#xe255;" d="M1200 900h-200v-100h200v-100h-300v300h200v100h-200v100h300v-300zM0 700h50q0 21 4 37t9.5 26.5t18 17.5t22 11t28.5 5.5t31 2t37 0.5h100v-550q0 -22 -25 -34.5t-50 -13.5l-25 -2v-100h400v100q-4 0 -11 0.5t-24 3t-30 7t-24 15t-11 24.5v550h100q25 0 37 -0.5t31 -2 t28.5 -5.5t22 -11t18 -17.5t9.5 -26.5t4 -37h50v300h-800v-300z" />
+<glyph unicode="&#xe256;" d="M800 700h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-100v-550q0 -22 25 -34.5t50 -14.5l25 -1v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v550h-100q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h800v-300zM1100 200h-200v-100h200v-100h-300v300h200v100h-200v100h300v-300z" />
+<glyph unicode="&#xe257;" d="M701 1098h160q16 0 21 -11t-7 -23l-464 -464l464 -464q12 -12 7 -23t-21 -11h-160q-13 0 -23 9l-471 471q-7 8 -7 18t7 18l471 471q10 9 23 9z" />
+<glyph unicode="&#xe258;" d="M339 1098h160q13 0 23 -9l471 -471q7 -8 7 -18t-7 -18l-471 -471q-10 -9 -23 -9h-160q-16 0 -21 11t7 23l464 464l-464 464q-12 12 -7 23t21 11z" />
+<glyph unicode="&#xe259;" d="M1087 882q11 -5 11 -21v-160q0 -13 -9 -23l-471 -471q-8 -7 -18 -7t-18 7l-471 471q-9 10 -9 23v160q0 16 11 21t23 -7l464 -464l464 464q12 12 23 7z" />
+<glyph unicode="&#xe260;" d="M618 993l471 -471q9 -10 9 -23v-160q0 -16 -11 -21t-23 7l-464 464l-464 -464q-12 -12 -23 -7t-11 21v160q0 13 9 23l471 471q8 7 18 7t18 -7z" />
+<glyph unicode="&#xf8ff;" d="M1000 1200q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM450 1000h100q21 0 40 -14t26 -33l79 -194q5 1 16 3q34 6 54 9.5t60 7t65.5 1t61 -10t56.5 -23t42.5 -42t29 -64t5 -92t-19.5 -121.5q-1 -7 -3 -19.5t-11 -50t-20.5 -73t-32.5 -81.5t-46.5 -83t-64 -70 t-82.5 -50q-13 -5 -42 -5t-65.5 2.5t-47.5 2.5q-14 0 -49.5 -3.5t-63 -3.5t-43.5 7q-57 25 -104.5 78.5t-75 111.5t-46.5 112t-26 90l-7 35q-15 63 -18 115t4.5 88.5t26 64t39.5 43.5t52 25.5t58.5 13t62.5 2t59.5 -4.5t55.5 -8l-147 192q-12 18 -5.5 30t27.5 12z" />
+<glyph unicode="&#x1f511;" d="M250 1200h600q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-150v-500l-255 -178q-19 -9 -32 -1t-13 29v650h-150q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM400 1100v-100h300v100h-300z" />
+<glyph unicode="&#x1f6aa;" d="M250 1200h750q39 0 69.5 -40.5t30.5 -84.5v-933l-700 -117v950l600 125h-700v-1000h-100v1025q0 23 15.5 49t34.5 26zM500 525v-100l100 20v100z" />
+</font>
+</defs></svg> 
\ No newline at end of file
diff --git a/public/fonts/glyphicons-halflings-regular.ttf b/public/fonts/glyphicons-halflings-regular.ttf
new file mode 100644
index 0000000..1413fc6
--- /dev/null
+++ b/public/fonts/glyphicons-halflings-regular.ttf
Binary files differ
diff --git a/public/fonts/glyphicons-halflings-regular.woff b/public/fonts/glyphicons-halflings-regular.woff
new file mode 100644
index 0000000..9e61285
--- /dev/null
+++ b/public/fonts/glyphicons-halflings-regular.woff
Binary files differ
diff --git a/public/fonts/glyphicons-halflings-regular.woff2 b/public/fonts/glyphicons-halflings-regular.woff2
new file mode 100644
index 0000000..64539b5
--- /dev/null
+++ b/public/fonts/glyphicons-halflings-regular.woff2
Binary files differ
diff --git a/public/index.html b/public/index.html
index 925455c..f6b19b3 100644
--- a/public/index.html
+++ b/public/index.html
@@ -1,14 +1,22 @@
 <!DOCTYPE html>
 <html>
-  <head>
-    <meta charset="utf-8">
-    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
-    <meta name="renderer" content="webkit">
-    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
-    <link rel="icon" href="<%= BASE_URL %>favicon.ico">
-    <title><%= webpackConfig.name %></title>
-    <!--[if lt IE 11]><script>window.location.href='/html/ie.html';</script><![endif]-->
-	  <style>
+
+<head>
+  <meta charset="utf-8">
+  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+  <meta name="renderer" content="webkit">
+  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
+  <link rel="icon" href="<%= BASE_URL %>favicon.ico">
+  <!-- hiprint 鎷栨嫿鍥炬爣闇�瑕� -->
+  <link href="<%= BASE_URL %>css/bootstrap.min.css" rel="stylesheet">
+  <link rel="stylesheet" type="text/css" media="print" href="<%= BASE_URL %>css/print-lock.css">
+
+  <title>
+    <%= webpackConfig.name %>
+  </title>
+  <!--[if lt IE 11]><script>window.location.href='/html/ie.html';</script><![endif]-->
+
+  <style>
     html,
     body,
     #app {
@@ -16,6 +24,7 @@
       margin: 0px;
       padding: 0px;
     }
+
     .chromeframe {
       margin: 0.2em 0;
       background: #ccc;
@@ -92,6 +101,7 @@
         -ms-transform: rotate(0deg);
         transform: rotate(0deg);
       }
+
       100% {
         -webkit-transform: rotate(360deg);
         -ms-transform: rotate(360deg);
@@ -105,6 +115,7 @@
         -ms-transform: rotate(0deg);
         transform: rotate(0deg);
       }
+
       100% {
         -webkit-transform: rotate(360deg);
         -ms-transform: rotate(360deg);
@@ -194,15 +205,17 @@
       opacity: 0.5;
     }
   </style>
-  </head>
-  <body>
-    <div id="app">
-	    <div id="loader-wrapper">
-		    <div id="loader"></div>
-		    <div class="loader-section section-left"></div>
-		    <div class="loader-section section-right"></div>
-		    <div class="load_title">姝e湪鍔犺浇绯荤粺璧勬簮锛岃鑰愬績绛夊緟</div>
-        </div>
-	</div>
-  </body>
-</html>
+</head>
+
+<body>
+  <div id="app">
+    <div id="loader-wrapper">
+      <div id="loader"></div>
+      <div class="loader-section section-left"></div>
+      <div class="loader-section section-right"></div>
+      <div class="load_title">姝e湪鍔犺浇绯荤粺璧勬簮锛岃鑰愬績绛夊緟</div>
+    </div>
+  </div>
+</body>
+
+</html>
\ No newline at end of file
diff --git "a/public/static/printTemplate/\346\265\213\350\257\225.json" "b/public/static/printTemplate/\346\265\213\350\257\225.json"
new file mode 100644
index 0000000..7a831d5
--- /dev/null
+++ "b/public/static/printTemplate/\346\265\213\350\257\225.json"
@@ -0,0 +1,92 @@
+{
+  "panels": [
+    {
+      "index": 0,
+      "name": 1,
+      "height": 80,
+      "width": 100,
+      "paperHeader": 49.5,
+      "paperFooter": 210.1010101010101,
+      "printElements": [
+
+        {
+          "options": {
+            "left": 108,
+            "top": 24,
+            "height": 9.75,
+            "width": 117,
+            "title": "鐗╂枡鍚�: ",
+            "right": 225.0000228881836,
+            "bottom": 33,
+            "vCenter": 166.5000228881836,
+            "hCenter": 28.125,
+            "field": "鐗╂枡鍚嶇О",
+            "testData": "1234",
+            "coordinateSync": false,
+            "widthHeightSync": false,
+            "qrCodeLevel": 0
+          },
+          "printElementType": {
+            "title": "杩欐槸鏇存柊鍚庣殑鍏冪礌",
+            "type": "text"
+          }
+        },
+        {
+          "options": {
+            "left": 22.5,
+            "top": 24,
+            "height": 80,
+            "width": 80,
+            "qrcodeType": "qrcode",
+            "testData": "qrcode",
+            "right": 102.5,
+            "bottom": 103.25,
+            "vCenter": 62.5,
+            "hCenter": 63.25,
+            "field": "鏉$爜缂栧彿",
+            "qrCodeLevel": 3,
+            "coordinateSync": false,
+            "widthHeightSync": false,
+            "hideTitle": true,
+            "title": "浜岀淮鐮�"
+          },
+          "printElementType": {
+            "title": "浜岀淮鐮�",
+            "type": "qrcode"
+          }
+        },
+        {
+          "options": {
+            "left": 22.5,
+            "top": 21,
+            "height": 36,
+            "width": 189,
+            "formatter": "function formatter(data, options) {\n          return '<div\"></div>';\n        }",
+            "right": 211.5000114440918,
+            "bottom": 56.25,
+            "vCenter": 117.0000114440918,
+            "hCenter": 38.25,
+            "coordinateSync": false,
+            "widthHeightSync": false,
+            "showInPage": "none",
+            "pageBreak": true
+          },
+          "printElementType": {
+            "title": "html",
+            "type": "html"
+          }
+        }
+      ],
+      "paperNumberLeft": 253,
+      "paperNumberTop": 204,
+      "paperNumberDisabled": true,
+      "paperNumberContinue": true,
+      "watermarkOptions": {},
+      "panelLayoutOptions": {
+        "layoutType": "column",
+        "layoutRowGap": 0,
+        "layoutColumnGap": 0
+      }
+    }
+  ]
+}
\ No newline at end of file
diff --git a/src/api/login.js b/src/api/login.js
index 43a80bd..8101d33 100644
--- a/src/api/login.js
+++ b/src/api/login.js
@@ -11,7 +11,7 @@
     // url: '/Web/GetUser?UserName=001&PassWord=123456&HOrgName=100038',
     url: '/Web/GetUser',
     headers: {
-      isToken: false,
+      isToken: true,
       repeatSubmit: false
     },
     method: 'get',
diff --git a/src/assets/hi.png b/src/assets/hi.png
new file mode 100644
index 0000000..b9c7585
--- /dev/null
+++ b/src/assets/hi.png
Binary files differ
diff --git a/src/assets/logo.png b/src/assets/logo.png
new file mode 100644
index 0000000..f3d2503
--- /dev/null
+++ b/src/assets/logo.png
Binary files differ
diff --git a/src/hiprint/css/hiprint.css b/src/hiprint/css/hiprint.css
new file mode 100644
index 0000000..1c3fa72
--- /dev/null
+++ b/src/hiprint/css/hiprint.css
@@ -0,0 +1,997 @@
+.hiprint-printPaper.design.grid {
+  background-image: linear-gradient(90deg, rgba(0, 0, 0, 0.1) 3%, rgba(0, 0, 0, 0) 3%), linear-gradient(360deg, rgba(0, 0, 0, 0.1) 3%, rgba(0, 0, 0, 0) 3%);
+  background-size: 5mm 5mm;
+  background-position: left top;
+}
+
+.horLine {
+  position: absolute;
+  border: 0;
+  border-top: 1px solid rgb(241, 110, 110);
+}
+.verLine {
+  position: absolute;
+  border: 0;
+  border-left: 1px solid rgb(241, 110, 110);
+}
+
+/* 鎷栨嫿鏃跺厓绱犺緟鍔╃嚎 */
+.toplineOfPosition, .bottomlineOfPosition {
+  border: 0;
+  border-top: 1px dashed  rgb(169, 169, 169);
+}
+.leftlineOfPosition, .rightlineOfPosition {
+  border: 0;
+  border-left: 1px dashed  rgb(169, 169, 169);
+}
+
+/* 鎷栨嫿鏃剁殑鍧愭爣浣嶇疆 */
+.topPosition {
+  background: red;
+  color: white;
+  border-radius: 20rem;
+  min-width: 10px;
+  padding: 0 2px;
+  font-size: 12px;
+  line-height: normal;
+  z-index: 9;
+}
+.topPosition-lineMode {
+  color: red;
+  background: unset;
+  line-height: normal;
+  z-index: 9;
+}
+.leftPosition {
+  background: red;
+  color: white;
+  border-radius: 20rem;
+  min-width: 10px;
+  padding: 0 2px;
+  font-size: 12px;
+  line-height: normal;
+  z-index: 9;
+}
+.leftPosition-lineMode {
+  color: red;
+  background: unset;
+  line-height: normal;
+  z-index: 9;
+}
+
+/* 鍏冪礌濮嬬粓闅愯棌 */
+.alwaysHide {
+  background-color: gray !important;
+}
+
+/* 鍏冪礌瀹介珮 */
+.resize-panel .size-box {
+  border: 1px solid;
+  min-height: 19px;
+  padding: 0px 4px;
+  background: red;
+  color: white;
+  font-size: 12px;
+  border-radius: 6px 6px 0 0;
+  white-space: nowrap;
+  line-height: normal;
+  font-family: unset;
+  letter-spacing: normal;
+  z-index: 9;
+}
+.hiprint-printElement:not(.editing):hover .resize-panel {
+  display: block !important;
+  /* hover 寮哄埗鑳屾櫙鑹� 鍙噸鍐� */
+  background-color: rgba(0, 0, 0, 0.5) !important;
+}
+.hiprint-printElement:hover .resize-panel .resizebtn {
+  display: none;
+}
+.hiprint-printElement:hover .resize-panel.selected .resizebtn {
+  display: block;
+}
+.hiprint-printElement.design .del-btn {
+    position: absolute;
+    visibility: hidden;
+    z-index: 10;
+    width: 16px;
+    height: 16px;
+    line-height: 12px;
+    top: -8px;
+    right: -8px;
+    border-radius: 50%;
+    padding: 2px;
+    background: red;
+    color: white;
+    font-size: 12px;
+    box-sizing: border-box;
+    cursor: pointer;
+    text-align: center;
+}
+.hiprint-printElement.design:hover .del-btn {
+  visibility: visible;
+}
+.resize-panel .size-box .hide {
+  display: none;
+}
+
+/* 鍙傛暟tab */
+.prop-tabs {
+  background-color: #FFF;
+  border-style: none;
+  box-shadow: none;
+  border-color: #e6e6e6;
+}
+.prop-tabs .prop-tab-items {
+  height: 31px;
+  line-height: 31px;
+  padding: 2px 0 1px 2px;
+  list-style: none;
+  outline: 0;
+  border: 0;
+  text-decoration: none;
+  font-size: 100%;
+  margin: 0;
+  border-bottom: 1px solid #ddd;
+  /*box-shadow: 0 1px 3px rgba(26, 26, 26, .1);*/
+  box-sizing: content-box;
+}
+.prop-tabs .prop-tab-items .prop-tab-item {
+  background-color: #FFF;
+  border-radius: 0;
+  padding: 0;
+  margin: 0 -1px 0 0;
+  display: inline-block;
+  cursor: pointer;
+  list-style-type: none;
+}
+
+.prop-tabs .prop-tab-items .prop-tab-item .tab-title {
+  height: 30px;
+  line-height: 30px;
+  padding: 0 10px;
+  font-weight: bold;
+  font-size: 14px;
+}
+
+.prop-tabs .prop-tab-items li.active {
+  border: none;
+  border-bottom: 2px solid #2196f3;
+  color: #2196f3;
+  height: 31px;
+  line-height: 30px;
+}
+
+.prop-tabs .hiprint-option-items.active {
+  display: flex;
+}
+
+.prop-tabs .hiprint-option-items {
+  display: none;
+  margin-top: 1px;
+  border: none;
+  background-color: #FFF;
+  overflow: auto;
+  /*height: calc(100vh - 150px);*/
+  padding: 0;
+}
+/* 鍏冪礌鍙屽嚮缂栬緫 */
+.design .editing {
+  border: 1px solid red !important;
+}
+
+/* hiprint-pagination */
+.hiprint-pagination {
+    display: inline-block;
+    padding-left: 0;
+}
+    .hiprint-pagination > li {
+        border: 1px solid #bdc3c7;
+        -moz-border-radius: 2px;
+        -webkit-border-radius: 2px;
+        display: block;
+        float: left;
+        padding: 5px;
+        text-decoration: none;
+        margin-right: 5px;
+        margin-bottom: 5px;
+        font-family: helvetica;
+        font-size: 13px;
+        cursor: pointer
+    }
+
+        .hiprint-pagination > li > span {
+            padding: 0 10px 0 10px;
+        }
+
+        .hiprint-pagination > li > a {
+            color: #bdc3c7;
+            font-weight: bold;
+            text-decoration: none;
+            font-size: 11px;
+            padding: 3px;
+        }
+
+            .hiprint-pagination > li > a:hover {
+                color: red;
+            }
+
+.hiprint-pagination .selected {
+  border: #2196f3 1px solid;
+}
+
+
+.hiprint-pagination-sm > li > a {
+    padding: 5px 10px;
+    font-size: 12px;
+    line-height: 1.5;
+}
+/*rect-printElement-type hiprint-printElement-type */
+.rect-printElement-types .hiprint-printElement-type {
+    display: block;
+}
+
+.rect-printElement-types .hiprint-printElement-type {
+    padding: 0 0 0 0;
+    list-style: none;
+}
+
+    .rect-printElement-types .hiprint-printElement-type > li > .title {
+        display: block;
+        padding: 4px 0px;
+        clear: both;
+    }
+
+    .rect-printElement-types .hiprint-printElement-type > li > ul {
+        padding: 0 0 0 0;
+        display: block;
+        list-style: none;
+    }
+
+        .rect-printElement-types .hiprint-printElement-type > li > ul > li {
+            display: block;
+            width: 50%;
+            float: left;
+            max-width: 100px;
+        }
+
+            .rect-printElement-types .hiprint-printElement-type > li > ul > li > a {
+                height: 92px;
+                padding: 12px 6px;
+                margin-left: -1px;
+                line-height: 1.42857143;
+                color: #337ab7;
+                text-decoration: none;
+                background-color: #fff;
+                border: 1px solid #ddd;
+                margin-right: 5px;
+                width: 95%;
+                max-width: 100px;
+                display: inline-block;
+                text-align: center;
+                margin-bottom: 7px;
+                box-sizing: border-box;
+                color: #b9a5a6;
+                border: 1px solid rgba(0,0,0,0.2);
+                border-radius: 3px;
+                box-shadow: 0 1px 0 0 rgba(0,0,0,0.15);
+            }
+
+
+/*small-printElement-type hiprint-printElement-type */
+.small-printElement-types .hiprint-printElement-type {
+    display: block;
+}
+
+.small-printElement-types .hiprint-printElement-type {
+    padding: 0 0 0 0;
+    list-style: none;
+}
+
+    .small-printElement-types .hiprint-printElement-type > li > .title {
+        display: block;
+        padding: 4px 0px;
+        clear: both;
+    }
+
+    .small-printElement-types .hiprint-printElement-type > li > ul {
+        padding: 0 0 0 0;
+        display: block;
+        list-style: none;
+        width: 100%;
+    }
+
+        .small-printElement-types .hiprint-printElement-type > li > ul > li {
+            display: block;
+            width: 50%;
+            float: left;
+            padding: 0 4px;
+        }
+
+            .small-printElement-types .hiprint-printElement-type > li > ul > li > a {
+                height: 22px;
+                /* padding: 12px 6px; */
+                /* margin-left: -1px; */
+                line-height: 20px;
+                color: #337ab7;
+                text-decoration: none;
+                background-color: #fff;
+                border: 1px solid #ddd;
+                margin-right: 5px;
+                width: 100%;
+                display: block;
+                text-align: center;
+                margin-bottom: 7px;
+                box-sizing: border-box;
+                color: #b9a5a6;
+                border: 1px solid rgba(0,0,0,0.2);
+                border-radius: 3px;
+                box-shadow: 0 1px 0 0 rgba(0,0,0,0.15);
+            }
+
+
+/* hiprint-toolbar*/
+
+.hiprint-toolbar {
+}
+
+    .hiprint-toolbar > ul {
+        padding: 0px;
+        margin-bottom: 5px;
+    }
+
+        .hiprint-toolbar > ul > li {
+            display: inline-block;
+        }
+
+            .hiprint-toolbar > ul > li > a {
+                position: relative;
+                float: left;
+                padding: 3px 10px;
+                margin-left: -1px;
+                line-height: 1.42857143;
+                color: #337ab7;
+                text-decoration: none;
+                background-color: #fff;
+                border: 1px solid #ddd;
+                margin-right: 4px;
+                cursor: pointer;
+            }
+
+
+.hiprint-printElement-type .glyphicon-class {
+    display: block;
+    text-align: center;
+    word-wrap: break-word;
+    /*font-size: 0.65rem;
+font-weight: normal;*/
+    font-family: Helvetica, sans-serif;
+}
+
+.hiprint-printElement-type .glyphicon {
+    margin-top: 5px;
+    margin-bottom: 10px;
+    font-size: 37px;
+}
+
+
+/*
+
+
+*/
+
+/*option css*/
+/*option css*/
+.hiprint-option-items {
+    padding: 10px 5px;
+    display: flex;
+    flex-wrap: wrap;
+    align-items: flex-end;
+    box-sizing: border-box;
+    width: 100%;
+}
+
+    .hiprint-option-items .hiprint-option-item {
+        box-sizing: border-box;
+        float: left;
+        width: 50%;
+        margin-bottom: 5px;
+        padding: 0 5px;
+    }
+
+    .hiprint-option-items .hiprint-option-item-row {
+        width: 100%;
+    }
+
+.hiprint-option-item-label {
+    margin: 5px 5px 3px 0;
+}
+
+.hiprint-option-items .hiprint-option-item-field input, .hiprint-option-items .hiprint-option-item-field select, .hiprint-option-items .hiprint-option-item-field textarea {
+    color: inherit;
+    background-color: transparent;
+    box-sizing: border-box;
+    width: 100%;
+    position: relative;
+    padding: 3px;
+    z-index: 1;
+    border: 1px solid rgb(169, 169, 169);
+    height: 19pt;
+}
+
+.hiprint-option-item-settingBtn {
+    height: 19pt;
+    line-height: 19pt;
+    font-size: 12px;
+    padding: 0 24px;
+    background: #00c1de;
+    border-color: transparent;
+    color: #fff;
+    display: inline-block;
+    margin: 5px;
+    font-weight: 400;
+    border: 1px solid transparent;
+    font-family: PingFangSC, helvetica neue, hiragino sans gb, arial, microsoft yahei ui, microsoft yahei, simsun, "sans-serif";
+    vertical-align: middle;
+    transition: .3s cubic-bezier(.4, 0, .2, 1);
+    transform: translateZ(0);
+}
+
+.hiprint-option-item-deleteBtn {
+    background: red;
+}
+
+.hiprint-option-items .minicolors {
+    position: relative;
+}
+
+.hiprint-option-items .minicolors-sprite {
+    background-image: url(./image/jquery.minicolors.png);
+}
+
+.hiprint-option-items .minicolors-swatch {
+    position: absolute;
+    vertical-align: middle;
+    background-position: -80px 0;
+    cursor: text;
+    padding: 0;
+    margin: 0;
+    display: inline-block;
+}
+
+.hiprint-option-items .minicolors-swatch-color {
+    position: absolute;
+    top: 0;
+    left: 0;
+    right: 0;
+    bottom: 0;
+}
+
+.hiprint-option-items .minicolors input[type=hidden] + .minicolors-swatch {
+    width: 28px;
+    position: static;
+    cursor: pointer;
+}
+
+.hiprint-option-items .minicolors input[type=hidden][disabled] + .minicolors-swatch {
+    cursor: default;
+}
+
+/* Panel */
+.hiprint-option-items .minicolors-panel {
+    position: absolute;
+    width: 173px;
+    background: white;
+    border: solid 1px #CCC;
+    box-shadow: 0 0 20px rgba(0, 0, 0, .2);
+    z-index: 99999;
+    box-sizing: content-box;
+    display: none;
+}
+
+    .hiprint-option-items .minicolors-panel.minicolors-visible {
+        display: block;
+    }
+
+/* Panel positioning */
+.hiprint-option-items .minicolors-position-top .minicolors-panel {
+    top: -154px;
+}
+
+.hiprint-option-items .minicolors-position-right .minicolors-panel {
+    right: 0;
+}
+
+.hiprint-option-items .minicolors-position-bottom .minicolors-panel {
+    top: auto;
+}
+
+.hiprint-option-items .minicolors-position-left .minicolors-panel {
+    left: 0;
+}
+
+.hiprint-option-items .minicolors-with-opacity .minicolors-panel {
+    width: 194px;
+}
+
+.hiprint-option-items .minicolors .minicolors-grid {
+    position: relative;
+    top: 1px;
+    left: 1px; /* LTR */
+    width: 150px;
+    height: 150px;
+    margin-bottom: 2px;
+    background-position: -120px 0;
+    cursor: crosshair;
+}
+
+.hiprint-option-items .minicolors .minicolors-grid-inner {
+    position: absolute;
+    top: 0;
+    left: 0;
+    width: 150px;
+    height: 150px;
+}
+
+.hiprint-option-items .minicolors-slider-saturation .minicolors-grid {
+    background-position: -420px 0;
+}
+
+.hiprint-option-items .minicolors-slider-saturation .minicolors-grid-inner {
+    background-position: -270px 0;
+    background-image: inherit;
+}
+
+.hiprint-option-items .minicolors-slider-brightness .minicolors-grid {
+    background-position: -570px 0;
+}
+
+.hiprint-option-items .minicolors-slider-brightness .minicolors-grid-inner {
+    background-color: black;
+}
+
+.hiprint-option-items .minicolors-slider-wheel .minicolors-grid {
+    background-position: -720px 0;
+}
+
+.hiprint-option-items .minicolors-slider,
+.hiprint-option-items .minicolors-opacity-slider {
+    position: absolute;
+    top: 1px;
+    left: 152px; /* LTR */
+    width: 20px;
+    height: 150px;
+    background-color: white;
+    background-position: 0 0;
+    cursor: row-resize;
+}
+
+.hiprint-option-items .minicolors-slider-saturation .minicolors-slider {
+    background-position: -60px 0;
+}
+
+.hiprint-option-items .minicolors-slider-brightness .minicolors-slider {
+    background-position: -20px 0;
+}
+
+.hiprint-option-items .minicolors-slider-wheel .minicolors-slider {
+    background-position: -20px 0;
+}
+
+.hiprint-option-items .minicolors-opacity-slider {
+    left: 173px; /* LTR */
+    background-position: -40px 0;
+    display: none;
+}
+
+
+.hiprint-option-items .minicolors-with-opacity .minicolors-opacity-slider {
+    display: block;
+}
+
+/* Pickers */
+.hiprint-option-items .minicolors-grid .minicolors-picker {
+    position: absolute;
+    top: 70px;
+    left: 70px;
+    width: 12px;
+    height: 12px;
+    border: solid 1px black;
+    border-radius: 10px;
+    margin-top: -6px;
+    margin-left: -6px;
+    background: none;
+}
+
+    .hiprint-option-items .minicolors-grid .minicolors-picker > div {
+        position: absolute;
+        top: 0;
+        left: 0;
+        width: 8px;
+        height: 8px;
+        border-radius: 8px;
+        border: solid 2px white;
+        box-sizing: content-box;
+    }
+
+.hiprint-option-items .minicolors-picker {
+    position: absolute;
+    top: 0;
+    left: 0;
+    width: 18px;
+    height: 2px;
+    background: white;
+    border: solid 1px black;
+    margin-top: -2px;
+    box-sizing: content-box;
+}
+
+/* Swatches */
+.hiprint-option-items .minicolors-swatches,
+.hiprint-option-items .minicolors-swatches li {
+    margin: 5px 0 3px 5px; /* LTR */
+    padding: 0;
+    list-style: none;
+    overflow: hidden;
+}
+
+    .hiprint-option-items .minicolors-swatches .minicolors-swatch {
+        position: relative;
+        float: left; /* LTR */
+        cursor: pointer;
+        margin: 0 4px 0 0; /* LTR */
+    }
+
+
+.hiprint-option-items .minicolors-with-opacity .minicolors-swatches .minicolors-swatch {
+    margin-right: 7px; /* LTR */
+}
+
+
+.hiprint-option-items .minicolors-swatch.selected {
+    border-color: #000;
+}
+
+/* Inline controls */
+.hiprint-option-items .minicolors-inline {
+    display: inline-block;
+}
+
+    .hiprint-option-items .minicolors-inline .minicolors-input {
+        display: none !important;
+    }
+
+    .hiprint-option-items .minicolors-inline .minicolors-panel {
+        position: relative;
+        top: auto;
+        left: auto; /* LTR */
+        box-shadow: none;
+        z-index: auto;
+        display: inline-block;
+    }
+
+
+
+/* Bootstrap theme */
+.hiprint-option-items .minicolors-theme-bootstrap .minicolors-swatch {
+    z-index: 2;
+    top: 3px;
+    left: 3px;
+    width: 17px;
+    height: 17px;
+}
+
+.hiprint-option-items .minicolors-theme-bootstrap .minicolors-swatches .minicolors-swatch {
+    margin-bottom: 2px;
+    top: 0;
+    left: 0; /* LTR */
+    width: 20px;
+    height: 20px;
+}
+
+.hiprint-option-items .minicolors-theme-bootstrap .minicolors-swatch-color {
+    border-radius: inherit;
+}
+
+.hiprint-option-items .minicolors-theme-bootstrap.minicolors-position-right > .minicolors-swatch {
+    left: auto; /* LTR */
+    right: 3px; /* LTR */
+}
+
+.hiprint-option-items .minicolors-theme-bootstrap .minicolors-input {
+    float: none;
+    padding-left: 23px; /* LTR */
+}
+
+.hiprint-option-items .minicolors-theme-bootstrap.minicolors-position-right .minicolors-input {
+    padding-right: 44px; /* LTR */
+    padding-left: 12px; /* LTR */
+}
+
+.hiprint-option-items .minicolors-theme-bootstrap .minicolors-input.input-lg + .minicolors-swatch {
+    top: 4px;
+    left: 4px; /* LTR */
+    width: 37px;
+    height: 37px;
+    border-radius: 5px;
+}
+
+.hiprint-option-items .minicolors-theme-bootstrap .minicolors-input.input-sm + .minicolors-swatch {
+    width: 24px;
+    height: 24px;
+}
+
+.hiprint-option-items .minicolors-theme-bootstrap .minicolors-input.input-xs + .minicolors-swatch {
+    width: 18px;
+    height: 18px;
+}
+
+.hiprint-option-items .input-group .minicolors-theme-bootstrap:not(:first-child) .minicolors-input {
+    border-top-left-radius: 0; /* LTR */
+    border-bottom-left-radius: 0; /* LTR */
+}
+
+
+
+/*hitable reizer*/
+.hitable {
+}
+
+
+
+    .hitable .selected {
+        background: #3e66ad;
+    }
+
+
+    /*resizer*/
+    .hitable tr.resizerRow,
+    .hitable .resizerRow td {
+        border: 0pt dashed;
+        height: 0pt;
+        background: #fff;
+    }
+
+        .hitable tr.resizerRow + tr,
+        .hitable tr.resizerRow + tr td {
+            border-top: 0px !important;
+        }
+
+    .hitable td.resizerColumn {
+        border: 0pt dashed;
+        width: 0.000001px !important;
+        background: #fff;
+    }
+
+
+        .hitable td.resizerColumn + td {
+            border-left: 0px !important;
+        }
+
+
+/*GRIP*/
+
+.columngrips {
+    height: 0px;
+    position: absolute;
+}
+
+.columngrip {
+    margin-left: -5px;
+    position: absolute;
+    z-index: 5;
+    width: 10px;
+}
+
+    .columngrip .gripResizer {
+        position: absolute;
+        filter: alpha(opacity=1);
+        opacity: 0;
+        width: 10px;
+        height: 100%;
+        cursor: col-resize;
+        top: 0px;
+    }
+
+.columngripDraging {
+    border-left: 1px dotted black;
+}
+
+.rowgrips {
+    height: 0px;
+    width: 0px;
+    position: absolute;
+}
+
+.rowgrip {
+    margin-top: -5px;
+    position: absolute;
+    z-index: 5;
+    height: 10px;
+}
+
+    .rowgrip .gripResizer {
+        position: absolute;
+        filter: alpha(opacity=1);
+        opacity: 0;
+        height: 10px;
+        width: 100%;
+        cursor: row-resize;
+        left: 0px;
+    }
+
+.rowgripDraging {
+    border-top: 1px dotted black;
+}
+
+.hitable .hitable-editor-text {
+    border: 1px solid;
+    width: 95%;
+    height: 80%;
+}
+
+
+
+
+.hipanel-disable {
+    height: 0px;
+    display: block !important;
+    top: 8500px;
+    width: 0px;
+    overflow: hidden;
+    position: absolute;
+}
+
+.hiprint_rul_wrapper {
+    position: absolute;
+    height: 100%;
+    width: 100%;
+    overflow: hidden;
+    pointer-events: none;
+    border: 0;
+    border-top: 1px solid rgb(201, 190, 190);
+    border-left: 1px solid rgb(201, 190, 190);
+    padding-left: 15px;
+	padding-top:15px;
+    margin: -16px;
+	box-sizing: content-box!important;
+}
+
+    .hiprint_rul_wrapper .h_img {
+        position: absolute;
+        top: 0px;
+        left: 15px;
+        width: 400mm;
+        height: 15px;
+        max-width: none;
+    }
+
+    .hiprint_rul_wrapper .v_img {
+        width: 400mm;
+        max-width: none;
+        transform: rotate(90deg);
+        transform-origin: 0 100%;
+        height: 15px;
+        position: absolute;
+        top: -2px;
+        left: 0px;
+    }
+
+/*hiprint-option-table*/
+
+.hiprint-option-table-selected-columns {
+    color: inherit;
+    background-color: transparent;
+    box-sizing: border-box;
+    width: 100%;
+    position: relative;
+    padding: 0px;
+    list-style: none;
+}
+
+    .hiprint-option-table-selected-columns .hiprint-option-table-selected-item {
+        color: inherit;
+        background-color: transparent;
+        box-sizing: border-box;
+        width: 100%;
+        padding: 0 3px;
+        border: 1px solid rgb(169, 169, 169);
+        line-height: 19pt;
+        margin: 3px 0;
+    }
+    .hiprint-option-table-selected-columns .hiprint-option-table-selected-item .column-title {
+      display: inline-block;
+      min-width: calc(100% - 3rem);
+    }
+/*hi-pretty */
+.hi-pretty * {
+    box-sizing: border-box;
+}
+
+.hi-pretty input:not([type='checkbox']):not([type='radio']) {
+    display: none;
+}
+
+.hi-pretty {
+    position: relative;
+    display: inline-block;
+    margin-right: 1em;
+    white-space: nowrap;
+    line-height: 1;
+}
+
+    .hi-pretty input {
+        position: absolute;
+        left: 0;
+        top: 0;
+        min-width: 1em;
+        width: 100%;
+        height: 100%;
+        z-index: 2;
+        opacity: 0;
+        margin: 0;
+        padding: 0;
+        cursor: pointer;
+    }
+
+    .hi-pretty .state label {
+        position: initial;
+        display: inline-block;
+        font-weight: normal;
+        margin: 0;
+        text-indent: 1.5em;
+        min-width: calc(1em + 2px);
+    }
+
+        .hi-pretty .state label:before,
+        .hi-pretty .state label:after {
+            content: '';
+            width: calc(1em + 2px);
+            height: calc(1em + 2px);
+            display: block;
+            box-sizing: border-box;
+            border-radius: 0;
+            border: 1px solid transparent;
+            z-index: 0;
+            position: absolute;
+            left: 0;
+            top: 0;
+            background-color: transparent;
+        }
+
+        .hi-pretty .state label:before {
+            border-color: #bdc3c7;
+        }
+
+    .hi-pretty .state.p-is-hover,
+    .hi-pretty .state.p-is-indeterminate {
+        display: none;
+    }
+
+
+    .hi-pretty.p-default.p-fill .state label:after {
+        -webkit-transform: scale(1);
+        -ms-transform: scale(1);
+        transform: scale(1);
+    }
+
+    .hi-pretty.p-default .state label:after {
+        -webkit-transform: scale(0.6);
+        -ms-transform: scale(0.6);
+        transform: scale(0.6);
+    }
+
+    .hi-pretty.p-default input:checked ~ .state label:after {
+        background-color: #bdc3c7 !important;
+    }
+
+    .hi-pretty.p-default.p-thick .state label:before,
+    .hi-pretty.p-default.p-thick .state label:after {
+        border-width: calc(1em / 7);
+    }
+
+    .hi-pretty.p-default.p-thick .state label:after {
+        -webkit-transform: scale(0.4) !important;
+        -ms-transform: scale(0.4) !important;
+        transform: scale(0.4) !important;
+    }
diff --git a/src/hiprint/css/image/jquery.minicolors.png b/src/hiprint/css/image/jquery.minicolors.png
new file mode 100644
index 0000000..bccc201
--- /dev/null
+++ b/src/hiprint/css/image/jquery.minicolors.png
Binary files differ
diff --git a/src/hiprint/css/image/l_img.svg b/src/hiprint/css/image/l_img.svg
new file mode 100644
index 0000000..75e4793
--- /dev/null
+++ b/src/hiprint/css/image/l_img.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg style = "position:absolute;top:0;left:0" width="100%" height="15px" viewBox="0 0 2954 15" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g  stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g ><g ><line x1="0.5" y1="-10" x2="0.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="8.5" y1="10" x2="8.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="30.5" y1="10" x2="30.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="51.5" y1="10" x2="51.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="15.5" y1="10" x2="15.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="37.5" y1="10" x2="37.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="59.5" y1="10" x2="59.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="23.5" y1="10" x2="23.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="45.5" y1="10" x2="45.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="67.5" y1="10" x2="67.5" y2="37"  stroke="#000" stroke-linecap="round"></line><text id="80"  font-size="18"   fill="#000"><tspan x="1" y="8">0</tspan></text></g><g  transform="translate(592, 0)"><line x1="0.5" y1="-10" x2="0.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="8.5" y1="10" x2="8.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="30.5" y1="10" x2="30.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="51.5" y1="10" x2="51.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="15.5" y1="10" x2="15.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="37.5" y1="10" x2="37.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="59.5" y1="10" x2="59.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="23.5" y1="10" x2="23.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="45.5" y1="10" x2="45.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="67.5" y1="10" x2="67.5" y2="37"  stroke="#000" stroke-linecap="round"></line><text id="80"  font-size="18"  fill="#000"><tspan x="1" y="8">80</tspan></text></g><g  transform="translate(1184, 0)"><line x1="0.5" y1="-10" x2="0.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="8.5" y1="10" x2="8.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="30.5" y1="10" x2="30.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="51.5" y1="10" x2="51.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="15.5" y1="10" x2="15.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="37.5" y1="10" x2="37.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="59.5" y1="10" x2="59.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="23.5" y1="10" x2="23.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="45.5" y1="10" x2="45.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="67.5" y1="10" x2="67.5" y2="37"  stroke="#000" stroke-linecap="round"></line><text id="160"  font-size="18"  fill="#000"><tspan x="1" y="8">160</tspan></text></g><g  transform="translate(1776, 0)"><line x1="0.5" y1="-10" x2="0.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="8.5" y1="10" x2="8.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="30.5" y1="10" x2="30.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="51.5" y1="10" x2="51.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="15.5" y1="10" x2="15.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="37.5" y1="10" x2="37.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="59.5" y1="10" x2="59.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="23.5" y1="10" x2="23.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="45.5" y1="10" x2="45.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="67.5" y1="10" x2="67.5" y2="37"  stroke="#000" stroke-linecap="round"></line><text id="240"  font-size="18"  fill="#000"><tspan x="1" y="8">240</tspan></text></g><g  transform="translate(2590, 0)"><line x1="0.5" y1="-10" x2="0.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="8.5" y1="10" x2="8.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="30.5" y1="10" x2="30.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="51.5" y1="10" x2="51.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="15.5" y1="10" x2="15.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="37.5" y1="10" x2="37.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="59.5" y1="10" x2="59.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="23.5" y1="10" x2="23.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="45.5" y1="10" x2="45.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="67.5" y1="10" x2="67.5" y2="37"  stroke="#000" stroke-linecap="round"></line><text id="350"  font-size="18"  fill="#000"><tspan x="1" y="8">350</tspan></text></g><g  transform="translate(296, 0)"><line x1="0.5" y1="-10" x2="0.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="8.5" y1="10" x2="8.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="30.5" y1="10" x2="30.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="51.5" y1="10" x2="51.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="15.5" y1="10" x2="15.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="37.5" y1="10" x2="37.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="59.5" y1="10" x2="59.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="23.5" y1="10" x2="23.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="45.5" y1="10" x2="45.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="67.5" y1="10" x2="67.5" y2="37"  stroke="#000" stroke-linecap="round"></line><text id="40"  font-size="18"  fill="#000"><tspan x="2" y="8">40</tspan></text></g><g  transform="translate(888, 0)"><line x1="0.5" y1="-10" x2="0.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="8.5" y1="10" x2="8.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="30.5" y1="10" x2="30.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="51.5" y1="10" x2="51.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="15.5" y1="10" x2="15.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="37.5" y1="10" x2="37.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="59.5" y1="10" x2="59.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="23.5" y1="10" x2="23.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="45.5" y1="10" x2="45.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="67.5" y1="10" x2="67.5" y2="37"  stroke="#000" stroke-linecap="round"></line><text id="120"  font-size="18"  fill="#000"><tspan x="1" y="8">120</tspan></text></g><g  transform="translate(1480, 0)"><line x1="0.5" y1="-10" x2="0.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="8.5" y1="10" x2="8.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="30.5" y1="10" x2="30.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="51.5" y1="10" x2="51.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="15.5" y1="10" x2="15.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="37.5" y1="10" x2="37.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="59.5" y1="10" x2="59.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="23.5" y1="10" x2="23.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="45.5" y1="10" x2="45.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="67.5" y1="10" x2="67.5" y2="37"  stroke="#000" stroke-linecap="round"></line><text id="200"  font-size="18"  fill="#000"><tspan x="1" y="8">200</tspan></text></g><g  transform="translate(2072, 0)"><line x1="0.5" y1="-10" x2="0.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="8.5" y1="10" x2="8.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="30.5" y1="10" x2="30.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="51.5" y1="10" x2="51.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="15.5" y1="10" x2="15.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="37.5" y1="10" x2="37.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="59.5" y1="10" x2="59.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="23.5" y1="10" x2="23.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="45.5" y1="10" x2="45.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="67.5" y1="10" x2="67.5" y2="37"  stroke="#000" stroke-linecap="round"></line><text id="280"  font-size="18"  fill="#000"><tspan x="1" y="8">280</tspan></text></g><g  transform="translate(2886, 0)"><line x1="0.5" y1="-10" x2="0.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="8.5" y1="10" x2="8.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="30.5" y1="10" x2="30.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="51.5" y1="10" x2="51.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="15.5" y1="10" x2="15.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="37.5" y1="10" x2="37.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="59.5" y1="10" x2="59.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="23.5" y1="10" x2="23.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="45.5" y1="10" x2="45.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="67.5" y1="10" x2="67.5" y2="37"  stroke="#000" stroke-linecap="round"></line><text id="390"  font-size="18"  fill="#000"><tspan x="1" y="8">390</tspan></text></g><g  transform="translate(148, 0)"><line x1="0.5" y1="-10" x2="0.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="8.5" y1="10" x2="8.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="30.5" y1="10" x2="30.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="51.5" y1="10" x2="51.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="15.5" y1="10" x2="15.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="37.5" y1="10" x2="37.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="59.5" y1="10" x2="59.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="23.5" y1="10" x2="23.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="45.5" y1="10" x2="45.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="67.5" y1="10" x2="67.5" y2="37"  stroke="#000" stroke-linecap="round"></line><text id="20"  font-size="18"  fill="#000"><tspan x="1" y="8">20</tspan></text></g><g  transform="translate(740, 0)"><line x1="0.5" y1="-10" x2="0.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="8.5" y1="10" x2="8.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="30.5" y1="10" x2="30.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="51.5" y1="10" x2="51.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="15.5" y1="10" x2="15.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="37.5" y1="10" x2="37.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="59.5" y1="10" x2="59.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="23.5" y1="10" x2="23.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="45.5" y1="10" x2="45.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="67.5" y1="10" x2="67.5" y2="37"  stroke="#000" stroke-linecap="round"></line><text id="100"  font-size="18"  fill="#000"><tspan x="1" y="8">100</tspan></text></g><g  transform="translate(1332, 0)"><line x1="0.5" y1="-10" x2="0.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="8.5" y1="10" x2="8.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="30.5" y1="10" x2="30.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="51.5" y1="10" x2="51.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="15.5" y1="10" x2="15.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="37.5" y1="10" x2="37.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="59.5" y1="10" x2="59.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="23.5" y1="10" x2="23.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="45.5" y1="10" x2="45.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="67.5" y1="10" x2="67.5" y2="37"  stroke="#000" stroke-linecap="round"></line><text id="180"  font-size="18"  fill="#000"><tspan x="1" y="8">180</tspan></text></g><g  transform="translate(1924, 0)"><line x1="0.5" y1="-10" x2="0.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="8.5" y1="10" x2="8.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="30.5" y1="10" x2="30.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="51.5" y1="10" x2="51.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="15.5" y1="10" x2="15.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="37.5" y1="10" x2="37.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="59.5" y1="10" x2="59.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="23.5" y1="10" x2="23.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="45.5" y1="10" x2="45.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="67.5" y1="10" x2="67.5" y2="37"  stroke="#000" stroke-linecap="round"></line><text id="260"  font-size="18"  fill="#000"><tspan x="1" y="8">260</tspan></text></g><g  transform="translate(2738, 0)"><line x1="0.5" y1="-10" x2="0.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="8.5" y1="10" x2="8.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="30.5" y1="10" x2="30.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="51.5" y1="10" x2="51.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="15.5" y1="10" x2="15.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="37.5" y1="10" x2="37.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="59.5" y1="10" x2="59.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="23.5" y1="10" x2="23.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="45.5" y1="10" x2="45.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="67.5" y1="10" x2="67.5" y2="37"  stroke="#000" stroke-linecap="round"></line><text id="370"  font-size="18"  fill="#000"><tspan x="1" y="8">370</tspan></text></g><g  transform="translate(444, 0)"><line x1="0.5" y1="-10" x2="0.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="8.5" y1="10" x2="8.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="30.5" y1="10" x2="30.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="51.5" y1="10" x2="51.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="15.5" y1="10" x2="15.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="37.5" y1="10" x2="37.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="59.5" y1="10" x2="59.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="23.5" y1="10" x2="23.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="45.5" y1="10" x2="45.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="67.5" y1="10" x2="67.5" y2="37"  stroke="#000" stroke-linecap="round"></line><text id="60"  font-size="18"  fill="#000"><tspan x="1" y="8">60</tspan></text></g><g  transform="translate(1036, 0)"><line x1="0.5" y1="-10" x2="0.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="8.5" y1="10" x2="8.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="30.5" y1="10" x2="30.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="51.5" y1="10" x2="51.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="15.5" y1="10" x2="15.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="37.5" y1="10" x2="37.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="59.5" y1="10" x2="59.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="23.5" y1="10" x2="23.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="45.5" y1="10" x2="45.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="67.5" y1="10" x2="67.5" y2="37"  stroke="#000" stroke-linecap="round"></line><text id="140"  font-size="18"  fill="#000"><tspan x="1" y="8">140</tspan></text></g><g  transform="translate(1628, 0)"><line x1="0.5" y1="-10" x2="0.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="8.5" y1="10" x2="8.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="30.5" y1="10" x2="30.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="51.5" y1="10" x2="51.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="15.5" y1="10" x2="15.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="37.5" y1="10" x2="37.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="59.5" y1="10" x2="59.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="23.5" y1="10" x2="23.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="45.5" y1="10" x2="45.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="67.5" y1="10" x2="67.5" y2="37"  stroke="#000" stroke-linecap="round"></line><text id="220"  font-size="18"  fill="#000"><tspan x="1" y="8">220</tspan></text></g><g  transform="translate(2442, 0)"><line x1="0.5" y1="-10" x2="0.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="8.5" y1="10" x2="8.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="30.5" y1="10" x2="30.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="51.5" y1="10" x2="51.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="15.5" y1="10" x2="15.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="37.5" y1="10" x2="37.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="59.5" y1="10" x2="59.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="23.5" y1="10" x2="23.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="45.5" y1="10" x2="45.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="67.5" y1="10" x2="67.5" y2="37"  stroke="#000" stroke-linecap="round"></line><text id="330"  font-size="18"  fill="#000"><tspan x="1" y="8">330</tspan></text></g><g  transform="translate(2220, 0)"><line x1="0.5" y1="-10" x2="0.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="8.5" y1="10" x2="8.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="30.5" y1="10" x2="30.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="51.5" y1="10" x2="51.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="15.5" y1="10" x2="15.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="37.5" y1="10" x2="37.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="59.5" y1="10" x2="59.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="23.5" y1="10" x2="23.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="45.5" y1="10" x2="45.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="67.5" y1="10" x2="67.5" y2="37"  stroke="#000" stroke-linecap="round"></line><text id="300"  font-size="18"  fill="#000"><tspan x="1" y="8">300</tspan></text></g><line x1="74.5" y1="-10" x2="74.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="82.5" y1="10" x2="82.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="104.5" y1="10" x2="104.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="125.5" y1="10" x2="125.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="89.5" y1="10" x2="89.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="111.5" y1="10" x2="111.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="133.5" y1="10" x2="133.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="97.5" y1="10" x2="97.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="119.5" y1="10" x2="119.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="141.5" y1="10" x2="141.5" y2="37"  stroke="#000" stroke-linecap="round"></line><text id="10"  font-size="18"  fill="#000"><tspan x="75" y="8">10</tspan></text><g  transform="translate(666, 0)"><line x1="0.5" y1="-10" x2="0.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="8.5" y1="10" x2="8.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="30.5" y1="10" x2="30.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="51.5" y1="10" x2="51.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="15.5" y1="10" x2="15.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="37.5" y1="10" x2="37.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="59.5" y1="10" x2="59.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="23.5" y1="10" x2="23.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="45.5" y1="10" x2="45.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="67.5" y1="10" x2="67.5" y2="37"  stroke="#000" stroke-linecap="round"></line><text id="90"  font-size="18"  fill="#000"><tspan x="1" y="8">90</tspan></text></g><g  transform="translate(1258, 0)"><line x1="0.5" y1="-10" x2="0.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="8.5" y1="10" x2="8.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="30.5" y1="10" x2="30.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="51.5" y1="10" x2="51.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="15.5" y1="10" x2="15.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="37.5" y1="10" x2="37.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="59.5" y1="10" x2="59.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="23.5" y1="10" x2="23.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="45.5" y1="10" x2="45.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="67.5" y1="10" x2="67.5" y2="37"  stroke="#000" stroke-linecap="round"></line><text id="170"  font-size="18"  fill="#000"><tspan x="1" y="8">170</tspan></text></g><g  transform="translate(1850, 0)"><line x1="0.5" y1="-10" x2="0.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="8.5" y1="10" x2="8.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="30.5" y1="10" x2="30.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="51.5" y1="10" x2="51.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="15.5" y1="10" x2="15.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="37.5" y1="10" x2="37.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="59.5" y1="10" x2="59.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="23.5" y1="10" x2="23.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="45.5" y1="10" x2="45.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="67.5" y1="10" x2="67.5" y2="37"  stroke="#000" stroke-linecap="round"></line><text id="250"  font-size="18"  fill="#000"><tspan x="1" y="8">250</tspan></text></g><g  transform="translate(2664, 0)"><line x1="0.5" y1="-10" x2="0.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="8.5" y1="10" x2="8.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="30.5" y1="10" x2="30.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="51.5" y1="10" x2="51.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="15.5" y1="10" x2="15.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="37.5" y1="10" x2="37.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="59.5" y1="10" x2="59.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="23.5" y1="10" x2="23.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="45.5" y1="10" x2="45.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="67.5" y1="10" x2="67.5" y2="37"  stroke="#000" stroke-linecap="round"></line><text id="360"  font-size="18"  fill="#000"><tspan x="1" y="8">360</tspan></text></g><g  transform="translate(370, 0)"><line x1="0.5" y1="-10" x2="0.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="8.5" y1="10" x2="8.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="30.5" y1="10" x2="30.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="51.5" y1="10" x2="51.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="15.5" y1="10" x2="15.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="37.5" y1="10" x2="37.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="59.5" y1="10" x2="59.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="23.5" y1="10" x2="23.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="45.5" y1="10" x2="45.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="67.5" y1="10" x2="67.5" y2="37"  stroke="#000" stroke-linecap="round"></line><text id="50"  font-size="18"  fill="#000"><tspan x="1" y="8">50</tspan></text></g><g  transform="translate(962, 0)"><line x1="0.5" y1="-10" x2="0.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="8.5" y1="10" x2="8.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="30.5" y1="10" x2="30.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="51.5" y1="10" x2="51.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="15.5" y1="10" x2="15.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="37.5" y1="10" x2="37.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="59.5" y1="10" x2="59.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="23.5" y1="10" x2="23.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="45.5" y1="10" x2="45.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="67.5" y1="10" x2="67.5" y2="37"  stroke="#000" stroke-linecap="round"></line><text id="130"  font-size="18"  fill="#000"><tspan x="1" y="8">130</tspan></text></g><g  transform="translate(1554, 0)"><line x1="0.5" y1="-10" x2="0.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="8.5" y1="10" x2="8.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="30.5" y1="10" x2="30.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="51.5" y1="10" x2="51.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="15.5" y1="10" x2="15.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="37.5" y1="10" x2="37.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="59.5" y1="10" x2="59.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="23.5" y1="10" x2="23.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="45.5" y1="10" x2="45.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="67.5" y1="10" x2="67.5" y2="37"  stroke="#000" stroke-linecap="round"></line><text id="210"  font-size="18"  fill="#000"><tspan x="1" y="8">210</tspan></text></g><g  transform="translate(2368, 0)"><line x1="0.5" y1="-10" x2="0.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="8.5" y1="10" x2="8.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="30.5" y1="10" x2="30.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="51.5" y1="10" x2="51.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="15.5" y1="10" x2="15.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="37.5" y1="10" x2="37.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="59.5" y1="10" x2="59.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="23.5" y1="10" x2="23.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="45.5" y1="10" x2="45.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="67.5" y1="10" x2="67.5" y2="37"  stroke="#000" stroke-linecap="round"></line><text id="320"  font-size="18"  fill="#000"><tspan x="1" y="8">320</tspan></text></g><g  transform="translate(2146, 0)"><line x1="0.5" y1="-10" x2="0.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="8.5" y1="10" x2="8.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="30.5" y1="10" x2="30.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="51.5" y1="10" x2="51.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="15.5" y1="10" x2="15.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="37.5" y1="10" x2="37.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="59.5" y1="10" x2="59.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="23.5" y1="10" x2="23.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="45.5" y1="10" x2="45.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="67.5" y1="10" x2="67.5" y2="37"  stroke="#000" stroke-linecap="round"></line><text id="290"  font-size="18"  fill="#000"><tspan x="1" y="8">290</tspan></text></g><g  transform="translate(222, 0)"><line x1="0.5" y1="-10" x2="0.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="8.5" y1="10" x2="8.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="30.5" y1="10" x2="30.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="51.5" y1="10" x2="51.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="15.5" y1="10" x2="15.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="37.5" y1="10" x2="37.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="59.5" y1="10" x2="59.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="23.5" y1="10" x2="23.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="45.5" y1="10" x2="45.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="67.5" y1="10" x2="67.5" y2="37"  stroke="#000" stroke-linecap="round"></line><text id="30"  font-size="18"  fill="#000"><tspan x="1" y="8">30</tspan></text></g><g  transform="translate(814, 0)"><line x1="0.5" y1="-10" x2="0.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="8.5" y1="10" x2="8.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="30.5" y1="10" x2="30.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="51.5" y1="10" x2="51.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="15.5" y1="10" x2="15.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="37.5" y1="10" x2="37.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="59.5" y1="10" x2="59.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="23.5" y1="10" x2="23.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="45.5" y1="10" x2="45.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="67.5" y1="10" x2="67.5" y2="37"  stroke="#000" stroke-linecap="round"></line><text id="110"  font-size="18"  fill="#000"><tspan x="1" y="8">110</tspan></text></g><g  transform="translate(1406, 0)"><line x1="0.5" y1="-10" x2="0.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="8.5" y1="10" x2="8.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="30.5" y1="10" x2="30.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="51.5" y1="10" x2="51.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="15.5" y1="10" x2="15.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="37.5" y1="10" x2="37.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="59.5" y1="10" x2="59.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="23.5" y1="10" x2="23.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="45.5" y1="10" x2="45.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="67.5" y1="10" x2="67.5" y2="37"  stroke="#000" stroke-linecap="round"></line><text id="190"  font-size="18"  fill="#000"><tspan x="1" y="8">190</tspan></text></g><g  transform="translate(1998, 0)"><line x1="0.5" y1="-10" x2="0.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="8.5" y1="10" x2="8.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="30.5" y1="10" x2="30.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="51.5" y1="10" x2="51.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="15.5" y1="10" x2="15.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="37.5" y1="10" x2="37.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="59.5" y1="10" x2="59.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="23.5" y1="10" x2="23.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="45.5" y1="10" x2="45.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="67.5" y1="10" x2="67.5" y2="37"  stroke="#000" stroke-linecap="round"></line><text id="270"  font-size="18"  fill="#000"><tspan x="1" y="8">270</tspan></text></g><g  transform="translate(2812, 0)"><line x1="0.5" y1="-10" x2="0.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="8.5" y1="10" x2="8.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="30.5" y1="10" x2="30.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="51.5" y1="10" x2="51.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="15.5" y1="10" x2="15.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="37.5" y1="10" x2="37.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="59.5" y1="10" x2="59.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="23.5" y1="10" x2="23.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="45.5" y1="10" x2="45.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="67.5" y1="10" x2="67.5" y2="37"  stroke="#000" stroke-linecap="round"></line><text id="380"  font-size="18"  fill="#000"><tspan x="1" y="8">380</tspan></text></g><g  transform="translate(518, 0)"><line x1="0.5" y1="-10" x2="0.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="8.5" y1="10" x2="8.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="30.5" y1="10" x2="30.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="51.5" y1="10" x2="51.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="15.5" y1="10" x2="15.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="37.5" y1="10" x2="37.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="59.5" y1="10" x2="59.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="23.5" y1="10" x2="23.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="45.5" y1="10" x2="45.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="67.5" y1="10" x2="67.5" y2="37"  stroke="#000" stroke-linecap="round"></line><text id="70"  font-size="18"  fill="#000"><tspan x="2" y="8">70</tspan></text></g><g  transform="translate(1110, 0)"><line x1="0.5" y1="-10" x2="0.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="8.5" y1="10" x2="8.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="30.5" y1="10" x2="30.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="51.5" y1="10" x2="51.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="15.5" y1="10" x2="15.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="37.5" y1="10" x2="37.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="59.5" y1="10" x2="59.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="23.5" y1="10" x2="23.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="45.5" y1="10" x2="45.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="67.5" y1="10" x2="67.5" y2="37"  stroke="#000" stroke-linecap="round"></line><text id="150"  font-size="18"  fill="#000"><tspan x="1" y="8">150</tspan></text></g><g  transform="translate(1702, 0)"><line x1="0.5" y1="-10" x2="0.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="8.5" y1="10" x2="8.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="30.5" y1="10" x2="30.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="51.5" y1="10" x2="51.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="15.5" y1="10" x2="15.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="37.5" y1="10" x2="37.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="59.5" y1="10" x2="59.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="23.5" y1="10" x2="23.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="45.5" y1="10" x2="45.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="67.5" y1="10" x2="67.5" y2="37"  stroke="#000" stroke-linecap="round"></line><text id="230"  font-size="18"  fill="#000"><tspan x="1" y="8">230</tspan></text></g><g  transform="translate(2516, 0)"><line x1="0.5" y1="-10" x2="0.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="8.5" y1="10" x2="8.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="30.5" y1="10" x2="30.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="51.5" y1="10" x2="51.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="15.5" y1="10" x2="15.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="37.5" y1="10" x2="37.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="59.5" y1="10" x2="59.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="23.5" y1="10" x2="23.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="45.5" y1="10" x2="45.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="67.5" y1="10" x2="67.5" y2="37"  stroke="#000" stroke-linecap="round"></line><text id="340"  font-size="18"  fill="#000"><tspan x="1" y="8">340</tspan></text></g><g  transform="translate(2294, 0)"><line x1="0.5" y1="-10" x2="0.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="8.5" y1="10" x2="8.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="30.5" y1="10" x2="30.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="51.5" y1="10" x2="51.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="15.5" y1="10" x2="15.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="37.5" y1="10" x2="37.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="59.5" y1="10" x2="59.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="23.5" y1="10" x2="23.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="45.5" y1="10" x2="45.5" y2="37"  stroke="#000" stroke-linecap="round"></line><line x1="67.5" y1="10" x2="67.5" y2="37"  stroke="#000" stroke-linecap="round"></line><text id="310"  font-size="18"  fill="#000"><tspan x="1" y="8">310</tspan></text></g></g></g></svg>
\ No newline at end of file
diff --git a/src/hiprint/css/image/v_img.svg b/src/hiprint/css/image/v_img.svg
new file mode 100644
index 0000000..895b1fa
--- /dev/null
+++ b/src/hiprint/css/image/v_img.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg style = "position:absolute;top:0;left:0" width="100%" height="15px" viewBox="0 0 2954 15" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g  stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g ><g ><line x1="0.5" y1="-10" x2="0.5" y2="15"  stroke="#000" stroke-linecap="round"></line><line x1="8.5" y1="-10" x2="8.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="30.5" y1="-10" x2="30.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="51.5" y1="-10" x2="51.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="15.5" y1="-10" x2="15.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="37.5" y1="-10" x2="37.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="59.5" y1="-10" x2="59.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="23.5" y1="-10" x2="23.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="45.5" y1="-10" x2="45.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="67.5" y1="-10" x2="67.5" y2="7"  stroke="#000" stroke-linecap="round"></line></g><g  transform="translate(592, 0)"><line x1="0.5" y1="-10" x2="0.5" y2="15"  stroke="#000" stroke-linecap="round"></line><line x1="8.5" y1="-10" x2="8.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="30.5" y1="-10" x2="30.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="51.5" y1="-10" x2="51.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="15.5" y1="-10" x2="15.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="37.5" y1="-10" x2="37.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="59.5" y1="-10" x2="59.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="23.5" y1="-10" x2="23.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="45.5" y1="-10" x2="45.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="67.5" y1="-10" x2="67.5" y2="7"  stroke="#000" stroke-linecap="round"></line><text id="80"  font-size="18"  transform = "rotate(180)"    fill="#000"><tspan x="1" y="-7">80</tspan></text></g><g  transform="translate(1184, 0)"><line x1="0.5" y1="-10" x2="0.5" y2="15"  stroke="#000" stroke-linecap="round"></line><line x1="8.5" y1="-10" x2="8.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="30.5" y1="-10" x2="30.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="51.5" y1="-10" x2="51.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="15.5" y1="-10" x2="15.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="37.5" y1="-10" x2="37.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="59.5" y1="-10" x2="59.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="23.5" y1="-10" x2="23.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="45.5" y1="-10" x2="45.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="67.5" y1="-10" x2="67.5" y2="7"  stroke="#000" stroke-linecap="round"></line><text id="160"  font-size="18"  transform = "rotate(180)"    fill="#000"><tspan x="1" y="-7">160</tspan></text></g><g  transform="translate(1776, 0)"><line x1="0.5" y1="-10" x2="0.5" y2="15"  stroke="#000" stroke-linecap="round"></line><line x1="8.5" y1="-10" x2="8.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="30.5" y1="-10" x2="30.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="51.5" y1="-10" x2="51.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="15.5" y1="-10" x2="15.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="37.5" y1="-10" x2="37.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="59.5" y1="-10" x2="59.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="23.5" y1="-10" x2="23.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="45.5" y1="-10" x2="45.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="67.5" y1="-10" x2="67.5" y2="7"  stroke="#000" stroke-linecap="round"></line><text id="240"  font-size="18"  transform = "rotate(180)"    fill="#000"><tspan x="1" y="-7">240</tspan></text></g><g  transform="translate(2590, 0)"><line x1="0.5" y1="-10" x2="0.5" y2="15"  stroke="#000" stroke-linecap="round"></line><line x1="8.5" y1="-10" x2="8.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="30.5" y1="-10" x2="30.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="51.5" y1="-10" x2="51.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="15.5" y1="-10" x2="15.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="37.5" y1="-10" x2="37.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="59.5" y1="-10" x2="59.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="23.5" y1="-10" x2="23.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="45.5" y1="-10" x2="45.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="67.5" y1="-10" x2="67.5" y2="7"  stroke="#000" stroke-linecap="round"></line><text id="350"  font-size="18"  transform = "rotate(180)"    fill="#000"><tspan x="1" y="-7">350</tspan></text></g><g  transform="translate(296, 0)"><line x1="0.5" y1="-10" x2="0.5" y2="15"  stroke="#000" stroke-linecap="round"></line><line x1="8.5" y1="-10" x2="8.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="30.5" y1="-10" x2="30.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="51.5" y1="-10" x2="51.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="15.5" y1="-10" x2="15.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="37.5" y1="-10" x2="37.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="59.5" y1="-10" x2="59.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="23.5" y1="-10" x2="23.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="45.5" y1="-10" x2="45.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="67.5" y1="-10" x2="67.5" y2="7"  stroke="#000" stroke-linecap="round"></line><text id="40"  font-size="18"  transform = "rotate(180)"     fill="#000"><tspan x="2" y="-7">40</tspan></text></g><g  transform="translate(888, 0)"><line x1="0.5" y1="-10" x2="0.5" y2="15"  stroke="#000" stroke-linecap="round"></line><line x1="8.5" y1="-10" x2="8.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="30.5" y1="-10" x2="30.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="51.5" y1="-10" x2="51.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="15.5" y1="-10" x2="15.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="37.5" y1="-10" x2="37.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="59.5" y1="-10" x2="59.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="23.5" y1="-10" x2="23.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="45.5" y1="-10" x2="45.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="67.5" y1="-10" x2="67.5" y2="7"  stroke="#000" stroke-linecap="round"></line><text id="120"  font-size="18"  transform = "rotate(180)"    fill="#000"><tspan x="1" y="-7">120</tspan></text></g><g  transform="translate(1480, 0)"><line x1="0.5" y1="-10" x2="0.5" y2="15"  stroke="#000" stroke-linecap="round"></line><line x1="8.5" y1="-10" x2="8.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="30.5" y1="-10" x2="30.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="51.5" y1="-10" x2="51.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="15.5" y1="-10" x2="15.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="37.5" y1="-10" x2="37.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="59.5" y1="-10" x2="59.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="23.5" y1="-10" x2="23.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="45.5" y1="-10" x2="45.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="67.5" y1="-10" x2="67.5" y2="7"  stroke="#000" stroke-linecap="round"></line><text id="200"  font-size="18"  transform = "rotate(180)"    fill="#000"><tspan x="1" y="-7">200</tspan></text></g><g  transform="translate(2072, 0)"><line x1="0.5" y1="-10" x2="0.5" y2="15"  stroke="#000" stroke-linecap="round"></line><line x1="8.5" y1="-10" x2="8.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="30.5" y1="-10" x2="30.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="51.5" y1="-10" x2="51.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="15.5" y1="-10" x2="15.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="37.5" y1="-10" x2="37.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="59.5" y1="-10" x2="59.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="23.5" y1="-10" x2="23.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="45.5" y1="-10" x2="45.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="67.5" y1="-10" x2="67.5" y2="7"  stroke="#000" stroke-linecap="round"></line><text id="280"  font-size="18"  transform = "rotate(180)"    fill="#000"><tspan x="1" y="-7">280</tspan></text></g><g  transform="translate(2886, 0)"><line x1="0.5" y1="-10" x2="0.5" y2="15"  stroke="#000" stroke-linecap="round"></line><line x1="8.5" y1="-10" x2="8.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="30.5" y1="-10" x2="30.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="51.5" y1="-10" x2="51.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="15.5" y1="-10" x2="15.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="37.5" y1="-10" x2="37.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="59.5" y1="-10" x2="59.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="23.5" y1="-10" x2="23.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="45.5" y1="-10" x2="45.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="67.5" y1="-10" x2="67.5" y2="7"  stroke="#000" stroke-linecap="round"></line><text id="390"  font-size="18"  transform = "rotate(180)"    fill="#000"><tspan x="1" y="-7">390</tspan></text></g><g  transform="translate(148, 0)"><line x1="0.5" y1="-10" x2="0.5" y2="15"  stroke="#000" stroke-linecap="round"></line><line x1="8.5" y1="-10" x2="8.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="30.5" y1="-10" x2="30.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="51.5" y1="-10" x2="51.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="15.5" y1="-10" x2="15.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="37.5" y1="-10" x2="37.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="59.5" y1="-10" x2="59.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="23.5" y1="-10" x2="23.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="45.5" y1="-10" x2="45.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="67.5" y1="-10" x2="67.5" y2="7"  stroke="#000" stroke-linecap="round"></line><text id="20"  font-size="18"  transform = "rotate(180)"    fill="#000"><tspan x="1" y="-7">20</tspan></text></g><g  transform="translate(740, 0)"><line x1="0.5" y1="-10" x2="0.5" y2="15"  stroke="#000" stroke-linecap="round"></line><line x1="8.5" y1="-10" x2="8.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="30.5" y1="-10" x2="30.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="51.5" y1="-10" x2="51.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="15.5" y1="-10" x2="15.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="37.5" y1="-10" x2="37.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="59.5" y1="-10" x2="59.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="23.5" y1="-10" x2="23.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="45.5" y1="-10" x2="45.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="67.5" y1="-10" x2="67.5" y2="7"  stroke="#000" stroke-linecap="round"></line><text id="100"  font-size="18"  transform = "rotate(180)"    fill="#000"><tspan x="1" y="-7">100</tspan></text></g><g  transform="translate(1332, 0)"><line x1="0.5" y1="-10" x2="0.5" y2="15"  stroke="#000" stroke-linecap="round"></line><line x1="8.5" y1="-10" x2="8.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="30.5" y1="-10" x2="30.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="51.5" y1="-10" x2="51.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="15.5" y1="-10" x2="15.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="37.5" y1="-10" x2="37.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="59.5" y1="-10" x2="59.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="23.5" y1="-10" x2="23.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="45.5" y1="-10" x2="45.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="67.5" y1="-10" x2="67.5" y2="7"  stroke="#000" stroke-linecap="round"></line><text id="180"  font-size="18"  transform = "rotate(180)"    fill="#000"><tspan x="1" y="-7">180</tspan></text></g><g  transform="translate(1924, 0)"><line x1="0.5" y1="-10" x2="0.5" y2="15"  stroke="#000" stroke-linecap="round"></line><line x1="8.5" y1="-10" x2="8.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="30.5" y1="-10" x2="30.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="51.5" y1="-10" x2="51.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="15.5" y1="-10" x2="15.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="37.5" y1="-10" x2="37.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="59.5" y1="-10" x2="59.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="23.5" y1="-10" x2="23.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="45.5" y1="-10" x2="45.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="67.5" y1="-10" x2="67.5" y2="7"  stroke="#000" stroke-linecap="round"></line><text id="260"  font-size="18"  transform = "rotate(180)"    fill="#000"><tspan x="1" y="-7">260</tspan></text></g><g  transform="translate(2738, 0)"><line x1="0.5" y1="-10" x2="0.5" y2="15"  stroke="#000" stroke-linecap="round"></line><line x1="8.5" y1="-10" x2="8.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="30.5" y1="-10" x2="30.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="51.5" y1="-10" x2="51.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="15.5" y1="-10" x2="15.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="37.5" y1="-10" x2="37.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="59.5" y1="-10" x2="59.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="23.5" y1="-10" x2="23.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="45.5" y1="-10" x2="45.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="67.5" y1="-10" x2="67.5" y2="7"  stroke="#000" stroke-linecap="round"></line><text id="370"  font-size="18"  transform = "rotate(180)"    fill="#000"><tspan x="1" y="-7">370</tspan></text></g><g  transform="translate(444, 0)"><line x1="0.5" y1="-10" x2="0.5" y2="15"  stroke="#000" stroke-linecap="round"></line><line x1="8.5" y1="-10" x2="8.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="30.5" y1="-10" x2="30.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="51.5" y1="-10" x2="51.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="15.5" y1="-10" x2="15.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="37.5" y1="-10" x2="37.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="59.5" y1="-10" x2="59.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="23.5" y1="-10" x2="23.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="45.5" y1="-10" x2="45.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="67.5" y1="-10" x2="67.5" y2="7"  stroke="#000" stroke-linecap="round"></line><text id="60"  font-size="18"  transform = "rotate(180)"    fill="#000"><tspan x="1" y="-7">60</tspan></text></g><g  transform="translate(1036, 0)"><line x1="0.5" y1="-10" x2="0.5" y2="15"  stroke="#000" stroke-linecap="round"></line><line x1="8.5" y1="-10" x2="8.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="30.5" y1="-10" x2="30.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="51.5" y1="-10" x2="51.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="15.5" y1="-10" x2="15.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="37.5" y1="-10" x2="37.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="59.5" y1="-10" x2="59.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="23.5" y1="-10" x2="23.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="45.5" y1="-10" x2="45.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="67.5" y1="-10" x2="67.5" y2="7"  stroke="#000" stroke-linecap="round"></line><text id="140"  font-size="18"  transform = "rotate(180)"    fill="#000"><tspan x="1" y="-7">140</tspan></text></g><g  transform="translate(1628, 0)"><line x1="0.5" y1="-10" x2="0.5" y2="15"  stroke="#000" stroke-linecap="round"></line><line x1="8.5" y1="-10" x2="8.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="30.5" y1="-10" x2="30.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="51.5" y1="-10" x2="51.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="15.5" y1="-10" x2="15.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="37.5" y1="-10" x2="37.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="59.5" y1="-10" x2="59.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="23.5" y1="-10" x2="23.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="45.5" y1="-10" x2="45.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="67.5" y1="-10" x2="67.5" y2="7"  stroke="#000" stroke-linecap="round"></line><text id="220"  font-size="18"  transform = "rotate(180)"    fill="#000"><tspan x="1" y="-7">220</tspan></text></g><g  transform="translate(2442, 0)"><line x1="0.5" y1="-10" x2="0.5" y2="15"  stroke="#000" stroke-linecap="round"></line><line x1="8.5" y1="-10" x2="8.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="30.5" y1="-10" x2="30.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="51.5" y1="-10" x2="51.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="15.5" y1="-10" x2="15.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="37.5" y1="-10" x2="37.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="59.5" y1="-10" x2="59.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="23.5" y1="-10" x2="23.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="45.5" y1="-10" x2="45.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="67.5" y1="-10" x2="67.5" y2="7"  stroke="#000" stroke-linecap="round"></line><text id="330"  font-size="18"  transform = "rotate(180)"    fill="#000"><tspan x="1" y="-7">330</tspan></text></g><g  transform="translate(2220, 0)"><line x1="0.5" y1="-10" x2="0.5" y2="15"  stroke="#000" stroke-linecap="round"></line><line x1="8.5" y1="-10" x2="8.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="30.5" y1="-10" x2="30.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="51.5" y1="-10" x2="51.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="15.5" y1="-10" x2="15.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="37.5" y1="-10" x2="37.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="59.5" y1="-10" x2="59.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="23.5" y1="-10" x2="23.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="45.5" y1="-10" x2="45.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="67.5" y1="-10" x2="67.5" y2="7"  stroke="#000" stroke-linecap="round"></line><text id="300"  font-size="18"  transform = "rotate(180)"    fill="#000"><tspan x="1" y="-7">300</tspan></text></g><g transform="translate(74, 0)"><line x1="0.5" y1="-10" x2="0.5" y2="15"  stroke="#000" stroke-linecap="round"></line><line x1="8.5" y1="-10" x2="8.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="30.5" y1="-10" x2="30.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="51.5" y1="-10" x2="51.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="15.5" y1="-10" x2="15.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="37.5" y1="-10" x2="37.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="59.5" y1="-10" x2="59.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="23.5" y1="-10" x2="23.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="45.5" y1="-10" x2="45.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="67.5" y1="-10" x2="67.5" y2="7"  stroke="#000" stroke-linecap="round"></line><text   font-size="18"  transform = "rotate(180)"  fill="#000"><tspan x="1" y="-7">10</tspan></text></g><g  transform="translate(666, 0)"><line x1="0.5" y1="-10" x2="0.5" y2="15"  stroke="#000" stroke-linecap="round"></line><line x1="8.5" y1="-10" x2="8.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="30.5" y1="-10" x2="30.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="51.5" y1="-10" x2="51.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="15.5" y1="-10" x2="15.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="37.5" y1="-10" x2="37.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="59.5" y1="-10" x2="59.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="23.5" y1="-10" x2="23.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="45.5" y1="-10" x2="45.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="67.5" y1="-10" x2="67.5" y2="7"  stroke="#000" stroke-linecap="round"></line><text id="90"  font-size="18"  transform = "rotate(180)"    fill="#000"><tspan x="1" y="-7">90</tspan></text></g><g  transform="translate(1258, 0)"><line x1="0.5" y1="-10" x2="0.5" y2="15"  stroke="#000" stroke-linecap="round"></line><line x1="8.5" y1="-10" x2="8.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="30.5" y1="-10" x2="30.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="51.5" y1="-10" x2="51.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="15.5" y1="-10" x2="15.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="37.5" y1="-10" x2="37.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="59.5" y1="-10" x2="59.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="23.5" y1="-10" x2="23.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="45.5" y1="-10" x2="45.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="67.5" y1="-10" x2="67.5" y2="7"  stroke="#000" stroke-linecap="round"></line><text id="170"  font-size="18"  transform = "rotate(180)"    fill="#000"><tspan x="1" y="-7">170</tspan></text></g><g  transform="translate(1850, 0)"><line x1="0.5" y1="-10" x2="0.5" y2="15"  stroke="#000" stroke-linecap="round"></line><line x1="8.5" y1="-10" x2="8.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="30.5" y1="-10" x2="30.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="51.5" y1="-10" x2="51.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="15.5" y1="-10" x2="15.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="37.5" y1="-10" x2="37.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="59.5" y1="-10" x2="59.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="23.5" y1="-10" x2="23.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="45.5" y1="-10" x2="45.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="67.5" y1="-10" x2="67.5" y2="7"  stroke="#000" stroke-linecap="round"></line><text id="250"  font-size="18"  transform = "rotate(180)"    fill="#000"><tspan x="1" y="-7">250</tspan></text></g><g  transform="translate(2664, 0)"><line x1="0.5" y1="-10" x2="0.5" y2="15"  stroke="#000" stroke-linecap="round"></line><line x1="8.5" y1="-10" x2="8.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="30.5" y1="-10" x2="30.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="51.5" y1="-10" x2="51.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="15.5" y1="-10" x2="15.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="37.5" y1="-10" x2="37.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="59.5" y1="-10" x2="59.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="23.5" y1="-10" x2="23.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="45.5" y1="-10" x2="45.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="67.5" y1="-10" x2="67.5" y2="7"  stroke="#000" stroke-linecap="round"></line><text id="360"  font-size="18"  transform = "rotate(180)"    fill="#000"><tspan x="1" y="-7">360</tspan></text></g><g  transform="translate(370, 0)"><line x1="0.5" y1="-10" x2="0.5" y2="15"  stroke="#000" stroke-linecap="round"></line><line x1="8.5" y1="-10" x2="8.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="30.5" y1="-10" x2="30.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="51.5" y1="-10" x2="51.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="15.5" y1="-10" x2="15.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="37.5" y1="-10" x2="37.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="59.5" y1="-10" x2="59.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="23.5" y1="-10" x2="23.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="45.5" y1="-10" x2="45.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="67.5" y1="-10" x2="67.5" y2="7"  stroke="#000" stroke-linecap="round"></line><text id="50"  font-size="18"  transform = "rotate(180)"    fill="#000"><tspan x="1" y="-7">50</tspan></text></g><g  transform="translate(962, 0)"><line x1="0.5" y1="-10" x2="0.5" y2="15"  stroke="#000" stroke-linecap="round"></line><line x1="8.5" y1="-10" x2="8.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="30.5" y1="-10" x2="30.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="51.5" y1="-10" x2="51.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="15.5" y1="-10" x2="15.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="37.5" y1="-10" x2="37.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="59.5" y1="-10" x2="59.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="23.5" y1="-10" x2="23.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="45.5" y1="-10" x2="45.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="67.5" y1="-10" x2="67.5" y2="7"  stroke="#000" stroke-linecap="round"></line><text id="130"  font-size="18"  transform = "rotate(180)"    fill="#000"><tspan x="1" y="-7">130</tspan></text></g><g  transform="translate(1554, 0)"><line x1="0.5" y1="-10" x2="0.5" y2="15"  stroke="#000" stroke-linecap="round"></line><line x1="8.5" y1="-10" x2="8.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="30.5" y1="-10" x2="30.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="51.5" y1="-10" x2="51.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="15.5" y1="-10" x2="15.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="37.5" y1="-10" x2="37.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="59.5" y1="-10" x2="59.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="23.5" y1="-10" x2="23.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="45.5" y1="-10" x2="45.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="67.5" y1="-10" x2="67.5" y2="7"  stroke="#000" stroke-linecap="round"></line><text id="210"  font-size="18"  transform = "rotate(180)"    fill="#000"><tspan x="1" y="-7">210</tspan></text></g><g  transform="translate(2368, 0)"><line x1="0.5" y1="-10" x2="0.5" y2="15"  stroke="#000" stroke-linecap="round"></line><line x1="8.5" y1="-10" x2="8.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="30.5" y1="-10" x2="30.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="51.5" y1="-10" x2="51.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="15.5" y1="-10" x2="15.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="37.5" y1="-10" x2="37.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="59.5" y1="-10" x2="59.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="23.5" y1="-10" x2="23.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="45.5" y1="-10" x2="45.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="67.5" y1="-10" x2="67.5" y2="7"  stroke="#000" stroke-linecap="round"></line><text id="320"  font-size="18"  transform = "rotate(180)"    fill="#000"><tspan x="1" y="-7">320</tspan></text></g><g  transform="translate(2146, 0)"><line x1="0.5" y1="-10" x2="0.5" y2="15"  stroke="#000" stroke-linecap="round"></line><line x1="8.5" y1="-10" x2="8.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="30.5" y1="-10" x2="30.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="51.5" y1="-10" x2="51.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="15.5" y1="-10" x2="15.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="37.5" y1="-10" x2="37.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="59.5" y1="-10" x2="59.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="23.5" y1="-10" x2="23.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="45.5" y1="-10" x2="45.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="67.5" y1="-10" x2="67.5" y2="7"  stroke="#000" stroke-linecap="round"></line><text id="290"  font-size="18"  transform = "rotate(180)"    fill="#000"><tspan x="1" y="-7">290</tspan></text></g><g  transform="translate(222, 0)"><line x1="0.5" y1="-10" x2="0.5" y2="15"  stroke="#000" stroke-linecap="round"></line><line x1="8.5" y1="-10" x2="8.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="30.5" y1="-10" x2="30.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="51.5" y1="-10" x2="51.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="15.5" y1="-10" x2="15.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="37.5" y1="-10" x2="37.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="59.5" y1="-10" x2="59.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="23.5" y1="-10" x2="23.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="45.5" y1="-10" x2="45.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="67.5" y1="-10" x2="67.5" y2="7"  stroke="#000" stroke-linecap="round"></line><text id="30"  font-size="18"  transform = "rotate(180)"    fill="#000"><tspan x="1" y="-7">30</tspan></text></g><g  transform="translate(814, 0)"><line x1="0.5" y1="-10" x2="0.5" y2="15"  stroke="#000" stroke-linecap="round"></line><line x1="8.5" y1="-10" x2="8.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="30.5" y1="-10" x2="30.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="51.5" y1="-10" x2="51.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="15.5" y1="-10" x2="15.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="37.5" y1="-10" x2="37.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="59.5" y1="-10" x2="59.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="23.5" y1="-10" x2="23.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="45.5" y1="-10" x2="45.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="67.5" y1="-10" x2="67.5" y2="7"  stroke="#000" stroke-linecap="round"></line><text id="110"  font-size="18"  transform = "rotate(180)"    fill="#000"><tspan x="1" y="-7">110</tspan></text></g><g  transform="translate(1406, 0)"><line x1="0.5" y1="-10" x2="0.5" y2="15"  stroke="#000" stroke-linecap="round"></line><line x1="8.5" y1="-10" x2="8.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="30.5" y1="-10" x2="30.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="51.5" y1="-10" x2="51.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="15.5" y1="-10" x2="15.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="37.5" y1="-10" x2="37.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="59.5" y1="-10" x2="59.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="23.5" y1="-10" x2="23.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="45.5" y1="-10" x2="45.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="67.5" y1="-10" x2="67.5" y2="7"  stroke="#000" stroke-linecap="round"></line><text id="190"  font-size="18"  transform = "rotate(180)"    fill="#000"><tspan x="1" y="-7">190</tspan></text></g><g  transform="translate(1998, 0)"><line x1="0.5" y1="-10" x2="0.5" y2="15"  stroke="#000" stroke-linecap="round"></line><line x1="8.5" y1="-10" x2="8.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="30.5" y1="-10" x2="30.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="51.5" y1="-10" x2="51.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="15.5" y1="-10" x2="15.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="37.5" y1="-10" x2="37.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="59.5" y1="-10" x2="59.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="23.5" y1="-10" x2="23.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="45.5" y1="-10" x2="45.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="67.5" y1="-10" x2="67.5" y2="7"  stroke="#000" stroke-linecap="round"></line><text id="270"  font-size="18"  transform = "rotate(180)"    fill="#000"><tspan x="1" y="-7">270</tspan></text></g><g  transform="translate(2812, 0)"><line x1="0.5" y1="-10" x2="0.5" y2="15"  stroke="#000" stroke-linecap="round"></line><line x1="8.5" y1="-10" x2="8.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="30.5" y1="-10" x2="30.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="51.5" y1="-10" x2="51.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="15.5" y1="-10" x2="15.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="37.5" y1="-10" x2="37.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="59.5" y1="-10" x2="59.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="23.5" y1="-10" x2="23.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="45.5" y1="-10" x2="45.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="67.5" y1="-10" x2="67.5" y2="7"  stroke="#000" stroke-linecap="round"></line><text id="380"  font-size="18"  transform = "rotate(180)"    fill="#000"><tspan x="1" y="-7">380</tspan></text></g><g  transform="translate(518, 0)"><line x1="0.5" y1="-10" x2="0.5" y2="15"  stroke="#000" stroke-linecap="round"></line><line x1="8.5" y1="-10" x2="8.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="30.5" y1="-10" x2="30.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="51.5" y1="-10" x2="51.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="15.5" y1="-10" x2="15.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="37.5" y1="-10" x2="37.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="59.5" y1="-10" x2="59.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="23.5" y1="-10" x2="23.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="45.5" y1="-10" x2="45.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="67.5" y1="-10" x2="67.5" y2="7"  stroke="#000" stroke-linecap="round"></line><text id="70"  font-size="18"  transform = "rotate(180)"    fill="#000"><tspan x="2" y="-7">70</tspan></text></g><g  transform="translate(1110, 0)"><line x1="0.5" y1="-10" x2="0.5" y2="15"  stroke="#000" stroke-linecap="round"></line><line x1="8.5" y1="-10" x2="8.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="30.5" y1="-10" x2="30.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="51.5" y1="-10" x2="51.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="15.5" y1="-10" x2="15.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="37.5" y1="-10" x2="37.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="59.5" y1="-10" x2="59.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="23.5" y1="-10" x2="23.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="45.5" y1="-10" x2="45.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="67.5" y1="-10" x2="67.5" y2="7"  stroke="#000" stroke-linecap="round"></line><text id="150"  font-size="18"  transform = "rotate(180)"    fill="#000"><tspan x="1" y="-7">150</tspan></text></g><g  transform="translate(1702, 0)"><line x1="0.5" y1="-10" x2="0.5" y2="15"  stroke="#000" stroke-linecap="round"></line><line x1="8.5" y1="-10" x2="8.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="30.5" y1="-10" x2="30.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="51.5" y1="-10" x2="51.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="15.5" y1="-10" x2="15.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="37.5" y1="-10" x2="37.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="59.5" y1="-10" x2="59.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="23.5" y1="-10" x2="23.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="45.5" y1="-10" x2="45.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="67.5" y1="-10" x2="67.5" y2="7"  stroke="#000" stroke-linecap="round"></line><text id="230"  font-size="18"  transform = "rotate(180)"    fill="#000"><tspan x="1" y="-7">230</tspan></text></g><g  transform="translate(2516, 0)"><line x1="0.5" y1="-10" x2="0.5" y2="15"  stroke="#000" stroke-linecap="round"></line><line x1="8.5" y1="-10" x2="8.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="30.5" y1="-10" x2="30.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="51.5" y1="-10" x2="51.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="15.5" y1="-10" x2="15.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="37.5" y1="-10" x2="37.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="59.5" y1="-10" x2="59.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="23.5" y1="-10" x2="23.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="45.5" y1="-10" x2="45.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="67.5" y1="-10" x2="67.5" y2="7"  stroke="#000" stroke-linecap="round"></line><text id="340"  font-size="18"  transform = "rotate(180)"    fill="#000"><tspan x="1" y="-7">340</tspan></text></g><g  transform="translate(2294, 0)"><line x1="0.5" y1="-10" x2="0.5" y2="15"  stroke="#000" stroke-linecap="round"></line><line x1="8.5" y1="-10" x2="8.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="30.5" y1="-10" x2="30.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="51.5" y1="-10" x2="51.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="15.5" y1="-10" x2="15.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="37.5" y1="-10" x2="37.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="59.5" y1="-10" x2="59.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="23.5" y1="-10" x2="23.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="45.5" y1="-10" x2="45.5" y2="7"  stroke="#000" stroke-linecap="round"></line><line x1="67.5" y1="-10" x2="67.5" y2="7"  stroke="#000" stroke-linecap="round"></line><text id="310"  font-size="18"  transform = "rotate(180)"    fill="#000"><tspan x="1" y="-7">310</tspan></text></g></g></g></svg>
\ No newline at end of file
diff --git a/src/hiprint/css/print-lock.css b/src/hiprint/css/print-lock.css
new file mode 100644
index 0000000..82c1404
--- /dev/null
+++ b/src/hiprint/css/print-lock.css
@@ -0,0 +1,352 @@
+@media print {
+  body {
+    margin: 0px;
+    padding: 0px;
+  }
+}
+
+@page {
+  margin: 0;
+}
+
+.hiprint-printPaper * {
+  box-sizing: border-box;
+  -moz-box-sizing: border-box; /* Firefox */
+  -webkit-box-sizing: border-box; /* Safari */
+}
+
+.hiprint-printPaper *:focus {
+  outline: -webkit-focus-ring-color auto 0px;
+}
+
+.hiprint-printPaper {
+  position: relative;
+  padding: 0 0 0 0;
+  page-break-after: always;
+  -webkit-user-select: none; /* Chrome/Safari/Opera */
+  -moz-user-select: none; /* Firefox */
+  user-select: none;
+  overflow-x: hidden;
+  overflow: hidden;
+}
+
+.hiprint-printPaper .hiprint-printPaper-content {
+  position: relative;
+}
+
+/* 鐏嫄娴忚鍣ㄦ墦鍗� 绗竴椤佃繃鍚� 閲嶅彔闂 */
+@-moz-document url-prefix() {
+  .hiprint-printPaper .hiprint-printPaper-content {
+    position: relative;
+    margin-top: 20px;
+    top: -20px
+  }
+}
+
+.hiprint-printPaper.design {
+  overflow: visible;
+}
+
+
+.hiprint-printTemplate .hiprint-printPanel {
+  page-break-after: always;
+}
+
+.hiprint-printPaper, hiprint-printPanel {
+  box-sizing: border-box;
+  border: 0px;
+}
+
+.hiprint-printPanel .hiprint-printPaper:last-child {
+  page-break-after: avoid;
+}
+
+.hiprint-printTemplate .hiprint-printPanel:last-child {
+  page-break-after: avoid;
+}
+
+.hiprint-printPaper .hideheaderLinetarget {
+  border-top: 0px dashed rgb(201, 190, 190) !important;
+}
+
+.hiprint-printPaper .hidefooterLinetarget {
+  border-top: 0px dashed rgb(201, 190, 190) !important;
+}
+
+.hiprint-printPaper.design {
+  border: 1px dashed rgba(170, 170, 170, 0.7);
+}
+
+.design .hiprint-printElement-table-content, .design .hiprint-printElement-longText-content {
+  overflow: hidden;
+  box-sizing: border-box;
+}
+
+.design .resize-panel {
+  box-sizing: border-box;
+  border: 1px dotted;
+}
+
+.hiprint-printElement-text {
+  background-color: transparent;
+  background-repeat: repeat;
+  padding: 0 0 0 0;
+  border: 0.75pt none rgb(0, 0, 0);
+  direction: ltr;
+  font-family: 'SimSun';
+  font-size: 9pt;
+  font-style: normal;
+  font-weight: normal;
+  padding-bottom: 0pt;
+  padding-left: 0pt;
+  padding-right: 0pt;
+  padding-top: 0pt;
+  text-align: left;
+  text-decoration: none;
+  line-height: 9.75pt;
+  box-sizing: border-box;
+  word-wrap: break-word;
+  word-break: break-all;
+}
+
+.design .hiprint-printElement-text-content {
+  border: 1px dashed rgb(206, 188, 188);
+  box-sizing: border-box;
+}
+
+.hiprint-printElement-longText {
+  background-color: transparent;
+  background-repeat: repeat;
+  border: 0.75pt none rgb(0, 0, 0);
+  direction: ltr;
+  font-family: 'SimSun';
+  font-size: 9pt;
+  font-style: normal;
+  font-weight: normal;
+  padding-bottom: 0pt;
+  padding-left: 0pt;
+  padding-right: 0pt;
+  padding-top: 0pt;
+  text-align: left;
+  text-decoration: none;
+  line-height: 9.75pt;
+  box-sizing: border-box;
+  word-wrap: break-word;
+  word-break: break-all;
+  /*white-space: pre-wrap*/
+}
+
+
+.hiprint-printElement-table {
+  background-color: transparent;
+  background-repeat: repeat;
+  color: rgb(0, 0, 0);
+  border-color: rgb(0, 0, 0);
+  border-style: none;
+  direction: ltr;
+  font-family: 'SimSun';
+  font-size: 9pt;
+  font-style: normal;
+  font-weight: normal;
+  padding-bottom: 0pt;
+  padding-left: 0pt;
+  padding-right: 0pt;
+  padding-top: 0pt;
+  text-align: left;
+  text-decoration: none;
+  padding: 0 0 0 0;
+  box-sizing: border-box;
+  line-height: 9.75pt;
+}
+
+.hiprint-printElement-table thead {
+  background: #e8e8e8;
+  font-weight: 700;
+}
+
+table.hiprint-printElement-tableTarget {
+  width: 100%;
+}
+
+.hiprint-printElement-tableTarget, .hiprint-printElement-tableTarget tr, .hiprint-printElement-tableTarget td {
+  border-color: rgb(0, 0, 0);
+  /*border-style: none;*/
+  /*border: 1px solid rgb(0, 0, 0);*/
+  font-weight: normal;
+  direction: ltr;
+  padding-bottom: 0pt;
+  padding-left: 4pt;
+  padding-right: 4pt;
+  padding-top: 0pt;
+  text-decoration: none;
+  vertical-align: middle;
+  box-sizing: border-box;
+  word-wrap: break-word;
+  word-break: break-all;
+  /*line-height: 9.75pt;
+  font-size: 9pt;*/
+}
+
+.hiprint-printElement-tableTarget-border-all {
+  border: 1px solid;
+}
+.hiprint-printElement-tableTarget-border-none {
+  border: 0px solid;
+}
+.hiprint-printElement-tableTarget-border-lr {
+  border-left: 1px solid;
+  border-right: 1px solid;
+}
+.hiprint-printElement-tableTarget-border-left {
+  border-left: 1px solid;
+}
+.hiprint-printElement-tableTarget-border-right {
+  border-right: 1px solid;
+}
+.hiprint-printElement-tableTarget-border-tb {
+  border-top: 1px solid;
+  border-bottom: 1px solid;
+}
+.hiprint-printElement-tableTarget-border-top {
+  border-top: 1px solid;
+}
+.hiprint-printElement-tableTarget-border-bottom {
+  border-bottom: 1px solid;
+}
+
+.hiprint-printElement-tableTarget-border-td-none td {
+  border: 0px solid;
+}
+.hiprint-printElement-tableTarget-border-td-all td:not(:nth-last-child(-n+2)) {
+  border-right: 1px solid;
+}
+.hiprint-printElement-tableTarget-border-td-all td:not(last-child) {
+  border-right: 1px solid;
+}
+.hiprint-printElement-tableTarget-border-td-all td:last-child {
+  border-left: 1px solid;
+}
+.hiprint-printElement-tableTarget-border-td-all td:last-child:first-child {
+  border-left: none;
+}
+
+/*.hiprint-printElement-tableTarget tr,*/
+.hiprint-printElement-tableTarget td {
+  height: 18pt;
+}
+
+.hiprint-printPaper .hiprint-paperNumber {
+  font-size: 9pt;
+}
+
+.design .hiprint-printElement-table-handle {
+  position: absolute;
+  height: 21pt;
+  width: 21pt;
+  background: red;
+  z-index: 1;
+}
+
+.hiprint-printPaper .hiprint-paperNumber-disabled {
+  float: right !important;
+  right: 0 !important;
+  color: gainsboro !important;
+}
+
+.hiprint-printElement-vline, .hiprint-printElement-hline {
+  border: 0px none rgb(0, 0, 0);
+
+}
+
+.hiprint-printElement-vline {
+  border-left: 0.75pt solid #000;
+  border-right: 0px none rgb(0, 0, 0) !important;
+  border-bottom: 0px none rgb(0, 0, 0) !important;
+  border-top: 0px none rgb(0, 0, 0) !important;
+}
+
+.hiprint-printElement-hline {
+  border-top: 0.75pt solid #000;
+  border-right: 0px none rgb(0, 0, 0) !important;
+  border-bottom: 0px none rgb(0, 0, 0) !important;
+  border-left: 0px none rgb(0, 0, 0) !important;
+}
+
+.hiprint-printElement-oval, .hiprint-printElement-rect {
+  border: 0.75pt solid #000;
+}
+
+.hiprint-text-content-middle {
+}
+
+.hiprint-text-content-middle > div {
+  display: grid;
+  align-items: center;
+}
+
+.hiprint-text-content-bottom {
+}
+
+.hiprint-text-content-bottom > div {
+  display: grid;
+  align-items: flex-end;
+}
+
+.hiprint-text-content-wrap {
+}
+
+.hiprint-text-content-wrap .hiprint-text-content-wrap-nowrap {
+  white-space: nowrap;
+}
+
+.hiprint-text-content-wrap .hiprint-text-content-wrap-clip {
+  white-space: nowrap;
+  overflow: hidden;
+  text-overflow: clip;
+}
+
+.hiprint-text-content-wrap .hiprint-text-content-wrap-ellipsis {
+  white-space: nowrap;
+  overflow: hidden;
+  text-overflow: ellipsis;
+}
+
+/*hi-grid-row */
+.hi-grid-row {
+  position: relative;
+  height: auto;
+  margin-right: 0;
+  margin-left: 0;
+  zoom: 1;
+  display: block;
+  box-sizing: border-box;
+}
+
+.hi-grid-row::after, .hi-grid-row::before {
+  display: table;
+  content: '';
+  box-sizing: border-box;
+}
+
+.hi-grid-col {
+  display: block;
+  box-sizing: border-box;
+  position: relative;
+  float: left;
+  flex: 0 0 auto;
+}
+
+.table-grid-row {
+  margin-left: -0pt;
+  margin-right: -0pt;
+}
+
+.tableGridColumnsGutterRow {
+  padding-left: 0pt;
+  padding-right: 0pt;
+}
+
+.hiprint-gridColumnsFooter {
+  text-align: left;
+  clear: both;
+}
diff --git a/src/hiprint/etypes/default-etyps-provider.js b/src/hiprint/etypes/default-etyps-provider.js
new file mode 100644
index 0000000..a1d9db1
--- /dev/null
+++ b/src/hiprint/etypes/default-etyps-provider.js
@@ -0,0 +1,153 @@
+export default function (hiprint) {
+  return function (options) {
+    var addElementTypes = function (context) {
+      context.removePrintElementTypes("defaultModule");
+      context.addPrintElementTypes("defaultModule", [
+        new hiprint.PrintElementTypeGroup("甯歌", [
+          {
+            tid: "defaultModule.text",
+            title: "鏂囨湰",
+            data: "",
+            type: "text"
+          },
+          {
+            tid: "defaultModule.image",
+            title: "鍥剧墖",
+            data: "",
+            type: "image"
+          },
+          {
+            tid: "defaultModule.longText",
+            title: "闀挎枃",
+            data: "155123456789",
+            type: "longText"
+          },
+          {
+            tid: "defaultModule.table",
+            field: "table",
+            title: "琛ㄦ牸",
+            type: "table",
+            groupFields: ["name"],
+            groupFooterFormatter: function (group, option) {
+              return "杩欓噷鑷畾涔夌粺璁¤剼淇℃伅";
+            },
+            columns: [
+              [
+                {
+                  title: "琛屽彿",
+                  fixed: true,
+                  rowspan: 2,
+                  field: "id",
+                  width: 70
+                },
+                {title: "浜哄憳淇℃伅", colspan: 2},
+                {title: "閿�鍞粺璁�", colspan: 2}
+              ],
+              [
+                {
+                  title: "濮撳悕",
+                  align: "left",
+                  field: "name",
+                  width: 100
+                },
+                {title: "鎬у埆", field: "gender", width: 100},
+                {
+                  title: "閿�鍞暟閲�",
+                  field: "count",
+                  width: 100
+                },
+                {
+                  title: "閿�鍞噾棰�",
+                  field: "amount",
+                  width: 100
+                }
+              ]
+            ],
+            editable: true,
+            columnDisplayEditable: true,//鍒楁樉绀烘槸鍚﹁兘缂栬緫
+            columnDisplayIndexEditable: true,//鍒楅『搴忔樉绀烘槸鍚﹁兘缂栬緫
+            columnTitleEditable: true,//鍒楁爣棰樻槸鍚﹁兘缂栬緫
+            columnResizable: true, //鍒楀鏄惁鑳借皟鏁�
+            columnAlignEditable: true,//鍒楀榻愭槸鍚﹁皟鏁�
+            isEnableEditField: true, //缂栬緫瀛楁
+            isEnableContextMenu: true, //寮�鍚彸閿彍鍗� 榛樿true
+            isEnableInsertRow: true, //鎻掑叆琛�
+            isEnableDeleteRow: true, //鍒犻櫎琛�
+            isEnableInsertColumn: true, //鎻掑叆鍒�
+            isEnableDeleteColumn: true, //鍒犻櫎鍒�
+            isEnableMergeCell: true, //鍚堝苟鍗曞厓鏍�
+          },
+          {
+            tid: "defaultModule.emptyTable",
+            title: "绌虹櫧琛ㄦ牸",
+            type: "table",
+            columns: [
+              [
+                {
+                  title: "",
+                  field: "",
+                  width: 100
+                },
+                {
+                  title: "",
+                  field: "",
+                  width: 100
+                }
+              ]
+            ],
+          },
+          {
+            tid: "defaultModule.html",
+            title: "html",
+            formatter: function (data, options) {
+              return '<div style="height:50pt;width:50pt;background:red;border-radius: 50%;"></div>';
+            },
+            type: "html"
+          },
+          {
+            tid: "defaultModule.customText",
+            title: "鑷畾涔夋枃鏈�",
+            customText: "鑷畾涔夋枃鏈�",
+            custom: true,
+            type: "text"
+          }
+        ]),
+        new hiprint.PrintElementTypeGroup("杈呭姪", [
+          {
+            tid: "defaultModule.hline",
+            title: "妯嚎",
+            type: "hline"
+          },
+          {
+            tid: "defaultModule.vline",
+            title: "绔栫嚎",
+            type: "vline"
+          },
+          {
+            tid: "defaultModule.rect",
+            title: "鐭╁舰",
+            type: "rect"
+          },
+          {
+            tid: "defaultModule.oval",
+            title: "妞渾",
+            type: "oval"
+          },
+          {
+            tid: 'defaultModule.barcode',
+            title: '鏉″舰鐮�',
+            type: 'barcode',
+          },
+          {
+            tid: 'defaultModule.qrcode',
+            title: '浜岀淮鐮�',
+            type: 'qrcode',
+          }
+        ])
+      ]);
+    };
+    return {
+      addElementTypes: addElementTypes
+    };
+  };
+};
diff --git a/src/hiprint/hiprint.bundle.js b/src/hiprint/hiprint.bundle.js
new file mode 100644
index 0000000..a092ac0
--- /dev/null
+++ b/src/hiprint/hiprint.bundle.js
@@ -0,0 +1,11379 @@
+/* eslint-disable */
+/**
+ * jQuery Hiprint 2.5.4
+ *
+ * Copyright (c) 2016-2021 www.hinnn.com. All rights reserved.
+ *
+ * Licensed under the LGPL or commercial licenses
+ * To use it on other terms please contact us: hinnn.com@gmail.com
+ *
+ */
+
+"use strict";
+
+function _instanceof(left, right) {
+  if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) {
+    return !!right[Symbol.hasInstance](left);
+  } else {
+    return left instanceof right;
+  }
+}
+
+function _typeof(obj) {
+  if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
+    _typeof = function _typeof(obj) {
+      return typeof obj;
+    };
+  } else {
+    _typeof = function _typeof(obj) {
+      return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
+    };
+  }
+  return _typeof(obj);
+}
+
+/**
+ * import 鐩稿叧璧勬簮
+ */
+import $ from "jquery";
+// js棰滆壊閫夋嫨
+import "@claviska/jquery-minicolors/jquery.minicolors.min";
+// 鏉″舰鐮�
+import JsBarcode from "jsbarcode";
+// 浜岀淮鐮�
+import "./plugins/qrcode.js";
+import bwipjs from "bwip-js"
+// 姘村嵃
+import watermark from "./plugins/watermark.js";
+// 鐩存帴鎵撳嵃闇�瑕�
+import {io} from "socket.io-client";
+//寮曞叆鏍囧昂
+import lImg from "./css/image/l_img.svg";
+import vImg from "./css/image/v_img.svg";
+// pdf
+import {jsPDF} from "jspdf";
+import domtoimage from 'dom-to-image-more'
+// 鏁板瓧杞腑鏂�,澶у啓,閲戦
+import Nzh from "nzh/dist/nzh.min.js";
+// 瑙f瀽svg 鍒� canvas, 浜岀淮鐮佹潯褰㈢爜闇�瑕�
+import Canvg from 'canvg';
+// 榛樿鑷畾涔夋嫋鎷藉垪琛�
+import defaultTypeProvider from "./etypes/default-etyps-provider";
+
+window.$ = window.jQuery = $;
+window.autoConnect = true;
+window.io = io;
+
+var languages = {}
+const ctx = require.context("../i18n", true, /\.json$/);
+ctx.keys().forEach(key => {
+  languages[key.match(/\.\/([^.]+)/)[1]] = ctx(key)
+})
+
+var i18n = {
+  lang: 'cn',
+  languages,
+  __: function(key, params) {
+    var str = this.languages[this.lang][key] || key
+    if (params && params instanceof Object) {
+      Object.keys(params).forEach(key => {
+        str = str.replace(new RegExp(`{{${key}}}`, 'g'), params[key])
+      })
+      return str
+    } else if (params) {
+      str= str.replace(/%s/g, params)
+      return str
+    } else {
+      return str
+    }
+  },
+  __n: function(key, val) {
+    var str = this.languages[this.lang][key]
+    str = str.replace(/%s/g, val)
+    return str
+  },
+}
+
+var hiprint = function (t) {
+  var e = {};
+
+  function n(i) {
+    if (e[i]) return e[i].exports;
+    var o = e[i] = {
+      i: i,
+      l: !1,
+      exports: {}
+    };
+    return t[i].call(o.exports, o, o.exports, n), o.l = !0, o.exports;
+  }
+
+  return n.m = t, n.c = e, n.d = function (t, e, i) {
+    n.o(t, e) || Object.defineProperty(t, e, {
+      enumerable: !0,
+      get: i
+    });
+  }, n.r = function (t) {
+    "undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(t, Symbol.toStringTag, {
+      value: "Module"
+    }), Object.defineProperty(t, "__esModule", {
+      value: !0
+    });
+  }, n.t = function (t, e) {
+    if (1 & e && (t = n(t)), 8 & e) return t;
+    if (4 & e && "object" == _typeof(t) && t && t.__esModule) return t;
+    var i = Object.create(null);
+    if (n.r(i), Object.defineProperty(i, "default", {
+      enumerable: !0,
+      value: t
+    }), 2 & e && "string" != typeof t) for (var o in t) {
+      n.d(i, o, function (e) {
+        return t[e];
+      }.bind(null, o));
+    }
+    return i;
+  }, n.n = function (t) {
+    var e = t && t.__esModule ? function () {
+      return t.default;
+    } : function () {
+      return t;
+    };
+    return n.d(e, "a", e), e;
+  }, n.o = function (t, e) {
+    return Object.prototype.hasOwnProperty.call(t, e);
+  }, n.p = "/", n(n.s = 21);
+}([function (t, e, n) {/**/
+  "use strict";
+
+  var i;
+  n.d(e, "a", function () {
+    return hinnn;
+  }), window.hinnn = {}, hinnn.event = (i = {}, {
+    on: function on(t, e) {
+      i[t] || (i[t] = []), i[t].push(e);
+    },
+    id: 0,
+    off: function off(t, e) {
+      var n = i[t];
+      if (n) {
+        for (var o = -1, r = 0; r < n.length; r++) {
+          if (n[r] === e) {
+            o = r;
+            break;
+          }
+        }
+        o < 0 || i[t].splice(o, 1);
+      }
+    },
+    trigger: function trigger(t) {
+      var e = i[t];
+      if (e && e.length) for (var n = Array.prototype.slice.call(arguments, 1), o = 0; o < e.length; o++) {
+        e[o].apply(this, n);
+      }
+    },
+    clear: function clear(t) {
+      i[t] = [];
+    },
+    getId: function getId() {
+      return this.id += 1, this.id;
+    },
+    getNameWithId: function getNameWithId(t) {
+      return t + "-" + this.getId();
+    }
+  }), hinnn.form = {
+    serialize: function serialize(t) {
+      var e = $(t).serializeArray(),
+        n = {};
+      return $.each(e, function () {
+        n[this.name] ? "[object Array]" == Object.prototype.toString.call(n[this.name]) ? n[this.name].push(this.value) : n[this.name] = [n[this.name], this.value] : n[this.name] = this.value;
+      }), n;
+    }
+  }, hinnn.pt = {
+    toPx: function toPx(t) {
+      return t * (this.getDpi() / 72);
+    },
+    toMm: function toMm(t) {
+      return hinnn.px.toMm(hinnn.pt.toPx(t));
+    },
+    dpi: 0,
+    getDpi: function getDpi() {
+      if (!this.dpi) {
+        var _t2 = document.createElement("DIV");
+
+        _t2.style.cssText = "width:1in;height:1in;position:absolute;left:0px;top:0px;z-index:99;visibility:hidden", document.body.appendChild(_t2), this.dpi = _t2.offsetHeight;
+      }
+
+      return this.dpi;
+    }
+  }, hinnn.px = {
+    toPt: function toPt(t) {
+      return t * (72 / this.getDpi());
+    },
+    toMm: function toMm(t) {
+      return Math.round((t / this.getDpi() * 25.4) * 100) / 100;
+    },
+    dpi: 0,
+    getDpi: function getDpi() {
+      if (!this.dpi) {
+        var _t3 = document.createElement("DIV");
+
+        _t3.style.cssText = "width:1in;height:1in;position:absolute;left:0px;top:0px;z-index:99;visibility:hidden", document.body.appendChild(_t3), this.dpi = _t3.offsetHeight;
+      }
+
+      return this.dpi;
+    }
+  }, hinnn.mm = {
+    toPt: function toPt(t) {
+      return 72 / 25.4 * t;
+    },
+    toPx: function toPx(t) {
+      return hinnn.pt.toPx(hinnn.mm.toPt(t));
+    }
+  }, hinnn.throttle = function (t, e, n) {
+    var i,
+      o,
+      r,
+      a = null,
+      p = 0;
+    n || (n = {});
+
+    var s = function s() {
+      p = !1 === n.leading ? 0 : _.now(), a = null, r = t.apply(i, o), a || (i = o = null);
+    };
+
+    return function () {
+      var l = _.now();
+
+      p || !1 !== n.leading || (p = l);
+      var u = e - (l - p);
+      return i = this, o = arguments, u <= 0 || u > e ? (a && (clearTimeout(a), a = null), p = l, r = t.apply(i, o), a || (i = o = null)) : a || !1 === n.trailing || (a = setTimeout(s, u)), r;
+    };
+  }, hinnn.debounce = function (t, e, n) {
+    var i,
+      o,
+      r,
+      a,
+      p,
+      s = function s() {
+        var l = _.now() - a;
+        l < e && l >= 0 ? i = setTimeout(s, e - l) : (i = null, n || (p = t.apply(r, o), i || (r = o = null)));
+      };
+
+    return function () {
+      r = this, o = arguments, a = _.now();
+      var l = n && !i;
+      return i || (i = setTimeout(s, e)), l && (p = t.apply(r, o), r = o = null), p;
+    };
+  }, hinnn.toUtf8 = function (t) {
+    var e, n, i, o;
+
+    for (e = "", i = t.length, n = 0; n < i; n++) {
+      (o = t.charCodeAt(n)) >= 1 && o <= 127 ? e += t.charAt(n) : o > 2047 ? (e += String.fromCharCode(224 | o >> 12 & 15), e += String.fromCharCode(128 | o >> 6 & 63), e += String.fromCharCode(128 | o >> 0 & 63)) : (e += String.fromCharCode(192 | o >> 6 & 31), e += String.fromCharCode(128 | o >> 0 & 63));
+    }
+
+    return e;
+  }, hinnn.groupBy = function (t, e, n) {
+    var i = {};
+    return t.forEach(function (t) {
+      var o = JSON.stringify(n(t));
+      i[o] || (i[o] = {
+        rows: []
+      }, e.forEach(function (e) {
+        i[o][e] = t[e];
+      })), i[o].rows.push(t);
+    }), Object.keys(i).map(function (t) {
+      return i[t];
+    });
+  }, hinnn.orderBy = function (t, e) {
+    if (t.length <= 1) return t;
+    var n = Math.floor(t.length / 2),
+      i = t.splice(n, 1)[0],
+      o = [],
+      r = [];
+    var _iteratorNormalCompletion = true;
+    var _didIteratorError = false;
+    var _iteratorError = undefined;
+
+    try {
+      for (var _iterator = t[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
+        var _n = _step.value;
+        e(_n) < e(i) ? o.push(_n) : r.push(_n);
+      }
+    } catch (err) {
+      _didIteratorError = true;
+      _iteratorError = err;
+    } finally {
+      try {
+        if (!_iteratorNormalCompletion && _iterator.return != null) {
+          _iterator.return();
+        }
+      } finally {
+        if (_didIteratorError) {
+          throw _iteratorError;
+        }
+      }
+    }
+
+    return this.orderBy(o, e).concat([i], this.orderBy(r, e));
+  }, hinnn.dateFormat = function (t, e) {
+    if (t) try {
+      var o = new Date(`${t}`);
+      var n = {
+        "y+": o.getFullYear(),
+        "M+": o.getMonth() + 1,
+        "d+": o.getDate(),
+        "H+": o.getHours(),
+        "m+": o.getMinutes(),
+        "s+": o.getSeconds(),
+        "q+": Math.floor((o.getMonth() + 3) / 3),
+        S: o.getMilliseconds()
+      };
+
+      for (var i in /(y+)/.test(e) && (e = e.replace(RegExp.$1, (o.getFullYear() + "").substr(4 - RegExp.$1.length))), n) {
+        new RegExp("(" + i + ")").test(e) && (e = e.replace(RegExp.$1, 1 == RegExp.$1.length ? n[i] : ("00" + n[i]).substr(("" + n[i]).length)));
+      }
+
+      return e;
+    } catch (t) {
+      return console.log(t), "";
+    }
+    return "";
+  }, hinnn.numFormat = function (t, e) {
+    if (t != void 0) try {
+      var o = "string" == typeof t ? parseFloat(t) : t;
+      var l = parseInt(e);
+      if (l > 0) {
+        return o.toFixed(l);
+      }
+      return parseInt(o.toString());
+    } catch (t) {
+      return console.log(t), "";
+    }
+    return "";
+  }, hinnn.toUpperCase = function(type, val) {
+    if (!Nzh) return val;
+    var backStr = val;
+    switch (type) {
+		case "0":
+			backStr = Nzh.cn.encodeS(val);
+			break;
+		case "1":
+			backStr = Nzh.cn.encodeS(val, {tenMin: false});
+			break;
+		case "2":
+			backStr = Nzh.cn.encodeB(val, {tenMin: true});
+			break;
+		case "3":
+			backStr = Nzh.cn.encodeB(val);
+			break;
+		case "4":
+			backStr = Nzh.cn.toMoney(val, {tenMin: true});
+			break;
+		case "5":
+			backStr = Nzh.cn.toMoney(val);
+			break;
+		case "6":
+			backStr = Nzh.cn.toMoney(val, {complete: true});
+			break;
+		case "7":
+			backStr = Nzh.cn.toMoney(val, {complete: true, outSymbol: false});
+			break;
+	}
+    return backStr;
+  };
+}, function (t, e, n) {
+  "use strict";
+
+  n.d(e, "a", function () {
+    return o;
+  });
+
+  var i = n(9),
+    o = function () {
+      function t() {
+        // see hiprint.config.js
+      }
+
+      return t.prototype.init = function (t) {
+        t && $.extend(this, t);
+      }, t.prototype.on = function (t, c) {
+        hinnn.event.on(t, c);
+      }, t.prototype.clear = function (t) {
+        hinnn.event.clear(t);
+      }, t.prototype.registerItems = function (items) {
+        items.forEach(function (t) {
+          i.a.registerItem(new t());
+        });
+      }, Object.defineProperty(t, "instance", {
+        get: function get() {
+          return t._instance || (t._instance = new t(), window.HIPRINT_CONFIG && $.extend(t._instance, HIPRINT_CONFIG), t._instance.optionItems && t._instance.optionItems.forEach(function (t) {
+            i.a.registerItem(new t());
+          })), t._instance;
+        },
+        enumerable: !0,
+        configurable: !0
+      }), t;
+    }();
+}, function (t, e, n) {
+  "use strict";
+
+  var i = function () {
+    function t(t) {
+      this.printElement = t;
+    }
+
+    return t.prototype.updatePosition = function (t, e) {
+      this.left = t, this.top = e;
+    }, t;
+  }();
+
+  n.d(e, "a", function () {
+    return o;
+  });
+
+  var o = function () {
+    function t() {
+      this.printTemplateContainer = {}, this.A1 = {
+        width: 841,
+        height: 594
+      }, this.A2 = {
+        width: 420,
+        height: 594
+      }, this.A3 = {
+        width: 420,
+        height: 297
+      }, this.A4 = {
+        width: 210,
+        height: 297
+      }, this.A5 = {
+        width: 210,
+        height: 148
+      }, this.A6 = {
+        width: 105,
+        height: 148
+      }, this.A7 = {
+        width: 105,
+        height: 74
+      }, this.A8 = {
+        width: 52,
+        height: 74
+      }, this.B1 = {
+        width: 1e3,
+        height: 707
+      }, this.B2 = {
+        width: 500,
+        height: 707
+      }, this.B3 = {
+        width: 500,
+        height: 353
+      }, this.B4 = {
+        width: 250,
+        height: 353
+      }, this.B5 = {
+        width: 250,
+        height: 176
+      }, this.B6 = {
+        width: 125,
+        height: 176
+      }, this.B7 = {
+        width: 125,
+        height: 88
+      }, this.B8 = {
+        width: 62,
+        height: 88
+      }, this.dragLengthCNum = function (t, e) {
+        var n = .75 * t;
+        return e && (e = e), Math.round(n / e) * e;
+      };
+    }
+
+    return Object.defineProperty(t, "instance", {
+      get: function get() {
+        return this._instance || (this._instance = new t()), this._instance;
+      },
+      enumerable: !0,
+      configurable: !0
+    }), t.prototype.getDragingPrintElement = function () {
+      return t.instance.dragingPrintElement;
+    }, t.prototype.setDragingPrintElement = function (e) {
+      t.instance.dragingPrintElement = new i(e);
+    }, t.prototype.guid = function () {
+      return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, function (t) {
+        var e = 16 * Math.random() | 0;
+        return ("x" == t ? e : 3 & e | 8).toString(16);
+      });
+    }, t.prototype.imageToBase64 = function (t) {
+      if (-1 == $(t).attr("src").indexOf("base64")) try {
+        var e = document.createElement("canvas"),
+          n = new Image();
+        n.src = t.attr("src"), e.width = n.width, e.height = n.height, e.getContext("2d").drawImage(n, 0, 0), t.attr("src", e.toDataURL("image/png"));
+      } catch (e) {
+        try {
+          this.xhrLoadImage(t);
+        } catch (t) {
+          console.log(t);
+        }
+      }
+    }, t.prototype.xhrLoadImage = function (t) {
+    }, t.prototype.transformImg = function (t) {
+      var e = this;
+      t.map(function (t, n) {
+        e.imageToBase64($(n));
+      });
+    }, t.prototype.getPrintTemplateById = function (e) {
+      return t.instance.printTemplateContainer[e];
+    }, t.prototype.setPrintTemplateById = function (e, n) {
+      return t.instance.printTemplateContainer[e] = n;
+    }, t;
+  }();
+}, function (t, e, n) {
+  "use strict";
+
+  var i = function () {
+    return function () {
+    };
+  }();
+
+  n.d(e, "a", function () {
+    return o;
+  });
+
+  var o = function () {
+    function t(t) {
+      t = t || {}, this.left = t.left, this.top = t.top, this.topInDesign = this.top, this.height = t.height, this.width = t.width, this.transform = t.transform, this.init(t);
+    }
+
+    return t.prototype.setDefault = function (t) {
+      this.defaultOptions = t, this.initSize();
+      Object.keys(this.defaultOptions).forEach(key => {
+        this[key] = this[key] || this.defaultOptions[key];
+      })
+    }, t.prototype.initSize = function () {
+      this.width || this.setWidth(this.defaultOptions.width), this.height || this.setHeight(this.defaultOptions.height);
+    }, t.prototype.initSizeByHtml = function (t, e) {
+      this.width || this.setWidth(t), this.height || this.setHeight(e);
+    }, t.prototype.getRectInfo = function () {
+      var d = {w: 0, h: 0, diffW: 0, diffH: 0};
+      if (this.transform) {
+        var rad = this.transform * Math.PI / 180,
+          width = this.width, height = this.height,
+          sin = Math.sin(rad), cos = Math.cos(rad),
+          w = Math.abs(width * cos) + Math.abs(height * sin),
+          h = Math.abs(width * sin) + Math.abs(height * cos),
+          diffW = (width - w) / 2, diffH = (height - h) / 2;
+        d.w = w, d.h = h, d.diffW = diffW, d.diffH = diffH;
+      }
+      return d;
+    }, t.prototype.getLeft = function () {
+      return this.left - 0;
+    }, t.prototype.posLeft = function () {
+      var left = this.left;
+      if (this.transform) left += this.getRectInfo().diffW;
+      return Math.floor(left * 10) / 10;
+    }, t.prototype.setRotate = function (t) {
+      null != t && (this.transform = t);
+    }, t.prototype.displayLeft = function (t) {
+      if (this.transform && t) {
+        return this.left + this.getRectInfo().diffW + "pt";
+      }
+      return this.left + "pt";
+    }, t.prototype.setLeft = function (t) {
+      null != t && (this.left = t);
+    }, t.prototype.getTop = function () {
+      return this.top - 0;
+    }, t.prototype.posTop = function () {
+      var top = this.top;
+      if (this.transform) top += this.getRectInfo().diffH;
+      return Math.floor(top * 10) / 10;
+    }, t.prototype.getTopInDesign = function () {
+      return this.topInDesign;
+    }, t.prototype.displayTop = function (t) {
+      if (this.transform && t) {
+        return this.top + this.getRectInfo().diffH + "pt";
+      }
+      return this.top + "pt";
+    }, t.prototype.setTop = function (t) {
+      null != t && (this.top = t);
+    }, t.prototype.copyDesignTopFromTop = function () {
+      this.topInDesign = this.top;
+    }, t.prototype.getHeight = function () {
+      if (this.transform) {
+        var i = this.getRectInfo();
+        return i.h + i.diffH;
+      }
+      return this.height - 0;
+    }, t.prototype.displayHeight = function () {
+      return this.height + "pt";
+    }, t.prototype.setHeight = function (t) {
+      null != t && (this.height = t);
+    }, t.prototype.getWidth = function () {
+      if (this.transform) {
+        var i = this.getRectInfo();
+        return i.w + i.diffW;
+      }
+      return this.width - 0;
+    }, t.prototype.displayWidth = function () {
+      return this.width + "pt";
+    }, t.prototype.setWidth = function (t) {
+      null != t && (this.width = t);
+    }, t.prototype.getValueFromOptionsOrDefault = function (t) {
+      return null == this[t] ? this.defaultOptions[t] : this[t];
+    }, t.prototype.getPrintElementOptionEntity = function () {
+      var t = new i(),
+        e = this;
+      return Object.keys(this).filter(function (t) {
+        return "topInDesign" != t;
+      }).forEach(function (n) {
+        if ("number" != typeof e[n] && "string" != typeof e[n] && !['fields'].includes(n) && _typeof(e[n]) != _typeof(!0) || (t[n] = e[n]), "style" == n) {
+          t.style = {};
+          var i = e[n];
+          if (i) Object.keys(i).forEach(function (e) {
+            "number" != typeof i[e] && "string" != typeof i[e] || (t.style[e] = i[e]);
+          });
+        }
+      }), t;
+    }, t.prototype.init = function (t) {
+      var e = this;
+      t && Object.keys(t).forEach(function (n) {
+        e[n] = t[n];
+      });
+    }, t;
+  }();
+}, function (module, __webpack_exports__, __webpack_require__) {
+  "use strict";
+
+  __webpack_require__.d(__webpack_exports__, "a", function () {
+    return BasePrintElement;
+  });
+
+  var _entity_PrintElementEntity__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(17),
+    _HiPrintConfig__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1),
+    _print_element_option_PrintElementOptionItemManager__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(9),
+    _dto_PaperHtmlResult__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(6),
+    _assets_plugins_hinnn__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(0),
+    _PrintReferenceElement__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(8),
+    _HiPrintlib__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(2),
+    BasePrintElement = function () {
+      function BasePrintElement(t) {
+        this.printElementType = t, this.id = _HiPrintlib__WEBPACK_IMPORTED_MODULE_6__.a.instance.guid();
+      }
+
+      return BasePrintElement.prototype.getConfigOptionsByName = function (t) {
+        return _HiPrintConfig__WEBPACK_IMPORTED_MODULE_1__.a.instance[t];
+      }, BasePrintElement.prototype.getProxyTarget = function (t) {
+        t && this.SetProxyTargetOption(t);
+        var e = this.getData(),
+          n = this.createTarget(this.getTitle(), e);
+        return this.updateTargetSize(n), this.css(n, e), n;
+      }, BasePrintElement.prototype.SetProxyTargetOption = function (t) {
+        this.options.getPrintElementOptionEntity();
+        $.extend(this.options, t);
+        this.copyFromType()
+      }, BasePrintElement.prototype.showInPage = function (t, e) {
+        var n = this.options.showInPage,
+          i = this.options.unShowInPage;
+
+        if (n) {
+          if ("first" == n) return 0 == t;
+          if (t == e - 1 && "last" == i) return !1;
+          if ("odd" == n) return (0 != t || "first" != i) && t % 2 == 0;
+          if ("even" == n) return t % 2 == 1;
+          if ("last" == n) return t == e - 1;
+        }
+
+        return (0 != t || "first" != i) && (t != e - 1 || "last" != i);
+      }, BasePrintElement.prototype.setTemplateId = function (t) {
+        this.templateId = t;
+      }, BasePrintElement.prototype.setPanel = function (t) {
+        this.panel = t;
+      }, BasePrintElement.prototype.getField = function () {
+        return this.options.field || this.printElementType.field;
+      }, BasePrintElement.prototype.getTitle = function () {
+        return this.printElementType.title;
+      }, BasePrintElement.prototype.updateSizeAndPositionOptions = function (t, e, n, i) {
+        const template = _HiPrintlib__WEBPACK_IMPORTED_MODULE_6__.a.instance.getPrintTemplateById(this.templateId)
+        if (this.panel !== void 0 && !template.willOutOfBounds) {
+          const panelWidthPt = hinnn.mm.toPt(this.panel.width)
+          const panelHeightPt = hinnn.mm.toPt(this.panel.height)
+          if (t < 0) {
+            return
+          }
+          if (e < 0) {
+            return
+          }
+          if (t + this.options.width > panelWidthPt) {
+            return
+          }
+          if (e + this.options.height > panelHeightPt) {
+            return
+          }
+        }
+        this.options.setLeft(t), this.options.setTop(e), this.options.copyDesignTopFromTop(), this.options.setWidth(n), this.options.setHeight(i);
+      }, BasePrintElement.prototype.initSizeByHtml = function (t) {
+        if (t && t.length) {
+          this.createTempContainer();
+          var e = t.clone();
+          this.getTempContainer().append(e), this.options.initSizeByHtml(parseInt(hinnn.px.toPt(e.width()).toString()), parseInt(hinnn.px.toPt(e.height()).toString())), this.removeTempContainer();
+        }
+      }, BasePrintElement.prototype.updateTargetSize = function (t) {
+        t.css("width", this.options.displayWidth()), t.css("height", this.options.displayHeight());
+      }, BasePrintElement.prototype.updateTargetWidth = function (t) {
+        t.css("width", this.options.displayWidth());
+      }, BasePrintElement.prototype.getDesignTarget = function (t) {
+        var e = this, lastTimeStamp = 0;
+        return this.designTarget = this.getHtml(t)[0].target, this.designPaper = t, this.designTarget.click(function (ev) {
+          if (ev.timeStamp - lastTimeStamp > 500) {
+            hinnn.event.trigger(e.getPrintElementSelectEventKey(), {
+              printElement: e
+            });
+          }
+          lastTimeStamp = ev.timeStamp;
+        }), this.designTarget.dblclick(function (ev) {
+          var c = e.designTarget.find(".hiprint-printElement-content");
+          if (c) {
+            var p = e.designTarget.find(".resize-panel");
+            if (e.printElementType.type == "text" && !(e.options.textType && "text" != e.options.textType)) {
+              e._editing = true;
+              e.designTarget.hidraggable('update', {draggable: false});
+              c.css("cursor", "text"), c.addClass("editing");
+              e.designTarget.addClass("editing");
+              c.click(function (ev) {
+                if (e._editing) {
+                  ev.stopPropagation();
+                }
+              })
+              c.attr("contenteditable", true), p && p.css("display", "none");
+              e.selectEnd(c);
+            }
+          }
+        }), this.designTarget;
+      }, BasePrintElement.prototype.selectEnd = function (el) {
+        el.focus();
+        if (typeof window.getSelection != "undefined"
+          && typeof document.createRange != "undefined") {
+          var r = document.createRange();
+          r.selectNodeContents(el[0]);
+          r.collapse(false);
+          var sel = window.getSelection();
+          sel.removeAllRanges();
+          sel.addRange(r);
+        } else if (typeof document.body.createTextRange != "undefined") {
+          var r = document.body.createTextRange();
+          r.moveToElementText(el[0]), r.collapse(false), r.select();
+        }
+      }, BasePrintElement.prototype.updateByContent = function (clear) {
+        var e = this, c = e.designTarget.find(".hiprint-printElement-content");
+        if (e._editing) {
+          c && c.css("cursor", "") && c.removeClass("editing") && c.removeAttr("contenteditable");
+          e.designTarget.removeClass("editing");
+          var t = c.text(), title = e.options.title;
+          if (t.startsWith(title) && e.options.field) {
+            if (t.length > title.length) {
+              e.options.testData = t.split("锛�")[1];
+            } else {
+              e.options.title = t;
+              e.options.testData = "";
+            }
+          } else {
+            e.options.title = t;
+          }
+          e.options.title = e.options.title.split("锛�")[0]
+          if (!clear) {
+            hinnn.event.trigger(e.getPrintElementSelectEventKey(), {
+              printElement: e
+            });
+          }
+          e.updateDesignViewFromOptions(), hinnn.event.trigger("hiprintTemplateDataChanged_" + e.templateId, "缂栬緫淇敼");
+          e._editing = false;
+          var draggable = e.options.draggable == undefined || true == e.options.draggable;
+          e.designTarget.hidraggable('update', {draggable: draggable});
+        }
+      }, BasePrintElement.prototype.getPrintElementSelectEventKey = function () {
+        return "PrintElementSelectEventKey_" + this.templateId;
+      }, BasePrintElement.prototype.design = function (t, e) {
+        var n = this;
+        this.designTarget.hidraggable({
+          // 娣诲姞 draggable 灞炴��
+          draggable: n.options.draggable,
+          axis: n.options.axis ? n.options.axis : void 0,
+          designTarget: n,
+          onDrag: function onDrag(t, i, o) {
+            // 澶勭悊鎸変綇 ctrl / command 澶氶�夊厓绱�
+            var els = n.panel.printElements.filter(function (t) {
+              return ('block' == t.designTarget.children().last().css('display')
+                && t.designTarget.children().last().hasClass('selected')) && !t.printElementType.type.includes('table');
+            });
+            var isMultiple = els.length > 1;
+            var notSelected = !n.designTarget.children().last().hasClass('selected');
+            if (isMultiple) {
+              var left = i - n.options.left, top = o - n.options.top;
+              els.forEach(function (t) {
+                t.updateSizeAndPositionOptions(left + t.options.getLeft(), top + t.options.getTop()),
+                  t.designTarget.css("left", t.options.displayLeft()), t.designTarget.css("top", t.options.displayTop());
+                t.createLineOfPosition(e);
+              })
+              if (notSelected) {
+                n.updateSizeAndPositionOptions(i, o), n.createLineOfPosition(e);
+              }
+            } else {
+              n.updateSizeAndPositionOptions(i, o), n.createLineOfPosition(e);
+            }
+            _HiPrintlib__WEBPACK_IMPORTED_MODULE_6__.a.instance.changed = !0;
+          },
+          moveUnit: "pt",
+          minMove: _HiPrintConfig__WEBPACK_IMPORTED_MODULE_1__.a.instance.movingDistance,
+          onBeforeDrag: function onBeforeDrag(t) {
+            _HiPrintlib__WEBPACK_IMPORTED_MODULE_6__.a.instance.draging = !0, n.designTarget.focus(), n.createLineOfPosition(e);
+          },
+          onBeforeSelectAllDrag: function onBeforeSelectAllDrag() {
+            _HiPrintlib__WEBPACK_IMPORTED_MODULE_6__.a.instance.draging = !0, n.designTarget.focus()
+          },
+          getScale: function getScale() {
+            return n.designPaper.scale || 1;
+          },
+          onStopDrag: function onStopDrag(t) {
+            // 鏅�氬厓绱犳嫋鍔ㄧ粨鏉熶簨浠秇istory
+            if (_HiPrintlib__WEBPACK_IMPORTED_MODULE_6__.a.instance.changed) hinnn.event.trigger("hiprintTemplateDataChanged_" + n.templateId, "绉诲姩");
+            _HiPrintlib__WEBPACK_IMPORTED_MODULE_6__.a.instance.draging = !1,
+              _HiPrintlib__WEBPACK_IMPORTED_MODULE_6__.a.instance.changed = !1;
+            var els = n.panel.printElements.filter(function (t) {
+              return 'block' == t.designTarget.children().last().css('display') && !t.printElementType.type.includes('table');
+            });
+            if (els.length > 1) {
+              els.forEach(function (t) { t.removeLineOfPosition() })
+            } else n.removeLineOfPosition();
+          }
+        }), this.setResizePanel(), this.bingCopyEvent(this.designTarget), this.bingKeyboardMoveEvent(this.designTarget, e);
+      }, BasePrintElement.prototype.getPrintElementEntity = function (t) {
+        return t ? new _entity_PrintElementEntity__WEBPACK_IMPORTED_MODULE_0__.a(void 0, this.options.getPrintElementOptionEntity(), this.printElementType.getPrintElementTypeEntity()) : new _entity_PrintElementEntity__WEBPACK_IMPORTED_MODULE_0__.a(this.printElementType.tid, this.options.getPrintElementOptionEntity());
+      }, BasePrintElement.prototype.submitOption = function () {
+        var els = this.panel.printElements.filter(function (t) {
+            return ('block' == t.designTarget.children().last().css('display')
+              && t.designTarget.children().last().hasClass('selected'))
+              && !t.printElementType.type.includes('table');
+          });
+          els = els.filter(ele => ele.printElementType.type == this.printElementType.type)
+          var t = this, o = this.getConfigOptions();
+          if (o && o.tabs && o.tabs.length) {
+            this.getPrintElementOptionTabs().forEach(function (tab) {
+              // 鏍峰紡鏇存柊瑕佸簲鐢ㄥ埌鍏朵粬閫変腑鐨勫悓绉嶅厓绱�
+              if(tab.name === "鏍峰紡" && els.length){
+                tab.list.forEach(function (e) {
+                  els.forEach(ele => {
+                    var n = e.getValue(),
+                      r = 'textType' == e.name && ele.options[e.name] !== n,
+                      a = 'axis' == e.name && ele.options[e.name] !== n;
+                    n && "object" == _typeof(n) ? Object.keys(n).forEach(function (e) {
+                      ele.options[e] = n[e];
+                    }) : ele.options[e.name] = n;
+                    if (r) {
+                      ele.setResizePanel()
+                    }
+                    if (a) {
+                      ele.designTarget.hidraggable('update', { axis: n })
+                    }
+                  })
+                })
+              }else{
+                tab.list.forEach(function (e) {
+                  var n = e.getValue(), r = 'textType' == e.name && t.options[e.name] !== n,
+                    a = 'axis' == e.name && t.options[e.name] !== n;
+                  n && "object" == _typeof(n) ? Object.keys(n).forEach(function (e) {
+                    t.options[e] = n[e];
+                  }) : t.options[e.name] = n;
+                  if (r) {
+                    t.setResizePanel()
+                  }
+                  if (a) {
+                    t.designTarget.hidraggable('update', {axis: n})
+                  }
+                })
+              }
+            });
+          } else {
+            this.getPrintElementOptionItems().forEach(function (e) {
+              var n = e.getValue(), r = 'textType' == e.name && t.options[e.name] !== n,
+                a = 'axis' == e.name && t.options[e.name] !== n;
+              n && "object" == _typeof(n) ? Object.keys(n).forEach(function (e) {
+                t.options[e] = n[e];
+              }) : t.options[e.name] = n;
+              if (r) {
+                t.setResizePanel()
+              }
+              if (a) {
+                t.designTarget.hidraggable('update', {axis: n})
+              }
+            });
+          }
+          this.updateDesignViewFromOptions(), hinnn.event.trigger("hiprintTemplateDataChanged_" + this.templateId, "鍏冪礌淇敼");
+      }, BasePrintElement.prototype.updateOption = function (o, v, b) {
+        try {
+          var e = this.getConfigOptions();
+          var optionKeys = [];
+          if (e && e.tabs && e.tabs.length) {
+            e.tabs.forEach(function (n) {
+              n.options.forEach(function (e) {
+                optionKeys.push(e.name);
+              })
+            });
+          } else {
+            optionKeys = e.supportOptions.map(function (e) {return e.name});
+          }
+          if (optionKeys && optionKeys.includes(o)) {
+            this.options[o] = v;
+            this.updateDesignViewFromOptions();
+            if (!b) {
+              hinnn.event.trigger("hiprintTemplateDataChanged_" + this.templateId, "鍙傛暟淇敼");
+            }
+          }
+          this._printElementOptionTabs.forEach(tab=>{
+            tab.list.forEach(item=>{
+              if(item.name === o){
+                item.target.find('select')?.val(v.toString())
+                item.target.find('input')?.val(v.toString())
+              }
+            })
+          });
+        } catch (e) {
+          console.log('updateOption error', e)
+        }
+      }, BasePrintElement.prototype.getReizeableShowPoints = function () {
+        return ['barcode', 'qrcode'].includes(this.options.textType) ? ["se", "s", "e", "r"] : ["s", "e", "r"];
+      }, BasePrintElement.prototype.setResizePanel = function () {
+        var n = this, e = this.designPaper;
+        this.designTarget.hireizeable({
+          showPoints: n.getReizeableShowPoints(),
+          draggable: n.options.draggable, // 鍏冪礌鏄惁鍙嫋鎷姐�佸垹闄�
+          // 鏄惁鏄剧ず瀹介珮box
+          showSizeBox: _HiPrintConfig__WEBPACK_IMPORTED_MODULE_1__.a.instance.showSizeBox,
+          getScale: function getScale() {
+            return n.designPaper.scale || 1
+          },
+          onBeforeResize: function onBeforeResize() {
+            _HiPrintlib__WEBPACK_IMPORTED_MODULE_6__.a.instance.draging = !0;
+          },
+          onResize: function onResize(t, i, o, r, a, rt) {
+            if (undefined != rt) {
+              n.onRotate(t, rt);
+            } else {
+              n.onResize(t, i, o, r, a)
+            }
+            n.createLineOfPosition(e);
+          },
+          onStopResize: function onStopResize(r) {
+            hinnn.event.trigger("hiprintTemplateDataChanged_" + n.templateId, r ? "鏃嬭浆" : "澶у皬");
+            _HiPrintlib__WEBPACK_IMPORTED_MODULE_6__.a.instance.draging = !1, n.removeLineOfPosition();
+          }
+        })
+      }, BasePrintElement.prototype.onRotate = function (t, r) {
+        this.options.setRotate(r);
+      }, BasePrintElement.prototype.onResize = function (t, e, n, i, o) {
+        this.updateSizeAndPositionOptions(o, i, n, e);
+      }, BasePrintElement.prototype.getOrderIndex = function () {
+        return this.options.getTop();
+      }, BasePrintElement.prototype.getHtml = function (t, e, n) {
+        var i = 0;
+        this.setCurrenttemplateData(e);
+        var o = [],
+          r = this.getBeginPrintTopInPaperByReferenceElement(t),
+          a = t.getPaperFooter(i);
+        this.isHeaderOrFooter() || this.isFixed() || r > a && "none" != t.panelPageRule && (o.push(new _dto_PaperHtmlResult__WEBPACK_IMPORTED_MODULE_3__.a({
+          target: void 0,
+          printLine: void 0
+        })), r = r - a + t.paperHeader, i++ , a = t.getPaperFooter(i));
+        var p = this.getData(e),
+          s = this.createTarget(this.getTitle(), p, n);
+        this.updateTargetSize(s), this.css(s, p), s.css("position", "absolute"), s.css("left", this.options.displayLeft()), s.css("top", r + "pt"), o.push(new _dto_PaperHtmlResult__WEBPACK_IMPORTED_MODULE_3__.a({
+          target: s,
+          printLine: r + this.options.getHeight(),
+          referenceElement: new _PrintReferenceElement__WEBPACK_IMPORTED_MODULE_5__.a({
+            top: this.options.getTop(),
+            left: this.options.getLeft(),
+            height: this.options.getHeight(),
+            width: this.options.getWidth(),
+            beginPrintPaperIndex: t.index,
+            bottomInLastPaper: r + this.options.getHeight(),
+            printTopInPaper: r
+          })
+        }))
+        if (e && this.options.pageBreak) {
+          o[0].target.css("top", t.paperHeader + "pt");
+          o[0].referenceElement.top = this.options.getTop() - this.options.getHeight() - t.paperHeader;
+          o[0].printLine = t.paperHeader;
+          o[0].referenceElement.bottomInLastPaper = 0;
+          o[0].referenceElement.printTopInPaper = t.paperHeader;
+          o.unshift(new _dto_PaperHtmlResult__WEBPACK_IMPORTED_MODULE_3__.a({
+            target: s,
+            printLine: t.height,
+            referenceElement: new _PrintReferenceElement__WEBPACK_IMPORTED_MODULE_5__.a({
+              top: 0,
+              left: 0,
+              height: 0,
+              width: 0,
+              beginPrintPaperIndex: t.index,
+              bottomInLastPaper: t.height,
+              printTopInPaper: t.paperHeader
+            })
+          }))
+        }
+        return o;
+      }, BasePrintElement.prototype.getHtml2 = function (t, e, n) {
+        var i = 0;
+        this.setCurrenttemplateData(e);
+        var o = [],
+          r = this.getBeginPrintTopInPaperByReferenceElement(t),
+          a = t.getPaperFooter(i);
+        // 澶勭悊鏂囨湰/杈呭姪鍏冪礌 褰撻珮搴﹀ぇ浜庢ā鏉块珮搴�, 鎻掑叆鐨勫垎椤�...
+        this.isHeaderOrFooter() || this.isFixed() || ("none" != t.panelPageRule && r > a && (o.push(new _dto_PaperHtmlResult__WEBPACK_IMPORTED_MODULE_3__.a({
+          target: void 0,
+          printLine: void 0
+        // (e && r + this.options.getHeight() > a) --> 璁捐鏃舵嫋鎷藉厓绱犻珮搴﹁秴杩囬〉鑴氱嚎鏃�,瀵艰嚧鎶ラ敊闂
+        })), r = r - a + t.paperHeader, i++ , a = t.getPaperFooter(i)), r <= a && (e && r + this.options.getHeight() > a) && "none" != t.panelPageRule && (o.push(new _dto_PaperHtmlResult__WEBPACK_IMPORTED_MODULE_3__.a({
+          target: void 0,
+          printLine: void 0
+        })), r = t.paperHeader, i++ , a = t.getPaperFooter(i)));
+        var p = this.getData(e),
+          s = this.createTarget(this.getTitle(), p);
+        if ("none" == t.panelPageRule && (r + this.options.getHeight()) > a) this.updatePanelHeight(r + this.options.getHeight(), t);
+        this.updateTargetSize(s), this.css(s, p), s.css("position", "absolute"), s.css("left", this.options.displayLeft()), s.css("top", r + "pt"), o.push(new _dto_PaperHtmlResult__WEBPACK_IMPORTED_MODULE_3__.a({
+          target: s,
+          printLine: r + this.options.getHeight(),
+          referenceElement: new _PrintReferenceElement__WEBPACK_IMPORTED_MODULE_5__.a({
+            top: this.options.getTop(),
+            left: this.options.getLeft(),
+            height: this.options.getHeight(),
+            width: this.options.getWidth(),
+            beginPrintPaperIndex: t.index,
+            bottomInLastPaper: r + this.options.getHeight(),
+            printTopInPaper: r
+          })
+        }));
+        if (e && this.options.pageBreak) {
+          o[0].target.css("top", t.paperHeader + "pt");
+          o[0].referenceElement.top = this.options.getTop() - this.options.getHeight() - t.paperHeader;
+          o[0].printLine = t.paperHeader;
+          o[0].referenceElement.bottomInLastPaper = 0;
+          o[0].referenceElement.printTopInPaper = t.paperHeader;
+          o.unshift(new _dto_PaperHtmlResult__WEBPACK_IMPORTED_MODULE_3__.a({
+            target: s,
+            printLine: t.height,
+            referenceElement: new _PrintReferenceElement__WEBPACK_IMPORTED_MODULE_5__.a({
+              top: 0,
+              left: 0,
+              height: 0,
+              width: 0,
+              beginPrintPaperIndex: t.index,
+              bottomInLastPaper: t.height,
+              printTopInPaper: t.paperHeader
+            })
+          }))
+        }
+        return o;
+      }, BasePrintElement.prototype.updatePanelHeight = function (h, p) {
+        if ("none" == this.panel.panelPageRule) {
+          var nmh = hinnn.pt.toMm(h);
+          // 鏇存敼妯℃澘楂樺害 paperType, width(mm), height(mm), rotate
+          // this.panel.resize(void 0, t.mmwidth, nmh, !1);
+          // 杩欎釜浼氭洿鏂版ā鏉跨殑楂樺害...
+          // this.panel.target.css("height", nmh + "mm"), this.panel.target.attr("original-height", nmh);
+          p.paperFooter = h;
+          p.target.css("height", nmh + "mm"), p.target.attr("original-height", nmh);
+        }
+      }, BasePrintElement.prototype.getBeginPrintTopInPaperByReferenceElement = function (t) {
+        var e = this.options.getTop();
+        return this.isHeaderOrFooter() || this.isFixed() ? e : t.referenceElement.isPositionLeftOrRight(e) ? t.referenceElement.printTopInPaper + (e - t.referenceElement.top) : t.referenceElement.bottomInLastPaper + (e - (t.referenceElement.top + t.referenceElement.height));
+      }, BasePrintElement.prototype.css = function (t, e) {
+        var n = this,
+          i = [],
+          o = this.getConfigOptions();
+
+        if (o) {
+          var r;
+          if (o.tabs && o.tabs.length) {
+            r = [];
+            o.tabs.forEach(function (n) {
+              r = r.concat(n.options)
+            });
+          } else {
+            r = o.supportOptions;
+          }
+          r && r.forEach(function (e) {
+            var o = _print_element_option_PrintElementOptionItemManager__WEBPACK_IMPORTED_MODULE_2__.a.getItem(e.name);
+
+            if (o && o.css) {
+              var r = o.css(t, n.options.getValueFromOptionsOrDefault(e.name));
+              r && i.push(r);
+            }
+          });
+        }
+
+        this.stylerCss(t, e);
+      }, BasePrintElement.prototype.stylerCss = function (t, e) {
+        var n = this.getStyler();
+
+        if (n) {
+          var i = n(e, this.options, t, this._currenttemplateData);
+          if (i) Object.keys(i).forEach(function (e) {
+            t.css(e, i[e]);
+          });
+        }
+      }, BasePrintElement.prototype.getData = function (t) {
+        var f = this.getField();
+        return t ? f ? f.split('.').reduce((a, c) => a ? a[c] : t ? t[c] : "", !1) || "" : "" : this.printElementType.getData();
+      }, BasePrintElement.prototype.copyFromType = function () {
+        var options = this.options, type = this.printElementType;
+        var o = this.getConfigOptions();
+        var names = [];
+        if (o && o.tabs && o.tabs.length) {
+          o.tabs.forEach(function (n) {
+            n.options.forEach(function (e) {
+              names.push(e.name);
+            })
+          });
+        } else {
+          names = o.supportOptions.map(function (e) {return e.name});
+        }
+        Object.keys(type).forEach(function (e) {
+          if (type[e] && ('columns' != e) && names.indexOf(e) > -1) {
+            options[e] = 'function' == _typeof(type[e]) ? type[e].toString() : type[e]
+          }
+        })
+        return options
+      }, BasePrintElement.prototype.getPrintElementOptionTabs = function () {
+        if (this._printElementOptionTabs) return this._printElementOptionTabs;
+        var tabs = [],
+          e = this.getConfigOptions();
+        if (e) {
+          var t = e.tabs;
+          t && t.forEach(function (n, i) {
+            tabs.push({name: n.name, list: []})
+            n.options.filter(function (t) {
+              return !t.hidden;
+            }).forEach(function (e) {
+              var n = _print_element_option_PrintElementOptionItemManager__WEBPACK_IMPORTED_MODULE_2__.a.getItem(e.name);
+              tabs[i].list.push(n);
+            })
+          });
+        }
+        return this._printElementOptionTabs = tabs, this._printElementOptionItems = void 0, this._printElementOptionTabs;
+      }, BasePrintElement.prototype.getPrintElementOptionItems = function () {
+        if (this._printElementOptionItems) return this._printElementOptionItems;
+        var t = [],
+          e = this.getConfigOptions();
+
+        if (e) {
+          var n;
+          if (e.tabs && e.tabs.length) {
+            n = [];
+            e.tabs.forEach(function (n) {
+              n = n.concat(n.options)
+            });
+          } else {
+            n = e.supportOptions;
+          }
+          n && n.filter(function (t) {
+            return !t.hidden;
+          }).forEach(function (e) {
+            var n = _print_element_option_PrintElementOptionItemManager__WEBPACK_IMPORTED_MODULE_2__.a.getItem(e.name);
+
+            t.push(n);
+          });
+        }
+
+        return this._printElementOptionItems = this.filterOptionItems(t.concat()), this._printElementOptionTabs = void 0, this._printElementOptionItems;
+      }, BasePrintElement.prototype.getPrintElementOptionItemsByName = function (t) {
+        var e = [],
+          n = this.getConfigOptionsByName(t);
+
+        if (n) {
+          var i;
+          if (n.tabs && n.tabs.length) {
+            i = [];
+            n.tabs.forEach(function (n) {
+              i = i.concat(n.options)
+            });
+          } else {
+            i = n.supportOptions;
+          }
+          i && i.filter(function (t) {
+            return !t.hidden;
+          }).forEach(function (t) {
+            var n = _print_element_option_PrintElementOptionItemManager__WEBPACK_IMPORTED_MODULE_2__.a.getItem(t.name);
+
+            e.push(n);
+          });
+        }
+
+        return e.concat();
+      }, BasePrintElement.prototype.filterOptionItems = function (t) {
+        return this.printElementType.field ? t.filter(function (t) {
+          return "field" != t.name;
+        }) : t;
+      }, BasePrintElement.prototype.createTempContainer = function () {
+        this.removeTempContainer(), $("body").append($('<div class="hiprint_temp_Container hiprint-printPaper" style="overflow:hidden;height: 0px;box-sizing: border-box;"></div>'));
+      }, BasePrintElement.prototype.removeTempContainer = function () {
+        $(".hiprint_temp_Container").remove();
+      }, BasePrintElement.prototype.getTempContainer = function () {
+        return $(".hiprint_temp_Container");
+      }, BasePrintElement.prototype.isHeaderOrFooter = function () {
+        return this.options.getTopInDesign() < this.panel.paperHeader || this.options.getTopInDesign() >= this.panel.paperFooter;
+      }, BasePrintElement.prototype.delete = function () {
+        this.designTarget && this.designTarget.remove();
+      }, BasePrintElement.prototype.setCurrenttemplateData = function (t) {
+        this._currenttemplateData = t;
+      }, BasePrintElement.prototype.isFixed = function () {
+        return this.options.fixed;
+      }, BasePrintElement.prototype.onRendered = function (t, e) {
+        this.printElementType && this.printElementType.onRendered && this.printElementType.onRendered(e, this.options, t.getTarget());
+      }, BasePrintElement.prototype.createLineOfPosition = function (t) {
+        var e = $(".toplineOfPosition.id" + this.id),
+          topPos = $(".topPosition.id" + this.id),
+          n = $(".leftlineOfPosition.id" + this.id),
+          leftPos = $(".leftPosition.id" + this.id),
+          i = $(".rightlineOfPosition.id" + this.id),
+          o = $(".bottomlineOfPosition.id" + this.id);
+        var config = _HiPrintConfig__WEBPACK_IMPORTED_MODULE_1__.a.instance;
+        if (e.length) e.css("top", this.options.displayTop(true)); else {
+          var e = $('<div class="toplineOfPosition id' + this.id + '" style="position: absolute; width: 100%;"></div>');
+          e.css("top", this.options.displayTop(true)), e.css("width", t.displayWidth()), this.designTarget.parents(".hiprint-printPaper-content").append(e);
+        }
+        if (config.showPosition) {
+          if (topPos.length) {
+            topPos.toggleClass("topPosition-lineMode", config.positionLineMode);
+            topPos.text(this.options.posTop() + (config.positionUnit ? 'pt' : ''));
+            topPos.css("top", (this.options.posTop() - topPos.height()) + "pt");
+            if (config.positionLineMode) {
+              topPos.css("left", (this.options.posLeft() - topPos.width() / 2) + "pt");
+            } else {
+              topPos.css("left", this.options.posLeft() + 2 + "pt");
+            }
+            this.designTarget.find('.size-box') && this.designTarget.find('.size-box').toggleClass('hide', true);
+          } else {
+            var topPos = $('<div class="topPosition id' + this.id + '" style="position: absolute;"></div>');
+            topPos.toggleClass("topPosition-lineMode", config.positionLineMode);
+            topPos.text(this.options.posTop() + (config.positionUnit ? 'pt' : ''));
+            if (config.positionLineMode) {
+              topPos.css("left", (this.options.posLeft() - topPos.width() / 2) + "pt");
+            } else {
+              topPos.css("left", this.options.posLeft() + 2 + "pt");
+            }
+            this.designTarget.find('.size-box') && this.designTarget.find('.size-box').toggleClass('hide', true);
+            this.designTarget.parents(".hiprint-printPaper-content").append(topPos);
+            topPos.css("top", (this.options.posTop() - topPos.height()) + "pt");
+          }
+        }
+        if (n.length) n.css("left", this.options.displayLeft(true)); else {
+          var r = $('<div class="leftlineOfPosition id' + this.id + '" style="position: absolute;height: 100%;"></div>');
+          r.css("left", this.options.displayLeft(true)), r.css("height", t.displayHeight()), this.designTarget.parents(".hiprint-printPaper-content").append(r);
+        }
+        if (config.showPosition) {
+          if (leftPos.length) {
+            leftPos.text(this.options.posLeft() + (config.positionUnit ? 'pt' : ''));
+            leftPos.toggleClass("leftPosition-lineMode", config.positionLineMode);
+            leftPos.css("left", (this.options.posLeft() - leftPos.width()) + "pt");
+            if (config.positionLineMode) {
+              leftPos.css("top", this.options.posTop() - leftPos.height() / 3 + "pt");
+            } else {
+              leftPos.css("top", this.options.posTop() + 2 + "pt");
+            }
+          } else {
+            var leftPos = $('<div class="leftPosition id' + this.id + '" style="position: absolute;"></div>');
+            leftPos.text(this.options.posLeft() + (config.positionUnit ? 'pt' : ''));
+            leftPos.toggleClass("leftPosition-lineMode", config.positionLineMode);
+            if (config.positionLineMode) {
+              leftPos.css("top", this.options.posTop() - leftPos.height() / 3 + "pt");
+            } else {
+              leftPos.css("top", this.options.posTop() + 2 + "pt");
+            }
+            this.designTarget.parents(".hiprint-printPaper-content").append(leftPos);
+            leftPos.css("left", (this.options.posLeft() - leftPos.width()) + "pt");
+          }
+        }
+        if (i.length) i.css("left", this.options.getLeft() + this.options.getWidth() + "pt"); else {
+          var a = $('<div class="rightlineOfPosition id' + this.id + '" style="position: absolute;height: 100%;"></div>');
+          a.css("left", this.options.getLeft() + this.options.getWidth() + "pt"), a.css("height", t.displayHeight()), this.designTarget.parents(".hiprint-printPaper-content").append(a);
+        }
+        if (o.length) o.css("top", this.options.getTop() + this.options.getHeight() + "pt"); else {
+          var p = $('<div class="bottomlineOfPosition id' + this.id + '" style="position: absolute;width: 100%;"></div>');
+          p.css("top", this.options.getTop() + this.options.getHeight() + "pt"), p.css("width", t.displayWidth()), this.designTarget.parents(".hiprint-printPaper-content").append(p);
+        }
+      }, BasePrintElement.prototype.removeLineOfPosition = function () {
+        $(".toplineOfPosition.id" + this.id).remove(), $(".topPosition.id" + this.id).remove(), this.designTarget.find('.size-box') && this.designTarget.find('.size-box').toggleClass('hide', false), $(".leftlineOfPosition.id" + this.id).remove(), $(".leftPosition.id" + this.id).remove(), $(".rightlineOfPosition.id" + this.id).remove(), $(".bottomlineOfPosition.id" + this.id).remove();
+      }, BasePrintElement.prototype.getFontList = function () {
+        var t = this.options.fontList;
+        return t || (t = _HiPrintlib__WEBPACK_IMPORTED_MODULE_6__.a.instance.getPrintTemplateById(this.templateId).getFontList());
+      }, BasePrintElement.prototype.getFields = function () {
+        if ("table" == this.printElementType.type) {
+          var t = this.options.tableFields;
+          return t
+        }
+        var t = this.options.fields;
+        return t || (t = _HiPrintlib__WEBPACK_IMPORTED_MODULE_6__.a.instance.getPrintTemplateById(this.templateId).getFields());
+      }, BasePrintElement.prototype.getOnImageChooseClick = function () {
+        var t = this.options.onImageChooseClick;
+        return t || (t = _HiPrintlib__WEBPACK_IMPORTED_MODULE_6__.a.instance.getPrintTemplateById(this.templateId).getOnImageChooseClick());
+      }, BasePrintElement.prototype.bingCopyEvent = function (t) {
+        var n = this;
+        t.keydown(function (r) {
+          if (n._editing) {
+            if (!(r.altKey) && 13 == r.keyCode) {
+              n.updateByContent();
+              return
+            }
+          }
+          // ctrl + c / command + c
+          if ((r.ctrlKey || r.metaKey) && 67 == r.keyCode) {
+            n.copyJson();
+            r.preventDefault();
+          }
+        });
+      }, BasePrintElement.prototype.copyJson = function () {
+        try {
+          var n = this;
+          // 浣跨敤textarea 瀛樺偍澶嶅埗鐨勫厓绱犱俊鎭�
+          var copyArea = $('#copyArea');
+          if (!copyArea.length) copyArea = $('<textarea id="copyArea" style="position: absolute; left: 0px; top: 0px;opacity: 0"></textarea>');
+          $("body").append(copyArea);
+          let copyElements = this.panel.printElements.filter(ele => {
+            return 'block' == ele.designTarget.children().last().css('display') && !ele.printElementType.type.includes('table');
+          })
+          copyElements = copyElements.map(ele => {
+            return {
+              options: ele.options,
+              printElementType: ele.printElementType,
+              id: ele.id,
+              templateId: ele.templateId
+            }
+          })
+          var json = JSON.stringify(copyElements)
+          // var json = JSON.stringify({
+          //   options: n.options,
+          //   printElementType: n.printElementType,
+          //   id: n.id,
+          //   templateId: n.templateId
+          // });
+          copyArea.text(json);
+          // 鍏冪礌闇�鍙鎵嶈兘閫変腑澶嶅埗鍒板壀鍒囨澘
+          copyArea.css('visibility', 'visible');
+          // 灏濊瘯淇瀵瑰鍒跺厓绱犵殑鑷姩鑱氱劍
+          // copyArea.focus();
+          if (copyArea.setSelectionRange)
+            copyArea.setSelectionRange(0, copyArea.value.length);
+          else
+            copyArea.select();
+          var flag = false;
+          flag = document.execCommand("copy");
+          copyArea.css('visibility', 'hidden');
+          // 鑾峰彇鍏冪礌鐒︾偣锛屼笉鐒舵棤娉曠矘璐达紙keydown闂锛�
+          n.designTarget.focus();
+          console.log('copyJson success');
+        } catch (e) {
+          flag = false;
+          console.log('copyJson error', e);
+        }
+        return flag;
+      }, BasePrintElement.prototype.clone = function (t) {
+        var n = this;
+        let newObj = n.printElementType.createPrintElement();
+        Object.keys(n.options).forEach(function (key) {
+          newObj.options[key] = n.options[key];
+        })
+        return newObj;
+      }, BasePrintElement.prototype.getFormatter = function () {
+        var formatter = void 0;
+        if (this.printElementType.formatter && (formatter = this.printElementType.formatter), this.options.formatter) try {
+          var s = "formatter=" + this.options.formatter;
+          eval(s);
+        } catch (t) {
+          console.log(t);
+        }
+        return formatter;
+      }, BasePrintElement.prototype.getStyler = function () {
+        var fnstyler = void 0;
+        if (this.printElementType.styler && (fnstyler = this.printElementType.styler), this.options.styler) try {
+          var s = "fnstyler=" + this.options.styler;
+          eval(s);
+        } catch (t) {
+          console.log(t);
+        }
+        return fnstyler;
+      }, BasePrintElement.prototype.bingKeyboardMoveEvent = function (t, e) {
+        var n = this,
+          i = void 0,
+          o = void 0;
+        t.attr("tabindex", "1"), t.keydown(function (r) {
+          // 澶勭悊 table / input 杈撳叆鏃� 鍒犻櫎鍏冪礌闂
+          if ('INPUT' == r.target.tagName) {
+            return;
+          }
+          // 鍏冪礌缂栬緫
+          if (n._editing && !(r.altKey)) {
+            return;
+          }
+          // 鍏冪礌绂佹绉诲姩
+          if (false === n.options.draggable) {
+            return;
+          }
+          // 澶勭悊鎸変綇 ctrl / command 澶氶�夊厓绱�
+          var els = n.panel.printElements.filter(function (t) {
+            return 'block' == t.designTarget.children().last().css('display') && !t.printElementType.type.includes('table');
+          });
+          var isMultiple = els.length > 1;
+          var movingDistance = _HiPrintConfig__WEBPACK_IMPORTED_MODULE_1__.a.instance.movingDistance;
+          switch (r.keyCode) {
+            // BackSpace/Delete 鍒犻櫎鍏冪礌
+          case 8:
+          case 46:
+            var templete = _HiPrintlib__WEBPACK_IMPORTED_MODULE_6__.a.instance.getPrintTemplateById(n.templateId)
+            templete.deletePrintElement(n)
+            hinnn.event.trigger("hiprintTemplateDataChanged_" + n.templateId, "鍒犻櫎");
+            hinnn.event.trigger("clearSettingContainer")
+             // 鑾峰彇鍒颁簡template 鎷垮埌template閲岄潰鎵�鏈夎閫変腑鐨勫厓绱�
+             els.forEach(ele=>{
+              templete.deletePrintElement(ele)
+              hinnn.event.trigger("hiprintTemplateDataChanged_" + ele.templateId, "鍒犻櫎");
+            })
+            hinnn.event.trigger("clearSettingContainer")
+            break
+          case 37:
+            i = n.options.getLeft();
+            if (isMultiple) {
+              els.forEach(function (t) {
+                t.updatePositionByMultipleSelect(0 - movingDistance, 0);
+              })
+            } else {
+              n.updateSizeAndPositionOptions(i - movingDistance), t.css("left", n.options.displayLeft());
+            }
+            r.preventDefault();
+            break;
+
+          case 38:
+            o = n.options.getTop();
+            if (isMultiple) {
+              els.forEach(function (t) {
+                t.updatePositionByMultipleSelect(0, 0 - movingDistance);
+              })
+            } else {
+              n.updateSizeAndPositionOptions(void 0, o - movingDistance), t.css("top", n.options.displayTop());
+            }
+            r.preventDefault();
+            break;
+
+          case 39:
+            i = n.options.getLeft();
+            if (isMultiple) {
+              els.forEach(function (t) {
+                t.updatePositionByMultipleSelect(movingDistance, 0);
+              })
+            } else {
+              n.updateSizeAndPositionOptions(i + movingDistance), t.css("left", n.options.displayLeft());
+            }
+            r.preventDefault();
+            break;
+
+          case 40:
+            o = n.options.getTop();
+            if (isMultiple) {
+              els.forEach(function (t) {
+                t.updatePositionByMultipleSelect(0, movingDistance);
+              })
+            } else {
+              n.updateSizeAndPositionOptions(void 0, o + movingDistance), t.css("top", n.options.displayTop());
+            }
+            r.preventDefault();
+          }
+          if ([37, 38, 39, 40].includes(r.keyCode)) {
+            hinnn.event.trigger("hiprintTemplateDataChanged_" + n.templateId, "閿洏绉诲姩");
+          }
+        });
+      }, BasePrintElement.prototype.inRect = function (t) {
+        var ptr = this.designPaper.scale || 1;
+        var x1 = this.designTarget[0].offsetLeft,
+          y1 = this.designTarget[0].offsetTop, h = this.designTarget[0].offsetHeight,
+          w = this.designTarget[0].offsetWidth,
+          x2 = x1 + w, y2 = y1 + h,
+          ex1 = $(t.target[0]).position().left / ptr, ey1 = $(t.target[0]).position().top / ptr,
+          eh = t.target[0].offsetHeight, ew = t.target[0].offsetWidth,
+          ex2 = ex1 + ew, ey2 = ey1 + eh;
+        return ex1 < x2 && ex2 > x1 && y1 < ey2 && y2 > ey1;
+      }, BasePrintElement.prototype.multipleSelect = function (t) {
+        t ? this.designTarget.addClass("multipleSelect") : this.designTarget.removeClass("multipleSelect");
+      }, BasePrintElement.prototype.updatePositionByMultipleSelect = function (t, e) {
+        if (false === this.options.draggable) return;
+        this.updateSizeAndPositionOptions(t + this.options.getLeft(), e + this.options.getTop()), this.designTarget.css("left", this.options.displayLeft()), this.designTarget.css("top", this.options.displayTop());
+      }, BasePrintElement;
+    }();
+}, function (t, e, n) {
+  "use strict";
+
+  var i = function () {
+      function t() {
+      }
+
+      return t.prototype.init = function (t) {
+        this.target = $('<input type="text" class="hitable-editor-text" value="" />'), t.getTarget().append(this.target), this.target.focus();
+      }, t.prototype.getValue = function () {
+        return this.target.val();
+      }, t.prototype.setValue = function (t) {
+        this.target.val(t);
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }(),
+    o = function () {
+      function t() {
+        this.text = new i();
+      }
+
+      return Object.defineProperty(t, "Instance", {
+        get: function get() {
+          return t._instance || (t._instance = new t()), t._instance;
+        },
+        enumerable: !0,
+        configurable: !0
+      }), t;
+    }(),
+    i2 = function () {
+      function t() {
+      }
+      // 琛ㄦ牸澶村弻鍑诲瓧娈甸�夋嫨
+      return t.prototype.init = function (e, i) {
+        var n = `<select class="auto-submit" style="width:100%">\n                <option value="" disabled>${i18n.__('璇烽�夋嫨瀛楁')}</option>`;
+        e.forEach(function (t, e) {
+          if (t.field == i.field) {
+            n += ' <option value="' + (t.field || "") + '" selected >' + (t.text || "") + "</option>";
+          } else {
+            n += ' <option value="' + (t.field || "") + '" >' + (t.text || "") + "</option>";
+          }
+        }), n += " </select>";
+        this.target = $(n), i.getTarget().append(this.target), this.target.focus();
+      }, t.prototype.getValue = function () {
+        var val = this.target.val()
+        var text = this.target.find('option[value="' + val + '"]').text()
+        return text + '#' + val;
+      }, t.prototype.setValue = function (t) {
+        t && (this.target.find('option[value="' + t + '"]').length || this.target.find("select").prepend('<option value="' + t + '" >' + t + "</option>"));
+        this.target.find("select").val(t);
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }(),
+    o2 = function () {
+      function t() {
+        this.select = new i2();
+      }
+
+      return Object.defineProperty(t, "Instance", {
+        get: function get() {
+          return t._instance || (t._instance = new t()), t._instance;
+        },
+        enumerable: !0,
+        configurable: !0
+      }), t;
+    }(),
+    r = function () {
+      function t() {
+      }
+
+      return Object.defineProperty(t, "Instance", {
+        get: function get() {
+          return o._instance || (t._instance = new t()), t._instance;
+        },
+        enumerable: !0,
+        configurable: !0
+      }), t.prototype.createEditor = function (t) {
+        return $.extend({}, o.Instance[t]);
+      }, t.prototype.createSelect = function (t) {
+        return $.extend({}, o2.Instance[t]);
+      }, t;
+    }(),
+    a = n(10),
+    p = n(14),
+    s = n(11),
+    l = function () {
+      function t() {
+      }
+
+      return t.prototype.init = function (t, e) {
+        var n = this;
+        this.tableOptions = e, this.title = t.title, this.field = t.field, t.getTarget().unbind("dblclick.hitable").bind("dblclick.hitable", function () {
+          t.isEditing = !0, n.beginEdit(t);
+        });
+      }, t.prototype.getDisplayHtml = function () {
+        return this.title;
+      }, t.prototype.beginEdit = function (t) {
+        var e = this;
+        if (e.tableOptions.options.fields && e.tableOptions.options.fields.length) {
+          this.editor = r.Instance.createSelect("select"), t.getTarget().html(""), this.editor.init(e.tableOptions.options.fields, t), this.editor.setValue(this.field || ""), $(this.editor.target).keydown(function (n) {
+            13 == n.keyCode && e.endEdit(t);
+          }), $(this.editor.target).change(function (n) {
+            e.endEdit(t);
+          }), $(this.editor.target).blur(function (n) {
+            e.endEdit(t);
+          })
+        } else {
+          this.editor = r.Instance.createEditor("text"), t.getTarget().html(""), this.editor.init(t), (this.title || this.field) && (this.tableOptions.options.isEnableEditField ? this.editor.setValue((this.title || "") + "#" + (this.field || "")) : this.editor.setValue(this.title || "")), $(this.editor.target).keydown(function (n) {
+            13 == n.keyCode && e.endEdit(t);
+          }), $(this.editor.target).blur(function (n) {
+            e.endEdit(t);
+          }), this.tableOptions.editingCell && this.tableOptions.editingCell.id != t.id && this.tableOptions.editingCell.innerElement.endEdit(this.tableOptions.editingCell), this.tableOptions.editingCell = t;
+        }
+      }, t.prototype.endEdit = function (t) {
+        t.isEditing = 0
+        var e = this.editor.getValue();
+        if (e) {
+          if (this.tableOptions.options.isEnableEditField || this.tableOptions.options.fields) {
+            var n = e.split("#");
+            t.title = this.title = n[0], n.length > 0 && (t.columnId = t.field = this.field = n[1]);
+            t.id && t.target.attr("id", t.id), t.columnId && t.target.attr("column-id", t.columnId);
+            hinnn.event.trigger("hiprintTemplateDataChanged_" + this.tableOptions.options.templateId, "璋冩暣琛ㄦ牸鍒楀瓧娈�");
+          } else t.title = this.title = e;
+        } else this.tableOptions.options.isEnableEditField ? (t.title = this.title = "", t.field = this.field = "") : t.title = this.title = "";
+        this.editor.destroy(), t.getTarget().html(this.title);
+      }, t;
+    }(),
+    u = function () {
+      return function (t) {
+        this.title = t.title, this.field = t.field, this.width = t.width, this.align = t.align, this.halign = t.halign, this.vAlign = t.vAlign, this.colspan = t.colspan, this.rowspan = t.rowspan, this.checked = t.checked, this.columnId = t.columnId, this.tableSummaryTitle = t.tableSummaryTitle, this.tableSummaryText = t.tableSummaryText, this.tableSummaryColspan = t.tableSummaryColspan, this.tableSummary = t.tableSummary, this.tableSummaryAlign = t.tableSummaryAlign, this.tableSummaryNumFormat = t.tableSummaryNumFormat, this.tableSummaryFormatter = t.tableSummaryFormatter, this.showCodeTitle = t.showCodeTitle, this.upperCase = t.upperCase, this.renderFormatter = t.renderFormatter && t.renderFormatter.toString(), this.formatter2 = t.formatter2 && t.formatter2.toString(), this.styler2 = t.styler2 && t.styler2.toString(), this.stylerHeader = t.stylerHeader && t.stylerHeader.toString(), this.tableColumnHeight = t.tableColumnHeight, this.tableTextType = t.tableTextType, this.tableBarcodeMode = t.tableBarcodeMode, this.tableQRCodeLevel = t.tableQRCodeLevel
+      };
+    }(),
+    d = function () {
+      function t() {
+        this.id = s.a.createId();
+      }
+
+      return t.prototype.init = function (t, e, n, i) {
+        this.isHead = i, this.rowId = n, this.isEditing = !1;
+        var o = /^[0-9]*$/;
+        this.target = t, this.tableOptions = e;
+        var r = this.target.attr("colspan");
+        this.colspan = o.test(r) ? parseInt(r) : 1;
+        var a = this.target.attr("rowspan");
+        this.rowspan = o.test(a) ? parseInt(a) : 1, this.initEvent(), this.isHead && this.initInnerEelement();
+      }, t.prototype.beginEdit = function () {
+        if (!this.isEditing && this.tableOptions.isEnableEdit && this.tableOptions.onBeforEdit(this)) {
+          var t = this.getValue();
+          this.editor = r.Instance.createEditor("text"), this.isEditing = !0, this.tableOptions.editingCell = this, this.target.html(""), this.editor.init(this), this.editor.setValue(t);
+        }
+      }, t.prototype.endEdit = function () {
+        this.isEditing = !1;
+        var t = this.editor.getValue();
+        this.editor.destroy(), this.target.html(t);
+      }, t.prototype.getTarget = function () {
+        return this.target;
+      }, t.prototype.getValue = function () {
+        return this.target.html();
+      }, t.prototype.setValue = function (t) {
+      }, t.prototype.initInnerEelement = function () {
+        this.innerElement = new l(), this.innerElement.init(this, this.tableOptions);
+      }, t.prototype.initEvent = function () {
+      }, t.prototype.isXYinCell = function (t, e) {
+        var n = new a.b({
+          x: t,
+          y: e,
+          height: 0,
+          width: 0
+        });
+        return this.isOverlap(n);
+      }, t.prototype.getTableRect = function () {
+        return new a.b({
+          x: this.target.offset().left,
+          y: this.target.offset().top,
+          height: this.target[0].offsetHeight,
+          width: this.target[0].offsetWidth
+        });
+      }, t.prototype.isOverlap = function (t) {
+        var e = this.getTableRect();
+        return t.x + t.width > e.x && e.x + e.width > t.x && t.y + t.height > e.y && e.y + e.height > t.y;
+      }, t.prototype.isInRect = function (t) {
+        var e = t.rect,
+          n = this.getTableRect();
+
+        // if (e.x + e.width > n.x && n.x + n.width > e.x && e.y + e.height > n.y && n.y + n.height > e.y) {
+        if (n.x >= e.x && n.x + n.width <= e.x + e.width && n.y >= e.y && n.y + n.height <= e.y + e.height) {
+          var i = p.a.mergeRect(e, n);
+          return JSON.stringify(e) == JSON.stringify(i) || (t.changed = !0, t.rect = i, !0);
+        }
+
+        return !1;
+      }, t.prototype.isSelected = function () {
+        return this.target.hasClass("selected");
+      }, t.prototype.select = function () {
+        this.target.addClass("selected");
+      }, t.prototype.isHeader = function () {
+        return !1;
+      }, t.prototype.setAlign = function (t) {
+        this.align = t, t ? this.target.css("text-align", t) : this.target[0].style.textAlign = "";
+      }, t.prototype.setVAlign = function (t) {
+        this.vAlign = t, t ? this.target.css("vertical-align", t) : this.target[0].style.verticalAlign = "";
+      }, t.prototype.getEntity = function () {
+        return new u(this);
+      }, t;
+    }();
+
+  n.d(e, "a", function () {
+    return f;
+  });
+
+  var _c,
+    h = (_c = function c(t, e) {
+      return (_c = Object.setPrototypeOf || _instanceof({
+        __proto__: []
+      }, Array) && function (t, e) {
+        t.__proto__ = e;
+      } || function (t, e) {
+        for (var n in e) {
+          e.hasOwnProperty(n) && (t[n] = e[n]);
+        }
+      })(t, e);
+    }, function (t, e) {
+      function n() {
+        this.constructor = t;
+      }
+
+      _c(t, e), t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype, new n());
+    }),
+    f = function (t) {
+      function e(e) {
+        var n = this;
+        return e = e || {}, (n = t.call(this) || this).width = e.width ? parseFloat(e.width.toString()) : 100, n.title = e.title, n.descTitle = e.descTitle, n.field = e.field, n.fixed = e.fixed, n.rowspan = e.rowspan ? parseInt(e.rowspan) : 1, n.colspan = e.colspan ? parseInt(e.colspan) : 1, n.align = e.align, n.halign = e.halign, n.vAlign = e.vAlign, n.formatter = e.formatter, n.styler = e.styler, n.renderFormatter = e.renderFormatter, n.formatter2 = e.formatter2, n.styler2 = e.styler2, n.stylerHeader = e.stylerHeader, n.checkbox = e.checkbox, n.checked = 0 != e.checked, n.columnId = e.columnId || e.field, n.tableColumnHeight = e.tableColumnHeight, n.tableTextType = e.tableTextType, n.tableBarcodeMode = e.tableBarcodeMode, n.tableQRCodeLevel = e.tableQRCodeLevel, n.tableSummaryTitle = e.tableSummaryTitle, n.tableSummaryText = e.tableSummaryText, n.tableSummaryColspan = e.tableSummaryColspan, n.tableSummary = e.tableSummary, n.tableSummaryAlign = e.tableSummaryAlign, n.tableSummaryNumFormat = e.tableSummaryNumFormat, n.tableSummaryFormatter = e.tableSummaryFormatter,
+        n.showCodeTitle = e.showCodeTitle, n.upperCase = e.upperCase, n;
+      }
+
+      return h(e, t), e.prototype.css = function (t) {
+      }, e;
+    }(d);
+}, function (t, e, n) {
+  "use strict";
+
+  n.d(e, "a", function () {
+    return i;
+  });
+
+  var i = function () {
+    return function (t) {
+      this.printLine = t.printLine, this.target = t.target, this.referenceElement = t.referenceElement;
+    };
+  }();
+}, function (module, __webpack_exports__, __webpack_require__) {
+  "use strict";
+
+  __webpack_require__.d(__webpack_exports__, "a", function () {
+    return TableExcelHelper;
+  });
+
+  var _ReconsitutionTableColumns__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(19),
+    _assets_plugins_hinnn__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(0),
+    TableExcelHelper = function () {
+      function TableExcelHelper() {
+      }
+
+      return TableExcelHelper.createTableHead = function (t, e) {
+        for (var n = TableExcelHelper.reconsitutionTableColumnTree(t), i = $("<thead></thead>"), colgroup = $("<colgroup></colgroup>"), o = TableExcelHelper.getColumnsWidth(n, e), r = function r(t) {
+          var e = $("<tr></tr>");
+          // 閲嶇疆 colgroup锛岃В鍐冲琛岃〃澶� col 娣诲姞閿欒闂锛屼粎浠ユ渶鍚庝竴琛屾坊鍔�
+          colgroup = $("<colgroup></colgroup>");
+          n[t].filter(function (t) {
+            return t.checked;
+          }).forEach(function (t) {
+            var n = $("<td></td>");
+            t.id && n.attr("id", t.id), t.columnId && n.attr("column-id", t.columnId), (t.align || t.halign) && n.css("text-align", t.halign || t.align), t.vAlign && n.css("vertical-align", t.vAlign), t.colspan > 1 && n.attr("colspan", t.colspan), t.rowspan > 1 && n.attr("rowspan", t.rowspan), n.html(t.title), o[t.id] ? (t.hasWidth = !0, t.targetWidth = o[t.id], n.attr("haswidth", "haswidth"), n.css("width", o[t.id] + "pt")) : t.hasWidth = !1;
+            var s = TableExcelHelper.getHeaderStyler(t);
+            if (s) {
+              var l = s(t);
+              if (l) Object.keys(l).forEach(function (t) {
+                n.css(t, l[t]);
+              });
+            }
+            e.append(n);
+            colgroup.append(`<col column-id="${t.columnId}" width="${t.width}pt"></col>`)
+          }), i.append(e);
+        }, a = 0; a < n.totalLayer; a++) {
+          r(a);
+        }
+        return TableExcelHelper.syncTargetWidthToOption(t), [i, colgroup];
+      }, TableExcelHelper.createTableFooter = function (t, e, n, i, o, r, pageIndex) {
+        // n=>options e=>琛ㄦ牸鎵�鏈夋暟鎹� o=>鎵�鏈夋墦鍗版暟鎹� r=>琛ㄦ牸姣忛〉鏁版嵁
+        var a = $("<tfoot></tfoot>"), p = this.getFooterFormatter(n, i);
+        var tst = this.tableSummaryTitle;
+        let tSumData = n.tableFooterRepeat == "last" ? e : r;
+        let idx = n.columns.length - 1;
+        var rowColumns = this.rowColumns || n.columns[idx].columns;
+        if (n.tableFooterRepeat != 'no' && rowColumns.some(function (column) {return column.tableSummary})) {
+          var tableFooter = $("<tr></tr>");
+          rowColumns.filter(function (t) {
+            return t.checked;
+          }).forEach(function (column) {
+            var fieldData = tSumData.filter(function (row) {
+              return row && row[column.field];
+            }).map(function (row) {
+              return new RegExp("^-?(0|[1-9]\\d*)(\\.\\d+)?").test(row[column.field]) ? Number(row[column.field]) : 0;
+            });
+            var text = column.tableSummaryText;
+            var numF = column.tableSummaryNumFormat || 2;
+            var style = `text-align: ${column.tableSummaryAlign || "center"}`;
+            var colspan = column.tableSummaryColspan == void 0 ? 1 : column.tableSummaryColspan;
+            var upperCaseType = column.upperCase;
+            let {toUpperCase, numFormat} = _assets_plugins_hinnn__WEBPACK_IMPORTED_MODULE_1__.a;
+            var tableSummaryFormatter = TableExcelHelper.getColumnTableSummaryFormatter(column);
+            var formatterResult = tableSummaryFormatter ? tableSummaryFormatter(column, fieldData, e, n) : '';
+            if (formatterResult) {
+              tableFooter.append(formatterResult);
+              return;
+            }
+            switch (column.tableSummary) {
+            case "count":
+              var title = tst(column, text || `${i18n.__('璁℃暟')}:`, o);
+              var count = toUpperCase(upperCaseType,tSumData.filter(i => i).length || 0);
+              tableFooter.append(`<td style="${style}" colspan="${colspan}">${title}${count}</td>`);
+              break;
+            case "sum":
+              var sum = parseFloat(Number(fieldData.reduce(function (prev, cur) {
+                return prev + cur;
+              }, 0)));
+              sum = toUpperCase(upperCaseType,numFormat(sum, numF));
+              var title = tst(column, text || `${i18n.__('鍚堣')}:`, o);
+              tableFooter.append(`<td style="${style}" colspan="${colspan}">${title}${sum}</td>`)
+              break;
+            case "avg":
+              var sum = parseFloat(Number(fieldData.reduce(function (prev, cur) {
+                return prev + cur;
+              }, 0)));
+              var avg = parseFloat(Number(sum / (fieldData.length || 1)));
+              avg = toUpperCase(upperCaseType,numFormat(avg, numF));
+              var title = tst(column, text || `${i18n.__('骞冲潎鍊�')}:`, o);
+              tableFooter.append(`<td style="${style}" colspan="${colspan}">${title}${avg}</td>`)
+              break;
+            case "min":
+              var min = Math.min(...fieldData) || 0;
+              min == Infinity && (min = 0);
+              min = toUpperCase(upperCaseType,numFormat(min, numF));
+              var title = tst(column, text || `${i18n.__('鏈�灏忓��')}:`, o);
+              tableFooter.append(`<td style="${style}" colspan="${colspan}">${title}${min || 0}</td>`)
+              break;
+            case "max":
+              var max = Math.max(...fieldData);
+              max == -Infinity && (max = 0);
+              max = toUpperCase(upperCaseType,numFormat(max, numF));
+              var title = tst(column, text || `${i18n.__('鏈�澶у��')}:`, o);
+              tableFooter.append(`<td style="${style}" colspan="${colspan}">${title}${max || 0}</td>`);
+              break;
+            case "text":
+              tableFooter.append(`<td style="${style}" colspan="${colspan}">${text || ""}</td>`);
+              break;
+            default:
+              if (colspan >= 1) {
+                tableFooter.append(`<td style="${style}" colspan="${colspan}">${text || ""}</td>`)
+              }
+              break;
+            }
+          })
+          a.append(tableFooter);
+        }
+        if (p) {
+          // pageIndex: 褰撳墠椤电爜(0寮�濮�) 濡傛灉琛ㄦ牸鑴氭渶鍚庨〉鏄剧ず,鍒欎腑闂村洖璋� undefined
+          a.append(p(n, e, o, r, pageIndex));
+        }
+        return a;
+      }, TableExcelHelper.tableSummaryTitle = function (column, title, data) {
+        var s = column.tableSummaryTitle == undefined || column.tableSummaryTitle == true;
+        return s ? `${title}` : data ? `` : `<span style="color:firebrick">${title}</span>`;
+      }, TableExcelHelper.createTableRow = function (t, e, printData, n, i) {
+        var h = this;
+        var o = TableExcelHelper.reconsitutionTableColumnTree(t),
+          r = $("<tbody></tbody>");
+        var gff = h.getGroupFieldsFormatter(n, i);
+        var groupRowIndex = 0;
+        var groupFields = gff ? (n.groupFields = gff(i, n, e)) : i.groupFields ? i.groupFields : [];
+        e = Array.isArray(e) ? e : [];
+        groupFields.length ? _assets_plugins_hinnn__WEBPACK_IMPORTED_MODULE_1__.a.groupBy(e, groupFields, function (t) {
+          var e = {};
+          return groupFields.forEach(function (n) {
+            return e[n] = t[n];
+          }), e;
+        }).forEach(function (t) {
+          var groupFormatter = h.getGroupFormatter(n, i);
+          if (groupFormatter) {
+            let result = groupFormatter(o.colspan, e, printData, t, n)
+            if ($(result).is("tr")) {
+              r.append(result)
+            } else if ($(result).is("td")) {
+              r.append(`<tr>${result}</tr>`)
+            } else {
+              r.append(`<tr><td>${result}</td></tr>`)
+            }
+          }
+          var groupFooterFormatter = h.getGroupFooterFormatter(n, i);
+          var groupData = t;
+          if (groupData.rows.forEach(function (t, rowIndex) {
+            let sequenceIndex = n.groupSequenceContinue ? groupRowIndex : rowIndex;
+            var e = TableExcelHelper.createRowTarget(o, t, n, i, sequenceIndex, groupData.rows, printData);
+            r.append(e);
+            groupRowIndex += 1;
+          }), groupFooterFormatter) {
+            let result = groupFooterFormatter(o.colspan, e, printData, t, n)
+            if ($(result).is("tr")) {
+              r.append(result)
+            } else if ($(result).is("td")) {
+              r.append(`<tr>${result}</tr>`)
+            } else {
+              r.append(`<tr><td>${result}</td></tr>`)
+            }
+          }
+        }) : e.forEach(function (t, rowIndex) {
+          var row = TableExcelHelper.createRowTarget(o, t, n, i, rowIndex, e, printData);
+          r.append(row);
+        });
+        return r;
+      }, TableExcelHelper.createRowTarget = function (t, e, n, i, rowIndex, tableData, printData) {
+        var o = $("<tr></tr>");
+        var columns = t.rowColumns.filter(function (t) {
+          return t.checked;
+        });
+        o.data("rowData", e), t.rowColumns.filter(function (t) {
+          return t.checked;
+        }).forEach(function (t, i) {
+          if (!t.checked) return;
+          var rowsColumnsMerge = ''
+          if (n.rowsColumnsMerge) {
+            eval('rowsColumnsMerge=' + n.rowsColumnsMerge)
+            var rowsColumnsArr = rowsColumnsMerge(e, t, i, rowIndex, tableData, printData) || [1, 1]
+            var r = $(`<td style = 'display:${!(rowsColumnsArr[0] && rowsColumnsArr[1]) ? "none" : ""}' rowspan = '${rowsColumnsArr[0]}' colspan = '${rowsColumnsArr[1]}'></td>`);
+          } else {
+            var r = $("<td></td>");
+          }
+          // 璁捐鏃朵笉鍘昏绠楀搴�
+          if (e && Object.keys(e).length > 0 && ("first" == n.tableHeaderRepeat || "none" == n.tableHeaderRepeat)) {
+            t.field && r.attr("field", t.field), t.align && r.css("text-align", t.align), t.vAlign && r.css("vertical-align", t.vAlign);
+            // 鏃犺〃澶存椂璺ㄨ鏃犳晥锛岄渶鏍规嵁鎵�璺ㄨ鏁伴噸鏂拌绠楀搴�
+            if (n.rowsColumnsMerge) {
+              if (rowsColumnsArr[1] > 1) {
+                var width = 0;
+                columns.forEach((item, index) => {
+                  if (index >= i && (index < i + rowsColumnsArr[1])) {
+                    width += item.width
+                  }
+                })
+              }
+            }
+            r.css("width", (width || t.width) + "pt");
+          } else {
+            t.field && r.attr("field", t.field), t.align && r.css("text-align", t.align), t.vAlign && r.css("vertical-align", t.vAlign);
+          }
+          var a = TableExcelHelper.getColumnFormatter(t),
+            p = a ? a(e[t.field], e, i, n) : e[t.field];
+          var rf = TableExcelHelper.getColumnRenderFormatter(t);
+          if (rf) {
+            r.html(rf(e[t.field], e, i, n, rowIndex))
+          //琛ㄦ牸鍐呭鎻掑叆浜岀淮鐮佺瓑
+          } else if ("text" == t.tableTextType || t.tableTextType == void 0) r.html(p);
+          else {
+            if ("barcode" == t.tableTextType) {
+              r.html(
+                '<svg width="100%" display="block" height="100%" class="hibarcode_imgcode" preserveAspectRatio="none slice"></svg ><div class="hibarcode_displayValue"></div>'
+              );
+              try {
+                p ? (JsBarcode(r.find(".hibarcode_imgcode")[0], p, {
+                  format: t.tableBarcodeMode || "CODE128A",
+                  width: 1,
+                  textMargin: -1,
+                  lineColor: "#000000",
+                  margin: 0,
+                  height: parseInt(10),
+                  displayValue: !1
+                }), r.find(".hibarcode_imgcode").attr("height", t.tableColumnHeight || 30 + 'pt'), r.find(".hibarcode_imgcode").css("margin", '5pt 10pt'), r.find(".hibarcode_imgcode").attr("width", "calc(100% - 20pt)")) : r.html("");
+                // this.options.hideTitle || r.find(".hibarcode_displayValue").html(n)
+                if (t.showCodeTitle) {
+                    r.find('.hibarcode_displayValue').html(p)
+                }
+              } catch (t) {
+                console.log(t), r.html(`${i18n.__('姝ゆ牸寮忎笉鏀寔璇ユ枃鏈�')}`);
+              }
+            }
+            if ("image" == t.tableTextType) {
+              r.html('')
+              if (p) {
+
+                var imagebox = $('<div><img style = "max-width:100%;max-height:100%"/></div>')
+                imagebox.find('img').attr('src', p)
+                imagebox.find('img').attr("height", t.tableColumnHeight || 50 + 'pt')
+                console.log(imagebox.find('img').css('width'))
+                r.html(imagebox)
+              }
+
+            }
+            if ("qrcode" == t.tableTextType) {
+              r.html("");
+              try {
+                var qrcodebox = $('<div style="margin:2pt 0pt" class="hiqrcode_imgcode"></div>')
+
+                if (p) {
+                  var l = parseInt(t.width || t.targetWidth || 20),
+                    u = parseInt(t.tableColumnHeight || 20);
+                  qrcodebox.css('height', (l > u ? u : l) + 'pt')
+                  new QRCode(qrcodebox[0], {
+                    width: l > u ? u : l,
+                    height: l > u ? u : l,
+                    colorDark: "#000000",
+                    useSVG: !0,
+                    correctLevel: t.tableQRCodeLevel || 0,
+                  }).makeCode(p);
+                  // r.find(".hiqrcode_imgcode").css("margin", '5pt 0pt'),
+                  r.html(qrcodebox)
+                  if(t.showCodeTitle) {
+                  r.append(
+                      '<div class="hiqrcode_displayValue"></div>'
+                    )
+                  r.find('.hiqrcode_displayValue').html(p)
+                  }
+                }
+              } catch (t) {
+                console.log(t), r.html(`${i18n.__('浜岀淮鐮佺敓鎴愬け璐�')}`);
+              }
+            }
+            if ('sequence' === t.tableTextType) {
+              r.html(rowIndex + 1);
+            }
+          }
+          var s = TableExcelHelper.getColumnStyler(t);
+
+          if (s) {
+            var l = s(e[t.field], e, i, n);
+            if (l) Object.keys(l).forEach(function (t) {
+              r.css(t, l[t]);
+            });
+          }
+
+          o.append(r);
+        });
+        var r = TableExcelHelper.getRowStyler(n, i);
+
+        if (r) {
+          var a = r(e, n);
+          if (a) Object.keys(a).forEach(function (t) {
+            o.css(t, a[t]);
+          });
+        }
+
+        return o;
+      }, TableExcelHelper.createEmptyRowTarget = function (t, tableElement) {
+        var e = TableExcelHelper.reconsitutionTableColumnTree(t),
+            n = $("<tr></tr>");
+        e.rowColumns.filter(function (t) {
+          return t.checked;
+        }).forEach(function (t, e) {
+          var i = $("<td></td>");
+          t.field && i.attr("field", t.field), t.align && i.css("text-align", t.align), t.vAlign && i.css("vertical-align", t.vAlign), n.append(i);
+        });
+        if (tableElement && tableElement.options.tableBodyRowHeight) {
+          n.find('td:not([rowspan])').css('height', tableElement.options.tableBodyRowHeight + 'pt');
+        }
+        return n;
+      }, TableExcelHelper.getColumnsWidth = function (t, e) {
+        var n = {},
+          i = TableExcelHelper.allAutoWidth(t),
+          o = TableExcelHelper.allFixedWidth(t);
+        return t.rowColumns.filter(function (t) {
+          return t.checked;
+        }).forEach(function (t) {
+          if (t.fixed) n[t.id] = t.width; else {
+            var r = e - o,
+              a = t.width / i * (r > 0 ? r : 0);
+            n[t.id] = a;
+          }
+        }), n;
+      }, TableExcelHelper.resizeTableCellWidth = function (t, e, n) {
+        var i = TableExcelHelper.reconsitutionTableColumnTree(e),
+          o = TableExcelHelper.getColumnsWidth(i, n);
+        t.find("thead tr td[haswidth]").map(function (t, e) {
+          var n = $(e).attr("id"),
+            i = o[n];
+          $(e).css("width", i + "pt");
+        });
+      }, TableExcelHelper.allAutoWidth = function (t) {
+        var e = 0, n = {};
+        return t.rowColumns.filter(function (t) {
+          return t.checked;
+        }).forEach(function (t) {
+          n[t.id] ? n[t.id] = 0 : n[t.id] = t.width;
+          e += t.fixed ? 0 : n[t.id];
+        }), e;
+      }, TableExcelHelper.allFixedWidth = function (t) {
+        var e = 0, n = {};;
+        return t.rowColumns.filter(function (t) {
+          return t.checked;
+        }).forEach(function (t) {
+          n[t.id] ? n[t.id] = 0 : n[t.id] = t.width;
+          e += t.fixed ? n[t.id] : 0;
+        }), e;
+      }, TableExcelHelper.reconsitutionTableColumnTree = function (t, e, n) {
+        var i = e || new _ReconsitutionTableColumns__WEBPACK_IMPORTED_MODULE_0__.a();
+        i.colspan = 0;
+
+        for (var o = function o(e) {
+          i.totalLayer = e + 1, i[e] = t[e].columns, 0 == e && t[e].columns.forEach(function (t) {
+            0 == e && (i.colspan += t.colspan);
+          });
+        }, r = 0; r < t.length; r++) {
+          o(r);
+        }
+
+        return i.rowColumns = TableExcelHelper.getOrderdColumns(i), i;
+      }, TableExcelHelper.syncTargetWidthToOption = function (t) {
+        t.forEach(function (t) {
+          t.columns.forEach(function (t) {
+            t.hasWidth && (t.width = t.targetWidth);
+          });
+        });
+      }, TableExcelHelper.getGroupFieldsFormatter = function (options, tablePrintElementType) {
+        var groupFieldsFormatter = void 0;
+        if (tablePrintElementType.groupFields && tablePrintElementType.groupFields.length) {
+          var arr = typeof tablePrintElementType.groupFields == "string" ? tablePrintElementType.groupFields : JSON.stringify(tablePrintElementType.groupFields);
+          options.groupFieldsFormatter = "function(type,options,data){ return " + arr + " }";
+        }
+        if (tablePrintElementType.groupFieldsFormatter && (groupFieldsFormatter = tablePrintElementType.groupFieldsFormatter), options.groupFieldsFormatter) try {
+          var s = "groupFieldsFormatter=" + options.groupFieldsFormatter;
+          eval(s);
+        } catch (t) {
+          console.log(t);
+        }
+        return groupFieldsFormatter;
+      }, TableExcelHelper.getGroupFormatter = function (options, tablePrintElementType) {
+        var groupFormatter = void 0;
+        if (tablePrintElementType.groupFormatter && (groupFormatter = tablePrintElementType.groupFormatter), options.groupFormatter) try {
+          var s = "groupFormatter=" + options.groupFormatter;
+          eval(s);
+        } catch (t) {
+          console.log(t);
+        }
+        return groupFormatter;
+      }, TableExcelHelper.getGroupFooterFormatter = function (options, tablePrintElementType) {
+        var groupFooterFormatter = void 0;
+        if (tablePrintElementType.groupFooterFormatter && (groupFooterFormatter = tablePrintElementType.groupFooterFormatter), options.groupFooterFormatter) try {
+          var s = "groupFooterFormatter=" + options.groupFooterFormatter;
+          eval(s);
+        } catch (t) {
+          console.log(t);
+        }
+        return groupFooterFormatter;
+      }, TableExcelHelper.getFooterFormatter = function (options, tablePrintElementType) {
+        var footerFormatter = void 0;
+        if (tablePrintElementType.footerFormatter && (footerFormatter = tablePrintElementType.footerFormatter), options.footerFormatter) try {
+          var s = "footerFormatter=" + options.footerFormatter;
+          eval(s);
+        } catch (t) {
+          console.log(t);
+        }
+        return footerFormatter;
+      }, TableExcelHelper.getRowStyler = function (options, tablePrintElementType) {
+        var rowStyler = void 0;
+        if (tablePrintElementType.rowStyler && (rowStyler = tablePrintElementType.rowStyler), options.rowStyler) try {
+          var s = "rowStyler=" + options.rowStyler;
+          eval(s);
+        } catch (t) {
+          console.log(t);
+        }
+        return rowStyler;
+      }, TableExcelHelper.getColumnTableSummaryFormatter = function (column) {
+        var tableSummaryFormatter = void 0;
+        if (column.tableSummaryFormatter && (tableSummaryFormatter = column.tableSummaryFormatter), column.tableSummaryFormatter) try {
+          var s = "tableSummaryFormatter=" + column.tableSummaryFormatter;
+          eval(s);
+        } catch (t) {
+          console.log(t);
+        }
+        return tableSummaryFormatter;
+      }, TableExcelHelper.getColumnStyler = function (column) {
+        var styler = void 0;
+        if (column.styler && (styler = column.styler), column.styler2) try {
+          var s = "styler=" + column.styler2;
+          eval(s);
+        } catch (t) {
+          console.log(t);
+        }
+        return styler;
+      }, TableExcelHelper.getHeaderStyler = function (column) {
+        var stylerHeader = void 0;
+        if (column.stylerHeader && (stylerHeader = column.stylerHeader), column.stylerHeader) try {
+          var s = "stylerHeader=" + column.stylerHeader;
+          eval(s);
+        } catch (t) {
+          console.log(t);
+        }
+        return stylerHeader;
+      }, TableExcelHelper.getColumnRenderFormatter = function (column) {
+        var renderFormatter = void 0;
+        if (column.renderFormatter && (renderFormatter = column.renderFormatter), column.renderFormatter) try {
+          var s = "renderFormatter=" + column.renderFormatter;
+          eval(s);
+        } catch (t) {
+          console.log(t);
+        }
+        return renderFormatter;
+      }, TableExcelHelper.getColumnFormatter = function (column) {
+        var formatter = void 0;
+        if (column.formatter && (formatter = column.formatter), column.formatter2) try {
+          var s = "formatter=" + column.formatter2;
+          eval(s);
+        } catch (t) {
+          console.log(t);
+        }
+        return formatter;
+      }, TableExcelHelper.getOrderdColumns = function (t) {
+        // 鏂版暟鎹�
+        let newColumns = {};
+        // 閬嶅巻鎵�鏈� rawData columns锛屽厛澶勭悊 colspan 闃叉鍚庨潰 rowspan 鎻掑叆鍙栦笅鏍囬敊璇�
+        for (let i = 0; i < t.totalLayer; i++) {
+          newColumns[i] = []; // 鏂版暟鎹腑娣诲姞瀵瑰簲 columns
+          t[i].forEach((column, columnIdx) => {
+            newColumns[i].push(...new Array(column.colspan).fill({ ...column, colspan: 1 })); // 鍒涘缓 colspan 涓�
+          });
+        }
+        // 鍐嶆閬嶅巻 rawData columns锛屽鐞� rowspan 缁欏悗闈� columns 鎻掑叆鐩稿悓 column
+        for (let i = 0; i < t.totalLayer; i++) {
+          newColumns[i].forEach((column, columnIdx) => {
+            for (let n = 1; n < column.rowspan; n++) {
+              newColumns[i + n].splice(columnIdx, 0, { ...column, rowspan: 1 });
+            }
+          });
+        }
+        // 鎶婁笂灞�/鍏朵粬灞傜殑 field 璧嬪�肩粰鏈�涓嬪眰
+        let lastColumns = [];
+        for (let i = 0; i < t.totalLayer; i++) {
+          if (i >= t.totalLayer - 1) {
+            newColumns[i].forEach((column, columnIdx) => {
+              if (!column.field) {
+                 column.field = lastColumns[columnIdx];
+              }
+            })
+          } else {
+            newColumns[i].forEach((column, columnIdx) => {
+              if (i == 0) {
+                lastColumns.push(column.field || "");
+              } else {
+                column.field && (lastColumns[columnIdx] = column.field);
+              }
+            })
+          }
+        }
+        this.rowColumns = newColumns[t.totalLayer - 1];
+        return newColumns[t.totalLayer - 1];
+      }, TableExcelHelper;
+    }();
+}, function (t, e, n) {
+  "use strict";
+
+  n.d(e, "a", function () {
+    return i;
+  });
+
+  var i = function () {
+    function t(t) {
+      this.top = t.top, this.left = t.left, this.height = t.height, this.width = t.width, this.bottomInLastPaper = t.bottomInLastPaper, this.beginPrintPaperIndex = t.beginPrintPaperIndex, this.printTopInPaper = t.printTopInPaper, this.endPrintPaperIndex = t.endPrintPaperIndex;
+    }
+
+    return t.prototype.isPositionLeftOrRight = function (t) {
+      return this.top <= t && this.top + this.height > t;
+    }, t;
+  }();
+}, function (t, e, n) {
+  "use strict";
+
+  var i = function () {
+      function t() {
+        this.name = "lineHeight";
+      }
+
+      return t.prototype.css = function (t, e) {
+        if (t && t.length) {
+          if (e) return t.css("line-height", e + "pt"), "line-height:" + e + "pt";
+          t[0].style.lineHeight = "";
+        }
+
+        return null;
+      }, t.prototype.createTarget = function () {
+        return this.target = $(`<div class="hiprint-option-item">\n        <div class="hiprint-option-item-label">\n        ${i18n.__('瀛椾綋琛岄珮')}\n        </div>\n        <div class="hiprint-option-item-field">\n        <select class="auto-submit">\n        <option value="" >${i18n.__('榛樿')}</option>\n        <option value="6" >6pt</option>\n        <option value="6.75" >6.75pt</option>\n        <option value="7.5" >7.5pt</option>\n        <option value="8.25" >8.25pt</option>\n        <option value="9" >9pt</option>\n        <option value="9.75" >9.75pt</option>\n        <option value="10.5" >10.5pt</option>\n        <option value="11.25" >11.25pt</option>\n        <option value="12" >12pt</option>\n        <option value="12.75" >12.75pt</option>\n        <option value="13.5" >13pt</option>\n        <option value="14.25" >14.25pt</option>\n        <option value="15" >15pt</option>\n        <option value="15.75" >15.75pt</option>\n        <option value="16.5" >16.5pt</option>\n        <option value="17.25" >17.25pt</option>\n        <option value="18" >18pt</option>\n        <option value="18.75" >18.75pt</option>\n        <option value="19.5" >19.5pt</option>\n        <option value="20.25" >20.25pt</option>\n        <option value="21" >21pt</option>\n        <option value="21.75" >21.75pt</option>\n        <option value="22.5" >22.5pt</option>\n        <option value="23.25" >23.25pt</option>\n        <option value="24" >24pt</option>\n        <option value="24.75" >24.75pt</option>\n        <option value="25.5" >25.5pt</option>\n        <option value="26.25" >26.25pt</option>\n        <option value="27" >27pt</option>\n        <option value="27.75" >27.75pt</option>\n        <option value="28.5" >28.5pt</option>\n        <option value="29.25" >29.25pt</option>\n        <option value="30" >30pt</option>\n        <option value="30.75" >30.75pt</option>\n        <option value="31.5" >31.5pt</option>\n        <option value="32.25" >32.25pt</option>\n        <option value="33" >33pt</option>\n        <option value="33.75" >33.75pt</option>\n        <option value="34.5" >34.5pt</option>\n        <option value="35.25" >35.25pt</option>\n        <option value="36" >36pt</option>\n        </select>\n        </div>\n    </div>`), this.target;
+      }, t.prototype.getValue = function () {
+        var t = this.target.find("select").val();
+        if (t) return parseFloat(t.toString());
+      }, t.prototype.setValue = function (t) {
+        t && (this.target.find('option[value="' + t + '"]').length || this.target.find("select").prepend('<option value="' + t + '" >' + t + "</option>"));
+        this.target.find("select").val(t);
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }(),
+    fontFamily = function () {
+      function t() {
+        this.name = "fontFamily";
+      }
+      return t.prototype.createTarget = function (t) {
+        var e = void 0;
+        if (t && (e = t.getFontList()), e) {
+          var n = `<div class="hiprint-option-item">\n        <div class="hiprint-option-item-label">\n        ${i18n.__('瀛椾綋')}\n        </div>\n        <div class="hiprint-option-item-field">\n        <select class="auto-submit">\n        <option value="" >${i18n.__('榛樿')}</option>`;
+          e.forEach(function (t, e) {
+            n += ' <option value="' + (t.value || "") + '" >' + (t.title || "") + "</option>";
+          }), n += " </select>\n            </div>\n        </div>", this.target = $(n);
+        } else {
+          this.target = $(`<div class="hiprint-option-item">\n        <div class="hiprint-option-item-label">\n        ${i18n.__('瀛椾綋')}\n        </div>\n        <div class="hiprint-option-item-field">\n        <select class="auto-submit">\n        <option value="" >${i18n.__('榛樿')}</option>\n            <option value="SimSun" >${i18n.__('瀹嬩綋')}</option>\n            <option value="Microsoft YaHei" >${i18n.__('寰蒋闆呴粦')}</option>\n        </select>\n        </div>\n    </div>`);
+        }
+        return this.target;
+      }, t.prototype.css = function (t, e) {
+        if (t && t.length) {
+          if (e) return t.css("font-family", e), "font-family:" + e;
+          t[0].style.fontFamily = "inherit"; // 浠庣埗鍏冪礌缁ф壙瀛椾綋, 鍚﹀垯妯℃澘瀛椾綋鏃犳晥
+        }
+        return null;
+      }, t.prototype.getValue = function () {
+        var t = this.target.find("select").val();
+        if (t) return t.toString();
+      }, t.prototype.setValue = function (t) {
+        t && (this.target.find('option[value="' + t + '"]').length || this.target.find("select").prepend('<option value="' + t + '" >' + t + "</option>"));
+        this.target.find("select").val(t);
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }(),
+    r = function () {
+      function t() {
+        this.name = "fontSize";
+      }
+
+      return t.prototype.css = function (t, e) {
+        if (t && t.length) {
+          if (e) return t.css("font-size", e + "pt"), "font-size:" + e + "pt";
+          t[0].style.fontSize = "";
+        }
+
+        return null;
+      }, t.prototype.createTarget = function () {
+        return this.target = $(`<div class="hiprint-option-item">\n        <div class="hiprint-option-item-label">\n        ${i18n.__('瀛椾綋澶у皬')}\n        </div>\n        <div class="hiprint-option-item-field">\n        <select class="auto-submit">\n        <option value="" >${i18n.__('榛樿')}</option>\n        <option value="6" >6pt</option>\n        <option value="6.75" >6.75pt</option>\n        <option value="7.5" >7.5pt</option>\n        <option value="8.25" >8.25pt</option>\n        <option value="9" >9pt</option>\n        <option value="9.75" >9.75pt</option>\n        <option value="10.5" >10.5pt</option>\n        <option value="11.25" >11.25pt</option>\n        <option value="12" >12pt</option>\n        <option value="12.75" >12.75pt</option>\n        <option value="13.5" >13.5pt</option>\n        <option value="14.25" >14.25pt</option>\n        <option value="15" >15pt</option>\n        <option value="15.75" >15.75pt</option>\n        <option value="16.5" >16.5pt</option>\n        <option value="17.25" >17.25pt</option>\n        <option value="18" >18pt</option>\n        <option value="18.75" >18.75pt</option>\n        <option value="19.5" >19.5pt</option>\n        <option value="20.25" >20.25pt</option>\n        <option value="21" >21pt</option>\n        <option value="21.75" >21.75pt</option>\n        </select>\n        </div>\n    </div>`), this.target;
+      }, t.prototype.getValue = function () {
+        var t = this.target.find("select").val();
+        if (t) return parseFloat(t.toString());
+      }, t.prototype.setValue = function (t) {
+        t && (this.target.find('option[value="' + t + '"]').length || this.target.find("select").prepend('<option value="' + t + '" >' + t + "</option>"));
+        this.target.find("select").val(t);
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }(),
+    a = function () {
+      function t() {
+        this.name = "fontWeight";
+      }
+
+      return t.prototype.css = function (t, e) {
+        if (t && t.length) {
+          if (e) return t.css("font-weight", e), "font-weight:" + e;
+          t[0].style.fontWeight = "";
+        }
+
+        return null;
+      }, t.prototype.createTarget = function () {
+        return this.target = $(`<div class="hiprint-option-item">\n        <div class="hiprint-option-item-label">\n        ${i18n.__('瀛椾綋绮楃粏')}\n        </div>\n        <div class="hiprint-option-item-field">\n        <select class="auto-submit">\n        <option value="" >${i18n.__('榛樿')}</option>\n        <option value="lighter" >${i18n.__('鏇寸粏')}</option>\n        <option value="bold" >${i18n.__('绮椾綋')}</option>\n        <option value="bolder" >${i18n.__('绮椾綋+')}</option>\n            <option value="100" >100</option>\n            <option value="200" >200</option>\n            <option value="300" >300</option>\n            <option value="400" >400</option>\n            <option value="500" >500</option>\n            <option value="600" >600</option>\n            <option value="700" >700</option>\n            <option value="800" >800</option>\n            <option value="900" >900</option>\n        </select>\n        </div>\n    </div>`), this.target;
+      }, t.prototype.getValue = function () {
+        var t = this.target.find("select").val();
+        if (t) return t.toString();
+      }, t.prototype.setValue = function (t) {
+        t && (this.target.find('option[value="' + t + '"]').length || this.target.find("select").prepend('<option value="' + t + '" >' + t + "</option>"));
+        this.target.find("select").val(t);
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }(),
+    p = function () {
+      function t() {
+        this.name = "letterSpacing";
+      }
+      return t.prototype.css = function (t, e) {
+        if (t && t.length) {
+          if (e) return t.css("letter-spacing", e + "pt"), "letter-spacing:" + e + "pt";
+          t[0].style.letterSpacing = "";
+        }
+        return null;
+      }, t.prototype.createTarget = function () {
+        return this.target = $(`<div class="hiprint-option-item">\n        <div class="hiprint-option-item-label">\n        ${i18n.__('瀛楅棿璺�')}\n        </div>\n        <div class="hiprint-option-item-field">\n        <select class="auto-submit">\n        <option value="" >${i18n.__('榛樿')}</option>\n        <option value="0.75" >0.75pt</option>\n        <option value="1.5" >1.5pt</option>\n        <option value="2.25" >2.25pt</option>\n        <option value="3" >3pt</option>\n        <option value="3.75" >3.75pt</option>\n        <option value="4.5" >4.5pt</option>\n        <option value="5.25" >5.25pt</option>\n        <option value="6" >6pt</option>\n        <option value="6.75" >6.75pt</option>\n        <option value="7.5" >7.5pt</option>\n        <option value="8.25" >8.25pt</option>\n        <option value="9" >9pt</option>\n        <option value="9.75" >9.75pt</option>\n        <option value="10.5" >10.5pt</option>\n        <option value="11.25" >11.25pt</option>\n        <option value="12" >12pt</option>\n        </select>\n        </div>\n    </div>`), this.target;
+      }, t.prototype.getValue = function () {
+        var t = this.target.find("select").val();
+        if (t) return parseFloat(t.toString());
+      }, t.prototype.setValue = function (t) {
+        t && (this.target.find('option[value="' + t + '"]').length || this.target.find("select").prepend('<option value="' + t + '" >' + t + "</option>"));
+        this.target.find("select").val(t);
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }(),
+    s = function () {
+      function t() {
+        this.name = "textAlign";
+      }
+      return t.prototype.css = function (t, e) {
+        if (t && t.length) {
+          if (e) return t.css("text-align", e), "justify" == e ? (t.css("text-align-last", "justify"), t.css("text-justify", "distribute-all-lines")) : (t[0].style.textAlignLast = "", t[0].style.textJustify = ""), "text-align:" + e;
+          t[0].style.textAlign = "", t[0].style.textAlignLast = "", t[0].style.textJustify = "";
+        }
+
+        return null;
+      }, t.prototype.createTarget = function () {
+        return this.target = $(`<div class="hiprint-option-item">\n        <div class="hiprint-option-item-label">\n        ${i18n.__('宸﹀彸瀵归綈')}\n        </div>\n        <div class="hiprint-option-item-field">\n        <select class="auto-submit">\n        <option value="" >${i18n.__('榛樿')}</option>\n        <option value="left" >${i18n.__('灞呭乏')}</option>\n        <option value="center" >${i18n.__('灞呬腑')}</option>\n        <option value="right" >${i18n.__('灞呭彸')}</option>\n        <option value="justify" >${i18n.__('涓ょ瀵归綈')}</option>\n        </select>\n        </div>\n    </div>`), this.target;
+      }, t.prototype.getValue = function () {
+        var t = this.target.find("select").val();
+        if (t) return t.toString();
+      }, t.prototype.setValue = function (t) {
+        this.target.find("select").val(t);
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }(),
+    l = function () {
+      function t() {
+        this.name = "hideTitle";
+      }
+
+      return t.prototype.createTarget = function () {
+        return this.target = $(`<div class="hiprint-option-item">\n        <div class="hiprint-option-item-label">\n        ${i18n.__('鏍囬鏄剧ず闅愯棌')}\n        </div>\n        <div class="hiprint-option-item-field">\n        <select class="auto-submit">\n        <option value="" >${i18n.__('榛樿')}</option>\n            <option value="false" >${i18n.__('鏄剧ず')}</option>\n            <option value="true" >${i18n.__('闅愯棌')}</option>\n        </select>\n        </div>\n    </div>`), this.target;
+      }, t.prototype.getValue = function () {
+        if ("true" == this.target.find("select").val()) return !0;
+      }, t.prototype.setValue = function (t) {
+        this.target.find("select").val((null == t ? "" : t).toString());
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }(),
+    u = function () {
+      function t() {
+        this.name = "tableBorder";
+      }
+
+      return t.prototype.css = function (t, e) {
+        if (t.find("table").length) {
+          if ("border" == e || void 0 == e) return t.find("table").css("border", "1px solid"), "border:1px solid";
+          "noBorder" == e ? t.find("table").css("border", "0px solid") : t.find("table")[0].style.border = "";
+        }
+
+        return null;
+      }, t.prototype.createTarget = function () {
+        return this.target = $(`<div class="hiprint-option-item">\n        <div class="hiprint-option-item-label">\n        ${i18n.__('琛ㄦ牸杈规')}\n        </div>\n        <div class="hiprint-option-item-field">\n            <select class="auto-submit">\n            <option value="" >${i18n.__('榛樿')}</option>\n            <option value="border" >${i18n.__('鏈夎竟妗�')}</option>\n            <option value="noBorder" >${i18n.__('鏃犺竟妗�')}</option>\n            </select>\n        </div>\n    </div>`), this.target;
+      }, t.prototype.getValue = function () {
+        var t = this.target.find("select").val();
+        if (t) return t.toString();
+      }, t.prototype.setValue = function (t) {
+        this.target.find("select").val(t);
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }(),
+    d = function () {
+      function t() {
+        this.name = "tableHeaderBorder";
+      }
+
+      return t.prototype.css = function (t, e) {
+        if (t.find("thead tr").length) {
+          if ("border" == e || void 0 == e) return t.find("thead tr").addClass("hiprint-printElement-tableTarget-border-all");
+          "noBorder" == e ? t.find("thead tr").addClass("hiprint-printElement-tableTarget-border-none") : "leftBorder" == e ? t.find("thead tr").addClass("hiprint-printElement-tableTarget-border-left") : "rightBorder" == e ? t.find("thead tr").addClass("hiprint-printElement-tableTarget-border-right") : "leftRightBorder" == e ? t.find("thead tr").addClass("hiprint-printElement-tableTarget-border-lr") : "topBorder" == e ? t.find("thead tr").addClass("hiprint-printElement-tableTarget-border-top") : "bottomBorder" == e ? t.find("thead tr").addClass("hiprint-printElement-tableTarget-border-bottom") : "topBottomBorder" == e ? t.find("thead tr").addClass("hiprint-printElement-tableTarget-border-tb") : t.find("thead tr").removeClass();
+        }
+
+        return null;
+      }, t.prototype.createTarget = function () {
+        return this.target = $(`<div class="hiprint-option-item">\n        <div class="hiprint-option-item-label">\n        ${i18n.__('琛ㄥご杈规')}\n        </div>\n        <div class="hiprint-option-item-field">\n        <select class="auto-submit">\n        <option value="" >${i18n.__('榛樿')}</option>    \n        <option value="border" >${i18n.__('鏈夎竟妗�')}</option>\n        <option value="noBorder" >${i18n.__('鏃犺竟妗�')}</option>\n        <option value="leftBorder" >${i18n.__('宸﹁竟妗�')}</option>\n        <option value="rightBorder" >${i18n.__('鍙宠竟妗�')}</option>\n        <option value="leftRightBorder" >${i18n.__('宸﹀彸杈规')}</option>\n        <option value="topBorder" >${i18n.__('涓婅竟妗�')}</option>\n        <option value="bottomBorder" >${i18n.__('涓嬭竟妗�')}</option>\n        <option value="topBottomBorder" >${i18n.__('涓婁笅杈规')}</option>\n        </select>\n        </div>\n    </div>`), this.target;
+      }, t.prototype.getValue = function () {
+        var t = this.target.find("select").val();
+        if (t) return t.toString();
+      }, t.prototype.setValue = function (t) {
+        this.target.find("select").val(t);
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }(),
+    c = function () {
+      function t() {
+        this.name = "tableHeaderCellBorder";
+      }
+
+      return t.prototype.css = function (t, e) {
+        if (t.find("thead tr").length) {
+          if ("border" == e || void 0 == e) return t.find("thead tr").addClass("hiprint-printElement-tableTarget-border-td-all");
+          "noBorder" == e ? t.find("thead tr").addClass("hiprint-printElement-tableTarget-border-td-none") : t.find("thead tr").removeClass();
+        }
+
+        return null;
+      }, t.prototype.createTarget = function () {
+        return this.target = $(`<div class="hiprint-option-item">\n        <div class="hiprint-option-item-label">\n        ${i18n.__('琛ㄥご鍗曞厓鏍艰竟妗�')}\n        </div>\n        <div class="hiprint-option-item-field">\n        <select class="auto-submit">\n        <option value="" >${i18n.__('榛樿')}</option>    \n        <option value="border" >${i18n.__('鏈夎竟妗�')}</option>\n        <option value="noBorder" >${i18n.__('鏃犺竟妗�')}</option>\n      \n        </select>\n        </div>\n    </div>`), this.target;
+      }, t.prototype.getValue = function () {
+        var t = this.target.find("select").val();
+        if (t) return t.toString();
+      }, t.prototype.setValue = function (t) {
+        this.target.find("select").val(t);
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }(),
+    d2 = function () {
+      function t() {
+        this.name = "tableFooterBorder";
+      }
+
+      return t.prototype.css = function (t, e) {
+        if (t.find("tfoot tr").length) {
+          if ("border" == e || void 0 == e) return t.find("tfoot tr").addClass("hiprint-printElement-tableTarget-border-all");
+          "noBorder" == e ? t.find("tfoot tr").addClass("hiprint-printElement-tableTarget-border-none") : "leftBorder" == e ? t.find("tfoot tr").addClass("hiprint-printElement-tableTarget-border-left") : "rightBorder" == e ? t.find("tfoot tr").addClass("hiprint-printElement-tableTarget-border-right") : "leftRightBorder" == e ? t.find("tfoot tr").addClass("hiprint-printElement-tableTarget-border-lr") : "topBorder" == e ? t.find("tfoot tr").addClass("hiprint-printElement-tableTarget-border-top") : "bottomBorder" == e ? t.find("tfoot tr").addClass("hiprint-printElement-tableTarget-border-bottom") : "topBottomBorder" == e ? t.find("tfoot tr").addClass("hiprint-printElement-tableTarget-border-tb") : t.find("tfoot tr").removeClass();
+        }
+
+        return null;
+      }, t.prototype.createTarget = function () {
+        return this.target = $(`<div class="hiprint-option-item">\n        <div class="hiprint-option-item-label">\n        ${i18n.__('琛ㄥ熬杈规')}\n        </div>\n        <div class="hiprint-option-item-field">\n        <select class="auto-submit">\n        <option value="" >${i18n.__('榛樿')}</option>    \n        <option value="border" >${i18n.__('鏈夎竟妗�')}</option>\n        <option value="noBorder" >${i18n.__('鏃犺竟妗�')}</option>\n        <option value="leftBorder" >${i18n.__('宸﹁竟妗�')}</option>\n        <option value="rightBorder" >${i18n.__('鍙宠竟妗�')}</option>\n        <option value="leftRightBorder" >${i18n.__('宸﹀彸杈规')}</option>\n        <option value="topBorder" >${i18n.__('涓婅竟妗�')}</option>\n        <option value="bottomBorder" >${i18n.__('涓嬭竟妗�')}</option>\n        <option value="topBottomBorder" >${i18n.__('涓婁笅杈规')}</option>\n        </select>\n        </div>\n    </div>`), this.target;
+      }, t.prototype.getValue = function () {
+        var t = this.target.find("select").val();
+        if (t) return t.toString();
+      }, t.prototype.setValue = function (t) {
+        this.target.find("select").val(t);
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }(),
+    c2 = function () {
+      function t() {
+        this.name = "tableFooterCellBorder";
+      }
+
+      return t.prototype.css = function (t, e) {
+        if (t.find("tfoot tr").length) {
+          if ("border" == e || void 0 == e) return t.find("tfoot tr").addClass("hiprint-printElement-tableTarget-border-td-all");
+          "noBorder" == e ? t.find("tfoot tr").addClass("hiprint-printElement-tableTarget-border-td-none") : t.find("tfoot tr").removeClass();
+        }
+
+        return null;
+      }, t.prototype.createTarget = function () {
+        return this.target = $(`<div class="hiprint-option-item">\n        <div class="hiprint-option-item-label">\n        ${i18n.__('琛ㄥ熬鍗曞厓鏍艰竟妗�')}\n        </div>\n        <div class="hiprint-option-item-field">\n        <select class="auto-submit">\n        <option value="" >${i18n.__('榛樿')}</option>    \n        <option value="border" >${i18n.__('鏈夎竟妗�')}</option>\n        <option value="noBorder" >${i18n.__('鏃犺竟妗�')}</option>\n      \n        </select>\n        </div>\n    </div>`), this.target;
+      }, t.prototype.getValue = function () {
+        var t = this.target.find("select").val();
+        if (t) return t.toString();
+      }, t.prototype.setValue = function (t) {
+        this.target.find("select").val(t);
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }(),
+    h = function () {
+      function t() {
+        this.name = "tableHeaderRowHeight";
+      }
+
+      return t.prototype.css = function (t, e) {
+        if (t.find("thead tr td").length) {
+          if (e) return t.find("thead tr td:not([rowspan])").css("height", e + "pt"), "height:" + e + "pt";
+          t.find("thead tr td").map(function (t, e) {
+            e.style.height = "";
+          });
+        }
+
+        return null;
+      }, t.prototype.createTarget = function () {
+        return this.target = $(`<div class="hiprint-option-item">\n        <div class="hiprint-option-item-label">\n        ${i18n.__('琛ㄥご琛岄珮')}\n        </div>\n        <div class="hiprint-option-item-field">\n        <select class="auto-submit">\n       \n        <option value="" >${i18n.__('榛樿')}</option>\n        <option value="6" >6pt</option>\n        <option value="6.75" >6.75pt</option>\n        <option value="7.5" >7.5pt</option>\n        <option value="8.25" >8.25pt</option>\n        <option value="9" >9pt</option>\n        <option value="9.75" >9.75pt</option>\n        <option value="10.5" >10.5pt</option>\n        <option value="11.25" >11.25pt</option>\n        <option value="12" >12pt</option>\n        <option value="12.75" >12.75pt</option>\n        <option value="13.5" >13.5pt</option>\n        <option value="14.25" >14.25pt</option>\n        <option value="15" >15pt</option>\n        <option value="15.75" >15.75pt</option>\n        <option value="16.5" >16.5pt</option>\n        <option value="17.25" >17.25pt</option>\n        <option value="18" >18pt</option>\n        <option value="18.75" >18.75pt</option>\n        <option value="19.5" >19.5pt</option>\n        <option value="20.25" >20.25pt</option>\n        <option value="21" >21pt</option>\n        <option value="21.75" >21.75pt</option>\n        <option value="22.5" >22.5pt</option>\n        <option value="23.25" >23.25pt</option>\n        <option value="24" >24pt</option>\n        <option value="24.75" >24.75pt</option>\n        <option value="25.5" >25.5pt</option>\n        <option value="26.25" >26.25pt</option>\n        <option value="27" >27pt</option>\n        <option value="27.75" >27.75pt</option>\n        <option value="28.5" >28.5pt</option>\n        <option value="29.25" >29.25pt</option>\n        <option value="30" >30pt</option>\n        <option value="30.75" >30.75pt</option>\n        <option value="31.5" >31.5pt</option>\n        <option value="32.25" >32.25pt</option>\n        <option value="33" >33pt</option>\n        <option value="33.75" >33.75pt</option>\n        <option value="34.5" >34.5pt</option>\n        <option value="35.25" >35.25pt</option>\n        <option value="36" >36pt</option>\n        </select>\n        </div>\n    </div>`), this.target;
+      }, t.prototype.getValue = function () {
+        var t = this.target.find("select").val();
+        if (t) return parseFloat(t.toString());
+      }, t.prototype.setValue = function (t) {
+        t && (this.target.find('option[value="' + t + '"]').length || this.target.find("select").prepend('<option value="' + t + '" >' + t + "</option>"));
+        this.target.find("select").val(t);
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }(),
+    f = function () {
+      function t() {
+        this.name = "tableHeaderFontSize";
+      }
+
+      return t.prototype.css = function (t, e) {
+        if (t.find("thead").length) {
+          if (e) return t.find("thead").css("font-size", e + "pt"), "font-size:" + e + "pt";
+          t.find("thead").map(function (t, e) {
+            e.style.fontSize = "";
+          });
+        }
+
+        return null;
+      }, t.prototype.createTarget = function () {
+        return this.target = $(`<div class="hiprint-option-item">\n        <div class="hiprint-option-item-label">\n        ${i18n.__('琛ㄥご瀛椾綋澶у皬')}\n        </div>\n        <div class="hiprint-option-item-field">\n        <select class="auto-submit">\n        <option value="" >${i18n.__('榛樿')}</option>\n        <option value="6" >6pt</option>\n        <option value="6.75" >6.75pt</option>\n        <option value="7.5" >7.5pt</option>\n        <option value="8.25" >8.25pt</option>\n        <option value="9" >9pt</option>\n        <option value="9.75" >9.75pt</option>\n        <option value="10.5" >10.5pt</option>\n        <option value="11.25" >11.25pt</option>\n        <option value="12" >12pt</option>\n        <option value="12.75" >12.75pt</option>\n        <option value="13.5" >13.5pt</option>\n        <option value="14.25" >14.25pt</option>\n        <option value="15" >15pt</option>\n        <option value="15.75" >15.75pt</option>\n        <option value="16.5" >16.5pt</option>\n        <option value="17.25" >17.25pt</option>\n        <option value="18" >18pt</option>\n        <option value="18.75" >18.75pt</option>\n        <option value="19.5" >19.5pt</option>\n        <option value="20.25" >20.25pt</option>\n        <option value="21" >21pt</option>\n        <option value="21.75" >21.75pt</option>\n        </select>\n        </div>\n    </div>`), this.target;
+      }, t.prototype.getValue = function () {
+        var t = this.target.find("select").val();
+        if (t) return parseFloat(t.toString());
+      }, t.prototype.setValue = function (t) {
+        t && (this.target.find('option[value="' + t + '"]').length || this.target.find("select").prepend('<option value="' + t + '" >' + t + "</option>"));
+        this.target.find("select").val(t);
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }(),
+    g = function () {
+      function t() {
+        this.name = "tableHeaderFontWeight";
+      }
+
+      return t.prototype.css = function (t, e) {
+        if (t.find("thead").length) {
+          if (e) return t.find("thead tr td").css("font-weight", e), "font-weight:" + e;
+          t.find("thead tr td").map(function (t, e) {
+            e.style.fontWeight = "";
+          });
+        }
+
+        return null;
+      }, t.prototype.createTarget = function () {
+        return this.target = $(`<div class="hiprint-option-item">\n        <div class="hiprint-option-item-label">\n        ${i18n.__('琛ㄥご瀛椾綋绮楃粏')}\n        </div>\n        <div class="hiprint-option-item-field">\n        <select class="auto-submit"> \n        <option value="" >${i18n.__('榛樿')}</option>\n        <option value="lighter" >${i18n.__('鏇寸粏')}</option>\n        <option value="bold" >${i18n.__('绮椾綋')}</option>\n        <option value="bolder" >${i18n.__('绮椾綋+')}</option>\n        <option value="100" >100</option>\n        <option value="200" >200</option>\n        <option value="300" >300</option>\n        <option value="400" >400</option>\n        <option value="500" >500</option>\n        <option value="600" >600</option>\n        <option value="700" >700</option>\n        <option value="800" >800</option>\n        <option value="900" >900</option>\n        </select>\n        </div>\n    </div>`), this.target;
+      }, t.prototype.getValue = function () {
+        var t = this.target.find("select").val();
+        if (t) return t;
+      }, t.prototype.setValue = function (t) {
+        t && (this.target.find('option[value="' + t + '"]').length || this.target.find("select").prepend('<option value="' + t + '" >' + t + "</option>"));
+        this.target.find("select").val(t);
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }(),
+    m = function () {
+      function t() {
+        this.name = "tableBodyCellBorder";
+      }
+
+      return t.prototype.css = function (t, e) {
+        if (t.find("tbody tr").length) {
+          if ("border" == e || void 0 == e) return t.find("tbody tr").addClass("hiprint-printElement-tableTarget-border-td-all");
+          "noBorder" == e ? t.find("tbody tr").addClass("hiprint-printElement-tableTarget-border-td-none") : t.find("tbody tr").removeClass();
+        }
+
+        return null;
+      }, t.prototype.createTarget = function () {
+        return this.target = $(`<div class="hiprint-option-item">\n        <div class="hiprint-option-item-label">\n            ${i18n.__('琛ㄤ綋鍗曞厓鏍艰竟妗�')}\n        </div>\n        <div class="hiprint-option-item-field">\n            <select class="auto-submit">\n            <option value="" >${i18n.__('榛樿')}</option>\n            <option value="border" >${i18n.__('鏈夎竟妗�')}</option>\n            <option value="noBorder" >${i18n.__('鏃犺竟妗�')}</option>\n            </select>\n        </div>\n    </div>`), this.target;
+      }, t.prototype.getValue = function () {
+        var t = this.target.find("select").val();
+        if (t) return t.toString();
+      }, t.prototype.setValue = function (t) {
+        this.target.find("select").val(t);
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }(),
+    v = function () {
+      function t() {
+        this.name = "tableBodyRowHeight";
+      }
+
+      return t.prototype.css = function (t, e) {
+        if (t.find("tbody tr td").length) {
+          if (e) return t.find("tbody tr td").css("height", e + "pt"), "height:" + e + "pt";
+          t.find("tbody tr td").map(function (t, e) {
+            e.style.height = "";
+          });
+        }
+
+        return null;
+      }, t.prototype.createTarget = function () {
+        return this.target = $(`<div class="hiprint-option-item">\n        <div class="hiprint-option-item-label">\n            ${i18n.__('琛ㄤ綋琛岄珮')}\n        </div>\n        <div class="hiprint-option-item-field">\n            <select class="auto-submit">\n            <option value="" >${i18n.__('榛樿')}</option>\n            <option value="6" >6pt</option>\n            <option value="6.75" >6.75pt</option>\n            <option value="7.5" >7.5pt</option>\n            <option value="8.25" >8.25pt</option>\n            <option value="9" >9pt</option>\n            <option value="9.75" >9.75pt</option>\n            <option value="10.5" >10.5pt</option>\n            <option value="11.25" >11.25pt</option>\n            <option value="12" >12pt</option>\n            <option value="12.75" >12.75pt</option>\n            <option value="13.5" >13.5pt</option>\n            <option value="14.25" >14.25pt</option>\n            <option value="15" >15pt</option>\n            <option value="15.75" >15.75pt</option>\n            <option value="16.5" >16.5pt</option>\n            <option value="17.25" >17.25pt</option>\n            <option value="18" >18pt</option>\n            <option value="18.75" >18.75pt</option>\n            <option value="19.5" >19.5pt</option>\n            <option value="20.25" >20.25pt</option>\n            <option value="21" >21pt</option>\n            <option value="21.75" >21.75pt</option>\n            <option value="22.5" >22.5pt</option>\n            <option value="23.25" >23.25pt</option>\n            <option value="24" >24pt</option>\n            <option value="24.75" >24.75pt</option>\n            <option value="25.5" >25.5pt</option>\n            <option value="26.25" >26.25pt</option>\n            <option value="27" >27pt</option>\n            <option value="27.75" >27.75pt</option>\n            <option value="28.5" >28.5pt</option>\n            <option value="29.25" >29.25pt</option>\n            <option value="30" >30pt</option>\n            <option value="30.75" >30.75pt</option>\n            <option value="31.5" >31.5pt</option>\n            <option value="32.25" >32.25pt</option>\n            <option value="33" >33pt</option>\n            <option value="33.75" >33.75pt</option>\n            <option value="34.5" >34.5pt</option>\n            <option value="35.25" >35.25pt</option>\n            <option value="36" >36pt</option>\n            </select>\n        </div>\n    </div>`), this.target;
+      }, t.prototype.getValue = function () {
+        var t = this.target.find("select").val();
+        if (t) return parseFloat(t.toString());
+      }, t.prototype.setValue = function (t) {
+        t && (this.target.find('option[value="' + t + '"]').length || this.target.find("select").prepend('<option value="' + t + '" >' + t + "</option>"));
+        this.target.find("select").val(t);
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }(),
+    y = function () {
+      function t() {
+        this.name = "tableHeaderBackground";
+      }
+
+      return t.prototype.css = function (t, e) {
+        if (t.find("thead").length) {
+          if (e) return t.find("thead").css("background", e), "background:" + e;
+          t.find("thead").map(function (t, e) {
+            e.style.background = "";
+          });
+        }
+
+        return null;
+      }, t.prototype.createTarget = function () {
+        return this.target = $(`<div class="hiprint-option-item">\n        <div class="hiprint-option-item-label">\n        ${i18n.__('琛ㄥご鑳屾櫙')}\n        </div>\n        <div class="hiprint-option-item-field">\n        <input type="text" class="auto-submit" />\n        </div>\n    </div>`), this.target;
+      }, t.prototype.getValue = function () {
+        var t = this.target.find("input").val();
+        if (t) return t.toString();
+      }, t.prototype.setValue = function (t) {
+        this.target.find("input").minicolors({
+          defaultValue: t || "",
+          theme: "bootstrap"
+        }), this.target.find("input").val(t);
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }(),
+    b = function () {
+      function t() {
+        this.name = "borderWidth";
+      }
+
+      return t.prototype.createTarget = function (t) {
+        var name = ['hline', 'vline', 'rect', 'oval'].includes(t.printElementType.type) ? `${i18n.__('绾垮')}` : `${i18n.__('杈规澶у皬')}`;
+        return this.target = $(`<div class="hiprint-option-item">\n        <div class="hiprint-option-item-label">\n        ${name}\n        </div>\n        <div class="hiprint-option-item-field">\n        <select class="auto-submit">\n        <option value="" >${i18n.__('榛樿')}</option>\n        <option value="0.75" >0.75pt</option>\n        <option value="1.5" >1.5pt</option>\n        <option value="2.25" >2.25pt</option>\n        <option value="3" >3pt</option>\n        <option value="3.75" >3.75pt</option>\n        <option value="4.5" >4.5pt</option>\n        <option value="5.25" >5.25pt</option>\n        <option value="6" >6pt</option>\n        <option value="6.75" >6.75pt</option>\n        </select>\n        </div>\n    </div>`), this.target;
+      }, t.prototype.css = function (t, e) {
+        if (t && t.length) {
+          if (e) return t.css("border-width", e + "pt"), "border-width:" + e + "pt";
+          t[0].style.borderWidth = "";
+        }
+
+        return null;
+      }, t.prototype.getValue = function () {
+        var t = this.target.find("select").val();
+        if (t) return t.toString();
+      }, t.prototype.setValue = function (t) {
+        t && (this.target.find('option[value="' + t + '"]').length || this.target.find("select").prepend('<option value="' + t + '" >' + t + "</option>"));
+        this.target.find("select").val(t);
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }(),
+    E = function () {
+      function t() {
+        this.name = "barcodeMode";
+      }
+
+      return t.prototype.createTarget = function () {
+        return this.target = $(`<div class="hiprint-option-item">\n        <div class="hiprint-option-item-label">\n        ${i18n.__('鏉″舰鐮佹牸寮�')}\n        </div>\n        <div class="hiprint-option-item-field">\n        <select class="auto-submit">\n        <option value="" >${i18n.__('榛樿')}</option>\n        <option value="CODE128A" >CODE128A</option>\n        <option value="CODE128B" >CODE128B</option>\n        <option value="CODE128C" >CODE128C</option>\n        <option value="CODE39" >CODE39</option>\n        <option value="EAN13" >EAN-13</option>\n        <option value="EAN8" >EAN-8</option>\n        <option value="EAN5" >EAN-5</option>\n        <option value="EAN2" >EAN-2</option>\n        <option value="UPC" >UPC锛圓锛�</option>\n        <option value="ITF" >ITF</option>\n        <option value="ITF14" >ITF-14</option>\n        <option value="MSI" >MSI</option>\n            <option value="MSI10" >MSI10</option>\n            <option value="MSI11" >MSI11</option>\n            <option value="MSI1010" >MSI1010</option>\n            <option value="MSI1110" >MSI1110</option>\n            <option value="Pharmacode" >Pharmacode</option>\n        </select>\n        </div>\n    </div>`), this.target;
+      }, t.prototype.getValue = function () {
+        var t = this.target.find("select").val();
+        return t || void 0;
+      }, t.prototype.setValue = function (t) {
+        this.target.find("select").val(t);
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }(),
+    barTextMode = function () {
+      function t() {
+        this.name = "barTextMode";
+      }
+      return t.prototype.createTarget = function() {
+        this.target = $(`<div class="hiprint-option-item"><div class="hiprint-option-item-label">${i18n.__('鏉$爜鏂囨湰妯″紡')}</div><div class="hiprint-option-item-field"><select class="auto-submit"><option value="">${i18n.__('榛樿')}</option><option value="text">鍗曠嫭鏂囨湰</option><option value="svg">svg鏂囨湰</option></select></div></div>`)
+        return this.target;
+      }, t.prototype.getValue = function() {
+        var t = this.target.find("select").val();
+        return t || void 0;
+      }, t.prototype.setValue = function(t) {
+        this.target.find("select").val(t)
+      }, t.prototype.destroy = function() {
+        this.target.remove()
+      }, t;
+    }(),
+    barWidth = function () {
+      function t() {
+        this.name = "barWidth";
+      }
+      return t.prototype.createTarget = function() {
+        this.target = $(`<div class="hiprint-option-item"><div class="hiprint-option-item-label">${i18n.__('鏉$爜瀹藉害')}</div><div class="hiprint-option-item-field"><select class="auto-submit"><option value="">${i18n.__('榛樿')}</option><option value="1">1</option><option value="2">2</option><option value="3">3</option><option value="4">4</option></select></div></div>`)
+        return this.target;
+      }, t.prototype.getValue = function() {
+        var t = this.target.find("select").val();
+        return t || void 0;
+      }, t.prototype.setValue = function(t) {
+        this.target.find("select").val(t)
+      }, t.prototype.destroy = function() {
+        this.target.remove()
+      }, t;
+    }(),
+    barAutoWidth = function() {
+      function t() {
+        this.name = "barAutoWidth";
+      }
+      return t.prototype.createTarget = function() {
+        this.target = $(`<div class="hiprint-option-item"><div class="hiprint-option-item-label">${i18n.__('鏉$爜鑷姩澧炲')}</div><div class="hiprint-option-item-field"><select class="auto-submit"><option value="">${i18n.__('榛樿')}</option><option value="true">${i18n.__('鑷姩')}</option><option value="false">${i18n.__('涓嶈嚜鍔�')}</option></select></div></div>`)
+        return this.target;
+      }, t.prototype.getValue = function() {
+        var t = this.target.find("select").val();
+        return t || void 0;
+      }, t.prototype.setValue = function(t) {
+        this.target.find("select").val(t)
+      }, t.prototype.destroy = function() {
+        this.target.remove()
+      }, t;
+    }(),
+    barcodeType = function() {
+      function t() {
+        this.name = "barcodeType"
+      }
+
+      return t.prototype.createTarget = function () {
+        var options = [{
+          label: `${i18n.__('榛樿')}(Code 128)`,
+          value: "",
+        },
+        {
+          label: `${i18n.__('鍟嗗搧鏉$爜')}`,
+          children: [
+            {
+              label: "EAN-13",
+              value: "ean13",
+            },
+            {
+              label: "EAN-8",
+              value: "ean8",
+            },
+            {
+              label: "UPC-A",
+              value: "upca",
+            },
+            {
+              label: "UPC-E",
+              value: "upce",
+            },
+            {
+              label: "ISBN",
+              value: "isbn",
+            },
+            {
+              label: "ISMN",
+              value: "ismn",
+            },
+            {
+              label: "ISSN",
+              value: "issn",
+            },
+          ],
+        },
+        {
+          label: `${i18n.__('鏉″舰鐮�')}`,
+          children: [
+            {
+              label: "Code 39",
+              value: "code39",
+            },
+            {
+              label: "Code 39 Extended",
+              value: "code39ext",
+            },
+            {
+              label: "Code 93",
+              value: "code93",
+            },
+            {
+              label: "Code 93 Extended",
+              value: "code93ext",
+            },
+            {
+              label: "Code 128",
+              value: "code128",
+            },
+            {
+              label: "Interleaved 2 of 5 (ITF)",
+              value: "interleaved2of5",
+            },
+          ],
+        },
+        {
+          label: `${i18n.__('鐗╂祦')}`,
+          children: [
+            {
+              label: "EAN-14",
+              value: "ean14",
+            },
+            {
+              label: "GS1-128",
+              value: "gs1-128",
+            },
+            {
+              label: "ITF-14",
+              value: "itf14",
+            },
+            {
+              label: "SSCC-18",
+              value: "sscc18",
+            },
+          ],
+        },
+        {
+          label: "GS1 DataBar",
+          children: [
+            {
+              label: "鎵╁睍寮� GS1 DataBar",
+              value: "databarexpanded",
+            },
+            {
+              label: "灞傛帓鎵╁睍寮� GS1 DataBar",
+              value: "databarexpandedstacked",
+            },
+            {
+              label: "闄愬畾寮� GS1 DataBar",
+              value: "databarlimited",
+            },
+            {
+              label: "鍏ㄥ悜寮� GS1 DataBar",
+              value: "databaromni",
+            },
+            {
+              label: "灞傛帓寮� GS1 DataBar",
+              value: "databarstacked",
+            },
+            {
+              label: "鍏ㄥ悜灞傛帓寮� GS1 DataBar",
+              value: "databarstackedomni",
+            },
+            {
+              label: "鎴煭寮� GS1 DataBar",
+              value: "databartruncated",
+            },
+            {
+              label: "GS1 鍖楃編浼樻儬鍒哥爜",
+              value: "gs1northamericancoupon",
+            },
+          ],
+        },
+        {
+          label: `${i18n.__('閭斂鍜屽揩閫掔紪鐮�')}`,
+          children: [
+            {
+              label: "AusPost 4 State Customer Code",
+              value: "auspost",
+            },
+            {
+              label: "Deutsche Post Identcode",
+              value: "identcode",
+            },
+            {
+              label: "Deutsche Post Leitcode",
+              value: "leitcode",
+            },
+            {
+              label: "Japan Post 4 State Customer Code",
+              value: "japanpost",
+            },
+            {
+              label: "Royal TNT Post",
+              value: "kix",
+            },
+            {
+              label: "Royal Mail 4 State Customer Code",
+              value: "royalmail",
+            },
+            {
+              label: "Royal Mail Mailmark",
+              value: "mailmark",
+            },
+            {
+              label: "MaxiCode",
+              value: "maxicode",
+            },
+            {
+              label: "USPS FIM symbols",
+              value: "symbol",
+            },
+            {
+              label: "USPS Intelligent Mail",
+              value: "onecode",
+            },
+            {
+              label: "USPS PLANET",
+              value: "planet",
+            },
+            {
+              label: "USPS POSTNET",
+              value: "postnet",
+            },
+          ],
+        },
+        {
+          label: `${i18n.__('鍖荤枟浜у搧缂栫爜')}`,
+          children: [
+            {
+              label: "Italian Pharmacode",
+              value: "code32",
+            },
+            {
+              label: "Pharmaceutical Binary Code",
+              value: "pharmacode",
+            },
+            {
+              label: "Pharmazentralnummer (PZN)",
+              value: "pzn",
+            },
+            {
+              label: "Two-track Pharmacode",
+              value: "pharmacode2",
+            },
+            {
+              label: "HIBC Aztec Code",
+              value: "hibcazteccode",
+            },
+            {
+              label: "HIBC Codablock F",
+              value: "hibccodablockf",
+            },
+            {
+              label: "HIBC Code 128",
+              value: "hibccode128",
+            },
+            {
+              label: "HIBC Code 39",
+              value: "hibccode39",
+            },
+          ],
+        },
+        {
+          label: `${i18n.__('涓嶅父鐢ㄧ紪鐮�')}`,
+          children: [
+            {
+              label: "Code 11",
+              value: "code11",
+            },
+            {
+              label: "Code 16K",
+              value: "code16k",
+            },
+            {
+              label: "Code 2 of 5",
+              value: "code2of5",
+            },
+            {
+              label: "Code 49",
+              value: "code49",
+            },
+            {
+              label: "Code One",
+              value: "codeone",
+            },
+            {
+              label: "Codabar",
+              value: "rationalizedCodabar",
+            },
+            {
+              label: "Codablock F",
+              value: "codablockf",
+            },
+            {
+              label: "BC412",
+              value: "bc412",
+            },
+            {
+              label: "COOP 2 of 5",
+              value: "coop2of5",
+            },
+            {
+              label: "Channel Code",
+              value: "channelcode",
+            },
+            {
+              label: "Datalogic 2 of 5",
+              value: "datalogic2of5",
+            },
+            {
+              label: "DotCode",
+              value: "dotcode",
+            },
+            {
+              label: "IATA 2 of 5",
+              value: "iata2of5",
+            },
+            {
+              label: "MSI Plessey",
+              value: "msi",
+            },
+            {
+              label: "Matrix 2 of 5",
+              value: "matrix2of5",
+            },
+            {
+              label: "Plessey UK",
+              value: "plessey",
+            },
+            {
+              label: "PosiCode",
+              value: "posicode",
+            },
+            {
+              label: "Telepen",
+              value: "telepen",
+            },
+            {
+              label: "Telepen Numeric",
+              value: "telepennumeric",
+            },
+          ],
+        },
+        {
+          label: "GS1 澶嶅悎缂栫爜",
+          children: [
+            {
+              label: "澶嶅悎 EAN-13",
+              value: "ean13composite",
+            },
+            {
+              label: "澶嶅悎 EAN-8",
+              value: "ean8composite",
+            },
+            {
+              label: "澶嶅悎 UPC-A",
+              value: "upcacomposite",
+            },
+            {
+              label: "澶嶅悎 UPC-E",
+              value: "upcecomposite",
+            },
+            {
+              label: "灞傛帓鎵╁睍寮忓鍚� GS1 DataBar",
+              value: "databarexpandedstackedcomposite",
+            },
+            {
+              label: "鎵╁睍寮忓鍚� GS1 DataBar",
+              value: "databarexpandedcomposite",
+            },
+            {
+              label: "闄愬畾寮忓鍚� GS1 DataBar",
+              value: "databarlimitedcomposite",
+            },
+            {
+              label: "鍏ㄥ悜寮忓鍚� GS1 DataBar",
+              value: "databaromnicomposite",
+            },
+            {
+              label: "灞傛帓寮忓鍚� GS1 DataBar",
+              value: "databarstackedcomposite",
+            },
+            {
+              label: "鍏ㄥ悜灞傛帓寮忓鍚� GS1 DataBar",
+              value: "databarstackedomnicomposite",
+            },
+            {
+              label: "鎴煭寮忓鍚� GS1 DataBar",
+              value: "databartruncatedcomposite",
+            },
+            {
+              label: "澶嶅悎 GS1-128",
+              value: "gs1-128composite",
+            },
+          ],
+        },
+        {
+          label: `${i18n.__('闄勫姞缁勪欢')}`,
+          children: [
+            {
+              label: "EAN-2 (2 浣嶉檮鍔犵爜)",
+              value: "ean2",
+            },
+            {
+              label: "EAN-5 (5 浣嶉檮鍔犵爜)",
+              value: "ean5",
+            },
+            {
+              label: "GS1 澶嶅悎 2D 缁勪欢",
+              value: "gs1-cc",
+            },
+          ],
+        },
+        {
+          label: `${i18n.__('瀹為獙缂栫爜')}`,
+          children: [
+            {
+              label: "Raw",
+              value: "raw",
+            },
+            {
+              label: "Custom 4 state symbology",
+              value: "daft",
+            },
+            {
+              label: "Flattermarken",
+              value: "flattermarken",
+            },
+          ],
+        }]
+        this.target = $(`<div class="hiprint-option-item hiprint-option-item-row"><div class="hiprint-option-item-label">${i18n.__('鏉$爜绫诲瀷')}</div><div class="hiprint-option-item-field"><select class="auto-submit"></select></div></div>`)
+        var select = this.target.find('select.auto-submit')
+        options.forEach(item => {
+          if (item.children) {
+            var optgroup = $(`<optgroup label="${item.label}"></optgroup`)
+            item.children.forEach(chil => {
+              optgroup.append($(`<option value="${chil.value}">${chil.label}</option>`))
+            })
+            select.append(optgroup)
+          } else {
+            select.append(`<option value="${item.value}">${item.label}</option>`)
+          }
+        })
+        return this.target
+      }, t.prototype.getValue = function () {
+        return this.target.find("select").val() || void 0;
+      }, t.prototype.setValue = function (t) {
+        this.target.find("select").val(t);
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }(),
+    qrcodeType = function() {
+      function t() {
+        this.name = "qrcodeType"
+      }
+
+      return t.prototype.createTarget = function () {
+        var options = [{
+          label: `${i18n.__('榛樿')}(qrcode)`,
+          value: "",
+        },
+        {
+          label: "QR Code",
+          value: "qrcode",
+        },
+        {
+          label: "Micro QR Code",
+          value: "microqrcode",
+        },
+        {
+          label: "Swiss QR Code",
+          value: "swissqrcode",
+        },
+        {
+          label: "Rectangular Micro QR Code",
+          value: "rectangularmicroqrcode",
+        },
+        {
+          label: "Aztec Code",
+          value: "azteccode",
+        },
+        {
+          label: "Aztec Runes",
+          value: "aztecrune",
+        },
+        {
+          label: "Compact Aztec Code",
+          value: "azteccodecompact",
+        },
+        {
+          label: "Data Matrix",
+          value: "datamatrix",
+        },
+        {
+          label: "Data Matrix Rectangular",
+          value: "datamatrixrectangular",
+        },
+        {
+          label: "姹変俊鐮�",
+          value: "hanxin",
+        },
+        {
+          label: "GS1 Data Matrix",
+          value: "gs1datamatrix",
+        },
+        {
+          label: "GS1 Data Matrix Rectangular",
+          value: "gs1datamatrixrectangular",
+        },
+        {
+          label: "GS1 QR Code",
+          value: "gs1qrcode",
+        },
+        {
+          label: "HIBC Data Matrix",
+          value: "hibcdatamatrix",
+        },
+        {
+          label: "HIBC Data Matrix Rectangular",
+          value: "hibcdatamatrixrectangular",
+        },
+        {
+          label: "HIBC MicroPDF417",
+          value: "hibcmicropdf417",
+        },
+        {
+          label: "HIBC PDF417",
+          value: "hibcpdf417",
+        },
+        {
+          label: "HIBC QR Code",
+          value: "hibcqrcode",
+        }]
+        this.target = $(`<div class="hiprint-option-item hiprint-option-item-row"><div class="hiprint-option-item-label">${i18n.__('浜岀淮鐮佺被鍨�')}</div><div class="hiprint-option-item-field"><select class="auto-submit"></select></div></div>`)
+        var select = this.target.find('select.auto-submit')
+        options.forEach(item => {
+          select.append(`<option value="${item.value}">${item.label}</option>`)
+        })
+        return this.target
+      }, t.prototype.getValue = function () {
+        return this.target.find("select").val() || void 0;
+      }, t.prototype.setValue = function (t) {
+        this.target.find("select").val(t);
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }(),
+    qrCodeLevel = function () {
+      function t() {
+        this.name = "qrCodeLevel";
+      }
+
+      return t.prototype.createTarget = function () {
+        return this.target = $(`<div class="hiprint-option-item">\n        <div class="hiprint-option-item-label">\n        ${i18n.__('浜岀淮鐮佸閿欑巼')}\n        </div>\n        <div class="hiprint-option-item-field">\n        <select class="auto-submit">\n        <option value="" >${i18n.__('榛樿')}</option>\n        <option value="1" >7% L</option>\n        <option value="0" >15% M</option>\n        <option value="3" >25% Q</option>\n        <option value="2" >30% H</option>\n        </select>\n        </div>\n    </div>`), this.target;
+      }, t.prototype.getValue = function () {
+        var t = this.target.find("select").val();
+        return parseInt(t || 0);
+      }, t.prototype.setValue = function (t) {
+        this.target.find("select").val(t);
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }(),
+    T = function () {
+      function t() {
+        this.name = "color";
+      }
+
+      return t.prototype.css = function (t, e) {
+        if (t && t.length) {
+          if (e) return t.css("color", e), "color:" + e;
+          t[0].style.color = "";
+        }
+
+        return null;
+      }, t.prototype.createTarget = function () {
+        return this.target = $(`<div class="hiprint-option-item">\n        <div class="hiprint-option-item-label">\n        ${i18n.__('瀛椾綋棰滆壊')}\n        </div>\n        <div class="hiprint-option-item-field">\n        <input type="text" class="auto-submit"/>\n        </div>\n    </div>`), this.target;
+      }, t.prototype.getValue = function () {
+        var t = this.target.find("input").val();
+        if (t) return t.toString();
+      }, t.prototype.setValue = function (t) {
+        this.target.find("input").minicolors({
+          defaultValue: t || "",
+          theme: "bootstrap"
+        }), this.target.find("input").val(t);
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }(),
+    P = function () {
+      function t() {
+        this.name = "textDecoration";
+      }
+
+      return t.prototype.createTarget = function () {
+        return this.target = $(`<div class="hiprint-option-item">\n        <div class="hiprint-option-item-label">\n        ${i18n.__('鏂囨湰淇グ')}\n        </div>\n        <div class="hiprint-option-item-field">\n        <select class="auto-submit">\n        <option value="" >${i18n.__('榛樿')}</option>\n            <option value="underline" >${i18n.__('涓嬪垝绾�')}</option>\n            <option value="overline" >${i18n.__('涓婂垝绾�')}</option>\n            <option value="line-through" >${i18n.__('绌挎绾�')}</option>\n           \n        </select>\n        </div>\n    </div>`), this.target;
+      }, t.prototype.css = function (t, e) {
+        if (t && t.length) {
+          if (e) return t.css("text-decoration", e), "text-decoration:" + e;
+          t[0].style.textDecoration = "";
+        }
+
+        return null;
+      }, t.prototype.getValue = function () {
+        var t = this.target.find("select").val();
+        if (t) return t.toString();
+      }, t.prototype.setValue = function (t) {
+        t && (this.target.find('option[value="' + t + '"]').length || this.target.find("select").prepend('<option value="' + t + '" >' + t + "</option>"));
+        this.target.find("select").val(t);
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }(),
+    _ = function () {
+      function t() {
+        this.name = "field";
+      }
+
+      return t.prototype.createTarget = function (t) {
+        var e = void 0;
+
+        if (t && (e = t.getFields()), e) {
+          this.isSelect = !0;
+          var n = `<div class="hiprint-option-item hiprint-option-item-row">\n            <div class="hiprint-option-item-label">\n            ${i18n.__('瀛楁鍚�')}\n            </div>\n            <div class="hiprint-option-item-field">\n            <select class="auto-submit">\n                <option value="" >${i18n.__('璇烽�夋嫨瀛楁')}</option>`;
+          e.forEach(function (t, e) {
+            n += ' <option value="' + (t.field || "") + '" >' + (t.text || "") + "</option>";
+          }), n += " </select>\n            </div>\n        </div>", this.target = $(n);
+        } else {
+          this.isSelect = !1;
+          this.target = $(`<div class="hiprint-option-item hiprint-option-item-row">\n            <div class="hiprint-option-item-label">\n            ${i18n.__('瀛楁鍚�')}\n            </div>\n            <div class="hiprint-option-item-field">\n            <input type="text" placeholder="${i18n.__('璇疯緭鍏ュ瓧娈靛悕')}" class="auto-submit">\n            </div>\n        </div>`);
+        }
+
+        return this.target;
+      }, t.prototype.getValue = function () {
+        return (this.isSelect ? this.target.find("select").val() : this.target.find("input").val()) || void 0;
+      }, t.prototype.setValue = function (t) {
+        this.isSelect ? t && (this.target.find('option[value="' + t + '"]').length || this.target.find("select").prepend('<option value="' + t + '" >' + t + "</option>"), this.target.find("select").val(t)) : this.target.find("input").val(t);
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }(),
+    w = function () {
+      function t() {
+        this.name = "title";
+      }
+
+      return t.prototype.createTarget = function () {
+        return this.target = $(`<div class="hiprint-option-item hiprint-option-item-row">\n        <div class="hiprint-option-item-label">\n        ${i18n.__('鏍囬')}\n        </div>\n        <div class="hiprint-option-item-field">\n        <textarea style="height:50px;" placeholder="${i18n.__('璇疯緭鍏ユ爣棰�')}" class="auto-submit"></textarea>\n        </div>\n    </div>`), this.target;
+      }, t.prototype.getValue = function () {
+        var t = this.target.find("textarea").val();
+        if (t) return t;
+      }, t.prototype.setValue = function (t) {
+        this.target.find("textarea").val(t);
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }(),
+    x = function () {
+      function t() {
+        this.name = "testData";
+      }
+
+      return t.prototype.createTarget = function () {
+        return this.target = $(`<div class="hiprint-option-item hiprint-option-item-row">\n        <div class="hiprint-option-item-label">\n        ${i18n.__('娴嬭瘯鏁版嵁')}\n        </div>\n        <div class="hiprint-option-item-field">\n        <input type="text" placeholder="${i18n.__('浠呭瓧娈靛悕绉板瓨鍦ㄦ椂鏈夋晥')}" class="auto-submit" >\n        </div>\n    </div>`), this.target;
+      }, t.prototype.getValue = function () {
+        var t = this.target.find("input").val();
+        if (t) return t.toString();
+      }, t.prototype.setValue = function (t) {
+        this.target.find("input").val(t);
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }(),
+    coordinate = function () {
+      function t() {
+        this.name = "coordinate";
+      }
+
+      return t.prototype.createTarget = function (t, o) {
+        var n = this;
+        n.target = $(`<div class="hiprint-option-item hiprint-option-item-row">
+          <div class="hiprint-option-item-label">\n        ${i18n.__('浣嶇疆鍧愭爣')}\n        </div>
+          <div class="hiprint-option-item-field" style="display: flex;align-items: baseline;">\n
+          <input type="number" style="width:48%" placeholder="${i18n.__('X浣嶇疆(宸�)')}" class="auto-submit" />\n
+          <input type="number" style="width:48%" placeholder="${i18n.__('Y浣嶇疆(涓�)')}" class="auto-submit" />\n
+          </div>\n
+          </div>`);
+        n.syncLock = o.coordinateSync || false;
+        n.createSyncLock(n.syncLock);
+        return n.target;
+      }, t.prototype.createSyncLock = function (t) {
+        var n = this;
+        n.lockTarget = n.syncLock ? $(`<label style="margin: 0 4px;text-align:center;width: 8%" title="${i18n.__('鍚屾')}">馃敆</label>`) : $(`<label style="margin: 0 4px;text-align:center;width: 8%" title="${i18n.__('涓嶅悓姝�')}">馃敁</label>`);
+        n.lockTarget.click(function () {
+          if (n.syncLock) {
+            n.lockTarget.text("馃敁").attr("title", `${i18n.__('涓嶅悓姝�')}`);
+          } else {
+            n.lockTarget.text("馃敆").attr("title", `${i18n.__('鍚屾')}`);
+          }
+          n.syncLock = !n.syncLock;
+        })
+        n.target.find("input:first").after(n.lockTarget);
+        // 鍚屾缂栬緫...
+        n.target.find("input:first").change(function () {
+          if (n.syncLock) {
+            n.target.find("input:last").val($(this).val())
+          }
+        });
+        n.target.find("input:last").change(function () {
+          if (n.syncLock) {
+            n.target.find("input:first").val($(this).val())
+          }
+        });
+        return n.lockTarget
+      }, t.prototype.css = function (t) {
+        if (t && t.length && this.target) {
+          // 浠呭綋鍓嶅厓绱犺閫変腑鎵嶆洿鏂板潗鏍囦綅缃�, 浠ラ伩鍏嶅啿绐�
+          if (('block' == t.find('.resize-panel').css('display') || t[0].className.includes('table')) && this.el == t) {
+            var v = this.getValue();
+            return t.css("left", v.left + "pt").css("top", v.top + "pt");
+          }
+        }
+        return null;
+      }, t.prototype.getValue = function () {
+        var v = {
+          coordinateSync: this.syncLock,
+          left: 0,
+          top: 0,
+        }
+        v.left = parseFloat(this.target.find("input:first").val() || 0)
+        v.top = parseFloat(this.target.find("input:last").val() || 0)
+        return v;
+      }, t.prototype.setValue = function (t, el) {
+        this.el = el.designTarget || el;
+        this.target.find("input:first").val(t.left);
+        this.target.find("input:last").val(t.top);
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }(),
+    widthHeight = function () {
+      function t() {
+        this.name = "widthHeight";
+      }
+
+      return t.prototype.createTarget = function (t, o) {
+        var n = this;
+        n.target = $(`<div class="hiprint-option-item hiprint-option-item-row">
+          <div class="hiprint-option-item-label">\n        ${i18n.__('瀹介珮澶у皬')}\n        </div>
+          <div class="hiprint-option-item-field" style="display: flex;align-items: baseline;">\n
+          <input type="number" style="width:48%" placeholder="${i18n.__('瀹�')}" class="auto-submit" />\n
+          <input type="number" style="width:48%" placeholder="${i18n.__('楂�')}" class="auto-submit" />\n
+          </div>\n
+          </div>`);
+        n.syncLock = o.widthHeightSync || false;
+        n.createSyncLock(n.syncLock);
+        return n.target;
+      }, t.prototype.createSyncLock = function (t) {
+        var n = this;
+        n.lockTarget = n.syncLock ? $(`<label style="margin: 0 4px;text-align:center;width: 8%" title="${i18n.__('鍚屾')}">馃敆</label>`) : $(`<label style="margin: 0 4px;text-align:center;width: 8%" title="${i18n.__('涓嶅悓姝�')}">馃敁</label>`);
+        n.lockTarget.click(function () {
+          if (n.syncLock) {
+            n.lockTarget.text("馃敁").attr("title", `${i18n.__('涓嶅悓姝�')}`);
+          } else {
+            n.lockTarget.text("馃敆").attr("title", `${i18n.__('鍚屾')}`);
+          }
+          n.syncLock = !n.syncLock;
+        })
+        n.target.find("input:first").after(n.lockTarget);
+        // 鍚屾缂栬緫...
+        n.target.find("input:first").change(function () {
+          if (n.syncLock) {
+            n.target.find("input:last").val($(this).val())
+          }
+        });
+        n.target.find("input:last").change(function () {
+          if (n.syncLock) {
+            n.target.find("input:first").val($(this).val())
+          }
+        });
+        return n.lockTarget
+      }, t.prototype.css = function (t) {
+        if (t && t.length && this.target) {
+          // 浠呭綋鍓嶅厓绱犺閫変腑鎵嶆洿鏂板楂樺ぇ灏�, 浠ラ伩鍏嶅啿绐�
+          if (('block' == t.find('.resize-panel').css('display') || t[0].className.includes('table')) && this.el == t) {
+            var v = this.getValue();
+            return t.css("width", v.width + "pt").css("height", v.height + "pt");
+          }
+        }
+        return null;
+      }, t.prototype.getValue = function () {
+        var v = {
+          widthHeightSync: this.syncLock,
+          width: 0,
+          height: 0,
+        }
+        v.width = parseFloat(this.target.find("input:first").val() || 0)
+        v.height = parseFloat(this.target.find("input:last").val() || 0)
+        return v;
+      }, t.prototype.setValue = function (t, el) {
+        this.el = el.designTarget || el;
+        this.target.find("input:first").val(t.width);
+        this.target.find("input:last").val(t.height);
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }(),
+    C = function () {
+      function t() {
+        this.name = "src";
+      }
+
+      return t.prototype.createTarget = function (t) {
+        this.el = t;
+        var e = void 0, i = this;
+        this.target = $(`<div class="hiprint-option-item hiprint-option-item-row">\n        <div class="hiprint-option-item-label">\n        ${i18n.__('鍥剧墖鍦板潃')}\n        </div>\n        <div class="hiprint-option-item-field" style="display: flex;align-items: baseline;">\n        <input type="text" placeholder="${i18n.__('璇疯緭鍏ュ浘鐗囧湴鍧�')}" class="auto-submit" style="width:70%">\n    <button class="hiprint-option-item-settingBtn" style="padding:0 10px;margin:0 0 0 5px" type="button">${i18n.__('閫夋嫨')}</button>        </div>\n    </div>`);
+        if (t && (e = t.getOnImageChooseClick()), e) {
+          this.target.find('button').click(function () {
+            e && e(i);
+          })
+        }
+        return this.target;
+      }, t.prototype.getValue = function () {
+        var t = this.target.find("input").val();
+        if (t) return t.toString();
+      }, t.prototype.setValue = function (t) {
+        this.target.find("input").val(t);
+      }, t.prototype.refresh = function (t, opt, cb) {
+        var that = this;
+        this.setValue(t), this.target.find("input").change();
+        if (this.el && opt) {
+          var img = new Image();
+          img.src = t;
+          if (img.complete) {
+            that.updateEl(img.width, img.height, opt, cb)
+          } else {
+            img.onload = function () {
+              that.updateEl(img.width, img.height, opt, cb)
+            }
+          }
+        }
+      }, t.prototype.updateEl = function (width, height, opt, cb) {
+        if (opt) {
+          var ratio, w, h;
+          if (opt && opt.auto) {
+            if (width >= height) {
+              opt.width = true;
+            } else {
+              opt.height = true;
+            }
+          }
+          if (opt.width) {
+            ratio = height / width;
+            w = this.el.options.width;
+            h = Math.floor(w * ratio * 10) / 10;
+            this.el.options.height = h;
+            this.el.designTarget.css('height', h + "pt");
+          } else if (opt.height) {
+            ratio = width / height;
+            h = this.el.options.height;
+            w = Math.floor(h * ratio * 10) / 10;
+            this.el.options.width = w;
+            this.el.designTarget.css('width', w + "pt");
+          } else if (opt.real) {
+            w = hinnn.px.toPt(width);
+            h = hinnn.px.toPt(height);
+            this.el.options.width = w;
+            this.el.options.height = h;
+            this.el.designTarget.css('width', w + "pt");
+            this.el.designTarget.css('height', h + "pt");
+          }
+          this.el.designTarget.children('.resize-panel').trigger($.Event('click'));
+        }
+        cb && cb(this.el, width, height);
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }(),
+    imageFit = function () {
+      function t() {
+        this.name = "fit";
+      }
+
+      return t.prototype.css = function (t, e) {
+        if (t && t.length) {
+          if (e) return t.find("img").css("object-fit", e), "object-fit:" + e;
+          t.find("img")[0].style['object-fit'] = "";
+        }
+        return null;
+      }, t.prototype.createTarget = function () {
+        this.target = $(`<div class="hiprint-option-item hiprint-option-item-row">\n        <div class="hiprint-option-item-label">\n        ${i18n.__('鍥剧墖缂╂斁')}\n        </div>\n        <div class="hiprint-option-item-field">\n        <select class="auto-submit">\n        <option value="" >${i18n.__('榛樿')}</option>\n        <option value="contain" >${i18n.__('绛夋瘮')}</option>\n        <option value="cover" >${i18n.__('鍓')}</option>\n        <option value="fill" >${i18n.__('濉厖')}</option>\n        <option value="none" >${i18n.__('鍘熷灏哄')}</option>\n                </select>\n        </div>\n    </div>`), this.target;
+        return this.target;
+      }, t.prototype.getValue = function () {
+        return this.target.find("select").val();
+      }, t.prototype.setValue = function (t) {
+        this.target.find("select").val(t);
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }(),
+    O = function () {
+      function t() {
+        this.name = "borderColor";
+      }
+
+      return t.prototype.css = function (t, e) {
+        if (t && t.length) {
+          if (e) return t.css("border-color", e), "border-color:" + e;
+          t[0].style.borderColor = "";
+        }
+
+        return null;
+      }, t.prototype.createTarget = function (t) {
+        var name = ['hline', 'vline', 'rect', 'oval'].includes(t.printElementType.type) ? `${i18n.__('棰滆壊')}` : `${i18n.__('杈规棰滆壊')}`;
+        return this.target = $(`<div class="hiprint-option-item">\n        <div class="hiprint-option-item-label">\n        ${name}\n        </div>\n        <div class="hiprint-option-item-field">\n        <input type="text" class="auto-submit" />\n        </div>\n    </div>`), this.target;
+      }, t.prototype.getValue = function () {
+        var t = this.target.find("input").val();
+        if (t) return t.toString();
+      }, t.prototype.setValue = function (t) {
+        this.target.find("input").minicolors({
+          defaultValue: t || "",
+          theme: "bootstrap"
+        }), this.target.find("input").val(t);
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }(),
+    watermarkOptions = function () {
+      function t() {
+        this.name = "watermarkOptions";
+      }
+      return t.prototype.createTarget = function () {
+        this.target = $(`<div class="hiprint-option-item hiprint-option-item-row"><div class="hiprint-option-item-label">${i18n.__('姘村嵃鍔熻兘')}</div></div>`);
+        this.content = $(`<div class="hiprint-option-item-field" style="display: flex;align-items: baseline;"><div style="width:25%">${i18n.__('姘村嵃鍐呭')}:</div><input style="width:75%" type="text" placeholder="${i18n.__('姘村嵃鍐呭')}" class="auto-submit"></div>`);
+        this.fillStyle = $(`<div class="hiprint-option-item-field" style="display: flex;align-items: center;margin-top: 4px"><div style="width:25%">${i18n.__('瀛椾綋棰滆壊')}:</div><input style="width:110%" data-format="rgb" data-opacity="0.3" type="text" placeholder="${i18n.__('瀛椾綋棰滆壊')}" class="auto-submit"></div>`);
+        this.fontSize = $(`<div class="hiprint-option-item-field" style="display: flex;align-items: center;"><div style="width:25%">${i18n.__('瀛椾綋澶у皬')}:</div><input style="width:75%" type="range" min="10" max="80" placeholder="${i18n.__('瀛椾綋澶у皬')}" class="auto-submit"></div>`);
+        this.rotate = $(`<div class="hiprint-option-item-field" style="display: flex;align-items: center;"><div style="width:25%">${i18n.__('鏃嬭浆瑙掑害')}:</div><input style="width:75%" type="range" min="0" max="180" placeholder="${i18n.__('鏃嬭浆瑙掑害')}" class="auto-submit"></div>`);
+        this.width = $(`<div class="hiprint-option-item-field" style="display: flex;align-items: center;"><div style="width:25%">${i18n.__('姘村钩瀵嗗害')}:</div><input style="width:75%" type="range" min="100" max="800" placeholder="${i18n.__('姘村钩瀵嗗害')}" class="auto-submit"></div>`);
+        this.height = $(`<div class="hiprint-option-item-field" style="display: flex;align-items: center;"><div style="width:25%">${i18n.__('鍨傜洿瀵嗗害')}:</div><input style="width:75%" type="range" min="100" max="800" placeholder="${i18n.__('鍨傜洿瀵嗗害')}" class="auto-submit"></div>`);
+        this.timestamp = $(`<div class="hiprint-option-item-field" style="display: flex;align-items: center;"><div style="width:25%">${i18n.__('姘村嵃鏃堕棿')}:</div><input style="width:18px;height:18px;margin:0 0 4px 0;" type="checkbox" placeholder="${i18n.__('姘村嵃鏃堕棿')}" class="auto-submit"></div>`);
+        let formatlist = [
+          "YYYY-MM-DD HH:mm:ss",
+          "YYYY-MM-DD HH:mm",
+          "YYYY-MM-DD HH",
+          "YYYY-MM-DD",
+          "YYYY-MMMM",
+          "YYYY-MM",
+          "YYYY",
+        ];
+        let timeFormatList = `\n            <option value="" >${i18n.__('榛樿')}(YYYY-MM-DD HH:mm)</option>`;
+        formatlist.forEach(function (e) {
+          timeFormatList += '\n            <option value="' + e + '">' + e + '</option>';
+        })
+        this.format = $(`<div class="hiprint-option-item-field" style="display: flex;align-items: baseline;"><div style="width:25%">${i18n.__('鏃堕棿鏍煎紡')}:</div><select style="width:75%" class="auto-submit"></select></div>`);
+        this.format.find(".auto-submit").append($(timeFormatList));
+        this.target.append(this.content);
+        this.target.append(this.fillStyle);
+        this.target.append(this.fontSize);
+        this.target.append(this.rotate);
+        this.target.append(this.width);
+        this.target.append(this.height);
+        this.target.append(this.timestamp);
+        this.target.append(this.format);
+        return this.target;
+      }, t.prototype.getValue = function () {
+        let opt = {
+          content: this.content.find('input').val(),
+          fillStyle: this.fillStyle.find('input').val() || "rgba(184, 184, 184, 0.3)",
+          fontSize: parseInt(this.fontSize.find('input').val() || "14") + "px",
+          rotate: parseInt(this.rotate.find('input').val() || "25"),
+          width: parseInt(this.width.find('input').val() || "200"),
+          height: parseInt(this.height.find('input').val() || "200"),
+          timestamp: this.timestamp.find('input').is(':checked'),
+          format: this.format.find('select').val() == "" ? "YYYY-MM-DD HH:mm" : this.format.find('select').val()
+        }
+        let options = Object.assign({}, this.options, opt);
+        return options;
+      }, t.prototype.setValue = function (t) {
+        this.options = t;
+        this.content.find("input").val(t.content || "");
+        this.fillStyle.find("input").val(t.fillStyle || "rgba(184, 184, 184, 0.3)");
+        this.fillStyle.find("input").minicolors({
+          format: "rgb",
+          opacity: true,
+          theme: "bootstrap"
+        });
+        const fontSize = parseInt(t.fontSize || "14");
+        this.fontSize.find("input").val(fontSize);
+        this.rotate.find("input").val(t.rotate || 25);
+        this.width.find("input").val(t.width || 200);
+        this.height.find("input").val(t.height || 200);
+        this.timestamp.find("input").attr("checked", t.timestamp == void 0 ? false : t.timestamp);
+        this.format.find("select").val(t.format || "YYYY-MM-DD HH:mm");
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }(),
+    H = function () {
+      function t() {
+        this.name = "paperNumberFormat";
+      }
+
+      return t.prototype.createTarget = function () {
+        return this.target = $(`<div class="hiprint-option-item hiprint-option-item-row">\n        <div class="hiprint-option-item-label">\n        ${i18n.__('椤电爜鏍煎紡')}\n        </div>\n        <div class="hiprint-option-item-field">\n        <input type="text" placeholder="\${paperNo}-\${paperCount}" class="auto-submit">\n        </div>\n    </div>`), this.target;
+      }, t.prototype.getValue = function () {
+        var t = this.target.find("input").val();
+        if (t) return t.toString();
+      }, t.prototype.setValue = function (t) {
+        this.target.find("input").val(t);
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }(),
+    D = function () {
+      function t() {
+        this.name = "paperNumberDisabled";
+      }
+
+      return t.prototype.createTarget = function () {
+        return this.target = $(`<div class="hiprint-option-item">\n        <div class="hiprint-option-item-label">\n        ${i18n.__('鏄剧ず椤电爜')}\n        </div>\n        <div class="hiprint-option-item-field">\n        <select class="auto-submit">\n        <option value="" >${i18n.__('鏄剧ず')}</option>\n        <option value="true" >${i18n.__('闅愯棌')}</option>\n        </select>\n        </div>\n    </div>`), this.target;
+      }, t.prototype.getValue = function () {
+        if ("true" == this.target.find("select").val()) return !0;
+      }, t.prototype.setValue = function (t) {
+        this.target.find("select").val((null == t ? "" : t).toString());
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }(),
+    paperNumberContinue = function () {
+      function t() {
+        this.name = "paperNumberContinue";
+      }
+
+      return t.prototype.createTarget = function () {
+        return this.target = $(`<div class="hiprint-option-item">\n        <div class="hiprint-option-item-label">\n        ${i18n.__('椤电爜缁帓')}\n        </div>\n        <div class="hiprint-option-item-field">\n        <select class="auto-submit">\n        <option value="true" >${i18n.__('缁帓')}</option>\n        <option value="reset" >${i18n.__('閲嶆帓')}</option>\n        </select>\n        </div>\n    </div>`), this.target;
+      }, t.prototype.getValue = function () {
+        return "true" == this.target.find("select").val();
+      }, t.prototype.setValue = function (t) {
+        this.target.find("select").val((t == void 0 || t ? "true" : "reset").toString());
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }(),
+    I = function () {
+      function t() {
+        this.name = "longTextIndent";
+      }
+
+      return t.prototype.css = function (t, e) {
+        return null;
+      }, t.prototype.createTarget = function () {
+        return this.target = $(`<div class="hiprint-option-item">\n        <div class="hiprint-option-item-label">\n        ${i18n.__('姣忚缂╄繘')}\n        </div>\n        <div class="hiprint-option-item-field">\n        <select class="auto-submit">\n        <option value="" >${i18n.__('榛樿')}</option>\n        <option value="6" >6pt</option>\n        <option value="6.75" >6.75pt</option>\n        <option value="7.5" >7.5pt</option>\n        <option value="8.25" >8.25pt</option>\n        <option value="9" >9pt</option>\n        <option value="9.75" >9.75pt</option>\n        <option value="10.5" >10.5pt</option>\n        <option value="11.25" >11.25pt</option>\n        <option value="12" >12pt</option>\n        <option value="12.75" >12.75pt</option>\n        <option value="13.5" >13pt</option>\n        <option value="14.25" >14.25pt</option>\n        <option value="15" >15pt</option>\n        <option value="15.75" >15.75pt</option>\n        <option value="16.5" >16.5pt</option>\n        <option value="17.25" >17.25pt</option>\n        <option value="18" >18pt</option>\n        <option value="18.75" >18.75pt</option>\n        <option value="19.5" >19.5pt</option>\n        <option value="20.25" >20.25pt</option>\n        <option value="21" >21pt</option>\n        <option value="21.75" >21.75pt</option>\n        <option value="22.5" >22.5pt</option>\n        <option value="23.25" >23.25pt</option>\n        <option value="24" >24pt</option>\n        <option value="24.75" >24.75pt</option>\n        <option value="25.5" >25.5pt</option>\n        <option value="26.25" >26.25pt</option>\n        <option value="27" >27pt</option>\n        <option value="27.75" >27.75pt</option>\n        <option value="28.5" >28.5pt</option>\n        <option value="29.25" >29.25pt</option>\n        <option value="30" >30pt</option>\n        <option value="30.75" >30.75pt</option>\n        <option value="31.5" >31.5pt</option>\n        <option value="32.25" >32.25pt</option>\n        <option value="33" >33pt</option>\n        <option value="33.75" >33.75pt</option>\n        <option value="34.5" >34.5pt</option>\n        <option value="35.25" >35.25pt</option>\n        <option value="36" >36pt</option>\n        </select>\n        </div>\n    </div>`), this.target;
+      }, t.prototype.getValue = function () {
+        var t = this.target.find("select").val();
+        if (t) return parseFloat(t.toString());
+      }, t.prototype.setValue = function (t) {
+        t && (this.target.find('option[value="' + t + '"]').length || this.target.find("select").prepend('<option value="' + t + '" >' + t + "</option>"));
+        this.target.find("select").val(t);
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }(),
+    R = function () {
+      function t() {
+        this.name = "showInPage";
+      }
+
+      return t.prototype.css = function (t, e) {
+        if (t && t.length) {
+          if (e && 'none' == e) return t.addClass('alwaysHide');
+          t.removeClass('alwaysHide');
+        }
+        return null;
+      }, t.prototype.createTarget = function () {
+        return this.target = $(`<div class="hiprint-option-item">\n        <div class="hiprint-option-item-label">\n        ${i18n.__('鏄剧ず瑙勫垯')}\n        </div>\n        <div class="hiprint-option-item-field">\n        <select class="auto-submit">\n        <option value="" >${i18n.__('榛樿')}</option>\n            <option value="none" >${i18n.__('濮嬬粓闅愯棌')}</option>\n            <option value="first" >${i18n.__('棣栭〉')}</option>\n            <option value="odd" >${i18n.__('濂囨暟椤�')}</option>\n            <option value="even" >${i18n.__('鍋舵暟椤�')}</option>\n            <option value="last" >${i18n.__('灏鹃〉')}</option>\n        </select>\n        </div>\n    </div>`), this.target;
+      }, t.prototype.getValue = function () {
+        var t = this.target.find("select").val();
+        if (t) return t.toString();
+      }, t.prototype.setValue = function (t) {
+        this.target.find("select").val(t);
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }(),
+    pageBreak = function () {
+      function t() {
+        this.name = "pageBreak";
+      }
+
+      return t.prototype.css = function (t, e) {
+        if (t && t.length) {
+          if (e && 'none' == e) return t.addClass('alwaysHide');
+          t.removeClass('alwaysHide');
+        }
+        return null;
+      }, t.prototype.createTarget = function () {
+        return this.target = $(`<div class="hiprint-option-item">\n        <div class="hiprint-option-item-label">\n        ${i18n.__('寮哄埗鍒嗛〉')}\n        </div>\n        <div class="hiprint-option-item-field">\n        <select class="auto-submit">\n        <option value="" >${i18n.__('榛樿')}</option>\n            <option value="true" >${i18n.__('鏄�')}</option>\n        </select>\n        </div>\n    </div>`), this.target;
+      }, t.prototype.getValue = function () {
+        if ("true" == this.target.find("select").val()) return !0;
+      }, t.prototype.setValue = function (t) {
+        this.target.find("select").val((null == t ? "" : t).toString());
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }(),
+    M = function () {
+      function t() {
+        this.name = "panelPaperRule";
+      }
+
+      return t.prototype.createTarget = function () {
+        return this.target = $(`<div class="hiprint-option-item">\n        <div class="hiprint-option-item-label">\n        ${i18n.__('鎵撳嵃瑙勫垯')}\n        </div>\n        <div class="hiprint-option-item-field">\n        <select class="auto-submit">\n        <option value="" >${i18n.__('榛樿')}</option>\n            <option value="odd" >${i18n.__('淇濇寔濂囨暟')}</option>\n            <option value="even" >${i18n.__('淇濇寔鍋舵暟')}</option>\n        </select>\n        </div>\n    </div>`), this.target;
+      }, t.prototype.getValue = function () {
+        var t = this.target.find("select").val();
+        if (t) return t.toString();
+      }, t.prototype.setValue = function (t) {
+        this.target.find("select").val(t);
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }(),
+    M2 = function () {
+      function t() {
+        this.name = "panelPageRule";
+      }
+
+      return t.prototype.createTarget = function () {
+        return this.target = $(`<div class="hiprint-option-item">\n        <div class="hiprint-option-item-label">\n        ${i18n.__('鍒嗛〉瑙勫垯')}\n        </div>\n        <div class="hiprint-option-item-field">\n        <select class="auto-submit">\n        <option value="" >${i18n.__('榛樿')}</option>\n            <option value="none" >${i18n.__('涓嶅垎椤�')}</option>\n        </select>\n        </div>\n    </div>`), this.target;
+      }, t.prototype.getValue = function () {
+        var t = this.target.find("select").val();
+        if (t) return t.toString();
+      }, t.prototype.setValue = function (t) {
+        this.target.find("select").val(t);
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }(),
+    S = function () {
+      function t() {
+        this.name = "leftSpaceRemoved";
+      }
+
+      return t.prototype.createTarget = function () {
+        return this.target = $(`<div class="hiprint-option-item">\n        <div class="hiprint-option-item-label">\n        ${i18n.__('绉婚櫎娈佃惤宸︿晶绌虹櫧')}\n        </div>\n        <div class="hiprint-option-item-field">\n        <select class="auto-submit">\n        <option value="" >${i18n.__('榛樿')}</option>\n            <option value="true" >${i18n.__('绉婚櫎')}</option>\n            <option value="false" >${i18n.__('涓嶇Щ闄�')}</option>\n        </select>\n        </div>\n    </div>`), this.target;
+      }, t.prototype.getValue = function () {
+        if ("false" == this.target.find("select").val()) return !1;
+      }, t.prototype.setValue = function (t) {
+        this.target.find("select").val((null == t ? "" : t).toString());
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }(),
+    B = function () {
+      function t() {
+        this.name = "firstPaperFooter";
+      }
+
+      return t.prototype.createTarget = function () {
+        return this.target = $(`<div class="hiprint-option-item hiprint-option-item-row">\n        <div class="hiprint-option-item-label">\n        ${i18n.__('棣栭〉椤靛熬')}\n        </div>\n        <div class="hiprint-option-item-field">\n        <input type="text" placeholder="${i18n.__('棣栭〉椤靛熬')}" class="auto-submit">\n        </div>\n    </div>`), this.target;
+      }, t.prototype.getValue = function () {
+        var t = this.target.find("input").val();
+        if (t) return parseFloat(t.toString());
+      }, t.prototype.setValue = function (t) {
+        this.target.find("input").val(t);
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }(),
+    F = function () {
+      function t() {
+        this.name = "lastPaperFooter";
+      }
+
+      return t.prototype.createTarget = function () {
+        return this.target = $(`<div class="hiprint-option-item hiprint-option-item-row">\n        <div class="hiprint-option-item-label">\n        ${i18n.__('灏鹃〉椤靛熬')}\n        </div>\n        <div class="hiprint-option-item-field">\n        <input type="text" placeholder="${i18n.__('灏鹃〉椤靛熬')}" class="auto-submit">\n        </div>\n    </div>`), this.target;
+      }, t.prototype.getValue = function () {
+        var t = this.target.find("input").val();
+        if (t) return parseFloat(t.toString());
+      }, t.prototype.setValue = function (t) {
+        this.target.find("input").val(t);
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }(),
+    L = function () {
+      function t() {
+        this.name = "evenPaperFooter";
+      }
+
+      return t.prototype.createTarget = function () {
+        return this.target = $(`<div class="hiprint-option-item hiprint-option-item-row">\n        <div class="hiprint-option-item-label">\n        ${i18n.__('鍋舵暟椤甸〉灏�')}\n        </div>\n        <div class="hiprint-option-item-field">\n        <input type="text" placeholder="${i18n.__('鍋舵暟椤甸〉灏�')}" class="auto-submit">\n        </div>\n    </div>`), this.target;
+      }, t.prototype.getValue = function () {
+        var t = this.target.find("input").val();
+        if (t) return parseFloat(t.toString());
+      }, t.prototype.setValue = function (t) {
+        this.target.find("input").val(t);
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }(),
+    A = function () {
+      function t() {
+        this.name = "oddPaperFooter";
+      }
+
+      return t.prototype.createTarget = function () {
+        return this.target = $(`<div class="hiprint-option-item hiprint-option-item-row">\n        <div class="hiprint-option-item-label">\n        ${i18n.__('濂囨暟椤甸〉灏�')}\n        </div>\n        <div class="hiprint-option-item-field">\n        <input type="text" placeholder="${i18n.__('濂囨暟椤甸〉灏�')}" class="auto-submit" >\n        </div>\n    </div>`), this.target;
+      }, t.prototype.getValue = function () {
+        var t = this.target.find("input").val();
+        if (t) return parseFloat(t.toString());
+      }, t.prototype.setValue = function (t) {
+        this.target.find("input").val(t);
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }(),
+    z = function () {
+      function t() {
+        this.name = "fixed";
+      }
+
+      return t.prototype.createTarget = function () {
+        return this.target = $(`<div class="hiprint-option-item">\n        <div class="hiprint-option-item-label">\n        ${i18n.__('浣嶇疆鍥哄畾')}\n        </div>\n        <div class="hiprint-option-item-field">\n        <select class="auto-submit">\n        <option value="" >${i18n.__('榛樿')}</option>\n            <option value="false" >${i18n.__('鍚�')}</option>\n            <option value="true" >${i18n.__('鏄�')}</option>\n        </select>\n        </div>\n    </div>`), this.target;
+      }, t.prototype.getValue = function () {
+        if ("true" == this.target.find("select").val()) return !0;
+      }, t.prototype.setValue = function (t) {
+        this.target.find("select").val((null == t ? "" : t).toString());
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }(),
+    k = function () {
+      function t() {
+        this.name = "axis";
+      }
+
+      return t.prototype.createTarget = function () {
+        return this.target = $(`<div class="hiprint-option-item">\n        <div class="hiprint-option-item-label">\n        ${i18n.__('鎷栧姩鏂瑰悜')}\n        </div>\n        <div class="hiprint-option-item-field">\n        <select class="auto-submit">\n        <option value="" >${i18n.__('榛樿')}</option>\n        <option value="h" >${i18n.__('妯悜')}</option>\n        <option value="v" >${i18n.__('绔栧悜')}</option>\n        </select>\n        </div>\n    </div>`), this.target;
+      }, t.prototype.getValue = function () {
+        var t = this.target.find("select").val();
+        return t || void 0;
+      }, t.prototype.setValue = function (t) {
+        this.target.find("select").val(t);
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }(),
+    N = function () {
+      function t() {
+        this.name = "leftOffset";
+      }
+
+      return t.prototype.createTarget = function () {
+        return this.target = $(`<div class="hiprint-option-item hiprint-option-item-row">\n        <div class="hiprint-option-item-label">\n        ${i18n.__('宸﹀亸绉�')}\n        </div>\n        <div class="hiprint-option-item-field">\n        <input type="text" placeholder="${i18n.__('鍋忕Щ閲�')}pt" class="auto-submit" >\n        </div>\n    </div>`), this.target;
+      }, t.prototype.getValue = function () {
+        var t = this.target.find("input").val();
+        if (t) return parseFloat(t.toString());
+      }, t.prototype.setValue = function (t) {
+        this.target.find("input").val(t);
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }(),
+    V = function () {
+      function t() {
+        this.name = "lHeight";
+      }
+
+      return t.prototype.createTarget = function () {
+        return this.target = $(`<div class="hiprint-option-item hiprint-option-item-row">\n        <div class="hiprint-option-item-label">\n        ${i18n.__('鏈�浣庨珮搴�')}\n        </div>\n        <div class="hiprint-option-item-field">\n        <input type="text" placeholder="${i18n.__('鏂囨湰杩囩煭鎴栦负绌烘椂鐨勯珮搴�')}" class="auto-submit">\n        </div>\n    </div>`), this.target;
+      }, t.prototype.getValue = function () {
+        var t = this.target.find("input").val();
+        if (t) return parseFloat(t.toString());
+      }, t.prototype.setValue = function (t) {
+        this.target.find("input").val(t);
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }(),
+    W = function () {
+      function t() {
+        this.name = "unShowInPage";
+      }
+
+      return t.prototype.createTarget = function () {
+        return this.target = $(`<div class="hiprint-option-item">\n        <div class="hiprint-option-item-label">\n        ${i18n.__('闅愯棌瑙勫垯')}\n        </div>\n        <div class="hiprint-option-item-field">\n        <select class="auto-submit">\n        <option value="" >${i18n.__('榛樿')}</option>\n            <option value="first" >${i18n.__('棣栭〉')}</option>\n            <option value="last" >${i18n.__('灏鹃〉')}</option>\n        </select>\n        </div>\n    </div>`), this.target;
+      }, t.prototype.getValue = function () {
+        var t = this.target.find("select").val();
+        if (t) return t;
+      }, t.prototype.setValue = function (t) {
+        this.target.find("select").val(t);
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }(),
+    j = function () {
+      function t() {
+        this.name = "tableBodyRowBorder";
+      }
+
+      return t.prototype.css = function (t, e) {
+        if (t.find("tbody tr").length) {
+          if ("border" == e || void 0 == e) return t.find("tbody tr").addClass("hiprint-printElement-tableTarget-border-all");
+          "noBorder" == e ? t.find("tbody tr").addClass("hiprint-printElement-tableTarget-border-none") : "leftBorder" == e ? t.find("tbody tr").addClass("hiprint-printElement-tableTarget-border-left") : "rightBorder" == e ? t.find("tbody tr").addClass("hiprint-printElement-tableTarget-border-right") : "leftRightBorder" == e ? t.find("tbody tr").addClass("hiprint-printElement-tableTarget-border-lr") : "topBorder" == e ? t.find("tbody tr").addClass("hiprint-printElement-tableTarget-border-top") : "bottomBorder" == e ? t.find("tbody tr").addClass("hiprint-printElement-tableTarget-border-bottom") : "topBottomBorder" == e ? t.find("tbody tr").addClass("hiprint-printElement-tableTarget-border-tb") : t.find("tbody tr").removeClass();
+        }
+
+        return null;
+      }, t.prototype.createTarget = function () {
+        return this.target = $(`<div class="hiprint-option-item">\n        <div class="hiprint-option-item-label">\n        ${i18n.__('琛ㄤ綋琛岃竟妗�')}\n        </div>\n        <div class="hiprint-option-item-field">\n        <select class="auto-submit">\n        <option value="" >${i18n.__('榛樿')}</option>    \n        <option value="border" >${i18n.__('鏈夎竟妗�')}</option>\n        <option value="noBorder" >${i18n.__('鏃犺竟妗�')}</option>\n        <option value="leftBorder" >${i18n.__('宸﹁竟妗�')}</option>\n        <option value="rightBorder" >${i18n.__('鍙宠竟妗�')}</option>\n        <option value="leftRightBorder" >${i18n.__('宸﹀彸杈规')}</option>\n        <option value="topBorder" >${i18n.__('涓婅竟妗�')}</option>\n        <option value="bottomBorder" >${i18n.__('涓嬭竟妗�')}</option>\n        <option value="topBottomBorder" >${i18n.__('涓婁笅杈规')}</option>\n        </select>\n        </div>\n    </div>`), this.target;
+      }, t.prototype.getValue = function () {
+        var t = this.target.find("select").val();
+        if (t) return t.toString();
+      }, t.prototype.setValue = function (t) {
+        this.target.find("select").val(t);
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }(),
+    U = function () {
+      function t() {
+        this.name = "transform";
+      }
+
+      return t.prototype.css = function (t, e) {
+        if (t && t.length) {
+          var n = t.find(".hiprint-printElement-content").parent(".hiprint-printElement");
+          if (!n.length) {
+            n = t;
+          }
+          if (e) return n.css("transform", "rotate(" + e + "deg)"), n.css("-ms-transform", "rotate(" + e + "deg)"), n.css("-moz-transform", "rotate(" + e + "deg)"), n.css("-webkit-transform", "rotate(" + e + "deg)"), n.css("-o-transform", "rotate(" + e + "deg)"), "transform:rotate(" + e + "deg)";
+          n.length && (n[0].style.transform = "");
+        }
+
+        return null;
+      }, t.prototype.createTarget = function () {
+        return this.target = $(`<div class="hiprint-option-item">\n        <div class="hiprint-option-item-label">\n        ${i18n.__('鏃嬭浆瑙掑害')}\n        </div>\n        <div class="hiprint-option-item-field">\n        <input type="number" class="auto-submit"/>\n        </div>\n    </div>`), this.target;
+      }, t.prototype.getValue = function () {
+        var t = this.target.find("input").val();
+        if (t) return parseFloat(t.toString());
+      }, t.prototype.setValue = function (t) {
+        this.target.find("input").val(t);
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }(),
+    zIndex = function () {
+      function t() {
+        this.name = "zIndex";
+      }
+
+      return t.prototype.css = function (t, e) {
+        if (t && t.length) {
+          if (e) return t.css('z-index', e);
+        }
+        return null;
+      }, t.prototype.createTarget = function () {
+        return this.target = $(`<div class="hiprint-option-item">\n        <div class="hiprint-option-item-label">\n        ${i18n.__('鍏冪礌灞傜骇')}\n        </div>\n        <div class="hiprint-option-item-field">\n        <input type="number" class="auto-submit"/>\n        </div>\n    </div>`), this.target;
+      }, t.prototype.getValue = function () {
+        var t = this.target.find("input").val();
+        if (t) return parseInt(t.toString());
+      }, t.prototype.setValue = function (t) {
+        this.target.find("input").val(t);
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }(),
+    borderRadius = function () {
+      function t() {
+        this.name = "borderRadius";
+      }
+
+      return t.prototype.css = function (t, e) {
+        if (t && t.length) {
+          if (e) return t.css('border-raduis', e);
+        }
+        return null;
+      }, t.prototype.createTarget = function () {
+        return this.target = $(`<div class="hiprint-option-item">\n        <div class="hiprint-option-item-label">\n        ${i18n.__('杈规鍦嗚')}\n        </div>\n        <div class="hiprint-option-item-field">\n        <input type="text" class="auto-submit"/>\n        </div>\n    </div>`), this.target;
+      }, t.prototype.getValue = function () {
+        var t = this.target.find("input").val();
+        if (t) return t;
+      }, t.prototype.setValue = function (t) {
+        this.target.find("input").val(t);
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }(),
+    K = function () {
+      function t() {
+        this.name = "optionsGroup";
+      }
+
+      return t.prototype.createTarget = function () {
+        return this.target = $(`<div class="hiprint-option-item hiprint-option-item-row">\n        <div class="hiprint-option-item-label">\n        ${i18n.__('杈规璁剧疆')}\n        </div>\n       \n    </div>`), this.target;
+      }, t.prototype.getValue = function () {
+      }, t.prototype.setValue = function (t) {
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }(),
+    G = function () {
+      function t() {
+        this.name = "borderTop";
+      }
+
+      return t.prototype.css = function (t, e) {
+        if (t && t.length) {
+          if (e) return t.css("border-top-style", e), "border-top:1px";
+          t[0].style.borderTopStyle = "", t[0].style.borderTopWidth = "";
+        }
+
+        return null;
+      }, t.prototype.createTarget = function () {
+        return this.target = $(`<div class="hiprint-option-item">\n        <div class="hiprint-option-item-label">\n        ${i18n.__('涓婅竟妗�')}\n        </div>\n        <div class="hiprint-option-item-field">\n        <select class="auto-submit">\n            <option value="" >${i18n.__('鍚�')}</option>\n            <option value="solid" >${i18n.__('瀹炵嚎')}</option>\n            <option value="dotted" >${i18n.__('铏氱嚎')}</option>\n        </select>\n        </div>\n    </div>`), this.target;
+      }, t.prototype.getValue = function () {
+        var t = this.target.find("select").val();
+        if (t) return t;
+      }, t.prototype.setValue = function (t) {
+        this.target.find("select").val(t);
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }(),
+    q = function () {
+      function t() {
+        this.name = "borderLeft";
+      }
+
+      return t.prototype.css = function (t, e) {
+        if (t && t.length) {
+          if (e) return t.css("border-left-style", e), "border-left:1px";
+          t[0].style.borderLeftStyle = "", t[0].style.borderLeftWidth = "";
+        }
+
+        return null;
+      }, t.prototype.createTarget = function () {
+        return this.target = $(`<div class="hiprint-option-item">\n        <div class="hiprint-option-item-label">\n        ${i18n.__('宸﹁竟妗�')}\n        </div>\n        <div class="hiprint-option-item-field">\n        <select class="auto-submit">\n        <option value="" >${i18n.__('鍚�')}</option>\n        <option value="solid" >${i18n.__('瀹炵嚎')}</option>\n        <option value="dotted" >${i18n.__('铏氱嚎')}</option>\n        </select>\n        </div>\n    </div>`), this.target;
+      }, t.prototype.getValue = function () {
+        var t = this.target.find("select").val();
+        if (t) return t;
+      }, t.prototype.setValue = function (t) {
+        this.target.find("select").val(t);
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }(),
+    X = function () {
+      function t() {
+        this.name = "borderRight";
+      }
+
+      return t.prototype.css = function (t, e) {
+        if (t && t.length) {
+          if (e) return t.css("border-right-style", e), "border-right:1px";
+          t[0].style.borderRightStyle = "", t[0].style.borderRightWidth = "";
+        }
+
+        return null;
+      }, t.prototype.createTarget = function () {
+        return this.target = $(`<div class="hiprint-option-item">\n        <div class="hiprint-option-item-label">\n        ${i18n.__('鍙宠竟妗�')}\n        </div>\n        <div class="hiprint-option-item-field">\n        <select class="auto-submit">\n        <option value="" >${i18n.__('鍚�')}</option>\n        <option value="solid" >${i18n.__('瀹炵嚎')}</option>\n        <option value="dotted" >${i18n.__('铏氱嚎')}</option>\n        </select>\n        </div>\n    </div>`), this.target;
+      }, t.prototype.getValue = function () {
+        var t = this.target.find("select").val();
+        if (t) return t;
+      }, t.prototype.setValue = function (t) {
+        this.target.find("select").val(t);
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }(),
+    Y = function () {
+      function t() {
+        this.name = "borderBottom";
+      }
+
+      return t.prototype.css = function (t, e) {
+        if (t && t.length) {
+          if (e) return t.css("border-bottom-style", e), "border-bottom-style:1px solid";
+          t[0].style.borderBottomStyle = "", t[0].style.borderBottomWidth = "";
+        }
+
+        return null;
+      }, t.prototype.createTarget = function () {
+        return this.target = $(`<div class="hiprint-option-item">\n        <div class="hiprint-option-item-label">\n        ${i18n.__('涓嬭竟妗�')}\n        </div>\n        <div class="hiprint-option-item-field">\n        <select class="auto-submit">\n        <option value="" >${i18n.__('鍚�')}</option>\n        <option value="solid" >${i18n.__('瀹炵嚎')}</option>\n        <option value="dotted" >${i18n.__('铏氱嚎')}</option>\n        </select>\n        </div>\n    </div>`), this.target;
+      }, t.prototype.getValue = function () {
+        var t = this.target.find("select").val();
+        if (t) return t;
+      }, t.prototype.setValue = function (t) {
+        this.target.find("select").val(t);
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }(),
+    J = function () {
+      function t() {
+        this.name = "contentPaddingLeft";
+      }
+
+      return t.prototype.css = function (t, e) {
+        var n = t.find(".hiprint-printElement-content");
+
+        if (n && n.length) {
+          if (e) return n.css("padding-left", e + "pt"), "padding-left";
+          n[0].style.paddingLeft = "";
+        }
+
+        return null;
+      }, t.prototype.createTarget = function () {
+        return this.target = $(`<div class="hiprint-option-item">\n        <div class="hiprint-option-item-label">\n        ${i18n.__('宸﹀唴杈硅窛')}\n        </div>\n        <div class="hiprint-option-item-field">\n        <select class="auto-submit">\n        <option value="" >${i18n.__('榛樿')}</option>\n        <option value="0.75" >0.75pt</option>\n        <option value="1.5" >1.5pt</option>\n        <option value="2.25" >2.25pt</option>\n        <option value="3" >3pt</option>\n        <option value="3.75" >3.75pt</option>\n        <option value="4.5" >4.5pt</option>\n        <option value="5.25" >5.25pt</option>\n        <option value="6" >6pt</option>\n        <option value="6.75" >6.75pt</option>\n        <option value="7.5" >7.5pt</option>\n        <option value="8.25" >8.25pt</option>\n        <option value="9" >9pt</option>\n        <option value="9.75" >9.75pt</option>\n        <option value="10.5" >10.5pt</option>\n        <option value="11.25" >11.25pt</option>\n        <option value="12" >12pt</option>\n        <option value="12.75" >12.75pt</option>\n        <option value="13.5" >13.5pt</option>\n        <option value="14.25" >14.25pt</option>\n        <option value="15" >15pt</option>\n        <option value="15.75" >15.75pt</option>\n        <option value="16.5" >16.5pt</option>\n        <option value="17.25" >17.25pt</option>\n        <option value="18" >18pt</option>\n        <option value="18.75" >18.75pt</option>\n        <option value="19.5" >19.5pt</option>\n        <option value="20.25" >20.25pt</option>\n        <option value="21" >21pt</option>\n        <option value="21.75" >21.75pt</option>\n        </select>\n        </div>\n    </div>`), this.target;
+      }, t.prototype.getValue = function () {
+        var t = this.target.find("select").val();
+        if (t) return parseFloat(t.toString());
+      }, t.prototype.setValue = function (t) {
+        t && (this.target.find('option[value="' + t + '"]').length || this.target.find("select").prepend('<option value="' + t + '" >' + t + "</option>"));
+        this.target.find("select").val(t);
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }(),
+    Q = function () {
+      function t() {
+        this.name = "contentPaddingTop";
+      }
+
+      return t.prototype.css = function (t, e) {
+        var n = t.find(".hiprint-printElement-content");
+
+        if (n && n.length) {
+          if (e) return n.css("padding-top", e + "pt"), "padding-top";
+          n[0].style.paddingTop = "";
+        }
+
+        return null;
+      }, t.prototype.createTarget = function () {
+        return this.target = $(`<div class="hiprint-option-item">\n        <div class="hiprint-option-item-label">\n        ${i18n.__('涓婂唴杈硅窛')}\n        </div>\n        <div class="hiprint-option-item-field">\n        <select class="auto-submit">\n        <option value="" >${i18n.__('榛樿')}</option>\n        <option value="0.75" >0.75pt</option>\n        <option value="1.5" >1.5pt</option>\n        <option value="2.25" >2.25pt</option>\n        <option value="3" >3pt</option>\n        <option value="3.75" >3.75pt</option>\n        <option value="4.5" >4.5pt</option>\n        <option value="5.25" >5.25pt</option>\n        <option value="6" >6pt</option>\n        <option value="6.75" >6.75pt</option>\n        <option value="7.5" >7.5pt</option>\n        <option value="8.25" >8.25pt</option>\n        <option value="9" >9pt</option>\n        <option value="9.75" >9.75pt</option>\n        <option value="10.5" >10.5pt</option>\n        <option value="11.25" >11.25pt</option>\n        <option value="12" >12pt</option>\n        <option value="12.75" >12.75pt</option>\n        <option value="13.5" >13.5pt</option>\n        <option value="14.25" >14.25pt</option>\n        <option value="15" >15pt</option>\n        <option value="15.75" >15.75pt</option>\n        <option value="16.5" >16.5pt</option>\n        <option value="17.25" >17.25pt</option>\n        <option value="18" >18pt</option>\n        <option value="18.75" >18.75pt</option>\n        <option value="19.5" >19.5pt</option>\n        <option value="20.25" >20.25pt</option>\n        <option value="21" >21pt</option>\n        <option value="21.75" >21.75pt</option>\n        </select>\n        </div>\n    </div>`), this.target;
+      }, t.prototype.getValue = function () {
+        var t = this.target.find("select").val();
+        if (t) return parseFloat(t.toString());
+      }, t.prototype.setValue = function (t) {
+        t && (this.target.find('option[value="' + t + '"]').length || this.target.find("select").prepend('<option value="' + t + '" >' + t + "</option>"));
+        this.target.find("select").val(t);
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }(),
+    Z = function () {
+      function t() {
+        this.name = "contentPaddingRight";
+      }
+
+      return t.prototype.css = function (t, e) {
+        var n = t.find(".hiprint-printElement-content");
+
+        if (n && n.length) {
+          if (e) return n.css("padding-right", e + "pt"), "padding-right";
+          n[0].style.paddingRight = "";
+        }
+
+        return null;
+      }, t.prototype.createTarget = function () {
+        return this.target = $(`<div class="hiprint-option-item">\n        <div class="hiprint-option-item-label">\n        ${i18n.__('鍙冲唴杈硅窛')}\n        </div>\n        <div class="hiprint-option-item-field">\n        <select class="auto-submit">\n        <option value="" >${i18n.__('榛樿')}</option>\n        <option value="0.75" >0.75pt</option>\n        <option value="1.5" >1.5pt</option>\n        <option value="2.25" >2.25pt</option>\n        <option value="3" >3pt</option>\n        <option value="3.75" >3.75pt</option>\n        <option value="4.5" >4.5pt</option>\n        <option value="5.25" >5.25pt</option>\n        <option value="6" >6pt</option>\n        <option value="6.75" >6.75pt</option>\n        <option value="7.5" >7.5pt</option>\n        <option value="8.25" >8.25pt</option>\n        <option value="9" >9pt</option>\n        <option value="9.75" >9.75pt</option>\n        <option value="10.5" >10.5pt</option>\n        <option value="11.25" >11.25pt</option>\n        <option value="12" >12pt</option>\n        <option value="12.75" >12.75pt</option>\n        <option value="13.5" >13.5pt</option>\n        <option value="14.25" >14.25pt</option>\n        <option value="15" >15pt</option>\n        <option value="15.75" >15.75pt</option>\n        <option value="16.5" >16.5pt</option>\n        <option value="17.25" >17.25pt</option>\n        <option value="18" >18pt</option>\n        <option value="18.75" >18.75pt</option>\n        <option value="19.5" >19.5pt</option>\n        <option value="20.25" >20.25pt</option>\n        <option value="21" >21pt</option>\n        <option value="21.75" >21.75pt</option>\n        </select>\n        </div>\n    </div>`), this.target;
+      }, t.prototype.getValue = function () {
+        var t = this.target.find("select").val();
+        if (t) return parseFloat(t.toString());
+      }, t.prototype.setValue = function (t) {
+        t && (this.target.find('option[value="' + t + '"]').length || this.target.find("select").prepend('<option value="' + t + '" >' + t + "</option>"));
+        this.target.find("select").val(t);
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }(),
+    tt = function () {
+      function t() {
+        this.name = "contentPaddingBottom";
+      }
+
+      return t.prototype.css = function (t, e) {
+        var n = t.find(".hiprint-printElement-content");
+
+        if (n && n.length) {
+          if (e) return n.css("padding-bottom", e + "pt"), "padding-bottom";
+          n[0].style.paddingBottom = "";
+        }
+
+        return null;
+      }, t.prototype.createTarget = function () {
+        return this.target = $(`<div class="hiprint-option-item">\n        <div class="hiprint-option-item-label">\n        ${i18n.__('涓嬪唴杈硅窛')}\n        </div>\n        <div class="hiprint-option-item-field">\n        <select class="auto-submit">\n        <option value="" >${i18n.__('榛樿')}</option>\n        <option value="0.75" >0.75pt</option>\n        <option value="1.5" >1.5pt</option>\n        <option value="2.25" >2.25pt</option>\n        <option value="3" >3pt</option>\n        <option value="3.75" >3.75pt</option>\n        <option value="4.5" >4.5pt</option>\n        <option value="5.25" >5.25pt</option>\n        <option value="6" >6pt</option>\n        <option value="6.75" >6.75pt</option>\n        <option value="7.5" >7.5pt</option>\n        <option value="8.25" >8.25pt</option>\n        <option value="9" >9pt</option>\n        <option value="9.75" >9.75pt</option>\n        <option value="10.5" >10.5pt</option>\n        <option value="11.25" >11.25pt</option>\n        <option value="12" >12pt</option>\n        <option value="12.75" >12.75pt</option>\n        <option value="13.5" >13.5pt</option>\n        <option value="14.25" >14.25pt</option>\n        <option value="15" >15pt</option>\n        <option value="15.75" >15.75pt</option>\n        <option value="16.5" >16.5pt</option>\n        <option value="17.25" >17.25pt</option>\n        <option value="18" >18pt</option>\n        <option value="18.75" >18.75pt</option>\n        <option value="19.5" >19.5pt</option>\n        <option value="20.25" >20.25pt</option>\n        <option value="21" >21pt</option>\n        <option value="21.75" >21.75pt</option>\n        </select>\n        </div>\n    </div>`), this.target;
+      }, t.prototype.getValue = function () {
+        var t = this.target.find("select").val();
+        if (t) return parseFloat(t.toString());
+      }, t.prototype.setValue = function (t) {
+        t && (this.target.find('option[value="' + t + '"]').length || this.target.find("select").prepend('<option value="' + t + '" >' + t + "</option>"));
+        this.target.find("select").val(t);
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }(),
+    et = function () {
+      function t() {
+        this.name = "borderStyle";
+      }
+
+      return t.prototype.css = function (t, e) {
+        if (t && t.length) {
+          if (e) return t.css("border-style", e), "border-style:1px";
+          t[0].style.borderStyle = "";
+        }
+
+        return null;
+      }, t.prototype.createTarget = function (t) {
+        var name = ['hline', 'vline', 'rect', 'oval'].includes(t.printElementType.type) ? `${i18n.__('鏍峰紡')}` : `${i18n.__('杈规鏍峰紡')}`;
+        return this.target = $(`<div class="hiprint-option-item">\n        <div class="hiprint-option-item-label">\n       ${name}\n        </div>\n        <div class="hiprint-option-item-field">\n        <select class="auto-submit">\n            <option value="" >${i18n.__('榛樿')}</option>\n            <option value="solid" >${i18n.__('瀹炵嚎')}</option>\n            <option value="dashed" >${i18n.__('闀胯櫄绾�')}</option>\n            <option value="dotted" >${i18n.__('鐭櫄绾�')}</option>\n        </select>\n        </div>\n    </div>`), this.target;
+      }, t.prototype.getValue = function () {
+        var t = this.target.find("select").val();
+        if (t) return t;
+      }, t.prototype.setValue = function (t) {
+        this.target.find("select").val(t);
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }(),
+    nt = function () {
+      function t() {
+        this.name = "backgroundColor";
+      }
+
+      return t.prototype.css = function (t, e) {
+        if (t && t.length) {
+          if (e) return t.css("background-color", e), "background-color:" + e;
+          t[0].style.backgroundColor = "";
+        }
+
+        return null;
+      }, t.prototype.createTarget = function () {
+        return this.target = $(`<div class="hiprint-option-item">\n        <div class="hiprint-option-item-label">\n        ${i18n.__('鑳屾櫙棰滆壊')}\n        </div>\n        <div class="hiprint-option-item-field">\n        <input type="text" class="auto-submit"/>\n        </div>\n    </div>`), this.target;
+      }, t.prototype.getValue = function () {
+        var t = this.target.find("input").val();
+        if (t) return t.toString();
+      }, t.prototype.setValue = function (t) {
+        this.target.find("input").minicolors({
+          defaultValue: t || "",
+          theme: "bootstrap"
+        }), this.target.find("input").val(t);
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }(),
+      barColor = function () {
+        function t() {
+          this.name = "barColor";
+        }
+
+        return t.prototype.css = function (t, e) {
+          if (t && t.length) {
+            // if (e) return t.css("background-color", e), "background-color:" + e;
+            // t[0].style.backgroundColor = "";
+          }
+          return null;
+        }, t.prototype.createTarget = function () {
+          return this.target = $(`<div class="hiprint-option-item">\n        <div class="hiprint-option-item-label">\n        ${i18n.__('鏉$爜棰滆壊')}\n        </div>\n        <div class="hiprint-option-item-field">\n        <input type="text" class="auto-submit"/>\n        </div>\n    </div>`), this.target;
+        }, t.prototype.getValue = function () {
+          var t = this.target.find("input").val();
+          if (t) return t.toString();
+        }, t.prototype.setValue = function (t) {
+          this.target.find("input").minicolors({
+            defaultValue: t || "",
+            theme: "bootstrap"
+          }), this.target.find("input").val(t);
+        }, t.prototype.destroy = function () {
+          this.target.remove();
+        }, t;
+      }(),
+
+      it = function () {
+      function t() {
+        this.name = "orient";
+      }
+
+      return t.prototype.createTarget = function () {
+        return this.target = $(`<div class="hiprint-option-item">\n        <div class="hiprint-option-item-label">\n        ${i18n.__('绾稿紶鏂瑰悜(浠呰嚜瀹氫箟绾歌川鏈夋晥)')}\n        </div>\n        <div class="hiprint-option-item-field">\n        <select class="auto-submit">\n        <option value="" >${i18n.__('榛樿')}</option>\n        <option value="1" >${i18n.__('绾靛悜')}</option>\n        <option value="2" >${i18n.__('妯悜')}</option>\n        </select>\n        </div>\n    </div>`), this.target;
+      }, t.prototype.getValue = function () {
+        var t = this.target.find("select").val();
+        if (t) return parseFloat(t.toString());
+      }, t.prototype.setValue = function (t) {
+        this.target.find("select").val(t);
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }(),
+    ot = function () {
+      function t() {
+        this.name = "textContentVerticalAlign";
+      }
+
+      return t.prototype.createTarget = function () {
+        return this.target = $(`<div class="hiprint-option-item">\n        <div class="hiprint-option-item-label">\n        ${i18n.__('涓婁笅瀵归綈')}\n        </div>\n        <div class="hiprint-option-item-field">\n        <select class="auto-submit">\n        <option value="" >${i18n.__('榛樿')}</option>\n        <option value="middle" >${i18n.__('鍨傜洿灞呬腑')}</option>\n        <option value="bottom" >${i18n.__('搴曢儴')}</option>\n       \n        </select>\n        </div>\n    </div>`), this.target;
+      }, t.prototype.css = function (t, e) {
+        if (t && t.length) {
+          t.removeClass("hiprint-text-content-middle"), t.removeClass("hiprint-text-content-bottom");
+          if (e) return "middle" === e && t.addClass("hiprint-text-content-middle"), "bottom" === e && t.addClass("hiprint-text-content-bottom"), "";
+        }
+
+        return null;
+      }, t.prototype.getValue = function () {
+        var t = this.target.find("select").val();
+        if (t) return t.toString();
+      }, t.prototype.setValue = function (t) {
+        this.target.find("select").val(t);
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }(),
+    textWrap = function () {
+      function t() {
+        this.name = "textContentWrap";
+      }
+
+      return t.prototype.createTarget = function () {
+        return this.target = $(`<div class="hiprint-option-item">\n        <div class="hiprint-option-item-label">\n        ${i18n.__('鏂囨湰鎹㈣')}\n        </div>\n        <div class="hiprint-option-item-field">\n        <select class="auto-submit">\n        <option value="" >${i18n.__('榛樿')}</option>\n        <option value="nowrap" >${i18n.__('涓嶆崲琛�')}</option>\n        <option value="clip" >${i18n.__('涓嶆崲琛�&闅愯棌')}</option>\n        <option value="ellipsis" >${i18n.__('涓嶆崲琛�&鐪佺暐')}</option>\n       </select>\n        </div>\n    </div>`), this.target;
+      }, t.prototype.css = function (t, e) {
+        if (t && t.length) {
+          t.removeClass("hiprint-text-content-wrap");
+          t.find(".hiprint-printElement-text-content").removeClass("hiprint-text-content-wrap-nowrap");
+          t.find(".hiprint-printElement-text-content").removeClass("hiprint-text-content-wrap-clip");
+          t.find(".hiprint-printElement-text-content").removeClass("hiprint-text-content-wrap-ellipsis");
+          if (e) return t.addClass("hiprint-text-content-wrap"),t.find(".hiprint-printElement-text-content").addClass("hiprint-text-content-wrap-" + e), "";
+        }
+
+        return null;
+      }, t.prototype.getValue = function () {
+        var t = this.target.find("select").val();
+        if (t) return t.toString();
+      }, t.prototype.setValue = function (t) {
+        this.target.find("select").val(t);
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }(),
+    rt = n(5),
+    at = function () {
+      function t() {
+        this.name = "columns";
+      }
+
+      return t.prototype.createTarget = function () {
+        $('<div class="indicator"></div>').appendTo("body");
+        return " </ul>\n       </div>\n    </div>", this.target = $(' <div class="hiprint-option-item hiprint-option-item-row">\n       <div>\n            <ul class="hiprint-option-table-selected-columns"> </ul>\n       </div>\n    </div>'), this.target;
+      }, t.prototype.getValue = function () {
+        return this.buildData();
+      }, t.prototype.setValue = function (t, e, n) {
+        var i = this,
+          o = this;
+        this.value = t, this.options = e, this.printElementType = n;
+        var r = n.columns[0].filter(function (e) {
+          return 0 == t[0].columns.filter(function (t) {
+            return e.columnId == t.columnId;
+          }).length;
+        }).map(function (t) {
+          var e = new rt.a(t);
+          return e.checked = !1, e;
+        });
+        this.allColumns = t[0].columns.concat(r), t && 1 == t.length && (this.target.find("ul").html(this.allColumns.map(function (t, e) {
+          return '<li  class="hiprint-option-table-selected-item"> <div class="hi-pretty p-default">\n                ' + (t.checked ? '<input type="checkbox"   checked column-id="' + (t.id || t.columnId) + '" />' : '<input type="checkbox"  column-id="' + (t.id || t.columnId) + '" />') + '\n                <div class="state">\n                    <label></label>\n                </div>\n            </div><span class="column-title">' + (t.title || t.descTitle || "") + "</span></li>";
+        }).join("")), this.target.find("input").change(function (e) {
+          var checked = e.target.checked, id = e.target.attributes['column-id'].nodeValue || '';
+          var idx = i.allColumns.findIndex(function (e) {
+            return e.field == id || e.id == id;
+          });
+          if (idx >= 0) {
+            i.allColumns[idx]['checked'] = checked
+          }
+          i.submit();
+        }), this.printElementType.columnDisplayIndexEditable && this.target.find("li").hidraggable({
+          revert: !0,
+          handle: ".column-title",
+          moveUnit: "pt",
+          deltaX: 0,
+          deltaY: 0
+        }).hidroppable({
+          onDragOver: function onDragOver(t, e) {
+            $(this).css("border-top-color", "red");
+          },
+          onDragLeave: function onDragLeave(t, e) {
+            $(this).css("border-top-color", "");
+          },
+          onDrop: function onDrop(t, e) {
+            $(e).insertBefore(this), $(this).css("border-top-color", ""), o.submit();
+          }
+        }));
+      }, t.prototype.buildData = function () {
+        var t = this, e = [];
+        if (t.options.columns.length > 1) {
+          return this.value;
+        }
+        t.printElementType.makeColumnObj(t.allColumns);
+        this.target.find("input").map(function (n, i) {
+          var o = $(i).attr("column-id");
+          var a = t.printElementType.getColumnByColumnId(o);
+          if (a) {
+            var p = new rt.a(a);
+            p.checked = a.checked, e.push(p);
+          }
+        })
+        return this.value[0].columns = e, this.value;
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }(),
+    pt = function () {
+      function t() {
+        this.name = "textType";
+      }
+
+      return t.prototype.createTarget = function () {
+        return this.target = $(`<div class="hiprint-option-item">\n        <div class="hiprint-option-item-label">\n        ${i18n.__('鎵撳嵃绫诲瀷')}\n        </div>\n        <div class="hiprint-option-item-field">\n        <select class="auto-submit">\n        <option value="" >${i18n.__('榛樿')}</option>\n        <option value="" >${i18n.__('鏂囨湰')}</option>\n        <option value="barcode" >${i18n.__('鏉″舰鐮�')}</option>\n        <option value="qrcode" >${i18n.__('浜岀淮鐮�')}</option>\n        </select>\n        </div>\n    </div>`), this.target;
+      }, t.prototype.getValue = function () {
+        var t = this.target.find("select").val();
+        if (t) return t;
+      }, t.prototype.setValue = function (t) {
+        this.target.find("select").val(t);
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }(),
+    tablept = function () {
+      function t() {
+        this.name = "tableTextType";
+      }
+
+      return t.prototype.createTarget = function () {
+        return this.target = $(
+          `<div class="hiprint-option-item">\n        <div class="hiprint-option-item-label">\n        ${i18n.__('瀛楁绫诲瀷')}\n        </div>\n        <div class="hiprint-option-item-field">\n        <select class="auto-submit">\n        <option value="" >${i18n.__('榛樿(鏂囨湰)')}</option>\n        <option value="text" >${i18n.__('鏂囨湰')}</option>\n <option value="sequence" >${i18n.__('搴忓彿')}</option>\n       <option value="barcode" >${i18n.__('鏉″舰鐮�')}</option>\n        <option value="qrcode" >${i18n.__('浜岀淮鐮�')}</option>\n    <option value="image" >${i18n.__('鍥剧墖')}</option>\n        </select>\n        </div>\n    </div>`
+        ), this.target;
+      }, t.prototype.getValue = function () {
+        var t = this.target.find("select").val();
+        if (t) return t;
+      }, t.prototype.setValue = function (t) {
+        this.target.find("select").val(t);
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }(),
+    tableE = function () {
+      function t() {
+        this.name = "tableBarcodeMode";
+      }
+
+      return t.prototype.createTarget = function () {
+        return this.target = $(
+          `<div class="hiprint-option-item">\n        <div class="hiprint-option-item-label">\n        ${i18n.__('鏉″舰鐮佹牸寮�')}\n        </div>\n        <div class="hiprint-option-item-field">\n        <select class="auto-submit">\n         <option value="" >${i18n.__('榛樿')}(CODE128A)</option>\n         <option value="CODE128A" >CODE128A</option>\n        <option value="CODE128B" >CODE128B</option>\n        <option value="CODE128C" >CODE128C</option>\n        <option value="CODE39" >CODE39</option>\n        <option value="EAN-13" >EAN-13</option>\n        <option value="EAN-8" >EAN-8</option>\n        <option value="EAN-5" >EAN-5</option>\n        <option value="EAN-2" >EAN-2</option>\n        <option value="UPC锛圓锛�" >UPC锛圓锛�</option>\n        <option value="ITF" >ITF</option>\n        <option value="ITF-14" >ITF-14</option>\n        <option value="MSI" >MSI</option>\n            <option value="MSI10" >MSI10</option>\n            <option value="MSI11" >MSI11</option>\n            <option value="MSI1010" >MSI1010</option>\n            <option value="MSI1110" >MSI1110</option>\n            <option value="Pharmacode" >Pharmacode</option>\n        </select>\n        </div>\n    </div>`
+        ), this.target;
+      }, t.prototype.getValue = function () {
+        var t = this.target.find("select").val();
+        return t || void 0;
+      }, t.prototype.setValue = function (t) {
+        this.target.find("select").val(t);
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }(),
+    tableQRCodeLevel = function () {
+      function t() {
+        this.name = "tableQRCodeLevel";
+      }
+
+      return t.prototype.createTarget = function () {
+        return this.target = $(
+          `<div class="hiprint-option-item">\n        <div class="hiprint-option-item-label">\n        ${i18n.__('浜岀淮鐮佸閿欑巼')}\n        </div>\n        <div class="hiprint-option-item-field">\n        <select class="auto-submit">\n        <option value="" >${i18n.__('榛樿')}</option>\n        <option value="1" >7% L</option>\n        <option value="0" >15% M</option>\n        <option value="3" >25% Q</option>\n        <option value="2" >30% H</option>\n        </select>\n        </div>\n    </div>`
+        ), this.target;
+      }, t.prototype.getValue = function () {
+        var t = this.target.find("select").val();
+        return parseInt(t || 0);
+      }, t.prototype.setValue = function (t) {
+        this.target.find("select").val(t);
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }(),
+    tableColumnH = function () {
+      function t() {
+        this.name = "tableColumnHeight";
+      }
+
+      return t.prototype.createTarget = function () {
+        return this.target = $(
+          `<div class="hiprint-option-item ">\n        <div class="hiprint-option-item-label">\n        ${i18n.__('鍗曞厓鏍奸珮搴�')}\n        </div>\n        <div class="hiprint-option-item-field">\n        <input type="text" placeholder="${i18n.__('鏉″舰鐮併�佷簩缁寸爜浠ュ強鍥剧墖鏈夋晥')}" class="auto-submit" >\n        </div>\n    </div>`
+        ), this.target;
+      }, t.prototype.getValue = function () {
+        var t = this.target.find("input").val();
+        if (t) return t.toString();
+      }, t.prototype.setValue = function (t) {
+        this.target.find("input").val(t);
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }(),
+    tableSummaryTitle = function () {
+      function t() {
+        this.name = "tableSummaryTitle"
+      }
+
+      return t.prototype.createTarget = function () {
+        return this.target = $(`<div class="hiprint-option-item"><div class="hiprint-option-item-label">${i18n.__('搴曢儴鑱氬悎鏍囬')}</div><div class="hiprint-option-item-field"><select class="auto-submit"><option value="">${i18n.__('榛樿')}</option><option value="true">${i18n.__('鏄剧ず')}</option><option value="false">${i18n.__('闅愯棌')}</option></select></div></div>`), this.target;
+      }, t.prototype.getValue = function () {
+        return !("false" == this.target.find("select").val());
+      }, t.prototype.setValue = function (t) {
+        this.target.find("select").val((null == t ? "" : t).toString());
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }(),
+    tableSummaryText = function () {
+      function t() {
+        this.name = "tableSummaryText";
+      }
+
+      return t.prototype.createTarget = function () {
+        return this.target = $(`<div class="hiprint-option-item">\n        <div class="hiprint-option-item-label">\n        ${i18n.__('搴曢儴鑱氬悎鏂囨湰')}\n        </div>\n        <div class="hiprint-option-item-field">\n        <input type="text" placeholder="${i18n.__('鑱氬悎绫诲瀷')}:" class="auto-submit" >\n        </div>\n    </div>`), this.target;
+      }, t.prototype.getValue = function () {
+        var t = this.target.find("input").val();
+        if (t) return t.toString();
+      }, t.prototype.setValue = function (t) {
+        this.target.find("input").val(t);
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }(),
+    tableSummaryColspan = function () {
+      function t() {
+        this.name = "tableSummaryColspan";
+      }
+
+      return t.prototype.createTarget = function () {
+        return this.target = $(`<div class="hiprint-option-item">\n        <div class="hiprint-option-item-label">\n        ${i18n.__('搴曢儴鑱氬悎鍚堝苟鍒楁暟')}\n        </div>\n        <div class="hiprint-option-item-field">\n        <input type="number" min="0" step="1" placeholder="${i18n.__('鍚堝苟鍒楁暟')}" class="auto-submit" >\n        </div>\n    </div>`), this.target;
+      }, t.prototype.getValue = function () {
+        var t = this.target.find("input").val();
+        if (t) return t.toString();
+      }, t.prototype.setValue = function (t) {
+        this.target.find("input").val(t);
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }(),
+    tableSummaryAlign = function () {
+      function t() {
+        this.name = "tableSummaryAlign";
+      }
+
+      return t.prototype.createTarget = function () {
+        return this.target = $(`<div class="hiprint-option-item">\n        <div class="hiprint-option-item-label">\n        ${i18n.__('搴曢儴鑱氬悎绫诲瀷宸﹀彸瀵归綈')}\n        </div>\n        <div class="hiprint-option-item-field">\n        <select class="auto-submit">\n        <option value="" >${i18n.__('榛樿')}</option>\n        <option value="left" >${i18n.__('灞呭乏')}</option>\n        <option value="center" >${i18n.__('灞呬腑')}</option>\n        <option value="right" >${i18n.__('灞呭彸')}</option>\n        <option value="justify" >${i18n.__('涓ょ瀵归綈')}</option>\n        </select>\n        </div>\n    </div>`), this.target;
+      }, t.prototype.getValue = function () {
+        var t = this.target.find("select").val();
+        if (t) return t.toString();
+      }, t.prototype.setValue = function (t) {
+        this.target.find("select").val(t);
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }(),
+    tableSummaryNumFormat = function () {
+      function t() {
+        this.name = "tableSummaryNumFormat";
+      }
+
+      return t.prototype.createTarget = function () {
+        var list = [{t: `${i18n.__('鏁存暟')}`,v: '0'}], num = [1,2,3,4,5,6];
+        num.forEach(function (n) {
+          list.push({t: i18n.__n(`淇濈暀%s浣峘, n), v: '' + n})
+        })
+        var n = `\n            <option value="" >${i18n.__('榛樿')}</option>`;
+        list.forEach(function (e) {
+          n += '\n            <option value="' + (e.v || "") + '">' + (e.t || "") + '</option>';
+        })
+        this.target = $(`<div class="hiprint-option-item">\n        <div class="hiprint-option-item-label">\n        ${i18n.__('搴曢儴鑱氬悎灏忔暟')}\n        </div>\n        <div class="hiprint-option-item-field">\n        <select class="auto-submit"></select>\n        </div>\n    </div>`)
+        this.target.find(".auto-submit").append($(n));
+        return this.target;
+      }, t.prototype.getValue = function () {
+        var t = this.target.find("select").val();
+        if (t) return t.toString();
+      }, t.prototype.setValue = function (t) {
+        this.target.find("select").val(t);
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }(),
+    showCodeTitle = (function () {
+      function t() {
+        this.name = 'showCodeTitle'
+      }
+      return (
+        (t.prototype.createTarget = function () {
+          return (
+            (this.target = $(
+              ` <div class="hiprint-option-item" title="鏉″舰鐮佸簳閮ㄦ槸鍚︽樉绀哄唴瀹�">\n        <div class="hiprint-option-item-label">\n          ${i18n.__('鏄剧ず鐮佸��')}\n        </div>\n        <div class="hiprint-option-item-field">\n        <select class="auto-submit">\n        <option value="" >${i18n.__('榛樿')}</option>\n            <option value="true" >${i18n.__('鏄剧ず')}</option>\n            <option value="false" >${i18n.__('闅愯棌')}</option>\n        </select>\n        </div>\n    </div>`
+            )),
+            this.target
+          )
+        }),
+        (t.prototype.getValue = function () {
+          if ('true' == this.target.find('select').val()) return !0
+        }),
+        (t.prototype.setValue = function (t) {
+          this.target.find('select').val((null == t ? '' : t).toString())
+        }),
+        (t.prototype.destroy = function () {
+          this.target.remove()
+        }),
+        t
+      )
+    })(),
+    tableSummaryFormatter = function () {
+      function t() {
+        this.name = "tableSummaryFormatter";
+      }
+      return t.prototype.createTarget = function () {
+        return this.target = $(`<div class="hiprint-option-item hiprint-option-item-row">\n        <div class="hiprint-option-item-label">\n        ${i18n.__('搴曢儴鑱氬悎鏍煎紡鍖栧嚱鏁�')}\n        </div>\n        <div class="hiprint-option-item-field">\n        <textarea style="height:80px;" placeholder="function(column,fieldPageData,tableData,options){ return \'<td></td>\'; }" class="auto-submit"></textarea>\n        </div>\n    </div>`), this.target;
+      }, t.prototype.getValue = function () {
+        var t = this.target.find("textarea").val();
+        if (t) return t;
+      }, t.prototype.setValue = function (t) {
+        this.target.find("textarea").val(t ? t.toString() : null);
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }(),
+
+    upperCase = function () {
+      function t() {
+        this.name = "upperCase";
+      }
+      return t.prototype.createTarget = function () {
+        var list = [
+          { t: "銆屽皬鍐欍�嶅崄鐐瑰叓", v: "0" },
+          { t: "銆屽皬鍐欍�嶄竴鍗佺偣鍏�", v: "1" },
+          { t: "銆屽ぇ鍐欍�嶆嬀鐐规崒", v: "2" },
+          { t: "銆屽ぇ鍐欍�嶅9鎷剧偣鎹�", v: "3" },
+          { t: "銆岄噾棰濄�嶄汉姘戝竵鎷惧厓鎹岃", v: "4" },
+          { t: "銆岄噾棰濄�嶄汉姘戝竵澹规嬀鍏冩崒瑙�", v: "5" },
+          { t: "銆岄噾棰濄�嶄汉姘戝竵澹规嬀鍏冩崒瑙掗浂鍒�", v: "6" },
+          { t: "銆岄噾棰濄�嶅9鎷惧厓鎹岃闆跺垎", v: "7" },
+        ];
+        var n = `\n<option value="">${i18n.__('榛樿')}</option>`;
+        list.forEach((e) => {
+          n += `\n<option value='${e.v}'>${e.t}</option>`;
+        })
+        this.target = $(
+			    `<div class="hiprint-option-item hiprint-option-item-row">\n<div class="hiprint-option-item-label">\n${i18n.__('杞ぇ灏忓啓')}\n</div>\n<div class="hiprint-option-item-field">\n<select class="auto-submit"></select>\n</div>\n</div>`
+		    );
+        this.target.find(".auto-submit").append($(n));
+        return this.target;
+      }, t.prototype.getValue = function () {
+        var t = this.target.find("select").val();
+        if (t) return t.toString();
+      }, t.prototype.setValue = function (t) {
+        this.target.find("select").val(t);
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }(),
+
+    // 琛ㄦ牸搴曢儴鍚堣鏍�
+    tableSummary = function () {
+      function t() {
+        this.name = "tableSummary"
+      }
+      return t.prototype.createTarget = function () {
+        return this.target = $(`<div class="hiprint-option-item"><div class="hiprint-option-item-label">${i18n.__('搴曢儴鑱氬悎绫诲瀷')}</div><div class="hiprint-option-item-field"><select class="auto-submit"><option value="">${i18n.__('涓嶈仛鍚�')}</option><option value="count">${i18n.__('璁℃暟')}</option><option value="sum">${i18n.__('鍚堣')}</option><option value="avg">${i18n.__('骞冲潎鍊�')}</option><option value="min">${i18n.__('鏈�灏忓��')}</option><option value="max">${i18n.__('鏈�澶у��')}</option><option value="text">${i18n.__('浠呮枃鏈�')}</option></select></div></div>`), this.target;
+      }, t.prototype.getValue = function () {
+        return this.target.find("select").val();
+      }, t.prototype.setValue = function (t) {
+        this.target.find("select").val(t);
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }(),
+    st = function () {
+      function t() {
+        this.name = "topOffset";
+      }
+
+      return t.prototype.createTarget = function () {
+        return this.target = $(`<div class="hiprint-option-item hiprint-option-item-row">\n        <div class="hiprint-option-item-label">\n        ${i18n.__('椤堕儴鍋忕Щ')}\n        </div>\n        <div class="hiprint-option-item-field">\n        <input type="text" placeholder="${i18n.__('鍋忕Щ閲�')}pt" class="auto-submit">\n        </div>\n    </div>`), this.target;
+      }, t.prototype.getValue = function () {
+        var t = this.target.find("input").val();
+        if (t) return parseFloat(t.toString());
+      }, t.prototype.setValue = function (t) {
+        this.target.find("input").val(t);
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }(),
+    panelLayoutOptions = function(){
+      function t() {
+        this.name = "panelLayoutOptions";
+      }
+      return t.prototype.createTarget = function () {
+        this.target = $(`<div class="hiprint-option-item hiprint-option-item-row"><div class="hiprint-option-item-label">${i18n.__('闈㈡澘鎺掑垪')}</div></div>`);
+        this.layoutType = $(`<div class="hiprint-option-item-field" style="display: flex;align-items: baseline;"><div style="width:25%">${i18n.__('鎺掑垪鏂瑰紡')}:</div><select style="width:75%" class="auto-submit"><option value="column" >${i18n.__('绾靛悜')}</option><option value="row" >${i18n.__('妯悜')}</option></select></div></div>`)
+        this.layoutRowGap = $(`<div class="hiprint-option-item-field" style="display: flex;align-items: baseline;margin-top: 4px"><div style="width:25%">${i18n.__('鍨傜洿闂磋窛')}:</div><input style="width:75%" type="text" placeholder="${i18n.__('鍨傜洿闂磋窛mm')}" class="auto-submit"></div>`);
+        this.layoutColumnGap = $(`<div class="hiprint-option-item-field" style="display: flex;align-items: baseline;margin-top: 4px"><div style="width:25%">${i18n.__('姘村钩闂磋窛')}:</div><input style="width:75%" type="text" placeholder="${i18n.__('姘村钩闂磋窛mm')}" class="auto-submit"></div>`);
+        this.target.append(this.layoutType)
+        this.target.append(this.layoutRowGap)
+        this.target.append(this.layoutColumnGap)
+        return this.target;
+      }, t.prototype.getValue = function () {
+        let opt = {
+          layoutType: this.layoutType.find("select").val() || 'column',
+          layoutRowGap:parseInt(this.layoutRowGap.find('input').val() || 0),
+          layoutColumnGap:parseInt(this.layoutColumnGap.find('input').val() || 0),
+        }
+        let options = Object.assign({}, this.options, opt);
+        return options;
+      }, t.prototype.setValue = function (t) {
+        this.options = t;
+        this.layoutType.find("select").val(t.layoutType || 'column');
+        this.layoutRowGap.find("input").val(t.layoutRowGap);
+        this.layoutColumnGap.find("input").val(t.layoutColumnGap);
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }(),
+    lt = function () {
+      function t() {
+        this.name = "gridColumns";
+      }
+
+      return t.prototype.createTarget = function () {
+        return this.target = $(`<div class="hiprint-option-item">\n        <div class="hiprint-option-item-label">\n        ${i18n.__('涓�琛屽缁�')}\n        </div>\n        <div class="hiprint-option-item-field">\n        <select class="auto-submit">\n        <option value="" >${i18n.__('榛樿')}</option>\n        <option value="2" >${i18n.__('涓�琛屼簩鍒�')}</option>\n        <option value="3" >${i18n.__('涓�琛屼笁鍒�')}</option>\n        <option value="4" >${i18n.__('涓�琛屽洓鍒�')}</option>\n        </select>\n        </div>\n    </div>`), this.target;
+      }, t.prototype.getValue = function () {
+        var t = this.target.find("select").val();
+        if (t) return parseFloat(t.toString());
+      }, t.prototype.setValue = function (t) {
+        t && (this.target.find('option[value="' + t + '"]').length || this.target.find("select").prepend('<option value="' + t + '" >' + t + "</option>"));
+        this.target.find("select").val(t);
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }(),
+    ut = function () {
+      function t() {
+        this.name = "gridColumnsGutter";
+      }
+
+      return t.prototype.createTarget = function () {
+        return this.target = $(`<div class="hiprint-option-item">\n        <div class="hiprint-option-item-label">\n        ${i18n.__('涓�琛屽缁勯棿闅�')}\n        </div>\n        <div class="hiprint-option-item-field">\n        <select class="auto-submit">\n        <option value="" >${i18n.__('榛樿')}</option>\n        <option value="1.5" >1.5pt</option>\n        <option value="2.25" >2.25pt</option>\n        <option value="3" >3pt</option>\n        <option value="3.75" >3.75pt</option>\n        <option value="4.5" >4.5pt</option>\n        <option value="5.25" >5.25pt</option>\n        <option value="6" >6pt</option>\n        <option value="6.75" >6.75pt</option>\n        <option value="7.25" >7.25pt</option>\n        <option value="8.5" >8.5pt</option>\n        <option value="9" >9pt</option>\n        </select>\n        </div>\n    </div>`), this.target;
+      }, t.prototype.getValue = function () {
+        var t = this.target.find("select").val();
+        if (t) return parseFloat(t.toString());
+      }, t.prototype.css = function (t, e) {
+        if (t && t.length) {
+          if (e) return t.find(".table-grid-row").css("margin-left", "-" + e + "pt").css("margin-right", "-" + e + "pt"), t.find(".tableGridColumnsGutterRow").css("padding-left", e + "pt").css("padding-right", e + "pt"), null;
+          t.find(".table-grid-row").map(function (t, e) {
+            e.style.marginLeft = "", e.style.marginRight = "";
+          }), t.find(".tableGridColumnsGutterRow").map(function (t, e) {
+            e.style.paddingLeft = "", e.style.paddingRight = "";
+          });
+        }
+
+        return null;
+      }, t.prototype.setValue = function (t) {
+        t && (this.target.find('option[value="' + t + '"]').length || this.target.find("select").prepend('<option value="' + t + '" >' + t + "</option>"));
+        this.target.find("select").val(t);
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }(),
+    ith = function () {
+      function t() {
+        this.name = "tableHeaderRepeat";
+      }
+
+      return t.prototype.createTarget = function () {
+        return this.target = $(`<div class="hiprint-option-item">\n        <div class="hiprint-option-item-label">\n        ${i18n.__('琛ㄦ牸澶存樉绀�')}\n        </div>\n        <div class="hiprint-option-item-field">\n        <select class="auto-submit">\n        <option value="" >${i18n.__('榛樿')}</option>\n        <option value="page" >${i18n.__('姣忛〉鏄剧ず')}</option>\n        <option value="first" >${i18n.__('棣栭〉鏄剧ず')}</option>\n        <option value="none" >${i18n.__('涓嶆樉绀�')}</option>\n        </select>\n        </div>\n    </div>`), this.target;
+      }, t.prototype.getValue = function () {
+        var t = this.target.find("select").val();
+        if (t) return t.toString();
+      }, t.prototype.setValue = function (t) {
+        this.target.find("select").val(t);
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }(),
+    dt = function () {
+      function t() {
+        this.name = "paddingLeft";
+      }
+
+      return t.prototype.css = function (t, e) {
+        var n = t;
+
+        if (n && n.length) {
+          if (e) return n.css("padding-left", e + "pt"), "padding-left";
+          n[0].style.paddingLeft = "";
+        }
+
+        return null;
+      }, t.prototype.createTarget = function () {
+        return this.target = $(`<div class="hiprint-option-item">\n        <div class="hiprint-option-item-label">\n        ${i18n.__('宸﹀唴杈硅窛')}\n        </div>\n        <div class="hiprint-option-item-field">\n        <select class="auto-submit">\n        <option value="" >${i18n.__('榛樿')}</option>\n        <option value="0.75" >0.75pt</option>\n        <option value="1.5" >1.5pt</option>\n        <option value="2.25" >2.25pt</option>\n        <option value="3" >3pt</option>\n        <option value="3.75" >3.75pt</option>\n        <option value="4.5" >4.5pt</option>\n        <option value="5.25" >5.25pt</option>\n        <option value="6" >6pt</option>\n        <option value="6.75" >6.75pt</option>\n        <option value="7.5" >7.5pt</option>\n        <option value="8.25" >8.25pt</option>\n        <option value="9" >9pt</option>\n        <option value="9.75" >9.75pt</option>\n        <option value="10.5" >10.5pt</option>\n        <option value="11.25" >11.25pt</option>\n        <option value="12" >12pt</option>\n        <option value="12.75" >12.75pt</option>\n        <option value="13.5" >13.5pt</option>\n        <option value="14.25" >14.25pt</option>\n        <option value="15" >15pt</option>\n        <option value="15.75" >15.75pt</option>\n        <option value="16.5" >16.5pt</option>\n        <option value="17.25" >17.25pt</option>\n        <option value="18" >18pt</option>\n        <option value="18.75" >18.75pt</option>\n        <option value="19.5" >19.5pt</option>\n        <option value="20.25" >20.25pt</option>\n        <option value="21" >21pt</option>\n        <option value="21.75" >21.75pt</option>\n        </select>\n        </div>\n    </div>`), this.target;
+      }, t.prototype.getValue = function () {
+        var t = this.target.find("select").val();
+        if (t) return parseFloat(t.toString());
+      }, t.prototype.setValue = function (t) {
+        t && (this.target.find('option[value="' + t + '"]').length || this.target.find("select").prepend('<option value="' + t + '" >' + t + "</option>"));
+        this.target.find("select").val(t);
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }(),
+    ct = function () {
+      function t() {
+        this.name = "paddingRight";
+      }
+
+      return t.prototype.css = function (t, e) {
+        var n = t;
+
+        if (n && n.length) {
+          if (e) return n.css("padding-right", e + "pt"), "padding-right";
+          n[0].style.paddingRight = "";
+        }
+
+        return null;
+      }, t.prototype.createTarget = function () {
+        return this.target = $(`<div class="hiprint-option-item">\n        <div class="hiprint-option-item-label">\n        ${i18n.__('鍙冲唴杈硅窛')}\n        </div>\n        <div class="hiprint-option-item-field">\n        <select class="auto-submit">\n        <option value="" >${i18n.__('榛樿')}</option>\n        <option value="0.75" >0.75pt</option>\n        <option value="1.5" >1.5pt</option>\n        <option value="2.25" >2.25pt</option>\n        <option value="3" >3pt</option>\n        <option value="3.75" >3.75pt</option>\n        <option value="4.5" >4.5pt</option>\n        <option value="5.25" >5.25pt</option>\n        <option value="6" >6pt</option>\n        <option value="6.75" >6.75pt</option>\n        <option value="7.5" >7.5pt</option>\n        <option value="8.25" >8.25pt</option>\n        <option value="9" >9pt</option>\n        <option value="9.75" >9.75pt</option>\n        <option value="10.5" >10.5pt</option>\n        <option value="11.25" >11.25pt</option>\n        <option value="12" >12pt</option>\n        <option value="12.75" >12.75pt</option>\n        <option value="13.5" >13.5pt</option>\n        <option value="14.25" >14.25pt</option>\n        <option value="15" >15pt</option>\n        <option value="15.75" >15.75pt</option>\n        <option value="16.5" >16.5pt</option>\n        <option value="17.25" >17.25pt</option>\n        <option value="18" >18pt</option>\n        <option value="18.75" >18.75pt</option>\n        <option value="19.5" >19.5pt</option>\n        <option value="20.25" >20.25pt</option>\n        <option value="21" >21pt</option>\n        <option value="21.75" >21.75pt</option>\n        </select>\n        </div>\n    </div>`), this.target;
+      }, t.prototype.getValue = function () {
+        var t = this.target.find("select").val();
+        if (t) return parseFloat(t.toString());
+      }, t.prototype.setValue = function (t) {
+        t && (this.target.find('option[value="' + t + '"]').length || this.target.find("select").prepend('<option value="' + t + '" >' + t + "</option>"));
+        this.target.find("select").val(t);
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }(),
+    ht = function () {
+      function t() {
+        this.name = "dataType";
+      }
+
+      return t.prototype.createTarget = function () {
+        var t = this;
+        return this.target = $(`\n        <div class="hiprint-option-item-row">\n        <div class="hiprint-option-item">\n        <div class="hiprint-option-item-label">\n        ${i18n.__('鏁版嵁绫诲瀷')}\n        </div>\n        <div class="hiprint-option-item-field">\n        <select class="hiprint-option-item-datatype">\n        <option value="" >${i18n.__('榛樿')}</option>\n        <option value="datetime" >${i18n.__('鏃ユ湡鏃堕棿')}</option>\n        <option value="boolean" >${i18n.__('甯冨皵')}</option>\n        </select>\n        </div>\n    </div>\n    <div class="hiprint-option-item ">\n        <div class="hiprint-option-item-label ">\n        ${i18n.__('鏍煎紡')}\n        </div>\n        <div class="hiprint-option-item-field">\n        <select  class="auto-submit hiprint-option-item-datatype-select-format">\n        <option value="" >${i18n.__('榛樿')}</option>\n        \n        </select>\n        <input class="auto-submit  hiprint-option-item-datatype-input-format" type="text" data-type="boolean" placeholder="true:false">\n        </div>\n    </div>\n        </div>\n`), $(this.target.find(".hiprint-option-item-datatype")).change(function () {
+          var e = $(t.target.find(".hiprint-option-item-datatype")).val();
+          t.loadFormatSelectByDataType(e), t.submit(t.getValue());
+        }), this.target;
+      }, t.prototype.getValue = function () {
+        var t = this.target.find(".hiprint-option-item-datatype").val();
+
+        if (t) {
+          var e = this.target.find(".hiprint-option-item-datatype-format").val();
+          return {
+            dataType: t,
+            format: e || void 0
+          };
+        }
+
+        return {
+          dataType: void 0,
+          format: void 0
+        };
+      }, t.prototype.setValue = function (t, e) {
+        this.target.find(".hiprint-option-item-datatype").val(e.dataType || ""), this.loadFormatSelectByDataType(e.dataType), this.target.find(".hiprint-option-item-datatype-format").val(e.format || "");
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t.prototype.loadFormatSelectByDataType = function (t) {
+        "boolean" === t ? (this.target.find(".hiprint-option-item-datatype-select-format").removeClass("hiprint-option-item-datatype-format").hide().val(""), this.target.find(".hiprint-option-item-datatype-input-format").addClass("hiprint-option-item-datatype-format").show()) : "datetime" === t ? (this.target.find(".hiprint-option-item-datatype-select-format").addClass("hiprint-option-item-datatype-format").show(), this.target.find(".hiprint-option-item-datatype-input-format").removeClass("hiprint-option-item-datatype-format").hide().val(""), this.target.find(".hiprint-option-item-datatype-select-format").html(`\n            <option value="" >${i18n.__('榛樿')}</option>\n            <option value="M/d" >M/d</option>\n            <option value="MM/dd" >MM/dd</option>\n            <option value="yy/M/d" >yy/M/d</option>\n            <option value="yy/MM/dd" >yy/MM/dd</option>\n            <option value="yyyy/M/d" >yyyy/M/d</option>\n            <option value="yyyy/MM/dd" >yyyy/MM/dd</option>\n            <option value="yy/M/d H:m" >yy/M/d H:m</option>\n            <option value="yy/M/d H:m:s" >yy/M/d H:m:s</option>\n            <option value="yy/M/d HH:mm" >yy/M/d HH:mm</option>\n            <option value="yy/M/d HH:mm:ss" >yy/M/d HH:mm:ss</option>\n            <option value="yy/MM/dd H:m" >yy/MM/dd H:m</option>\n            <option value="yy/MM/dd H:m:s" >yy/MM/dd H:m:s</option>\n            <option value="yy/MM/dd HH:mm" >yy/MM/dd HH:mm</option>\n            <option value="yy/MM/dd HH:mm:ss" >yy/MM/dd HH:mm:ss</option>\n            <option value="yyyy/M/d H:m" >yyyy/M/dd H:m</option>\n            <option value="yyyy/M/d H:m:s" >yyyy/M/d H:m:s</option>\n            <option value="yyyy/M/d HH:mm" >yyyy/M/d HH:mm</option>\n            <option value="yyyy/M/d HH:mm:ss" >yyyy/M/d HH:mm:ss</option>\n            <option value="yyyy/MM/dd H:m" >yyyy/MM/dd H:m</option>\n            <option value="yyyy/MM/dd H:m:s" >yyyy/MM/dd H:m:s</option>\n            <option value="yyyy/MM/dd HH:mm" >yyyy/MM/dd HH:mm</option>\n            <option value="yyyy/MM/dd HH:mm:ss" >yyyy/MM/dd HH:mm:ss</option>\n\n            <option value="M-d" >M-d</option>\n            <option value="MM-dd" >MM-dd</option>\n            <option value="yy-M-d" >yy-M-d</option>\n            <option value="yy-MM-dd" >yy-MM-dd</option>\n            <option value="yyyy-M-d" >yyyy-M-d</option>\n            <option value="yyyy-MM-dd" >yyyy-MM-dd</option>\n            <option value="yy-M-d H:m" >yy-M-d H:m</option>\n            <option value="yy-M-d H:m:s" >yy-M-d H:m:s</option>\n            <option value="yy-M-d HH:mm" >yy-M-d HH:mm</option>\n            <option value="yy-M-d HH:mm:ss" >yy-M-d HH:mm:ss</option>\n            <option value="yy-MM-dd H:m" >yy-MM-dd H:m</option>\n            <option value="yy-MM-dd H:m:s" >yy-MM-dd H:m:s</option>\n            <option value="yy-MM-dd HH:mm" >yy-MM-dd HH:mm</option>\n            <option value="yy-MM-dd HH:mm:ss" >yy-MM-dd HH:mm:ss</option>\n            <option value="yyyy-M-d H:m" >yyyy-M-d H:m</option>\n            <option value="yyyy-M-d H:m:s" >yyyy-M-d H:m:s</option>\n            <option value="yyyy-M-d HH:mm" >yyyy-M-d HH:mm</option>\n            <option value="yyyy-M-d HH:mm:ss" >yyyy-M-d HH:mm:ss</option>\n            <option value="yyyy-MM-dd H:m" >yyyy-MM-dd H:m</option>\n            <option value="yyyy-MM-dd H:m:s" >yyyy-MM-dd H:m:s</option>\n            <option value="yyyy-MM-dd HH:mm" >yyyy-MM-dd HH:mm</option>\n            <option value="yyyy-MM-dd HH:mm:ss" >yyyy-MM-dd HH:mm:ss</option>\n`)) : (this.target.find(".hiprint-option-item-datatype-select-format").show(), this.target.find(".hiprint-option-item-datatype-input-format").hide().val(""), this.target.find(".hiprint-option-item-datatype-format").html(`\n            <option value="" >${i18n.__('榛樿')}</option>\n`));
+      }, t;
+    }(),
+    ft = function () {
+      function t() {
+        this.name = "formatter";
+      }
+
+      return t.prototype.createTarget = function () {
+        var t = `<div class="hiprint-option-item hiprint-option-item-row">\n        <div class="hiprint-option-item-label">\n        ${i18n.__('鏍煎紡鍖栧嚱鏁�')}\n        </div>\n        <div class="hiprint-option-item-field">\n        <textarea style="height:80px;" placeholder="function(title,value,options,templateData,target){}" class="auto-submit"></textarea>\n        </div>\n    </div>`;
+        return this.target = $(t), this.target;
+      }, t.prototype.getValue = function () {
+        var t = this.target.find("textarea").val();
+        if (t) return t;
+      }, t.prototype.setValue = function (t) {
+        this.target.find("textarea").val(t ? t.toString() : null);
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }(),
+    gt = function () {
+      function t() {
+        this.name = "styler";
+      }
+
+      return t.prototype.createTarget = function () {
+        return this.target = $(`<div class="hiprint-option-item hiprint-option-item-row">\n        <div class="hiprint-option-item-label">\n        ${i18n.__('鏍峰紡鍑芥暟')}\n        </div>\n        <div class="hiprint-option-item-field">\n        <textarea style="height:80px;" placeholder="function(value, options, target,templateData){}" class="auto-submit"></textarea>\n        </div>\n    </div>`), this.target;
+      }, t.prototype.getValue = function () {
+        var t = this.target.find("textarea").val();
+        if (t) return t;
+      }, t.prototype.setValue = function (t) {
+        this.target.find("textarea").val(t ? t.toString() : null);
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }(),
+    rowcolumns = function () {
+      function t() {
+        this.name = "rowsColumnsMerge";
+      }
+
+      return t.prototype.createTarget = function () {
+        return this.target = $(`<div class="hiprint-option-item hiprint-option-item-row">\n        <div class="hiprint-option-item-label">\n        ${i18n.__('琛�/鍒楀悎骞跺嚱鏁�')}\n        </div>\n        <div class="hiprint-option-item-field">\n        <textarea style="height:80px;" placeholder="function(data, col, colIndex, rowIndex, tableData, printData){ return [1,1] }" class="auto-submit"></textarea>\n        </div>\n    </div>`), this.target;
+      }, t.prototype.getValue = function () {
+        var t = this.target.find("textarea").val();
+        if (t) return t;
+      }, t.prototype.setValue = function (t) {
+        this.target.find("textarea").val(t ? t.toString() : null);
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }(),
+    rowsColumnsMergeClean = function () {
+      function t() {
+        this.name = "rowsColumnsMergeClean";
+      }
+
+      return t.prototype.createTarget = function () {
+        return this.target = $(`<div class="hiprint-option-item hiprint-option-item-row">\n        <div class="hiprint-option-item-label">\n        ${i18n.__('璺ㄩ〉鍚堝苟鏄惁娓呴櫎')}\n        </div>\n        <div class="hiprint-option-item-field">\n        <select class="auto-submit">\n        <option value="" >${i18n.__('榛樿')}</option>\n        <option value="true" >${i18n.__('鏄�')}</option>\n        <option value="false" >${i18n.__('鍚�')}</option>\n        </select>\n        </div>\n    </div>`), this.target;
+      }, t.prototype.getValue = function () {
+        if ("true" == this.target.find("select").val()) return !0;
+      }, t.prototype.setValue = function (t) {
+        this.target.find("select").val((null == t ? "" : t).toString());
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }(),
+    mt = function () {
+      function t() {
+        this.name = "footerFormatter";
+      }
+
+      return t.prototype.createTarget = function () {
+        return this.target = $(`<div class="hiprint-option-item hiprint-option-item-row">\n        <div class="hiprint-option-item-label">\n        ${i18n.__('琛ㄦ牸鑴氬嚱鏁�')}\n        </div>\n        <div class="hiprint-option-item-field">\n        <textarea style="height:80px;" placeholder="function(options,rows,data,pageData,pageIndex){ return \'<tr></tr>\' }" class="auto-submit"></textarea>\n        </div>\n    </div>`), this.target;
+      }, t.prototype.getValue = function () {
+        var t = this.target.find("textarea").val();
+        if (t) return t;
+      }, t.prototype.setValue = function (t) {
+        this.target.find("textarea").val(t ? t.toString() : null);
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }(),
+    groupSequenceContinue = function () {
+      function t() {
+        this.name = "groupSequenceContinue";
+      }
+
+      return t.prototype.createTarget = function () {
+        return this.target = $(`<div class="hiprint-option-item hiprint-option-item-row">\n        <div class="hiprint-option-item-label">\n        ${i18n.__('鍒嗙粍搴忓彿缁紪')}\n        </div>\n        <div class="hiprint-option-item-field">\n        <select class="auto-submit">\n        <option value="" >${i18n.__('榛樿')}</option>\n        <option value="true" >${i18n.__('鏄�')}</option>\n        <option value="false" >${i18n.__('鍚�')}</option>\n        </select>\n        </div>\n    </div>`), this.target;
+      }, t.prototype.getValue = function () {
+        if ("true" == this.target.find("select").val()) return !0;
+      }, t.prototype.setValue = function (t) {
+        this.target.find("select").val((null == t ? "" : t).toString());
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }(),
+    groupFieldsFormatter = function () {
+      function t() {
+        this.name = "groupFieldsFormatter";
+      }
+
+      return t.prototype.createTarget = function () {
+        return this.target = $(`<div class="hiprint-option-item hiprint-option-item-row">\n        <div class="hiprint-option-item-label">\n        ${i18n.__('鍒嗙粍瀛楁鍑芥暟')}\n        </div>\n        <div class="hiprint-option-item-field">\n        <textarea style="height:80px;" placeholder="function(type,options,data){ return [] }" class="auto-submit"></textarea>\n        </div>\n    </div>`), this.target;
+      }, t.prototype.getValue = function () {
+        var t = this.target.find("textarea").val();
+        if (t) return t;
+      }, t.prototype.setValue = function (t) {
+        this.target.find("textarea").val(t ? t.toString() : null);
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }(),
+    groupFormatter = function () {
+      function t() {
+        this.name = "groupFormatter";
+      }
+
+      return t.prototype.createTarget = function () {
+        return this.target = $(`<div class="hiprint-option-item hiprint-option-item-row">\n        <div class="hiprint-option-item-label">\n        ${i18n.__('鍒嗙粍澶存牸寮忓寲鍑芥暟')}\n        </div>\n        <div class="hiprint-option-item-field">\n        <textarea style="height:80px;" placeholder="function(colTotal,tableData,printData,groupData,options){ return \'${i18n.__('鍒嗙粍澶翠俊鎭�')}(html)\' }" class="auto-submit"></textarea>\n        </div>\n    </div>`), this.target;
+      }, t.prototype.getValue = function () {
+        var t = this.target.find("textarea").val();
+        if (t) return t;
+      }, t.prototype.setValue = function (t) {
+        this.target.find("textarea").val(t ? t.toString() : null);
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }(),
+    groupFooterFormatter = function () {
+      function t() {
+        this.name = "groupFooterFormatter";
+      }
+
+      return t.prototype.createTarget = function () {
+        return this.target = $(`<div class="hiprint-option-item hiprint-option-item-row">\n        <div class="hiprint-option-item-label">\n        ${i18n.__('鍒嗙粍鑴氭牸寮忓寲鍑芥暟')}\n        </div>\n        <div class="hiprint-option-item-field">\n        <textarea style="height:80px;" placeholder="function(colTotal,tableData,printData,groupData,options){ return \'${i18n.__('鍒嗙粍鑴氫俊鎭�')}(html)\' }" class="auto-submit"></textarea>\n        </div>\n    </div>`), this.target;
+      }, t.prototype.getValue = function () {
+        var t = this.target.find("textarea").val();
+        if (t) return t;
+      }, t.prototype.setValue = function (t) {
+        this.target.find("textarea").val(t ? t.toString() : null);
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }(),
+    vt = function () {
+      function t() {
+        this.name = "gridColumnsFooterFormatter";
+      }
+
+      return t.prototype.createTarget = function () {
+        return this.target = $(`<div class="hiprint-option-item hiprint-option-item-row">\n        <div class="hiprint-option-item-label">\n        ${i18n.__('澶氱粍琛ㄦ牸鑴氬嚱鏁�')}\n        </div>\n        <div class="hiprint-option-item-field">\n        <textarea style="height:80px;" placeholder="function(options,rows,data,pageData){ return \'\' }" class="auto-submit"></textarea>\n        </div>\n    </div>`), this.target;
+      }, t.prototype.getValue = function () {
+        var t = this.target.find("textarea").val();
+        if (t) return t;
+      }, t.prototype.setValue = function (t) {
+        this.target.find("textarea").val(t ? t.toString() : null);
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }(),
+    yt = function () {
+      function t() {
+        this.name = "rowStyler";
+      }
+
+      return t.prototype.createTarget = function () {
+        return this.target = $(`<div class="hiprint-option-item hiprint-option-item-row">\n        <div class="hiprint-option-item-label">\n        ${i18n.__('琛屾牱寮忓嚱鏁�')}\n        </div>\n        <div class="hiprint-option-item-field">\n        <textarea style="height:80px;" placeholder="function(value,options){ return \'\' }" class="auto-submit"></textarea>\n        </div>\n    </div>`), this.target;
+      }, t.prototype.getValue = function () {
+        var t = this.target.find("textarea").val();
+        if (t) return t;
+      }, t.prototype.setValue = function (t) {
+        this.target.find("textarea").val(t ? t.toString() : null);
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }(),
+    bt = function () {
+      function t() {
+        this.name = "align";
+      }
+
+      return t.prototype.createTarget = function () {
+        return this.target = $(`<div class="hiprint-option-item">\n        <div class="hiprint-option-item-label">\n        ${i18n.__('鍗曞厓鏍煎乏鍙冲榻�')}\n        </div>\n        <div class="hiprint-option-item-field">\n        <select class="auto-submit">\n        <option value="" >${i18n.__('榛樿')}</option>\n        <option value="left" >${i18n.__('灞呭乏')}</option>\n        <option value="center" >${i18n.__('灞呬腑')}</option>\n        <option value="right" >${i18n.__('灞呭彸')}</option>\n        <option value="justify" >${i18n.__('涓ょ瀵归綈')}</option>\n        </select>\n        </div>\n    </div>`), this.target;
+      }, t.prototype.getValue = function () {
+        var t = this.target.find("select").val();
+        if (t) return t.toString();
+      }, t.prototype.setValue = function (t) {
+        this.target.find("select").val(t);
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }(),
+    Et = function () {
+      function t() {
+        this.name = "vAlign";
+      }
+
+      return t.prototype.createTarget = function () {
+        return this.target = $(`<div class="hiprint-option-item">\n        <div class="hiprint-option-item-label">\n        ${i18n.__('鍗曞厓鏍间笂涓嬪榻�')}\n        </div>\n        <div class="hiprint-option-item-field">\n        <select class="auto-submit">\n        <option value="" >${i18n.__('榛樿')}</option>\n        <option value="top" >${i18n.__('涓�')}</option>\n        <option value="middle" >${i18n.__('涓�')}</option>\n        <option value="bottom" >${i18n.__('涓�')}</option>\n        \n        </select>\n        </div>\n    </div>`), this.target;
+      }, t.prototype.getValue = function () {
+        var t = this.target.find("select").val();
+        if (t) return t.toString();
+      }, t.prototype.setValue = function (t) {
+        this.target.find("select").val(t);
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }(),
+    Tt = function () {
+      function t() {
+        this.name = "halign";
+      }
+
+      return t.prototype.createTarget = function () {
+        return this.target = $(`<div class="hiprint-option-item">\n        <div class="hiprint-option-item-label">\n        ${i18n.__('琛ㄦ牸澶村崟鍏冩牸宸﹀彸瀵归綈')}\n        </div>\n        <div class="hiprint-option-item-field">\n        <select class="auto-submit">\n        <option value="" >${i18n.__('榛樿')}</option>\n        <option value="left" >${i18n.__('灞呭乏')}</option>\n        <option value="center" >${i18n.__('灞呬腑')}</option>\n        <option value="right" >${i18n.__('灞呭彸')}</option>\n        <option value="justify" >${i18n.__('涓ょ瀵归綈')}</option>\n        </select>\n        </div>\n    </div>`), this.target;
+      }, t.prototype.getValue = function () {
+        var t = this.target.find("select").val();
+        if (t) return t.toString();
+      }, t.prototype.setValue = function (t) {
+        this.target.find("select").val(t);
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }(),
+    Pt = function () {
+      function t() {
+        this.name = "styler2";
+      }
+
+      return t.prototype.createTarget = function () {
+        return this.target = $(`<div class="hiprint-option-item hiprint-option-item-row">\n        <div class="hiprint-option-item-label">\n        ${i18n.__('鍗曞厓鏍兼牱寮忓嚱鏁�')}\n        </div>\n        <div class="hiprint-option-item-field">\n        <textarea style="height:80px;" placeholder="function(value,row,index,options){ return {color:\'red\' }; }" class="auto-submit"></textarea>\n        </div>\n    </div>`), this.target;
+      }, t.prototype.getValue = function () {
+        var t = this.target.find("textarea").val();
+        if (t) return t;
+      }, t.prototype.setValue = function (t) {
+        this.target.find("textarea").val(t ? t.toString() : null);
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }(),
+    stylerHeader = function () {
+      function t() {
+        this.name = "stylerHeader";
+      }
+
+      return t.prototype.createTarget = function () {
+        return this.target = $(`<div class="hiprint-option-item hiprint-option-item-row">\n        <div class="hiprint-option-item-label">\n        ${i18n.__('琛ㄦ牸澶存牱寮忓嚱鏁�')}\n        </div>\n        <div class="hiprint-option-item-field">\n        <textarea style="height:80px;" placeholder="function(options){ return {color:\'red\' }; }" class="auto-submit"></textarea>\n        </div>\n    </div>`), this.target;
+      }, t.prototype.getValue = function () {
+        var t = this.target.find("textarea").val();
+        if (t) return t;
+      }, t.prototype.setValue = function (t) {
+        this.target.find("textarea").val(t ? t.toString() : null);
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }(),
+    _t = function () {
+      function t() {
+        this.name = "formatter2";
+      }
+
+      return t.prototype.createTarget = function () {
+        return this.target = $(`<div class="hiprint-option-item hiprint-option-item-row">\n        <div class="hiprint-option-item-label">\n        ${i18n.__('鍗曞厓鏍兼牸寮忓寲鍑芥暟')}\n        </div>\n        <div class="hiprint-option-item-field">\n        <textarea style="height:80px;" placeholder="function(value,row,index,options){ return \'\'; }" class="auto-submit"></textarea>\n        </div>\n    </div>`), this.target;
+      }, t.prototype.getValue = function () {
+        var t = this.target.find("textarea").val();
+        if (t) return t;
+      }, t.prototype.setValue = function (t) {
+        this.target.find("textarea").val(t ? t.toString() : null);
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }(),
+    renderFormatter = function () {
+      function t() {
+        this.name = "renderFormatter";
+      }
+
+      return t.prototype.createTarget = function () {
+        return this.target = $(`<div class="hiprint-option-item hiprint-option-item-row">\n        <div class="hiprint-option-item-label">\n        ${i18n.__('鍗曞厓鏍兼覆鏌撳嚱鏁�')}\n        </div>\n        <div class="hiprint-option-item-field">\n        <textarea style="height:80px;" placeholder="function(value,row,colIndex,options,rowIndex){ return \'<td></td>\'; }" class="auto-submit"></textarea>\n        </div>\n    </div>`), this.target;
+      }, t.prototype.getValue = function () {
+        var t = this.target.find("textarea").val();
+        if (t) return t;
+      }, t.prototype.setValue = function (t) {
+        this.target.find("textarea").val(t ? t.toString() : null);
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }(),
+    wt = function () {
+      function t() {
+        this.name = "autoCompletion";
+      }
+
+      return t.prototype.createTarget = function () {
+        return this.target = $(`<div class="hiprint-option-item">\n        <div class="hiprint-option-item-label">\n        ${i18n.__('鑷姩琛ュ叏')}\n        </div>\n        <div class="hiprint-option-item-field">\n        <select class="auto-submit">\n        <option value="" >${i18n.__('榛樿')}</option>\n        <option value="true" >${i18n.__('鏄�')}</option>\n        <option value="false" >${i18n.__('鍚�')}</option>\n        </select>\n        </div>\n    </div>`), this.target;
+      }, t.prototype.getValue = function () {
+        if ("true" == this.target.find("select").val()) return !0;
+      }, t.prototype.setValue = function (t) {
+        this.target.find("select").val((null == t ? "" : t).toString());
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }(),
+    maxRows = function () {
+      function t() {
+        this.name = "maxRows";
+      }
+
+      return t.prototype.createTarget = function () {
+        return this.target = $(`<div class="hiprint-option-item">\n        <div class="hiprint-option-item-label">\n        ${i18n.__('姣忛〉鏈�澶ц鏁�')}\n        </div>\n        <div class="hiprint-option-item-field">\n        <input type="number" value="1" step="1" min="1" class="auto-submit"/>\n        </div>\n    </div>`), this.target;
+      }, t.prototype.getValue = function () {
+        var t = this.target.find("input").val();
+        if (t) return parseInt(t.toString());
+      }, t.prototype.setValue = function (t) {
+        this.target.find("input").val(t);
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }(),
+    xt = function () {
+      function t() {
+        this.name = "tableFooterRepeat";
+      }
+
+      return t.prototype.createTarget = function () {
+        return this.target = $(`<div class="hiprint-option-item">\n        <div class="hiprint-option-item-label">\n        ${i18n.__('琛ㄦ牸鑴氭樉绀�')}\n        </div>\n        <div class="hiprint-option-item-field">\n        <select class="auto-submit">\n        <option value="" >${i18n.__('榛樿')}</option>\n        <option value="no" >${i18n.__('涓嶆樉绀�')}</option>\n        <option value="page" >${i18n.__('姣忛〉鏄剧ず')}</option>\n        <option value="last" >${i18n.__('鏈�鍚庢樉绀�')}</option>\n        </select>\n        </div>\n    </div>`), this.target;
+      }, t.prototype.getValue = function () {
+        var t = this.target.find("select").val();
+        if (t) return t.toString();
+      }, t.prototype.setValue = function (t) {
+        this.target.find("select").val(t);
+      }, t.prototype.destroy = function () {
+        this.target.remove();
+      }, t;
+    }();
+
+  n.d(e, "a", function () {
+    return Ct;
+  });
+
+  var Ct = function () {
+    function t() {
+    }
+
+    return t.init = function () {
+      t.printElementOptionItems || (t.printElementOptionItems = {}, t._printElementOptionItems.forEach(function (e) {
+        t.printElementOptionItems[e.name] = e;
+      }));
+    }, t.registerItem = function (e) {
+      if (!e.name) throw new Error("styleItem must have name");
+      t.init(), t.printElementOptionItems[e.name] = e;
+    }, t.getItem = function (e) {
+      return t.init(), t.printElementOptionItems[e];
+    }, t._printElementOptionItems = [new fontFamily(), new r(), new a(), new p(), new i(), new s(), new l(), new pt(), new u(), new d(), new c(), new h(), new f(), new g(), new m(), new d2(), new c2(), new v(), new y(), new b(), new E(), new qrCodeLevel(), new T(), new P(), new _(), new w(), new x(), new coordinate(), new widthHeight(), new C(), new imageFit(), new O(), new H(), new D(), new paperNumberContinue(), new watermarkOptions(), new I(), new R(), new pageBreak(), new M(), new M2(), new S(), new B(), new F(), new L(), new A(), new z(), new k(), new st(), new N(), new V(), new W(), new j(), new U(), new borderRadius(), new zIndex(), new K(), new G(), new q(), new X(), new Y(), new Q(), new J(), new Z(), new tt(), new et(), new nt(), new it(), new ot(),new textWrap(), new at(), new lt(), new panelLayoutOptions(), new ut(), new ith(), new dt(), new ct(), new ht(), new ft(), new gt(), new mt(), new rowcolumns(), new rowsColumnsMergeClean(), new groupSequenceContinue(), new groupFieldsFormatter(), new groupFormatter(), new groupFooterFormatter(), new vt(), new yt(), new bt(), new Tt(), new Et(), new Pt(), new stylerHeader(), new renderFormatter(), new _t(), new wt(), new maxRows(), new xt(), new tableColumnH(), new tableE(), new tableQRCodeLevel(), new tablept(), new tableSummaryTitle(), new tableSummaryText(), new tableSummaryColspan(), new tableSummary(), new tableSummaryAlign(), new tableSummaryNumFormat(), new tableSummaryFormatter(),new showCodeTitle(), new upperCase(), new barcodeType(), new qrcodeType(), new barColor(), new barTextMode(), new barWidth(), new barAutoWidth()], t;
+  }();
+}, function (t, e, n) {
+  "use strict";
+
+  n.d(e, "a", function () {
+    return o;
+  }), n.d(e, "b", function () {
+    return r;
+  });
+
+  var i = n(14),
+    o = function () {
+      function t(t, e) {
+        this.selectedCells = [], this.rows = t, this.tableTatget = e;
+      }
+
+      return t.prototype.clear = function () {
+        this.tableTatget.find("td").removeClass("selected");
+      }, t.prototype.setSingleSelect = function (t) {
+        this.startCell = t, this.selectedCells = [];
+      }, t.prototype.getSingleSelect = function () {
+        if (this.selectedCells.length) {
+          if (1 == this.selectedCells.length) return 1 == this.selectedCells[0].length ? this.selectedCells[0][0] : void 0;
+          if (this.selectedCells.length > 1) return;
+        }
+
+        return this.startCell;
+      }, t.prototype.singleSelectByXY = function (t, e) {
+        var n = this.getCellByXY(t, e);
+        n && (this.clear(), n && (n.cell.select(), this.startCell = n, this.selectedCells = []));
+      }, t.prototype.multipleSelectByXY = function (t, e) {
+        this.clear();
+        var n = [];
+
+        if (this.startCell) {
+          var o = this.getCellByXY(t, e);
+
+          if (o) {
+            var r = i.a.mergeRect(this.startCell.cell.getTableRect(), o.cell.getTableRect());
+            this.selectByRect(new a(r), n);
+          }
+        }
+
+        this.selectedCells = n;
+      }, t.prototype.selectByRect = function (t, e) {
+        this.rows.forEach(function (n, i) {
+          var o = [];
+          n.columns.forEach(function (e) {
+            e.isInRect(t) && (o.push(new p(i, e)), e.select());
+          }), o.length && e.push(o);
+        }), t.changed && (t.changed = !1, e.splice(0, e.length), this.selectByRect(t, e));
+      }, t.prototype.getSelectedCells = function () {
+        return this.selectedCells;
+      }, t.prototype.getCellByXY = function (t, e) {
+        var n;
+        return this.rows.forEach(function (i, o) {
+          var r = (i.columns || []).filter(function (column) {return column.checked}).filter(function (n) {
+            return n.isXYinCell(t, e);
+          });
+          r.length && (n = new p(o, r[0]));
+        }), n;
+      }, t;
+    }(),
+    r = function () {
+      return function (t) {
+        this.x = t.x, this.y = t.y, this.height = t.height, this.width = t.width;
+      };
+    }(),
+    a = function () {
+      return function (t) {
+        this.rect = t;
+      };
+    }(),
+    p = function () {
+      return function (t, e) {
+        this.rowIndex = t, this.cell = e;
+      };
+    }();
+}, function (t, e, n) {
+  "use strict";
+
+  n.d(e, "a", function () {
+    return i;
+  });
+
+  var i = function () {
+    function t() {
+    }
+
+    return t.createId = function () {
+      return this.id += 1, this.id;
+    }, t.id = 1, t;
+  }();
+}, function (t, e, n) {
+  "use strict";
+
+  n.d(e, "a", function () {
+    return p;
+  });
+
+  var _i,
+    o = n(5),
+    r = n(13),
+    a = (_i = function i(t, e) {
+      return (_i = Object.setPrototypeOf || _instanceof({
+        __proto__: []
+      }, Array) && function (t, e) {
+        t.__proto__ = e;
+      } || function (t, e) {
+        for (var n in e) {
+          e.hasOwnProperty(n) && (t[n] = e[n]);
+        }
+      })(t, e);
+    }, function (t, e) {
+      function n() {
+        this.constructor = t;
+      }
+
+      _i(t, e), t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype, new n());
+    }),
+    p = function (t) {
+      function e(e) {
+        var n = t.call(this) || this;
+        (n.columns = [], e && e.constructor === Array) ? (e || []).forEach(function (t) {
+          n.columns.push(new o.a(t));
+        }) : e.columns && (e.columns || []).forEach(function (t) {
+          n.columns.push(new o.a(t));
+        });
+        return n;
+      }
+
+      return a(e, t), e.prototype.getPrintElementOptionEntity = function () {
+        var t = [];
+        var all = this.allColumns ? this.allColumns.filter(function (c) {return !c.checked}) : [];
+        return [...this.columns, ...all].forEach(function (e) {
+          t.push(e.getEntity());
+        }), t;
+      }, e;
+    }(r.a);
+}, function (t, e, n) {
+  "use strict";
+
+  n.d(e, "a", function () {
+    return r;
+  });
+
+  var i = n(11),
+    o = n(5),
+    r = function () {
+      function t() {
+        this.id = i.a.createId();
+      }
+
+      return t.prototype.init = function (t, e, n) {
+        this.isHead = n, this.target = e || $("<tr></tr>"), this.tableOptions = t,
+          this.allColumns = (this.columns || []),
+          this.initCells((this.columns || []).filter(function (column) {return column.checked}));
+      }, t.prototype.getTarget = function () {
+        return this.target;
+      }, t.prototype.initCells = function (t) {
+        var e = this;
+        t ? (this.columns = t, t.forEach(function (t, n) {
+          t.init(e.target.find("td:eq(" + n + ")"), e.tableOptions, e.id, e.isHead);
+        })) : (this.columns = [], this.target.find("td").map(function (t, n) {
+          var i = new o.a();
+          i.init($(n), e.tableOptions, e.id, e.isHead), e.columns.push(i);
+        }));
+      }, t.prototype.removeCell = function (t) {
+        var e = this.columns.indexOf(t);
+        this.columns[e].getTarget().remove(), this.columns.splice(e, 1);
+      }, t.prototype.createTableCell = function (t, e) {
+        var n = new o.a();
+        return n.init($("<td></td>"), this.tableOptions, this.id, this.isHead), t > 1 && (n.getTarget().attr("rowspan", t), n.rowspan = t), e > 1 && (n.getTarget().attr("colspan", e), n.colspan = e), n;
+      }, t.prototype.insertToTargetCellLeft = function (t, e) {
+        var n = this.columns.indexOf(t);
+        t.getTarget().before(e.getTarget()), this.columns.splice(n, 0, e);
+      }, t.prototype.insertToTargetCellRight = function (t, e) {
+        var n = this.columns.indexOf(t);
+        this.columns[n].getTarget().after(e.getTarget()), this.columns.splice(n + 1, 0, e);
+      }, t.prototype.insertCellToFirst = function (t) {
+        this.target.prepend(t.getTarget()), this.columns.splice(0, 0, t);
+      }, t.prototype.insertCellToLast = function (t) {
+        this.columns.push(t), this.target.append(t.getTarget());
+      }, t.prototype.getPrintElementOptionEntity = function () {
+        var t = [];
+        return [...this.columns, ...this.allColumns.filter(function (c) {return !c.checked})].forEach(function (e) {
+          t.push(e.getEntity());
+        }), t;
+      }, t;
+    }();
+}, function (t, e, n) {
+  "use strict";
+
+  n.d(e, "a", function () {
+    return o;
+  });
+
+  var i = n(10),
+    o = function () {
+      function t() {
+      }
+
+      return t.mergeRect = function (t, e) {
+        var n = Math.min(t.x, e.x),
+          o = Math.min(t.y, e.y);
+        return new i.b({
+          x: n,
+          y: o,
+          height: Math.max(t.y + t.height, e.y + e.height) - o,
+          width: Math.max(t.x + t.width, e.x + e.width) - n
+        });
+      }, t.Rect = function (t, e, n, i) {
+        return {
+          minX: t < n ? t : n,
+          minY: e < i ? e : i,
+          maxX: t < n ? n : t,
+          maxY: e < i ? i : e
+        };
+      }, t;
+    }();
+}, function (module, __webpack_exports__, __webpack_require__) {
+  "use strict";
+
+  __webpack_require__.d(__webpack_exports__, "a", function () {
+    return TablePrintElement;
+  });
+
+  var _BasePrintElement__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4),
+    _HiPrintConfig__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1),
+    _dto_PaperHtmlResult__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(6),
+    _assets_plugins_hinnn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(0),
+    _PrintReferenceElement__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(8),
+    _option_TablePrintElementOption__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(18),
+    _table_TableExcelHelper__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(7),
+    _hitable_HiTale__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(16),
+    _table_GridColumnsStructure__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(20),
+    _HiPrintlib__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(2),
+    __extends = (_extendStatics = function extendStatics(t, e) {
+      return (_extendStatics = Object.setPrototypeOf || _instanceof({
+        __proto__: []
+      }, Array) && function (t, e) {
+        t.__proto__ = e;
+      } || function (t, e) {
+        for (var n in e) {
+          e.hasOwnProperty(n) && (t[n] = e[n]);
+        }
+      })(t, e);
+    }, function (t, e) {
+      function n() {
+        this.constructor = t;
+      }
+
+      _extendStatics(t, e), t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype, new n());
+    }),
+    _extendStatics,
+    TablePrintElement = function (_super) {
+      function TablePrintElement(t, e) {
+        var n = _super.call(this, t) || this;
+        return n.gridColumnsFooterCss = "hiprint-gridColumnsFooter", n.tableGridRowCss = "table-grid-row", n.options = new _option_TablePrintElementOption__WEBPACK_IMPORTED_MODULE_5__.a(e, n.printElementType), n.options.setDefault(new _option_TablePrintElementOption__WEBPACK_IMPORTED_MODULE_5__.a(_HiPrintConfig__WEBPACK_IMPORTED_MODULE_1__.a.instance.table.default).getPrintElementOptionEntity()), n;
+      }
+
+      return __extends(TablePrintElement, _super), TablePrintElement.prototype.getColumns = function () {
+        return this.options.columns;
+      }, TablePrintElement.prototype.getColumnByColumnId = function (t) {
+        return this.options.getColumnByColumnId(t);
+      }, TablePrintElement.prototype.updateDesignViewFromOptions = function () {
+        if (this.designTarget) {
+          var t = this.designTarget.find(".hiprint-printElement-table-content"),
+            e = this.getHtml(this.designPaper);
+          t.html(""), t.append(e[0].target.find(".table-grid-row")), this.printElementType.editable && this.setHitable(), this.setColumnsOptions();
+          // 娓叉煋瀹屽啀澶勭悊鏍峰紡 ==> fix 琛ㄨ剼杈规鍙傛暟璁剧疆闂
+          this.css(this.designTarget, this.getData());
+        }
+      }, TablePrintElement.prototype.css = function (t, e) {
+        if ((this.getField() || !this.options.content) && !this.printElementType.formatter) return _super.prototype.css.call(this, t, e);
+      }, TablePrintElement.prototype.getDesignTarget = function (t) {
+        return this.designTarget = this.getHtml(t)[0].target, this.css(this.designTarget, this.getData()), this.designPaper = t, this.designTarget.find("td").hidroppable({
+          accept: ".rn-draggable-item",
+          onDrop: function onDrop(t, e) {
+          },
+          onDragEnter: function onDragEnter(t, e) {
+            $(e).removeClass("rn-draggable-item");
+          },
+          onDragLeave: function onDragLeave(t, e) {
+            $(e).addClass("rn-draggable-item");
+          }
+        }), this.designTarget;
+      }, TablePrintElement.prototype.getConfigOptions = function () {
+        return _HiPrintConfig__WEBPACK_IMPORTED_MODULE_1__.a.instance.table;
+      }, TablePrintElement.prototype.createTarget = function (t, e, n) {
+        for (var i = $('<div class="hiprint-printElement hiprint-printElement-table" style="position: absolute;"><div class="hiprint-printElement-table-handle"></div><div class="hiprint-printElement-table-content" style="height:100%;width:100%"></span></div>'), o = this.createGridColumnsStructure(n), r = 0; r < o.gridColumns; r++) {
+          o.getByIndex(r).append(this.getTableHtml(e, n));
+        }
+
+        return i.find(".hiprint-printElement-table-content").append(o.target), i;
+      }, TablePrintElement.prototype.createGridColumnsStructure = function (t) {
+        for (var e = $('<div class="hi-grid-row table-grid-row"></div>'), n = 0; n < this.options.getGridColumns(); n++) {
+          var i = $('<div class="tableGridColumnsGutterRow hi-grid-col" style="width:' + 100 / this.options.getGridColumns() + '%;"></div>');
+          e.append(i);
+        }
+
+        var o = this.getGridColumnsFooterFormatter();
+
+        if (o) {
+          var r = $('<div class="hiprint-gridColumnsFooter"></div>');
+          r.append(o(this.options, this.getData(t), t, [])), e.append(r);
+        }
+
+        return new _table_GridColumnsStructure__WEBPACK_IMPORTED_MODULE_8__.a(this.options.getGridColumns(), e);
+      }, TablePrintElement.prototype.createtempEmptyRowsTargetStructure = function (t) {
+        if (this.getField()) return this.createTarget(this.printElementType.title, []);
+        var e = this.createTarget(this.printElementType.title, []).clone();
+        return e.find(".hiprint-printElement-tableTarget tbody tr").remove(), e;
+      }, TablePrintElement.prototype.getTableHtml = function (t, e) {
+        var n, i;
+        if (!this.getField() && this.options.content) return (n = $("<div></div>")).append(this.options.content), (i = n.find("table")).addClass("hiprint-printElement-tableTarget"), i;
+        if (this.printElementType.formatter) return (n = $("<div></div>")).append(this.printElementType.formatter(t)), (i = n.find("table")).addClass("hiprint-printElement-tableTarget"), i;
+        var o = $('<table class="hiprint-printElement-tableTarget" style="border-collapse: collapse;"></table>');
+        let headerList = _table_TableExcelHelper__WEBPACK_IMPORTED_MODULE_6__.a.createTableHead(this.getColumns(), this.options.getWidth() / this.options.getGridColumns());
+        return (this.isNotDesign && ['first', 'none'].includes(this.options.tableHeaderRepeat)) ? o.append(headerList) : o.append(headerList[0]), o.append(_table_TableExcelHelper__WEBPACK_IMPORTED_MODULE_6__.a.createTableRow(this.getColumns(), t, e, this.options, this.printElementType)), "no" == this.options.tableFooterRepeat || _table_TableExcelHelper__WEBPACK_IMPORTED_MODULE_6__.a.createTableFooter(this.printElementType.columns, t, this.options, this.printElementType, e, t).insertBefore(o.find("tbody")), o;
+      }, TablePrintElement.prototype.getEmptyRowTarget = function () {
+        return _table_TableExcelHelper__WEBPACK_IMPORTED_MODULE_6__.a.createEmptyRowTarget(this.getColumns(), this);
+      }, TablePrintElement.prototype.getHtml = function (t, e) {
+        this.createTempContainer();
+        this.isNotDesign = e != void 0;
+        var n = this.getPaperHtmlResult(t, e);
+        return this.removeTempContainer(), n;
+      }, TablePrintElement.prototype.getPaperHtmlResult = function (t, e) {
+        var n = [],
+          i = this.getData(e),
+          o = this.getTableHtml(i, e),
+          r = this.createtempEmptyRowsTargetStructure(e);
+        e ? this.updateTargetWidth(r) : this.updateTargetSize(r), this.css(r, i), this.css(o, i), this.getTempContainer().html(""), this.getTempContainer().append(r);
+        // 椤佃剼瀵艰嚧 鍒嗛〉楂樺害鐨勯棶棰�, -> 鑾峰彇鍒拌〃鏍艰剼楂樺害鍚庣Щ闄ら伩鍏嶉噸澶�
+        var tfh = r.find('tfoot').outerHeight() || 0;
+        r.find('tfoot').remove();
+        for (var a, p = this.getBeginPrintTopInPaperByReferenceElement(t), s = 0, l = !1; !l;) {
+          var u = 0,
+            d = t.getPaperFooter(s);
+          0 == s && p > d && "none" != t.panelPageRule && (p = p - d + t.paperHeader, n.push(new _dto_PaperHtmlResult__WEBPACK_IMPORTED_MODULE_2__.a({
+            target: void 0,
+            printLine: void 0
+          })), u = t.getContentHeight(s) - (p - t.paperHeader), s++ , d = t.getPaperFooter(s));
+          var c = n.length > 0 ? n[n.length - 1].target : void 0,
+            h = this.getRowsInSpecificHeight(e, u > 0 ? u : 0 == s ? d - p : t.getContentHeight(s), r, o, s, c, tfh);
+          l = h.isEnd;
+          if (u < 0) {
+            n[0].target = $(`<div style="position:absolute;background: red;color: white;padding: 0px 4px;">${i18n.__('娌℃湁瓒冲绌洪棿杩涜琛ㄦ牸鍒嗛〉锛岃璋冩暣椤电湁/椤佃剼绾�')}</div>`)
+            n[0].printLine = p;
+            n[0].referenceElement = new _PrintReferenceElement__WEBPACK_IMPORTED_MODULE_4__.a({
+              top: this.options.getTop(),
+              left: this.options.getLeft(),
+              height: this.options.getHeight(),
+              width: this.options.getWidth(),
+              beginPrintPaperIndex: t.index,
+              bottomInLastPaper: p + this.options.lHeight,
+              printTopInPaper: p
+            });
+            n[0].target.css("top", p + "pt");
+            n[0].target.css("left", this.options.displayLeft())
+            break;
+          }
+          var f = void 0;
+          h.target && (h.target.css("left", this.options.displayLeft()), h.target[0].height = "");
+          if (0 == s || u > 0) {
+            (h.target && (a = p, h.target.css("top", p + "pt")),
+            f = l && null != this.options.lHeight ? p + (h.height > this.options.lHeight ? h.height : this.options.lHeight) : p + h.height)
+          } else {
+            (h.target && (a = t.paperHeader, h.target.css("top", t.paperHeader + "pt")), f = t.paperHeader + h.height)
+          }
+          n.push(new _dto_PaperHtmlResult__WEBPACK_IMPORTED_MODULE_2__.a({
+            target: h.target,
+            printLine: f,
+            referenceElement: new _PrintReferenceElement__WEBPACK_IMPORTED_MODULE_4__.a({
+              top: this.options.getTop(),
+              left: this.options.getLeft(),
+              height: this.options.getHeight(),
+              width: this.options.getWidth(),
+              beginPrintPaperIndex: t.index,
+              bottomInLastPaper: f,
+              printTopInPaper: a
+            })
+          })), s++;
+          e && this.updatePanelHeight(f + this.options.getHeight(), t);
+        }
+
+        return n;
+      }, TablePrintElement.prototype.getRowsInSpecificHeight = function (t, e, n, i, o, r, tfh) {
+        var that = this;
+        var a = i.find("tbody"),
+          p = _assets_plugins_hinnn__WEBPACK_IMPORTED_MODULE_3__.a.pt.toPx(e);
+
+        n.find(".hiprint-printElement-tableTarget tbody").html("");
+        // 涓嶆槸鏈�鍚庢樉绀洪〉鑴�
+        if ("last" != this.options.tableFooterRepeat) {
+          n.find(".hiprint-printElement-tableTarget tfoot").remove();
+        }
+        // 浠呴椤垫樉绀鸿〃澶�
+        if ("first" == this.options.tableHeaderRepeat && o > 0) {
+          n.find(".hiprint-printElement-tableTarget thead").remove();
+        } else if ("none" == this.options.tableHeaderRepeat) {
+          // 鏈夋暟鎹紙涓嶆槸design锛�
+          if (t) {
+            n.find(".hiprint-printElement-tableTarget thead").remove();
+          } else {
+            n.find(".hiprint-printElement-tableTarget thead").css("background", "firebrick");
+            n.find(".hiprint-printElement-tableTarget thead tr").css("background", "firebrick");
+          }
+        }
+        var noPaging = "none" == this.panel.panelPageRule;
+        // 涓嶅垎椤�, 涓斾笉鏄璁℃椂, 绉婚櫎 thead
+        var headTr;
+        if (t && noPaging) {
+          var headStyle = n.find(".hiprint-printElement-tableTarget thead").attr("style");
+          headTr = n.find(".hiprint-printElement-tableTarget thead tr").clone();
+          if (headStyle) {
+            headTr.attr("style", headStyle);
+          } else {
+            headTr.css({"background": "#e8e8e8"});
+          }
+          n.find(".hiprint-printElement-tableTarget thead").remove();
+        }
+        var s = n.outerHeight();
+        if (!noPaging && s > p) return {
+          target: void 0,
+          length: 0,
+          height: 0,
+          isEnd: !1
+        };
+        var getGridColumns = this.options.getGridColumns();
+        for (var l = [], u = 0; u < getGridColumns; u++) {
+          for (var d = n.find(".hiprint-printElement-tableTarget:eq(" + u + ")"), c = void 0, h = []; ;) {
+            // 涓嶅垎椤靛鐞�
+            if (noPaging) {
+              var trLen = a.find("tr").length;
+              if (0 == trLen) c = {
+                height: _assets_plugins_hinnn__WEBPACK_IMPORTED_MODULE_3__.a.px.toPt(s),
+                isEnd: !0
+              }, t && this.options.autoCompletion && (this.autoCompletion(p, d, tfh), s = n.outerHeight()); else {
+                var f = a.find("tr:lt(1)");
+                if (h.length == 0 && headTr) {
+                  d.find("tbody").append(headTr);
+                }
+                d.find("tbody").append(f);
+                var g = f.data("rowData");
+                l.push(g), h.push(g), s = n.outerHeight();
+                0 == trLen && (a.prepend(f), l.pop(), h.pop(), c = {
+                  height: _assets_plugins_hinnn__WEBPACK_IMPORTED_MODULE_3__.a.px.toPt(s),
+                  isEnd: !1
+                })
+              }
+            } else {
+              if (s <= p) if (0 == a.find("tr").length) c = {
+                height: _assets_plugins_hinnn__WEBPACK_IMPORTED_MODULE_3__.a.px.toPt(s),
+                isEnd: !0
+              }, t && this.options.autoCompletion && (this.autoCompletion(p, d, tfh), s = d.outerHeight()); else {
+                var f = a.find("tr:lt(1)");
+                if (that.options.rowsColumnsMerge && (o > 0 || u > 0) && h.length == 0) {
+                  f = that.fixMergeSpan(f, a);
+                }
+                d.find("tbody").append(f);
+                var g = f.data("rowData");
+                l.push(g), h.push(g), (((s = d.outerHeight(), "last" == this.options.tableFooterRepeat ? s : s += tfh) > p) || (this.options.maxRows && h.length > +this.options.maxRows)) && (a.prepend(f), l.pop(), h.pop(), s = d.outerHeight(), c = {
+                  height: _assets_plugins_hinnn__WEBPACK_IMPORTED_MODULE_3__.a.px.toPt(s),
+                  isEnd: !1
+                });
+              }
+            }
+
+            if (c) {
+              // 杩欓噷鏄痶able 娌℃湁tfoot, 鍚庨潰鍐嶇湅浠�涔堝師鍥�...
+              if ("last" == this.options.tableFooterRepeat && !c.isEnd) break;
+              if ("no" !== this.options.tableFooterRepeat) {
+                if (noPaging) {
+                  d.find("tbody").append(_table_TableExcelHelper__WEBPACK_IMPORTED_MODULE_6__.a.createTableFooter(this.printElementType.columns, this.getData(t), this.options, this.printElementType, t, h, o).children())
+                } else {
+                  _table_TableExcelHelper__WEBPACK_IMPORTED_MODULE_6__.a.createTableFooter(this.printElementType.columns, this.getData(t), this.options, this.printElementType, t, h, o).insertBefore(d.find("tbody"));
+                }
+                that.css(d, t);
+              }
+              break;
+            }
+          }
+        }
+
+        var m = n.find(".hiprint-printElement-tableTarget tbody tr").length,
+          v = this.getGridColumnsFooterFormatter();
+        v && n.find(this.gridColumnsFooterCss).html(v(this.options, this.getData(t), t, l));
+        s = n.outerHeight();
+        // 褰撴瘡涓�椤垫暟鎹�,閮芥棤娉曞绾宠〃鏍艰鍐呭鏃�:
+        let curRow = a.find("tr:lt(1)");
+        if (m == 0 && curRow.length && g == curRow.data("rowData")) {
+          d.find("tbody").append(curRow);
+          let height = d.find("tbody tr").outerHeight();
+          a.prepend(curRow);
+          return {
+            target: $(`<div style="position:absolute;background: red;color: white;padding: 0px 4px;">${i18n.__('娌℃湁瓒冲绌洪棿,鏄剧ず涓嬫柟鍐呭, 鍙垎椤甸珮搴�')}: `+ p +`px < ${i18n.__('褰撳墠闇�瑕侀珮搴�')}: `+ height +'px</div>').append(curRow.css("background", "blue")),
+            length: m,
+            height: _assets_plugins_hinnn__WEBPACK_IMPORTED_MODULE_3__.a.px.toPt(s),
+            isEnd: !1
+          }
+        }
+        // 鏂逛究璋冭瘯鐪� 鍊�...
+        var zz = 0 == a.find("tr").length ? 0 == m && r ? {
+          target: void 0,
+          length: 0,
+          height: 0,
+          isEnd: !0
+        } : {
+          target: n.clone(),
+          length: m,
+          height: _assets_plugins_hinnn__WEBPACK_IMPORTED_MODULE_3__.a.px.toPt(s),
+          isEnd: !0
+        } : {
+          target: n.clone(),
+          length: m,
+          height: _assets_plugins_hinnn__WEBPACK_IMPORTED_MODULE_3__.a.px.toPt(s),
+          isEnd: !1
+        };
+        return zz;
+      }, TablePrintElement.prototype.fixMergeSpan = function (tr, tbody) {
+        const nextRowMap = new Map();
+        tr.children().each((_, td) => {
+          var field = $(td).attr('field');
+          nextRowMap.set(field, {
+            rowSpan: 1,
+            rowEnd: false
+          })
+          tr.nextAll().each((_, nextTr) => {
+            if ($(nextTr).has(`td[field=${field}][rowspan=0]`).length && !nextRowMap.get(field).rowEnd) {
+              nextRowMap.set(field, { rowSpan: ++nextRowMap.get(field).rowSpan, rowEnd: false })
+            } else {
+              nextRowMap.set(field, { ...nextRowMap.get(field), rowEnd: true })
+            }
+          })
+
+          if ($(td).attr("rowspan") < 1) {
+            $(td).attr("rowspan", nextRowMap.get(field).rowSpan);
+            $(td).css("display", "");
+            if (this.options.rowsColumnsMergeClean) {
+              $(td).text("")
+            }
+          }
+        })
+        return tr;
+      }, TablePrintElement.prototype.autoCompletion = function (t, e, tfh) {
+        var that = this;
+        for (var n, i = this.getEmptyRowTarget(), o = e.outerHeight() + tfh; t > o;) {
+          n = i.clone(), e.find("tbody").append(n), o = e.outerHeight() + tfh;
+          if (that.options.maxRows && e.find("tbody").children().length > that.options.maxRows) {
+            break;
+          }
+        }
+
+        n && n.remove();
+      }, TablePrintElement.prototype.getData = function (t) {
+        if (!t) {
+          // 璁捐鏃惰〃鏍� 娴嬭瘯鏁版嵁
+          try {
+            let testData = this.options.testData || '[{}]';
+            return JSON.parse(testData);
+          } catch (e) {
+            console.log('table testData parse error', e);
+            return [{}];
+          }
+        };
+        var f = this.getField();
+        var e = f ? f.split('.').reduce((a, c) => a ? a[c] : t ? t[c] : "", !1) || "" : "";
+        return e ? JSON.parse(JSON.stringify(e)) : [];
+      }, TablePrintElement.prototype.onResize = function (t, e, n, i, o) {
+        _super.prototype.updateSizeAndPositionOptions.call(this, o, i, n, e), _table_TableExcelHelper__WEBPACK_IMPORTED_MODULE_6__.a.resizeTableCellWidth(this.designTarget, this.getColumns(), this.options.getWidth());
+      }, TablePrintElement.prototype.getReizeableShowPoints = function () {
+        return ["s", "e"];
+      }, TablePrintElement.prototype.design = function (t, e) {
+        var n = this;
+        this.designTarget.hidraggable({
+          handle: this.designTarget.find(".hiprint-printElement-table-handle"),
+          axis: n.options.axis ? n.options.axis : void 0,
+          designTarget: n,
+          onDrag: function onDrag(t, i, o) {
+            n.updateSizeAndPositionOptions(i, o), n.createLineOfPosition(e);
+            _HiPrintlib__WEBPACK_IMPORTED_MODULE_9__.a.instance.changed = !0;
+          },
+          moveUnit: "pt",
+          minMove: _HiPrintConfig__WEBPACK_IMPORTED_MODULE_1__.a.instance.movingDistance,
+          onBeforeDrag: function onBeforeDrag(t) {
+            _HiPrintlib__WEBPACK_IMPORTED_MODULE_9__.a.instance.draging = !0, n.createLineOfPosition(e);
+          },
+          getScale: function getScale() {
+            return n.designPaper.scale || 1;
+          },
+          onStopDrag: function onStopDrag(t) {
+            if (_HiPrintlib__WEBPACK_IMPORTED_MODULE_9__.a.instance.changed) _assets_plugins_hinnn__WEBPACK_IMPORTED_MODULE_3__.a.event.trigger("hiprintTemplateDataChanged_" + n.templateId, "绉诲姩");
+            _HiPrintlib__WEBPACK_IMPORTED_MODULE_9__.a.instance.draging = !1,
+              _HiPrintlib__WEBPACK_IMPORTED_MODULE_9__.a.instance.changed = !1,
+              n.removeLineOfPosition();
+          }
+        }), this.printElementType.editable && this.setHitable(), this.setColumnsOptions(), this.designTarget.hireizeable({
+          showPoints: n.getReizeableShowPoints(),
+          // 鏄惁鏄剧ず瀹介珮box
+          showSizeBox: _HiPrintConfig__WEBPACK_IMPORTED_MODULE_1__.a.instance.showSizeBox,
+          noContainer: !0,
+          onBeforeResize: function onBeforeResize() {
+            _HiPrintlib__WEBPACK_IMPORTED_MODULE_9__.a.instance.draging = !0;
+          },
+          getScale: function getScale() {
+            return n.designPaper.scale || 1
+          },
+          onResize: function onResize(t, i, o, r, a) {
+            n.onResize(t, i, o, r, a), n.hitable && n.hitable.updateColumnGrips(), n.createLineOfPosition(e);
+          },
+          onStopResize: function onStopResize(r) {
+            _assets_plugins_hinnn__WEBPACK_IMPORTED_MODULE_3__.a.event.trigger("hiprintTemplateDataChanged_" + n.templateId, r ? "鏃嬭浆" : "澶у皬");
+            _HiPrintlib__WEBPACK_IMPORTED_MODULE_9__.a.instance.draging = !1, n.removeLineOfPosition();
+          }
+        }), this.bingKeyboardMoveEvent(this.designTarget, e);
+      }, TablePrintElement.prototype.setHitable = function () {
+        var t = this;
+        this.hitable = new _hitable_HiTale__WEBPACK_IMPORTED_MODULE_7__.a({
+          templateId: t.templateId,
+          table: this.designTarget.find(".hiprint-printElement-tableTarget:eq(0)"),
+          rows: this.getColumns(),
+          resizeRow: !1,
+          resizeColumn: !0,
+          fields: this.options.fields,
+          trs: this.designTarget.find(".hiprint-printElement-tableTarget:eq(0)").find("tbody tr"),
+          handle: this.designTarget.find(".hiprint-printElement-tableTarget:eq(0)").find("thead"),
+          isEnableEdit: this.printElementType.editable ? this.printElementType.editable : !0,
+          columnDisplayEditable: this.printElementType.columnDisplayEditable != undefined ? this.printElementType.columnDisplayEditable : !0,
+          columnDisplayIndexEditable: this.printElementType.columnDisplayIndexEditable != undefined ? this.printElementType.columnDisplayIndexEditable : !0,
+          columnResizable: this.printElementType.columnResizable != undefined ? this.printElementType.columnResizable : !0,
+          columnAlignEditable: this.printElementType.columnAlignEditable != undefined ? this.printElementType.columnAlignEditable : !0,
+          isEnableEditText: this.printElementType.columnTitleEditable != undefined ? this.printElementType.columnTitleEditable : !0,
+          isEnableEditField: this.printElementType.isEnableEditField != undefined ? this.printElementType.isEnableEditField : !0,
+          isEnableContextMenu: this.printElementType.isEnableContextMenu != undefined ? this.printElementType.isEnableContextMenu : !0,
+          isEnableInsertRow: this.printElementType.isEnableInsertRow != undefined ? this.printElementType.isEnableInsertRow : !0,
+          isEnableDeleteRow: this.printElementType.isEnableDeleteRow != undefined ? this.printElementType.isEnableDeleteRow : !0,
+          isEnableInsertColumn: this.printElementType.isEnableInsertColumn != undefined ? this.printElementType.isEnableInsertColumn : !0,
+          isEnableDeleteColumn: this.printElementType.isEnableDeleteColumn != undefined ? this.printElementType.isEnableDeleteColumn : !0,
+          isEnableMergeCell: this.printElementType.isEnableMergeCell != undefined ? this.printElementType.isEnableMergeCell : !0
+        }), _assets_plugins_hinnn__WEBPACK_IMPORTED_MODULE_3__.a.event.on("updateTable" + this.hitable.id, function () {
+          t.updateDesignViewFromOptions();
+          _assets_plugins_hinnn__WEBPACK_IMPORTED_MODULE_3__.a.event.trigger("hiprintTemplateDataChanged_" + t.templateId, "璋冩暣琛ㄥご");
+        });
+      }, TablePrintElement.prototype.setColumnsOptions = function () {
+        var t = this;
+        this.designTarget.find(".hiprint-printElement-tableTarget:eq(0)").find("thead td").bind("click.hiprint", function (e) {
+          var n = $(e.target).attr("id") || $(e.target).attr("column-id"),
+            i = t.getColumnByColumnId(n);
+
+          if (i) {
+            var o = t.getPrintElementOptionItemsByName("tableColumn");
+
+            _assets_plugins_hinnn__WEBPACK_IMPORTED_MODULE_3__.a.event.trigger(t.getPrintElementSelectEventKey(), {
+              printElement: t,
+              customOptionsInput: [{
+                title: (i.title || `${i.id}(id)`) + `-${i18n.__('鍒楀睘鎬�')}`,
+                optionItems: o,
+                options: i,
+                callback: function callback(t) {
+                  o.forEach(function (t) {
+                    var e = t.getValue();
+                    if ("title" == t.name && e && !e.trim().endsWith("#") && !e.trim().startsWith("#")) {
+                      var n = e ? e.split("#") : "";
+                      i.title = n[0], n.length > 1 && (i.columnId = i.field = n[1]);
+                      i.columnId && i.target.attr("column-id", i.columnId);
+                      t.target.find("textarea").val(n[0]);
+                      return;
+                    }
+                    i[t.name] = e;
+                  });
+                }
+              }]
+            });
+          } else _assets_plugins_hinnn__WEBPACK_IMPORTED_MODULE_3__.a.event.trigger(t.getPrintElementSelectEventKey(), {
+            printElement: t
+          });
+        });
+      }, TablePrintElement.prototype.filterOptionItems = function (t) {
+        var e = _super.prototype.filterOptionItems.call(this, t);
+
+        return this.printElementType.editable && 1 == this.options.columns.length ? e : t.filter(function (t) {
+          return "columns" != t.name;
+        });
+      }, TablePrintElement.prototype.getFooterFormatter = function () {
+        var footerFormatter = void 0;
+        if (this.printElementType.footerFormatter && (footerFormatter = this.printElementType.footerFormatter), this.options.footerFormatter) try {
+          var s = "footerFormatter=" + this.options.footerFormatter;
+          eval(s);
+        } catch (t) {
+          console.log(t);
+        }
+        return footerFormatter;
+      }, TablePrintElement.prototype.getGridColumnsFooterFormatter = function () {
+        var gridColumnsFooterFormatter = void 0;
+        if (this.printElementType.gridColumnsFooterFormatter && (gridColumnsFooterFormatter = this.printElementType.gridColumnsFooterFormatter), this.options.gridColumnsFooterFormatter) try {
+          var s = "gridColumnsFooterFormatter=" + this.options.gridColumnsFooterFormatter;
+          eval(s);
+        } catch (t) {
+          console.log(t);
+        }
+        return gridColumnsFooterFormatter;
+      }, TablePrintElement;
+    }(_BasePrintElement__WEBPACK_IMPORTED_MODULE_0__.a);
+}, function (t, e, n) {
+  "use strict";
+
+  var i = function () {
+      return function (t) {
+        this.table = t.table, this.templateId = t.templateId, this.fields = t.fields, this.isEnableEdit = t.isEnableEdit, this.trs = t.trs, this.resizeRow = t.resizeRow, this.resizeColumn = t.resizeColumn, this.isEnableEditField = t.isEnableEditField, this.isEnableContextMenu = t.isEnableContextMenu, this.isEnableEditField = t.isEnableEditField, this.isEnableInsertRow = t.isEnableInsertRow, this.isEnableDeleteRow = t.isEnableDeleteRow, this.isEnableInsertColumn = t.isEnableInsertColumn, this.isEnableDeleteColumn = t.isEnableDeleteColumn, this.isEnableMergeCell = t.isEnableMergeCell, this.columnResizable = t.columnResizable, this.columnAlignEditable = t.columnAlignEditable;
+      };
+    }(),
+    o = function () {
+      function t(t) {
+        this.options = new i(t);
+      }
+
+      return t.prototype.enableEidt = function () {
+        this.options.isEnableEdit;
+      }, t.prototype.disableEdit = function () {
+        this.options.isEnableEdit;
+      }, t.prototype.isEnableEdit = function () {
+        return this.options.isEnableEdit;
+      }, t;
+    }(),
+    r = n(0),
+    a = function () {
+      return function (t) {
+        this.cell = t.cell, this.link = t.link, this.linkType = t.linkType, this.bottom = t.bottom, this.rightMost = t.rightMost, this.rowLevel = t.rowLevel, this.columnLevel = t.columnLevel, this.indexInTableGridRow = t.indexInTableGridRow, this.indexInTableGridColumn = t.indexInTableGridColumn;
+      };
+    }(),
+    p = n(10),
+    s = function () {
+      function t() {
+      }
+
+      return t.getLeftTableCell = function (t, e) {
+        var n;
+        return t.forEach(function (t, i) {
+          t.cell && i < e && (n = t.cell);
+        }), n;
+      }, t.getIndex = function (t, e) {
+        var n;
+        return t.forEach(function (t, i) {
+          t.cell && t.cell.id == e && (n = i);
+        }), n;
+      }, t;
+    }(),
+    l = n(13),
+    u = n(11),
+    d = function () {
+      return function (t, e) {
+        this.target = t, this.grips = e;
+      };
+    }(),
+    c = function () {
+      return function (t) {
+        this.target = t;
+      };
+    }(),
+    h = function () {
+      return function () {
+        this.rowColumns = [];
+      };
+    }(),
+    f = function () {
+      function t() {
+      }
+
+      return t.getColumnsWidth = function (e, n) {
+        var i = {},
+          o = t.allAutoWidth(e);
+        return e.rowColumns.forEach(function (t) {
+          var e = n - 0,
+            r = t.width / o * (e > 0 ? e : 0);
+          i[t.id] = r;
+        }), i;
+      }, t.resizeTableCellWeight = function (t) {
+        t.forEach(function (t) {
+          t.columns.forEach(function (t) {
+            t.hasWidth && $(t.getTarget()).css("width", t.width + "pt");
+          });
+        });
+      }, t.allAutoWidth = function (t) {
+        var e = 0;
+        return t.rowColumns.forEach(function (t) {
+          e += t.width;
+        }), e;
+      }, t.reconsitutionTableColumnTree = function (t, e, n) {
+        for (var i = e || new h(), o = function o(e) {
+          i.totalLayer = e + 1, i[e] = t[e].columns, i.rowColumns = i.rowColumns.concat(i[e].filter(function (n) {
+            return n.rowspan == t.length - e;
+          }));
+        }, r = 0; r < t.length; r++) {
+          o(r);
+        }
+
+        return i;
+      }, t;
+    }(),
+    g = n(2),
+    m = function () {
+      function t(t) {
+        this.signature = "HiTresizer", this.hitable = t, this.rows = t.rows, this.target = t.target;
+      }
+
+      return t.prototype.init = function () {
+        this.addResizeRowAndColumn(), this.hitable.optionsCoat.options.resizeColumn && this.createColumnGrips(), this.hitable.optionsCoat.options.resizeRow && this.createRowGrips();
+      }, t.prototype.resizeTableCellWidth = function () {
+        f.resizeTableCellWeight(this.rows);
+      }, t.prototype.addResizeRowAndColumn = function () {
+      }, t.prototype.createColumnGrips = function () {
+        var t = this,
+          e = this,
+          n = [],
+          i = $('<div class="columngrips"/>');
+        i.width(this.target.width()), this.rows.forEach(function (o) {
+          (o.columns || []).filter(function (column) {return column.checked}).forEach(function (o, a) {
+            if (o.getTarget().attr("haswidth")) {
+              var p = $('<div class="columngrip"><div class="gripResizer"></div></div>');
+              i.append(p);
+              var s = new c(p);
+              n.length > 0 && (n[n.length - 1].nextGrip = s), n.push(s), t.syncGrips(o, s), $(p).hidraggable({
+                axis: "h",
+                onDrag: function onDrag(t, e, n) {
+                },
+                moveUnit: "pt",
+                minMove: 1,
+                getScale: function getScale() {
+                  return ($('.hiprint-printPaper')[0].style.transform && parseFloat($('.hiprint-printPaper')[0].style.transform.slice(6, -1))) || 1;
+                },
+                onBeforeDrag: function onBeforeDrag(t) {
+                  if (g.a.instance.draging = !0, !s.nextGrip) return !1;
+                  e.dragingGrip = s, e.dragingGrip.left = parseFloat(e.dragingGrip.target.css("left").replace("px", "")), s.target.addClass("columngripDraging");
+                },
+                onStopDrag: function onStopDrag(n) {
+                  g.a.instance.draging = !1;
+                  var i = parseFloat(e.dragingGrip.target.css("left").replace("px", "")),
+                    o = r.a.px.toPt(i - e.dragingGrip.left);
+                  // 琛ㄦ牸鍒楀闄愬埗 鏈�灏忓搴︿负10pt
+                  if (s.cell.width + o < 10) {
+                    o = 10 - s.cell.width
+                  } else if (s.nextGrip.cell.width - o < 10) {
+                    o = s.nextGrip.cell.width - 10
+                  }
+                  s.cell.width = s.cell.width + o, s.nextGrip.cell.width = s.nextGrip.cell.width - o, t.resizeTableCellWidth(), s.target.removeClass("columngripDraging"), e.updateColumnGrips();
+                }
+              });
+            }
+          });
+        }), this.target.before(i), this.cgripContariner = new d(i, n);
+      }, t.prototype.updateColumnGrips = function () {
+        this.cgripContariner && (this.cgripContariner.target.remove(), this.createColumnGrips());
+      }, t.prototype.updateRowGrips = function () {
+        this.rgripContariner && (this.rgripContariner.target.remove(), this.createRowGrips());
+      }, t.prototype.createRowGrips = function () {
+        var t = this,
+          e = this,
+          n = [],
+          i = $('<div class="rowgrips"/>');
+        this.rows.forEach(function (o, a) {
+          var p = $('<div class="rowgrip"><div class="gripResizer"></div></div>');
+          i.append(p);
+          var s = new c(p);
+          n.push(s), a > 0 && a < t.rows.length && $(p).hidraggable({
+            axis: "v",
+            onDrag: function onDrag(t, e, n) {
+            },
+            moveUnit: "pt",
+            minMove: 1,
+            onBeforeDrag: function onBeforeDrag(t) {
+              e.dragingGrip = s, e.dragingGrip.top = parseFloat(e.dragingGrip.target.css("top").replace("px", "")), s.target.addClass("rowgripDraging");
+            },
+            onStopDrag: function onStopDrag(t) {
+              var n = parseFloat(e.dragingGrip.target.css("top").replace("px", "")),
+                i = r.a.px.toPt(n - e.dragingGrip.top + e.rows[a].columns[0].getTarget().height());
+              e.rows[a].columns[0].getTarget().css("height", i + "pt"), e.syncRowGrips(), s.target.removeClass("rowgripDraging");
+            }
+          });
+        }), this.target.before(i), this.rgripContariner = new d(i, n), this.syncRowGrips();
+      }, t.prototype.syncGrips = function (t, e) {
+        var n = t.getTarget();
+        var scale = ($('.hiprint-printPaper')[0].style.transform && parseFloat($('.hiprint-printPaper')[0].style.transform.slice(6, -1))) || 1;
+        e.cell = t, e.target.css({
+          left: (n.offset().left / scale) - (this.target.offset().left / scale) + n.outerWidth(!1),
+          height: 30
+        });
+      }, t.prototype.syncRowGrips = function () {
+        var t = this;
+        this.rgripContariner.target.height(this.target.height()), this.rows.forEach(function (e, n) {
+          var i = e.columns[0].getTarget();
+          t.rgripContariner.grips[n].target.css({
+            top: i.offset().top - t.target.offset().top + i.outerHeight(!1),
+            width: 30
+          });
+        });
+      }, t.prototype.addResizerHeadRow = function () {
+        this.target.find("thead").prepend();
+      }, t;
+    }(),
+    v = function () {
+      function t() {
+      }
+
+      return t.prototype.init = function () {
+      }, t.prototype.updateRowGrips = function () {
+      }, t.prototype.updateColumnGrips = function () {
+      }, t;
+    }();
+
+  n.d(e, "a", function () {
+    return y;
+  });
+
+  var y = function () {
+    function t(t) {
+      this.id = u.a.createId(), this.optionsCoat = new o(t), this.handle = t.handle, this.target = t.table, this.initRows(t.rows), this.init(t), this.tableCellSelector = new p.a(this.rows, this.target), this.resizer = this.optionsCoat.options.columnResizable ? new m(this) : new v(), this.resizer.init();
+    }
+
+    return t.prototype.insertRow = function (t, e, n) {
+      var i = e || this.tableCellSelector.getSingleSelect(),
+        o = i.cell,
+        a = this.rows[i.rowIndex],
+        p = i.rowIndex,
+        s = this.getCellGrid(),
+        u = new l.a();
+      if (u.init(this.optionsCoat, void 0, a.isHead), n && u.getTarget().addClass(n), "above" == t) s[p].forEach(function (t) {
+        var e = t.link ? t.link : t.cell,
+          n = e.width / e.colspan;
+
+        if (0 == t.columnLevel) {
+          var i = u.createTableCell();
+          i.width = n, u.insertCellToLast(i);
+        } else {
+          if ("column" == t.linkType) {
+            var o = t.link.getTarget();
+            t.link.rowspan += 1, o.attr("rowspan", t.link.rowspan);
+          }
+
+          t.linkType;
+        }
+      }), this.rows.splice(p, 0, u), a.getTarget().before(u.getTarget()), r.a.event.trigger("newRow" + this.id, u); else {
+        var d = p + o.rowspan - 1;
+        s[d].forEach(function (t) {
+          var e = t.link ? t.link : t.cell,
+            n = e.width / e.colspan;
+
+          if (t.bottom) {
+            var i = u.createTableCell();
+            i.width = n, u.insertCellToLast(i);
+          } else {
+            if (t.cell) {
+              var o = t.cell.getTarget();
+              t.cell.rowspan += 1, o.attr("rowspan", t.cell.rowspan);
+            }
+
+            if ("column" == t.linkType) {
+              o = t.link.getTarget();
+              t.link.rowspan += 1, o.attr("rowspan", t.link.rowspan);
+            }
+          }
+        }), this.rows.splice(d + 1, 0, u), this.rows[d].getTarget().after(u.getTarget()), r.a.event.trigger("newRow" + this.id, u);
+      }
+    }, t.prototype.insertColumn = function (t, e, n, i) {
+      var o = this,
+        a = this.rows.concat(this.trRows),
+        p = e || this.tableCellSelector.getSingleSelect(),
+        s = p.cell,
+        l = p.rowIndex,
+        u = this.getCellGrid(a),
+        d = u[l].filter(function (t) {
+          return t.cell && t.cell.id == s.id || t.link && t.link.id == s.id;
+        });
+
+      if ("left" == t) {
+        var c = d[0].indexInTableGridRow;
+        u.forEach(function (t, e) {
+          var p = t[c],
+            s = t.filter(function (t, e) {
+              return e >= c && t.cell;
+            });
+
+          if (0 == p.rowLevel) {
+            var l = a[e],
+              u = a[e].createTableCell();
+            n && u.getTarget().addClass(n), null != i && (u.width = i), s.length ? l.insertToTargetCellLeft(s[0].cell, u) : l.insertCellToLast(u), r.a.event.trigger("newCell" + o.id, u);
+          } else if ("row" == p.linkType) {
+            var d = p.link.getTarget();
+            p.link.colspan += 1, d.attr("colspan", p.link.colspan);
+          }
+        });
+      } else {
+        var h = d[d.length - 1].indexInTableGridRow;
+        u.forEach(function (t, e) {
+          var p = t[h],
+            s = t.filter(function (t, e) {
+              return e <= h && t.cell;
+            });
+
+          if (p.rightMost) {
+            var l = a[e],
+              u = l.createTableCell();
+            n && u.getTarget().addClass(n), null != i && (u.width = i), s.length ? l.insertToTargetCellRight(s[s.length - 1].cell, u) : l.insertCellToFirst(u), r.a.event.trigger("newCell" + o.id, u);
+          } else {
+            var d = p.link || p.cell;
+
+            if ("row" == p.linkType) {
+              var c = d.getTarget();
+              d.colspan += 1, c.attr("colspan", d.colspan);
+            }
+
+            if (p.cell) {
+              c = d.getTarget();
+              d.colspan += 1, c.attr("colspan", d.colspan);
+            }
+          }
+        });
+      }
+    }, t.prototype.deleteRow = function () {
+      var t = this,
+        e = this.tableCellSelector.getSingleSelect(),
+        n = (e.cell, this.rows[e.rowIndex], e.rowIndex),
+        i = this.getCellGrid(),
+        o = this.rows[n];
+      i[n].forEach(function (e, r) {
+        if (e.cell) {
+          if (1 == e.cell.rowspan) o.removeCell(e.cell); else {
+            o.removeCell(e.cell);
+            var a = i[n + 1].filter(function (t, e) {
+                return t.cell && e > r;
+              }),
+              p = t.rows[n + 1],
+              s = p.createTableCell(e.cell.rowspan - 1, e.cell.colspan);
+            a.length ? p.insertToTargetCellLeft(a[0].cell, s) : p.insertCellToLast(s);
+          }
+        } else if ("column" == e.linkType) {
+          var l = e.link;
+          l.rowspan -= 1, l.getTarget().attr("rowspan", l.rowspan);
+        }
+      }), o.getTarget().remove(), this.rows.splice(n, 1);
+    }, t.prototype.deleteColums = function () {
+      var t = this.rows.concat(this.trRows),
+        e = this.tableCellSelector.getSingleSelect(),
+        n = e.cell,
+        i = e.rowIndex,
+        o = this.getCellGrid(t),
+        r = o[i].filter(function (t) {
+          return t.cell && t.cell.id == n.id || t.link && t.link.id == n.id;
+        })[0].indexInTableGridRow;
+      o.forEach(function (e, n) {
+        var i = e[r];
+        i.cell ? 1 == i.cell.colspan ? t[n].removeCell(i.cell) : (i.cell.colspan -= 1, i.cell.getTarget().attr("colspan", i.cell.colspan)) : "row" == i.linkType && (i.link.colspan -= 1, i.link.getTarget().attr("colspan", i.link.colspan));
+      });
+    }, t.prototype.mergeCell = function () {
+      var t = this,
+        e = this.tableCellSelector.getSelectedCells();
+
+      if (0 != e.length) {
+        var n = e[0][0].cell;
+        e.forEach(function (i, o) {
+          i.forEach(function (i, r) {
+            0 == o ? 0 != r && (n.colspan += i.cell.colspan, t.rows[i.rowIndex].removeCell(i.cell)) : t.rows[i.rowIndex].removeCell(i.cell), 0 == r && e[0][0].rowIndex + n.rowspan - 1 < i.rowIndex && (n.rowspan += i.cell.rowspan);
+          });
+        }), n.getTarget().attr("colspan", n.colspan), n.getTarget().attr("rowspan", n.rowspan), this.tableCellSelector.setSingleSelect(e[0][0]);
+      }
+    }, t.prototype.splitCell = function () {
+      var t = this.tableCellSelector.getSingleSelect(),
+        e = this.getCellGrid(),
+        n = s.getIndex(e[t.rowIndex], t.cell.id);
+
+      if (t) {
+        for (var i = t.rowIndex; i < t.rowIndex + t.cell.rowspan; i++) {
+          for (var o = this.rows[i], r = i == t.rowIndex ? t.cell : s.getLeftTableCell(e[i], n), a = 0; a < t.cell.colspan; a++) {
+            i == t.rowIndex && 0 == a || (r ? o.insertToTargetCellRight(r, o.createTableCell()) : o.insertCellToFirst(o.createTableCell()));
+          }
+        }
+
+        t.cell.rowspan = 1, t.cell.colspan = 1, t.cell.getTarget().attr("colspan", t.cell.colspan), t.cell.getTarget().attr("rowspan", t.cell.rowspan);
+      }
+    }, t.prototype.init = function (t) {
+      var e = this;
+      $(this.target).addClass("hitable"), this.optionsCoat.onBeforEdit = function (n) {
+        if (e.optionsCoat.options.onBeforEdit && !1 === t.onBeforEdit(n)) return !1;
+        return e.optionsCoat.editingCell && e.optionsCoat.editingCell.endEdit(), !0;
+      }, $(this.target).mousedown(function (t) {
+        e.optionsCoat.isLeftMouseButtonDown = !0;
+      }), $(this.target).mouseup(function (t) {
+        e.optionsCoat.isLeftMouseButtonDown = !1;
+      }), this.initContext(), this.target.on("mousemove", function (t) {
+        1 === t.buttons && e.tableCellSelector.multipleSelectByXY(t.pageX, t.pageY);
+      }).on("mousedown", function (t) {
+        1 === t.buttons && e.tableCellSelector.singleSelectByXY(t.pageX, t.pageY);
+      });
+    }, t.prototype.initRows = function (t) {
+      var e = this;
+
+      if (this.trRows = [], t) {
+        this.rows = t, t.forEach(function (t, n) {
+          t.init(e.optionsCoat, e.target.find("tr:eq(" + n + ")"), !0);
+        });
+        var n = this.optionsCoat.options.trs;
+        n && this.initRowsByTrs(n).forEach(function (t) {
+          e.trRows.push(t);
+        });
+      } else this.rows = this.initRowsByTrs(this.target.find("tr"));
+    }, t.prototype.initRowsByTrs = function (t) {
+      var e = this;
+      return t.map(function (t, n) {
+        var i = new l.a();
+        return i.init(e.optionsCoat, $(n)), i;
+      }).get();
+    }, t.prototype.enableEidt = function () {
+      this.optionsCoat.enableEidt();
+    }, t.prototype.disableEdit = function () {
+      this.optionsCoat.disableEdit();
+    }, t.prototype.getCellGrid = function (t) {
+      var e = t || this.rows,
+        n = this.getColumnStep(),
+        i = new Array();
+      return e.forEach(function (t, e) {
+        t.columns.forEach(function (t, o) {
+          for (var r = 0; r < t.colspan; r++) {
+            for (var p = 0, s = !1; p < n && !s;) {
+              if (i[e] = i[e] || [], i[e][p]) ; else {
+                i[e][p] = new a({
+                  cell: 0 == r ? t : void 0,
+                  link: 0 != r ? t : void 0,
+                  linkType: r > 0 ? "row" : void 0,
+                  rightMost: r == t.colspan - 1 || void 0,
+                  bottom: 0 == t.rowspan - 1,
+                  rowLevel: r,
+                  columnLevel: 0,
+                  indexInTableGridRow: p,
+                  indexInTableGridColumn: e
+                });
+
+                for (var l = e + 1, u = 1; u < t.rowspan; u++) {
+                  i[l] = i[l] || [], i[l][p] = new a({
+                    cell: void 0,
+                    link: t,
+                    linkType: r > 0 ? "rowColumn" : "column",
+                    rightMost: r == t.colspan - 1 || void 0,
+                    bottom: u == t.rowspan - 1,
+                    rowLevel: r,
+                    columnLevel: u,
+                    indexInTableGridRow: p,
+                    indexInTableGridColumn: l
+                  }), l += 1;
+                }
+
+                s = !0;
+              }
+              p++;
+            }
+          }
+        });
+      }), i;
+    }, t.prototype.setAlign = function (t) {
+      var e = this.tableCellSelector.getSingleSelect();
+      e && e.cell.setAlign(t);
+    }, t.prototype.setVAlign = function (t) {
+      var e = this.tableCellSelector.getSingleSelect();
+      e && e.cell.setVAlign(t);
+    }, t.prototype.getColumnStep = function (t) {
+      var e = 0;
+      return this.rows.length && this.rows[t || 0].columns.forEach(function (t) {
+        e += t.colspan;
+      }), e;
+    }, t.prototype.initContext = function () {
+      var t = this;
+      if (!this.optionsCoat.options.isEnableContextMenu) return !1;
+      $(this.handle).hicontextMenu({
+        menus: [{
+          text: `${i18n.__('鍦ㄤ笂鏂规彃鍏ヨ')}`,
+          enabled: this.optionsCoat.options.isEnableInsertRow,
+          disable: function disable() {
+            return !t.tableCellSelector.getSingleSelect();
+          },
+          callback: function callback() {
+            t.insertRow("above"), t.resizer.updateRowGrips(), r.a.event.trigger("updateTable" + t.id);
+          }
+        }, {
+          text: `${i18n.__('鍦ㄤ笅鏂规彃鍏ヨ')}`,
+          borderBottom: !0,
+          enabled: this.optionsCoat.options.isEnableInsertRow,
+          disable: function disable() {
+            return !t.tableCellSelector.getSingleSelect();
+          },
+          callback: function callback() {
+            t.insertRow("below"), t.resizer.updateRowGrips(), r.a.event.trigger("updateTable" + t.id);
+          }
+        }, {
+          text: `${i18n.__('鍚戝乏鏂规彃鍏ュ垪')}`,
+          enabled: this.optionsCoat.options.isEnableInsertColumn,
+          disable: function disable() {
+            return !t.tableCellSelector.getSingleSelect();
+          },
+          callback: function callback() {
+            t.insertColumn("left"), t.resizer.updateColumnGrips(), r.a.event.trigger("updateTable" + t.id);
+          }
+        }, {
+          text: `${i18n.__('鍚戝彸鏂规彃鍏ュ垪')}`,
+          enabled: this.optionsCoat.options.isEnableInsertColumn,
+          disable: function disable() {
+            return !t.tableCellSelector.getSingleSelect();
+          },
+          borderBottom: !0,
+          callback: function callback() {
+            t.insertColumn("right"), t.resizer.updateColumnGrips(), r.a.event.trigger("updateTable" + t.id);
+          }
+        }, {
+          text: `${i18n.__('鍒犻櫎琛�')}`,
+          enabled: this.optionsCoat.options.isEnableDeleteRow,
+          disable: function disable() {
+            return !t.tableCellSelector.getSingleSelect() || t.rows.length <= 1;
+          },
+          callback: function callback() {
+            t.deleteRow(), t.resizer.updateRowGrips(), r.a.event.trigger("updateTable" + t.id);
+          }
+        }, {
+          text: `${i18n.__('鍒犻櫎鍒�')}`,
+          borderBottom: !0,
+          enabled: this.optionsCoat.options.isEnableDeleteColumn,
+          disable: function disable() {
+            return !t.tableCellSelector.getSingleSelect() || (t.rows.length > 0 && t.rows[0].columns.length <= 1);
+          },
+          callback: function callback() {
+            t.deleteColums(), t.resizer.updateColumnGrips(), r.a.event.trigger("updateTable" + t.id);
+          }
+        }, {
+          text: `${i18n.__('瀵归綈')}`,
+          borderBottom: !0,
+          enabled: this.optionsCoat.options.columnAlignEditable,
+          menus: [{
+            text: `${i18n.__('宸�')}`,
+            callback: function callback() {
+              t.setAlign("left");
+            }
+          }, {
+            text: `${i18n.__('宸﹀彸灞呬腑')}`,
+            callback: function callback() {
+              t.setAlign("center");
+            }
+          }, {
+            text: `${i18n.__('鍙�')}`,
+            callback: function callback() {
+              t.setAlign("right");
+            }
+          }, {
+            text: `${i18n.__('榛樿')}`,
+            borderBottom: !0,
+            callback: function callback() {
+              t.setAlign("");
+            }
+          }, {
+            text: `${i18n.__('涓�')}`,
+            callback: function callback() {
+              t.setVAlign("top");
+            }
+          }, {
+            text: `${i18n.__('鍨傜洿灞呬腑')}`,
+            callback: function callback() {
+              t.setVAlign("middle");
+            }
+          }, {
+            text: `${i18n.__('涓�')}`,
+            callback: function callback() {
+              t.setVAlign("bottom");
+            }
+          }, {
+            text: `${i18n.__('榛樿')}`,
+            callback: function callback() {
+              t.setVAlign("");
+            }
+          }]
+        }, {
+          text: `${i18n.__('鍚堝苟鍗曞厓鏍�')}`,
+          enabled: this.optionsCoat.options.isEnableMergeCell,
+          disable: function disable() {
+            return t.tableCellSelector.getSingleSelect();
+          },
+          callback: function callback() {
+            t.mergeCell(), r.a.event.trigger("updateTable" + t.id);
+          }
+        }, {
+          text: `${i18n.__('瑙e紑鍗曞厓鏍�')}`,
+          enabled: this.optionsCoat.options.isEnableMergeCell,
+          disable: function disable() {
+            var e = t.tableCellSelector.getSingleSelect();
+            return !e || 1 == e.cell.rowspan && 1 == e.cell.colspan;
+          },
+          callback: function callback() {
+            t.splitCell(), r.a.event.trigger("updateTable" + t.id);
+          }
+        }].filter(function (t) {
+          return t.enabled;
+        })
+      });
+    }, t.prototype.getTableWidth = function () {
+      return r.a.px.toPt(this.target.outerWidth(!1));
+    }, t.prototype.updateColumnGrips = function () {
+      this.resizer.updateColumnGrips();
+    }, t.prototype.updateRowGrips = function () {
+      this.resizer.updateRowGrips();
+    }, t;
+  }();
+}, function (t, e, n) {
+  "use strict";
+
+  n.d(e, "a", function () {
+    return i;
+  });
+
+  var i = function () {
+    return function (t, e, n) {
+      this.tid = t, this.options = e, this.printElementType = n;
+    };
+  }();
+}, function (t, e, n) {
+  "use strict";
+
+  var i = n(3),
+    o = n(12),
+    r = (function () {
+    }(), function () {
+      return function (t) {
+        this.width = t.width, this.title = t.title, this.field = t.field, this.checked = t.checked, this.columnId = t.columnId, this.fixed = !1, this.rowspan = t.rowspan || 1, this.colspan = t.colspan || 1, this.align = t.align, this.halign = t.halign, this.vAlign = t.vAlign, this.renderFormatter = t.renderFormatter, this.formatter2 = t.formatter2, this.styler2 = t.styler2, this.stylerHeader = t.stylerHeader, this.tableColumnHeight = t.tableColumnHeight, this.tableTextType = t.tableTextType, this.tableBarcodeMode = t.tableBarcodeMode, this.tableQRCodeLevel = t.tableQRCodeLevel, this.tableSummaryTitle = t.tableSummaryTitle, this.tableSummaryText = t.tableSummaryText, this.tableSummaryColspan = t.tableSummaryColspan, this.tableSummary = t.tableSummary, this.tableSummaryAlign = t.tableSummaryAlign, this.tableSummaryNumFormat = t.tableSummaryNumFormat, this.tableSummaryFormatter = t.tableSummaryFormatter, this.showCodeTitle = t.showCodeTitle, this.upperCase = t.upperCase;
+      };
+    }()),
+    a = n(5);
+  n.d(e, "a", function () {
+    return l;
+  });
+
+  var _p,
+    s = (_p = function p(t, e) {
+      return (_p = Object.setPrototypeOf || _instanceof({
+        __proto__: []
+      }, Array) && function (t, e) {
+        t.__proto__ = e;
+      } || function (t, e) {
+        for (var n in e) {
+          e.hasOwnProperty(n) && (t[n] = e[n]);
+        }
+      })(t, e);
+    }, function (t, e) {
+      function n() {
+        this.constructor = t;
+      }
+
+      _p(t, e), t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype, new n());
+    }),
+    l = function (t) {
+      function e(e, n) {
+        var i = this;
+        (e = e || {}, (i = t.call(this, e) || this).lHeight = e.lHeight, i.autoCompletion = e.autoCompletion, i.tableFooterRepeat = e.tableFooterRepeat, n) && (i.columns = [], n.editable && e.columns && e.columns.length ? e.columns.forEach(function (t) {
+          var e = [];
+          t.forEach(function (t) {
+            var i = new r(t),
+              o = n.getColumnByColumnId(i.columnId),
+              p = o ? $.extend(o, i) : new a.a(i);
+            e.push(p);
+          }), i.columns.push(new o.a(e));
+        }) : n.columns.forEach(function (t) {
+          i.columns.push(new o.a(t));
+        }));
+        return i;
+      }
+
+      return s(e, t), e.prototype.getColumnByColumnId = function (t) {
+        return this.makeColumnObj()[t];
+      }, e.prototype.makeColumnObj = function () {
+        var t = {};
+        return this.columns && this.columns.forEach(function (e) {
+          e.columns.forEach(function (e) {
+            (e.id || e.columnId) && (t[e.id || e.columnId] = e);
+          });
+        }), t;
+      }, e.prototype.getGridColumns = function () {
+        return this.gridColumns || 1;
+      }, e.prototype.getPrintElementOptionEntity = function () {
+        var e = t.prototype.getPrintElementOptionEntity.call(this);
+        e.fields = this.fields;
+        return this.columns && (e.columns = [], this.columns.forEach(function (t) {
+          var n = t.getPrintElementOptionEntity().map(function (t) {
+            return new r(t);
+          });
+          e.columns.push(n);
+        })), e;
+      }, e;
+    }(i.a);
+}, function (t, e, n) {
+  "use strict";
+
+  n.d(e, "a", function () {
+    return i;
+  });
+
+  var i = function () {
+    return function () {
+      this.rowColumns = [];
+    };
+  }();
+}, function (t, e, n) {
+  "use strict";
+
+  n.d(e, "a", function () {
+    return i;
+  });
+
+  var i = function () {
+    function t(t, e) {
+      this.gridColumns = t, this.target = e;
+    }
+
+    return t.prototype.getByIndex = function (t) {
+      return this.target.find(".hi-grid-col:eq(" + t + ")");
+    }, t;
+  }();
+}, function (t, e, n) {
+  t.exports = n(33);
+}, function (t, e) {
+  !function (t) {
+    function e(e) {
+      var n = t.data(e.data.target, "hidraggable"),
+        i = n.options,
+        o = n.proxy,
+        r = e.data,
+        a = r.startLeft + (e.pageX - r.startX) / (n.options.getScale() || 1),
+        p = r.startTop + (e.pageY - r.startY) / (n.options.getScale() || 1);
+      o && (o.parent()[0] == document.body ? (a = null != i.deltaX && null != i.deltaX ? e.pageX + i.deltaX : e.pageX - e.data.offsetWidth, p = null != i.deltaY && null != i.deltaY ? e.pageY + i.deltaY : e.pageY - e.data.offsetHeight) : (null != i.deltaX && null != i.deltaX && (a += e.data.offsetWidth + i.deltaX), null != i.deltaY && null != i.deltaY && (p += e.data.offsetHeight + i.deltaY))),
+      e.data.parent != document.body && (a += t(e.data.parent).scrollLeft(), p += t(e.data.parent).scrollTop()),
+        "h" == i.axis ? r.left = a : "v" == i.axis ? r.top = p : (e.shiftKey && e.altKey ? r.top = p : e.shiftKey ? r.left = a : (r.left = a, r.top = p));
+    }
+
+    function n(e) {
+      var n = t.data(e.data.target, "hidraggable"),
+        i = n.options,
+        o = n.proxy;
+      o || (o = t(e.data.target)), o.css({
+        left: t.fn.dragLengthC(e.data.left, i),
+        top: t.fn.dragLengthC(e.data.top, i)
+      }), t("body").css("cursor", i.cursor);
+    }
+
+    function i(i) {
+      t.fn.hidraggable.isDragging = !0;
+      var o = t.data(i.data.target, "hidraggable"),
+        r = o.options,
+        a = t(".hidroppable").filter(function () {
+          return i.data.target != this;
+        }).filter(function () {
+          var e = t.data(this, "hidroppable").options.accept;
+          return !e || t(e).filter(function () {
+            return this == i.data.target;
+          }).length > 0;
+        });
+      o.hidroppables = a;
+      var p = o.proxy;
+      return p || (r.proxy ? (p = "clone" == r.proxy ? t(i.data.target).clone().insertAfter(i.data.target) : r.proxy.call(i.data.target, i.data.target), o.proxy = p) : p = t(i.data.target)), p.css("position", "absolute"), e(i), n(i), r.onStartDrag.call(i.data.target, i), !1;
+    }
+
+    function createVerLine(op, cp, t, tt, h, pc) {
+      if (Math.abs(op[t] - cp[tt]) <= HIPRINT_CONFIG.adsorbLineMin) {
+        if (op.v.length) {
+          op.v.css("left", op[t] + "pt");
+        } else {
+          op.v = $("<div class='verLine id-" + op.id + "'></div>")
+          op.v.css("height", h + "pt");
+          op.v.css("left", op[t] + "pt");
+          pc.append(op.v);
+        }
+      } else {
+        op.v && op.v.remove();
+      }
+    }
+
+    function removeVerLine(op) {
+      if (op) op.v && op.v.remove();
+      $(".verLine").remove();
+    }
+
+    function createHorLine(op, cp, t, tt, w, pc) {
+      if (Math.abs(op[t] - cp[tt]) <= HIPRINT_CONFIG.adsorbLineMin) {
+        if (op.h.length) {
+          op.h.css("top", op[t] + "pt");
+        } else {
+          op.h = $("<div class='horLine id-" + op.id + "'></div>")
+          op.h.css("width", w + "pt");
+          op.h.css("top", op[t] + "pt");
+          pc.append(op.h);
+        }
+      } else {
+        op.h && op.h.remove();
+      }
+    }
+
+    function removeHorLine(op) {
+      if (op) op.h && op.h.remove();
+      $(".horLine").remove();
+    }
+
+    function o(i) {
+      // 绉诲姩寮�濮嬪姩浣�
+      var o = t.data(i.data.target, "hidraggable");
+      e(i);
+      if (!(i.ctrlKey || i.metaKey) && (i.data.target.className.startsWith('resize-panel') || "2" == i.data.target.style.zIndex || i.data.target.className.startsWith('hiprint-printElement'))) {
+        var data = i.data
+        if (t(".mouseRect").length == 0 && o.options.designTarget && o.options.designTarget.panel.printElements.filter(function (el) {
+          return "block" == el.designTarget.children().last().css("display") && !el.printElementType.type.includes("table");
+        }).length <= 1) {
+          let left = window.hinnn.px.toPt(data.left);
+          let top = window.hinnn.px.toPt(data.top);
+          let cPosition = o.options.designTarget.options;
+          cPosition.left = left;
+          cPosition.top = top;
+          cPosition.right = left + cPosition.width;
+          cPosition.bottom = top + cPosition.height;
+          cPosition.vCenter = left + cPosition.width / 2;
+          cPosition.hCenter = top + cPosition.height / 2;
+          (() => {
+            let oPositions = o.options.designTarget.panel.printElements.filter(el => el.id != o.options.designTarget.id).map(el => {
+              let {left, top, width, height} = el.options;
+              let right = left + width, vCenter = left + width / 2, hCenter = top + height / 2;
+              let cVCenter = cPosition.left + cPosition.width / 2, cHCenter = cPosition.top + cPosition.height / 2,
+                cRight = cPosition.left + cPosition.width;
+              let distance, d1, d2, d3;
+              d1 = Math.sqrt(Math.pow(left - cPosition.left, 2) + Math.pow(hCenter - cHCenter, 2));
+              d2 = Math.sqrt(Math.pow(vCenter - cVCenter, 2) + Math.pow(hCenter - cHCenter, 2));
+              d3 = Math.sqrt(Math.pow(right - cRight, 2) + Math.pow(hCenter - cHCenter, 2));
+              distance = Math.min(d1, d2, d3);
+              return {
+                ...el.options,
+                distance,
+                h: $(".horLine.id-" + el.id),
+                v: $(".verLine.id-" + el.id),
+                bottom: top + height,
+                right: left + width,
+                vCenter,
+                hCenter
+              }
+            }).sort((a, b) => a.distance - b.distance).slice(0,1)
+            let paper = o.options.designTarget.designPaper;
+            let paperContent = paper.target.find(".hiprint-printPaper-content");
+            let paperW = paper.width, paperH = paper.height;
+            let showAline = HIPRINT_CONFIG.showAdsorbLine, aMin = HIPRINT_CONFIG.adsorbMin, aLMin = HIPRINT_CONFIG.adsorbLineMin;
+            oPositions.forEach((item,idx) => {
+              // 鍏冪礌宸﹁竟绾�
+              if (Math.abs(oPositions[idx].left - cPosition.left) <= aMin) {
+                cPosition.left = oPositions[idx].left;
+                removeVerLine(oPositions[idx]);
+              } else if (Math.abs(oPositions[idx].vCenter - cPosition.left) <= aMin) {
+                cPosition.left = oPositions[idx].vCenter;
+                removeVerLine(oPositions[idx]);
+              } else if (Math.abs(oPositions[idx].right - cPosition.left) <= aMin) {
+                cPosition.left = oPositions[idx].right;
+                removeVerLine(oPositions[idx]);
+              }
+              // 鍏冪礌鍨傜洿涓嚎
+              if (Math.abs(oPositions[idx].left - cPosition.vCenter) <= aMin) {
+                cPosition.left = oPositions[idx].left - cPosition.width / 2;
+                removeVerLine(oPositions[idx]);
+              } else if (Math.abs(oPositions[idx].vCenter - cPosition.vCenter) <= aMin) {
+                cPosition.left = oPositions[idx].vCenter - cPosition.width / 2;
+                removeVerLine(oPositions[idx]);
+              } else if (Math.abs(oPositions[idx].right - cPosition.vCenter) <= aMin) {
+                cPosition.left = oPositions[idx].right - cPosition.width / 2;
+                removeVerLine(oPositions[idx]);
+              }
+              // 鍏冪礌鍙宠竟绾�
+              if (Math.abs(oPositions[idx].left - cPosition.right) <= aMin) {
+                cPosition.left = oPositions[idx].left - cPosition.width;
+                removeVerLine(oPositions[idx]);
+              } else if (Math.abs(oPositions[idx].vCenter - cPosition.right) <= aMin) {
+                cPosition.left = oPositions[idx].vCenter - cPosition.width;
+                removeVerLine(oPositions[idx]);
+              } else if (Math.abs(oPositions[idx].right - cPosition.right) <= aMin) {
+                cPosition.left = oPositions[idx].right - cPosition.width;
+                removeVerLine(oPositions[idx]);
+              }
+              // 鍏冪礌椤惰竟绾�
+              if (Math.abs(oPositions[idx].top - cPosition.top) <= aMin) {
+                cPosition.top = oPositions[idx].top;
+                removeHorLine(oPositions[idx]);
+              } else if (Math.abs(oPositions[idx].hCenter - cPosition.top) <= aMin) {
+                cPosition.top = oPositions[idx].hCenter;
+                removeHorLine(oPositions[idx]);
+              } else if (Math.abs(oPositions[idx].bottom - cPosition.top) <= aMin) {
+                cPosition.top = oPositions[idx].bottom;
+                removeHorLine(oPositions[idx]);
+              }
+              // 鍏冪礌姘村钩涓嚎
+              if (Math.abs(oPositions[idx].top - cPosition.hCenter) <= aMin) {
+                cPosition.top = oPositions[idx].top - cPosition.height / 2;
+                removeHorLine(oPositions[idx]);
+              } else if (Math.abs(oPositions[idx].hCenter - cPosition.hCenter) <= aMin) {
+                cPosition.top = oPositions[idx].hCenter - cPosition.height / 2;
+                removeHorLine(oPositions[idx]);
+              } else if (Math.abs(oPositions[idx].bottom - cPosition.hCenter) <= aMin) {
+                cPosition.top = oPositions[idx].bottom - cPosition.height / 2;
+                removeHorLine(oPositions[idx]);
+              }
+              // 鍏冪礌搴曡竟绾�
+              if (Math.abs(oPositions[idx].top - cPosition.bottom) <= aMin) {
+                cPosition.top = oPositions[idx].top - cPosition.height;
+                removeHorLine(oPositions[idx]);
+              } else if (Math.abs(oPositions[idx].hCenter - cPosition.bottom) <= aMin) {
+                cPosition.top = oPositions[idx].hCenter - cPosition.height;
+                removeHorLine(oPositions[idx]);
+              } else if (Math.abs(oPositions[idx].bottom - cPosition.bottom) <= aMin) {
+                cPosition.top = oPositions[idx].bottom - cPosition.height;
+                removeHorLine(oPositions[idx]);
+              }
+
+              if (showAline) {
+                if (Math.abs(oPositions[idx].left - cPosition.left) > aMin && Math.abs(oPositions[idx].left - cPosition.left) <= aLMin) { // 宸�
+                  createVerLine(oPositions[idx], cPosition, "left", "left", paperH, paperContent);
+                } else if (Math.abs(oPositions[idx].vCenter - cPosition.left) > aMin && Math.abs(oPositions[idx].vCenter - cPosition.left) <= aLMin) {
+                  createVerLine(oPositions[idx], cPosition, "vCenter", "left", paperH, paperContent);
+                } else if (Math.abs(oPositions[idx].right - cPosition.left) > aMin && Math.abs(oPositions[idx].right - cPosition.left) <= aLMin) {
+                  createVerLine(oPositions[idx], cPosition, "right", "left", paperH, paperContent);
+                } else if (Math.abs(oPositions[idx].left - cPosition.vCenter) > aMin && Math.abs(oPositions[idx].left - cPosition.vCenter) <= aLMin) { // 涓�
+                  createVerLine(oPositions[idx], cPosition, "left", "vCenter", paperH, paperContent);
+                } else if (Math.abs(oPositions[idx].vCenter - cPosition.vCenter) > aMin && Math.abs(oPositions[idx].vCenter - cPosition.vCenter) <= aLMin) {
+                  createVerLine(oPositions[idx], cPosition, "vCenter", "vCenter", paperH, paperContent);
+                } else if (Math.abs(oPositions[idx].right - cPosition.vCenter) > aMin && Math.abs(oPositions[idx].right - cPosition.vCenter) <= aLMin) {
+                  createVerLine(oPositions[idx], cPosition, "right", "vCenter", paperH, paperContent);
+                } else if (Math.abs(oPositions[idx].left - cPosition.right) > aMin && Math.abs(oPositions[idx].left - cPosition.right) <= aLMin) { // 鍙�
+                  createVerLine(oPositions[idx], cPosition, "left", "right", paperH, paperContent);
+                } else if (Math.abs(oPositions[idx].vCenter - cPosition.right) > aMin && Math.abs(oPositions[idx].vCenter - cPosition.right) <= aLMin) {
+                  createVerLine(oPositions[idx], cPosition, "vCenter", "right", paperH, paperContent);
+                } else if (Math.abs(oPositions[idx].right - cPosition.right) > aMin && Math.abs(oPositions[idx].right - cPosition.right) <= aLMin) {
+                  createVerLine(oPositions[idx], cPosition, "right", "right", paperH, paperContent);
+                } else if (Math.abs(oPositions[idx].top - cPosition.top) > aMin && Math.abs(oPositions[idx].top - cPosition.top) <= aLMin) { // 涓�
+                  createHorLine(oPositions[idx], cPosition, "top", "top", paperW, paperContent);
+                } else if (Math.abs(oPositions[idx].hCenter - cPosition.top) > aMin && Math.abs(oPositions[idx].hCenter - cPosition.top) <= aLMin) {
+                  createHorLine(oPositions[idx], cPosition, "hCenter", "top", paperW, paperContent);
+                } else if (Math.abs(oPositions[idx].bottom - cPosition.top) > aMin && Math.abs(oPositions[idx].bottom - cPosition.top) <= aLMin) {
+                  createHorLine(oPositions[idx], cPosition, "bottom", "top", paperW, paperContent);
+                } else if (Math.abs(oPositions[idx].top - cPosition.hCenter) > aMin && Math.abs(oPositions[idx].top - cPosition.hCenter) <= aLMin) { // 涓�
+                  createHorLine(oPositions[idx], cPosition, "top", "hCenter", paperW, paperContent);
+                } else if (Math.abs(oPositions[idx].hCenter - cPosition.hCenter) > aMin && Math.abs(oPositions[idx].hCenter - cPosition.hCenter) <= aLMin) {
+                  createHorLine(oPositions[idx], cPosition, "hCenter", "hCenter", paperW, paperContent);
+                } else if (Math.abs(oPositions[idx].bottom - cPosition.hCenter) > aMin && Math.abs(oPositions[idx].bottom - cPosition.hCenter) <= aLMin) {
+                  createHorLine(oPositions[idx], cPosition, "bottom", "hCenter", paperW, paperContent);
+                } else if (Math.abs(oPositions[idx].top - cPosition.bottom) > aMin && Math.abs(oPositions[idx].top - cPosition.bottom) <= aLMin) { // 涓�
+                  createHorLine(oPositions[idx], cPosition, "top", "bottom", paperW, paperContent);
+                } else if (Math.abs(oPositions[idx].hCenter - cPosition.bottom) > aMin && Math.abs(oPositions[idx].hCenter - cPosition.bottom) <= aLMin) {
+                  createHorLine(oPositions[idx], cPosition, "hCenter", "bottom", paperW, paperContent);
+                } else if (Math.abs(oPositions[idx].bottom - cPosition.bottom) > aMin && Math.abs(oPositions[idx].bottom - cPosition.bottom) <= aLMin) {
+                  createHorLine(oPositions[idx], cPosition, "bottom", "bottom", paperW, paperContent);
+                } else {
+                  removeVerLine(oPositions[idx]);
+                  removeHorLine(oPositions[idx]);
+                }
+              }
+            })
+          })()
+          i.data.left = window.hinnn.pt.toPx(cPosition.left);
+          i.data.top = window.hinnn.pt.toPx(cPosition.top);
+        }
+        // 褰撳墠绾稿紶瀹介珮
+        var parent = data.parent.className.endsWith('design') ? data.parent : data.parent.offsetParent;
+        var paperW = parent.clientWidth, paperH = parent.clientHeight;
+        // 褰撳墠鍏冪礌瀹介珮
+        var elementW = data.target.clientWidth, elementH = data.target.clientHeight,
+          diffLeft = 0, diffTop = 0;
+        if (o.options.designTarget && o.options.designTarget.options.transform) {
+          var info = o.options.designTarget.options.getRectInfo();
+          diffLeft = window.hinnn.pt.toPx(info.diffW), diffTop = window.hinnn.pt.toPx(info.diffH);
+        }
+        // 宸﹀彸
+        if (data.left < 0 - diffLeft) {
+          data.left = 0 - diffLeft
+        } else if (data.left >= paperW - elementW + diffLeft) {
+          data.left = paperW - elementW + diffLeft
+        }
+        // 涓婁笅
+        if (data.top < 0 - diffTop) {
+          data.top = 0 - diffTop
+        } else if (data.top >= paperH - elementH + diffTop) {
+          data.top = paperH - elementH + diffTop
+        }
+        i.data = data
+      }
+      0 != o.options.onDrag.call(i.data.target, i, t.fn.dragLengthCNum(i.data.left, o.options), t.fn.dragLengthCNum(i.data.top, o.options)) && n(i);
+      var r = i.data.target;
+      return o.hidroppables.each(function () {
+        var e = t(this);
+
+        if (!e.hidroppable("options").disabled) {
+          var n = e.offset();
+          i.pageX > n.left && i.pageX < n.left + e.outerWidth() && i.pageY > n.top && i.pageY < n.top + e.outerHeight() ? (this.entered || (t(this).trigger("_dragenter", [r]), this.entered = !0), t(this).trigger("_dragover", [r])) : this.entered && (t(this).trigger("_dragleave", [r]), this.entered = !1);
+        }
+      }), !1;
+    }
+
+    function r(e) {
+      // 杩欓噷鍘� mouseup鏃�, 鍥炶皟浜� o(e) ==> onDrag
+      t.fn.hidraggable.isDragging = !1;
+      removeVerLine(), removeHorLine();
+      var n,
+        i,
+        r = t.data(e.data.target, "hidraggable"),
+        a = r.proxy,
+        p = r.options;
+      p.revert ? 1 == l() ? t(e.data.target).css({
+        position: e.data.startPosition,
+        left: e.data.startLeft,
+        top: e.data.startTop
+      }) : a ? (a.parent()[0] == document.body ? (n = e.data.startX - e.data.offsetWidth, i = e.data.startY - e.data.offsetHeight) : (n = e.data.startLeft, i = e.data.startTop), a.animate({
+        left: n,
+        top: i
+      }, function () {
+        s();
+      })) : t(e.data.target).animate({
+        left: e.data.startLeft,
+        top: e.data.startTop
+      }, function () {
+        t(e.data.target).css("position", e.data.startPosition);
+      }) : (t(e.data.target).css({
+        position: "absolute",
+        left: t.fn.dragLengthC(e.data.left, p),
+        top: t.fn.dragLengthC(e.data.top, p)
+      }), l());
+
+      function s() {
+        a && a.remove(), r.proxy = null;
+      }
+
+      function l() {
+        var n = !1;
+        return r.hidroppables.each(function () {
+          var i = t(this);
+
+          if (!i.hidroppable("options").disabled) {
+            var o = i.offset();
+            var ptr = (this.style.transform && parseFloat(this.style.transform.slice(6, -1))) || 1;
+            return e.pageX > o.left && e.pageX < o.left + (i.outerWidth() * ptr) && e.pageY > o.top && e.pageY < o.top + (i.outerHeight() * ptr) ? (p.revert && t(e.data.target).css({
+              position: e.data.startPosition,
+              left: e.data.startLeft,
+              top: e.data.startTop
+            }), t(this).trigger("_drop", [e.data.target]), s(), n = !0, this.entered = !1, !1) : void 0;
+          }
+        }), n || p.revert || s(), n;
+      }
+
+      return p.onStopDrag.call(e.data.target, e), t(document).unbind(".hidraggable"), setTimeout(function () {
+        t("body").css("cursor", "");
+      }, 100), !1;
+    }
+
+    t.fn.hidraggable = function (e, n) {
+      return "string" == typeof e ? t.fn.hidraggable.methods[e](this, n) : this.each(function () {
+        var n,
+          a = t.data(this, "hidraggable");
+        a ? (a.handle.unbind(".hidraggable"), n = t.extend(a.options, e)) : n = t.extend({}, t.fn.hidraggable.defaults, t.fn.hidraggable.parseOptions(this), e || {});
+        var p = n.handle ? "string" == typeof n.handle ? t(n.handle, this) : n.handle : t(this);
+
+        function s(e) {
+          var n = t.data(e.data.target, "hidraggable"),
+            i = n.handle,
+            o = t(i).offset(),
+            tr = t(i)[0].style.transform && parseInt(t(i)[0].style.transform.slice(7, -1)),
+            ptr = n.options.getScale(),
+            r = t(i).outerWidth();
+          var a = t(i).outerHeight();
+          if (tr) {
+            var rad = tr * Math.PI / 180,
+              width = t(i).outerWidth(),
+              height = t(i).outerHeight(),
+              sin = Math.sin(rad),
+              cos = Math.cos(rad);
+            r = Math.abs(width * cos) + Math.abs(height * sin),
+              a = Math.abs(width * sin) + Math.abs(height * cos)
+          }
+          if (ptr) {
+            r *= ptr, a *= ptr;
+          }
+          var p = e.pageY - o.top,
+            s = o.left + r - e.pageX,
+            l = o.top + a - e.pageY,
+            u = e.pageX - o.left;
+          return Math.min(p, s, l, u) > n.options.edge;
+        }
+
+        t.data(this, "hidraggable", {
+          options: n,
+          handle: p
+        }), n.disabled ? t(this).css("cursor", "") : p.unbind(".hidraggable").bind("mousemove.hidraggable", {
+          target: this
+        }, function (e) {
+          if (!t.fn.hidraggable.isDragging) {
+            var n = t.data(e.data.target, "hidraggable").options;
+            s(e) ? t(this).css("cursor", n.cursor) : t(this).css("cursor", "");
+          }
+        }).bind("mouseleave.hidraggable", {
+          target: this
+        }, function (e) {
+          t(this).css("cursor", "");
+        }).bind("mousedown.hidraggable", {
+          target: this
+        }, function (e) {
+          if (0 != s(e)) {
+            t(this).css("cursor", "");
+            var n = t(e.data.target).position(),
+              a = t(e.data.target).offset(),
+              p = {
+                startPosition: t(e.data.target).css("position"),
+                startLeft: n.left,
+                startTop: n.top,
+                left: n.left,
+                top: n.top,
+                startX: e.pageX,
+                startY: e.pageY,
+                offsetWidth: e.pageX - a.left,
+                offsetHeight: e.pageY - a.top,
+                target: e.data.target,
+                parent: t(e.data.target).parent()[0]
+              };
+            var ops = t.data(e.data.target, "hidraggable");
+            // item绂佹绉诲姩
+            if (ops.options.draggable === false) {
+              return;
+            }
+            // 鏃嬭浆鏃朵笉鍏佽绉诲姩
+            if ('r resizebtn' == e.target.className) {
+              return;
+            }
+            var ptr = ops.options.getScale()
+            if (ptr) {
+              p.left /= ptr, p.top /= ptr, p.startLeft /= ptr, p.startTop /= ptr;
+            }
+            var tr = p.target.style.transform && parseInt(p.target.style.transform.slice(7, -1));
+            if (tr) {
+              var rad = tr * Math.PI / 180,
+                width = t(e.data.target).outerWidth(),
+                height = t(e.data.target).outerHeight(),
+                sin = Math.sin(rad),
+                cos = Math.cos(rad);
+              var w = Math.abs(width * cos) + Math.abs(height * sin),
+                h = Math.abs(width * sin) + Math.abs(height * cos);
+              var diffW = (w - width) / 2, diffH = (h - height) / 2;
+              p.left += diffW, p.top += diffH, p.startLeft += diffW, p.startTop += diffH;
+            }
+            t.extend(e.data, p);
+            0 != t.data(e.data.target, "hidraggable").options.onBeforeDrag.call(e.data.target, e) && (t(document).bind("mousedown.hidraggable", e.data, i), t(document).bind("mousemove.hidraggable", e.data, o), t(document).bind("mouseup.hidraggable", e.data, r));
+          }
+        });
+      });
+    }, t.fn.hidraggable.methods = {
+      options: function options(e) {
+        return t.data(e[0], "hidraggable").options;
+      },
+      update: function update(e, n) {
+        if (n && "object" == typeof n) {
+          t.data(e[0], "hidraggable") && Object.keys(n).forEach(function (k) {
+            t.data(e[0], "hidraggable").options[k] = n[k]
+          })
+        }
+      },
+      proxy: function proxy(e) {
+        return t.data(e[0], "hidraggable").proxy;
+      },
+      enable: function enable(e) {
+        return e.each(function () {
+          t(this).hidraggable({
+            disabled: !1
+          });
+        });
+      },
+      disable: function disable(e) {
+        return e.each(function () {
+          t(this).hidraggable({
+            disabled: !0
+          });
+        });
+      }
+    }, t.fn.hidraggable.parseOptions = function (e) {
+      var n = t(e);
+      return t.extend({}, t.hiprintparser.parseOptions(e, ["cursor", "handle", "axis", {
+        revert: "boolean",
+        deltaX: "number",
+        deltaY: "number",
+        edge: "number"
+      }]), {
+        disabled: !!n.attr("disabled") || void 0
+      });
+    }, t.fn.hidraggable.defaults = {
+      proxy: null,
+      revert: !1,
+      cursor: "move",
+      deltaX: null,
+      deltaY: null,
+      handle: null,
+      disabled: !1,
+      edge: 0,
+      axis: null,
+      getScale: function getScale(t) {},
+      onBeforeDrag: function onBeforeDrag(t) {
+      },
+      onStartDrag: function onStartDrag(t) {
+      },
+      onDrag: function onDrag(t) {
+      },
+      onStopDrag: function onStopDrag(t) {
+      }
+    }, t.fn.hidraggable.isDragging = !1;
+  }(jQuery);
+}, function (t, e) {
+  !function (t) {
+    t.fn.hidroppable = function (e, n) {
+      return "string" == typeof e ? t.fn.hidroppable.methods[e](this, n) : (e = e || {}, this.each(function () {
+        var n,
+          i = t.data(this, "hidroppable");
+        i ? t.extend(i.options, e) : (t(n = this).addClass("hidroppable"), t(n).bind("_dragenter", function (e, i) {
+          t.data(n, "hidroppable").options.onDragEnter.apply(n, [e, i]);
+        }), t(n).bind("_dragleave", function (e, i) {
+          t.data(n, "hidroppable").options.onDragLeave.apply(n, [e, i]);
+        }), t(n).bind("_dragover", function (e, i) {
+          t.data(n, "hidroppable").options.onDragOver.apply(n, [e, i]);
+        }), t(n).bind("_drop", function (e, i) {
+          t.data(n, "hidroppable").options.onDrop.apply(n, [e, i]);
+        }), t.data(this, "hidroppable", {
+          options: t.extend({}, t.fn.hidroppable.defaults, t.fn.hidroppable.parseOptions(this), e)
+        }));
+      }));
+    }, t.fn.hidroppable.methods = {
+      options: function options(e) {
+        return t.data(e[0], "hidroppable").options;
+      },
+      enable: function enable(e) {
+        return e.each(function () {
+          t(this).hidroppable({
+            disabled: !1
+          });
+        });
+      },
+      disable: function disable(e) {
+        return e.each(function () {
+          t(this).hidroppable({
+            disabled: !0
+          });
+        });
+      }
+    }, t.fn.hidroppable.parseOptions = function (e) {
+      var n = t(e);
+      return t.extend({}, t.hiprintparser.parseOptions(e, ["accept"]), {
+        disabled: !!n.attr("disabled") || void 0
+      });
+    }, t.fn.hidroppable.defaults = {
+      accept: null,
+      disabled: !1,
+      onDragEnter: function onDragEnter(t, e) {
+      },
+      onDragOver: function onDragOver(t, e) {
+      },
+      onDragLeave: function onDragLeave(t, e) {
+      },
+      onDrop: function onDrop(t, e) {
+      }
+    };
+  }(jQuery);
+}, function (t, e) {
+  var n;
+  (n = jQuery).hiprintparser = {
+    parseOptions: function parseOptions(t, e) {
+      var i = n(t),
+        o = {},
+        r = n.trim(i.attr("data-options"));
+
+      if (r && ("{" != r.substring(0, 1) && (r = "{" + r + "}"), o = new Function("return " + r)()), e) {
+        for (var a = {}, p = 0; p < e.length; p++) {
+          var s = e[p];
+          if ("string" == typeof s) a[s] = "width" == s || "height" == s || "left" == s || "top" == s ? parseInt(t.style[s]) || void 0 : i.attr(s); else for (var l in s) {
+            var u = s[l];
+            "boolean" == u ? a[l] = i.attr(l) ? "true" == i.attr(l) : void 0 : "number" == u && (a[l] = "0" == i.attr(l) ? 0 : parseFloat(i.attr(l)) || void 0);
+          }
+        }
+
+        n.extend(o, a);
+      }
+
+      return o;
+    }
+  }, n.fn.dragLengthC = function (t, e) {
+    return "pt" == e.moveUnit ? n.fn.dragLengthCNum(t, e) + "pt" : n.fn.dragLengthCNum(t, e);
+  }, n.fn.dragLengthCNum = function (t, e) {
+    var n = 3;
+
+    if ("pt" == e.moveUnit) {
+      var i = .75 * t;
+      return e.minMove && (n = e.minMove), Math.round(i / n) * n;
+    }
+
+    return Math.round(i / n) * n;
+  };
+}, function (t, e) {
+  var n, i, o;
+  n = jQuery, i = {
+    maxPanelIndex: 0
+  }, (o = function o(t) {
+    this.options = n.data(t.target, "hireizeable").options, this.init(t.target);
+  }).prototype = {
+    numHandlerText: function numHandlerText(t) {
+      return this.numHandler(t) + "pt";
+    },
+    numHandler: function numHandler(t) {
+      var e = 1.5,
+        n = .75 * t;
+      return this.options.minResize && (e = this.options.minResize), Math.round(n / e) * e;
+    },
+    init: function init(t) {
+      this.initResizeBox(t);
+    },
+    initResizeBox: function initResizeBox(t) {
+      var e = this;
+      n(t).each(function () {
+        var o;
+        i.maxPanelIndex += 1, e.options.noContainer ? o = n(t) : (o = n("<div panelIndex=" + i.maxPanelIndex + ' class="resize-panel"></div>')).css({
+          width: "100%",
+          height: "100%",
+          top: 0,
+          left: 0,
+          position: "absolute",
+          "background-color": "rgba(0,0,0,0.5)",
+          cursor: "move",
+          display: "none"
+        }), e.appendHandler(o, n(this));
+
+        var r = {
+            name: "n",
+            target: n('<div class="n resizebtn" style="cursor: n-resize;top: -12px;margin-left: -4px;left: 50%;"></div>')
+          },
+          a = {
+            name: "s",
+            target: n('<div class="s resizebtn" style="cursor: s-resize;bottom: -12px;margin-left: -4px;left: 50%;"></div>')
+          },
+          p = {
+            name: "w",
+            target: n('<div class="w resizebtn" style="cursor: w-resize;left: -12px;margin-top: -4px;top: 50%;"></div>')
+          },
+          s = {
+            name: "e",
+            target: n('<div class="e resizebtn" style="cursor: e-resize; top: 50%; margin-top:-4px;right: -12px;"></div>')
+          },
+          l = {
+            name: "ne",
+            target: n('<div class="ne resizebtn" style="cursor: ne-resize;top: -12px;right: -12px;"></div>')
+          },
+          u = {
+            name: "nw",
+            target: n('<div class="nw resizebtn" style=" cursor: nw-resize;top: -12px;left:-12px;"></div>')
+          },
+          d = {
+            name: "se",
+            target: n('<div class="se resizebtn" style="cursor: se-resize;bottom:-12px;right: -12px;"></div>')
+          },
+          c = {
+            name: "sw",
+            target: n('<div class="sw resizebtn" style="cursor: sw-resize;bottom: -12px;left: -12px;"></div>')
+          },
+          r = {
+            name: "r",
+            target: n('<div class="r resizebtn" style="cursor:url(\'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAMAAADXqc3KAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAABvUExURUdwTP///9XV1R0dHf///3Nzc////////////////1ZWVq+vr/T09PX19QQEBP///////8XFxf///////////wYGBv///+jo6P///4aGhqioqMzMzP///2BgYP///////////zExMf///wAAAP///xLps0AAAAAjdFJOUwCxxOdixRDmzSDMv8/Z+tz5wWpXWPk3zALCv8KnyXZVMNuNPnv3CwAAAJ1JREFUKM/NkckOwyAMRFkDBMhC9qWr+//fWCIV1WlzrjoXS36yxmMT8hdqqKoUvRAjMtw22kvecem1GjTuK1vApmI+wQMBbQFy5li+QQRaX4AtRX+vbntAJeRl9HTTx4TiwESs61DXNUPmVQeujzVrQwh43TTxpeRBslVfMUhbiXKWyiAwvnIsMcdyJkfJYdpNvG/ltDm+bjP+8KFP8ggL+zQLGxwAAAAASUVORK5CYII=\') 14 14,alias;top: -16px;margin-left: -4px;left: 50%;"></div>')
+          },
+          sizeBox = n('<div class="size-box" style="position: absolute;left:-2px;"></div>'),
+          deleteBtn = n('<div class="del-btn">鉁�</div>'),
+          h = function h() {
+            var t = [],
+              i = e.options.showPoints;
+            return n.each([r, a, p, s, l, u, d, c], function (e, o) {
+              n.inArray(o.name, i) > -1 && t.push(o.target);
+            }), t;
+          };
+        e.refreshSizeBox(void 0, sizeBox, o);
+        // draggable 涓� false 鏃朵笉鏄剧ず resizebox 鍙充笂瑙掑垹闄ゆ寜閽�
+        if (e.options.draggable != false) {
+          o.append(deleteBtn);
+          o.on("mousedown", ".del-btn", () => {
+            var keyboardEvent = new KeyboardEvent("keydown", { bubbles: true, keyCode: 46 });
+            t.dispatchEvent(keyboardEvent);
+          });
+		    }
+        e.addHandlerCss(h()), e.appendHandler(h(), o), e.bindResizeEvent(o, n(this));
+        var f = n(this);
+        n(o).on("mousedown", ".resizebtn", function () {
+          f.addClass("resizeing");
+        }), n(".easyui-droppable").on("mouseup", function () {
+          f.removeClass("resizeing");
+        }), e.bindTrigger(n(this));
+      }), e.bindHidePanel();
+    },
+    addHandlerCss: function addHandlerCss(t) {
+      for (var e = 0; e < t.length; e++) {
+        t[e].css({
+          position: "absolute",
+          width: "8px",
+          height: "8px",
+          background: "#ff6600",
+          "border-radius": "50%"
+        });
+      }
+    },
+    appendHandler: function appendHandler(t, e) {
+      e.find(".resize-panel").remove()
+      for (var n = 0; n < t.length; n++) {
+        e.append(t[n]);
+      }
+    },
+    refreshSizeBox: function refreshSizeBox(t, box, o) {
+      if (!this.options.showSizeBox) return;
+      if (box) {
+        o.append(box);
+      }
+      var style, sizeBox;
+      if (t && t.length) {
+        style = t[0].style;
+        sizeBox = t.children("div[panelindex]").find(".size-box");
+      } else if (o && o.parent()) {
+        var t = o.parent();
+        if (t.hasClass("hiprint-printPaper-content")) return;
+        style = t[0].style;
+        if (!style.width) {
+          style.width = hinnn.px.toPt(t[0].offsetWidth) + "pt";
+        }
+        if (!style.height) {
+          style.height = hinnn.px.toPt(t[0].offsetHeight) + "pt";
+        }
+        sizeBox = t.children("div[panelindex]").find(".size-box");
+      }
+      if (sizeBox) {
+        sizeBox.text(style.width + ' x ' + style.height);
+        sizeBox.css('top', -(sizeBox.outerHeight() || 20));
+      }
+    },
+    triggerResize: function triggerResize(t, n) {
+      // 澶勭悊鎸変綇 ctrl / command 鐐瑰嚮鍏冪礌 澶氶��
+      if (!(n.ctrlKey || n.metaKey)) {
+        t.siblings().children("div[panelindex]").removeClass('selected')
+        t.siblings().children("div[panelindex]").css({
+          display: "none"
+        })
+      }
+      t.children("div[panelindex]").addClass('selected')
+      t.children("div[panelindex]").css({
+        display: "block"
+      });
+      this.refreshSizeBox(t)
+    },
+    bindResizeEvent: function bindResizeEvent(t, e) {
+      var i = this,
+        o = 0,
+        r = 0,
+        a = t.width(),
+        p = t.height(),
+        s = t.offset().left,
+        l = t.offset().top,
+        u = i.options.noContainer ? n(e) : t.parent(),
+        d = !1; // 鍙�
+      t.on("mousedown", ".e", function (e) {
+        o = e.pageX, a = t.width(), d = !0;
+      });
+      var c = !1; // 涓�
+      t.on("mousedown", ".s", function (e) {
+        r = e.pageY, p = t.height(), c = !0;
+      });
+      var h = !1; // 宸�
+      t.on("mousedown", ".w", function (e) {
+        o = e.pageX, a = t.width(), h = !0, s = u.offset().left;
+      });
+      var f = !1; // 涓�
+      t.on("mousedown", ".n", function (e) {
+        r = e.pageY, p = t.height(), f = !0, l = u.offset().top;
+      });
+      var g = !1; // 鍙充笂
+      t.on("mousedown", ".ne", function (e) {
+        o = e.pageX, r = e.pageY, a = t.width(), p = t.height(), g = !0, l = u.offset().top;
+      });
+      var m = !1; // 宸︿笂
+      t.on("mousedown", ".nw", function (e) {
+        o = e.pageX, r = e.pageY, a = t.width(), p = t.height(), l = u.offset().top, s = u.offset().left, m = !0;
+      });
+      var v = !1; // 鍙充笅
+      t.on("mousedown", ".se", function (e) {
+        o = e.pageX, r = e.pageY, a = t.width(), p = t.height(), v = !0;
+      });
+      var y = !1; // 宸︿笅
+      t.on("mousedown", ".sw", function (e) {
+        o = e.pageX, r = e.pageY, a = t.width(), p = t.height(), y = !0, s = u.offset().left;
+      });
+      var rt = !1; // 鏃嬭浆
+      t.on("mousedown", ".r", function (e) {
+        o = e.pageX, r = e.pageY, a = t.width(), p = t.height(), rt = !0, s = a / 2 + u.offset().left, l = p / 2 + u.offset().top;
+      });
+      t.on("dblclick", ".r", function (e) {
+        u.css({transform: "rotate(" + 0 + "deg)"});
+        i.options.onResize(e, void 0, void 0, void 0, void 0, 0);
+      });
+      var b = !1;
+      t.on("mousedown", function (t) {
+        i.options.onBeforeResize(), o = t.pageX, r = t.pageY, l = u.offset().top, s = u.offset().left, b = !1;
+      }), n(i.options.stage).on("mousemove", function (e) {
+        if (d) { // 鍙�
+          var n = (e.pageX - o) / i.options.getScale();
+          t.css({
+            width: "100%"
+          }), u.css({
+            width: i.numHandlerText(a + n)
+          }), i.options.onResize(e, void 0, i.numHandler(a + n), void 0, void 0);
+        } else if (c) { // 涓�
+          var E = (e.pageY - r) / i.options.getScale();
+          t.css({
+            height: "100%"
+          }), u.css({
+            height: i.numHandlerText(p + E)
+          }), i.options.onResize(e, i.numHandler(p + E), void 0, void 0, void 0);
+        } else if (rt) { // 鏃嬭浆
+          t.css({height: "100%"});
+          var eo = e.pageX, er = e.pageY;
+          var direct = (eo - o) * 360 / 100;
+          o = e.pageX
+          var lastAngle = (u[0].style.transform && parseInt(u[0].style.transform.slice(7, -1))) || 0;
+          var R = lastAngle + direct;
+          if (Math.abs(R) > 360) {
+            R = R % 360
+          }
+          u.css({transform: "rotate(" + R + "deg)"});
+          i.options.onResize(e, void 0, void 0, void 0, void 0, R);
+        } else if (h) { // 宸�
+          (n = (e.pageX - o) / i.options.getScale(), t.css({
+            width: "100%"
+          }), u.css({
+            width: i.numHandlerText(a - n),
+            left: i.numHandlerText(i.options.noDrag ? void 0 : i.numHandler(s + n))
+          }), i.options.onResize(e, void 0, i.numHandler(a - n), void 0, i.options.noDrag ? void 0 : i.numHandler(s + n)))
+        } else if (f) { // 涓�
+          (E = (e.pageY - r) / i.options.getScale(), t.css({
+            height: "100%"
+          }), u.css({
+            height: i.numHandlerText(p - E),
+            top: i.numHandlerText(i.options.noDrag ? void 0 : l + E)
+          }), i.options.onResize(e, i.numHandler(p - E), void 0, i.options.noDrag ? void 0 : i.numHandler(l + E), void 0))
+        } else if (g) { // 鍙充笂
+          (n = (e.pageX - o) / i.options.getScale(), E = (e.pageY - r) / i.options.getScale(), t.css({
+            height: "100%",
+            width: "100%"
+          }), u.css({
+            height: i.numHandlerText(p - E),
+            top: i.numHandlerText(i.options.noDrag ? void 0 : l + E),
+            width: i.numHandlerText(a + n)
+          }), i.options.onResize(e, i.numHandler(p - E), i.numHandler(a + n), i.options.noDrag ? void 0 : i.numHandler(l + E), void 0))
+        } else if (m) { // 宸︿笂
+          (n = (e.pageX - o) / i.options.getScale(), E = (e.pageY - r) / i.options.getScale(), t.css({
+            height: "100%",
+            width: "100%"
+          }), u.css({
+            height: i.numHandlerText(p - E),
+            top: i.numHandlerText(i.options.noDrag ? void 0 : l + E),
+            width: i.numHandlerText(a - n),
+            left: i.numHandlerText(i.options.noDrag ? void 0 : s + n)
+          }), i.options.onResize(e, i.numHandler(p - E), i.numHandler(a - n), i.options.noDrag ? void 0 : i.numHandler(l + E), i.options.noDrag ? void 0 : i.numHandler(s + n)))
+        } else if (v) { // 鍙充笅
+          (n = (e.pageX - o) / i.options.getScale(), E = (e.pageY - r) / i.options.getScale()),
+            t.css({width: "100%", height: "100%"});
+          if (e.shiftKey) {
+            u.css({width: i.numHandlerText(a + n), height: i.numHandlerText(p + E)});
+            i.options.onResize(e, i.numHandler(p + E), i.numHandler(a + n), void 0, void 0);
+          } else {
+            // 瀹介珮姣�
+            var ratio = p / a;
+            var width = a + n, height = p + E;
+            height = width * ratio;
+            u.css({width: i.numHandlerText(width), height: i.numHandlerText(height)});
+            i.options.onResize(e, i.numHandler(height), i.numHandler(width), void 0, void 0);
+          }
+        } else if (y) { // 宸︿笅
+          (n = (e.pageX - o) / i.options.getScale(), E = (e.pageY - r) / i.options.getScale(), t.css({
+            width: "100%",
+            height: "100%"
+          }), u.css({
+            width: i.numHandlerText(a - n),
+            left: i.numHandlerText(i.options.noDrag ? void 0 : s + n),
+            height: i.numHandlerText(p + E)
+          }), i.options.onResize(e, i.numHandler(p + E), i.numHandler(a - n), i.numHandler(otundefinedop), i.options.noDrag ? void 0 : i.numHandler(s + n)))
+        } else { // 鎸変笅
+          b && (n = (e.pageX - o) / i.options.getScale(), E = (e.pageY - r) / i.options.getScale(), u.css({
+            left: i.numHandlerText(i.options.noDrag ? void 0 : s + n),
+            top: i.numHandlerText(i.options.noDrag ? void 0 : l + E)
+          }), i.options.onResize(e, void 0, void 0, i.options.noDrag ? void 0 : i.numHandler(l + E), i.options.noDrag ? void 0 : i.numHandler(s + n)))
+        }
+        ;
+      }).on("mouseup", function (t) {
+        // i.options.onStopResize(rt);
+        // 褰撴煇涓� '鎺у埗鐐�' 鎸変笅鏃� (姣忎釜'鎺у埗鐐�'鎸変笅鐘舵�佹槸鐙珛鐨�)
+        if ((d || c || h || f || g || m || y || v || b || rt)) {
+          i.options.onStopResize(rt);
+        }
+        d = !1, c = !1, h = !1, f = !1, g = !1, m = !1, y = !1, v = !1, b = !1, rt = !1;
+      });
+    },
+    bindTrigger: function bindTrigger(t) {
+      var e = this;
+      t.on("click", function (_n) {
+        _n.stopPropagation(), e.triggerResize(t, _n), n(".mouseRect").remove();
+      });
+    },
+    bindHidePanel: function bindHidePanel(t) {
+      if (i.maxPanelIndex < 2) {
+        var e = this.options.stage;
+        n(e).bind("click", function (t) {
+          // 浠呯偣鍑昏璁¢潰鏉挎椂娓呴櫎澶氶�夊厓绱�
+          if (t.target.className && _typeof(t.target.className) == "string" && t.target.className.includes("design")) {
+            t.stopPropagation(), n("div[panelindex]").css({
+              display: "none"
+            });
+            n("div[panelindex]").removeClass("selected");
+          }
+        });
+      }
+    }
+  }, n.fn.extend({
+    hireizeable: function hireizeable(t) {
+      return this.each(function () {
+        var e,
+          i = n.data(this, "hireizeable");
+        e = i ? n.extend({}, i.options, t || {}) : n.extend({}, n.fn.hireizeable.defaults, t || {});
+        n.data(this, "hireizeable", {
+          options: e
+        }), new o({
+          target: this,
+          onResize: function onResize(t, e, n, i, o) {
+          },
+          onStopResize: function onStopResize(t, e, n, i, o) {
+          }
+        });
+      });
+    }
+  }), n.fn.hireizeable.defaults = {
+    stage: document,
+    reizeUnit: "pt",
+    minResize: 1.5,
+    showSizeBox: !0,
+    showPoints: ["s", "e"],
+    noContainer: !1,
+    onBeforeResize: function onBeforeResize(t, e, n, i, o) {
+    },
+    onResize: function onResize(t, e, n, i, o) {
+    },
+    onStopResize: function onStopResize(t, e, n, i, o) {
+    },
+    noDrag: !1
+  };
+}, function (t, e) {
+  var n, i;
+  jQuery, n = "connected", i = "reconnecting", window.hiwebSocket = {
+    opened: !1,
+    name: "webSockets",
+    host: "http://localhost:17521",
+    token: 'vue-plugin-hiprint',
+    reconnectTimeout: 6e4,
+    reconnectWindowSetTimeout: null,
+    reconnectDelay: 2e3,
+    supportsKeepAlive: function supportsKeepAlive() {
+      return !0;
+    },
+    hasIo: function hasIo(t) {
+      return window.io;
+    },
+    send: function send(t) {
+      try {
+        this.socket.emit("news", t);
+      } catch (e) {
+        console.log("send data error:" + (t || "") + JSON.stringify(e));
+      }
+    },
+    sendByFragments: function(content) {
+      try {
+        const {
+          fragmentSize =  50000, // 鍗曠墖瀛楃闀垮害
+          sendInterval = 10,  // 鍒嗘壒浼犺緭闂撮殧
+          html,
+          generateHTMLInterval, // 涓嶉渶瑕佷紶缁檆lient,鍙栧嚭瀛楁
+          printByFragments, // 涓嶉渶瑕佷紶缁檆lient,鍙栧嚭瀛楁
+          ...otherFields
+        } = content
+        const contentToSplit = content.html
+        // 瀛楃鎬绘暟
+        const charsCount = contentToSplit.length
+        // 鐗囨鎬绘暟
+        const fragmentsCount = Math.ceil(charsCount / fragmentSize)
+        Array.apply(undefined, { length: fragmentsCount }).forEach((item, index) => {
+          const startIndex = index * fragmentSize
+          // 瀛楃缁撴潫绱㈠紩
+          const endIndex = index + 1 === fragmentSize ? charsCount : (index + 1) * fragmentSize
+          // socket鍒嗘鍙戦�佸唴瀹�
+          setTimeout(() => {
+            this.socket.emit('printByFragments', {
+              ...otherFields,
+              index,
+              total: fragmentsCount,
+              htmlFragment: html.slice(startIndex, endIndex)
+            });
+          }, sendInterval * index);
+        })
+      } catch (e) {
+        console.log("send data fragment error:" + (content || "") + JSON.stringify(e));
+      }
+    },
+    getPrinterList: function getPrinterList() {
+      return this.printerList;
+    },
+    refreshPrinterList: function refreshPrinterList() {
+      try {
+        this.socket.emit("refreshPrinterList");
+      } catch (e) {
+        console.log("refreshPrinterList error:" + JSON.stringify(e));
+      }
+    },
+    getPaperSizeInfo: function getPaperSizeInfo(printer) {
+      try {
+        console.warn("getPaperSizeInfo 鏄竴涓祴璇曞姛鑳斤紝浠厀in瀹㈡埛绔敮鎸佽api锛�")
+        this.socket.emit("getPaperSizeInfo", printer);
+      } catch (e) {
+        console.log("getPaperSizeInfo error:" + JSON.stringify(e))
+      }
+    },
+    getClients: function getClients() {
+      try {
+        this.socket.emit("getClients");
+      } catch (e) {
+        console.log("getClients error:" + JSON.stringify(e));
+      }
+    },
+    getClientInfo: function getClientInfo() {
+      try {
+        this.socket.emit("getClientInfo");
+      } catch (e) {
+        console.log("getClientInfo error:" + JSON.stringify(e))
+      }
+    },
+    getAddress: function getAddress(type, ...args) {
+      try {
+        this.socket.emit("address", type, ...args);
+      } catch (e) {
+        console.log("getAddress error:" + JSON.stringify(e));
+      }
+    },
+    ippPrint: function ippPrint(options) {
+      try {
+        this.socket.emit("ippPrint", options);
+      } catch (e) {
+        console.log("ippPrint error:" + JSON.stringify(e));
+      }
+    },
+    ippRequest: function ippRequest(options) {
+      try {
+        this.socket.emit("ippRequest", options);
+      } catch (e) {
+        console.log("ippRequest error:" + JSON.stringify(e));
+      }
+    },
+    setHost: function (host, token, cb) {
+      if (typeof token === "function") {
+        cb = token
+        token = undefined
+      }
+      this.host = host
+      this.token = token
+      this.stop()
+      this.start(cb)
+    },
+    start: function start(cb) {
+      var _this = this;
+
+      var t = this;
+      window.WebSocket ? this.socket || (this.socket = window.io(this.host, {
+        transports: ['websocket'],
+        reconnectionAttempts: 5,
+        auth: {
+          token: this.token
+        }
+      }), this.socket.on("connect", function (e) {
+        t.opened = !0, console.log("Websocket opened."),
+        _this.socket.on("success", function (t) {
+          hinnn.event.trigger("printSuccess_" + t.templateId, t);
+        }), _this.socket.on("error", function (t) {
+          hinnn.event.trigger("printError_" + t.templateId, t);
+        }), _this.socket.on("clients", function(clients) {
+          t.clients = clients;
+          hinnn.event.trigger("clients", clients)
+        }), _this.socket.on("clientInfo", function(clientInfo) {
+          t.clientInfo = clientInfo
+          hinnn.event.trigger("clientInfo", clientInfo)
+        }), _this.socket.on("printerList", function (e) {
+          t.printerList = e;
+          hinnn.event.trigger("printerList", e);
+        }), _this.socket.on("paperSizeInfo", function(e) {
+          t.paperSize = Array.isArray(e)?e:[e]
+          hinnn.event.trigger("paperSizeInfo", t.paperSize);
+        }), _this.socket.on("address", function (type, addr, e) {
+          hinnn.event.trigger("address_" + type, {'addr': addr, 'e': e});
+        }), _this.socket.on("ippPrinterConnected", function (printer) {
+          hinnn.event.trigger("ippPrinterConnected", printer);
+        }), _this.socket.on("ippPrinterCallback", function (err, res) {
+          hinnn.event.trigger("ippPrinterCallback", {'err': err, 'res': res});
+        }), _this.socket.on("ippRequestCallback", function (err, res) {
+          hinnn.event.trigger("ippRequestCallback", {'err': err, 'res': res});
+        }), t.state = n;
+        cb && cb(true, e);
+      }), this.socket.on("connect_error", function (e) {
+        console.error(e)
+        hinnn.event.trigger("connect_error", e)
+      }), this.socket.on("disconnect", function () {
+        t.opened = !1;
+        cb && cb(false);
+      })) : console.log("WebSocket start fail"), cb && cb(false);
+    },
+    reconnect: function reconnect() {
+      this.state !== n && this.state !== i || (this.stop(), this.ensureReconnectingState() && (console.log("Websocket reconnecting."), this.start()));
+    },
+    stop: function stop() {
+      this.socket && (console.log("Closing the Websocket."), this.socket.close(), this.socket = null, this.printerList = []);
+    },
+    ensureReconnectingState: function ensureReconnectingState() {
+      return this.state = i, this.state === i;
+    }
+  };
+}, function (t, e, n) {
+  var i = n(28);
+  "string" == typeof i && (i = [[t.i, i, ""]]);
+  var o = {
+    hmr: !0,
+    transform: void 0,
+    insertInto: void 0
+  };
+  n(30)(i, o);
+  i.locals && (t.exports = i.locals);
+}, function (t, e, n) {
+  (t.exports = n(29)(!1)).push([t.i, ".hicontextmenu {\r\n\tposition: absolute;\r\n\tdisplay: inline-block;\r\n\twidth: 215px;\r\n\tpadding: 0 0;\r\n\tmargin: 0;\r\n\tfont-family: inherit;\r\n\tfont-size: inherit;\r\n\tlist-style-type: none;\r\n\tlist-style: none;\r\n\tbackground: #fff;\r\n\tborder: 1px solid #bebebe;\r\n\tborder-radius: 2px;\r\n\tfont-size: 13px;\r\n}\r\n\r\n.hicontextmenuroot .hicontextmenuitem {\r\n\tposition: relative;\r\n\t-webkit-box-sizing: content-box;\r\n\t-moz-box-sizing: content-box;\r\n\tbox-sizing: content-box;\r\n\tpadding: .2em 12px;\r\n\tcolor: #2f2f2f;\r\n\t-webkit-user-select: none;\r\n\t-moz-user-select: none;\r\n\t-ms-user-select: none;\r\n\ttext-decoration: none;\r\n\r\n\tuser-select: none;\r\n\tbackground-color: #fff;\r\n\r\n}\r\n\r\n.hicontextmenuroot>.hicontextmenuitem:hover,\r\n.hicontextmenuroot .hicontextmenuitem > a:hover {\r\n\tbackground-color: #f3f3f3;\r\n}\r\n\r\n.hicontextmenuroot .hicontextmenuitem>a {\r\n\ttext-decoration: none;\r\n\tcolor: #363636;\r\n\tline-height: 22px;\r\n\r\n}\r\n\r\n.hicontextmenuroot .hicontextsubmenu>ul {\r\n\tdisplay: none;\r\n\tposition: absolute;\r\n\r\n}\r\n\r\n.hicontextmenuroot .hicontextsubmenu:hover>ul {\r\n\tdisplay: block;\r\n\tleft: 100%;\r\n\ttop: -1px;\r\n\tmargin-left: 0px;\r\n}\r\n\r\n.hicontextmenuroot .borderBottom {\r\n\tborder-bottom: 1px solid #efe6e6;\r\n}\r\n\r\n.hicontextmenuroot .disable> a {\r\n  \r\n    color: #ccc;\r\n   \r\n}\r\n.hicontextmenuroot>.disable:hover,\r\n.hicontextmenuroot .disable> a:hover {\r\n\tbackground-color:#fff;\r\n}", ""]);
+}, function (t, e, n) {
+  "use strict";
+
+  t.exports = function (t) {
+    var e = [];
+    return e.toString = function () {
+      return this.map(function (e) {
+        var n = function (t, e) {
+          var n = t[1] || "",
+            i = t[3];
+          if (!i) return n;
+
+          if (e && "function" == typeof btoa) {
+            var o = (a = i, "/*# sourceMappingURL=data:application/json;charset=utf-8;base64," + btoa(unescape(encodeURIComponent(JSON.stringify(a)))) + " */"),
+              r = i.sources.map(function (t) {
+                return "/*# sourceURL=" + i.sourceRoot + t + " */";
+              });
+            return [n].concat(r).concat([o]).join("\n");
+          }
+
+          var a;
+          return [n].join("\n");
+        }(e, t);
+
+        return e[2] ? "@media " + e[2] + "{" + n + "}" : n;
+      }).join("");
+    }, e.i = function (t, n) {
+      "string" == typeof t && (t = [[null, t, ""]]);
+
+      for (var i = {}, o = 0; o < this.length; o++) {
+        var r = this[o][0];
+        null != r && (i[r] = !0);
+      }
+
+      for (o = 0; o < t.length; o++) {
+        var a = t[o];
+        null != a[0] && i[a[0]] || (n && !a[2] ? a[2] = n : n && (a[2] = "(" + a[2] + ") and (" + n + ")"), e.push(a));
+      }
+    }, e;
+  };
+}, function (t, e, n) {
+  var i,
+    o,
+    r = {},
+    a = (i = function i() {
+      return window && document && document.all && !window.atob;
+    }, function () {
+      return void 0 === o && (o = i.apply(this, arguments)), o;
+    }),
+    p = function (t) {
+      var e = {};
+      return function (t, n) {
+        if ("function" == typeof t) return t();
+
+        if (void 0 === e[t]) {
+          var i = function (t, e) {
+            return e ? e.querySelector(t) : document.querySelector(t);
+          }.call(this, t, n);
+
+          if (window.HTMLIFrameElement && _instanceof(i, window.HTMLIFrameElement)) try {
+            i = i.contentDocument.head;
+          } catch (t) {
+            i = null;
+          }
+          e[t] = i;
+        }
+
+        return e[t];
+      };
+    }(),
+    s = null,
+    l = 0,
+    u = [],
+    d = n(31);
+
+  function c(t, e) {
+    for (var n = 0; n < t.length; n++) {
+      var i = t[n],
+        o = r[i.id];
+
+      if (o) {
+        o.refs++;
+
+        for (var a = 0; a < o.parts.length; a++) {
+          o.parts[a](i.parts[a]);
+        }
+
+        for (; a < i.parts.length; a++) {
+          o.parts.push(y(i.parts[a], e));
+        }
+      } else {
+        var p = [];
+
+        for (a = 0; a < i.parts.length; a++) {
+          p.push(y(i.parts[a], e));
+        }
+
+        r[i.id] = {
+          id: i.id,
+          refs: 1,
+          parts: p
+        };
+      }
+    }
+  }
+
+  function h(t, e) {
+    for (var n = [], i = {}, o = 0; o < t.length; o++) {
+      var r = t[o],
+        a = e.base ? r[0] + e.base : r[0],
+        p = {
+          css: r[1],
+          media: r[2],
+          sourceMap: r[3]
+        };
+      i[a] ? i[a].parts.push(p) : n.push(i[a] = {
+        id: a,
+        parts: [p]
+      });
+    }
+
+    return n;
+  }
+
+  function f(t, e) {
+    var n = p(t.insertInto);
+    if (!n) throw new Error("Couldn't find a style target. This probably means that the value for the 'insertInto' parameter is invalid.");
+    var i = u[u.length - 1];
+    if ("top" === t.insertAt) i ? i.nextSibling ? n.insertBefore(e, i.nextSibling) : n.appendChild(e) : n.insertBefore(e, n.firstChild), u.push(e); else if ("bottom" === t.insertAt) n.appendChild(e); else {
+      if ("object" != _typeof(t.insertAt) || !t.insertAt.before) throw new Error("[Style Loader]\n\n Invalid value for parameter 'insertAt' ('options.insertAt') found.\n Must be 'top', 'bottom', or Object.\n (https://github.com/webpack-contrib/style-loader#insertat)\n");
+      var o = p(t.insertAt.before, n);
+      n.insertBefore(e, o);
+    }
+  }
+
+  function g(t) {
+    if (null === t.parentNode) return !1;
+    t.parentNode.removeChild(t);
+    var e = u.indexOf(t);
+    e >= 0 && u.splice(e, 1);
+  }
+
+  function m(t) {
+    var e = document.createElement("style");
+
+    if (void 0 === t.attrs.type && (t.attrs.type = "text/css"), void 0 === t.attrs.nonce) {
+      var i = function () {
+        0;
+        return n.nc;
+      }();
+
+      i && (t.attrs.nonce = i);
+    }
+
+    return v(e, t.attrs), f(t, e), e;
+  }
+
+  function v(t, e) {
+    Object.keys(e).forEach(function (n) {
+      t.setAttribute(n, e[n]);
+    });
+  }
+
+  function y(t, e) {
+    var n, i, o, r;
+
+    if (e.transform && t.css) {
+      if (!(r = "function" == typeof e.transform ? e.transform(t.css) : e.transform.default(t.css))) return function () {
+      };
+      t.css = r;
+    }
+
+    if (e.singleton) {
+      var a = l++;
+      n = s || (s = m(e)), i = T.bind(null, n, a, !1), o = T.bind(null, n, a, !0);
+    } else t.sourceMap && "function" == typeof URL && "function" == typeof URL.createObjectURL && "function" == typeof URL.revokeObjectURL && "function" == typeof Blob && "function" == typeof btoa ? (n = function (t) {
+      var e = document.createElement("link");
+      return void 0 === t.attrs.type && (t.attrs.type = "text/css"), t.attrs.rel = "stylesheet", v(e, t.attrs), f(t, e), e;
+    }(e), i = function (t, e, n) {
+      var i = n.css,
+        o = n.sourceMap,
+        r = void 0 === e.convertToAbsoluteUrls && o;
+      (e.convertToAbsoluteUrls || r) && (i = d(i));
+      o && (i += "\n/*# sourceMappingURL=data:application/json;base64," + btoa(unescape(encodeURIComponent(JSON.stringify(o)))) + " */");
+      var a = new Blob([i], {
+          type: "text/css"
+        }),
+        p = t.href;
+      t.href = URL.createObjectURL(a), p && URL.revokeObjectURL(p);
+    }.bind(null, n, e), o = function o() {
+      g(n), n.href && URL.revokeObjectURL(n.href);
+    }) : (n = m(e), i = function (t, e) {
+      var n = e.css,
+        i = e.media;
+      i && t.setAttribute("media", i);
+      if (t.styleSheet) t.styleSheet.cssText = n; else {
+        for (; t.firstChild;) {
+          t.removeChild(t.firstChild);
+        }
+
+        t.appendChild(document.createTextNode(n));
+      }
+    }.bind(null, n), o = function o() {
+      g(n);
+    });
+
+    return i(t), function (e) {
+      if (e) {
+        if (e.css === t.css && e.media === t.media && e.sourceMap === t.sourceMap) return;
+        i(t = e);
+      } else o();
+    };
+  }
+
+  t.exports = function (t, e) {
+    if ("undefined" != typeof DEBUG && DEBUG && "object" != (typeof document === "undefined" ? "undefined" : _typeof(document))) throw new Error("The style-loader cannot be used in a non-browser environment");
+    (e = e || {}).attrs = "object" == _typeof(e.attrs) ? e.attrs : {}, e.singleton || "boolean" == typeof e.singleton || (e.singleton = a()), e.insertInto || (e.insertInto = "head"), e.insertAt || (e.insertAt = "bottom");
+    var n = h(t, e);
+    return c(n, e), function (t) {
+      for (var i = [], o = 0; o < n.length; o++) {
+        var a = n[o];
+        (p = r[a.id]).refs-- , i.push(p);
+      }
+
+      t && c(h(t, e), e);
+
+      for (o = 0; o < i.length; o++) {
+        var p;
+
+        if (0 === (p = i[o]).refs) {
+          for (var s = 0; s < p.parts.length; s++) {
+            p.parts[s]();
+          }
+
+          delete r[p.id];
+        }
+      }
+    };
+  };
+
+  var b,
+    E = (b = [], function (t, e) {
+      return b[t] = e, b.filter(Boolean).join("\n");
+    });
+
+  function T(t, e, n, i) {
+    var o = n ? "" : i.css;
+    if (t.styleSheet) t.styleSheet.cssText = E(e, o); else {
+      var r = document.createTextNode(o),
+        a = t.childNodes;
+      a[e] && t.removeChild(a[e]), a.length ? t.insertBefore(r, a[e]) : t.appendChild(r);
+    }
+  }
+}, function (t, e) {
+  t.exports = function (t) {
+    var e = "undefined" != typeof window && window.location;
+    if (!e) throw new Error("fixUrls requires window.location");
+    if (!t || "string" != typeof t) return t;
+    var n = e.protocol + "//" + e.host,
+      i = n + e.pathname.replace(/\/[^\/]*$/, "/");
+    return t.replace(/url\s*\(((?:[^)(]|\((?:[^)(]+|\([^)(]*\))*\))*)\)/gi, function (t, e) {
+      var o,
+        r = e.trim().replace(/^"(.*)"$/, function (t, e) {
+          return e;
+        }).replace(/^'(.*)'$/, function (t, e) {
+          return e;
+        });
+      return /^(#|data:|http:\/\/|https:\/\/|file:\/\/\/|\s*$)/i.test(r) ? t : (o = 0 === r.indexOf("//") ? r : 0 === r.indexOf("/") ? n + r : i + r.replace(/^\.\//, ""), "url(" + JSON.stringify(o) + ")");
+    });
+  };
+}, function (t, e) {
+  var n, i;
+  window, document, n = jQuery, (i = function i(t, e) {
+    this.init(t, e);
+  }).prototype = {
+    init: function init(t, e) {
+      this.ele = t, this.defaults = {
+        menu: [{
+          text: "text",
+          menus: [{}, {}],
+          callback: function callback() {
+          }
+        }],
+        target: function target(t) {
+        },
+        width: 100,
+        itemHeight: 28,
+        bgColor: "#fff",
+        color: "#333",
+        fontSize: 14,
+        hoverBgColor: "#f5f5f5"
+      }, this.opts = n.extend(!0, {}, this.defaults, e), this.random = new Date().getTime() + parseInt(1e3 * Math.random()), this.eventBind();
+    },
+    renderMenu: function renderMenu(t, e) {
+      var n = this,
+        i = e;
+
+      if (t && t.length) {
+        var o = $('<ul class="hicontextmenu" style="z-index: 9999;"></ul>');
+        i || (i = o).addClass("hicontextmenuroot"), $.each(t, function (t, e) {
+          var i = !!e.disable && e.disable(),
+            r = $('<li class="hicontextmenuitem"><a href="javascript:void(0);"><span>' + (e.text || "") + "</span></a></li>");
+          i && r.addClass("disable"), e.borderBottom && r.addClass("borderBottom"), e.menus && (r.addClass("hicontextsubmenu"), n.renderMenu(e.menus, r)), e.callback && r.click(function (t) {
+            $(this).hasClass("disable") ? t.stopPropagation() : ($(".hicontextmenuroot").remove(), e.callback(), t.stopPropagation());
+          }), o.append(r);
+        }), e && e.append(o);
+      }
+
+      e || $("body").append(i).find(".hicontextmenuroot").hide();
+    },
+    setPosition: function setPosition(t) {
+      $(".hicontextmenuroot").css({
+        left: t.pageX + 2,
+        top: t.pageY + 2
+      }).show();
+    },
+    eventBind: function eventBind() {
+      var t = this;
+      this.ele.on("contextmenu", function (e) {
+        $(".hicontextmenuroot").remove(), e.preventDefault(), t.renderMenu(t.opts.menus), t.setPosition(e), t.opts.target && "function" == typeof t.opts.target && t.opts.target(n(this));
+      }), n("body").on("click", function () {
+        n(".hicontextmenuroot").remove();
+      });
+    }
+  }, n.fn.hicontextMenu = function (t) {
+    return new i(this, t), this;
+  };
+}, function (t, e, n) {
+  "use strict";
+
+  n.r(e);
+  n(22), n(23), n(24), n(25);
+  var i,
+    o = n(0);
+  n(26);
+  window.hiLocalStorage = (i = window.localStorage || null, {
+    saveLocalData: function saveLocalData(t, e) {
+      return !(!i || !e || (i.setItem(t, e), 0));
+    },
+    getLocalData: function getLocalData(t) {
+      return i ? i.getItem(t) : null;
+    },
+    removeItem: function removeItem(t) {
+      i && i.removeItem(t);
+    }
+  });
+  n(27), n(32);
+
+  var _r,
+    a = function () {
+      function t() {
+        this.allElementTypes = [];
+      }
+
+      return Object.defineProperty(t, "instance", {
+        get: function get() {
+          return t._instance || (t._instance = new t()), t._instance;
+        },
+        enumerable: !0,
+        configurable: !0
+      }), t.prototype.addPrintElementTypes = function (t, e) {
+        var n = this;
+        this[t] ? this[t] = this[t].concat(e) : this[t] = e, e.forEach(function (t) {
+          n.allElementTypes = n.allElementTypes.concat(t.printElementTypes);
+        });
+      }, t.prototype.removePrintElementTypes = function (t) {
+        var n = this;
+        delete n[t], n.allElementTypes = n.allElementTypes.filter(function (e) {
+          return !e.tid.startsWith(t)
+        });
+      }, t.prototype.getElementTypeGroups = function (t) {
+        return this[this.formatterModule(t)] || [];
+      }, t.prototype.getElementType = function (t) {
+        var e = this.allElementTypes.filter(function (e) {
+          return e.tid == t;
+        });
+        if (e.length > 0) return e[0];
+      }, t.prototype.updateElementType = function (t, c) {
+        var type = this.getElementType(t);
+        if (c) {
+          var newType = c(type);
+          var idx = this.allElementTypes.findIndex(function (e) {
+            return e.tid == t;
+          })
+          if (idx >= 0) {
+            this.allElementTypes.splice(idx, 1, newType);
+            return newType;
+          }
+        }
+        return type;
+      }, t.prototype.formatterModule = function (t) {
+        return t || "_default";
+      }, t;
+    }(),
+    p = n(1),
+    s = n(2),
+    l = function () {
+      function t() {
+      }
+
+      return t.prototype.createPrintElementTypeHtml = function (t, e) {
+        var n = $('<ul class="hiprint-printElement-type"></ul>');
+        return e.forEach(function (t) {
+          var e = $("<li></li>");
+          e.append('<span class="title">' + t.name + "</span>");
+          var i = $("<ul></ul>");
+          e.append(i), t.printElementTypes.forEach(function (t) {
+            i.append('<li><a class="ep-draggable-item" tid="' + t.tid + '">  ' + t.getText() + " </a></li>");
+          }), n.append(e);
+        }), $(t).append(n), n.find(".ep-draggable-item");
+      }, t;
+    }(),
+    u = n(5),
+    d = n(15),
+    c = function () {
+      return function (t) {
+        this.title = t.title, this.type = t.type;
+      };
+    }(),
+    ctable = function () {
+      return function (t) {
+        this.title = t.title, this.type = t.type, this.editable = t.editable, this.columnDisplayEditable = t.columnDisplayEditable, this.columnDisplayIndexEditable = t.columnDisplayIndexEditable, this.columnTitleEditable = t.columnTitleEditable, this.columnResizable = t.columnResizable, this.columnAlignEditable = t.columnAlignEditable,
+          this.isEnableEditField = t.isEnableEditField, this.isEnableContextMenu = t.isEnableContextMenu, this.isEnableInsertRow = t.isEnableInsertRow, this.isEnableDeleteRow = t.isEnableDeleteRow, this.isEnableInsertColumn = t.isEnableInsertColumn, this.isEnableDeleteColumn = t.isEnableDeleteColumn, this.isEnableMergeCell = t.isEnableMergeCell;
+      };
+    }(),
+    h = function () {
+      function t(t) {
+        var e = this;
+        this.text = t.text, this.field = t.field, this.fields = t.fields, this.title = t.title, this.tid = t.tid, this.data = t.data, this.styler = t.styler, this.formatter = t.formatter, this.type = t.type, this.options = t.options, this.editable = t.editable != void 0 ? t.editable : !0, this.columnDisplayEditable = t.columnDisplayEditable != void 0 ? t.columnDisplayEditable : !0, this.columnDisplayIndexEditable = t.columnDisplayIndexEditable != void 0 ? t.columnDisplayIndexEditable : !0, this.columnTitleEditable = t.columnTitleEditable != void 0 ? t.columnTitleEditable : !0, this.columnResizable = t.columnResizable != void 0 ? t.columnResizable : !0, this.columnAlignEditable = t.columnAlignEditable != void 0 ? t.columnAlignEditable : !0, this.columns = [], (t.columns || []).forEach(function (t, n) {
+          e.columns.push(e.createTableColumnArray(t));
+        }), this.rowStyler = t.rowStyler, this.striped = t.striped, this.groupFields = t.groupFields || [], this.groupFormatter = t.groupFormatter, this.groupFooterFormatter = t.groupFooterFormatter, this.footerFormatter = t.footerFormatter, this.rowsColumnsMerge = t.rowsColumnsMerge, this.rowsColumnsMergeClean = t.rowsColumnsMergeClean, this.groupSequenceContinue = t.groupSequenceContinue, this.gridColumnsFooterFormatter = t.gridColumnsFooterFormatter,
+          this.isEnableEditField = t.isEnableEditField != void 0 ? t.isEnableEditField : !0, this.isEnableContextMenu = t.isEnableContextMenu != void 0 ? t.isEnableContextMenu : !0, this.isEnableInsertRow = t.isEnableInsertRow != void 0 ? t.isEnableInsertRow : !0, this.isEnableDeleteRow = t.isEnableDeleteRow != void 0 ? t.isEnableDeleteRow : !0, this.isEnableInsertColumn = t.isEnableInsertColumn != void 0 ? t.isEnableInsertColumn : !0, this.isEnableDeleteColumn = t.isEnableDeleteColumn != void 0 ? t.isEnableDeleteColumn : !0, this.isEnableMergeCell = t.isEnableMergeCell != void 0 ? t.isEnableMergeCell : !0, this.columnObj = this.makeColumnObj();
+      }
+
+      return t.prototype.getText = function () {
+        return this.text || this.title || "";
+      }, t.prototype.createPrintElement = function (t) {
+        var e = this;
+        return this.columns && 0 == this.columns.length && (t.columns || []).forEach(function (t, n) {
+          e.columns.push(e.createTableColumnArray(t));
+        }), new d.a(this, t);
+      }, t.prototype.getData = function () {
+        return [{}];
+      }, t.prototype.createTableColumnArray = function (t) {
+        var e = [];
+        return t.forEach(function (t, n) {
+          e.push(new u.a(t));
+        }), e;
+      }, t.prototype.getPrintElementTypeEntity = function () {
+        if ('table' == this.type) {
+          return new ctable({
+            title: this.title,
+            type: this.type,
+            editable: this.editable,
+            columnDisplayEditable: this.columnDisplayEditable,
+            columnDisplayIndexEditable: this.columnDisplayIndexEditable,
+            columnResizable: this.columnResizable,
+            columnAlignEditable: this.columnAlignEditable,
+            columnTitleEditable: this.columnTitleEditable,
+            isEnableEditField: this.isEnableEditField,
+            isEnableContextMenu: this.isEnableContextMenu,
+            isEnableInsertRow: this.isEnableInsertRow,
+            isEnableDeleteRow: this.isEnableDeleteRow,
+            isEnableInsertColumn: this.isEnableInsertColumn,
+            isEnableDeleteColumn: this.isEnableDeleteColumn,
+            isEnableMergeCell: this.isEnableMergeCell
+          });
+        }
+        return new c({
+          title: this.title,
+          type: this.type
+        });
+      }, t.prototype.getFields = function () {
+        return this.fields;
+      }, t.prototype.getOptions = function () {
+        return this.options || {};
+      }, t.prototype.getColumnByColumnId = function (t) {
+        return this.columnObj[t];
+      }, t.prototype.makeColumnObj = function (columns) {
+        var t = {};
+        return columns ? columns.forEach(function (e) {
+          (e.id || e.columnId) && (t[e.id || e.columnId] = e);
+        }) : this.columns && this.columns.forEach(function (e) {
+          e.forEach(function (e) {
+            (e.id || e.columnId) && (t[e.id || e.columnId] = e);
+          });
+        }), this.columnObj = t, t;
+      }, t;
+    }(),
+    f = n(4),
+    g = n(3),
+    m = (_r = function r(t, e) {
+      return (_r = Object.setPrototypeOf || _instanceof({
+        __proto__: []
+      }, Array) && function (t, e) {
+        t.__proto__ = e;
+      } || function (t, e) {
+        for (var n in e) {
+          e.hasOwnProperty(n) && (t[n] = e[n]);
+        }
+      })(t, e);
+    }, function (t, e) {
+      function n() {
+        this.constructor = t;
+      }
+
+      _r(t, e), t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype, new n());
+    }),
+    v = function (t) {
+      function e(e, n) {
+        var i = t.call(this, e) || this;
+        return i.options = new g.a(n), i.options.setDefault(new g.a(p.a.instance.image.default).getPrintElementOptionEntity()), i;
+      }
+
+      return m(e, t), e.prototype.getReizeableShowPoints = function () {
+        return ["s","e","se","r"];
+      }, e.prototype.getData = function (t) {
+        var e = "", f = this.getField();
+        t ? e = f ? f.split('.').reduce((a, c) => a ? a[c] : t[c], !1) || "" : this.options.src || this.printElementType.getData() : e = this.options.src || this.printElementType.getData();
+        var n = this.getFormatter();
+        return n && (e = n(e, this.options, this._currenttemplateData)), e || "";
+      }, e.prototype.createTarget = function (t, e) {
+        var n = $('<div  class="hiprint-printElement hiprint-printElement-image" style="position: absolute;"><div class="hiprint-printElement-image-content" style="height:100%;width:100%"></div></div>');
+        return this.updateTargetImage(n, t, e), n;
+      }, e.prototype.initSizeByHtml = function (e) {
+        t.prototype.initSizeByHtml.call(this, e), this.css(e, this.getData());
+      }, e.prototype.getConfigOptions = function () {
+        return p.a.instance.image;
+      }, e.prototype.updateDesignViewFromOptions = function () {
+        this.designTarget && (this.css(this.designTarget, this.getData()), this.updateTargetImage(this.designTarget, this.getTitle(), this.getData()));
+      }, e.prototype.updateTargetImage = function (t, e, n) {
+        var i = t.find(".hiprint-printElement-image-content");
+        i.find("img").length ? i.find("img").attr("src", n) : i.html('<img style="width:100%;height:100%;" src="' + n + '">');
+        if (n.length) i.find("img").css('cssText', `width:100%;height:100%;content:url("${n}")!important`)
+        else i.find("img").css('cssText', 'width:100%;height:100%;')
+        if (this.options.fit) i.find("img").css("object-fit", this.options.fit);
+        if (this.options.borderRadius) i.find("img").css("border-radius", this.options.borderRadius);
+      }, e.prototype.getHtml = function (t, e, n) {
+        return this.getHtml2(t, e, n);
+      }, e;
+    }(f.a),
+    y = function () {
+      var _t4 = function t(e, n) {
+        return (_t4 = Object.setPrototypeOf || _instanceof({
+          __proto__: []
+        }, Array) && function (t, e) {
+          t.__proto__ = e;
+        } || function (t, e) {
+          for (var n in e) {
+            e.hasOwnProperty(n) && (t[n] = e[n]);
+          }
+        })(e, n);
+      };
+
+      return function (e, n) {
+        function i() {
+          this.constructor = e;
+        }
+
+        _t4(e, n), e.prototype = null === n ? Object.create(n) : (i.prototype = n.prototype, new i());
+      };
+    }(),
+    b = function (t) {
+      function e(e) {
+        var n = this;
+        return e = e || {}, (n = t.call(this, e) || this).leftSpaceRemoved = e.leftSpaceRemoved, n;
+      }
+
+      return y(e, t), e.prototype.getHideTitle = function () {
+        return null == this.hideTitle ? this.defaultOptions.hideTitle : this.hideTitle;
+      }, e;
+    }(g.a),
+    E = n(8),
+    T = function () {
+      function t(t, idx, watermarkOptions, pr, scl, e, n, i, r, a, p, s, s1, l, u, d) {
+        this.panelPageRule = pr, this.scale = scl, this.watermarkOptions = watermarkOptions,
+          this.defaultPaperNumberFormat = "${paperNo}-${paperCount}", this.printLine = 0, this.templateId = t, this.panelIdx = idx, this.width = o.a.mm.toPt(e), this.height = o.a.mm.toPt(n), this.mmwidth = e, this.mmheight = n, this.paperHeader = i >= 0 ? i : 0, this.paperFooter = r, this.contentHeight = r - i, this.createTarget(), this.index = u, this.paperNumberLeft = a || parseInt((this.width - 30).toString()), this.paperNumberTop = p || parseInt((this.height - 22).toString()), this.paperNumberDisabled = s, this.paperNumberContinue = s1, this.paperNumberFormat = l, this.referenceElement = d ? $.extend({}, d) : new E.a({
+          top: 0,
+          left: 0,
+          height: 0,
+          width: 0,
+          bottomInLastPaper: 0,
+          beginPrintPaperIndex: 0,
+          printTopInPaper: 0,
+          endPrintPaperIndex: 0
+        });
+      }
+
+      return t.prototype.subscribePaperBaseInfoChanged = function (t) {
+        this.onPaperBaseInfoChanged = t;
+      }, t.prototype.triggerOnPaperBaseInfoChanged = function (t) {
+        this.onPaperBaseInfoChanged && this.onPaperBaseInfoChanged({
+          panelPageRule: this.panelPageRule,
+          scale: this.scale,
+          paperHeader: this.paperHeader,
+          paperFooter: this.paperFooter,
+          paperNumberLeft: this.paperNumberLeft,
+          paperNumberTop: this.paperNumberTop,
+          paperNumberDisabled: this.paperNumberDisabled,
+          paperNumberContinue: this.paperNumberContinue,
+          paperNumberFormat: this.paperNumberFormat
+        });
+        o.a.event.trigger("hiprintTemplateDataChanged_" + this.templateId, t || "妯℃澘璋冩暣");
+      }, t.prototype.setFooter = function (t, e, n, i) {
+        this.firstPaperFooter = t, this.evenPaperFooter = e, this.oddPaperFooter = n, this.lastPaperFooter = i;
+      }, t.prototype.setOffset = function (t, e) {
+        this.setLeftOffset(t), this.setTopOffset(e);
+      }, t.prototype.setLeftOffset = function (t) {
+        t ? this.paperContentTarget.css("left", t + "pt") : this.paperContentTarget[0].style.left = "";
+      }, t.prototype.setTopOffset = function (t) {
+        t ? this.paperContentTarget.css("top", t + "pt") : this.paperContentTarget[0].style.top = "";
+      }, t.prototype.createTarget = function () {
+        this.target = $('<div class="hiprint-printPaper"><div class="hiprint-printPaper-content"></div></div>'), this.paperContentTarget = this.target.find(".hiprint-printPaper-content"), this.target.css("width", this.mmwidth + "mm"), this.target.css("height", this.mmheight - p.a.instance.paperHeightTrim + "mm"), this.target.attr("original-height", this.mmheight), this.zoom(this.scale);
+      }, t.prototype.createHeaderLine = function () {
+        var t = this;
+        this.headerLinetarget = $('<div class="hiprint-headerLine"  style="position: absolute;width: 100%;border-top: 1px dashed #c9bebe;height: 7pt;"></div>'), this.headerLinetarget.css("top", (this.paperHeader || -1) + "pt"), 0 == this.paperHeader && this.headerLinetarget.addClass("hideheaderLinetarget"), this.paperContentTarget.append(this.headerLinetarget), this.dragHeadLineOrFootLine(this.headerLinetarget, function (e, n) {
+          if (n >= t.paperFooter) {
+            n = t.paperFooter - 10;
+          }
+          t.paperHeader = n >= 0 ? n : 0, t.triggerOnPaperBaseInfoChanged();
+        });
+      }, t.prototype.createFooterLine = function () {
+        var t = this;
+        this.footerLinetarget = $('<div class="hiprint-footerLine"  style="position: absolute;width: 100%;border-top: 1px dashed #c9bebe;height: 7pt;"></div>'), this.footerLinetarget.css("top", parseInt(this.paperFooter.toString()) + "pt"), this.paperFooter == this.height && (this.footerLinetarget.css("top", this.mmheight - p.a.instance.paperHeightTrim + "mm"), this.footerLinetarget.addClass("hidefooterLinetarget")), this.paperContentTarget.append(this.footerLinetarget), this.dragHeadLineOrFootLine(this.footerLinetarget, function (e, n) {
+          if (n <= t.paperHeader) {
+            n = t.paperHeader + 10;
+          }
+          t.paperFooter = n, t.triggerOnPaperBaseInfoChanged();
+        });
+      }, t.prototype.createPaperNumber = function (t, d) {
+        var e = this,
+          n = this.target.find(".hiprint-paperNumber");
+        if (n.length) return n.html(t), n;
+        var i = $('<span class="hiprint-paperNumber"  style="position: absolute">' + t + "</span>");
+        return i.css("top", this.paperNumberTop + "pt"), i.css("left", this.paperNumberLeft + "pt"), this.paperContentTarget.append(i), d && this.dragHeadLineOrFootLine(i, function (t, n) {
+          e.paperNumberTop = n, e.paperNumberLeft = t, e.triggerOnPaperBaseInfoChanged();
+        }, !0), i;
+      }, t.prototype.getTarget = function () {
+        return this.target;
+      }, t.prototype.append = function (t) {
+        this.paperContentTarget.append(t);
+      }, t.prototype.updateReferenceElement = function (t) {
+        t && (this.referenceElement = t);
+      }, t.prototype.updatePrintLine = function (t) {
+        t >= this.printLine && (this.printLine = t);
+      }, t.prototype.design = function (t) {
+        var e = this;
+        this.createHeaderLine(), this.createFooterLine(), this.target.addClass("design"), t && t.grid && this.target.addClass("grid"), this.paperNumberTarget = this.createPaperNumber(this.formatPaperNumber(1, 1), true), this.createRuler(), this.createWaterMark(true, this.panelIdx, this.watermarkOptions), this.resetPaperNumber(this.paperNumberTarget), $(this.paperNumberTarget).bind("dblclick.hiprint", function () {
+          null == e.paperNumberDisabled && (e.paperNumberDisabled = !1), e.paperNumberDisabled = !e.paperNumberDisabled, e.resetPaperNumber(e.paperNumberTarget), e.triggerOnPaperBaseInfoChanged("鍒濆");
+        }), $(this.paperNumberTarget).bind("click.hiprint", function () {
+          o.a.event.trigger("BuildCustomOptionSettingEventKey_" + e.templateId, {
+            options: {
+              paperNumberFormat: e.paperNumberFormat,
+              paperNumberDisabled: e.paperNumberDisabled,
+              paperNumberContinue: e.paperNumberContinue
+            },
+            callback: function callback(t) {
+              e.paperNumberDisabled = !!t.paperNumberDisabled || void 0, e.paperNumberContinue = t.paperNumberContinue, e.paperNumberFormat = t.paperNumberFormat ? t.paperNumberFormat : void 0, e.createPaperNumber(e.formatPaperNumber(1, 1), true), e.resetPaperNumber(e.paperNumberTarget), e.triggerOnPaperBaseInfoChanged();
+            }
+          });
+        });
+      }, t.prototype.resetPaperNumber = function (t) {
+        this.paperNumberDisabled ? t.addClass("hiprint-paperNumber-disabled") : t.removeClass("hiprint-paperNumber-disabled");
+      }, t.prototype.updatePaperNumber = function (t, e, n) {
+        var i = this.createPaperNumber(this.formatPaperNumber(t, e));
+        this.paperNumberDisabled ? i.hide() : n && this.index % 2 == 1 && (i[0].style.left = "", i.css("right", this.paperNumberLeft + "pt"));
+      }, t.prototype.formatPaperNumber = function (t, e) {
+        this.createWaterMark(false, t, this.watermarkOptions);
+        return eval("`" + (this.paperNumberFormat ? this.paperNumberFormat : this.defaultPaperNumberFormat).replace("paperNo",t).replace("paperCount",e) + "`");
+      }, t.prototype.dragHeadLineOrFootLine = function (t, e, n) {
+        var i = this;
+        t.hidraggable({
+          axis: n ? void 0 : "v",
+          onDrag: function onDrag(t, n, i) {
+            e(n, i);
+          },
+          moveUnit: "pt",
+          minMove: p.a.instance.movingDistance,
+          onBeforeDrag: function onBeforeDrag(t) {
+            s.a.instance.draging = !0;
+          },
+          getScale: function getScale() {
+            return i.scale || 1;
+          },
+          onStopDrag: function onStopDrag(t) {
+            i.headerLinetarget.css("top", i.paperHeader + "pt");
+            i.footerLinetarget.css("top", i.paperFooter + "pt");
+            s.a.instance.draging = !1, i.footerLinetarget.removeClass("hidefooterLinetarget"), i.headerLinetarget.removeClass("hideheaderLinetarget");
+          }
+        });
+      }, t.prototype.resize = function (t, e) {
+        // 鑾峰彇椤佃剼楂樺害姣斾緥
+        var parperFooterRatio = this.paperFooter / this.height;
+        this.width = o.a.mm.toPt(t), this.height = o.a.mm.toPt(e), this.mmwidth = t, this.mmheight = e, this.target.css("width", t + "mm"), this.target.css("height", e - p.a.instance.paperHeightTrim + "mm"), this.target.attr("original-height", this.mmheight);
+        // 鎸夋瘮渚嬭绠楅〉鑴氶珮搴�
+        var paperFooter = this.height * parperFooterRatio;
+        this.paperFooter = paperFooter || this.height, this.footerLinetarget.css("top", paperFooter + "pt"),
+          this.contentHeight = this.paperFooter - this.paperHeader,
+          // 璁剧疆绾稿紶鍚�, 椤电爜浣嶇疆閲嶇疆闂
+          this.paperNumberLeft = this.paperNumberLeft > this.width ? parseInt((this.width - 30).toString()) : this.paperNumberLeft;
+        this.paperNumberTop = this.paperNumberTop > this.height ? this.paperNumberTop = parseInt((this.height - 22).toString()) : this.paperNumberTop;
+        this.paperNumberTarget.css("top", this.paperNumberTop + "pt"),
+          this.paperNumberTarget.css("left", this.paperNumberLeft + "pt"),
+          this.triggerOnPaperBaseInfoChanged("璋冩暣澶у皬");
+      }, t.prototype.zoom = function (s) {
+        if (s) {
+          this.scale = s, this.target.css("transform", "scale(" + s + ")");
+          if (s > 1) {
+            this.target.css("transform-origin", "-" + s + "% -" + s + "%");
+          } else {
+            this.target.css("transform-origin", "0 0");
+          }
+          this.triggerOnPaperBaseInfoChanged("缂╂斁");
+        }
+      }, t.prototype.getPaperFooter = function (t) {
+        var e = this.index + t;
+        return 0 == e ? this.firstPaperFooter ? this.firstPaperFooter : this.oddPaperFooter ? this.oddPaperFooter : this.paperFooter : e % 2 == 0 ? this.oddPaperFooter ? this.oddPaperFooter : this.paperFooter : e % 2 == 1 ? this.evenPaperFooter ? this.evenPaperFooter : this.paperFooter : void 0;
+      }, t.prototype.getContentHeight = function (t) {
+        return this.getPaperFooter(t) - this.paperHeader;
+      }, t.prototype.createRuler = function () {
+        this.target.append('<div class="hiprint_rul_wrapper">\n                     <img class="h_img" src="' + lImg + '" />\n                     <img class="v_img" src="' + vImg + '" />\n                    </div>');
+      }, t.prototype.createWaterMark = function (watch, idx, opts) {
+        var e = this;
+        var options = Object.assign({}, opts || {}, {
+          id: `${e.templateId}_${e.panelIdx}_${idx || 1}_${watch ? 'design' : e.index}`,
+          watch: watch,
+          container: e.target[0],
+        });
+        if (!options.container) return;
+        if (options.content) {
+          if (watch) {
+            watermark.destroyWatermark(Object.assign({}, options, {
+              id: `${e.templateId}_${e.panelIdx}_${idx || 1}_${e.index}`,
+            }));
+          }
+          watermark.createWatermark(options);
+        } else {
+          watermark.destroyWatermark(options);
+        }
+      }, t.prototype.displayHeight = function () {
+        return this.mmheight - p.a.instance.paperHeightTrim + "mm";
+      }, t.prototype.displayWidth = function () {
+        return this.mmwidth + "mm";
+      }, t.prototype.getPanelTarget = function () {
+        return this.target.parent(".hiprint-printPanel ");
+      }, t;
+    }(),
+    P = n(6),
+    _ = function () {
+      var _t5 = function t(e, n) {
+        return (_t5 = Object.setPrototypeOf || _instanceof({
+          __proto__: []
+        }, Array) && function (t, e) {
+          t.__proto__ = e;
+        } || function (t, e) {
+          for (var n in e) {
+            e.hasOwnProperty(n) && (t[n] = e[n]);
+          }
+        })(e, n);
+      };
+
+      return function (e, n) {
+        function i() {
+          this.constructor = e;
+        }
+
+        _t5(e, n), e.prototype = null === n ? Object.create(n) : (i.prototype = n.prototype, new i());
+      };
+    }(),
+    w = function (t) {
+      function e(e, n) {
+        var i = t.call(this, e) || this;
+        return i.options = new b(n), i.options.setDefault(new b(p.a.instance.longText.default).getPrintElementOptionEntity()), i;
+      }
+
+      return _(e, t), e.prototype.getDesignTarget = function (e) {
+        var n = t.prototype.getDesignTarget.call(this, e);
+        return n.find(".hiprint-printElement-longText-content").css("border", "1px dashed #cebcbc"), n;
+      }, e.prototype.getProxyTarget = function (t) {
+        t && this.SetProxyTargetOption(t);
+        var e = this.getData(),
+          n = this.createTarget(this.printElementType.getText(!0), e);
+        return this.updateTargetSize(n), this.css(n, e), n;
+      }, e.prototype.updateDesignViewFromOptions = function () {
+        if (this.designTarget) {
+          var t = this.getData(),
+            e = this.getHtml(this.designPaper)[0].target;
+          this.designTarget.find(".hiprint-printElement-longText-content").html(e.find(".hiprint-printElement-longText-content").html()), this.css(this.designTarget, t);
+        }
+      }, e.prototype.getConfigOptions = function () {
+        return p.a.instance.longText;
+      }, e.prototype.getTitle = function () {
+        return this.options.title || this.printElementType.title;
+      }, e.prototype.getData = function (t) {
+        var f = this.getField();
+        var e = f ? f.split('.').reduce((a, c) => a ? a[c] : t ? t[c] : "", !1) || "" : "";
+        return t ? e || "" : this.options.testData || this.printElementType.getData() || "";
+      }, e.prototype.updateTargetText = function (t, e, n) {
+        var i = t.find(".hiprint-printElement-longText-content"),
+          o = this.getText(e, n);
+        i.html(o);
+      }, e.prototype.createTarget = function (t, e) {
+        var n = $('<div  class="hiprint-printElement hiprint-printElement-longText" style="position: absolute;"><div class="hiprint-printElement-longText-content hiprint-printElement-content" style="height:100%;width:100%"></div></div>');
+        return this.updateTargetText(n, t, e), n;
+      }, e.prototype.getText = function (t, e) {
+        var n = this.getFormatter();
+        e && (e = 0 != this.options.leftSpaceRemoved ? e.toString().replace(/^\s*/, "") : e);
+        return (this.getField() ? (this.options.getHideTitle() ? "" : t ? t + "锛�" : "") + (n ? n(t, e, this.options, this._currenttemplateData) : e) : n ? n(t, t, this.options, this._currenttemplateData) : t || "") || "";
+      }, e.prototype.getHtml = function (t, e) {
+        this.setCurrenttemplateData(e), this.createTempContainer();
+        var n = this.getPaperHtmlResult(t, e);
+        return this.removeTempContainer(), n;
+      }, e.prototype.getHeightByData = function (t) {
+        this.createTempContainer();
+        var e = this.getPaperHtmlResult(new T("", "", void 0, 1e3, 1e3, 0, 25e3, 0, 0, !0, !0, void 0, 0, void 0), {}, t);
+        return this.removeTempContainer(), e[0].referenceElement.bottomInLastPaper - e[0].referenceElement.printTopInPaper;
+      }, e.prototype.getLongTextIndent = function () {
+        return this.options.longTextIndent ? '<span class="long-text-indent" style="margin-left:' + this.options.longTextIndent + 'pt"></span>' : '<span class="long-text-indent"></span>';
+      }, e.prototype.getPaperHtmlResult = function (t, e, n) {
+        var i = this,
+          o = [],
+          r = 0,
+          a = n || this.getData(e),
+          p = this.getText(this.getTitle(), a),
+          s = this.createTarget(this.getTitle(), this.options.testData || "");
+        this.css(s, a), e ? this.updateTargetWidth(s) : this.updateTargetSize(s), this.getTempContainer().html(""), this.getTempContainer().append(s);
+        var l = [this.getLongTextIndent()],
+          u = p.split(new RegExp("\r|\n", "g"));
+        if (u.forEach(function (t, e) {
+          var n = 0 != i.options.leftSpaceRemoved ? (t || "").toString().replace(/^\s*/, "") : t;
+          l = l.concat(n.split("")), e < u.length - 1 && l.push("<br/>" + i.getLongTextIndent());
+        }), 0 == l.length && (l = [""]), this.isHeaderOrFooter() || this.isFixed() || !e) return (f = this.getStringBySpecificHeight(l, 25e3, s)).target.css("left", this.options.displayLeft()), f.target.css("top", this.options.displayTop()), f.target[0].height = "", o.push(new P.a({
+          target: f.target,
+          printLine: this.options.displayTop() + f.height,
+          referenceElement: new E.a({
+            top: this.options.getTop(),
+            left: this.options.getLeft(),
+            height: this.options.getHeight(),
+            width: this.options.getWidth(),
+            beginPrintPaperIndex: t.index,
+            bottomInLastPaper: this.options.getTop() + f.height,
+            printTopInPaper: this.options.getTop()
+          })
+        })), o;
+
+        for (var d = this.getBeginPrintTopInPaperByReferenceElement(t); l.length > 0;) {
+          var c = 0,
+            h = t.getPaperFooter(r);
+          0 == r && d > h && "none" != t.panelPageRule && (d = d - h + t.paperHeader, o.push(new P.a({
+            target: void 0,
+            printLine: void 0
+          })), r++ , c = t.getContentHeight(r) - (d - t.paperHeader), h = t.getPaperFooter(r));
+          var f = this.getStringBySpecificHeight(l, c > 0 ? c : 0 == r ? h - d : t.getContentHeight(r), s);
+          l.splice(0, f.length);
+          var g = void 0,
+            m = void 0;
+          f.target.css("left", this.options.displayLeft()), f.target[0].height = "", 0 == r || c > 0 ? (m = d, f.target.css("top", m + "pt"), g = l.length > 0 ? d + f.height : null != this.options.lHeight ? d + (f.height > this.options.lHeight ? f.height : this.options.lHeight) : d + f.height) : (m = t.paperHeader, f.target.css("top", m + "pt"), g = m + f.height), o.push(new P.a({
+            target: f.target,
+            printLine: g,
+            referenceElement: new E.a({
+              top: this.options.getTop(),
+              left: this.options.getLeft(),
+              height: this.options.getHeight(),
+              width: this.options.getWidth(),
+              beginPrintPaperIndex: t.index,
+              bottomInLastPaper: g,
+              printTopInPaper: m
+            })
+          })), r++;
+          e && this.updatePanelHeight(g + this.options.getHeight(), t);
+        }
+
+        return o;
+      }, e.prototype.getStringBySpecificHeight = function (t, e, n) {
+        var i = o.a.pt.toPx(e);
+        var r = void 0;
+        var noPaging = "none" == this.panel.panelPageRule;
+        if (noPaging) {
+          r = this.IsPaginationIndex(t, t.length, -1, n);
+        } else {
+          r = this.IsPaginationIndex(t, t.length - 1, i, n);
+        }
+        return r.IsPagination ? r : this.BinarySearch(t, 0, t.length - 1, i, n);
+      }, e.prototype.BinarySearch = function (t, e, n, i, o) {
+        var r = Math.floor((e + n) / 2);
+        if (e > n) return o.find(".hiprint-printElement-longText-content").html(""), {
+          IsPagination: !0,
+          height: 0,
+          length: 0,
+          target: o.clone()
+        };
+        var a = this.IsPaginationIndex(t, r, i, o);
+        return a.IsPagination ? a : "l" == a.move ? this.BinarySearch(t, e, r - 1, i, o) : this.BinarySearch(t, r + 1, n, i, o);
+      }, e.prototype.IsPaginationIndex = function (t, e, n, i) {
+        if (-1 == n) {
+          i.find(".hiprint-printElement-longText-content").html(t.slice(0, e).join(""));
+          var a = i.height();
+          return {
+            IsPagination: !0,
+            height: o.a.px.toPt(a),
+            length: t.length,
+            target: i.clone()
+          }
+        }
+        i.find(".hiprint-printElement-longText-content").html(t.slice(0, e + 2).join(""));
+        var r = i.height();
+        i.find(".hiprint-printElement-longText-content").html(t.slice(0, e + 1).join(""));
+        var a = i.height();
+        return e >= t.length - 1 && a < n ? {
+          IsPagination: !0,
+          height: o.a.px.toPt(a),
+          length: t.length,
+          target: i.clone()
+        } : a <= n && r >= n ? {
+          IsPagination: !0,
+          height: a,
+          length: e + 1,
+          target: i.clone()
+        } : a >= n ? {
+          IsPagination: !1,
+          move: "l"
+        } : r <= n ? {
+          IsPagination: !1,
+          move: "r"
+        } : {
+          IsPagination: !0,
+          result: 1
+        };
+      }, e;
+    }(f.a),
+    x = function () {
+      function t() {
+      }
+
+      return t.replaceEnterAndNewline = function (t, e) {
+        return t.replace(new RegExp("\r|\n|/g", "g"), e);
+      }, t.replaceTab = function (t, e) {
+        return t.replace(new RegExp("\t/g", "g"), e);
+      }, t.replaceEnterAndNewlineAndTab = function (t, e) {
+        return t.replace(new RegExp("\r|\n|\t|/g", "g"), e);
+      }, t;
+    }(),
+    C = function () {
+      var _t6 = function t(e, n) {
+        return (_t6 = Object.setPrototypeOf || _instanceof({
+          __proto__: []
+        }, Array) && function (t, e) {
+          t.__proto__ = e;
+        } || function (t, e) {
+          for (var n in e) {
+            e.hasOwnProperty(n) && (t[n] = e[n]);
+          }
+        })(e, n);
+      };
+
+      return function (e, n) {
+        function i() {
+          this.constructor = e;
+        }
+
+        _t6(e, n), e.prototype = null === n ? Object.create(n) : (i.prototype = n.prototype, new i());
+      };
+    }(),
+    O = function (t) {
+      function e(e) {
+        var n = t.call(this, e) || this;
+        return n.title && (n.title = x.replaceEnterAndNewlineAndTab(n.title, "")), n;
+      }
+
+      return C(e, t), e.prototype.getHideTitle = function () {
+        return null == this.hideTitle ? this.defaultOptions.hideTitle : this.hideTitle;
+      }, e.prototype.getTextType = function () {
+        return (null == this.textType ? this.defaultOptions.textType : this.textType) || "text";
+      }, e.prototype.getFontSize = function () {
+        return (null == this.fontSize ? this.defaultOptions.fontSize : this.fontSize) || 9;
+      }, e.prototype.getbarcodeMode = function () {
+        return (null == this.barcodeMode ? this.defaultOptions.barcodeMode : this.barcodeMode) || "CODE128";
+      }, e.prototype.getBarTextMode = function () {
+        return (null == this.barTextMode ? this.defaultOptions.barTextMode : this.barTextMode) || 'text';
+      }, e.prototype.getBarWidth = function () {
+        return (null == this.barWidth ? this.defaultOptions.barWidth : this.barWidth) || 1;
+      }, e.prototype.getBarAutoWidth = function () {
+        // 璇ュ睘鎬� "true" 涓� true锛屽叾浣欎竴姒備负 false
+        return (null == this.barAutoWidth ? this.defaultOptions.barAutoWidth === "true" : this.barAutoWidth === "true") ?? true;
+      }, e.prototype.getQRcodeLevel = function () {
+        return (null == this.qrCodeLevel ? this.defaultOptions.qrCodeLevel : this.qrCodeLevel) || 0;
+      }, e;
+    }(g.a),
+    H = function () {
+      var _t7 = function t(e, n) {
+        return (_t7 = Object.setPrototypeOf || _instanceof({
+          __proto__: []
+        }, Array) && function (t, e) {
+          t.__proto__ = e;
+        } || function (t, e) {
+          for (var n in e) {
+            e.hasOwnProperty(n) && (t[n] = e[n]);
+          }
+        })(e, n);
+      };
+
+      return function (e, n) {
+        function i() {
+          this.constructor = e;
+        }
+
+        _t7(e, n), e.prototype = null === n ? Object.create(n) : (i.prototype = n.prototype, new i());
+      };
+    }(),
+    D = function (t) {
+      function e(e, n) {
+        var i = t.call(this, e) || this;
+        return i.options = new O(n), i.options.setDefault(new O(p.a.instance.text.default).getPrintElementOptionEntity()), i;
+      }
+
+      return H(e, t), e.prototype.getDesignTarget = function (e) {
+        return t.prototype.getDesignTarget.call(this, e);
+      }, e.prototype.getProxyTarget = function (t) {
+        t && this.SetProxyTargetOption(t);
+        var e = this.getData(),
+          n = this.createTarget(this.printElementType.getText(!0), e);
+        return this.updateTargetSize(n), this.css(n, e), n;
+      }, e.prototype.updateDesignViewFromOptions = function () {
+        // ! pub-beta 0.0.57-beta22 杩欓噷鐨勫鐞嗕技涔庨噸澶嶄簡锛屽奖鍝嶄簡 updateTargetText 鏂规硶鎵ц锛屾晠鍦ㄦ澶勬敞閲婃帀
+        // var els = this.panel.printElements.filter(function (t) {
+        //   return ('block' == t.designTarget.children().last().css('display')
+        //     && t.designTarget.children().last().hasClass('selected')) && !t.printElementType.type.includes('table');
+        // });
+        // els.forEach(ele => {
+        //   var t = ele.getData()
+        //   ele.css(ele.designTarget, t)
+        //   this.updateTargetText(ele.designTarget, ele.getTitle(), t)
+        // })
+        if (this.designTarget) {
+          var t = this.getData();
+          this.css(this.designTarget, t), this.updateTargetText(this.designTarget, this.getTitle(), t);
+        }
+      }, e.prototype.getConfigOptions = function () {
+        return p.a.instance.text;
+      }, e.prototype.getTitle = function () {
+        var t = this.options.title || this.printElementType.title || "";
+        return t && (t = x.replaceEnterAndNewlineAndTab(t, "")), t;
+      }, e.prototype.getData = function (t) {
+        var e = void 0;
+        var f = this.getField();
+        if (e = t ? f ? f.split('.').reduce((a, c) => a ? a[c] : t ? t[c] : "", !1) || "" : "" : this.options.testData || this.printElementType.getData() || "", this.options.format) {
+          if ("datetime" == this.options.dataType) return o.a.dateFormat(e, this.options.format);
+
+          if ("boolean" == this.options.dataType) {
+            var n = this.options.format.split(":");
+            if (n.length > 0) return !0 === e || "true" === e ? n[0] : n[1];
+          }
+        }
+        return e;
+      }, e.prototype.updateTargetText = function (t, e, n, i, rowIndex) {
+        var r = this.getFormatter(),
+          a = t.find(".hiprint-printElement-text-content"),
+          p = "";
+        p = this.getField() ? (this.options.getHideTitle() ? "" : e ? e + "锛�" : "") + hinnn.toUpperCase(this.options.upperCase, (r ? r(e, n, this.options, this._currenttemplateData, t) : n)) : n = hinnn.toUpperCase(this.options.upperCase,(r ? r(e, e, this.options, this._currenttemplateData, t) : e));
+        var s = this.options.getTextType();
+        if ("text" == s) a.html(p); else {
+          if ("barcode" == s) {
+            a.css({
+              "display": "flex",
+              "flex-direction": "column"
+            })
+            // 鍒嗙鏄剧ず鏉″舰鐮佹枃鏈�
+            var divMode = this.options.getBarTextMode() == 'text';
+            // pub-beta 0.0.57-beta22 绉婚櫎鎻掍欢閫氳繃 div 娣诲姞鐨勬枃鏈厓绱狅紝榛樿浣跨敤 JsBarcode 鐢熸垚鏉″舰鐮佹枃鏈�
+            a.html('<svg width="100%" display="block" height="100%" class="hibarcode_imgcode" preserveAspectRatio="none slice"></svg>');
+            if (divMode) {
+              a.append(`<div class="hibarcode_displayValue" style="white-space:nowrap">`);
+            }
+            try {
+              n ? (JsBarcode(a.find(".hibarcode_imgcode")[0], n, {
+                format: this.options.getbarcodeMode(),
+                width: this.options.getBarWidth(),
+                textMargin: -1,
+                lineColor: this.options.color || "#000000",
+                margin: 0,
+                height: parseInt(o.a.pt.toPx(this.options.getHeight() || 10).toString()),
+                displayValue: divMode ? false : !this.options.hideTitle,
+              }), a.find(".hibarcode_imgcode").attr("height", "100%"), a.find(".hibarcode_imgcode").attr("width", "100%"),
+              divMode && (this.options.hideTitle || a.find(".hibarcode_displayValue").html(n))): a.html("");
+              // pub-beta 0.0.57-beta22 瑙e喅鏉″舰鐮佽嚜鍔ㄥ搴﹂棶棰�
+              let svgWidth = a.find(".hibarcode_imgcode rect")[0].attributes.width.value
+              svgWidth = Math.ceil(hinnn.px.toPt(svgWidth * 1.05));
+              if (this.options.getBarAutoWidth() && svgWidth > this.options.width) {
+                a.parent().css("width", svgWidth + 'pt')
+                this.options.width = svgWidth;
+              }
+            } catch (t) {
+              console.log(t), a.html(`${i18n.__('姝ゆ牸寮忎笉鏀寔璇ユ枃鏈�')}`);
+            }
+          }
+
+          if ("qrcode" == s) {
+            a.html("");
+
+            try {
+              if (n) {
+                a.css({
+                  "display": "flex",
+                  "flex-direction": "column"
+                })
+                var width = this.options.width
+                var height = this.options.height - (!this.options.hideTitle ? this.options.lineHeight ?? (this.options.fontSize ?? 10.5) * 1.5 : 0)
+                var box = $('<div class="hiqrcode_imgcode"></div>').css({
+                  "width": Math.min(width, height) + 'pt',
+                  "height": Math.min(width, height) + 'pt',
+                  "margin": "auto"
+                })
+                new QRCode(box[0], {
+                  width: "100%",
+                  height: "100%",
+                  colorDark: this.options.color || "#000000",
+                  useSVG: !0,
+                  correctLevel: this.options.getQRcodeLevel()
+                }).makeCode(n);
+                a.html(box), !this.options.hideTitle && a.append(`<div class="hiqrcode_displayValue" style="white-space:nowrap">${n}</div>`);
+              }
+            } catch (t) {
+              console.log(t), a.html(`${i18n.__('浜岀淮鐮佺敓鎴愬け璐�')}`);
+            }
+          }
+        }
+      }, e.prototype.onResize = function (e, n, i, o, r) {
+        t.prototype.onResize.call(this, e, n, i, o, r);
+        "barcode" != this.options.getTextType() && "qrcode" != this.options.getTextType() || this.updateTargetText(this.designTarget, this.getTitle(), this.getData());
+      }, e.prototype.createTarget = function (t, e, n) {
+        var i = $('<div tabindex="1" class="hiprint-printElement hiprint-printElement-text" style="position: absolute;"><div class="hiprint-printElement-text-content hiprint-printElement-content" style="height:100%;width:100%"></div></div>');
+        return this.updateTargetText(i, t, e, n), i;
+      }, e.prototype.getHtml = function (t, e, n) {
+        return this.getHtml2(t, e, n);
+      }, e;
+    }(f.a),
+    I = function () {
+      var _t8 = function t(e, n) {
+        return (_t8 = Object.setPrototypeOf || _instanceof({
+          __proto__: []
+        }, Array) && function (t, e) {
+          t.__proto__ = e;
+        } || function (t, e) {
+          for (var n in e) {
+            e.hasOwnProperty(n) && (t[n] = e[n]);
+          }
+        })(e, n);
+      };
+
+      return function (e, n) {
+        function i() {
+          this.constructor = e;
+        }
+
+        _t8(e, n), e.prototype = null === n ? Object.create(n) : (i.prototype = n.prototype, new i());
+      };
+    }(),
+    R = function (t) {
+      function e(e) {
+        return t.call(this, e) || this;
+      }
+
+      return I(e, t), e;
+    }(g.a),
+    M = function () {
+      var _t9 = function t(e, n) {
+        return (_t9 = Object.setPrototypeOf || _instanceof({
+          __proto__: []
+        }, Array) && function (t, e) {
+          t.__proto__ = e;
+        } || function (t, e) {
+          for (var n in e) {
+            e.hasOwnProperty(n) && (t[n] = e[n]);
+          }
+        })(e, n);
+      };
+
+      return function (e, n) {
+        function i() {
+          this.constructor = e;
+        }
+
+        _t9(e, n), e.prototype = null === n ? Object.create(n) : (i.prototype = n.prototype, new i());
+      };
+    }(),
+    S = function (t) {
+      function e(e, n) {
+        var i = t.call(this, e) || this;
+        return i.options = new R(n), i.options.setDefault(new R(p.a.instance.html.default).getPrintElementOptionEntity()), i;
+      }
+
+      return M(e, t), e.prototype.updateDesignViewFromOptions = function () {
+        if (this.designTarget) {
+          var t = this.getData();
+          this.css(this.designTarget, t), this.updateTargetHtml();
+        }
+      }, e.prototype.updateTargetHtml = function () {
+        var t = this.getFormatter();
+
+        if (t) {
+          var e = t(this.getData(), this.options, this._currenttemplateData);
+          this.designTarget.find(".hiprint-printElement-html-content").html(e);
+        }
+      }, e.prototype.getConfigOptions = function () {
+        return p.a.instance.html;
+      }, e.prototype.createTarget = function (t, e) {
+        var n = $('<div  class="hiprint-printElement hiprint-printElement-html" style="position: absolute;"><div class="hiprint-printElement-html-content" style="height:100%;width:100%"></div></div>'),
+          i = this.getFormatter();
+
+        if (i) {
+          var o = i(this.getData(), this.options, this._currenttemplateData);
+          n.find(".hiprint-printElement-html-content").append(o);
+        } else this.options.content && n.find(".hiprint-printElement-html-content").append(this.options.content);
+
+        return n;
+      }, e.prototype.getHtml = function (t, e, n) {
+        return this.getHtml2(t, e, n);
+      }, e;
+    }(f.a),
+    B = function () {
+      var _t10 = function t(e, n) {
+        return (_t10 = Object.setPrototypeOf || _instanceof({
+          __proto__: []
+        }, Array) && function (t, e) {
+          t.__proto__ = e;
+        } || function (t, e) {
+          for (var n in e) {
+            e.hasOwnProperty(n) && (t[n] = e[n]);
+          }
+        })(e, n);
+      };
+
+      return function (e, n) {
+        function i() {
+          this.constructor = e;
+        }
+
+        _t10(e, n), e.prototype = null === n ? Object.create(n) : (i.prototype = n.prototype, new i());
+      };
+    }(),
+    F = function (t) {
+      function e(e, n) {
+        var i = t.call(this, e) || this;
+        return i.options = new g.a(n), i.options.setDefault(new g.a(p.a.instance.vline.default).getPrintElementOptionEntity()), i;
+      }
+
+      return B(e, t), e.prototype.updateDesignViewFromOptions = function () {
+        if (this.designTarget) {
+          var t = this.getData();
+          this.css(this.designTarget, t);
+        }
+      }, e.prototype.getConfigOptions = function () {
+        return p.a.instance.vline;
+      }, e.prototype.createTarget = function (t, e) {
+        return $('<div class="hiprint-printElement hiprint-printElement-vline" style="border-left:1px solid;position: absolute;"></div>');
+      }, e.prototype.getReizeableShowPoints = function () {
+        return ["s", "r"];
+      }, e.prototype.getHtml = function (t, e, n) {
+        return this.getHtml2(t, e, n);
+      }, e;
+    }(f.a),
+    L = function () {
+      var _t11 = function t(e, n) {
+        return (_t11 = Object.setPrototypeOf || _instanceof({
+          __proto__: []
+        }, Array) && function (t, e) {
+          t.__proto__ = e;
+        } || function (t, e) {
+          for (var n in e) {
+            e.hasOwnProperty(n) && (t[n] = e[n]);
+          }
+        })(e, n);
+      };
+
+      return function (e, n) {
+        function i() {
+          this.constructor = e;
+        }
+
+        _t11(e, n), e.prototype = null === n ? Object.create(n) : (i.prototype = n.prototype, new i());
+      };
+    }(),
+    A = function (t) {
+      function e(e, n) {
+        var i = t.call(this, e) || this;
+        return i.options = new g.a(n), i.options.setDefault(new g.a(p.a.instance.hline.default).getPrintElementOptionEntity()), i;
+      }
+
+      return L(e, t), e.prototype.updateDesignViewFromOptions = function () {
+        if (this.designTarget) {
+          var t = this.getData();
+          this.css(this.designTarget, t);
+        }
+      }, e.prototype.getConfigOptions = function () {
+        return p.a.instance.hline;
+      }, e.prototype.createTarget = function (t, e) {
+        return $('<div class="hiprint-printElement hiprint-printElement-hline" style="border-top:1px solid;position: absolute;"></div>');
+      }, e.prototype.getReizeableShowPoints = function () {
+        return ["e", "r"];
+      }, e;
+    }(f.a),
+    z = function () {
+      var _t12 = function t(e, n) {
+        return (_t12 = Object.setPrototypeOf || _instanceof({
+          __proto__: []
+        }, Array) && function (t, e) {
+          t.__proto__ = e;
+        } || function (t, e) {
+          for (var n in e) {
+            e.hasOwnProperty(n) && (t[n] = e[n]);
+          }
+        })(e, n);
+      };
+
+      return function (e, n) {
+        function i() {
+          this.constructor = e;
+        }
+
+        _t12(e, n), e.prototype = null === n ? Object.create(n) : (i.prototype = n.prototype, new i());
+      };
+    }(),
+    k = function (t) {
+      function e(e, n) {
+        var i = t.call(this, e) || this;
+        return i.options = new g.a(n), i.options.setDefault(new g.a(p.a.instance.rect.default).getPrintElementOptionEntity()), i;
+      }
+
+      return z(e, t), e.prototype.updateDesignViewFromOptions = function () {
+        if (this.designTarget) {
+          var t = this.getData();
+          this.css(this.designTarget, t);
+        }
+      }, e.prototype.getConfigOptions = function () {
+        return p.a.instance.rect;
+      }, e.prototype.createTarget = function (t, e) {
+        return $('<div class="hiprint-printElement hiprint-printElement-rect" style="border:1px solid;position: absolute;"></div>');
+      }, e.prototype.getHtml = function (t, e, n) {
+        return this.getHtml2(t, e, n);
+      }, e;
+    }(f.a),
+    N = function () {
+      var _t13 = function t(e, n) {
+        return (_t13 = Object.setPrototypeOf || _instanceof({
+          __proto__: []
+        }, Array) && function (t, e) {
+          t.__proto__ = e;
+        } || function (t, e) {
+          for (var n in e) {
+            e.hasOwnProperty(n) && (t[n] = e[n]);
+          }
+        })(e, n);
+      };
+
+      return function (e, n) {
+        function i() {
+          this.constructor = e;
+        }
+
+        _t13(e, n), e.prototype = null === n ? Object.create(n) : (i.prototype = n.prototype, new i());
+      };
+    }(),
+    V = function (t) {
+      function e(e, n) {
+        var i = t.call(this, e) || this;
+        return i.options = new g.a(n), i.options.setDefault(new g.a(p.a.instance.oval.default).getPrintElementOptionEntity()), i;
+      }
+
+      return N(e, t), e.prototype.updateDesignViewFromOptions = function () {
+        if (this.designTarget) {
+          var t = this.getData();
+          this.css(this.designTarget, t);
+        }
+      }, e.prototype.getConfigOptions = function () {
+        return p.a.instance.oval;
+      }, e.prototype.createTarget = function (t, e) {
+        return $('<div class="hiprint-printElement hiprint-printElement-oval" style="border:1px solid;position: absolute;border-radius: 50%;"></div>');
+      }, e.prototype.getHtml = function (t, e, n) {
+        return this.getHtml2(t, e, n);
+      }, e;
+    }(f.a),
+    barcode = function(t) {
+      function e(e, n) {
+        var i = t.call(this, e) || this;
+        return i.options = new g.a(n), i.options.setDefault(new g.a(p.a.instance.barcode.default).getPrintElementOptionEntity()), i;
+      }
+      return N(e, t), e.prototype.updateDesignViewFromOptions = function () {
+        if (this.designTarget) {
+          var t = this.getData();
+          this.css(this.designTarget, t), this.initBarcode(this.designTarget, this.getTitle(), this.getData());
+        }
+      }, e.prototype.getConfigOptions = function () {
+        return p.a.instance.barcode;
+      }, e.prototype.getBarAutoWidth = function () {
+        return (null == this.options.barAutoWidth ? this.options.defaultOptions.barAutoWidth === "true" : this.options.barAutoWidth === "true") ?? true;
+      }, e.prototype.onResize = function (e, n, i, o, r) {
+        t.prototype.onResize.call(this, e, n, i, o, r);
+        this.initBarcode(this.designTarget, this.getTitle(), this.getData())
+      }, e.prototype.getTitle = function () {
+        return this.options.title || this.printElementType.title;
+      }, e.prototype.getData = function (t) {
+        var e = void 0;
+        var f = this.getField();
+        e = t ? f ? f.split('.').reduce((a, c) => a ? a[c] : t ? t[c] : "", !1) || "" : "" : this.options.testData || this.printElementType.getData() || ""
+        return e;
+      }, e.prototype.initBarcode = function (designTarget, title, text) {
+        designTarget = designTarget || this.designTarget
+        var content = designTarget.find('.hiprint-printElement-barcode-content')
+        try {
+          // 璁$畻 barcode 鐨勯珮搴︼紝鍒ゆ柇鏄惁闇�瑕佸噺鍘� title锛屼娇 title 鍖呭惈鍦ㄥ厓绱犲唴閮�
+          const height = o.a.pt.toMm(this.options.height - (!this.options.hideTitle ? this.options.lineHeight ?? (this.options.fontSize ?? 10.5) * 1.5 :0));
+          var barcode = bwipjs.toSVG({
+            bcid: this.options.barcodeType || 'code128',
+            text: text || this.options.testData || this.options.title,
+            scale: this.options.barWidth || 1,
+            width: !this.getBarAutoWidth() ? parseInt(o.a.pt.toMm(this.options.getWidth())) : '',
+            height: parseInt(height),
+            includetext: !this.options.hideTitle,
+            barcolor: this.options.barColor || "#000",
+          })
+          // pub-beta 0.0.57-beta22 浼樺寲浜嗘潯鐮佽嚜鍔ㄨ皟鏁村搴︾殑閫昏緫锛宼itle 鏂囨湰鏀逛负浣跨敤 bwipjs 鏂囨湰鍐呴儴瀹炵幇
+          barcode = $(barcode)
+          // pub-beta 0.0.57-beta22 svg 鍏冪礌闇�瑕佹坊鍔� preserveAspectRatio 灞炴�э紝浣垮叾妯悜鍙互鑷�傚簲缂╂斁
+          barcode.attr("preserveAspectRatio", "none slice")
+          let svgWidth = barcode[0].attributes.viewBox.value.split(" ")[2]; // 閫氳繃 viewBox 灞炴�ц幏鍙� bwipjs 鍐呴儴鐢熸垚鐨� svg 瀹藉害
+          svgWidth = Math.ceil(hinnn.px.toPt(svgWidth * 1.05));
+          if (this.getBarAutoWidth() && svgWidth > this.options.width) {
+            content.parent().css("width", svgWidth + 'pt')
+            barcode.css("height", "100%");
+            this.options.width = svgWidth;
+          }
+          content.html(barcode)
+          // if (!this.options.hideTitle) {
+          //   const titleText = title ? title + ( text ? ':' : '' ) : '';
+          //   const textAlign = this.options.textAlign || 'center';
+          //   // 鏀寔type涓篵arcode鐨則extAlign灞炴��
+          //   const textStyle = textAlign === 'justify' ? 'text-align-last: justify;text-justify: distribute-all-lines;' : `text-align: ${ textAlign };`
+          //   content.append($(`<div class="hiprint-printElement-barcode-content-title" style="${ textStyle }">${ titleText }${ text }</div>`))
+          // }
+        } catch (error) {
+          console.error(error)
+          content.html($(`<div>${i18n.__('鏉″舰鐮佺敓鎴愬け璐�')}</div>`))
+        }
+      },
+      // 璁剧疆 barcode 鍏冪礌 resize 鎺у埗鐐�
+      e.prototype.getReizeableShowPoints = function () {
+        return ['s', 'e', 'se', 'r'];
+      }, e.prototype.createTarget = function (title, data) {
+        var designTarget = $('<div class="hiprint-printElement hiprint-printElement-barcode" style="position: absolute;"><div class="hiprint-printElement-barcode-content" style="height:100%;width:100%;display:flex;flex-direction:column"></div></div>');
+        this.initBarcode(designTarget, title, data);
+        return designTarget;
+      }, e.prototype.getHtml = function (t, e, n) {
+        return this.getHtml2(t, e, n)
+      }, e;
+    }(f.a),
+    qrcode = function(t) {
+      function e(e, n) {
+        var i = t.call(this, e) || this;
+        return i.options = new g.a(n), i.options.setDefault(new g.a(p.a.instance.qrcode.default).getPrintElementOptionEntity()), i;
+      }
+      return N(e, t), e.prototype.updateDesignViewFromOptions = function () {
+        if (this.designTarget) {
+          var t = this.getData();
+          this.css(this.designTarget, t), this.initQrcode(this.designTarget, this.getTitle(), this.getData());
+        }
+      }, e.prototype.getConfigOptions = function () {
+        return p.a.instance.qrcode;
+      }, e.prototype.onResize = function (e, n, i, o, r) {
+        t.prototype.onResize.call(this, e, n, i, o, r);
+        this.initQrcode(this.designTarget, this.getTitle(), this.getData())
+      }, e.prototype.getTitle = function () {
+        return this.options.title || this.printElementType.title;
+      }, e.prototype.getData = function (t) {
+        var e = void 0;
+        var f = this.getField();
+        e = t ? f ? f.split('.').reduce((a, c) => a ? a[c] : t ? t[c] : "", !1) || "" : "" : this.options.testData || this.printElementType.getData() || ""
+        return e;
+      }, e.prototype.initQrcode = function (designTarget, title, text) {
+        designTarget = designTarget || this.designTarget
+        var content = designTarget.find('.hiprint-printElement-qrcode-content')
+        try {
+          const width = o.a.pt.toPx(this.options.getWidth());
+          // 璁$畻 qrcode 鐨勯珮搴︼紝鍒ゆ柇鏄惁闇�瑕佸噺鍘� title锛屼娇 title 鍖呭惈鍦ㄥ厓绱犲唴閮�
+          const height = o.a.pt.toPx(this.options.height - (!this.options.hideTitle ? this.options.lineHeight ?? (this.options.fontSize ?? 10.5) * 1.5 :0));
+          // 鏍规嵁瀹介珮 鍒ゆ柇 qrcode 涓婁笅銆佸乏鍙� 鐣欑櫧杈硅窛
+          const paddingwidth = width >= height ? Math.abs(parseInt((width - height) / 2)) : 0;
+          const paddingheight = width >= height ? 0 : Math.abs(parseInt((height - width) / 2));
+          var qrcode = bwipjs.toSVG({
+            bcid: this.options.qrcodeType || 'qrcode',
+            text: text || this.options.testData || this.options.title,
+            scale: 1,
+            paddingwidth,
+            paddingheight,
+            // 淇濇寔 qrcode 濮嬬粓涓烘鏂瑰舰
+            width: Math.min(parseInt(width / 2.835), parseInt(height / 2.835)),
+            height: Math.min(parseInt(width / 2.835), parseInt(height / 2.835)),
+            includetext: false,
+            eclevel: ['M', 'L', 'H', 'Q'][this.options.qrCodeLevel ?? 0],
+            barcolor: this.options.barColor || "#000",
+          })
+          content.html($(qrcode))
+          if (!this.options.hideTitle) {
+            const titleText = title ? title + ( text ? ':' : '' ) : '';
+            const textAlign = this.options.textAlign || 'center';
+            // 鏀寔type涓簈rcode鐨則extAlign灞炴��
+            const textStyle = textAlign === 'justify' ? 'text-align-last: justify;text-justify: distribute-all-lines;' : `text-align: ${ textAlign };`
+            content.append($(`<div class="hiprint-printElement-qrcode-content-title" style="${ textStyle }">${ titleText }${ text }</div>`))
+          }
+        } catch (error) {
+          console.error(error)
+          content.html($(`<div>${i18n.__('浜岀淮鐮佺敓鎴愬け璐�')}</div>`))
+        }
+      },
+      // 璁剧疆 qrcode 鍏冪礌 resize 鎺у埗鐐�
+      e.prototype.getReizeableShowPoints = function () {
+        return ['s', 'e', 'se', 'r'];
+      }, e.prototype.createTarget = function (title, data) {
+        var designTarget = $('<div class="hiprint-printElement hiprint-printElement-qrcode" style="position: absolute;"><div class="hiprint-printElement-qrcode-content" style="height:100%;width:100%;display:flex;flex-direction:column"></div></div>');
+        this.initQrcode(designTarget, title, data);
+        return designTarget;
+      }, e.prototype.getHtml = function (t, e, n) {
+        return this.getHtml2(t, e, n)
+      }, e;
+    }(f.a),
+    W = function () {
+      function t() {
+      }
+
+      return t.createPrintElement = function (t, e) {
+        return "text" == t.type ? new D(t, e) : "image" == t.type ? new v(t, e) : "longText" == t.type ? new w(t, e) : "table" == t.type ? new d.a(t, e) : "html" == t.type ? new S(t, e) : "vline" == t.type ? new F(t, e) : "hline" == t.type ? new A(t, e) : "rect" == t.type ? new k(t, e) : "oval" == t.type ? new V(t, e) : "barcode" == t.type ? new barcode(t, e) : "qrcode" == t.type ? new qrcode(t, e) : void 0;
+      }, t;
+    }(),
+    j = function () {
+      function t(t) {
+        this.field = t.field, this.fields = t.fields, this.title = t.title, this.text = t.text, this.tid = t.tid, this.data = t.data, this.styler = t.styler, this.formatter = t.formatter, this.type = t.type, this.onRendered = t.onRendered, this.options = t.options;
+      }
+
+      return t.prototype.getText = function (t) {
+        return t ? this.title || this.text || "" : this.text || this.title || "";
+      }, t.prototype.getData = function () {
+        return this.data;
+      }, t.prototype.createPrintElement = function (t) {
+        var e = {};
+        return $.extend(e, t || {}), W.createPrintElement(this, e);
+      }, t.prototype.getPrintElementTypeEntity = function () {
+        return new c({
+          title: this.title,
+          type: this.type
+        });
+      }, t.prototype.getFields = function () {
+        return this.fields;
+      }, t.prototype.getOptions = function () {
+        return this.options || {};
+      }, t;
+    }(),
+    U = n(16),
+    K = n(12),
+    G = function () {
+      var _t14 = function t(e, n) {
+        return (_t14 = Object.setPrototypeOf || _instanceof({
+          __proto__: []
+        }, Array) && function (t, e) {
+          t.__proto__ = e;
+        } || function (t, e) {
+          for (var n in e) {
+            e.hasOwnProperty(n) && (t[n] = e[n]);
+          }
+        })(e, n);
+      };
+
+      return function (e, n) {
+        function i() {
+          this.constructor = e;
+        }
+
+        _t14(e, n), e.prototype = null === n ? Object.create(n) : (i.prototype = n.prototype, new i());
+      };
+    }(),
+    q = function (t) {
+      function e(e) {
+        var n = t.call(this, e) || this;
+        (e = e || {}).columns ? (n.columns = [], e.columns.forEach(function (t) {
+          n.columns.push(new K.a(t));
+        })) : n.columns = [new K.a({
+          columns: [new u.a({
+            width: 100
+          }), new u.a({
+            width: 100
+          })]
+        })];
+        return n.lHeight = e.lHeight, n.autoCompletion = e.autoCompletion, n.tableFooterRepeat = e.tableFooterRepeat, n;
+      }
+
+      return G(e, t), e.prototype.getPrintElementOptionEntity = function () {
+        var e = t.prototype.getPrintElementOptionEntity.call(this);
+        e.fields = this.fields;
+        return e.columns = [], this.columns.forEach(function (t) {
+          e.columns.push(t.getPrintElementOptionEntity());
+        }), e;
+      }, e;
+    }(g.a),
+    Q = function () {
+      var _t16 = function t(e, n) {
+        return (_t16 = Object.setPrototypeOf || _instanceof({
+          __proto__: []
+        }, Array) && function (t, e) {
+          t.__proto__ = e;
+        } || function (t, e) {
+          for (var n in e) {
+            e.hasOwnProperty(n) && (t[n] = e[n]);
+          }
+        })(e, n);
+      };
+
+      return function (e, n) {
+        function i() {
+          this.constructor = e;
+        }
+
+        _t16(e, n), e.prototype = null === n ? Object.create(n) : (i.prototype = n.prototype, new i());
+      };
+    }(),
+    tt = function () {
+      var _t17 = function t(e, n) {
+        return (_t17 = Object.setPrototypeOf || _instanceof({
+          __proto__: []
+        }, Array) && function (t, e) {
+          t.__proto__ = e;
+        } || function (t, e) {
+          for (var n in e) {
+            e.hasOwnProperty(n) && (t[n] = e[n]);
+          }
+        })(e, n);
+      };
+
+      return function (e, n) {
+        function i() {
+          this.constructor = e;
+        }
+
+        _t17(e, n), e.prototype = null === n ? Object.create(n) : (i.prototype = n.prototype, new i());
+      };
+    }(),
+    et = function (t) {
+      function e(e) {
+        return t.call(this, e) || this;
+      }
+
+      return tt(e, t), e.prototype.createPrintElement = function (t) {
+        var e = {};
+        return $.extend(e, t || {}), W.createPrintElement(this, e);
+      }, e.prototype.getPrintElementTypeEntity = function () {
+        return new c({
+          title: this.title,
+          type: this.type
+        });
+      }, e;
+    }(j),
+    nt = function () {
+      function t() {
+      }
+
+      return t.createPrintElementType = function (t) {
+        return t.type = t.type || "text", "text" == t.type ? new et(t) : "table" == t.type ? new h(t) : new j(t);
+      }, t;
+    }(),
+    it = function () {
+      function t() {
+      }
+
+      return t.getElementTypeGroups = function (e) {
+        var n = t.formatterModule(e);
+        return a.instance[n] || [];
+      }, t.getElementType = function (t, e) {
+        if (t) return a.instance.getElementType(t);
+        nt.createPrintElementType({
+          type: e
+        });
+      }, t.build = function (e, n) {
+        var i = t.formatterModule(n),
+          o = new l().createPrintElementTypeHtml(e, this.getElementTypeGroups(i));
+        this.enableDrag(o);
+      }, t.buildByHtml = function (t) {
+        this.enableDrag(t);
+      }, t.enableDrag = function (e) {
+        e.hidraggable({
+          revert: !0,
+          proxy: function proxy(t) {
+            var e = s.a.instance.getDragingPrintElement(),
+              n = e.printElement.getProxyTarget(e.printElement.printElementType.getOptions());
+            return n.appendTo("body"), n.css("z-index", "9999"), n;
+          },
+          moveUnit: "pt",
+          minMove: 4,
+          onBeforeDrag: function onBeforeDrag(e) {
+            s.a.instance.draging = !0;
+            var tid = $(e.data.target).attr("tid");
+            var n = t.getElementType(tid, $(e.data.target).attr("ptype"));
+            if (!n) {
+              throw new Error(`${i18n.__('璇锋鏌� hiprint.init 鐨� provider 鏄惁閰嶇疆浜�')} [${tid}]`);
+              return !1;
+            }
+            var ele = n.createPrintElement();
+            if (!ele) {
+              if (n.type == 'tableCustom') {
+                throw new Error(`${i18n.__("宸茬Щ闄�'tableCustom',璇锋浛鎹娇鐢�'table'璇︽儏瑙佹洿鏂拌褰�")}`);
+                return !1;
+              }
+            }
+            return s.a.instance.setDragingPrintElement(ele), !0;
+          },
+          onDrag: function onDrag(t, e, n) {
+            s.a.instance.getDragingPrintElement().updatePosition(e, n);
+          },
+          onStopDrag: function onStopDrag(t) {
+            s.a.instance.draging = !1;
+          }
+        });
+      }, t.formatterModule = function (t) {
+        return t || "_default";
+      }, t;
+    }(),
+    ot = function () {
+      return function (t, e) {
+        var n = this;
+        this.name = t, this.printElementTypes = [], e.forEach(function (t) {
+          n.printElementTypes.push(nt.createPrintElementType(t));
+        });
+      };
+    }(),
+    rt = function () {
+      return function (t) {
+        if (this.index = t.index, this.name = t.name, this.paperType = t.paperType, this.paperType) {
+          var e = s.a.instance[this.paperType];
+          t.height ? (this.height = t.height, this.width = t.width) : (this.height = e.height, this.width = e.width);
+        } else this.height = t.height, this.width = t.width;
+
+        this.paperHeader = t.paperHeader || 0, this.paperFooter = t.paperFooter || o.a.mm.toPt(this.height), this.printElements = t.printElements || [], this.paperNumberLeft = t.paperNumberLeft, this.paperNumberTop = t.paperNumberTop, this.paperNumberDisabled = t.paperNumberDisabled, this.paperNumberContinue = t.paperNumberContinue, this.paperNumberFormat = t.paperNumberFormat, this.panelPaperRule = t.panelPaperRule, this.panelPageRule = t.panelPageRule, this.rotate = t.rotate || void 0, this.firstPaperFooter = t.firstPaperFooter, this.evenPaperFooter = t.evenPaperFooter, this.oddPaperFooter = t.oddPaperFooter, this.lastPaperFooter = t.lastPaperFooter, this.topOffset = t.topOffset, this.fontFamily = t.fontFamily, this.leftOffset = t.leftOffset, this.orient = t.orient, this.scale = t.scale, this.watermarkOptions= t.watermarkOptions, this.panelLayoutOptions = t.panelLayoutOptions;
+      };
+    }(),
+    at = function () {
+      function t(t, e, n, i) {
+        this.bx = t, this.by = e, this.ex = t, this.ey = e, this.startX = this.minX = t, this.startY = this.minY = e, this.maxX = t, this.maxY = e, this.lastLeft = n, this.lastTop = i;
+      }
+
+      return t.prototype.updateRect = function (t, e, i) {
+        var scale = i.designPaper.scale||1.0
+        this.ex = t
+        this.ey = e
+        this.minX = this.startX/scale < t/scale ? this.startX/scale : t/scale,
+        this.minY = this.startY/scale < e/scale ? this.startY/scale : e/scale,
+        this.maxX = this.startX/scale < t/scale ? t/scale : this.startX/scale,
+        this.maxY = this.startY/scale < e/scale ? e/scale : this.startY/scale;
+
+      }, t.prototype.updatePositionByMultipleSelect = function (t, e) {
+        null != t && (this.lastLeft = this.lastLeft + t), null != e && (this.lastTop = this.lastTop + e), this.target.css({
+          left: this.lastLeft + "pt",
+          top: this.lastTop + "pt"
+        });
+      }, t;
+    }(),
+    pt = function () {
+      function t(t, e) {
+        this.templateId = e, this.index = t.index, this.name = t.name, this.width = t.width, this.height = t.height, this.paperType = t.paperType, this.paperHeader = t.paperHeader, this.paperFooter = t.paperFooter, this.initPrintElements(t.printElements), this.paperNumberLeft = t.paperNumberLeft, this.paperNumberTop = t.paperNumberTop, this.paperNumberDisabled = t.paperNumberDisabled, this.paperNumberContinue = t.paperNumberContinue == void 0 ? true : t.paperNumberContinue, this.paperNumberFormat = t.paperNumberFormat, this.panelPaperRule = t.panelPaperRule, this.panelPageRule = t.panelPageRule, this.firstPaperFooter = t.firstPaperFooter, this.evenPaperFooter = t.evenPaperFooter, this.oddPaperFooter = t.oddPaperFooter, this.lastPaperFooter = t.lastPaperFooter, this.topOffset = t.topOffset, this.leftOffset = t.leftOffset, this.fontFamily = t.fontFamily, this.orient = t.orient, this.target = this.createTarget(), this.rotate = t.rotate, this.scale = t.scale, this.watermarkOptions = t.watermarkOptions || {}, this.panelLayoutOptions = t.panelLayoutOptions || {};
+      }
+
+      return t.prototype.design = function (t) {
+        var e = this;
+        this.orderPrintElements(), this.designPaper = this.createNewPage(0), this.target.html(""), this.target.append(this.designPaper.getTarget()), this.droppablePaper(this.designPaper), this.designPaper.design(t), this.designPaper.subscribePaperBaseInfoChanged(function (t) {
+          e.paperHeader = t.paperHeader, e.paperFooter = t.paperFooter, e.paperNumberLeft = t.paperNumberLeft, e.paperNumberTop = t.paperNumberTop, e.paperNumberDisabled = t.paperNumberDisabled, e.paperNumberFormat = t.paperNumberFormat;
+        }), this.printElements.forEach(function (n) {
+          e.appendDesignPrintElement(e.designPaper, n), n.design(t, e.designPaper);
+        }), this.target.bind("click.hiprint", function (t) {
+          let panelOptions = {
+            panelPaperRule: e.panelPaperRule,
+            panelPageRule: e.panelPageRule,
+            firstPaperFooter: e.firstPaperFooter,
+            evenPaperFooter: e.evenPaperFooter,
+            oddPaperFooter: e.oddPaperFooter,
+            lastPaperFooter: e.lastPaperFooter,
+            leftOffset: e.leftOffset,
+            topOffset: e.topOffset,
+            panelLayoutOptions:e.panelLayoutOptions || {},
+            fontFamily: e.fontFamily,
+            orient: e.orient,
+            paperNumberDisabled: e.paperNumberDisabled,
+            paperNumberContinue: e.paperNumberContinue,
+            paperNumberFormat: e.paperNumberFormat,
+            watermarkOptions: e.watermarkOptions || {},
+          };
+          if (!p.a.instance.paperNumberContinue) {
+            delete panelOptions['paperNumberContinue'];
+          }
+          o.a.event.trigger("BuildCustomOptionSettingEventKey_" + e.templateId, {
+            options: panelOptions,
+            callback: function callback(t) {
+              e.panelLayoutOptions = t.panelLayoutOptions || {},e.watermarkOptions = t.watermarkOptions || void 0, (t.watermarkOptions && e.designPaper.createWaterMark(true, 1, t.watermarkOptions))
+              e.panelPaperRule = t.panelPaperRule, e.panelPageRule = t.panelPageRule, e.firstPaperFooter = t.firstPaperFooter, e.evenPaperFooter = t.evenPaperFooter, e.oddPaperFooter = t.oddPaperFooter, e.lastPaperFooter = t.lastPaperFooter, e.leftOffset = t.leftOffset, e.topOffset = t.topOffset, e.fontFamily = t.fontFamily, e.orient = t.orient, e.paperNumberDisabled = e.designPaper.paperNumberDisabled = !!t.paperNumberDisabled || void 0, e.paperNumberContinue = e.designPaper.paperNumberContinue = t.paperNumberContinue, e.paperNumberFormat = t.paperNumberFormat, e.designPaper.paperNumberFormat = t.paperNumberFormat, (t.paperNumberFormat && (e.designPaper.paperNumberTarget = e.designPaper.createPaperNumber(e.designPaper.formatPaperNumber(1, 1), true))), e.designPaper.setOffset(e.leftOffset, e.topOffset), e.css(e.target), e.designPaper.resetPaperNumber(e.designPaper.paperNumberTarget), e.designPaper.triggerOnPaperBaseInfoChanged();
+            }
+          });
+        }), this.bindShortcutKeyEvent();
+        this.bingPasteEvent();
+        this.bindBatchMoveElement();
+      }, t.prototype.update = function (t) {
+        try {
+          var start = Date.now();
+          console.log('start', start)
+          var e = this;
+          this.index = t.index, this.name = t.name, this.width = t.width, this.height = t.height, this.paperType = t.paperType, this.paperHeader = t.paperHeader, this.paperFooter = t.paperFooter;
+          this.designPaper.width = o.a.mm.toPt(t.width), this.designPaper.height = o.a.mm.toPt(this.height), this.designPaper.paperType = this.paperType, this.designPaper.paperHeader = this.paperHeader, this.designPaper.paperFooter = this.paperFooter;
+          this.designPaper.mmheight = t.height, this.designPaper.mmwidth = t.width;
+          // 椤电湁绾�
+          this.designPaper.headerLinetarget.css("top", (this.paperHeader || -1) + "pt"),
+          0 == this.paperHeader && this.designPaper.headerLinetarget.addClass("hideheaderLinetarget");
+          // 椤佃剼绾�
+          this.designPaper.footerLinetarget.css("top", parseInt(this.paperFooter.toString()) + "pt"),
+          this.paperFooter == this.height && (this.designPaper.footerLinetarget.css("top", t.height - p.a.instance.paperHeightTrim + "mm"));
+          // 姘村嵃鍙傛暟
+          this.watermarkOptions = t.watermarkOptions || {};
+          this.designPaper.createWaterMark(true, this.index, this.watermarkOptions);
+          // 椤电爜
+          this.paperNumberLeft = t.paperNumberLeft, this.paperNumberTop = t.paperNumberTop, this.paperNumberDisabled = t.paperNumberDisabled, this.paperNumberContinue = t.paperNumberContinue, this.paperNumberFormat = t.paperNumberFormat;
+          this.designPaper.paperNumberLeft = this.paperNumberLeft, this.designPaper.paperNumberTop = this.paperNumberTop, this.designPaper.paperNumberDisabled = this.paperNumberDisabled, this.designPaper.paperNumberContinue = this.paperNumberContinue, this.designPaper.paperNumberFormat = this.paperNumberFormat;
+          this.designPaper.paperNumberTarget.css("top", this.paperNumberTop + "pt").css("left", this.paperNumberLeft + "pt"), this.designPaper.resetPaperNumber(this.designPaper.paperNumberTarget);
+          // 瀛椾綋鏂瑰悜
+          this.fontFamily = t.fontFamily, this.orient = t.orient, this.rotate = t.rotate, this.scale = t.scale;
+          this.designPaper.fontFamily = this.fontFamily, this.designPaper.orient = this.orient, this.designPaper.scale = e.designPaper.scale || this.scale;
+          // 闈㈡澘鍙傛暟
+          this.panelLayoutOptions = t.panelLayoutOptions, this.panelPaperRule = t.panelPaperRule, this.panelPageRule = t.panelPageRule, this.firstPaperFooter = t.firstPaperFooter, this.evenPaperFooter = t.evenPaperFooter,
+            this.oddPaperFooter = t.oddPaperFooter, this.lastPaperFooter = t.lastPaperFooter, this.topOffset = t.topOffset, this.leftOffset = t.leftOffset;
+          this.designPaper.setFooter(this.firstPaperFooter, this.evenPaperFooter, this.oddPaperFooter, this.lastPaperFooter),
+            this.designPaper.setOffset(this.leftOffset, this.topOffset);
+          // 瀹介珮
+          this.target.css("width", t.width + "mm"),
+          this.target.css("height", t.height - p.a.instance.paperHeightTrim + "mm"),
+          this.target.attr("original-height", t.height),
+          this.target.parent().css("width", t.width + "mm"),
+          this.target.parent().css("height", t.height - p.a.instance.paperHeightTrim + "mm"),
+          this.designPaper.target.css("width", t.width + "mm"),
+          this.designPaper.target.css("height", t.height - p.a.instance.paperHeightTrim + "mm");
+          var end = Date.now();
+          console.log('鏇存柊鍙傛暟 end', end)
+          console.log('鏇存柊鍙傛暟 time:', end - start)
+          // 娓呯┖闈㈡澘
+          this.printElements.forEach(function (t) {
+            t.designTarget && t.designTarget.length && t.designTarget.remove();
+          }), this.printElements = [];
+          var end = Date.now();
+          console.log('娓呯┖闈㈡澘 end', end)
+          console.log('娓呯┖闈㈡澘 time:', end - start)
+          // 鏇存柊闈㈡澘
+          this.initPrintElements(t.printElements);
+          var end = Date.now();
+          console.log('鍒濆鍖栧厓绱� end', end)
+          console.log('鍒濆鍖栧厓绱� time:', end - start)
+          this.printElements.forEach(function (n) {
+            e.appendDesignPrintElement(e.designPaper, n), n.design(t, e.designPaper);
+          })
+          var end = Date.now();
+          console.log('鎻掑叆闈㈡澘 end', end)
+          console.log('鎻掑叆闈㈡澘 time:', end - start)
+        } catch (e) {
+          console.log('???????')
+          console.log(e)
+        }
+      }, t.prototype.bindShortcutKeyEvent = function () {
+        var n = this;
+        $(document).keydown(function (e) {
+          if ('INPUT' == e.target.tagName) return;
+          // ctrl/command + z 鎾ら攢 / ctrl/command + shift + z 閲嶅仛
+          if ((e.ctrlKey || e.metaKey) && 90 == e.keyCode) {
+            if (e.shiftKey) {
+              o.a.event.trigger("hiprintTemplateDataShortcutKey_" + n.templateId, "redo");
+            } else {
+              o.a.event.trigger("hiprintTemplateDataShortcutKey_" + n.templateId, "undo");
+            }
+            e.preventDefault();
+          }
+        });
+      }, t.prototype.bingPasteEvent = function () {
+        var n = this;
+        n.designPaper.target.attr("tabindex", "1");
+        n.designPaper.target.keydown(function (e) {
+          // ctrl + v / command + v
+          if ('INPUT' == e.target.tagName) return;
+          if ((e.ctrlKey || e.metaKey) && 86 == e.keyCode) {
+            n.pasteJson(e);
+            e.preventDefault();
+          }
+        });
+      }, t.prototype.pasteJson = function (e) {
+        var copyArea = $('#copyArea');
+        if (!copyArea.length) return;
+        try {
+          var json = copyArea.text();
+          var objList = JSON.parse(json);
+          let operationPasterPosition = null
+          let replacePosition = null
+          var left = null
+          var top = null
+          objList.forEach((obj,index) => {
+            if (!obj.printElementType && !obj.templateId) return;
+            // 澶嶅埗浣跨敤褰撳墠妯℃澘鍐呯殑鍏冪礌 杩涜鍏嬮殕
+            // todo: 浣跨敤鍙傛暟鍒涘缓
+            var n = this, r = obj.options, ele = n.getElementById(obj.id);
+            if (!ele) return;
+            var a = ele.clone(obj);
+            if (!a) return;
+            // 鍒ゆ柇鏄惁鏄湪鍏冪礌涓婅繘琛宲aste
+            if(index === 0){
+              operationPasterPosition = {
+                x: obj.options.left,
+                y: obj.options.top
+              }
+              var useMouse = e.currentTarget.className != e.target.className;
+              left = (!useMouse && n.mouseOffsetX && o.a.px.toPt(n.mouseOffsetX)) || (r.left += 10);
+              top = (!useMouse && n.mouseOffsetY && o.a.px.toPt(n.mouseOffsetY)) || (r.top += 10);
+              replacePosition = {
+                x: left,
+                y: top
+              }
+            }else{
+              const position = {
+                x: obj.options.left,
+                y: obj.options.top
+              }
+              const incrementPosition = {
+                x: position.x - operationPasterPosition.x,
+                y: position.y - operationPasterPosition.y
+              }
+              left = replacePosition.x + incrementPosition.x
+              top = replacePosition.y + incrementPosition.y
+
+            }
+            a.options.setLeft(left);
+            a.options.setTop(top);
+            a.setTemplateId(n.templateId), a.setPanel(n);
+            n.appendDesignPrintElement(n.designPaper, a, !1);
+            // 鍦ㄥ鍒剁殑鍦版柟涔熼噸鏂扮粰浠栫畻杞
+            const template = s.a.instance.getPrintTemplateById(n.templateId)
+            if(a.options.field && template.qtDesigner){
+              a.options.qid = template.qtDesignderFunction(a.options.field)
+            }
+            n.printElements.push(a), a.design(void 0, n.designPaper);
+            console.log('pasteJson success');
+            o.a.event.trigger("hiprintTemplateDataChanged_" + n.templateId, "澶嶅埗");
+            // 鐐瑰嚮鍏嬮殕鍑烘潵鐨勫厓绱�
+            ele.designTarget.trigger($.Event('blur'))
+            a.designTarget.children('.resize-panel').trigger($.Event('click'));
+            a.designTarget.trigger($.Event('focus'))
+          })
+        } catch (e) {
+          console.error('pasteJson error', e);
+        }
+      }, t.prototype.css = function (t) {
+        if (this.fontFamily) t.css("fontFamily", this.fontFamily);
+        else t[0].style.fontFamily = '';
+      }, t.prototype.getConfig = function () {
+        return p.a.instance;
+      }, t.prototype.getHtml = function (t, e, n, i, o) {
+        var r = this;
+        this.orderPrintElements();
+        let config = r.getConfig();
+        var a,
+          p = n || [],
+          s = i || this,
+          l = void 0;
+
+        if (i) {
+          l = p[p.length - 1];
+          a = l.getPanelTarget();
+          l.updateReferenceElement(new E.a({
+            top: this.paperHeader,
+            left: 0,
+            height: 0,
+            width: 0,
+            bottomInLastPaper: l.referenceElement.bottomInLastPaper,
+            beginPrintPaperIndex: p.length - 1,
+            printTopInPaper: l.referenceElement.bottomInLastPaper,
+            endPrintPaperIndex: p.length - 1
+          }));
+        } else {
+          a = s.createTarget();
+          l = s.createNewPage(p.length);
+          p.push(l);
+          a.append(l.getTarget());
+        }
+        this.printElements.filter(function (t) {
+          return !t.isFixed() && !t.isHeaderOrFooter();
+        }).forEach(function (e) {
+          var n = [],
+            i = p[p.length - 1];
+          if (i.referenceElement.isPositionLeftOrRight(e.options.getTop())) {
+            l = p[i.referenceElement.beginPrintPaperIndex];
+          } else {
+            l = p[i.referenceElement.endPrintPaperIndex];
+          }
+          n = e.getHtml(l, t)
+          n.forEach(function (t, i) {
+            t.referenceElement && (t.referenceElement.endPrintPaperIndex = t.referenceElement.beginPrintPaperIndex + n.length - 1);
+            if (i > 0) {
+              if (l.index < p.length - 1) {
+                l = p[l.index + 1];
+              } else {
+                l = s.createNewPage(p.length, l.referenceElement);
+                p.push(l)
+              }
+              a.append(l.getTarget());
+            }
+            // 鍏冪礌闅愯棌鏃朵笉娣诲姞鍒癶tml鍐�
+            t.target && (("none" != e.options.showInPage && l.append(t.target)), l.updatePrintLine(t.printLine), e.onRendered(l, t.target));
+            i == n.length - 1 && t.referenceElement && l.updateReferenceElement(t.referenceElement);
+          });
+        });
+        o && o.templates.forEach(function (t, e) {
+          var i = t.data || {},
+            o = t.options || {};
+          t.template.printPanels.forEach(function (t) {
+            t.getHtml(i, o, n, r);
+          });
+        });
+        // config 鏄惁寮�鍚〉鐮佺画鎺�
+        if (config.paperNumberContinue) {
+          // 闈㈡澘鏄惁椤电爜缁帓
+          if (r.paperNumberContinue) {
+            hinnn._paperList = [...(hinnn._paperList||[]),...p];
+          } else {
+            hinnn._paperList = [...p];
+          }
+        }
+        if (!i) {
+          if (this.lastPaperFooter) p[p.length - 1].printLine > this.lastPaperFooter && (l = s.createNewPage(p.length, l.referenceElement), p.push(l), a.append(l.getTarget()));
+          // 杩欓噷鏄鐞嗗鍋堕〉璁剧疆
+          this.panelPaperRule && ("odd" == this.panelPaperRule && p.length % 2 == 0 && (l = s.createNewPage(p.length, l.referenceElement), p.push(l), a.append(l.getTarget())), "even" == this.panelPaperRule && p.length % 2 == 1 && (l = s.createNewPage(p.length, l.referenceElement), p.push(l), a.append(l.getTarget())));
+          p.forEach(function (n) {
+            n.updatePaperNumber(n.index + 1, p.length, e.paperNumberToggleInEven), r.fillPaperHeaderAndFooter(n, t, p.length), e && (null != e.leftOffset && n.setLeftOffset(e.leftOffset), null != e.topOffset && n.setTopOffset(e.topOffset));
+          });
+          a.prepend(this.getPrintStyle());
+          // config 鏄惁寮�鍚〉鐮佺画鎺�
+          if (config.paperNumberContinue) {
+            hinnn._paperList.forEach(function (n, index) {
+              n.updatePaperNumber(index + 1, hinnn._paperList.length)
+            });
+          }
+        }
+
+        return a;
+      }, t.prototype.resize = function (t, e, n, i) {
+        this.width = e, this.height = n, this.paperType = t, this.rotate = i, this.designPaper.resize(e, n);
+      }, t.prototype.rotatePaper = function () {
+        null == this.rotate && (this.rotate = !1), this.rotate = !this.rotate, this.resize(this.paperType, this.height, this.width, this.rotate);
+      }, t.prototype.zoom = function (s, p) {
+        if (p) {
+          this.scale = s
+        } else {
+          this.scale = void 0
+        }
+        this.designPaper.zoom(s);
+      }, t.prototype.getTarget = function () {
+        return this.target;
+      }, t.prototype.enable = function () {
+        this.target.removeClass("hipanel-disable");
+      }, t.prototype.disable = function () {
+        this.target.addClass("hipanel-disable");
+      }, t.prototype.getPanelEntity = function (t) {
+        var e = [];
+        return this.printElements.forEach(function (n) {
+          e.push(n.getPrintElementEntity(t));
+        }), new rt({
+          index: this.index,
+          name: this.name || this.index + 1,
+          width: this.width,
+          height: this.height,
+          paperType: this.paperType,
+          paperHeader: this.paperHeader,
+          paperFooter: this.paperFooter,
+          paperNumberDisabled: !!this.paperNumberDisabled || void 0,
+          paperNumberContinue: this.paperNumberContinue == void 0 ? !0 : this.paperNumberContinue,
+          paperNumberFormat: this.paperNumberFormat ? this.paperNumberFormat : void 0,
+          panelPaperRule: this.panelPaperRule ? this.panelPaperRule : void 0,
+          panelPageRule: this.panelPageRule ? this.panelPageRule : void 0,
+          paperNumberLeft: this.paperNumberLeft,
+          paperNumberTop: this.paperNumberTop,
+          printElements: e,
+          rotate: this.rotate,
+          firstPaperFooter: this.firstPaperFooter,
+          evenPaperFooter: this.evenPaperFooter,
+          oddPaperFooter: this.oddPaperFooter,
+          lastPaperFooter: this.lastPaperFooter,
+          topOffset: this.topOffset,
+          fontFamily: this.fontFamily,
+          orient: this.orient,
+          scale: this.scale,
+          watermarkOptions: this.watermarkOptions ? this.watermarkOptions : void 0,
+          leftOffset: this.leftOffset,
+          panelLayoutOptions: this.panelLayoutOptions || {}
+        });
+      }, t.prototype.createTarget = function () {
+        var t = $('<div class="hiprint-printPanel panel-index-' + this.index + '"></div>');
+        return this.css(t), t;
+      }, t.prototype.droppablePaper = function (t) {
+        var e = this;
+        t.getTarget().hidroppable({
+          accept: ".ep-draggable-item",
+          onDrop: function onDrop(n, i) {
+            const template = s.a.instance.getPrintTemplateById(e.templateId)
+            var r = s.a.instance.getDragingPrintElement(),
+              a = r.printElement;
+            var ptr = e.designPaper.scale || 1;
+            var left = (r.left - o.a.px.toPt(e.target.children(".hiprint-printPaper").offset().left)) / ptr,
+              top = (r.top - o.a.px.toPt(e.target.children(".hiprint-printPaper").offset().top)) / ptr;
+            a.updateSizeAndPositionOptions(e.mathroundToporleft(left), e.mathroundToporleft(top));
+            a.setTemplateId(e.templateId), a.setPanel(e), e.appendDesignPrintElement(e.designPaper, a, !0);
+            // 濡傛灉璇寸紪杈戝櫒寮�鍚痲tDesigner,閭d箞灏卞皢鍞竴ID鏋勫缓鍞竴ID鐢熸垚閫昏緫浠g爜
+            if(a.options.field && template.qtDesigner){
+              a.options.qid = template.qtDesignderFunction(a.options.field)
+            }
+            e.printElements.push(a), a.design(void 0, t);
+            o.a.event.trigger("hiprintTemplateDataChanged_" + e.templateId, "鏂板");
+          }
+        });
+      }, t.prototype.initPrintElements = function (t) {
+        var e = this;
+        this.printElements = [], t && t.forEach(function (n) {
+          var i;
+
+          if (i = n.printElementType ? nt.createPrintElementType(n.printElementType) : a.instance.getElementType(n.tid)) {
+            var o = i.createPrintElement(n.options);
+            o.setTemplateId(e.templateId), o.setPanel(e), e.printElements.push(o);
+          } else console.log("miss " + JSON.stringify(t));
+        });
+      }, t.prototype.mathroundToporleft = function (t) {
+        var e = p.a.instance.movingDistance;
+        return Math.round(t / e) * e;
+      }, t.prototype.appendDesignPrintElement = function (t, e, n) {
+        e.setCurrenttemplateData(void 0);
+        var i = e.getDesignTarget(t);
+        i.addClass("design"), n && e.initSizeByHtml(i), t.append(i);
+      }, t.prototype.createNewPage = function (t, e) {
+        var n = new T(this.templateId, this.index, this.watermarkOptions, this.panelPageRule, this.scale, this.width, this.height, this.paperHeader, this.paperFooter, this.paperNumberLeft, this.paperNumberTop, this.paperNumberDisabled, this.paperNumberContinue, this.paperNumberFormat, t, e);
+        return n.setFooter(this.firstPaperFooter, this.evenPaperFooter, this.oddPaperFooter, this.lastPaperFooter), n.setOffset(this.leftOffset, this.topOffset), n;
+      }, t.prototype.orderPrintElements = function () {
+        this.printElements = o.a.orderBy(this.printElements, function (t) {
+          return t.options.getLeft();
+        }), this.printElements = o.a.orderBy(this.printElements, function (t) {
+          return t.options.getTop();
+        });
+      }, t.prototype.fillPaperHeaderAndFooter = function (t, e, n) {
+        this.printElements.filter(function (t) {
+          return t.isFixed() || t.isHeaderOrFooter();
+        }).forEach(function (i) {
+          if (i.isFixed(), i.showInPage(t.index, n)) {
+            var o = i.getHtml(t, e);
+            o.length && t.append(o[0].target);
+          }
+        });
+      }, t.prototype.clear = function () {
+        this.printElements.forEach(function (t) {
+          t.designTarget && t.designTarget.length && t.designTarget.remove();
+        }), this.printElements = [];
+        o.a.event.trigger("hiprintTemplateDataChanged_" + this.templateId, "娓呯┖");
+      }, t.prototype.insertPrintElementToPanel = function (t) {
+        var e = this.getPrintElementTypeByEntity(t);
+
+        if (e) {
+          var n = e.createPrintElement(t.options);
+          n.setTemplateId(this.templateId), n.setPanel(this), this.printElements.push(n);
+        }
+      }, t.prototype.addPrintText = function (t) {
+        t.printElementType = t.printElementType || {}, t.printElementType.type = "text", this.insertPrintElementToPanel(t);
+      }, t.prototype.addPrintHtml = function (t) {
+        t.printElementType = t.printElementType || {}, t.printElementType.type = "html", this.insertPrintElementToPanel(t);
+      }, t.prototype.addPrintTable = function (t) {
+        if (t.printElementType = t.printElementType || {}, t.printElementType.type = "table", t.options && t.options.columns) {
+          var e = $.extend({}, t.options.columns);
+          t.printElementType.columns = e.columns, e.columns = void 0;
+        }
+
+        this.insertPrintElementToPanel(t);
+      }, t.prototype.addPrintImage = function (t) {
+        t.printElementType = t.printElementType || {}, t.printElementType.type = "image", this.insertPrintElementToPanel(t);
+      }, t.prototype.addPrintLongText = function (t) {
+        t.printElementType = t.printElementType || {}, t.printElementType.type = "longText", this.insertPrintElementToPanel(t);
+      }, t.prototype.addPrintVline = function (t) {
+        t.printElementType = t.printElementType || {}, t.printElementType.type = "vline", this.insertPrintElementToPanel(t);
+      }, t.prototype.addPrintHline = function (t) {
+        t.printElementType = t.printElementType || {}, t.printElementType.type = "hline", this.insertPrintElementToPanel(t);
+      }, t.prototype.addPrintRect = function (t) {
+        t.printElementType = t.printElementType || {}, t.printElementType.type = "rect", this.insertPrintElementToPanel(t);
+      }, t.prototype.addPrintOval = function (t) {
+        t.printElementType = t.printElementType || {}, t.printElementType.type = "oval", this.insertPrintElementToPanel(t);
+      }, t.prototype.getPrintElementTypeByEntity = function (t) {
+        var e;
+        return (e = t.tid ? a.instance.getElementType(t.tid) : nt.createPrintElementType(t.printElementType)) || console.log("miss " + JSON.stringify(t)), e;
+      }, t.prototype.getPrintStyle = function () {
+        let layoutStyle = ''
+        if(this.panelLayoutOptions && this.panelLayoutOptions['layoutType'] === 'row'){
+          layoutStyle = `
+            <style>
+            .hiprint-printTemplate{
+              margin: -${(Number(this.panelLayoutOptions['layoutRowGap']) || 0) / 2}mm -${(Number(this.panelLayoutOptions['layoutColumnGap']) || 0) / 2}mm;
+            }
+              .hiprint-printTemplate .hiprint-printPanel {
+                display:inline-block;
+                padding: ${(Number(this.panelLayoutOptions['layoutRowGap']) || 0) / 2}mm ${(Number(this.panelLayoutOptions['layoutColumnGap']) || 0) / 2}mm;
+              }
+            </style>
+          `
+        }
+        return layoutStyle + " <style printStyle>\n        @page\n        {\n             border:0;\n             padding:0cm;\n             margin:0cm;\n             " + this.getPrintSizeStyle() + "\n        }\n        </style>\n";
+      }, t.prototype.getPrintSizeStyle = function () {
+        return this.paperType ? "size:" + this.paperType + " " + (this.height > this.width ? "portrait" : "landscape") + ";" : "size: " + this.width + "mm " + this.height + "mm " + (this.orient ? 1 == this.orient ? "portrait" : "landscape" : "") + ";";
+      }, t.prototype.deletePrintElement = function (t) {
+        var e = this;
+        this.printElements.filter(function (n, i) {
+          n.id == t.id && (t.delete(), e.printElements.splice(i, 1));
+        });
+      }, t.prototype.getElementByTid = function (t) {
+        return this.printElements.filter(function (e) {
+          return e.printElementType.tid === t;
+        }).map(function (t, e) {
+          return t;
+        });
+      }, t.prototype.getElementByName = function (t) {
+        return this.printElements.filter(function (e) {
+          return e.options.name === t;
+        }).map(function (t, e) {
+          return t;
+        });
+      }, t.prototype.getElementById = function (t) {
+        return this.printElements.find(function (e) {
+          return e.id === t;
+        });
+      }, t.prototype.getFieldsInPanel = function () {
+        var t = [];
+        return this.printElements.forEach(function (e) {
+          e.options && e.options.field ? t.push(e.options.field) : e.printElementType.field && t.push(e.printElementType.field);
+        }), t;
+      }, t.prototype.getTestData = function () {
+        var t = {};
+        return this.printElements.forEach(function (e) {
+          if ("table" != e.printElementType.type) {
+            e.options && e.options.field ? t[e.options.field] = e.options.testData : e.printElementType.field ? t[e.printElementType.field] = e.printElementType.data || e.options.testData : void 0;
+          }
+        }), t;
+      }, t.prototype.bindBatchMoveElement = function () {
+        var t = this;
+        this.designPaper.getTarget().on("mousemove", function (e) {
+          if ((e.target.className && _typeof(e.target.className) == "string" && (e.target.className.includes("editing")))) {
+            return;
+          }
+          if (e.currentTarget.className == t.designPaper.target[0].className) {
+            t.mouseOffsetX = e.offsetX, t.mouseOffsetY = e.offsetY;
+          } else {
+            t.mouseOffsetX = t.mouseOffsetY = void 0;
+          }
+          s.a.instance.draging || 1 === e.buttons && s.a.instance.rectDraging && (t.mouseRect && (t.mouseRect.updateRect(e.pageX, e.pageY, t), t.updateRectPanel(t.mouseRect)));
+        }).on("mousedown", function (e) {
+          s.a.instance.rectDraging = true;
+          if ((e.target.className && _typeof(e.target.className) == "string" && (e.target.className.includes("editing")))) {
+            return;
+          }
+          s.a.instance.draging || (t.mouseRect && t.mouseRect.target && t.mouseRect.target.remove(), 1 === e.buttons && _typeof(e.target.className) == "string" && e.target.className.includes("hiprint-printPaper hidroppable design") && (t.mouseRect = new at(e.pageX, e.pageY, s.a.instance.dragLengthCNum(e.pageX - t.designPaper.getTarget().offset().left, p.a.instance.movingDistance), s.a.instance.dragLengthCNum(e.pageY - t.designPaper.getTarget().offset().top, p.a.instance.movingDistance))));
+        }).on("mouseup", function (e) {
+          s.a.instance.rectDraging = false;
+        });
+      }, t.prototype.getElementInRect = function (t) {
+        var e = [];
+        return this.printElements.filter(function (n) {
+          return n.options.draggable !== false;
+        }).forEach(function (n) {
+          n.inRect(t) && e.push(n);
+        }), e;
+      }, t.prototype.updateRectPanel = function (t) {
+        var e = this,
+          n = this.designPaper.getTarget();
+        var ptr = this.designPaper.scale || 1;
+        this.mouseRect.target || (this.mouseRect.target = $('<div tabindex="1" class="mouseRect" style="z-index:2;position: absolute;opacity:0.2;border: 1px dashed #000;background-color:#31676f;"><span></span></div>'), n.find(".hiprint-printPaper-content").append(this.mouseRect.target), this.bingKeyboardMoveEvent(this.mouseRect.target), this.mouseRect.target.hidraggable({
+          onDrag: function onDrag(t, n, i) {
+              e.mouseRect.lastLeft = e.mouseRect.lastLeft ? o.a.px.toPt(e.mouseRect.target[0].offsetLeft) : n / ptr, e.mouseRect.lastTop = e.mouseRect.lastTop ? o.a.px.toPt(e.mouseRect.target[0].offsetTop) : i / ptr
+              , (e.mouseRect.mouseRectSelectedElement || []).forEach(function (t) {
+              t.updatePositionByMultipleSelect(n - e.mouseRect.lastLeft, i - e.mouseRect.lastTop);
+            }),
+            e.mouseRect.lastLeft = n / ptr,
+            e.mouseRect.lastTop = i / ptr,
+            s.a.instance.changed = !0;
+          },
+          moveUnit: "pt",
+          minMove: p.a.instance.movingDistance,
+          onBeforeDrag: function onBeforeDrag(t) {
+            e.mouseRect.target.focus(), s.a.instance.draging = !0, e.mouseRect.mouseRectSelectedElement || (e.mouseRect.mouseRectSelectedElement = e.getElementInRect(e.mouseRect));
+            e.mouseRect.target.css({
+              transform: 'unset'
+            });
+          },
+          getScale: function getScale() {
+            return e.designPaper.scale || 1;
+          },
+          onStopDrag: function onStopDrag(t) {
+            if (s.a.instance.changed) o.a.event.trigger("hiprintTemplateDataChanged_" + n.templateId, "妗嗛�夌Щ鍔�");
+            s.a.instance.draging = !1;
+            s.a.instance.changed = !1;
+          }
+        }))
+        if (t.ex >= t.bx && t.ey >= t.by) {// 缁堢偣澶т簬璧风偣
+          this.mouseRect.target.css({
+            height: t.maxY - t.minY + "px",
+            width: t.maxX - t.minX + "px",
+            left: t.lastLeft / ptr + "pt",
+            top: t.lastTop / ptr + "pt",
+            transform: 'unset',
+          });
+        } else if (t.ex < t.bx && t.ey < t.by) {
+          this.mouseRect.target.css({
+            height: t.maxY - t.minY + "px",
+            width: t.maxX - t.minX + "px",
+            left: t.lastLeft / ptr + "pt",
+            top: t.lastTop / ptr + "pt",
+            transform: 'rotate(180deg)',
+            'transform-origin': '0 0'
+          });
+        // 宸︿笅瑙�
+        } else if (t.ex < t.bx && t.ey >t.by){
+          this.mouseRect.target.css({
+            height: t.maxY - t.minY + "px",
+            width: t.maxX - t.minX + "px",
+            left: t.lastLeft / ptr + "pt",
+            top: t.lastTop / ptr + "pt",
+            transform: 'rotateY(180deg)',
+            'transform-origin': '0 0'
+          });
+        } else if (t.ex > t.bx && t.ey < t.by){
+          this.mouseRect.target.css({
+            height: t.maxY - t.minY + "px",
+            width: t.maxX - t.minX + "px",
+            left: t.lastLeft / ptr + "pt",
+            top: t.lastTop / ptr + "pt",
+            transform: 'rotateX(180deg)',
+            'transform-origin': '0 0'
+          });
+        }
+        t.target.focus()
+      }, t.prototype.bingKeyboardMoveEvent = function (t) {
+        var e = this;
+        t.attr("tabindex", "1"), t.keydown(function (t) {
+          e.mouseRect.mouseRectSelectedElement || (e.mouseRect.mouseRectSelectedElement = e.getElementInRect(e.mouseRect));
+          var n = e.mouseRect.mouseRectSelectedElement || [];
+
+          switch (t.keyCode) {
+          case 37:
+            e.mouseRect.updatePositionByMultipleSelect(0 - p.a.instance.movingDistance, 0), n.forEach(function (t) {
+              t.updatePositionByMultipleSelect(0 - p.a.instance.movingDistance, 0);
+            }), t.preventDefault();
+            break;
+
+          case 38:
+            e.mouseRect.updatePositionByMultipleSelect(0, 0 - p.a.instance.movingDistance), n.forEach(function (t) {
+              t.updatePositionByMultipleSelect(0, 0 - p.a.instance.movingDistance);
+            }), t.preventDefault();
+            break;
+
+          case 39:
+            e.mouseRect.updatePositionByMultipleSelect(p.a.instance.movingDistance, 0), n.forEach(function (t) {
+              t.updatePositionByMultipleSelect(p.a.instance.movingDistance, 0);
+            }), t.preventDefault();
+            break;
+
+          case 40:
+            e.mouseRect.updatePositionByMultipleSelect(0, p.a.instance.movingDistance), n.forEach(function (t) {
+              t.updatePositionByMultipleSelect(0, p.a.instance.movingDistance);
+            }), t.preventDefault();
+          }
+          if ([37, 38, 39, 40].includes(t.keyCode)) {
+            o.a.event.trigger("hiprintTemplateDataChanged_" + e.templateId, "妗嗛�夌Щ鍔�");
+          }
+        });
+      }, t;
+    }(),
+    st = function () {
+      return function (t) {
+        if (t) if (t.panels) {
+          this.panels = [];
+
+          for (var e = 0; e < t.panels.length; e++) {
+            this.panels.push(new rt(t.panels[e]));
+          }
+        } else this.panels = [];
+      };
+    }(),
+    lt = n(9),
+    ut = function () {
+      function t(t, e) {
+        var n = this;
+        this.printElementOptionSettingPanel = {}, this.printTemplate = t, this.settingContainer = $(e), o.a.event.on(t.getPrintElementSelectEventKey(), function (t) {
+          n.buildSetting(t);
+        }), o.a.event.on(t.getBuildCustomOptionSettingEventKey(), function (t) {
+          n.buildSettingByCustomOptions(t);
+        }), o.a.event.on('clearSettingContainer', function () {
+          n.clearSettingContainer();
+        });
+      }
+
+      return t.prototype.init = function () {
+      }, t.prototype.clearSettingContainer = function () {
+        this.clearLastPrintElement(), this.settingContainer.html("");
+      }, t.prototype.clearLastPrintElement = function () {
+        if (this.lastPrintElement) {
+          if (this.lastPrintElement._editing) {
+            this.lastPrintElement.updateByContent(true);
+          }
+          if (this.lastPrintElement._printElementOptionTabs) {
+            this.lastPrintElement._printElementOptionTabs.forEach(function (t) {
+              t.list && t.list.forEach(function (e) {
+                e.destroy();
+              })
+            })
+          }
+          if (this.lastPrintElement._printElementOptionItems) {
+            this.lastPrintElement._printElementOptionItems.forEach(function (t) {
+              t.destroy();
+            })
+          }
+        }
+        this.lastPrintElement = void 0;
+      }, t.prototype.buildSetting = function (t) {
+        var e = this,
+          n = this,
+          i = t.printElement,
+          o = t.customOptionsInput;
+        var tabs = i.getPrintElementOptionTabs();
+        e.clearSettingContainer();
+        var r;
+        if (tabs.length) {
+          r = $('<div class="prop-tabs"><ul class="prop-tab-items"></ul></div>');
+          tabs.filter((e,idx) => e.list.length > 0 || (idx == 2 && o && o.length)).forEach(function (tab) {
+            var item = $('<li class="prop-tab-item"><span class="tab-title">' + i18n.__(tab.name) + '</span></li>')
+            r.find('.prop-tab-items').append(item)
+            var options = $('<div class="hiprint-option-items" data-title="' + i18n.__(tab.name) + '"></div>')
+            tab.list.forEach(function (t) {
+              t.submit = function (t) {
+                i.submitOption();
+              };
+              var n = t.createTarget(i, i.options, i.printElementType);
+              e.printElementOptionSettingPanel[t.name] = n, options.append(n);
+              // 璨屼技鍙湁杩欎袱涓墠闇�瑕佸涓弬鏁�
+              if (['columns', 'dataType'].includes(t.name)) {
+                t.setValue(i.options[t.name], i.options, i.printElementType);
+              } else {
+                // 浼犲叆鎵�鏈夊弬鏁�
+                if (['coordinate', 'widthHeight'].includes(t.name)) {
+                  t.setValue(i.options, i)
+                } else {
+                  // options 娌℃湁灏卞彇 printElementType鍐呯殑 (濡� table 鐨� footerFormatter)
+                  t.setValue(i.options[t.name] || i.printElementType[t.name])
+                }
+              }
+              n.find("textarea").bind("dblclick.textarea", function (event) {
+                if (!$(this).val()) {
+                  var placeholder = event.target.placeholder || "";
+                  $(this).val(placeholder);
+                };
+              });
+            })
+            if (tab.list.length == 0 && o && o.length) {
+              o.forEach(function (t) {
+                var n2 = t.callback;
+                t.callback = function (t) {
+                  n2 && (n2(t));
+                };
+                var tableColumn = t.optionItems;
+                t.title && options.append('<div class="hiprint-option-item hiprint-option-item-row">\n            <div class="hiprint-option-item-label hiprint-option-title">\n              ' + t.title + "\n            </div>\n        </div>");
+                tableColumn.forEach(function (e) {
+                  e.submit = function (e) {
+                    t.callback(n.getValueByOptionItems(tableColumn));
+                  }, options.append(e.createTarget(n.printTemplate, t.options, void 0)),
+                    e.setValue(t.options[e.name], t.options, void 0);
+                });
+                options.find('.auto-submit').change(function () {
+                  t.callback(n.getValueByOptionItems(tableColumn))
+                })
+                options.find('.auto-submit:input').bind('keydown.submitOption', function (e) {
+                  13 === e.keyCode && t.callback(n.getValueByOptionItems(tableColumn));
+                })
+                options.find("textarea").bind("dblclick.textarea", function (event) {
+                  if (!$(this).val()) {
+                    var placeholder = event.target.placeholder || "";
+                    $(this).val(placeholder);
+                  };
+                });
+              })
+            }
+            r.append(options)
+          })
+        } else {
+          r = $('<div class="hiprint-option-items"></div>')
+          i.getPrintElementOptionItems().forEach(function (t) {
+            t.submit = function (t) {
+              i.submitOption();
+            };
+
+            var n = t.createTarget(i, i.options, i.printElementType);
+            e.printElementOptionSettingPanel[t.name] = n, r.append(n);
+            // 璨屼技鍙湁杩欎袱涓墠闇�瑕佸涓弬鏁�
+            if (['columns', 'dataType'].includes(t.name)) {
+              t.setValue(i.options[t.name], i.options, i.printElementType);
+            } else {
+              // 浼犲叆鎵�鏈夊弬鏁�
+              if (['coordinate', 'widthHeight'].includes(t.name)) {
+                t.setValue(i.options, i)
+              } else {
+                // options 娌℃湁灏卞彇 printElementType鍐呯殑 (濡� table 鐨� footerFormatter)
+                t.setValue(i.options[t.name] || i.printElementType[t.name])
+              }
+            }
+          });
+        }
+        var a = $(`<button class="hiprint-option-item-settingBtn hiprint-option-item-submitBtn"\n        type="button">${i18n.__('纭畾')}</button>`),
+          p = $(`<button  class="hiprint-option-item-settingBtn hiprint-option-item-deleteBtn"\n        type="button">${i18n.__('鍒犻櫎')}</button>`);
+        r.append(a);
+        i.options.draggable != false && r.append(p); // draggable 涓� false 鏃朵笉鏄剧ず鍙傛暟闈㈡澘 鍒犻櫎 鎸夐挳
+        if (tabs.length) {
+          r.on('click', '.prop-tab-item', function () {
+            var $li = $(this);
+            var index = $li.index();
+            // 涓婃鐐瑰嚮tab鐨刬ndex
+            e.settingContainer.data('last-index', index);
+            $li.addClass('active');
+            $li.siblings().removeClass('active');
+            var options = r.find('.hiprint-option-items:eq(' + index + ')');
+            options.addClass('active')
+            options.siblings().removeClass('active');
+          })
+          var lastIndex = +(e.settingContainer.data('last-index') || 0);
+          if (lastIndex >= tabs.length) {
+            lastIndex = 0;
+          }
+          r.find('.prop-tab-item:eq(' + lastIndex + ')').click();
+        }
+        a.bind("click.submitOption", function () {
+          i.submitOption();
+        }), p.bind("click.deleteBtn", function () {
+          hinnn.event.trigger("hiprintTemplateDataChanged_" + i.templateId, "鍒犻櫎");
+          n.printTemplate.deletePrintElement(i);
+          e.clearSettingContainer();
+        }), r.find(".auto-submit").change(function (t) {
+          i.submitOption();
+        }), r.find(".auto-submit:input").bind("keydown.submitOption", function (t) {
+          13 == t.keyCode && i.submitOption();
+        }), this.settingContainer.append(r), tabs.length < 1 && o && o.forEach(function (t) {
+          var n = t.callback;
+          t.callback = function (t) {
+            n && (n(t), i.submitOption());
+          }, e.buildSettingByCustomOptions(t, e.settingContainer);
+        }), this.lastPrintElement = i;
+      }, t.prototype.buildSettingByCustomOptions = function (t, e) {
+        var n = this;
+        this.clearLastPrintElement();
+        var i = e || this.settingContainer;
+        e || this.settingContainer.html("");
+        var o = [], supportOptions = p.a.instance.panel.supportOptions.filter(function (t) {
+          return !t.hidden;
+        }).map(function (e) {
+          return e.name;
+        });
+        t.optionItems ? o = t.optionItems : Object.keys(t.options).filter(function (t) {
+          return supportOptions.includes(t);
+        }).forEach(function (t) {
+          var e = lt.a.getItem(t);
+          e && o.push(e);
+        });
+        var r = $('<div class="hiprint-option-items"></div>');
+        t.title && r.append('<div class="hiprint-option-item hiprint-option-item-row">\n            <div class="hiprint-option-item-label hiprint-option-title">\n              ' + t.title + "\n            </div>\n        </div>"), o.forEach(function (e) {
+          e.submit = function (e) {
+            t.callback(n.getValueByOptionItems(o));
+          }, r.append(e.createTarget(n.printTemplate, t.options, void 0)), e.setValue(t.options[e.name], t.options, void 0);
+        });
+        var a = $(`<button class="hiprint-option-item-settingBtn hiprint-option-item-submitBtn"\n        type="button">${i18n.__('纭畾')}</button>`);
+        r.append(a), a.bind("click.submitOption", function () {
+          t.callback(n.getValueByOptionItems(o));
+        }), r.find(".auto-submit").change(function (e) {
+          t.callback(n.getValueByOptionItems(o));
+        }), r.find(".auto-submit:input").bind("keydown.submitOption", function (e) {
+          13 == e.keyCode && t.callback(n.getValueByOptionItems(o));
+        }), i.append(r);
+      }, t.prototype.getValueByOptionItems = function (t) {
+        var e = {};
+        return t.forEach(function (t) {
+          e[t.name] = t.getValue();
+        }), e;
+      }, t;
+    }(),
+    dt = function () {
+      function t(t, e) {
+        this.paginationContainer = t, this.jqPaginationContainer = $(this.paginationContainer), this.template = e;
+      }
+
+      return t.prototype.buildPagination = function (t) {
+        var e = this.template.getPaneltotal(),
+          n = this;
+        this.jqPaginationContainer.html("");
+
+        for (var i = $('<ul class="hiprint-pagination"></ul>'), o = function o() {
+          var t = r,
+            name = n.template.printPanels[t].name || (t + 1),
+            e = $("<li><span>" + name + '</span><a href="javascript:void(0);">x</a></li>');
+          e.find("span").click(function () {
+            n.template.selectPanel(t), e.siblings().removeClass("selected"), $(this).parent("li").addClass("selected");
+          }), e.find("a").click(function () {
+            n.template.deletePanel(t), n.buildPagination();
+          }), i.append(e);
+        }, r = 0; r < e; r++) {
+          o();
+        }
+
+        var a = $("<li><span>+</span></li>");
+        i.append(a), this.jqPaginationContainer.append(i), a.click(function () {
+          var createPanel = function(t) {
+            n.template.addPrintPanel(t || void 0, !0), n.buildPagination();
+            $('.hiprint-pagination li').removeClass('selected');
+            $('.hiprint-pagination li:nth-last-child(2)').addClass('selected');
+          };
+          if (n.template.onPanelAddClick) {
+            var panel = {
+              index: n.template.printPanels.length,
+              paperType: "A4"
+            }
+            n.template.onPanelAddClick(panel, createPanel);
+          } else {
+            createPanel();
+          }
+        });
+      }, t.prototype.selectPanel = function (idx) {
+        var i = idx || this.template.editingPanel.index;
+        var li = $('.hiprint-pagination li:nth(' + i + ')');
+        if (li.length) {
+          li.siblings().removeClass('selected');
+          li.addClass("selected");
+        }
+	hinnn.event.trigger("onSelectPanel", this.template.editingPanel, i, li);
+      }, t;
+    }(),
+    ct = function () {
+      function t(t) {
+        var e = this;
+        this.tempimageBase64 = {}, this.id = s.a.instance.guid(), s.a.instance.setPrintTemplateById(this.id, this);
+        var n = t || {};
+        this.printPanels = [];
+        this.dataMode = n.dataMode || 1;
+        this.history = n.history != void 0 ? n.history : !0;
+        this.willOutOfBounds = n.willOutOfBounds != void 0 ? n.willOutOfBounds : !0;
+        this.onDataChanged = n.onDataChanged;
+        this.onUpdateError = n.onUpdateError;
+        this.lastJson = n.template || {};
+        this.historyList = [{id: s.a.instance.guid(), type: '鍒濆', json: this.lastJson}];
+        this.historyPos = 0;
+        this.defaultPanelName = n.defaultPanelName;
+        this.designOptions = {};
+        this.qtDesigner = n.qtDesigner != void 0 ? n.qtDesigner : !0;
+        this.qtDesignerMap = {}
+        this.qtDesignderFunction = function(field){
+          this.qtDesignerMap = {}
+          const fieldTitle = field.split("_")[0]
+          for(const item of this.editingPanel.printElements){
+            if(item.options.field === void 0){
+              continue
+            }
+            const renderKey = item.options.field.split("_")[0]
+            if(this.qtDesignerMap[renderKey] === void 0){
+              this.qtDesignerMap[renderKey] = 1
+            }else{
+              this.qtDesignerMap[renderKey] += 1
+            }
+          }
+          if(this.qtDesignerMap[fieldTitle] === 0||this.qtDesignerMap[fieldTitle] === void 0){
+            return fieldTitle
+          }else{
+            return fieldTitle +"_"+ this.qtDesignerMap[fieldTitle]
+          }
+        }
+        var i = new st(n.template || []);
+        n.template && i.panels.forEach(function (t) {
+          e.printPanels.push(new pt(t, e.id));
+        }), n.fontList && (this.fontList = n.fontList), n.fields && (this.fields = n.fields), n.onImageChooseClick && (this.onImageChooseClick = n.onImageChooseClick),
+          n.onPanelAddClick && (this.onPanelAddClick = n.onPanelAddClick),
+        n.settingContainer && new ut(this, n.settingContainer), n.paginationContainer && (this.printPaginationCreator = new dt(n.paginationContainer, this), this.printPaginationCreator.buildPagination()), this.initAutoSave();
+      }
+
+      return t.prototype.design = function (t, e) {
+        var n = this;
+
+        if (e || (e = {}), 0 == this.printPanels.length) {
+          var i = this.createDefaultPanel();
+          this.printPanels.push(i);
+        }
+
+        if (!t) throw new Error("options.container can not be empty");
+        n.designOptions = e;
+        this.createContainer(t), this.printPanels.forEach(function (t, i) {
+          n.container.append(t.getTarget()), i > 0 && t.disable(), t.design(e);
+        }), this.selectPanel(0);
+      }, t.prototype.getSimpleHtml = function (t, e) {
+        var n = this;
+        e || (e = {});
+        var i = $('<div class="hiprint-printTemplate"></div>');
+        t && t.constructor === Array ? t.forEach(function (data,dataIndex) {
+          data && n.printPanels.forEach(function (printPanel, o) {
+            i.append(printPanel.getHtml(data, e));
+            // 鎵归噺鎵撳嵃 缁帓椤电爜
+            if (dataIndex == t.length - 1 && o == n.printPanels.length - 1) {
+              delete hinnn._paperList;
+            }
+          });
+        }) : this.printPanels.forEach(function (panel, panelIndex) {
+          i.append(panel.getHtml(t, e));
+          // 澶氶潰鏉挎墦鍗� 缁帓椤电爜
+          if (panelIndex == n.printPanels.length - 1) {
+            delete hinnn._paperList;
+          }
+        });
+        return e && e.imgToBase64 && this.transformImg(i.find("img")), i;
+      }, t.prototype.getSimpleHtmlAsync = function (dataItemOrList, e) {
+        return new Promise(resolve => {
+          var that = this;
+          e || (e = {});
+          let rootElement = $('<div class="hiprint-printTemplate"></div>');
+          // 灏嗘暟鎹浆鎹㈡垚鍒楄〃澶勭悊锛岀畝鍖栦唬鐮�
+          const dataList = Array.isArray(dataItemOrList) ? dataItemOrList : [dataItemOrList]
+          // 鐢熸垚鍙傛暟鍒楄〃锛岀敤浜庡悗缁�掑綊
+          const paramsListToCreateHTML = []
+          dataList.forEach(function (data, dataIndex) {
+            data && that.printPanels.forEach(function (panel, o) {
+              paramsListToCreateHTML.push([panel, data, e])
+            });
+          });
+
+          function appendElementByParamsList(paramsListToCreateHTML, onFinish) {
+            if (!paramsListToCreateHTML.length) return onFinish();
+            const [panel, data, e] = paramsListToCreateHTML.shift();
+            rootElement.append(panel.getHtml(data, e));
+            // 姣忔鐢熸垚Html涔嬮棿鐣欎竴浜涢棿闅旓紝榛樿10锛岄�氳繃generateHTMLInterval瀛楁鎺у埗
+            console.log('e.generateHTMLInterval', e.generateHTMLInterval)
+            setTimeout(() => appendElementByParamsList(paramsListToCreateHTML, onFinish), e.generateHTMLInterval ?? 10)
+          }
+
+          function onFinish() {
+            delete hinnn._paperList;
+            e && e.imgToBase64 && that.transformImg(rootElement.find("img"));
+            resolve(rootElement)
+          }
+
+          appendElementByParamsList(paramsListToCreateHTML, onFinish);
+        });
+      }, t.prototype.getHtml = function (t, e) {
+        return t || (t = {}), this.getSimpleHtml(t, e);
+      }, t.prototype.getHtmlAsync = function (t, e) {
+        // 鍒嗚В鐢熸垚HTML浠诲姟锛岀暀涓嬬┖闅欏彂閫乻ocket淇℃伅锛岄伩鍏嶆柇寮�杩炴帴
+        return t || (t = {}), this.getSimpleHtmlAsync(t, e);
+      }, t.prototype.getJointHtml = function (t, e, n) {
+        var i = $('<div class="hiprint-printTemplate"></div>'),
+          o = [];
+        return this.printPanels.forEach(function (r, a) {
+          i.append(r.getHtml(t, e, o, void 0, n));
+        }), i;
+      }, t.prototype.setPaper = function (t, e) {
+        if (/^(([1-9][0-9]*)|(([0]\.\d{1,2}|[1-9][0-9]*\.\d{1,2})))$/.test(t)) this.editingPanel.resize(void 0, parseFloat(t), parseFloat(e), !1); else {
+          var n = s.a.instance[t];
+          if (!n) throw new Error("not found pagetype:" + (t || ""));
+          this.editingPanel.resize(t, n.width, n.height, !1);
+        }
+      }, t.prototype.rotatePaper = function () {
+        this.editingPanel.rotatePaper();
+      }, t.prototype.zoom = function (s, p) {
+        this.editingPanel.zoom(s, p);
+      }, t.prototype.addPrintPanel = function (t, e) {
+        var n = t ? new pt(new rt(t), this.id) : this.createDefaultPanel();
+        return t && (t.index = this.printPanels.length), e && (this.container.append(n.getTarget()), n.design(this.designOptions)), this.printPanels.push(n), e && this.selectPanel(n.index), n;
+      }, t.prototype.selectPanel = function (t) {
+        var e = this;
+        if (t > e.printPanels.length - 1) t = e.printPanels.length - 1;
+        this.printPanels.forEach(function (n, i) {
+          t == i ? (n.enable(), e.editingPanel = n, e.printPaginationCreator && e.printPaginationCreator.selectPanel(t)) : n.disable();
+        });
+      }, t.prototype.deletePanel = function (t) {
+        this.printPanels[t].clear(), this.printPanels[t].getTarget().remove(), this.printPanels.splice(t, 1);
+      }, t.prototype.getPaneltotal = function () {
+        return this.printPanels.length;
+      }, t.prototype.createDefaultPanel = function () {
+        return new pt(new rt({
+          index: this.printPanels.length,
+          name: this.defaultPanelName,
+          paperType: "A4"
+        }), this.id);
+      }, t.prototype.createContainer = function (t) {
+        t ? (this.container = $(t), this.container.addClass("hiprint-printTemplate")) : this.container = $('<div class="hiprint-printTemplate"></div>');
+      }, t.prototype.getJsonTid = function () {
+        var t = [];
+        return this.printPanels.forEach(function (e) {
+          e.getPanelEntity().printElements.length && t.push(e.getPanelEntity());
+        }), new st({
+          panels: t
+        });
+      }, t.prototype.getJson = function () {
+        var t = [];
+        return this.printPanels.forEach(function (e) {
+          t.push(e.getPanelEntity(!0));
+        }), new st({
+          panels: t
+        });
+      }, t.prototype.undo = function (t) {
+        o.a.event.trigger("hiprintTemplateDataShortcutKey_" + this.id, "undo");
+      }, t.prototype.redo = function (t) {
+        o.a.event.trigger("hiprintTemplateDataShortcutKey_" + this.id, "redo");
+      }, t.prototype.getPrintElementSelectEventKey = function () {
+        return "PrintElementSelectEventKey_" + this.id;
+      }, t.prototype.getBuildCustomOptionSettingEventKey = function () {
+        return "BuildCustomOptionSettingEventKey_" + this.id;
+      }, t.prototype.clear = function () {
+        this.printPanels.forEach(function (t) {
+          if (t.clear(), t.index > 0) {
+            var e = t.getTarget();
+            e && e.length && e.remove();
+          }
+        }), this.printPanels = [this.printPanels[0]], this.printPaginationCreator && this.printPaginationCreator.buildPagination();
+      }, t.prototype.getPaperType = function (t) {
+        return null == t && (t = 0), this.printPanels[0].paperType;
+      }, t.prototype.getOrient = function (t) {
+        return null == t && (t = 0), this.printPanels[t].height > this.printPanels[t].width ? 1 : 2;
+      }, t.prototype.getPrintStyle = function (t) {
+        return this.printPanels[t].getPrintStyle();
+      }, t.prototype.print = function (t, e, o) {
+        t || (t = {}), this.getHtml(t, e).hiwprint(o);
+      }, t.prototype.print2 = function (t, e) {
+        if (t || (t = {}), e || (e = {}), this.clientIsOpened()) {
+          var n = this,
+            i = 0,
+            o = {},
+            r = $('link[media=print][href*="print-lock"]'),
+            css = '';
+          if (e.styleHandler) {
+            css += e.styleHandler()
+          }
+          if (r.length <= 0) {
+            throw new Error("璇峰湪 鍏ュ彛鏂囦欢(index.html) 涓紩鍏� print-lock.css. 娉ㄦ剰: link[media=\"print\"]");
+            return;
+          }
+          r.each(function (a, p) {
+            var s = new XMLHttpRequest();
+            s.open("GET", $(p).attr("href")), s.onreadystatechange = function () {
+              if (4 === s.readyState && 200 === s.status && (o[a + ""] = '<style rel="stylesheet" type="text/css">' + s.responseText + "</style>", ++i == r.length)) {
+                for (var p = "", l = 0; l < r.length; l++) {
+                  p += o[l + ""];
+                }
+                if (css) p = css + p;
+                n.sentToClient(p, t, e);
+              }
+            }, s.send();
+          });
+        } else alert(`${i18n.__('杩炴帴瀹㈡埛绔け璐�')}`);
+      }, t.prototype.imageToBase64 = function (t) {
+        var e = $(t).attr("src");
+        if (-1 == e.indexOf("base64")) try {
+          if (!this.tempimageBase64[e]) {
+            var n = document.createElement("canvas"),
+              i = new Image();
+            i.src = t.attr("src"), n.width = i.width, n.height = i.height, n.getContext("2d").drawImage(i, 0, 0), e && (this.tempimageBase64[e] = n.toDataURL("image/png"));
+          }
+
+          t.attr("src", this.tempimageBase64[e]);
+        } catch (e) {
+          try {
+            this.xhrLoadImage(t);
+          } catch (t) {
+            console.log(t);
+          }
+        }
+      }, t.prototype.xhrLoadImage = function (t) {
+      }, t.prototype.sentToClient = function (t, e, n) {
+        e || (e = {});
+        var i = $.extend({}, n || {});
+        i.imgToBase64 = i.imgToBase64 ?? false;
+        if (i.printByFragments) {
+          // 鍒嗘壒鎵撳嵃
+          this.getHtmlAsync(e, i)
+            .then(rootElement => {
+              var o = t + rootElement[0].outerHTML;
+              i.id = s.a.instance.guid(), i.html = o, i.templateId = this.id, hiwebSocket.sendByFragments(i, n);
+            })
+        } else {
+          // 鍚屾鎵撳嵃
+          var o = t + this.getHtml(e, i)[0].outerHTML;
+          i.id = s.a.instance.guid(), i.html = o, i.templateId = this.id, hiwebSocket.send(i);
+        }
+      }, t.prototype.printByHtml = function (t) {
+        $(t).hiwprint();
+      }, t.prototype.printByHtml2 = function (t, e) {
+        if (e || (e = {}), this.clientIsOpened()) {
+          var n = this,
+            i = 0,
+            o = {},
+            r = $('link[media=print][href*="print-lock"]');
+          if (r.length <= 0) {
+            throw new Error("璇峰湪 鍏ュ彛鏂囦欢(index.html) 涓紩鍏� print-lock.css. 娉ㄦ剰: link[media=\"print\"]");
+            return;
+          }
+          r.each(function (a, p) {
+            var l = new XMLHttpRequest();
+            l.open("GET", $(p).attr("href")), l.onreadystatechange = function () {
+              if (4 === l.readyState && 200 === l.status && (o[a + ""] = '<style rel="stylesheet" type="text/css">' + l.responseText + "</style>", ++i == r.length)) {
+                for (var p = "", u = 0; u < r.length; u++) {
+                  p += o[u + ""];
+                }
+
+                var d = p + $(t)[0].outerHTML,
+                  c = $.extend({}, e || {});
+                c.id = s.a.instance.guid(), c.html = d, c.templateId = n.id, hiwebSocket.send(c);
+              }
+            }, l.send();
+          });
+        } else alert(`${i18n.__('杩炴帴瀹㈡埛绔け璐�')}`);
+      }, t.prototype.deletePrintElement = function (t) {
+        this.printPanels.forEach(function (e) {
+          e.deletePrintElement(t);
+        });
+      }, t.prototype.transformImg = function (t) {
+        var e = this;
+        t.map(function (t, n) {
+          e.imageToBase64($(n));
+        });
+      }, t.prototype.toPdf = function (t, e, options) {
+        var i = this;
+        var dtd = $.Deferred();
+        var isDownload = true;
+        if (this.printPanels.length) {
+          var r = o.a.mm.toPt(this.printPanels[0].width),
+            a = o.a.mm.toPt(this.printPanels[0].height),
+            p = $.extend({
+              scale: 2,
+              width: o.a.pt.toPx(r),
+              x: 0,
+              y: 0,
+              useCORS: !0
+            }, options || {}),
+            s = new jsPDF({
+              orientation: 1 == this.getOrient(0) ? "portrait" : "landscape",
+              unit: "pt",
+              format: this.printPanels[0].paperType ? this.printPanels[0].paperType.toLocaleLowerCase() : [r, a]
+            }),
+            l = this.getHtml(t, options);
+          if (options && undefined != options.isDownload) {
+            isDownload = options.isDownload
+          }
+          this.createTempContainer();
+          var u = this.getTempContainer();
+          this.svg2canvas(l), u.html(l[0]);
+          var d = u.find(".hiprint-printPanel .hiprint-printPaper").length;
+          $(l).css("position:fixed"), domtoimage.toCanvas(l[0], p).then(function (t) {
+            var n = t.getContext("2d");
+            n.mozImageSmoothingEnabled = !1, n.webkitImageSmoothingEnabled = !1, n.msImageSmoothingEnabled = !1, n.imageSmoothingEnabled = !1;
+
+            for (var o = t.toDataURL("image/jpeg"), p = 0; p < d; p++) {
+              s.addImage(o, "JPEG", 0, 0 - p * a, r, d * a), p < d - 1 && s.addPage();
+            }
+            if (isDownload) {
+              i.removeTempContainer(), e.indexOf(".pdf") > -1 ? s.save(e) : s.save(e + ".pdf");
+            } else {
+              i.removeTempContainer();
+              let type = options.type || 'blob';
+              var pdfFile = s.output(type);
+              dtd.resolve(pdfFile);
+            }
+          });
+        }
+        return dtd.promise();
+      }, t.prototype.createTempContainer = function () {
+        this.removeTempContainer(), $("body").prepend($('<div class="hiprint_temp_Container" style="overflow:hidden;height: 0px;box-sizing: border-box;"></div>'));
+      }, t.prototype.removeTempContainer = function () {
+        $(".hiprint_temp_Container").remove();
+      }, t.prototype.getTempContainer = function () {
+        return $(".hiprint_temp_Container");
+      }, t.prototype.svg2canvas = function (t) {
+        var that = this;
+        t.find("svg").each(function (t, e) {
+          var n = e.parentNode, p = that.parentWidthHeight(n),
+            i = document.createElement("canvas");
+          i.width = p.width, i.height = p.height;
+          var ctx = i.getContext('2d'),
+            str = new XMLSerializer().serializeToString(e);
+          Canvg.fromString(ctx, str).render(), $(e).before(i), n.removeChild(e);
+        });
+      }, t.prototype.parentWidthHeight = function (t) {
+        if (t.style.width.endsWith('%') || t.style.height.endsWith('%')) {
+          if (t.className != 'hiprint-printPaper-content') {
+            return this.parentWidthHeight(t.parentNode);
+          }
+          return {width: 10, height: 10}
+        } else {
+          return {width: o.a.pt.toPx(parseFloat(t.style.width)), height: o.a.pt.toPx(parseFloat(t.style.height))}
+        }
+      }, t.prototype.on = function (t, e) {
+        o.a.event.clear(t + "_" + this.id);
+        o.a.event.on(t + "_" + this.id, e);
+      }, t.prototype.clientIsOpened = function () {
+        return hiwebSocket.opened;
+      }, t.prototype.getPrinterList = function () {
+        var t = hiwebSocket.getPrinterList();
+        return t || [];
+      }, t.prototype.getElementByTid = function (t, e) {
+        return null == e && (e = 0), this.printPanels[e].getElementByTid(t);
+      }, t.prototype.getElementByName = function (t, e) {
+        return null == e && (e = 0), this.printPanels[e].getElementByName(t);
+      }, t.prototype.getPanel = function (t) {
+        return null == t && (t = 0), this.printPanels[t];
+      }, t.prototype.loadAllImages = function (t, e, n) {
+        var i = this;
+        null == n && (n = 0);
+
+        for (var o = t[0].getElementsByTagName("img"), r = !0, a = 0; a < o.length; a++) {
+          var p = o[a];
+          p.src && p.src !== window.location.href && -1 == p.src.indexOf("base64") && (p && void 0 !== p.naturalWidth && 0 !== p.naturalWidth && p.complete || (r = !1));
+        }
+
+        n++ , !r && n < 10 ? setTimeout(function () {
+          i.loadAllImages(t, e, n);
+        }, 500) : e();
+      }, t.prototype.setFontList = function (t) {
+        this.fontList = t;
+      }, t.prototype.getFontList = function () {
+        return this.fontList;
+      }, t.prototype.setFields = function (t) {
+        this.fields = t;
+      }, t.prototype.getFields = function () {
+        return this.fields;
+      }, t.prototype.setOnImageChooseClick = function (t) {
+        this.onImageChooseClick = t;
+      }, t.prototype.getOnImageChooseClick = function () {
+        return this.onImageChooseClick;
+      }, t.prototype.getFieldsInPanel = function () {
+        var t = [];
+        return this.printPanels.forEach(function (e) {
+          t = t.concat(e.getFieldsInPanel());
+        }), t;
+      }, t.prototype.getTestData = function () {
+        var t = {};
+        return this.printPanels.forEach(function (e) {
+          t = Object.assign(t, e.getTestData());
+        }), t;
+      }, t.prototype.update = function (t, idx) {
+        var e = this;
+        try {
+          if (t && "object" == _typeof(t) && t.panels.length > 0) {
+            var curLen = e.printPanels.length - 1;
+            t.panels.forEach(function(panel, index) {
+              if (index > curLen) {
+                e.printPanels.push(new pt(panel, e.id));
+                var t = e.printPanels[index];
+                e.container.append(t.getTarget()), index > 0 && t.disable(), t.design(e.designOptions);
+                e.printPaginationCreator && e.printPaginationCreator.buildPagination();
+              }
+              var temp = new rt(panel);
+              e.editingPanel = e.printPanels[index];
+              e.editingPanel.update(temp);
+            })
+            e.selectPanel(idx || 0);
+          }
+        } catch (er) {
+          console.log(er);
+          e.onUpdateError && e.onUpdateError(er);
+        }
+      }, t.prototype.getSelectEls = function () {
+        var t = this;
+        var elements = [];
+        // 鑾峰彇閫夊尯鍏冪礌
+        if (t.editingPanel.mouseRect && t.editingPanel.mouseRect.target && $(".mouseRect").length) {
+          elements = t.editingPanel.getElementInRect(t.editingPanel.mouseRect);
+        } else { // 鑾峰彇澶氶�夊厓绱�
+          elements = t.editingPanel.printElements.filter(function (el) {
+            return "block" == el.designTarget.children().last().css("display") && !el.printElementType.type.includes("table");
+          })
+        }
+        return elements
+      },
+     t.prototype.selectElementsByField = function (fieldsArray){
+            var hiPrintEntity = this
+            var t = $
+            hiPrintEntity.editingPanel.printElements.forEach((e, index) => {
+              if(fieldsArray && fieldsArray.includes(e.options.field)){
+                let designTarget = e.designTarget
+                designTarget.children("div[panelindex]").addClass("selected")
+                designTarget.children().last().css({
+                  display: "block"
+                })
+                designTarget = designTarget[0]
+                t.data(designTarget, "hidraggable").options.onBeforeSelectAllDrag.call(designTarget,{})
+              }
+            })
+          },
+      t.prototype.selectAllElements = function () {
+        var hiPrintEntity = this
+        var t = $
+        hiPrintEntity.editingPanel.printElements.forEach((e, index) => {
+          let designTarget = e.designTarget
+          designTarget.children("div[panelindex]").addClass("selected")
+          designTarget.children().last().css({
+            display: "block"
+          })
+          designTarget = designTarget[0]
+          t.data(designTarget, "hidraggable").options
+            .onBeforeSelectAllDrag
+            .call(designTarget, {})
+        })
+      },
+      t.prototype.updateOption = function (option, v) { // 鎵归噺鏇存柊鍙傛暟
+        var elements = this.getSelectEls();
+        if (elements && elements.length) {
+          elements.forEach(function (e) {
+            e.updateOption(option, v, true)
+          })
+          o.a.event.trigger("hiprintTemplateDataChanged_" + this.id, "鎵归噺淇敼");
+        }
+      }, t.prototype.setElsAlign = function (e) { // 璁剧疆妗嗛�夈�佸閫夊厓绱犲榻恆pi
+        var t = this;
+        var elements = this.getSelectEls();
+        if (elements.length) {
+          var minLeft = Math.min.apply(null, elements.map(function (el) {return el.options.left}));
+          var maxRight = Math.max.apply(null, elements.map(function (el) {return el.options.left + el.options.width}));
+          var minTop = Math.min.apply(null, elements.map(function (el) {return el.options.top}));
+          var maxBottom = Math.max.apply(null, elements.map(function (el) {return el.options.top + el.options.height}));
+          switch (e) {
+          case "left": // 宸﹀榻�
+            elements.forEach(function (el) {
+              el.updateSizeAndPositionOptions(minLeft);
+              el.designTarget.css("left", el.options.displayLeft());
+            })
+            break;
+          case "vertical": // 灞呬腑
+            var vertical = minLeft + (maxRight - minLeft) / 2;
+            elements.forEach(function (el) {
+              el.updateSizeAndPositionOptions(vertical - el.options.width / 2);
+              el.designTarget.css("left", el.options.displayLeft());
+            })
+            break;
+          case "right": // 鍙冲榻�
+            elements.forEach(function (el) {
+              el.updateSizeAndPositionOptions(maxRight - el.options.width);
+              el.designTarget.css("left", el.options.displayLeft())
+            })
+            break;
+          case "top": // 椤堕儴瀵归綈
+            elements.forEach(function (el) {
+              el.updateSizeAndPositionOptions(undefined, minTop);
+              el.designTarget.css("top", el.options.displayTop());
+            })
+            break;
+          case "horizontal": // 鍨傜洿灞呬腑
+            var horizontal = minTop + (maxBottom - minTop) / 2;
+            elements.forEach(function (el) {
+              el.updateSizeAndPositionOptions(undefined, horizontal - el.options.height / 2);
+              el.designTarget.css("top", el.options.displayTop());
+            })
+            break;
+          case "bottom": //搴曢儴瀵归綈
+            elements.forEach(function (el) {
+              el.updateSizeAndPositionOptions(undefined, maxBottom - el.options.height);
+              el.designTarget.css("top", el.options.displayTop());
+            })
+            break;
+          case "distributeHor": // 妯悜鍒嗘暎
+            var sumWidth = [].reduce.call(elements, function (total, el) {
+              return total + el.options.width;
+            }, 0)
+            var distributeHor = ((maxRight - minLeft) - sumWidth) / (elements.length - 1);
+            elements.sort(function (prev, curr) {
+              return prev.options.left - curr.options.left;
+            })
+            elements.forEach(function (el, index) {
+              if (![0, elements.length - 1].includes(index)) {
+                el.updateSizeAndPositionOptions(elements[index - 1].options.left + elements[index - 1].options.width + distributeHor);
+                el.designTarget.css("left", el.options.displayLeft());
+              }
+            })
+            break;
+          case "distributeVer": // 绾靛悜鍒嗘暎
+            var sumHeight = [].reduce.call(elements, function (total, el) {
+              return total + el.options.height;
+            }, 0)
+            var distributeVer = ((maxBottom - minTop) - sumHeight) / (elements.length - 1);
+            elements.sort(function (prev, curr) {
+              return prev.options.top - curr.options.top;
+            })
+            elements.forEach(function (el, index) {
+              if (![0, elements.length - 1].includes(index)) {
+                el.updateSizeAndPositionOptions(undefined, elements[index - 1].options.top + elements[index - 1].options.height + distributeVer);
+                el.designTarget.css("top", el.options.displayTop());
+              }
+            })
+            break;
+          }
+        }
+      }, t.prototype.setElsSpace = function (dis, isHor) {
+        var t = this;
+        var elements = this.getSelectEls();
+        if (elements.length) {
+          if (isHor) { // 姘村钩璺濈 鈫�
+            elements.sort(function (prev, curr) {
+              return prev.options.left - curr.options.left;
+            })
+            elements.forEach(function (el, index) {
+              if (index > 0) {
+                el.updateSizeAndPositionOptions(elements[index - 1].options.left + elements[index - 1].options.width + dis);
+                el.designTarget.css("left", el.options.displayLeft());
+              }
+            })
+          } else { // 鍨傜洿璺濈 鈫�
+            elements.sort(function (prev, curr) {
+              return prev.options.top - curr.options.top;
+            })
+            elements.forEach(function (el, index) {
+              if (index > 0) {
+                el.updateSizeAndPositionOptions(undefined, elements[index - 1].options.top + elements[index - 1].options.height + dis);
+                el.designTarget.css("top", el.options.displayTop());
+              }
+            })
+          }
+        }
+      }, t.prototype.initAutoSave = function () {
+        var t = this;
+        o.a.event.on("hiprintTemplateDataShortcutKey_" + this.id, function (key) {
+          if (!t.history) return;
+          switch (key) {
+          case "undo":
+            if (t.historyPos > 0) {
+              t.historyPos -= 1;
+              var cur = t.historyList[t.historyPos];
+              t.update(cur.json);
+            }
+            break;
+          case "redo":
+            if (t.historyPos < t.historyList.length - 1) {
+              t.historyPos += 1;
+              var cur = t.historyList[t.historyPos];
+              t.update(cur.json);
+            }
+            break;
+          }
+        });
+        o.a.event.on("hiprintTemplateDataChanged_" + this.id, function (type) {
+          if (t.history) {
+            var j = 1 == t.dataMode ? t.getJson() : t.getJsonTid()
+            t.lastJson = j;
+            if (t.historyPos < t.historyList.length - 1) {
+              t.historyList = t.historyList.slice(0, t.historyPos + 1);
+            }
+            t.historyList.push({id: s.a.instance.guid(), type: type, json: j});
+            if (t.historyList.length > 50) {
+              t.historyList = t.historyList.slice(0, 1).concat(t.historyList.slice(1, 50));
+            } else {
+              t.historyPos += 1;
+            }
+            t.onDataChanged && t.onDataChanged(type, j);
+          }
+        });
+      }, t;
+    }();
+
+  function ht(t) {
+    this.getHtml(t).hiwprint();
+  }
+
+  function ft(t, e, n) {
+    $.extend({}, t || {});
+    t.imgToBase64 = t.imgToBase64 ?? false;
+    var i = new ct({});
+    i.on("printSuccess", e), i.on("printError", n), i.printByHtml2(this.getHtml(t), t.options);
+  }
+
+  function gt(t) {
+    var e = void 0;
+    return t && t.templates.forEach(function (n, i) {
+      var o = $.extend({}, n.options || {});
+      t.imgToBase64 && (o.imgToBase64 = o.imgToBase64 ?? false), e ? e.append(n.template.getHtml(n.data, o).html()) : e = n.template.getHtml(n.data, o);
+    }), e;
+  }
+
+  function mt(t) {
+    p.a.instance.init(t), p.a.instance.providers && p.a.instance.providers.forEach(function (t) {
+      t.addElementTypes(a.instance);
+    });
+    if (window.autoConnect && (p.a.instance.host != hiwebSocket.host || p.a.instance.token != hiwebSocket.token)) {
+      hiwebSocket.stop()
+      p.a.instance.host && (hiwebSocket.host = p.a.instance.host);
+      p.a.instance.token && (hiwebSocket.token = p.a.instance.token);
+      hiwebSocket.start()
+    }
+    if (p.a.instance.lang && Object.keys(languages).includes(p.a.instance.lang)) {
+      i18n.lang = p.a.instance.lang;
+    } else {
+      i18n.lang = 'cn'
+    }
+  }
+
+  function cig(t) {
+    if (hiprint._config == void 0) {
+      hiprint._config = JSON.stringify(window.HIPRINT_CONFIG);
+    }
+    const oldConfig = JSON.parse(hiprint._config);
+    if (t) {
+      t && Object.keys(t).forEach(function (i) {
+        if (i == "optionItems" && t.optionItems && t.optionItems.length) {
+          p.a.instance.registerItems(t.optionItems);
+        }
+        else if (t[i].tabs && t[i].tabs.length) {
+          t[i].tabs.forEach(function (tab, idx) {
+            if (tab.replace) {
+              $.extend(p.a.instance[i].tabs[idx], tab);
+            } else {
+              var options = tab.options || [], list = oldConfig[i].tabs[idx].options;
+              options && options.forEach(function (o) {
+                var idx = list.findIndex(function (e) {
+                  return e.name == o.name
+                });
+                if (idx > -1) list[idx].hidden = o.hidden;
+                else {
+                  if (o.after) {
+                    idx = list.findIndex(function (e) {
+                      return e.name == o.after
+                    });
+                    if (idx > -1) list.splice(idx + 1, 0, o)
+                  } else list.push(o);
+                }
+              })
+              $.extend(p.a.instance[i].tabs[idx], {
+                name: tab.name,
+                options: list
+              });
+            }
+          })
+          delete t[i].tabs;
+        }
+        else if (t[i].supportOptions && t[i].supportOptions.length) {
+          var options = t[i].supportOptions, list = oldConfig[i].supportOptions;
+          options.forEach(function (o) {
+            var idx = list.findIndex(function (e) {
+              return e.name == o.name
+            });
+            if (idx > -1) list[idx].hidden = o.hidden;
+            else {
+              if (o.after) {
+                idx = list.findIndex(function (e) {
+                  return e.name == o.after
+                });
+                if (idx > -1) list.splice(idx + 1, 0, o)
+              } else list.push(o);
+            }
+          })
+          $.extend(p.a.instance[i].supportOptions, list);
+          delete t[i].supportOptions;
+        } else {
+          var keyMap = {};
+          keyMap[i] = t[i];
+          if (t[i].tabs && t[i].tabs.length == 0) {
+            keyMap[i].supportOptions = oldConfig[i].supportOptions;
+          }
+          $.extend(p.a.instance, keyMap);
+        }
+      });
+    } else {
+      $.extend(p.a.instance, JSON.parse(hiprint._config));
+    }
+  }
+
+  function uep(t, c) {
+    return a.instance.updateElementType(t, c);
+  }
+
+  function rpl(c) {
+    p.a.instance.clear("printerList");
+    p.a.instance.on("printerList", c);
+    hiwebSocket.refreshPrinterList();
+  }
+
+  function getClients(c) {
+    p.a.instance.clear("clients");
+    p.a.instance.on("clients", c);
+    hiwebSocket.getClients();
+  }
+
+  function getClientInfo(c) {
+    p.a.instance.clear("clientInfo");
+    p.a.instance.on("clientInfo", c);
+    hiwebSocket.getClientInfo()
+  }
+
+  function getAddr(type, c, ...args) {
+    p.a.instance.clear("address_" + type);
+    p.a.instance.on("address_" + type, c);
+    hiwebSocket.getAddress(type, ...args);
+  }
+
+  function ippPrint(options, callback, connected) {
+    p.a.instance.clear("ippPrinterCallback");
+    p.a.instance.on("ippPrinterCallback", callback);
+    p.a.instance.clear("ippPrinterConnected");
+    p.a.instance.on("ippPrinterConnected", connected);
+    hiwebSocket.ippPrint(options);
+  }
+
+  function ippRequest(options, callback) {
+    p.a.instance.clear("ippRequestCallback");
+    p.a.instance.on("ippRequestCallback", callback);
+    hiwebSocket.ippRequest(options);
+  }
+
+  n.d(e, "init", function () {
+    return mt;
+  }), n.d(e, "setConfig", function () {
+    return cig;
+  }), n.d(e, "updateElementType", function () {
+    return uep;
+  }), n.d(e, "hiwebSocket", function () {
+    return hiwebSocket;
+  }), n.d(e, "refreshPrinterList", function () {
+    return rpl;
+  }), n.d(e, "getClients", function() {
+    return getClients;
+  }), n.d(e, "getClientInfo", function() {
+    return getClientInfo;
+  }), n.d(e, "getAddress", function () {
+    return getAddr;
+  }), n.d(e, "ippPrint", function () {
+    return ippPrint;
+  }), n.d(e, "ippRequest", function () {
+    return ippRequest;
+  }), n.d(e, "PrintElementTypeManager", function () {
+    return it;
+  }), n.d(e, "PrintElementTypeGroup", function () {
+    return ot;
+  }), n.d(e, "PrintTemplate", function () {
+    return ct;
+  }), n.d(e, "print", function () {
+    return ht;
+  }), n.d(e, "print2", function () {
+    return ft;
+  }), n.d(e, "getHtml", function () {
+    return gt;
+  }), $(document).ready(function () {
+    console.log('document ready');
+    console.log(window.autoConnect);
+    if (hiwebSocket.hasIo() && window.autoConnect) {
+      hiwebSocket.start();
+    }
+  });
+}]);
+
+var defaultElementTypeProvider = defaultTypeProvider(hiprint)
+
+export {
+  hiprint,
+  defaultElementTypeProvider
+}
diff --git a/src/hiprint/hiprint.config.js b/src/hiprint/hiprint.config.js
new file mode 100644
index 0000000..9501cb9
--- /dev/null
+++ b/src/hiprint/hiprint.config.js
@@ -0,0 +1,2238 @@
+(function () {
+  window.HIPRINT_CONFIG = {
+    //optionItems: [hiprintCustomOptionItem],//鑷畾涔夐�夐」
+    movingDistance: 1.5, //榧犳爣鎷栧姩涓�娆$Щ鍔ㄧ殑璺濈,榛樿1.5pt
+    paperHeightTrim: 1, //绾稿紶html 鐨勯珮搴︾瓑浜庣湡瀹為珮搴�-1
+    showPosition: true, //鏄剧ず鍧愭爣浣嶇疆
+    positionLineMode: false, //鍧愭爣鏄剧ず鍦ㄧ嚎涓婄殑
+    positionUnit: true, //鏄剧ず鍧愭爣鍗曚綅
+    showSizeBox: true, //鏄剧ず瀹介珮box
+    adsorbMin: 3, //鍚搁檮鏈�灏忚窛绂籶t
+    showAdsorbLine: true, //鏄剧ず鍚搁檮绾�
+    adsorbLineMin: 6, //鍚搁檮绾挎樉绀烘渶灏忚窛绂籶t
+    paperNumberContinue: true, //杩炵画鎵撳嵃椤电爜
+    panel: {
+      supportOptions: [
+        {
+          name: 'panelPaperRule',
+          hidden: false
+        },
+        {
+          name: 'panelPageRule',
+          hidden: false
+        },
+        {
+          name: 'firstPaperFooter',
+          hidden: false
+        },
+        {
+          name: 'evenPaperFooter',
+          hidden: false
+        },
+        {
+          name: 'oddPaperFooter',
+          hidden: false
+        },
+        {
+          name: 'lastPaperFooter',
+          hidden: false
+        },
+        {
+          name: 'leftOffset',
+          hidden: false
+        },
+        {
+          name: 'topOffset',
+          hidden: false
+        },
+        {
+          name: 'fontFamily',
+          hidden: false
+        },
+        {
+          name: 'orient',
+          hidden: false
+        },
+        {
+          name: 'paperNumberDisabled',
+          hidden: false
+        },
+        {
+          name: 'paperNumberContinue',
+          hidden: false
+        },
+        {
+          name: 'paperNumberFormat',
+          hidden: false
+        },
+        {
+          name: 'watermarkOptions',
+          hidden: false
+        },
+        {
+          name: 'panelLayoutOptions',
+          hidden: false
+        },
+      ],
+      default: {}
+    },
+    text: {
+      tabs: [
+        {
+          name: '鍩虹', options: [
+            {
+              name: 'title',
+              hidden: false
+            },
+            {
+              name: 'field',
+              hidden: false
+            },
+            {
+              name: 'testData',
+              hidden: false
+            },
+            {
+              name: 'coordinate',
+              hidden: false
+            },
+            {
+              name: 'widthHeight',
+              hidden: false
+            },
+            {
+              name: 'hideTitle',
+              hidden: false
+            },
+            {
+              name: 'fixed',
+              hidden: false
+            },
+          ]
+        },
+        {
+          name: '鏍峰紡', options: [
+            {
+              name: 'dataType',
+              hidden: false
+            },
+            {
+              name: 'fontFamily',
+              hidden: false
+            },
+            {
+              name: 'fontSize',
+              hidden: false
+            },
+            {
+              name: 'fontWeight',
+              hidden: false
+            },
+            {
+              name: 'letterSpacing',
+              hidden: false
+            },
+            {
+              name: 'color',
+              hidden: false
+            },
+            {
+              name: 'backgroundColor',
+              hidden: false
+            },
+            {
+              name: 'textDecoration',
+              hidden: false
+            },
+            {
+              name: 'textAlign',
+              hidden: false
+            },
+            {
+              name: 'textContentVerticalAlign',
+              hidden: false
+            },
+            {
+              name: 'textContentWrap',
+              hidden: false
+            },
+            {
+              name: 'lineHeight',
+              hidden: false
+            },
+            {
+              name: 'transform',
+              hidden: false
+            },
+            {
+              name: 'zIndex',
+              hidden: false
+            }
+          ]
+        },
+        {
+          name: '杈规', options: [
+            {
+              name: 'optionsGroup',
+              hidden: false
+            },
+            {
+              name: 'borderLeft',
+              hidden: false
+            },
+            {
+              name: 'borderTop',
+              hidden: false
+            },
+            {
+              name: 'borderRight',
+              hidden: false
+            },
+            {
+              name: 'borderBottom',
+              hidden: false
+            },
+            {
+              name: 'borderWidth',
+              hidden: false
+            },
+            {
+              name: 'borderColor',
+              hidden: false
+            },
+            {
+              name: 'contentPaddingLeft',
+              hidden: false
+            },
+            {
+              name: 'contentPaddingTop',
+              hidden: false
+            },
+            {
+              name: 'contentPaddingRight',
+              hidden: false
+            },
+            {
+              name: 'contentPaddingBottom',
+              hidden: false
+            },
+          ]
+        },
+        {
+          name: '楂樼骇', options: [
+            {
+              name: 'textType',
+              hidden: false
+            },
+            {
+              name: 'barcodeMode',
+              hidden: false
+            },
+            {
+              name: 'barTextMode',
+              hidden: false
+            },
+            {
+              name: 'barWidth',
+              hidden: false
+            },
+            {
+              name: 'barAutoWidth',
+              hidden: false
+            },
+            {
+              name: 'qrCodeLevel',
+              hidden: false
+            },
+            {
+              name: 'pageBreak',
+              hidden: false
+            },
+            {
+              name: 'showInPage',
+              hidden: false
+            },
+            {
+              name: 'unShowInPage',
+              hidden: false
+            },
+            {
+              name: 'axis',
+              hidden: false
+            },
+            {
+              name: 'upperCase',
+              hidden: false
+            },
+            {
+              name: 'formatter',
+              hidden: false
+            },
+            {
+              name: 'styler',
+              hidden: false
+            }
+          ]
+        },
+      ],
+      supportOptions: [
+        {
+          name: 'title',
+          hidden: false
+        },
+        {
+          name: 'field',
+          hidden: false
+        },
+        {
+          name: 'testData',
+          hidden: false
+        },
+        {
+          name: 'coordinate',
+          hidden: false
+        },
+        {
+          name: 'widthHeight',
+          hidden: false
+        },
+        {
+          name: 'dataType',
+          hidden: false
+        },
+        {
+          name: 'fontFamily',
+          hidden: false
+        },
+        {
+          name: 'fontSize',
+          hidden: false
+        },
+        {
+          name: 'fontWeight',
+          hidden: false
+        },
+        {
+          name: 'letterSpacing',
+          hidden: false
+        },
+        {
+          name: 'color',
+          hidden: false
+        },
+        {
+          name: 'textDecoration',
+          hidden: false
+        },
+        {
+          name: 'textAlign',
+          hidden: false
+        },
+        {
+          name: 'textContentVerticalAlign',
+          hidden: false
+        },
+        {
+          name: 'textContentWrap',
+          hidden: false
+        },
+        {
+          name: 'lineHeight',
+          hidden: false
+        },
+        {
+          name: 'textType',
+          hidden: false
+        },
+        {
+          name: 'barcodeMode',
+          hidden: false
+        },
+        {
+          name: 'barTextMode',
+          hidden: false
+        },
+        {
+          name: 'barWidth',
+          hidden: false
+        },
+        {
+          name: 'barAutoWidth',
+          hidden: false
+        },
+        {
+          name: "qrCodeLevel",
+          hidden: false
+        },
+        {
+          name: 'hideTitle',
+          hidden: false
+        },
+        {
+          name: 'pageBreak',
+          hidden: false
+        },
+        {
+          name: 'showInPage',
+          hidden: false
+        },
+        {
+          name: 'unShowInPage',
+          hidden: false
+        },
+        {
+          name: 'fixed',
+          hidden: false
+        },
+        {
+          name: 'axis',
+          hidden: false
+        },
+        {
+          name: 'transform',
+          hidden: false
+        },
+        {
+          name: 'zIndex',
+          hidden: false
+        },
+        {
+          name: 'optionsGroup',
+          hidden: false
+        },
+        {
+          name: 'borderLeft',
+          hidden: false
+        },
+        {
+          name: 'borderTop',
+          hidden: false
+        },
+        {
+          name: 'borderRight',
+          hidden: false
+        },
+        {
+          name: 'borderBottom',
+          hidden: false
+        },
+        {
+          name: 'borderWidth',
+          hidden: false
+        },
+        {
+          name: 'borderColor',
+          hidden: false
+        },
+        {
+          name: 'contentPaddingLeft',
+          hidden: false
+        },
+        {
+          name: 'contentPaddingTop',
+          hidden: false
+        },
+        {
+          name: 'contentPaddingRight',
+          hidden: false
+        },
+        {
+          name: 'contentPaddingBottom',
+          hidden: false
+        },
+        {
+          name: 'backgroundColor',
+          hidden: false
+        },
+        {
+          name: 'formatter',
+          hidden: false
+        },
+        {
+          name: 'styler',
+          hidden: false
+        }
+      ],
+      default: {
+        width: 120,
+        height: 9.75,
+        // barAutoWidth: 'true' 杩欓噷蹇呴』浣跨敤瀛楃涓�
+      }
+    },
+    image: {
+      tabs: [
+        {
+          name: '鍩虹', options: [
+            {
+              name: 'field',
+              hidden: false
+            },
+            {
+              name: 'src',
+              hidden: false
+            },
+            {
+              name: 'fit',
+              hidden: false
+            },
+            {
+              name: 'coordinate',
+              hidden: false
+            },
+            {
+              name: 'widthHeight',
+              hidden: false
+            },
+            {
+              name: 'showInPage',
+              hidden: false
+            },
+            {
+              name: 'unShowInPage',
+              hidden: false
+            },
+            {
+              name: 'fixed',
+              hidden: false
+            },
+          ]
+        },
+        {
+          name: '鏍峰紡', options: [
+            {
+              name: 'transform',
+              hidden: false
+            },
+            {
+              name: 'zIndex',
+              hidden: false
+            },
+            {
+              name: 'borderRadius',
+              hidden: false
+            },
+          ]
+        },
+        {
+          name: '楂樼骇', options: [
+            {
+              name: 'pageBreak',
+              hidden: false
+            },
+            {
+              name: 'axis',
+              hidden: false
+            },
+            {
+              name: 'formatter',
+              hidden: false
+            },
+            {
+              name: 'styler',
+              hidden: false
+            }
+          ]
+        },
+      ],
+      supportOptions: [
+        {
+          name: 'field',
+          hidden: false
+        },
+        {
+          name: 'src',
+          hidden: false
+        },
+        {
+          name: 'fit',
+          hidden: false
+        },
+        {
+          name: 'borderRadius',
+          hidden: false
+        },
+        {
+          name: 'coordinate',
+          hidden: false
+        },
+        {
+          name: 'widthHeight',
+          hidden: false
+        },
+        {
+          name: 'showInPage',
+          hidden: false
+        },
+        {
+          name: 'unShowInPage',
+          hidden: false
+        },
+        {
+          name: 'fixed',
+          hidden: false
+        },
+        {
+          name: 'pageBreak',
+          hidden: false
+        },
+        {
+          name: 'axis',
+          hidden: false
+        },
+        {
+          name: 'transform',
+          hidden: false
+        },
+        {
+          name: 'zIndex',
+          hidden: false
+        },
+        {
+          name: 'formatter',
+          hidden: false
+        },
+        {
+          name: 'styler',
+          hidden: false
+        }
+      ],
+      default: {}
+    },
+    longText: {
+      tabs: [
+        {
+          name: '鍩虹', options: [
+            {
+              name: 'title',
+              hidden: false
+            },
+            {
+              name: 'field',
+              hidden: false
+            },
+            {
+              name: 'testData',
+              hidden: false
+            },
+            {
+              name: 'coordinate',
+              hidden: false
+            },
+            {
+              name: 'widthHeight',
+              hidden: false
+            },
+            {
+              name: 'hideTitle',
+              hidden: false
+            },
+            {
+              name: 'fixed',
+              hidden: false
+            },
+          ]
+        },
+        {
+          name: '鏍峰紡', options: [
+            {
+              name: 'fontFamily',
+              hidden: false
+            },
+            {
+              name: 'fontSize',
+              hidden: false
+            },
+            {
+              name: 'fontWeight',
+              hidden: false
+            },
+            {
+              name: 'letterSpacing',
+              hidden: false
+            },
+            {
+              name: 'textAlign',
+              hidden: false
+            },
+            {
+              name: 'lineHeight',
+              hidden: false
+            },
+            {
+              name: 'color',
+              hidden: false
+            },
+            {
+              name: 'longTextIndent',
+              hidden: false
+            },
+            {
+              name: 'leftSpaceRemoved',
+              hidden: false
+            },
+            {
+              name: 'lHeight',
+              hidden: false
+            },
+            {
+              name: 'transform',
+              hidden: false
+            },
+            {
+              name: 'zIndex',
+              hidden: false
+            },
+          ]
+        },
+        {
+          name: '楂樼骇', options: [
+            {
+              name: 'pageBreak',
+              hidden: false
+            },
+            {
+              name: 'showInPage',
+              hidden: false
+            },
+            {
+              name: 'unShowInPage',
+              hidden: false
+            },
+            {
+              name: 'axis',
+              hidden: false
+            },
+            {
+              name: 'formatter',
+              hidden: false
+            },
+            {
+              name: 'styler',
+              hidden: false
+            }
+          ]
+        },
+      ],
+      supportOptions: [
+        {
+          name: 'title',
+          hidden: false
+        },
+        {
+          name: 'field',
+          hidden: false
+        },
+        {
+          name: 'testData',
+          hidden: false
+        },
+        {
+          name: 'coordinate',
+          hidden: false
+        },
+        {
+          name: 'widthHeight',
+          hidden: false
+        },
+        {
+          name: 'fontFamily',
+          hidden: false
+        },
+        {
+          name: 'fontSize',
+          hidden: false
+        },
+        {
+          name: 'fontWeight',
+          hidden: false
+        },
+        {
+          name: 'letterSpacing',
+          hidden: false
+        },
+        {
+          name: 'textAlign',
+          hidden: false
+        },
+        {
+          name: 'lineHeight',
+          hidden: false
+        },
+        {
+          name: 'color',
+          hidden: false
+        },
+        {
+          name: 'hideTitle',
+          hidden: false
+        },
+        {
+          name: 'longTextIndent',
+          hidden: false
+        },
+        {
+          name: 'leftSpaceRemoved',
+          hidden: false
+        },
+        {
+          name: 'pageBreak',
+          hidden: false
+        },
+        {
+          name: 'showInPage',
+          hidden: false
+        },
+        {
+          name: 'unShowInPage',
+          hidden: false
+        },
+        {
+          name: 'fixed',
+          hidden: false
+        },
+        {
+          name: 'axis',
+          hidden: false
+        },
+        {
+          name: 'lHeight',
+          hidden: false
+        },
+        {
+          name: 'transform',
+          hidden: false
+        },
+        {
+          name: 'zIndex',
+          hidden: false
+        },
+        {
+          name: 'optionsGroup',
+          hidden: false
+        },
+        {
+          name: 'borderLeft',
+          hidden: false
+        },
+        {
+          name: 'borderTop',
+          hidden: false
+        },
+        {
+          name: 'borderRight',
+          hidden: false
+        },
+        {
+          name: 'borderBottom',
+          hidden: false
+        },
+        {
+          name: 'borderWidth',
+          hidden: false
+        },
+        {
+          name: 'borderColor',
+          hidden: false
+        },
+        {
+          name: 'contentPaddingLeft',
+          hidden: false
+        },
+        {
+          name: 'contentPaddingTop',
+          hidden: false
+        },
+        {
+          name: 'contentPaddingRight',
+          hidden: false
+        },
+        {
+          name: 'contentPaddingBottom',
+          hidden: false
+        },
+        {
+          name: 'backgroundColor',
+          hidden: false
+        },
+        {
+          name: 'formatter',
+          hidden: false
+        },
+        {
+          name: 'styler',
+          hidden: false
+        }
+      ],
+      default: {
+        height: 42,
+        width: 550
+      }
+    },
+    table: {
+      tabs: [
+        {
+          name: '鍩虹', options: [
+            {
+              name: 'field',
+              hidden: false
+            },
+            {
+              name: 'testData',
+              hidden: false
+            },
+            {
+              name: 'coordinate',
+              hidden: false
+            },
+            {
+              name: 'widthHeight',
+              hidden: false
+            },
+            {
+              name: 'tableHeaderRepeat',
+              hidden: false
+            },
+            {
+              name: 'tableFooterRepeat',
+              hidden: false
+            },
+            {
+              name: 'autoCompletion',
+              hidden: false
+            },
+            {
+              name: 'maxRows',
+              hidden: false
+            },
+            {
+              name: 'columns',
+              hidden: false
+            },
+          ]
+        },
+        {
+          name: '鏍峰紡', options: [
+            {
+              name: 'fontFamily',
+              hidden: false
+            },
+            {
+              name: 'fontSize',
+              hidden: false
+            },
+            {
+              name: 'lineHeight',
+              hidden: false
+            },
+            {
+              name: 'textAlign',
+              hidden: false
+            },
+            {
+              name: 'gridColumns',
+              hidden: false
+            },
+            {
+              name: 'gridColumnsGutter',
+              hidden: false
+            },
+            {
+              name: 'tableBorder',
+              hidden: false
+            },
+            {
+              name: 'tableHeaderBorder',
+              hidden: false
+            },
+            {
+              name: 'tableHeaderCellBorder',
+              hidden: false
+            },
+            {
+              name: 'tableHeaderRowHeight',
+              hidden: false
+            },
+            {
+              name: 'tableHeaderBackground',
+              hidden: false
+            },
+            {
+              name: 'tableHeaderFontSize',
+              hidden: false
+            },
+            {
+              name: 'tableHeaderFontWeight',
+              hidden: false
+            },
+            {
+              name: 'tableBodyRowHeight',
+              hidden: false
+            },
+            {
+              name: 'tableBodyRowBorder',
+              hidden: false
+            },
+            {
+              name: 'tableBodyCellBorder',
+              hidden: false
+            },
+            {
+              name: 'tableFooterBorder',
+              hidden: false
+            },
+            {
+              name: 'tableFooterCellBorder',
+              hidden: false
+            },
+            {
+              name: 'lHeight',
+              hidden: false
+            },
+          ]
+        },
+        // 鐣欑┖鍗虫樉绀� 琛ㄦ牸 鍒� 灞炴��
+        {
+          name: '鍒�', options: []
+        },
+        {
+          name: '楂樼骇', options: [
+            {
+              name: 'axis',
+              hidden: false
+            },
+            {
+              name: 'styler',
+              hidden: false
+            },
+            {
+              name: 'rowStyler',
+              hidden: false
+            },
+            {
+              name: 'footerFormatter',
+              hidden: false
+            },
+            {
+              name: 'rowsColumnsMerge',
+              hidden: false
+            },
+            {
+              name: 'rowsColumnsMergeClean',
+              hidden: false
+            },
+            {
+              name: 'groupSequenceContinue',
+              hidden: false
+            },
+            {
+              name: 'groupFieldsFormatter',
+              hidden: false
+            },
+            {
+              name: 'groupFormatter',
+              hidden: false
+            },
+            {
+              name: 'groupFooterFormatter',
+              hidden: false
+            },
+            {
+              name: 'gridColumnsFooterFormatter',
+              hidden: false
+            }
+          ]
+        },
+      ],
+      supportOptions: [
+        {
+          name: 'field',
+          hidden: false
+        },
+        {
+          name: 'coordinate',
+          hidden: false
+        },
+        {
+          name: 'widthHeight',
+          hidden: false
+        },
+        {
+          name: 'fontFamily',
+          hidden: false
+        },
+        {
+          name: 'fontSize',
+          hidden: false
+        },
+        {
+          name: 'lineHeight',
+          hidden: false
+        },
+        {
+          name: 'textAlign',
+          hidden: false
+        },
+        {
+          name: 'gridColumns',
+          hidden: false
+        },
+        {
+          name: 'gridColumnsGutter',
+          hidden: false
+        },
+        {
+          name: 'tableHeaderRepeat',
+          hidden: false
+        },
+        {
+          name: 'tableBorder',
+          hidden: false
+        },
+        {
+          name: 'tableHeaderBorder',
+          hidden: false
+        },
+        {
+          name: 'tableHeaderCellBorder',
+          hidden: false
+        },
+        {
+          name: 'tableHeaderRowHeight',
+          hidden: false
+        },
+        {
+          name: 'tableHeaderBackground',
+          hidden: false
+        },
+        {
+          name: 'tableHeaderFontSize',
+          hidden: false
+        },
+        {
+          name: 'tableHeaderFontWeight',
+          hidden: false
+        },
+        {
+          name: 'tableBodyRowHeight',
+          hidden: false
+        },
+        {
+          name: 'tableBodyRowBorder',
+          hidden: false
+        },
+        {
+          name: 'tableBodyCellBorder',
+          hidden: false
+        },
+        {
+          name: 'tableFooterBorder',
+          hidden: false
+        },
+        {
+          name: 'tableFooterCellBorder',
+          hidden: false
+        },
+        {
+          name: 'axis',
+          hidden: false
+        },
+        {
+          name: 'lHeight',
+          hidden: false
+        },
+        {
+          name: 'autoCompletion',
+          hidden: false
+        },
+        {
+          name: 'maxRows',
+          hidden: false
+        },
+        {
+          name: 'columns',
+          hidden: false
+        },
+        {
+          name: 'styler',
+          hidden: false
+        },
+        {
+          name: 'rowStyler',
+          hidden: false
+        },
+        {
+          name: 'tableFooterRepeat',
+          hidden: false
+        },
+        {
+          name: 'footerFormatter',
+          hidden: false
+        },
+        {
+          name: 'rowsColumnsMerge',
+          hidden: false
+        },
+        {
+          name: 'rowsColumnsMergeClean',
+          hidden: false
+        },
+        {
+          name: 'groupSequenceContinue',
+          hidden: false
+        },
+        {
+          name: 'groupFieldsFormatter',
+          hidden: false
+        },
+        {
+          name: 'groupFormatter',
+          hidden: false
+        },
+        {
+          name: 'groupFooterFormatter',
+          hidden: false
+        },
+        {
+          name: 'gridColumnsFooterFormatter',
+          hidden: false
+        }
+      ],
+      default: {
+        width: 550
+      }
+    },
+    hline: {
+      tabs: [
+        {
+          name: '鍩虹', options: [
+            {
+              name: 'coordinate',
+              hidden: false
+            },
+            {
+              name: 'widthHeight',
+              hidden: false
+            },
+            {
+              name: 'showInPage',
+              hidden: false
+            },
+            {
+              name: 'fixed',
+              hidden: false
+            },
+          ]
+        },
+        {
+          name: '鏍峰紡', options: [
+            {
+              name: 'borderWidth',
+              hidden: false
+            },
+            {
+              name: 'borderStyle',
+              hidden: false
+            },
+            {
+              name: 'borderColor',
+              hidden: false
+            },
+            {
+              name: 'transform',
+              hidden: false
+            },
+            {
+              name: 'zIndex',
+              hidden: false
+            },
+          ]
+        },
+        {
+          name: '楂樼骇', options: [
+            {
+              name: 'pageBreak',
+              hidden: false
+            },
+            {
+              name: 'axis',
+              hidden: false
+            },
+          ]
+        },
+      ],
+      supportOptions: [
+        {
+          name: 'coordinate',
+          hidden: false
+        },
+        {
+          name: 'widthHeight',
+          hidden: false
+        },
+        {
+          name: 'borderWidth',
+          hidden: false
+        },
+        {
+          name: 'borderStyle',
+          hidden: false
+        },
+        {
+          name: 'borderColor',
+          hidden: false
+        },
+        {
+          name: 'pageBreak',
+          hidden: false
+        },
+        {
+          name: 'showInPage',
+          hidden: false
+        },
+        {
+          name: 'fixed',
+          hidden: false
+        },
+        {
+          name: 'axis',
+          hidden: false
+        },
+        {
+          name: 'transform',
+          hidden: false
+        },
+        {
+          name: 'zIndex',
+          hidden: false
+        },
+      ],
+      default: {
+        borderWidth: 0.75,
+        height: 9,
+        width: 90
+      }
+    },
+    vline: {
+      tabs: [
+        {
+          name: '鍩虹', options: [
+            {
+              name: 'coordinate',
+              hidden: false
+            },
+            {
+              name: 'widthHeight',
+              hidden: false
+            },
+            {
+              name: 'showInPage',
+              hidden: false
+            },
+            {
+              name: 'fixed',
+              hidden: false
+            },
+          ]
+        },
+        {
+          name: '鏍峰紡', options: [
+            {
+              name: 'borderWidth',
+              hidden: false
+            },
+            {
+              name: 'borderStyle',
+              hidden: false
+            },
+            {
+              name: 'borderColor',
+              hidden: false
+            },
+            {
+              name: 'transform',
+              hidden: false
+            },
+            {
+              name: 'zIndex',
+              hidden: false
+            },
+          ]
+        },
+        {
+          name: '楂樼骇', options: [
+            {
+              name: 'pageBreak',
+              hidden: false
+            },
+            {
+              name: 'axis',
+              hidden: false
+            },
+          ]
+        },
+      ],
+      supportOptions: [
+        {
+          name: 'coordinate',
+          hidden: false
+        },
+        {
+          name: 'widthHeight',
+          hidden: false
+        },
+        {
+          name: 'borderWidth',
+          hidden: false
+        },
+        {
+          name: 'borderStyle',
+          hidden: false
+        },
+        {
+          name: 'borderColor',
+          hidden: false
+        },
+        {
+          name: 'pageBreak',
+          hidden: false
+        },
+        {
+          name: 'showInPage',
+          hidden: false
+        },
+        {
+          name: 'fixed',
+          hidden: false
+        },
+        {
+          name: 'axis',
+          hidden: false
+        },
+        {
+          name: 'transform',
+          hidden: false
+        },
+        {
+          name: 'zIndex',
+          hidden: false
+        },
+      ],
+      default: {
+        borderWidth: undefined,
+        height: 90,
+        width: 9
+      }
+    },
+    rect: {
+      tabs: [
+        {
+          name: '鍩虹', options: [
+            {
+              name: 'coordinate',
+              hidden: false
+            },
+            {
+              name: 'widthHeight',
+              hidden: false
+            },
+            {
+              name: 'showInPage',
+              hidden: false
+            },
+            {
+              name: 'fixed',
+              hidden: false
+            },
+          ]
+        },
+        {
+          name: '鏍峰紡', options: [
+            {
+              name: 'borderWidth',
+              hidden: false
+            },
+            {
+              name: 'borderStyle',
+              hidden: false
+            },
+            {
+              name: 'borderColor',
+              hidden: false
+            },
+            {
+              name: 'backgroundColor',
+              hidden: false
+            },
+            {
+              name: 'transform',
+              hidden: false
+            },
+            {
+              name: 'zIndex',
+              hidden: false
+            },
+          ]
+        },
+        {
+          name: '楂樼骇', options: [
+            {
+              name: 'pageBreak',
+              hidden: false
+            },
+            {
+              name: 'axis',
+              hidden: false
+            },
+          ]
+        },
+      ],
+      supportOptions: [
+        {
+          name: 'coordinate',
+          hidden: false
+        },
+        {
+          name: 'widthHeight',
+          hidden: false
+        },
+        {
+          name: 'borderWidth',
+          hidden: false
+        },
+        {
+          name: 'borderStyle',
+          hidden: false
+        },
+        {
+          name: 'borderColor',
+          hidden: false
+        },
+        {
+          name: 'backgroundColor',
+          hidden: false
+        },
+        {
+          name: 'pageBreak',
+          hidden: false
+        },
+        {
+          name: 'showInPage',
+          hidden: false
+        },
+        {
+          name: 'fixed',
+          hidden: false
+        },
+        {
+          name: 'axis',
+          hidden: false
+        },
+        {
+          name: 'transform',
+          hidden: false
+        },
+        {
+          name: 'zIndex',
+          hidden: false
+        },
+      ],
+      default: {
+        borderWidth: undefined,
+        height: 90,
+        width: 90
+      }
+    },
+    oval: {
+      tabs: [
+        {
+          name: '鍩虹', options: [
+            {
+              name: 'coordinate',
+              hidden: false
+            },
+            {
+              name: 'widthHeight',
+              hidden: false
+            },
+            {
+              name: 'showInPage',
+              hidden: false
+            },
+            {
+              name: 'fixed',
+              hidden: false
+            },
+          ]
+        },
+        {
+          name: '鏍峰紡', options: [
+            {
+              name: 'borderWidth',
+              hidden: false
+            },
+            {
+              name: 'borderStyle',
+              hidden: false
+            },
+            {
+              name: 'borderColor',
+              hidden: false
+            },
+            {
+              name: 'backgroundColor',
+              hidden: false
+            },
+            {
+              name: 'transform',
+              hidden: false
+            },
+            {
+              name: 'zIndex',
+              hidden: false
+            },
+          ]
+        },
+        {
+          name: '楂樼骇', options: [
+            {
+              name: 'pageBreak',
+              hidden: false
+            },
+            {
+              name: 'axis',
+              hidden: false
+            },
+          ]
+        },
+      ],
+      supportOptions: [
+        {
+          name: 'coordinate',
+          hidden: false
+        },
+        {
+          name: 'widthHeight',
+          hidden: false
+        },
+        {
+          name: 'borderWidth',
+          hidden: false
+        },
+        {
+          name: 'borderStyle',
+          hidden: false
+        },
+        {
+          name: 'borderColor',
+          hidden: false
+        },
+        {
+          name: 'backgroundColor',
+          hidden: false
+        },
+        {
+          name: 'pageBreak',
+          hidden: false
+        },
+        {
+          name: 'showInPage',
+          hidden: false
+        },
+        {
+          name: 'fixed',
+          hidden: false
+        },
+        {
+          name: 'axis',
+          hidden: false
+        },
+        {
+          name: 'transform',
+          hidden: false
+        },
+        {
+          name: 'zIndex',
+          hidden: false
+        }
+      ],
+      default: {
+        borderWidth: undefined,
+        height: 90,
+        width: 90
+      }
+    },
+    html: {
+      tabs: [
+        {
+          name: '鍩虹', options: [
+            {
+              name: 'coordinate',
+              hidden: false
+            },
+            {
+              name: 'widthHeight',
+              hidden: false
+            },
+            {
+              name: 'showInPage',
+              hidden: false
+            },
+            {
+              name: 'unShowInPage',
+              hidden: false
+            },
+            {
+              name: 'fixed',
+              hidden: false
+            },
+          ]
+        },
+        {
+          name: '鏍峰紡', options: [
+            {
+              name: 'transform',
+              hidden: false
+            },
+            {
+              name: 'zIndex',
+              hidden: false
+            },
+          ]
+        },
+        {
+          name: '楂樼骇', options: [
+            {
+              name: 'pageBreak',
+              hidden: false
+            },
+            {
+              name: 'axis',
+              hidden: false
+            },
+            {
+              name: 'formatter',
+              hidden: false
+            }
+          ]
+        },
+      ],
+      supportOptions: [
+        {
+          name: 'coordinate',
+          hidden: false
+        },
+        {
+          name: 'widthHeight',
+          hidden: false
+        },
+        {
+          name: 'pageBreak',
+          hidden: false
+        },
+        {
+          name: 'showInPage',
+          hidden: false
+        },
+        {
+          name: 'unShowInPage',
+          hidden: false
+        },
+        {
+          name: 'fixed',
+          hidden: false
+        },
+        {
+          name: 'zIndex',
+          hidden: false
+        },
+        {
+          name: 'axis',
+          hidden: false
+        },
+        {
+          name: 'formatter',
+          hidden: false
+        }
+      ],
+      default: {
+        height: 90,
+        width: 90
+      }
+    },
+    tableColumn: {
+      supportOptions: [
+        {
+          name: 'title',
+          hidden: false
+        },
+        {
+          name: 'align',
+          hidden: false
+        },
+        {
+          name: 'halign',
+          hidden: false
+        },
+        {
+          name: 'vAlign',
+          hidden: false
+        },
+        {
+          name: 'tableTextType',
+          hidden: false
+        },
+        {
+          name: 'tableBarcodeMode',
+          hidden: false
+        },
+        {
+          name: 'tableQRCodeLevel',
+          hidden: false
+        },
+        {
+          name: 'tableColumnHeight',
+          hidden: false
+        },
+        {
+          // 琛ㄦ牸鏉$爜搴曢儴鏄惁鏄剧ず鍐呭
+          name: 'showCodeTitle',
+          hidden: false,
+        },
+        {
+          name: 'paddingLeft',
+          hidden: false
+        },
+        {
+          name: 'paddingRight',
+          hidden: false
+        },
+        {
+          name: 'tableSummaryTitle',
+          hidden: false
+        },
+        {
+          name: 'tableSummaryText',
+          hidden: false
+        },
+        {
+          name: 'tableSummaryColspan',
+          hidden: false
+        },
+        {
+          name: 'tableSummary',
+          hidden: false
+        },
+        {
+          name: 'tableSummaryAlign',
+          hidden: false
+        },
+        {
+          name: 'tableSummaryNumFormat',
+          hidden: false
+        },
+
+        {
+          name: 'tableSummaryFormatter',
+          hidden: false
+        },
+        {
+          name: 'upperCase',
+          hidden: false
+        },
+
+        {
+          name: 'renderFormatter',
+          hidden: false
+        },
+        {
+          name: 'formatter2',
+          hidden: false
+        },
+        {
+          name: 'styler2',
+          hidden: false
+        },
+        {
+          name: 'stylerHeader',
+          hidden: false
+        },
+
+      ],
+      default: {
+        height: 90,
+        width: 90
+      }
+    },
+    barcode: {
+      tabs: [{
+        name: '鍩虹',
+        options: [{
+          name: 'title',
+          hidden: false
+        }, {
+          name: 'field',
+          hidden: false
+        }, {
+          name: 'testData',
+          hidden: false
+        }, {
+          name: 'barcodeType',
+          hidden: false
+        }, {
+          name: 'barWidth',
+          hidden: false
+        }, {
+          name: 'barAutoWidth',
+          hidden: false
+        }, {
+          name: 'coordinate',
+          hidden: false
+        }, {
+          name: 'widthHeight',
+          hidden: false
+        }, {
+          name: 'hideTitle',
+          hidden: false
+        }, {
+          name: 'fixed',
+          hidden: false
+        }]
+      }, {
+        name: '鏍峰紡',
+        options: [{
+          name: 'fontFamily',
+          hidden: false
+        }, {
+          name: 'fontSize',
+          hidden: false
+        }, {
+          name: 'fontWeight',
+          hidden: false
+        }, {
+          name: 'letterSpacing',
+          hidden: false
+        }, {
+          name: 'color',
+          hidden: false
+        }, {
+          name: 'backgroundColor',
+          hidden: false
+        }, {
+          name: 'barColor',
+          hidden: false
+        }, {
+          name: 'textAlign',
+          hidden: false
+        }, {
+          name: 'textContentVerticalAlign',
+          hidden: false
+        }, {
+          name: 'lineHeight',
+          hidden: false
+        }, {
+          name: 'transform',
+          hidden: false
+        }, {
+          name: 'zIndex',
+          hidden: false
+        }]
+      }, {
+        name: '楂樼骇',
+        options: [{
+          name: 'pageBreak',
+          hidden: false
+        }, {
+          name: 'showInPage',
+          hidden: false
+        }, {
+          name: 'unShowInPage',
+          hidden: false
+        }, {
+          name: 'axis',
+          hidden: false
+        }, {
+          name: 'formatter',
+          hidden: false
+        }, {
+          name: 'styler',
+          hidden: false
+        }]
+      }],
+      supportOptions: [{
+        name: 'title',
+        hidden:false
+      }, {
+        name: 'field',
+        hidden:false
+      }, {
+        name: 'testData',
+        hidden:false
+      }, {
+        name: 'barcodeType',
+        hidden:false
+      }, {
+        name: 'barWidth',
+        hidden: false
+      }, {
+        name: 'barAutoWidth',
+        hidden: false
+      }, {
+        name: 'coordinate',
+        hidden:false
+      }, {
+        name: 'widthHeight',
+        hidden:false
+      }, {
+        name: 'hideTitle',
+        hidden:false
+      }, {
+        name: 'fixed',
+        hidden:false
+      }, {
+        name: 'fontFamily',
+        hidden:false
+      }, {
+        name: 'fontSize',
+        hidden:false
+      }, {
+        name: 'fontWeight',
+        hidden:false
+      }, {
+        name: 'letterSpacing',
+        hidden:false
+      }, {
+        name: 'color',
+        hidden:false
+      }, {
+        name: 'backgroundColor',
+        hidden:false
+      }, {
+        name: 'barColor',
+        hidden:false
+      }, {
+        name: 'textAlign',
+        hidden:false
+      }, {
+        name: 'textContentVerticalAlign',
+        hidden:false
+      }, {
+        name: 'lineHeight',
+        hidden:false
+      }, {
+        name: 'transform',
+        hidden:false
+      }, {
+        name: 'zIndex',
+        hidden:false
+      }, {
+        name: 'pageBreak',
+        hidden:false
+      }, {
+        name: 'showInPage',
+        hidden:false
+      }, {
+        name: 'unShowInPage',
+        hidden:false
+      }, {
+        name: 'axis',
+        hidden:false
+      }, {
+        name: 'formatter',
+        hidden:false
+      }, {
+        name: 'styler',
+        hidden:false
+      }],
+      default: {
+        width: 160,
+        height: 40,
+        title: '鏉″舰鐮�',
+        barcodeType: 'code128',
+        testData: 'barcode'
+        // barAutoWidth: 'true' 杩欓噷蹇呴』浣跨敤瀛楃涓�
+      }
+    },
+    qrcode: {
+      tabs: [{
+        name: '鍩虹',
+        options: [{
+          name: 'title',
+          hidden: false
+        }, {
+          name: 'field',
+          hidden: false
+        }, {
+          name: 'testData',
+          hidden: false
+        }, {
+          name: 'qrcodeType',
+          hidden: false
+        }, {
+          name: 'qrCodeLevel',
+          hidden: false
+        }, {
+          name: 'coordinate',
+          hidden: false
+        }, {
+          name: 'widthHeight',
+          hidden: false
+        }, {
+          name: 'hideTitle',
+          hidden: false
+        }, {
+          name: 'fixed',
+          hidden: false
+        }]
+      }, {
+        name: '鏍峰紡',
+        options: [{
+          name: 'fontFamily',
+          hidden: false
+        }, {
+          name: 'fontSize',
+          hidden: false
+        }, {
+          name: 'fontWeight',
+          hidden: false
+        }, {
+          name: 'letterSpacing',
+          hidden: false
+        }, {
+          name: 'color',
+          hidden: false
+        }, {
+          name: 'backgroundColor',
+          hidden: false
+        }, {
+          name: 'barColor',
+          hidden: false
+        }, {
+          name: 'textAlign',
+          hidden: false
+        }, {
+          name: 'textContentVerticalAlign',
+          hidden: false
+        }, {
+          name: 'lineHeight',
+          hidden: false
+        }, {
+          name: 'transform',
+          hidden: false
+        }, {
+          name: 'zIndex',
+          hidden: false
+        }]
+      }, {
+        name: '楂樼骇',
+        options: [{
+          name: 'pageBreak',
+          hidden: false
+        }, {
+          name: 'showInPage',
+          hidden: false
+        }, {
+          name: 'unShowInPage',
+          hidden: false
+        }, {
+          name: 'axis',
+          hidden: false
+        }, {
+          name: 'formatter',
+          hidden: false
+        }, {
+          name: 'styler',
+          hidden: false
+        }]
+      }],
+      supportOptions: [{
+        name: 'title',
+        hidden:false
+      }, {
+        name: 'field',
+        hidden:false
+      }, {
+        name: 'testData',
+        hidden:false
+      }, {
+        name: 'qrcodeType',
+        hidden:false
+      }, {
+        name: 'qrCodeLevel',
+        hidden:false
+      }, {
+        name: 'coordinate',
+        hidden:false
+      }, {
+        name: 'widthHeight',
+        hidden:false
+      }, {
+        name: 'hideTitle',
+        hidden:false
+      }, {
+        name: 'fixed',
+        hidden:false
+      }, {
+        name: 'fontFamily',
+        hidden:false
+      }, {
+        name: 'fontSize',
+        hidden:false
+      }, {
+        name: 'fontWeight',
+        hidden:false
+      }, {
+        name: 'letterSpacing',
+        hidden:false
+      }, {
+        name: 'color',
+        hidden:false
+      }, {
+        name: 'backgroundColor',
+        hidden:false
+      }, {
+        name: 'barColor',
+        hidden: false
+      }, {
+        name: 'textAlign',
+        hidden:false
+      }, {
+        name: 'textContentVerticalAlign',
+        hidden:false
+      }, {
+        name: 'lineHeight',
+        hidden:false
+      }, {
+        name: 'transform',
+        hidden:false
+      }, {
+        name: 'zIndex',
+        hidden:false
+      }, {
+        name: 'pageBreak',
+        hidden:false
+      }, {
+        name: 'showInPage',
+        hidden:false
+      }, {
+        name: 'unShowInPage',
+        hidden:false
+      }, {
+        name: 'axis',
+        hidden:false
+      }, {
+        name: 'formatter',
+        hidden:false
+      }, {
+        name: 'styler',
+        hidden:false
+      }],
+      default: {
+        width: 80,
+        height: 80,
+        title: '浜岀淮鐮�',
+        qrcodeType: 'qrcode',
+        testData: 'qrcode'
+      }
+    }
+  }
+})();
diff --git a/src/hiprint/plugins/jquery.hiwprint.js b/src/hiprint/plugins/jquery.hiwprint.js
new file mode 100644
index 0000000..3afd004
--- /dev/null
+++ b/src/hiprint/plugins/jquery.hiwprint.js
@@ -0,0 +1,119 @@
+锘�(function ($) {
+  $.fn.hiwprint = function (options) {
+    var hasLoaded = false;
+    var usedFrame = document.getElementById('hiwprint_iframe');
+    if (usedFrame) usedFrame.parentNode.removeChild(usedFrame);
+    var opt = $.extend({}, $.fn.hiwprint.defaults, options);
+    var $element = this;
+    var $iframe = $('<iframe id="hiwprint_iframe"  style="visibility: hidden; height: 0; width: 0; position: absolute;"></iframe>');
+    var css = '';
+    if (opt.importCss) {
+      if (opt.styleHandler) {
+        css += opt.styleHandler()
+      }
+      if ($("link[media=print]").length > 0) {
+        $("link[media=print]").each(function () {
+          if ($(this).attr("href").indexOf('print-lock.css') >= 0) {
+            css += '<link rel="stylesheet" type="text/css" media="print" href="' + $(this).attr("href") + '">';
+            // 鈫戣嫢鍔犱笂media="print",浠呭娴忚鍣ㄦ墦鍗版椂鏈夋晥 鎵�浠ユ煡鐪媔frame椤甸潰鏃舵牱寮忔棤鏁�
+            css += '<link rel="stylesheet" type="text/css" href="' + $(this).attr("href") + '">';
+          }
+        });
+      }
+    }
+    $iframe[0].srcdoc = '<!DOCTYPE html><html><head><title></title><meta charset="UTF-8">' + css + '</head><body></body></html>';
+
+    $iframe[0].onload = function () {
+      if (hasLoaded) return;
+      hasLoaded = true;
+      var printDocument = $iframe[0].contentWindow || $iframe[0].contentDocument;
+      if (printDocument.document) printDocument = printDocument.document;
+      if (!$iframe.attr('srcdoc')) {
+        printDocument.write('<!DOCTYPE html><html><head><title></title><meta charset="UTF-8">' + css + '</head><body></body></html>');
+      }
+      if (opt.printContainer) {
+        printDocument.body.innerHTML = $element[0].outerHTML;
+      } else {
+        printDocument.body.innerHTML = $element.html();
+      }
+      loadAllImages(printDocument, function () {
+
+        performPrint($iframe[0], opt);
+      });
+
+    };
+
+    $iframe.appendTo("body");
+
+  };
+
+  $.fn.hiwprint.defaults = {
+    importCss: true,
+    printContainer: true,
+    callback: null,
+    styleHandler: null,
+  };
+
+  function performPrint(iframeElement, opt) {
+    try {
+      iframeElement.focus();
+      if (isEdge() || isIE()) {
+        try {
+          iframeElement.contentWindow.document.execCommand('print', false, null);
+        } catch (e) {
+          iframeElement.contentWindow.print();
+        }
+      } else {
+        // Other browsers
+        iframeElement.contentWindow.print();
+      }
+      if (opt.callback) {
+        opt.callback()
+      }
+    } catch (error) {
+      console.log(error);
+    }
+  }
+
+
+  function isIE() {
+    return navigator.userAgent.indexOf('MSIE') !== -1 || !!document.documentMode;
+  }
+
+  // Edge 20+
+  function isEdge() {
+    return !isIE() && !!window.StyleMedia;
+  }
+
+
+  function loadAllImages(printDocument, callback, time) {
+
+    if (time === undefined) {
+      time = 0;
+    }
+    var images = printDocument.getElementsByTagName('img');
+    var allLoaded = true;
+    for (var i = 0; i < images.length; i++) {
+      var image = images[i];
+      if (image.src && image.src !== window.location.href && image.src.indexOf('base64') == -1) {
+
+        if (!image || typeof image.naturalWidth === 'undefined' || image.naturalWidth === 0 || !image.complete) {
+          if (!image.complete) {
+            allLoaded = false;
+          }
+        }
+      }
+    }
+    time++;
+    if (!allLoaded && time < 10) {
+
+      setTimeout(function () {
+        loadAllImages(printDocument, callback, time);
+      }, 500);
+    } else {
+      callback();
+    }
+  }
+
+
+})(jQuery);
diff --git a/src/hiprint/plugins/qrcode.js b/src/hiprint/plugins/qrcode.js
new file mode 100644
index 0000000..2f461c8
--- /dev/null
+++ b/src/hiprint/plugins/qrcode.js
@@ -0,0 +1,617 @@
+/**
+ * @fileoverview
+   * - Using the 'QRCode for Javascript library'
+ * - Fixed dataset of 'QRCode for Javascript library' for support full-spec.
+ * - this library has no dependencies.
+ *
+ * @author davidshimjs
+ * @see <a href="http://www.d-project.com/" target="_blank">http://www.d-project.com/</a>
+ * @see <a href="http://jeromeetienne.github.com/jquery-qrcode/" target="_blank">http://jeromeetienne.github.com/jquery-qrcode/</a>
+ */
+
+window.QRCode;
+(function () {
+
+	//---------------------------------------------------------------------
+	// QRCode for JavaScript
+	//
+	// Copyright (c) 2009 Kazuhiko Arase
+	//
+	// URL: http://www.d-project.com/
+	//
+	// Licensed under the MIT license:
+	//   http://www.opensource.org/licenses/mit-license.php
+	//
+	// The word "QR Code" is registered trademark of
+	// DENSO WAVE INCORPORATED
+	//   http://www.denso-wave.com/qrcode/faqpatent-e.html
+	//
+	//---------------------------------------------------------------------
+	function QR8bitByte(data) {
+		this.mode = QRMode.MODE_8BIT_BYTE;
+		this.data = data;
+		this.parsedData = [];
+
+		// Added to support UTF-8 Characters
+		for (var i = 0, l = this.data.length; i < l; i++) {
+			var byteArray = [];
+			var code = this.data.charCodeAt(i);
+
+			if (code > 0x10000) {
+				byteArray[0] = 0xF0 | ((code & 0x1C0000) >>> 18);
+				byteArray[1] = 0x80 | ((code & 0x3F000) >>> 12);
+				byteArray[2] = 0x80 | ((code & 0xFC0) >>> 6);
+				byteArray[3] = 0x80 | (code & 0x3F);
+			} else if (code > 0x800) {
+				byteArray[0] = 0xE0 | ((code & 0xF000) >>> 12);
+				byteArray[1] = 0x80 | ((code & 0xFC0) >>> 6);
+				byteArray[2] = 0x80 | (code & 0x3F);
+			} else if (code > 0x80) {
+				byteArray[0] = 0xC0 | ((code & 0x7C0) >>> 6);
+				byteArray[1] = 0x80 | (code & 0x3F);
+			} else {
+				byteArray[0] = code;
+			}
+
+			this.parsedData.push(byteArray);
+		}
+
+		this.parsedData = Array.prototype.concat.apply([], this.parsedData);
+
+		if (this.parsedData.length != this.data.length) {
+			this.parsedData.unshift(191);
+			this.parsedData.unshift(187);
+			this.parsedData.unshift(239);
+		}
+	}
+
+	QR8bitByte.prototype = {
+		getLength: function (buffer) {
+			return this.parsedData.length;
+		},
+		write: function (buffer) {
+			for (var i = 0, l = this.parsedData.length; i < l; i++) {
+				buffer.put(this.parsedData[i], 8);
+			}
+		}
+	};
+
+	function QRCodeModel(typeNumber, errorCorrectLevel) {
+		this.typeNumber = typeNumber;
+		this.errorCorrectLevel = errorCorrectLevel;
+		this.modules = null;
+		this.moduleCount = 0;
+		this.dataCache = null;
+		this.dataList = [];
+	}
+
+	QRCodeModel.prototype={addData:function(data){var newData=new QR8bitByte(data);this.dataList.push(newData);this.dataCache=null;},isDark:function(row,col){if(row<0||this.moduleCount<=row||col<0||this.moduleCount<=col){throw new Error(row+","+col);}
+	return this.modules[row][col];},getModuleCount:function(){return this.moduleCount;},make:function(){this.makeImpl(false,this.getBestMaskPattern());},makeImpl:function(test,maskPattern){this.moduleCount=this.typeNumber*4+17;this.modules=new Array(this.moduleCount);for(var row=0;row<this.moduleCount;row++){this.modules[row]=new Array(this.moduleCount);for(var col=0;col<this.moduleCount;col++){this.modules[row][col]=null;}}
+	this.setupPositionProbePattern(0,0);this.setupPositionProbePattern(this.moduleCount-7,0);this.setupPositionProbePattern(0,this.moduleCount-7);this.setupPositionAdjustPattern();this.setupTimingPattern();this.setupTypeInfo(test,maskPattern);if(this.typeNumber>=7){this.setupTypeNumber(test);}
+	if(this.dataCache==null){this.dataCache=QRCodeModel.createData(this.typeNumber,this.errorCorrectLevel,this.dataList);}
+	this.mapData(this.dataCache,maskPattern);},setupPositionProbePattern:function(row,col){for(var r=-1;r<=7;r++){if(row+r<=-1||this.moduleCount<=row+r)continue;for(var c=-1;c<=7;c++){if(col+c<=-1||this.moduleCount<=col+c)continue;if((0<=r&&r<=6&&(c==0||c==6))||(0<=c&&c<=6&&(r==0||r==6))||(2<=r&&r<=4&&2<=c&&c<=4)){this.modules[row+r][col+c]=true;}else{this.modules[row+r][col+c]=false;}}}},getBestMaskPattern:function(){var minLostPoint=0;var pattern=0;for(var i=0;i<8;i++){this.makeImpl(true,i);var lostPoint=QRUtil.getLostPoint(this);if(i==0||minLostPoint>lostPoint){minLostPoint=lostPoint;pattern=i;}}
+	return pattern;},createMovieClip:function(target_mc,instance_name,depth){var qr_mc=target_mc.createEmptyMovieClip(instance_name,depth);var cs=1;this.make();for(var row=0;row<this.modules.length;row++){var y=row*cs;for(var col=0;col<this.modules[row].length;col++){var x=col*cs;var dark=this.modules[row][col];if(dark){qr_mc.beginFill(0,100);qr_mc.moveTo(x,y);qr_mc.lineTo(x+cs,y);qr_mc.lineTo(x+cs,y+cs);qr_mc.lineTo(x,y+cs);qr_mc.endFill();}}}
+	return qr_mc;},setupTimingPattern:function(){for(var r=8;r<this.moduleCount-8;r++){if(this.modules[r][6]!=null){continue;}
+	this.modules[r][6]=(r%2==0);}
+	for(var c=8;c<this.moduleCount-8;c++){if(this.modules[6][c]!=null){continue;}
+	this.modules[6][c]=(c%2==0);}},setupPositionAdjustPattern:function(){var pos=QRUtil.getPatternPosition(this.typeNumber);for(var i=0;i<pos.length;i++){for(var j=0;j<pos.length;j++){var row=pos[i];var col=pos[j];if(this.modules[row][col]!=null){continue;}
+	for(var r=-2;r<=2;r++){for(var c=-2;c<=2;c++){if(r==-2||r==2||c==-2||c==2||(r==0&&c==0)){this.modules[row+r][col+c]=true;}else{this.modules[row+r][col+c]=false;}}}}}},setupTypeNumber:function(test){var bits=QRUtil.getBCHTypeNumber(this.typeNumber);for(var i=0;i<18;i++){var mod=(!test&&((bits>>i)&1)==1);this.modules[Math.floor(i/3)][i%3+this.moduleCount-8-3]=mod;}
+	for(var i=0;i<18;i++){var mod=(!test&&((bits>>i)&1)==1);this.modules[i%3+this.moduleCount-8-3][Math.floor(i/3)]=mod;}},setupTypeInfo:function(test,maskPattern){var data=(this.errorCorrectLevel<<3)|maskPattern;var bits=QRUtil.getBCHTypeInfo(data);for(var i=0;i<15;i++){var mod=(!test&&((bits>>i)&1)==1);if(i<6){this.modules[i][8]=mod;}else if(i<8){this.modules[i+1][8]=mod;}else{this.modules[this.moduleCount-15+i][8]=mod;}}
+	for(var i=0;i<15;i++){var mod=(!test&&((bits>>i)&1)==1);if(i<8){this.modules[8][this.moduleCount-i-1]=mod;}else if(i<9){this.modules[8][15-i-1+1]=mod;}else{this.modules[8][15-i-1]=mod;}}
+	this.modules[this.moduleCount-8][8]=(!test);},mapData:function(data,maskPattern){var inc=-1;var row=this.moduleCount-1;var bitIndex=7;var byteIndex=0;for(var col=this.moduleCount-1;col>0;col-=2){if(col==6)col--;while(true){for(var c=0;c<2;c++){if(this.modules[row][col-c]==null){var dark=false;if(byteIndex<data.length){dark=(((data[byteIndex]>>>bitIndex)&1)==1);}
+	var mask=QRUtil.getMask(maskPattern,row,col-c);if(mask){dark=!dark;}
+	this.modules[row][col-c]=dark;bitIndex--;if(bitIndex==-1){byteIndex++;bitIndex=7;}}}
+	row+=inc;if(row<0||this.moduleCount<=row){row-=inc;inc=-inc;break;}}}}};QRCodeModel.PAD0=0xEC;QRCodeModel.PAD1=0x11;QRCodeModel.createData=function(typeNumber,errorCorrectLevel,dataList){var rsBlocks=QRRSBlock.getRSBlocks(typeNumber,errorCorrectLevel);var buffer=new QRBitBuffer();for(var i=0;i<dataList.length;i++){var data=dataList[i];buffer.put(data.mode,4);buffer.put(data.getLength(),QRUtil.getLengthInBits(data.mode,typeNumber));data.write(buffer);}
+	var totalDataCount=0;for(var i=0;i<rsBlocks.length;i++){totalDataCount+=rsBlocks[i].dataCount;}
+	if(buffer.getLengthInBits()>totalDataCount*8){throw new Error("code length overflow. ("
+	+buffer.getLengthInBits()
+	+">"
+	+totalDataCount*8
+	+")");}
+	if(buffer.getLengthInBits()+4<=totalDataCount*8){buffer.put(0,4);}
+	while(buffer.getLengthInBits()%8!=0){buffer.putBit(false);}
+	while(true){if(buffer.getLengthInBits()>=totalDataCount*8){break;}
+	buffer.put(QRCodeModel.PAD0,8);if(buffer.getLengthInBits()>=totalDataCount*8){break;}
+	buffer.put(QRCodeModel.PAD1,8);}
+	return QRCodeModel.createBytes(buffer,rsBlocks);};QRCodeModel.createBytes=function(buffer,rsBlocks){var offset=0;var maxDcCount=0;var maxEcCount=0;var dcdata=new Array(rsBlocks.length);var ecdata=new Array(rsBlocks.length);for(var r=0;r<rsBlocks.length;r++){var dcCount=rsBlocks[r].dataCount;var ecCount=rsBlocks[r].totalCount-dcCount;maxDcCount=Math.max(maxDcCount,dcCount);maxEcCount=Math.max(maxEcCount,ecCount);dcdata[r]=new Array(dcCount);for(var i=0;i<dcdata[r].length;i++){dcdata[r][i]=0xff&buffer.buffer[i+offset];}
+	offset+=dcCount;var rsPoly=QRUtil.getErrorCorrectPolynomial(ecCount);var rawPoly=new QRPolynomial(dcdata[r],rsPoly.getLength()-1);var modPoly=rawPoly.mod(rsPoly);ecdata[r]=new Array(rsPoly.getLength()-1);for(var i=0;i<ecdata[r].length;i++){var modIndex=i+modPoly.getLength()-ecdata[r].length;ecdata[r][i]=(modIndex>=0)?modPoly.get(modIndex):0;}}
+	var totalCodeCount=0;for(var i=0;i<rsBlocks.length;i++){totalCodeCount+=rsBlocks[i].totalCount;}
+	var data=new Array(totalCodeCount);var index=0;for(var i=0;i<maxDcCount;i++){for(var r=0;r<rsBlocks.length;r++){if(i<dcdata[r].length){data[index++]=dcdata[r][i];}}}
+	for(var i=0;i<maxEcCount;i++){for(var r=0;r<rsBlocks.length;r++){if(i<ecdata[r].length){data[index++]=ecdata[r][i];}}}
+	return data;};var QRMode={MODE_NUMBER:1<<0,MODE_ALPHA_NUM:1<<1,MODE_8BIT_BYTE:1<<2,MODE_KANJI:1<<3};var QRErrorCorrectLevel={L:1,M:0,Q:3,H:2};var QRMaskPattern={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7};var QRUtil={PATTERN_POSITION_TABLE:[[],[6,18],[6,22],[6,26],[6,30],[6,34],[6,22,38],[6,24,42],[6,26,46],[6,28,50],[6,30,54],[6,32,58],[6,34,62],[6,26,46,66],[6,26,48,70],[6,26,50,74],[6,30,54,78],[6,30,56,82],[6,30,58,86],[6,34,62,90],[6,28,50,72,94],[6,26,50,74,98],[6,30,54,78,102],[6,28,54,80,106],[6,32,58,84,110],[6,30,58,86,114],[6,34,62,90,118],[6,26,50,74,98,122],[6,30,54,78,102,126],[6,26,52,78,104,130],[6,30,56,82,108,134],[6,34,60,86,112,138],[6,30,58,86,114,142],[6,34,62,90,118,146],[6,30,54,78,102,126,150],[6,24,50,76,102,128,154],[6,28,54,80,106,132,158],[6,32,58,84,110,136,162],[6,26,54,82,110,138,166],[6,30,58,86,114,142,170]],G15:(1<<10)|(1<<8)|(1<<5)|(1<<4)|(1<<2)|(1<<1)|(1<<0),G18:(1<<12)|(1<<11)|(1<<10)|(1<<9)|(1<<8)|(1<<5)|(1<<2)|(1<<0),G15_MASK:(1<<14)|(1<<12)|(1<<10)|(1<<4)|(1<<1),getBCHTypeInfo:function(data){var d=data<<10;while(QRUtil.getBCHDigit(d)-QRUtil.getBCHDigit(QRUtil.G15)>=0){d^=(QRUtil.G15<<(QRUtil.getBCHDigit(d)-QRUtil.getBCHDigit(QRUtil.G15)));}
+	return((data<<10)|d)^QRUtil.G15_MASK;},getBCHTypeNumber:function(data){var d=data<<12;while(QRUtil.getBCHDigit(d)-QRUtil.getBCHDigit(QRUtil.G18)>=0){d^=(QRUtil.G18<<(QRUtil.getBCHDigit(d)-QRUtil.getBCHDigit(QRUtil.G18)));}
+	return(data<<12)|d;},getBCHDigit:function(data){var digit=0;while(data!=0){digit++;data>>>=1;}
+	return digit;},getPatternPosition:function(typeNumber){return QRUtil.PATTERN_POSITION_TABLE[typeNumber-1];},getMask:function(maskPattern,i,j){switch(maskPattern){case QRMaskPattern.PATTERN000:return(i+j)%2==0;case QRMaskPattern.PATTERN001:return i%2==0;case QRMaskPattern.PATTERN010:return j%3==0;case QRMaskPattern.PATTERN011:return(i+j)%3==0;case QRMaskPattern.PATTERN100:return(Math.floor(i/2)+Math.floor(j/3))%2==0;case QRMaskPattern.PATTERN101:return(i*j)%2+(i*j)%3==0;case QRMaskPattern.PATTERN110:return((i*j)%2+(i*j)%3)%2==0;case QRMaskPattern.PATTERN111:return((i*j)%3+(i+j)%2)%2==0;default:throw new Error("bad maskPattern:"+maskPattern);}},getErrorCorrectPolynomial:function(errorCorrectLength){var a=new QRPolynomial([1],0);for(var i=0;i<errorCorrectLength;i++){a=a.multiply(new QRPolynomial([1,QRMath.gexp(i)],0));}
+	return a;},getLengthInBits:function(mode,type){if(1<=type&&type<10){switch(mode){case QRMode.MODE_NUMBER:return 10;case QRMode.MODE_ALPHA_NUM:return 9;case QRMode.MODE_8BIT_BYTE:return 8;case QRMode.MODE_KANJI:return 8;default:throw new Error("mode:"+mode);}}else if(type<27){switch(mode){case QRMode.MODE_NUMBER:return 12;case QRMode.MODE_ALPHA_NUM:return 11;case QRMode.MODE_8BIT_BYTE:return 16;case QRMode.MODE_KANJI:return 10;default:throw new Error("mode:"+mode);}}else if(type<41){switch(mode){case QRMode.MODE_NUMBER:return 14;case QRMode.MODE_ALPHA_NUM:return 13;case QRMode.MODE_8BIT_BYTE:return 16;case QRMode.MODE_KANJI:return 12;default:throw new Error("mode:"+mode);}}else{throw new Error("type:"+type);}},getLostPoint:function(qrCode){var moduleCount=qrCode.getModuleCount();var lostPoint=0;for(var row=0;row<moduleCount;row++){for(var col=0;col<moduleCount;col++){var sameCount=0;var dark=qrCode.isDark(row,col);for(var r=-1;r<=1;r++){if(row+r<0||moduleCount<=row+r){continue;}
+	for(var c=-1;c<=1;c++){if(col+c<0||moduleCount<=col+c){continue;}
+	if(r==0&&c==0){continue;}
+	if(dark==qrCode.isDark(row+r,col+c)){sameCount++;}}}
+	if(sameCount>5){lostPoint+=(3+sameCount-5);}}}
+	for(var row=0;row<moduleCount-1;row++){for(var col=0;col<moduleCount-1;col++){var count=0;if(qrCode.isDark(row,col))count++;if(qrCode.isDark(row+1,col))count++;if(qrCode.isDark(row,col+1))count++;if(qrCode.isDark(row+1,col+1))count++;if(count==0||count==4){lostPoint+=3;}}}
+	for(var row=0;row<moduleCount;row++){for(var col=0;col<moduleCount-6;col++){if(qrCode.isDark(row,col)&&!qrCode.isDark(row,col+1)&&qrCode.isDark(row,col+2)&&qrCode.isDark(row,col+3)&&qrCode.isDark(row,col+4)&&!qrCode.isDark(row,col+5)&&qrCode.isDark(row,col+6)){lostPoint+=40;}}}
+	for(var col=0;col<moduleCount;col++){for(var row=0;row<moduleCount-6;row++){if(qrCode.isDark(row,col)&&!qrCode.isDark(row+1,col)&&qrCode.isDark(row+2,col)&&qrCode.isDark(row+3,col)&&qrCode.isDark(row+4,col)&&!qrCode.isDark(row+5,col)&&qrCode.isDark(row+6,col)){lostPoint+=40;}}}
+	var darkCount=0;for(var col=0;col<moduleCount;col++){for(var row=0;row<moduleCount;row++){if(qrCode.isDark(row,col)){darkCount++;}}}
+	var ratio=Math.abs(100*darkCount/moduleCount/moduleCount-50)/5;lostPoint+=ratio*10;return lostPoint;}};var QRMath={glog:function(n){if(n<1){throw new Error("glog("+n+")");}
+	return QRMath.LOG_TABLE[n];},gexp:function(n){while(n<0){n+=255;}
+	while(n>=256){n-=255;}
+	return QRMath.EXP_TABLE[n];},EXP_TABLE:new Array(256),LOG_TABLE:new Array(256)};for(var i=0;i<8;i++){QRMath.EXP_TABLE[i]=1<<i;}
+	for(var i=8;i<256;i++){QRMath.EXP_TABLE[i]=QRMath.EXP_TABLE[i-4]^QRMath.EXP_TABLE[i-5]^QRMath.EXP_TABLE[i-6]^QRMath.EXP_TABLE[i-8];}
+	for(var i=0;i<255;i++){QRMath.LOG_TABLE[QRMath.EXP_TABLE[i]]=i;}
+	function QRPolynomial(num,shift){if(num.length==undefined){throw new Error(num.length+"/"+shift);}
+	var offset=0;while(offset<num.length&&num[offset]==0){offset++;}
+	this.num=new Array(num.length-offset+shift);for(var i=0;i<num.length-offset;i++){this.num[i]=num[i+offset];}}
+	QRPolynomial.prototype={get:function(index){return this.num[index];},getLength:function(){return this.num.length;},multiply:function(e){var num=new Array(this.getLength()+e.getLength()-1);for(var i=0;i<this.getLength();i++){for(var j=0;j<e.getLength();j++){num[i+j]^=QRMath.gexp(QRMath.glog(this.get(i))+QRMath.glog(e.get(j)));}}
+	return new QRPolynomial(num,0);},mod:function(e){if(this.getLength()-e.getLength()<0){return this;}
+	var ratio=QRMath.glog(this.get(0))-QRMath.glog(e.get(0));var num=new Array(this.getLength());for(var i=0;i<this.getLength();i++){num[i]=this.get(i);}
+	for(var i=0;i<e.getLength();i++){num[i]^=QRMath.gexp(QRMath.glog(e.get(i))+ratio);}
+	return new QRPolynomial(num,0).mod(e);}};function QRRSBlock(totalCount,dataCount){this.totalCount=totalCount;this.dataCount=dataCount;}
+	QRRSBlock.RS_BLOCK_TABLE=[[1,26,19],[1,26,16],[1,26,13],[1,26,9],[1,44,34],[1,44,28],[1,44,22],[1,44,16],[1,70,55],[1,70,44],[2,35,17],[2,35,13],[1,100,80],[2,50,32],[2,50,24],[4,25,9],[1,134,108],[2,67,43],[2,33,15,2,34,16],[2,33,11,2,34,12],[2,86,68],[4,43,27],[4,43,19],[4,43,15],[2,98,78],[4,49,31],[2,32,14,4,33,15],[4,39,13,1,40,14],[2,121,97],[2,60,38,2,61,39],[4,40,18,2,41,19],[4,40,14,2,41,15],[2,146,116],[3,58,36,2,59,37],[4,36,16,4,37,17],[4,36,12,4,37,13],[2,86,68,2,87,69],[4,69,43,1,70,44],[6,43,19,2,44,20],[6,43,15,2,44,16],[4,101,81],[1,80,50,4,81,51],[4,50,22,4,51,23],[3,36,12,8,37,13],[2,116,92,2,117,93],[6,58,36,2,59,37],[4,46,20,6,47,21],[7,42,14,4,43,15],[4,133,107],[8,59,37,1,60,38],[8,44,20,4,45,21],[12,33,11,4,34,12],[3,145,115,1,146,116],[4,64,40,5,65,41],[11,36,16,5,37,17],[11,36,12,5,37,13],[5,109,87,1,110,88],[5,65,41,5,66,42],[5,54,24,7,55,25],[11,36,12],[5,122,98,1,123,99],[7,73,45,3,74,46],[15,43,19,2,44,20],[3,45,15,13,46,16],[1,135,107,5,136,108],[10,74,46,1,75,47],[1,50,22,15,51,23],[2,42,14,17,43,15],[5,150,120,1,151,121],[9,69,43,4,70,44],[17,50,22,1,51,23],[2,42,14,19,43,15],[3,141,113,4,142,114],[3,70,44,11,71,45],[17,47,21,4,48,22],[9,39,13,16,40,14],[3,135,107,5,136,108],[3,67,41,13,68,42],[15,54,24,5,55,25],[15,43,15,10,44,16],[4,144,116,4,145,117],[17,68,42],[17,50,22,6,51,23],[19,46,16,6,47,17],[2,139,111,7,140,112],[17,74,46],[7,54,24,16,55,25],[34,37,13],[4,151,121,5,152,122],[4,75,47,14,76,48],[11,54,24,14,55,25],[16,45,15,14,46,16],[6,147,117,4,148,118],[6,73,45,14,74,46],[11,54,24,16,55,25],[30,46,16,2,47,17],[8,132,106,4,133,107],[8,75,47,13,76,48],[7,54,24,22,55,25],[22,45,15,13,46,16],[10,142,114,2,143,115],[19,74,46,4,75,47],[28,50,22,6,51,23],[33,46,16,4,47,17],[8,152,122,4,153,123],[22,73,45,3,74,46],[8,53,23,26,54,24],[12,45,15,28,46,16],[3,147,117,10,148,118],[3,73,45,23,74,46],[4,54,24,31,55,25],[11,45,15,31,46,16],[7,146,116,7,147,117],[21,73,45,7,74,46],[1,53,23,37,54,24],[19,45,15,26,46,16],[5,145,115,10,146,116],[19,75,47,10,76,48],[15,54,24,25,55,25],[23,45,15,25,46,16],[13,145,115,3,146,116],[2,74,46,29,75,47],[42,54,24,1,55,25],[23,45,15,28,46,16],[17,145,115],[10,74,46,23,75,47],[10,54,24,35,55,25],[19,45,15,35,46,16],[17,145,115,1,146,116],[14,74,46,21,75,47],[29,54,24,19,55,25],[11,45,15,46,46,16],[13,145,115,6,146,116],[14,74,46,23,75,47],[44,54,24,7,55,25],[59,46,16,1,47,17],[12,151,121,7,152,122],[12,75,47,26,76,48],[39,54,24,14,55,25],[22,45,15,41,46,16],[6,151,121,14,152,122],[6,75,47,34,76,48],[46,54,24,10,55,25],[2,45,15,64,46,16],[17,152,122,4,153,123],[29,74,46,14,75,47],[49,54,24,10,55,25],[24,45,15,46,46,16],[4,152,122,18,153,123],[13,74,46,32,75,47],[48,54,24,14,55,25],[42,45,15,32,46,16],[20,147,117,4,148,118],[40,75,47,7,76,48],[43,54,24,22,55,25],[10,45,15,67,46,16],[19,148,118,6,149,119],[18,75,47,31,76,48],[34,54,24,34,55,25],[20,45,15,61,46,16]];QRRSBlock.getRSBlocks=function(typeNumber,errorCorrectLevel){var rsBlock=QRRSBlock.getRsBlockTable(typeNumber,errorCorrectLevel);if(rsBlock==undefined){throw new Error("bad rs block @ typeNumber:"+typeNumber+"/errorCorrectLevel:"+errorCorrectLevel);}
+	var length=rsBlock.length/3;var list=[];for(var i=0;i<length;i++){var count=rsBlock[i*3+0];var totalCount=rsBlock[i*3+1];var dataCount=rsBlock[i*3+2];for(var j=0;j<count;j++){list.push(new QRRSBlock(totalCount,dataCount));}}
+	return list;};QRRSBlock.getRsBlockTable=function(typeNumber,errorCorrectLevel){switch(errorCorrectLevel){case QRErrorCorrectLevel.L:return QRRSBlock.RS_BLOCK_TABLE[(typeNumber-1)*4+0];case QRErrorCorrectLevel.M:return QRRSBlock.RS_BLOCK_TABLE[(typeNumber-1)*4+1];case QRErrorCorrectLevel.Q:return QRRSBlock.RS_BLOCK_TABLE[(typeNumber-1)*4+2];case QRErrorCorrectLevel.H:return QRRSBlock.RS_BLOCK_TABLE[(typeNumber-1)*4+3];default:return undefined;}};function QRBitBuffer(){this.buffer=[];this.length=0;}
+	QRBitBuffer.prototype={get:function(index){var bufIndex=Math.floor(index/8);return((this.buffer[bufIndex]>>>(7-index%8))&1)==1;},put:function(num,length){for(var i=0;i<length;i++){this.putBit(((num>>>(length-i-1))&1)==1);}},getLengthInBits:function(){return this.length;},putBit:function(bit){var bufIndex=Math.floor(this.length/8);if(this.buffer.length<=bufIndex){this.buffer.push(0);}
+	if(bit){this.buffer[bufIndex]|=(0x80>>>(this.length%8));}
+	this.length++;}};var QRCodeLimitLength=[[17,14,11,7],[32,26,20,14],[53,42,32,24],[78,62,46,34],[106,84,60,44],[134,106,74,58],[154,122,86,64],[192,152,108,84],[230,180,130,98],[271,213,151,119],[321,251,177,137],[367,287,203,155],[425,331,241,177],[458,362,258,194],[520,412,292,220],[586,450,322,250],[644,504,364,280],[718,560,394,310],[792,624,442,338],[858,666,482,382],[929,711,509,403],[1003,779,565,439],[1091,857,611,461],[1171,911,661,511],[1273,997,715,535],[1367,1059,751,593],[1465,1125,805,625],[1528,1190,868,658],[1628,1264,908,698],[1732,1370,982,742],[1840,1452,1030,790],[1952,1538,1112,842],[2068,1628,1168,898],[2188,1722,1228,958],[2303,1809,1283,983],[2431,1911,1351,1051],[2563,1989,1423,1093],[2699,2099,1499,1139],[2809,2213,1579,1219],[2953,2331,1663,1273]];
+
+	function _isSupportCanvas() {
+		return typeof CanvasRenderingContext2D != "undefined";
+	}
+
+	// android 2.x doesn't support Data-URI spec
+	function _getAndroid() {
+		var android = false;
+		var sAgent = navigator.userAgent;
+
+		if (/android/i.test(sAgent)) { // android
+			android = true;
+			var aMat = sAgent.toString().match(/android ([0-9]\.[0-9])/i);
+
+			if (aMat && aMat[1]) {
+				android = parseFloat(aMat[1]);
+			}
+		}
+
+		return android;
+	}
+
+	var svgDrawer = (function() {
+
+		var Drawing = function (el, htOption) {
+			this._el = el;
+			this._htOption = htOption;
+		};
+
+		Drawing.prototype.draw = function (oQRCode) {
+			var _htOption = this._htOption;
+			var _el = this._el;
+			var nCount = oQRCode.getModuleCount();
+			var nWidth = Math.floor(_htOption.width / nCount);
+			var nHeight = Math.floor(_htOption.height / nCount);
+
+			this.clear();
+
+			function makeSVG(tag, attrs) {
+				var el = document.createElementNS('http://www.w3.org/2000/svg', tag);
+				for (var k in attrs)
+					if (attrs.hasOwnProperty(k)) el.setAttribute(k, attrs[k]);
+				return el;
+			}
+
+			var svg = makeSVG("svg" , {'viewBox': '0 0 ' + String(nCount) + " " + String(nCount), 'width': '100%', 'height': '100%', 'fill': _htOption.colorLight});
+			svg.setAttributeNS("http://www.w3.org/2000/xmlns/", "xmlns:xlink", "http://www.w3.org/1999/xlink");
+			_el.appendChild(svg);
+
+			svg.appendChild(makeSVG("rect", {"fill": _htOption.colorLight, "width": "100%", "height": "100%"}));
+			svg.appendChild(makeSVG("rect", {"fill": _htOption.colorDark, "width": "1", "height": "1", "id": "template"}));
+
+			for (var row = 0; row < nCount; row++) {
+				for (var col = 0; col < nCount; col++) {
+					if (oQRCode.isDark(row, col)) {
+						var child = makeSVG("use", {"x": String(col), "y": String(row)});
+						child.setAttributeNS("http://www.w3.org/1999/xlink", "href", "#template")
+						svg.appendChild(child);
+					}
+				}
+			}
+		};
+		Drawing.prototype.clear = function () {
+			while (this._el.hasChildNodes())
+				this._el.removeChild(this._el.lastChild);
+		};
+		return Drawing;
+	})(window);
+
+	var useSVG = document.documentElement.tagName.toLowerCase() === "svg";
+
+	// Drawing in DOM by using Table tag
+	var Drawing = useSVG ? svgDrawer : !_isSupportCanvas() ? (function () {
+		var Drawing = function (el, htOption) {
+			this._el = el;
+			this._htOption = htOption;
+		};
+
+		/**
+		 * Draw the QRCode
+		 *
+		 * @param {QRCode} oQRCode
+		 */
+		Drawing.prototype.draw = function (oQRCode) {
+            var _htOption = this._htOption;
+            var _el = this._el;
+			var nCount = oQRCode.getModuleCount();
+			var nWidth = Math.floor(_htOption.width / nCount);
+			var nHeight = Math.floor(_htOption.height / nCount);
+			var aHTML = ['<table style="border:0;border-collapse:collapse;">'];
+
+			for (var row = 0; row < nCount; row++) {
+				aHTML.push('<tr>');
+
+				for (var col = 0; col < nCount; col++) {
+					aHTML.push('<td style="border:0;border-collapse:collapse;padding:0;margin:0;width:' + nWidth + 'px;height:' + nHeight + 'px;background-color:' + (oQRCode.isDark(row, col) ? _htOption.colorDark : _htOption.colorLight) + ';"></td>');
+				}
+
+				aHTML.push('</tr>');
+			}
+
+			aHTML.push('</table>');
+			_el.innerHTML = aHTML.join('');
+
+			// Fix the margin values as real size.
+			var elTable = _el.childNodes[0];
+			var nLeftMarginTable = (_htOption.width - elTable.offsetWidth) / 2;
+			var nTopMarginTable = (_htOption.height - elTable.offsetHeight) / 2;
+
+			if (nLeftMarginTable > 0 && nTopMarginTable > 0) {
+				elTable.style.margin = nTopMarginTable + "px " + nLeftMarginTable + "px";
+			}
+		};
+
+		/**
+		 * Clear the QRCode
+		 */
+		Drawing.prototype.clear = function () {
+			this._el.innerHTML = '';
+		};
+
+		return Drawing;
+	})(window) : (function () { // Drawing in Canvas
+		function _onMakeImage() {
+			this._elImage.src = this._elCanvas.toDataURL("image/png");
+			this._elImage.style.display = "block";
+			this._elCanvas.style.display = "none";
+		}
+
+		// Android 2.1 bug workaround
+		// http://code.google.com/p/android/issues/detail?id=5141
+		if (this && this._android && this._android <= 2.1) {
+	    	var factor = 1 / window.devicePixelRatio;
+	        var drawImage = CanvasRenderingContext2D.prototype.drawImage;
+	    	CanvasRenderingContext2D.prototype.drawImage = function (image, sx, sy, sw, sh, dx, dy, dw, dh) {
+	    		if (("nodeName" in image) && /img/i.test(image.nodeName)) {
+		        	for (var i = arguments.length - 1; i >= 1; i--) {
+		            	arguments[i] = arguments[i] * factor;
+		        	}
+	    		} else if (typeof dw == "undefined") {
+	    			arguments[1] *= factor;
+	    			arguments[2] *= factor;
+	    			arguments[3] *= factor;
+	    			arguments[4] *= factor;
+	    		}
+
+	        	drawImage.apply(this, arguments);
+	    	};
+		}
+
+		/**
+		 * Check whether the user's browser supports Data URI or not
+		 *
+		 * @private
+		 * @param {Function} fSuccess Occurs if it supports Data URI
+		 * @param {Function} fFail Occurs if it doesn't support Data URI
+		 */
+		function _safeSetDataURI(fSuccess, fFail) {
+            var self = this;
+            self._fFail = fFail;
+            self._fSuccess = fSuccess;
+
+            // Check it just once
+            if (self._bSupportDataURI === null) {
+                var el = document.createElement("img");
+                var fOnError = function() {
+                    self._bSupportDataURI = false;
+
+                    if (self._fFail) {
+                        self._fFail.call(self);
+                    }
+                };
+                var fOnSuccess = function() {
+                    self._bSupportDataURI = true;
+
+                    if (self._fSuccess) {
+                        self._fSuccess.call(self);
+                    }
+                };
+
+                el.onabort = fOnError;
+                el.onerror = fOnError;
+                el.onload = fOnSuccess;
+                el.src = "data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg=="; // the Image contains 1px data.
+                return;
+            } else if (self._bSupportDataURI === true && self._fSuccess) {
+                self._fSuccess.call(self);
+            } else if (self._bSupportDataURI === false && self._fFail) {
+                self._fFail.call(self);
+            }
+		};
+
+		/**
+		 * Drawing QRCode by using canvas
+		 *
+		 * @constructor
+		 * @param {HTMLElement} el
+		 * @param {Object} htOption QRCode Options
+		 */
+		var Drawing = function (el, htOption) {
+    		this._bIsPainted = false;
+    		this._android = _getAndroid();
+
+			this._htOption = htOption;
+			this._elCanvas = document.createElement("canvas");
+			this._elCanvas.width = htOption.width;
+			this._elCanvas.height = htOption.height;
+			el.appendChild(this._elCanvas);
+			this._el = el;
+			this._oContext = this._elCanvas.getContext("2d");
+			this._bIsPainted = false;
+			this._elImage = document.createElement("img");
+			this._elImage.alt = "Scan me!";
+			this._elImage.style.display = "none";
+			this._el.appendChild(this._elImage);
+			this._bSupportDataURI = null;
+		};
+
+		/**
+		 * Draw the QRCode
+		 *
+		 * @param {QRCode} oQRCode
+		 */
+		Drawing.prototype.draw = function (oQRCode) {
+            var _elImage = this._elImage;
+            var _oContext = this._oContext;
+            var _htOption = this._htOption;
+
+			var nCount = oQRCode.getModuleCount();
+			var nWidth = _htOption.width / nCount;
+			var nHeight = _htOption.height / nCount;
+			var nRoundedWidth = Math.round(nWidth);
+			var nRoundedHeight = Math.round(nHeight);
+
+			_elImage.style.display = "none";
+			this.clear();
+
+			for (var row = 0; row < nCount; row++) {
+				for (var col = 0; col < nCount; col++) {
+					var bIsDark = oQRCode.isDark(row, col);
+					var nLeft = col * nWidth;
+					var nTop = row * nHeight;
+					_oContext.strokeStyle = bIsDark ? _htOption.colorDark : _htOption.colorLight;
+					_oContext.lineWidth = 1;
+					_oContext.fillStyle = bIsDark ? _htOption.colorDark : _htOption.colorLight;
+					_oContext.fillRect(nLeft, nTop, nWidth, nHeight);
+
+					// 鞎堩嫲 鞎Μ鞏挫嫳 氚╈ 觳橂Μ
+					_oContext.strokeRect(
+						Math.floor(nLeft) + 0.5,
+						Math.floor(nTop) + 0.5,
+						nRoundedWidth,
+						nRoundedHeight
+					);
+
+					_oContext.strokeRect(
+						Math.ceil(nLeft) - 0.5,
+						Math.ceil(nTop) - 0.5,
+						nRoundedWidth,
+						nRoundedHeight
+					);
+				}
+			}
+
+			this._bIsPainted = true;
+		};
+
+		/**
+		 * Make the image from Canvas if the browser supports Data URI.
+		 */
+		Drawing.prototype.makeImage = function () {
+			if (this._bIsPainted) {
+				_safeSetDataURI.call(this, _onMakeImage);
+			}
+		};
+
+		/**
+		 * Return whether the QRCode is painted or not
+		 *
+		 * @return {Boolean}
+		 */
+		Drawing.prototype.isPainted = function () {
+			return this._bIsPainted;
+		};
+
+		/**
+		 * Clear the QRCode
+		 */
+		Drawing.prototype.clear = function () {
+			this._oContext.clearRect(0, 0, this._elCanvas.width, this._elCanvas.height);
+			this._bIsPainted = false;
+		};
+
+		/**
+		 * @private
+		 * @param {Number} nNumber
+		 */
+		Drawing.prototype.round = function (nNumber) {
+			if (!nNumber) {
+				return nNumber;
+			}
+
+			return Math.floor(nNumber * 1000) / 1000;
+		};
+
+		return Drawing;
+	})(window);
+
+	/**
+	 * Get the type by string length
+	 *
+	 * @private
+	 * @param {String} sText
+	 * @param {Number} nCorrectLevel
+	 * @return {Number} type
+	 */
+	function _getTypeNumber(sText, nCorrectLevel) {
+		var nType = 1;
+		var length = _getUTF8Length(sText);
+
+		for (var i = 0, len = QRCodeLimitLength.length; i <= len; i++) {
+			var nLimit = 0;
+
+			switch (nCorrectLevel) {
+				case QRErrorCorrectLevel.L :
+					nLimit = QRCodeLimitLength[i][0];
+					break;
+				case QRErrorCorrectLevel.M :
+					nLimit = QRCodeLimitLength[i][1];
+					break;
+				case QRErrorCorrectLevel.Q :
+					nLimit = QRCodeLimitLength[i][2];
+					break;
+				case QRErrorCorrectLevel.H :
+					nLimit = QRCodeLimitLength[i][3];
+					break;
+			}
+
+			if (length <= nLimit) {
+				break;
+			} else {
+				nType++;
+			}
+		}
+
+		if (nType > QRCodeLimitLength.length) {
+			throw new Error("Too long data");
+		}
+
+		return nType;
+	}
+
+	function _getUTF8Length(sText) {
+		var replacedText = encodeURI(sText).toString().replace(/\%[0-9a-fA-F]{2}/g, 'a');
+		return replacedText.length + (replacedText.length != sText ? 3 : 0);
+	}
+
+	/**
+	 * @class QRCode
+	 * @constructor
+	 * @example
+	 * new QRCode(document.getElementById("test"), "http://jindo.dev.naver.com/collie");
+	 *
+	 * @example
+	 * var oQRCode = new QRCode("test", {
+	 *    text : "http://naver.com",
+	 *    width : 128,
+	 *    height : 128
+	 * });
+	 *
+	 * oQRCode.clear(); // Clear the QRCode.
+	 * oQRCode.makeCode("http://map.naver.com"); // Re-create the QRCode.
+	 *
+	 * @param {HTMLElement|String} el target element or 'id' attribute of element.
+	 * @param {Object|String} vOption
+	 * @param {String} vOption.text QRCode link data
+	 * @param {Number} [vOption.width=256]
+	 * @param {Number} [vOption.height=256]
+	 * @param {String} [vOption.colorDark="#000000"]
+	 * @param {String} [vOption.colorLight="#ffffff"]
+	 * @param {QRCode.CorrectLevel} [vOption.correctLevel=QRCode.CorrectLevel.H] [L|M|Q|H]
+	 */
+	var QRCode = function (el, vOption) {
+		this._htOption = {
+			width : 256,
+			height : 256,
+			typeNumber : 4,
+			colorDark : "#000000",
+			colorLight : "#ffffff",
+			correctLevel : QRErrorCorrectLevel.H
+		};
+
+		if (typeof vOption === 'string') {
+			vOption	= {
+				text : vOption
+			};
+		}
+
+		// Overwrites options
+		if (vOption) {
+			for (var i in vOption) {
+				this._htOption[i] = vOption[i];
+			}
+		}
+
+		if (typeof el == "string") {
+			el = document.getElementById(el);
+		}
+
+		if (this._htOption.useSVG) {
+			Drawing = svgDrawer;
+		}
+
+		this._android = _getAndroid();
+		this._el = el;
+		this._oQRCode = null;
+		this._oDrawing = new Drawing(this._el, this._htOption);
+
+		if (this._htOption.text) {
+			this.makeCode(this._htOption.text);
+		}
+	};
+
+	/**
+	 * Make the QRCode
+	 *
+	 * @param {String} sText link data
+	 */
+	QRCode.prototype.makeCode = function (sText) {
+		this._oQRCode = new QRCodeModel(_getTypeNumber(sText, this._htOption.correctLevel), this._htOption.correctLevel);
+		this._oQRCode.addData(sText);
+		this._oQRCode.make();
+		this._el.title = sText;
+		this._oDrawing.draw(this._oQRCode);
+		this.makeImage();
+	};
+
+	/**
+	 * Make the Image from Canvas element
+	 * - It occurs automatically
+	 * - Android below 3 doesn't support Data-URI spec.
+	 *
+	 * @private
+	 */
+	QRCode.prototype.makeImage = function () {
+		if (typeof this._oDrawing.makeImage == "function" && (!this._android || this._android >= 3)) {
+			this._oDrawing.makeImage();
+		}
+	};
+
+	/**
+	 * Clear the QRCode
+	 */
+	QRCode.prototype.clear = function () {
+		this._oDrawing.clear();
+	};
+
+	/**
+	 * @name QRCode.CorrectLevel
+	 */
+	QRCode.CorrectLevel = QRErrorCorrectLevel;
+
+	window.QRCode = QRCode;
+})(window);
diff --git a/src/hiprint/plugins/watermark.js b/src/hiprint/plugins/watermark.js
new file mode 100644
index 0000000..b194f37
--- /dev/null
+++ b/src/hiprint/plugins/watermark.js
@@ -0,0 +1,199 @@
+/**
+ * @Description: canvas 绠�鍗曠殑姘村嵃宸ュ叿
+ * @Author: CcSimple
+ * @Github: https://github.com/CcSimple
+ */
+
+/**
+ * @Description: 鏃堕棿鏍煎紡鍖�
+ * @param date
+ * @param format
+ * @returns {string|null}
+ */
+function timeFormat(date, format = 'YYYY-MM-DD') {
+  if (!date) return null;
+  if (typeof date === 'number') {
+    date = new Date(date);
+  }
+  const year = date.getFullYear();
+  const month = date.getMonth();
+  const day = date.getDate();
+  const hours24 = date.getHours();
+  const hours = hours24 % 12 === 0 ? 12 : hours24 % 12;
+  const minutes = date.getMinutes();
+  const seconds = date.getSeconds();
+  const dd = t => `0${t}`.slice(-2);
+  const map = {
+    YYYY: year,
+    MM: dd(month + 1),
+    MMMM: `${month + 1}鏈坄,
+    M: month + 1,
+    DD: dd(day),
+    D: day,
+    HH: dd(hours24),
+    H: hours24,
+    hh: dd(hours),
+    h: hours,
+    mm: dd(minutes),
+    m: minutes,
+    ss: dd(seconds),
+    s: seconds
+  };
+  return format.replace(/Y+|M+|D+|H+|h+|m+|s+|S+|Q/g, str => String(map[str]));
+}
+
+// 姘村嵃鍙傛暟
+const defaultOption = {
+  id: 'watermark', // 姘村嵃id
+  watch: false,
+  content: 'vue-plugin-hiprint', // 姘村嵃鍐呭
+  container: '.hiprint-printPaper', // 姘村嵃瀹瑰櫒
+  width: 200, // 姘村嵃瀹藉害
+  height: 200, // 姘村嵃楂樺害
+  textAlign: 'center', // 姘村嵃鏂囧瓧姘村钩瀵归綈鏂瑰紡
+  textBaseline: 'middle', // 姘村嵃鏂囧瓧鍨傜洿瀵归綈鏂瑰紡
+  fontSize: '14px', // 姘村嵃鏂囧瓧澶у皬
+  fontFamily: 'Microsoft Yahei', // 姘村嵃鏂囧瓧瀛椾綋
+  fillStyle: 'rgba(184, 184, 184, 0.3)', // 姘村嵃鏂囧瓧棰滆壊
+  rotate: 25,// 姘村嵃鏂囧瓧鏃嬭浆瑙掑害
+  timestamp: false, // 鏄惁鏄剧ず鏃堕棿鎴�
+  format: 'YYYY-MM-DD HH:mm', // 鏃堕棿鎴虫牸寮�
+  zIndex: 0
+};
+
+// 鐩戝惉鍣�
+let observerMap = {};
+
+/**
+ * @Description: 鍒涘缓姘村嵃
+ * @param param
+ * @private
+ */
+function _createWatermark(param) {
+  const {
+    id,
+    watch,
+    content,
+    container,
+    width,
+    height,
+    textAlign,
+    textBaseline,
+    fontSize,
+    fontFamily,
+    fillStyle,
+    rotate,
+    timestamp,
+    format,
+    zIndex
+  } = param;
+
+  observerMap[id] = {
+    wmMo: null, // MutationObserver
+    wmTimer: null // timestamp
+  }
+
+  const canvas = document.createElement('canvas');
+  canvas.setAttribute('width', `${width}px`);
+  canvas.setAttribute('height', `${height}px`);
+
+  let containerDom = typeof container === 'string' ? document.querySelector(container) : container;
+
+  const ctx = canvas.getContext('2d');
+  ctx.textAlign = textAlign;
+  ctx.textBaseline = textBaseline;
+  ctx.font = `${fontSize} ${fontFamily}`;
+  ctx.fillStyle = fillStyle;
+  ctx.translate(width / 2, height / 2);
+  ctx.rotate(-(Math.PI / 180) * rotate);
+  ctx.fillText(`${content}`, 0, 0);
+  timestamp && ctx.fillText(`${timeFormat(new Date(), format)}`, 0, parseInt(fontSize) + 5);
+
+  let __vm = containerDom.querySelector('.__vm__' + id);
+  const watermarkDiv = __vm || document.createElement('div');
+  const withHeightStr = containerDom.getAttribute('style');
+  const styleStr = `position:absolute;user-select:none;top:0;left:0;${withHeightStr};z-index:${zIndex};pointer-events:none !important;background-repeat:repeat;background-image:url('${canvas.toDataURL()}');-webkit-print-color-adjust: exact;`;
+
+  watermarkDiv.setAttribute('style', styleStr);
+  watermarkDiv.classList.add('__vm__' + id);
+
+  if (!__vm) {
+    containerDom.insertBefore(watermarkDiv, containerDom.firstChild);
+  }
+
+  if (watch) {
+    const MutationObserver = window.MutationObserver || window.WebKitMutationObserver;
+    if (MutationObserver) {
+      observerMap[id]["wmMo"] = new MutationObserver((e) => {
+        let change = e.some(item => item.target.className == containerDom.className && item.type == 'attributes');
+        __vm = containerDom.querySelector('.__vm__' + id);
+        if ((__vm && __vm.getAttribute('style') !== styleStr) || !__vm || change) {
+          // 閬垮厤涓�鐩磋Е鍙�
+          observerMap[id]["wmMo"].disconnect();
+          observerMap[id]["wmMo"] = null;
+          delete observerMap[id]["wmMo"];
+          _createWatermark(param);
+        }
+      });
+      observerMap[id]["wmMo"].observe(containerDom, {
+        attributes: true, subtree: true, childList: true
+      });
+    }
+  }
+
+  if (format) {
+    let timeout = 1000 * 60 * 60 * 24;
+    if (format.includes('s')) {
+      timeout = 1000;
+    } else if (format.includes('m')) {
+      timeout = 1000 * 60;
+    } else if (format.includes('h') || format.includes('H')) {
+      timeout = 1000 * 60 * 60;
+    }
+
+    observerMap[id]["wmTimer"] = window.setTimeout(() => {
+      // 瑙﹀彂 MutationObserver
+      watermarkDiv.style.bottom = '0';
+    }, timeout);
+  }
+}
+
+/**
+ * @Description: 閿�姣佹按鍗�
+ */
+const destroyWatermark = function (options) {
+  const {
+    id,
+    watch,
+    container,
+  } = options;
+  if (watch) {
+    let containerDom = typeof container === 'string' ? document.querySelector(container) : container;
+    // 鐩戝惉鍣ㄥ叧闂�
+    if (observerMap[id]) {
+      observerMap[id]["wmMo"] && observerMap[id]["wmMo"].disconnect();
+      observerMap[id]["wmMo"] = null;
+      observerMap[id]["wmTimer"] && window.clearTimeout(observerMap[id]["wmTimer"]);
+      observerMap[id]["wmTimer"] = null;
+      delete observerMap[id];
+    }
+    // 鍒犻櫎姘村嵃鍏冪礌
+    const __vm = containerDom.querySelector('.__vm__' + id);
+    __vm && __vm.parentNode.removeChild(__vm);
+  }
+}
+
+/**
+ * @Description: 鍒涘缓姘村嵃
+ * @param option
+ */
+const createWatermark = function (option) {
+  let options = Object.assign({}, defaultOption, option);
+  destroyWatermark(options);
+  _createWatermark(options);
+}
+
+// 鏆撮湶鎺ュ彛
+export default {
+  createWatermark, destroyWatermark
+}
diff --git a/src/hiprintVue/index.js b/src/hiprintVue/index.js
new file mode 100644
index 0000000..0c6ee5a
--- /dev/null
+++ b/src/hiprintVue/index.js
@@ -0,0 +1,89 @@
+import {hiprint, defaultElementTypeProvider} from '../hiprint/hiprint.bundle.js'
+// 璋冪敤娴忚鍣ㄦ墦鍗癹s
+import "../hiprint/plugins/jquery.hiwprint.js";
+// 榛樿閰嶇疆
+import "../hiprint/hiprint.config";
+// 鏍峰紡
+import "../hiprint/css/hiprint.css"
+import "../hiprint/css/print-lock.css"
+
+import {version} from '../../package.json'
+
+//TODO  socket.io 鐗堟湰鍐茬獊,鏃犳硶寮�鍚�,鎯宠浣跨敤瀹㈡埛绔渶瑕佺爺绌�
+/**
+ * 鑷姩杩炴帴 / 杩炴帴
+ * cb: 杩炴帴鍥炶皟锛� (status, msg) {
+ *   // status: true/false
+ *   // msg: status == true 鏃� 杩斿洖socket.connect鍥炶皟 e
+ * }
+ */
+let autoConnect = function(cb) {
+  console.log('autoConnect');
+  window.autoConnect = true;
+  window.hiwebSocket && window.hiwebSocket.hasIo() && window.hiwebSocket.start(cb);
+};
+
+/**
+ * 鍙栨秷鑷姩杩炴帴 / 鏂紑杩炴帴
+ */
+let disAutoConnect = function() {
+  console.log('disAutoConnect');
+  window.autoConnect = false;
+  window.hiwebSocket && window.hiwebSocket.hasIo() && window.hiwebSocket.stop();
+};
+
+let hiPrintPlugin = {
+  disAutoConnect,
+  install: function (Vue, name = '$hiPrint', autoConnect = true) {
+    if (!autoConnect) {
+      disAutoConnect();
+    }
+    let globalVue = Vue.prototype || Vue.config.globalProperties;
+    globalVue[name] = hiprint;
+    /**
+   * 棰勮鎵撳嵃锛岃皟璧风郴缁熸墦鍗伴瑙�
+	 * provider 宸︿晶鎷栨嫿鍏冪礌
+	 * template 妯$増json瀛楃涓�
+	 * args 鎵撳嵃鏁版嵁data, options,
+	 */
+	 globalVue.$print = function (provider = defaultElementTypeProvider, template, ...args) {
+		 hiprint.init({
+			providers: [new provider()]
+		});
+		var hiprintTemplate = new hiprint.PrintTemplate({
+			template: template,
+		});
+		hiprintTemplate.print(...args);
+		return hiprintTemplate;
+	 }
+	 /**
+    * 鍗曟ā鐗堢洿鎺ユ墦鍗帮紝 闇�瀹㈡埛绔敮鎸�
+	  * provider 宸︿晶鎷栨嫿椤瑰璞�
+	  * template 妯$増json瀛楃涓�
+	  * args 鎵撳嵃鏁版嵁data, options,
+	  */
+	 globalVue.$print2 = function (provider = defaultElementTypeProvider, template, ...args) {
+		 hiprint.init({
+			providers: [new provider()]
+		});
+		var hiprintTemplate = new hiprint.PrintTemplate({
+			template: template,
+		});
+		hiprintTemplate.print2(...args);
+		return hiprintTemplate;
+	 }
+  }
+}
+
+hiprint.version = version
+
+window.hiprint = hiprint;
+export {
+  autoConnect,
+  disAutoConnect,
+  hiprint,
+  hiPrintPlugin,
+  defaultElementTypeProvider,
+}
+
+
diff --git a/src/i18n/cn.json b/src/i18n/cn.json
new file mode 100644
index 0000000..4df7874
--- /dev/null
+++ b/src/i18n/cn.json
@@ -0,0 +1,253 @@
+{
+  "璇烽�夋嫨瀛楁": "璇烽�夋嫨瀛楁",
+  "璁℃暟": "璁℃暟",
+  "鍚堣": "鍚堣",
+  "骞冲潎鍊�": "骞冲潎鍊�",
+  "鏈�灏忓��": "鏈�灏忓��",
+  "鏈�澶у��": "鏈�澶у��",
+  "姝ゆ牸寮忎笉鏀寔璇ユ枃鏈�": "姝ゆ牸寮忎笉鏀寔璇ユ枃鏈�",
+  "浜岀淮鐮佺敓鎴愬け璐�": "浜岀淮鐮佺敓鎴愬け璐�",
+  "瀛椾綋琛岄珮": "瀛椾綋琛岄珮",
+  "榛樿": "榛樿",
+  "瀛椾綋": "瀛椾綋",
+  "瀹嬩綋": "瀹嬩綋",
+  "寰蒋闆呴粦": "寰蒋闆呴粦",
+  "瀛椾綋澶у皬": "瀛椾綋澶у皬",
+  "瀛椾綋绮楃粏": "瀛椾綋绮楃粏",
+  "鏇寸粏": "鏇寸粏",
+  "绮椾綋": "绮椾綋",
+  "绮椾綋+": "绮椾綋+",
+  "瀛楅棿璺�": "瀛楅棿璺�",
+  "宸﹀彸瀵归綈": "宸﹀彸瀵归綈",
+  "灞呭乏": "灞呭乏",
+  "灞呬腑": "灞呬腑",
+  "灞呭彸": "灞呭彸",
+  "涓ょ瀵归綈": "涓ょ瀵归綈",
+  "鏍囬鏄剧ず闅愯棌": "鏍囬鏄剧ず闅愯棌",
+  "鏄剧ず": "鏄剧ず",
+  "闅愯棌": "闅愯棌",
+  "琛ㄦ牸杈规": "琛ㄦ牸杈规",
+  "鏈夎竟妗�": "鏈夎竟妗�",
+  "鏃犺竟妗�": "鏃犺竟妗�",
+  "琛ㄥご杈规": "琛ㄥご杈规",
+  "宸﹁竟妗�": "宸﹁竟妗�",
+  "鍙宠竟妗�": "鍙宠竟妗�",
+  "宸﹀彸杈规": "宸﹀彸杈规",
+  "涓婅竟妗�": "涓婅竟妗�",
+  "涓嬭竟妗�": "涓嬭竟妗�",
+  "涓婁笅杈规": "涓婁笅杈规",
+  "琛ㄥご鍗曞厓鏍艰竟妗�": "琛ㄥご鍗曞厓鏍艰竟妗�",
+  "琛ㄥ熬杈规": "琛ㄥ熬杈规",
+  "琛ㄥ熬鍗曞厓鏍艰竟妗�": "琛ㄥ熬鍗曞厓鏍艰竟妗�",
+  "琛ㄥご琛岄珮": "琛ㄥご琛岄珮",
+  "琛ㄥご瀛椾綋澶у皬": "琛ㄥご瀛椾綋澶у皬",
+  "琛ㄥご瀛椾綋绮楃粏": "琛ㄥご瀛椾綋绮楃粏",
+  "琛ㄤ綋鍗曞厓鏍艰竟妗�": "琛ㄤ綋鍗曞厓鏍艰竟妗�",
+  "琛ㄤ綋琛岄珮": "琛ㄤ綋琛岄珮",
+  "琛ㄥご鑳屾櫙": "琛ㄥご鑳屾櫙",
+  "绾垮": "绾垮",
+  "杈规澶у皬": "杈规澶у皬",
+  "鏉″舰鐮佹牸寮�": "鏉″舰鐮佹牸寮�",
+  "鍟嗗搧鏉$爜": "鍟嗗搧鏉$爜",
+  "鏉″舰鐮�": "鏉″舰鐮�",
+  "鐗╂祦": "鐗╂祦",
+  "閭斂鍜屽揩閫掔紪鐮�": "閭斂鍜屽揩閫掔紪鐮�",
+  "鍖荤枟浜у搧缂栫爜": "鍖荤枟浜у搧缂栫爜",
+  "涓嶅父鐢ㄧ紪鐮�": "涓嶅父鐢ㄧ紪鐮�",
+  "闄勫姞缁勪欢": "闄勫姞缁勪欢",
+  "瀹為獙缂栫爜": "瀹為獙缂栫爜",
+  "鏉$爜绫诲瀷": "鏉$爜绫诲瀷",
+  "浜岀淮鐮佺被鍨�": "浜岀淮鐮佺被鍨�",
+  "浜岀淮鐮佸閿欑巼": "浜岀淮鐮佸閿欑巼",
+  "瀛椾綋棰滆壊": "瀛椾綋棰滆壊",
+  "鏂囨湰淇グ": "鏂囨湰淇グ",
+  "涓嬪垝绾�": "涓嬪垝绾�",
+  "涓婂垝绾�": "涓婂垝绾�",
+  "绌挎绾�": "绌挎绾�",
+  "瀛楁鍚�": "瀛楁鍚�",
+  "璇疯緭鍏ュ瓧娈靛悕": "璇疯緭鍏ュ瓧娈靛悕",
+  "鏍囬": "鏍囬",
+  "璇疯緭鍏ユ爣棰�": "璇疯緭鍏ユ爣棰�",
+  "娴嬭瘯鏁版嵁": "娴嬭瘯鏁版嵁",
+  "浠呭瓧娈靛悕绉板瓨鍦ㄦ椂鏈夋晥": "浠呭瓧娈靛悕绉板瓨鍦ㄦ椂鏈夋晥",
+  "浣嶇疆鍧愭爣": "浣嶇疆鍧愭爣",
+  "X浣嶇疆(宸�)": "X浣嶇疆(宸�)",
+  "Y浣嶇疆(涓�)": "Y浣嶇疆(涓�)",
+  "鍚屾": "鍚屾",
+  "涓嶅悓姝�": "涓嶅悓姝�",
+  "瀹介珮澶у皬": "瀹介珮澶у皬",
+  "瀹�": "瀹�",
+  "楂�": "楂�",
+  "鍥剧墖鍦板潃": "鍥剧墖鍦板潃",
+  "璇疯緭鍏ュ浘鐗囧湴鍧�": "璇疯緭鍏ュ浘鐗囧湴鍧�",
+  "閫夋嫨": "閫夋嫨",
+  "鍥剧墖缂╂斁": "鍥剧墖缂╂斁",
+  "绛夋瘮": "绛夋瘮",
+  "瑁佸垏": "瑁佸垏",
+  "濉厖": "濉厖",
+  "鍘熷灏哄": "鍘熷灏哄",
+  "棰滆壊": "棰滆壊",
+  "杈规棰滆壊": "杈规棰滆壊",
+  "姘村嵃鍔熻兘": "姘村嵃鍔熻兘",
+  "姘村嵃鍐呭": "姘村嵃鍐呭",
+  "鏃嬭浆瑙掑害": "鏃嬭浆瑙掑害",
+  "姘村钩瀵嗗害": "姘村钩瀵嗗害",
+  "鍨傜洿瀵嗗害": "鍨傜洿瀵嗗害",
+  "姘村嵃鏃堕棿": "姘村嵃鏃堕棿",
+  "鏃堕棿鏍煎紡": "鏃堕棿鏍煎紡",
+  "椤电爜鏍煎紡": "椤电爜鏍煎紡",
+  "鏄剧ず椤电爜": "鏄剧ず椤电爜",
+  "椤电爜缁帓": "椤电爜缁帓",
+  "缁帓": "缁帓",
+  "閲嶆帓": "閲嶆帓",
+  "姣忚缂╄繘": "姣忚缂╄繘",
+  "鏄剧ず瑙勫垯": "鏄剧ず瑙勫垯",
+  "濮嬬粓闅愯棌": "濮嬬粓闅愯棌",
+  "棣栭〉": "棣栭〉",
+  "濂囨暟椤�": "濂囨暟椤�",
+  "鍋舵暟椤�": "鍋舵暟椤�",
+  "灏鹃〉": "灏鹃〉",
+  "寮哄埗鍒嗛〉": "寮哄埗鍒嗛〉",
+  "鏄�": "鏄�",
+  "鍚�": "鍚�",
+  "鎵撳嵃瑙勫垯": "鎵撳嵃瑙勫垯",
+  "淇濇寔濂囨暟": "淇濇寔濂囨暟",
+  "淇濇寔鍋舵暟": "淇濇寔鍋舵暟",
+  "鍒嗛〉瑙勫垯": "鍒嗛〉瑙勫垯",
+  "涓嶅垎椤�": "涓嶅垎椤�",
+  "绉婚櫎娈佃惤宸︿晶绌虹櫧": "绉婚櫎娈佃惤宸︿晶绌虹櫧",
+  "绉婚櫎": "绉婚櫎",
+  "涓嶇Щ闄�": "涓嶇Щ闄�",
+  "棣栭〉椤靛熬": "棣栭〉椤靛熬",
+  "灏鹃〉椤靛熬": "灏鹃〉椤靛熬",
+  "鍋舵暟椤甸〉灏�": "鍋舵暟椤甸〉灏�",
+  "濂囨暟椤甸〉灏�": "濂囨暟椤甸〉灏�",
+  "浣嶇疆鍥哄畾": "浣嶇疆鍥哄畾",
+  "鎷栧姩鏂瑰悜": "鎷栧姩鏂瑰悜",
+  "妯悜": "妯悜",
+  "绔栧悜": "绔栧悜",
+  "宸﹀亸绉�": "宸﹀亸绉�",
+  "鍋忕Щ閲�": "鍋忕Щ閲�",
+  "鏈�浣庨珮搴�": "鏈�浣庨珮搴�",
+  "鏂囨湰杩囩煭鎴栦负绌烘椂鐨勯珮搴�": "鏂囨湰杩囩煭鎴栦负绌烘椂鐨勯珮搴�",
+  "闅愯棌瑙勫垯": "闅愯棌瑙勫垯",
+  "琛ㄤ綋琛岃竟妗�": "琛ㄤ綋琛岃竟妗�",
+  "鍏冪礌灞傜骇": "鍏冪礌灞傜骇",
+  "杈规璁剧疆": "杈规璁剧疆",
+  "瀹炵嚎": "瀹炵嚎",
+  "铏氱嚎": "铏氱嚎",
+  "宸﹀唴杈硅窛": "宸﹀唴杈硅窛",
+  "涓婂唴杈硅窛": "涓婂唴杈硅窛",
+  "鍙冲唴杈硅窛": "鍙冲唴杈硅窛",
+  "涓嬪唴杈硅窛": "涓嬪唴杈硅窛",
+  "鏍峰紡": "鏍峰紡",
+  "杈规鏍峰紡": "杈规鏍峰紡",
+  "闀胯櫄绾�": "闀胯櫄绾�",
+  "鐭櫄绾�": "鐭櫄绾�",
+  "鑳屾櫙棰滆壊": "鑳屾櫙棰滆壊",
+  "绾稿紶鏂瑰悜(浠呰嚜瀹氫箟绾歌川鏈夋晥)": "绾稿紶鏂瑰悜(浠呰嚜瀹氫箟绾歌川鏈夋晥)",
+  "绾靛悜": "绾靛悜",
+  "涓婁笅瀵归綈": "涓婁笅瀵归綈",
+  "鍨傜洿灞呬腑": "鍨傜洿灞呬腑",
+  "搴曢儴": "搴曢儴",
+  "鏂囨湰鎹㈣": "鏂囨湰鎹㈣",
+  "涓嶆崲琛�": "涓嶆崲琛�",
+  "涓嶆崲琛�&闅愯棌": "涓嶆崲琛�&闅愯棌",
+  "涓嶆崲琛�&鐪佺暐": "涓嶆崲琛�&鐪佺暐",
+  "鎵撳嵃绫诲瀷": "鎵撳嵃绫诲瀷",
+  "鏂囨湰": "鏂囨湰",
+  "浜岀淮鐮�": "浜岀淮鐮�",
+  "瀛楁绫诲瀷": "瀛楁绫诲瀷",
+  "榛樿(鏂囨湰)": "榛樿(鏂囨湰)",
+  "搴忓彿": "搴忓彿",
+  "鍥剧墖": "鍥剧墖",
+  "鍗曞厓鏍奸珮搴�": "鍗曞厓鏍奸珮搴�",
+  "鏉″舰鐮併�佷簩缁寸爜浠ュ強鍥剧墖鏈夋晥": "鏉″舰鐮併�佷簩缁寸爜浠ュ強鍥剧墖鏈夋晥",
+  "搴曢儴鑱氬悎鏍囬": "搴曢儴鑱氬悎鏍囬",
+  "搴曢儴鑱氬悎鏂囨湰": "搴曢儴鑱氬悎鏂囨湰",
+  "鑱氬悎绫诲瀷": "鑱氬悎绫诲瀷",
+  "搴曢儴鑱氬悎鍚堝苟鍒楁暟": "搴曢儴鑱氬悎鍚堝苟鍒楁暟",
+  "鍚堝苟鍒楁暟": "鍚堝苟鍒楁暟",
+  "搴曢儴鑱氬悎绫诲瀷宸﹀彸瀵归綈": "搴曢儴鑱氬悎绫诲瀷宸﹀彸瀵归綈",
+  "鏁存暟": "鏁存暟",
+  "淇濈暀%s浣�": "淇濈暀%s浣�",
+  "搴曢儴鑱氬悎灏忔暟": "搴曢儴鑱氬悎灏忔暟",
+  "搴曢儴鑱氬悎鏍煎紡鍖栧嚱鏁�": "搴曢儴鑱氬悎鏍煎紡鍖栧嚱鏁�",
+  "杞ぇ灏忓啓": "杞ぇ灏忓啓",
+  "搴曢儴鑱氬悎绫诲瀷": "搴曢儴鑱氬悎绫诲瀷",
+  "涓嶈仛鍚�": "涓嶈仛鍚�",
+  "浠呮枃鏈�": "浠呮枃鏈�",
+  "椤堕儴鍋忕Щ": "椤堕儴鍋忕Щ",
+  "涓�琛屽缁�": "涓�琛屽缁�",
+  "涓�琛屼簩鍒�": "涓�琛屼簩鍒�",
+  "涓�琛屼笁鍒�": "涓�琛屼笁鍒�",
+  "涓�琛屽洓鍒�": "涓�琛屽洓鍒�",
+  "涓�琛屽缁勯棿闅�": "涓�琛屽缁勯棿闅�",
+  "琛ㄦ牸澶存樉绀�": "琛ㄦ牸澶存樉绀�",
+  "姣忛〉鏄剧ず": "姣忛〉鏄剧ず",
+  "棣栭〉鏄剧ず": "棣栭〉鏄剧ず",
+  "涓嶆樉绀�": "涓嶆樉绀�",
+  "鏁版嵁绫诲瀷": "鏁版嵁绫诲瀷",
+  "鏃ユ湡鏃堕棿": "鏃ユ湡鏃堕棿",
+  "甯冨皵": "甯冨皵",
+  "鏍煎紡": "鏍煎紡",
+  "鏍煎紡鍖栧嚱鏁�": "鏍煎紡鍖栧嚱鏁�",
+  "鏍峰紡鍑芥暟": "鏍峰紡鍑芥暟",
+  "琛�/鍒楀悎骞跺嚱鏁�": "琛�/鍒楀悎骞跺嚱鏁�",
+  "璺ㄩ〉鍚堝苟鏄惁娓呴櫎": "璺ㄩ〉鍚堝苟鏄惁娓呴櫎",
+  "琛ㄦ牸鑴氬嚱鏁�": "琛ㄦ牸鑴氬嚱鏁�",
+  "鍒嗙粍瀛楁鍑芥暟": "鍒嗙粍瀛楁鍑芥暟",
+  "鍒嗙粍澶存牸寮忓寲鍑芥暟": "鍒嗙粍澶存牸寮忓寲鍑芥暟",
+  "鍒嗙粍澶翠俊鎭�": "鍒嗙粍澶翠俊鎭�",
+  "鍒嗙粍鑴氭牸寮忓寲鍑芥暟": "鍒嗙粍鑴氭牸寮忓寲鍑芥暟",
+  "鍒嗙粍鑴氫俊鎭�": "鍒嗙粍鑴氫俊鎭�",
+  "澶氱粍琛ㄦ牸鑴氬嚱鏁�": "澶氱粍琛ㄦ牸鑴氬嚱鏁�",
+  "琛屾牱寮忓嚱鏁�": "琛屾牱寮忓嚱鏁�",
+  "鍗曞厓鏍煎乏鍙冲榻�": "鍗曞厓鏍煎乏鍙冲榻�",
+  "鍗曞厓鏍间笂涓嬪榻�": "鍗曞厓鏍间笂涓嬪榻�",
+  "涓�": "涓�",
+  "涓�": "涓�",
+  "琛ㄦ牸澶村崟鍏冩牸宸﹀彸瀵归綈": "琛ㄦ牸澶村崟鍏冩牸宸﹀彸瀵归綈",
+  "鍗曞厓鏍兼牱寮忓嚱鏁�": "鍗曞厓鏍兼牱寮忓嚱鏁�",
+  "琛ㄦ牸澶存牱寮忓嚱鏁�": "琛ㄦ牸澶存牱寮忓嚱鏁�",
+  "鍗曞厓鏍兼牸寮忓寲鍑芥暟": "鍗曞厓鏍兼牸寮忓寲鍑芥暟",
+  "鍗曞厓鏍兼覆鏌撳嚱鏁�": "鍗曞厓鏍兼覆鏌撳嚱鏁�",
+  "鑷姩琛ュ叏": "鑷姩琛ュ叏",
+  "姣忛〉鏈�澶ц鏁�": "姣忛〉鏈�澶ц鏁�",
+  "琛ㄦ牸鑴氭樉绀�": "琛ㄦ牸鑴氭樉绀�",
+  "鏈�鍚庢樉绀�": "鏈�鍚庢樉绀�",
+  "娌℃湁瓒冲绌洪棿杩涜琛ㄦ牸鍒嗛〉锛岃璋冩暣椤电湁/椤佃剼绾�": "娌℃湁瓒冲绌洪棿杩涜琛ㄦ牸鍒嗛〉锛岃璋冩暣椤电湁/椤佃剼绾�",
+  "娌℃湁瓒冲绌洪棿,鏄剧ず涓嬫柟鍐呭, 鍙垎椤甸珮搴�": "娌℃湁瓒冲绌洪棿,鏄剧ず涓嬫柟鍐呭, 鍙垎椤甸珮搴�",
+  "鍒楀睘鎬�": "鍒楀睘鎬�",
+  "鍦ㄤ笂鏂规彃鍏ヨ": "鍦ㄤ笂鏂规彃鍏ヨ",
+  "鍦ㄤ笅鏂规彃鍏ヨ": "鍦ㄤ笅鏂规彃鍏ヨ",
+  "鍚戝乏鏂规彃鍏ュ垪": "鍚戝乏鏂规彃鍏ュ垪",
+  "鍚戝彸鏂规彃鍏ュ垪": "鍚戝彸鏂规彃鍏ュ垪",
+  "鍒犻櫎琛�": "鍒犻櫎琛�",
+  "鍒犻櫎鍒�": "鍒犻櫎鍒�",
+  "瀵归綈": "瀵归綈",
+  "宸�": "宸�",
+  "宸﹀彸灞呬腑": "宸﹀彸灞呬腑",
+  "鍙�": "鍙�",
+  "涓�": "涓�",
+  "鍚堝苟鍗曞厓鏍�": "鍚堝苟鍗曞厓鏍�",
+  "瑙e紑鍗曞厓鏍�": "瑙e紑鍗曞厓鏍�",
+  "鏉″舰鐮佺敓鎴愬け璐�": "鏉″舰鐮佺敓鎴愬け璐�",
+  "璇锋鏌� hiprint.init 鐨� provider 鏄惁閰嶇疆浜�": "璇锋鏌� hiprint.init 鐨� provider 鏄惁閰嶇疆浜�",
+  "宸茬Щ闄�'tableCustom',璇锋浛鎹娇鐢�'table'璇︽儏瑙佹洿鏂拌褰�": "宸茬Щ闄�'tableCustom',璇锋浛鎹娇鐢�'table'璇︽儏瑙佹洿鏂拌褰�",
+  "纭畾": "纭畾",
+  "鍒犻櫎": "鍒犻櫎",
+  "杩炴帴瀹㈡埛绔け璐�": "杩炴帴瀹㈡埛绔け璐�",
+  "鍩虹": "鍩虹",
+  "杈规": "杈规",
+  "鍒�": "鍒�",
+  "楂樼骇": "楂樼骇",
+  "闈㈡澘鎺掑垪": "闈㈡澘鎺掑垪",
+  "鎺掑垪鏂瑰紡": "鎺掑垪鏂瑰紡",
+  "鍨傜洿闂磋窛%s": "鍨傜洿闂磋窛%s",
+  "姘村钩闂磋窛%s": "姘村钩闂磋窛%s",
+  "杈规鍦嗚": "杈规鍦嗚",
+  "鏉$爜棰滆壊": "鏉$爜棰滆壊",
+  "鏄剧ず鐮佸��": "鏄剧ず鐮佸��",
+  "褰撳墠闇�瑕侀珮搴�": "褰撳墠闇�瑕侀珮搴�"
+}
\ No newline at end of file
diff --git a/src/i18n/cn_tw.json b/src/i18n/cn_tw.json
new file mode 100644
index 0000000..957a1f2
--- /dev/null
+++ b/src/i18n/cn_tw.json
@@ -0,0 +1,252 @@
+{
+    "璇烽�夋嫨瀛楁": "璜嬮伕鎿囨瑒浣�",
+    "璁℃暟": "瑷堟暩",
+    "鍚堣": "鍚堣▓",
+    "骞冲潎鍊�": "骞冲潎鍊�",
+    "鏈�灏忓��": "鏈�灏忓��",
+    "鏈�澶у��": "鏈�澶у��",
+    "姝ゆ牸寮忎笉鏀寔璇ユ枃鏈�": "姝ゆ牸寮忎笉鏀彺瑭叉枃瀛�",
+    "浜岀淮鐮佺敓鎴愬け璐�": "浜岀董纰肩敘鐢熷け鏁�",
+    "瀛椾綋琛岄珮": "瀛楅珨琛岄珮",
+    "榛樿": "闋愯ō",
+    "瀛椾綋": "瀛楀瀷",
+    "瀹嬩綋": "瀹嬮珨",
+    "寰蒋闆呴粦": "寰粺闆呴粦",
+    "瀛椾綋澶у皬": "瀛楀瀷澶у皬",
+    "瀛椾綋绮楃粏": "瀛楀瀷绮楃窗",
+    "鏇寸粏": "鏇寸窗",
+    "绮椾綋": "绮楅珨",
+    "绮椾綋+": "绮楅珨+",
+    "瀛楅棿璺�": "瀛楅枔璺�",
+    "宸﹀彸瀵归綈": "宸﹀彸灏嶉綂",
+    "灞呭乏": "闈犲乏",
+    "灞呬腑": "缃腑",
+    "灞呭彸": "闈犲彸",
+    "涓ょ瀵归綈": "鍏╃灏嶉綂",
+    "鏍囬鏄剧ず闅愯棌": "妯欓椤ず闅辫棌",
+    "鏄剧ず": "椤ず",
+    "闅愯棌": "闅辫棌",
+    "琛ㄦ牸杈规": "琛ㄦ牸閭婃",
+    "鏈夎竟妗�": "鏈夐倞妗�",
+    "鏃犺竟妗�": "鐒¢倞妗�",
+    "琛ㄥご杈规": "琛ㄩ牠閭婃",
+    "宸﹁竟妗�": "宸﹂倞妗�",
+    "鍙宠竟妗�": "鍙抽倞妗�",
+    "宸﹀彸杈规": "宸﹀彸閭婃",
+    "涓婅竟妗�": "涓婇倞妗�",
+    "涓嬭竟妗�": "涓嬮倞妗�",
+    "涓婁笅杈规": "涓婁笅閭婃",
+    "琛ㄥご鍗曞厓鏍艰竟妗�": "琛ㄩ牠鍎插瓨鏍奸倞妗�",
+    "琛ㄥ熬杈规": "琛ㄥ熬閭婃",
+    "琛ㄥ熬鍗曞厓鏍艰竟妗�": "琛ㄥ熬鍎插瓨鏍奸倞妗�",
+    "琛ㄥご琛岄珮": "琛ㄩ牠鍒楅珮",
+    "琛ㄥご瀛椾綋澶у皬": "琛ㄩ牠瀛楀瀷澶у皬",
+    "琛ㄥご瀛椾綋绮楃粏": "琛ㄩ牠瀛楀瀷绮楃窗",
+    "琛ㄤ綋鍗曞厓鏍艰竟妗�": "琛ㄩ珨鍎插瓨鏍奸倞妗�",
+    "琛ㄤ綋琛岄珮": "琛ㄩ珨鍒楅珮",
+    "琛ㄥご鑳屾櫙": "琛ㄩ牠鑳屾櫙",
+    "绾垮": "绶氬",
+    "杈规澶у皬": "閭婃澶у皬",
+    "鏉″舰鐮佹牸寮�": "姊濈⒓鏍煎紡",
+    "鍟嗗搧鏉$爜": "鍟嗗搧姊濈⒓",
+    "鏉″舰鐮�": "姊濈⒓",
+    "鐗╂祦": "鐗╂祦",
+    "閭斂鍜屽揩閫掔紪鐮�": "閮垫斂鍜屽揩閬炵法纰�",
+    "鍖荤枟浜у搧缂栫爜": "閱檪鐢㈠搧绶ㄧ⒓",
+    "涓嶅父鐢ㄧ紪鐮�": "涓嶅父鐢ㄧ法纰�",
+    "闄勫姞缁勪欢": "闄勫姞鍏冧欢",
+    "瀹為獙缂栫爜": "瀵﹂绶ㄧ⒓",
+    "鏉$爜绫诲瀷": "姊濈⒓椤炲瀷",
+    "浜岀淮鐮佺被鍨�": "浜岀董纰奸鍨�",
+    "浜岀淮鐮佸閿欑巼": "浜岀董纰煎閷巼",
+    "瀛椾綋棰滆壊": "瀛楀瀷椤忚壊",
+    "鏂囨湰淇グ": "鏂囧瓧淇>",
+    "涓嬪垝绾�": "搴曠窔",
+    "涓婂垝绾�": "涓婄窔",
+    "绌挎绾�": "绌挎绶�",
+    "瀛楁鍚�": "娆勪綅鍚嶇ū",
+    "璇疯緭鍏ュ瓧娈靛悕": "璜嬭几鍏ユ瑒浣嶅悕绋�",
+    "鏍囬": "妯欓",
+    "璇疯緭鍏ユ爣棰�": "璜嬭几鍏ユ椤�",
+    "娴嬭瘯鏁版嵁": "娓│璩囨枡",
+    "浠呭瓧娈靛悕绉板瓨鍦ㄦ椂鏈夋晥": "鍍呮瑒浣嶅悕绋卞瓨鍦ㄦ檪鏈夋晥",
+    "浣嶇疆鍧愭爣": "浣嶇疆搴ф",
+    "X浣嶇疆(宸�)": "X浣嶇疆(宸�)",
+    "Y浣嶇疆(涓�)": "Y浣嶇疆(涓�)",
+    "鍚屾": "鍚屾",
+    "涓嶅悓姝�": "涓嶅悓姝�",
+    "瀹介珮澶у皬": "瀵珮澶у皬",
+    "瀹�": "瀵�",
+    "楂�": "楂�",
+    "鍥剧墖鍦板潃": "鍦栫墖缍插潃",
+    "璇疯緭鍏ュ浘鐗囧湴鍧�": "璜嬭几鍏ュ湒鐗囩恫鍧�",
+    "閫夋嫨": "閬告搰",
+    "鍥剧墖缂╂斁": "鍦栫墖绺斁",
+    "绛夋瘮": "绛夋瘮",
+    "瑁佸垏": "瑁佸垏",
+    "濉厖": "濉厖",
+    "鍘熷灏哄": "鍘熷灏哄",
+    "棰滆壊": "椤忚壊",
+    "杈规棰滆壊": "閭婃椤忚壊",
+    "姘村嵃鍔熻兘": "娴按鍗板姛鑳�",
+    "姘村嵃鍐呭": "娴按鍗板収瀹�",
+    "鏃嬭浆瑙掑害": "鏃嬭綁瑙掑害",
+    "姘村钩瀵嗗害": "姘村钩瀵嗗害",
+    "鍨傜洿瀵嗗害": "鍨傜洿瀵嗗害",
+    "姘村嵃鏃堕棿": "娴按鍗版檪闁�",
+    "鏃堕棿鏍煎紡": "鏅傞枔鏍煎紡",
+    "椤电爜鏍煎紡": "闋佺⒓鏍煎紡",
+    "鏄剧ず椤电爜": "椤ず闋佺⒓",
+    "椤电爜缁帓": "闋佺⒓绾屾帓",
+    "缁帓": "绾屾帓",
+    "閲嶆帓": "閲嶆帓",
+    "姣忚缂╄繘": "姣忚绺帓",
+    "鏄剧ず瑙勫垯": "椤ず瑕忓墖",
+    "濮嬬粓闅愯棌": "濮嬬祩闅辫棌",
+    "棣栭〉": "棣栭爜",
+    "濂囨暟椤�": "濂囨暩闋�",
+    "鍋舵暟椤�": "鍋舵暩闋�",
+    "灏鹃〉": "灏鹃爜",
+    "寮哄埗鍒嗛〉": "寮峰埗鍒嗛爜",
+    "鏄�": "鏄�",
+    "鍚�": "鍚�",
+    "鎵撳嵃瑙勫垯": "鍒楀嵃瑕忓墖",
+    "淇濇寔濂囨暟": "淇濇寔濂囨暩",
+    "淇濇寔鍋舵暟": "淇濇寔鍋舵暩",
+    "鍒嗛〉瑙勫垯": "鍒嗛爜瑕忓墖",
+    "涓嶅垎椤�": "涓嶅垎闋�",
+    "绉婚櫎娈佃惤宸︿晶绌虹櫧": "绉婚櫎娈佃惤宸﹀伌绌虹櫧",
+    "绉婚櫎": "绉婚櫎",
+    "涓嶇Щ闄�": "涓嶇Щ闄�",
+    "棣栭〉椤靛熬": "棣栭爜闋佸熬",
+    "灏鹃〉椤靛熬": "灏鹃爜闋佸熬",
+    "鍋舵暟椤甸〉灏�": "鍋舵暩闋侀爜灏�",
+    "濂囨暟椤甸〉灏�": "濂囨暩闋侀爜灏�",
+    "浣嶇疆鍥哄畾": "浣嶇疆鍥哄畾",
+    "鎷栧姩鏂瑰悜": "鎷栧嫊鏂瑰悜",
+    "妯悜": "姗悜",
+    "绔栧悜": "璞庡悜",
+    "宸﹀亸绉�": "宸﹀亸绉�",
+    "鍋忕Щ閲�": "鍋忕Щ閲�",
+    "鏈�浣庨珮搴�": "鏈�浣庨珮搴�",
+    "鏂囨湰杩囩煭鎴栦负绌烘椂鐨勯珮搴�": "鏂囨湰閬庣煭鎴栫偤绌烘檪鐨勯珮搴�",
+    "闅愯棌瑙勫垯": "闅辫棌瑕忓墖",
+    "琛ㄤ綋琛岃竟妗�": "琛ㄩ珨鍒楅倞妗�",
+    "鍏冪礌灞傜骇": "鍏冪礌灞ょ礆",
+    "杈规璁剧疆": "閭婃瑷疆",
+    "瀹炵嚎": "瀵︾窔",
+    "铏氱嚎": "铏涚窔",
+    "宸﹀唴杈硅窛": "宸﹀収閭婅窛",
+    "涓婂唴杈硅窛": "涓婂収閭婅窛",
+    "鍙冲唴杈硅窛": "鍙冲収閭婅窛",
+    "涓嬪唴杈硅窛": "涓嬪収閭婅窛",
+    "鏍峰紡": "妯e紡",
+    "杈规鏍峰紡": "閭婃妯e紡",
+    "闀胯櫄绾�": "闀疯櫅绶�",
+    "鐭櫄绾�": "鐭櫅绶�",
+    "鑳屾櫙棰滆壊": "鑳屾櫙椤忚壊",
+    "绾稿紶鏂瑰悜(浠呰嚜瀹氫箟绾歌川鏈夋晥)": "绱欏嫉鏂瑰悜(鍍呰嚜瑷傜礄璩湁鏁�)",
+    "绾靛悜": "绺卞悜",
+    "涓婁笅瀵归綈": "涓婁笅灏嶉綂",
+    "鍨傜洿灞呬腑": "鍨傜洿缃腑",
+    "搴曢儴": "搴曢儴",
+    "鏂囨湰鎹㈣": "鏂囧瓧鎻涜",
+    "涓嶆崲琛�": "涓嶆彌琛�",
+    "涓嶆崲琛�&闅愯棌": "涓嶆彌琛�&闅辫棌",
+    "涓嶆崲琛�&鐪佺暐": "涓嶆彌琛�&鐪佺暐",
+    "鎵撳嵃绫诲瀷": "鍒楀嵃椤炲瀷",
+    "鏂囨湰": "鏂囧瓧",
+    "浜岀淮鐮�": "浜岀董纰�",
+    "瀛楁绫诲瀷": "娆勪綅椤炲瀷",
+    "榛樿(鏂囨湰)": "闋愯ō(鏂囧瓧)",
+    "搴忓彿": "搴忚櫉",
+    "鍥剧墖": "鍦栫墖",
+    "鍗曞厓鏍奸珮搴�": "鍎插瓨鏍奸珮搴�",
+    "鏉″舰鐮併�佷簩缁寸爜浠ュ強鍥剧墖鏈夋晥": "姊濈⒓銆佷簩缍⒓浠ュ強鍦栫墖鏈夋晥",
+    "搴曢儴鑱氬悎鏍囬": "搴曢儴褰欑附妯欓",
+    "搴曢儴鑱氬悎鏂囨湰": "搴曢儴褰欑附鏂囧瓧",
+    "鑱氬悎绫诲瀷": "褰欑附椤炲瀷",
+    "搴曢儴鑱氬悎鍚堝苟鍒楁暟": "搴曢儴褰欑附鍚堜降鍒楁暩",
+    "鍚堝苟鍒楁暟": "鍚堜降鍒楁暩",
+    "搴曢儴鑱氬悎绫诲瀷宸﹀彸瀵归綈": "搴曢儴褰欑附椤炲瀷宸﹀彸灏嶉綂",
+    "鏁存暟": "鏁存暩",
+    "淇濈暀%s浣�": "淇濈暀%s浣�",
+    "搴曢儴鑱氬悎灏忔暟": "搴曢儴褰欑附灏忔暩",
+    "搴曢儴鑱氬悎鏍煎紡鍖栧嚱鏁�": "搴曢儴褰欑附鏍煎紡鍖栧嚱鏁�",
+    "杞ぇ灏忓啓": "杞夊ぇ灏忓",
+    "搴曢儴鑱氬悎绫诲瀷": "搴曢儴褰欑附椤炲瀷",
+    "涓嶈仛鍚�": "涓嶅綑绺�",
+    "浠呮枃鏈�": "鍍呮枃瀛�",
+    "椤堕儴鍋忕Щ": "闋傞儴鍋忕Щ",
+    "涓�琛屽缁�": "涓�琛屽绲�",
+    "涓�琛屼簩鍒�": "涓�琛屼簩娆�",
+    "涓�琛屼笁鍒�": "涓�琛屼笁娆�",
+    "涓�琛屽洓鍒�": "涓�琛屽洓娆�",
+    "涓�琛屽缁勯棿闅�": "涓�琛屽绲勯枔闅�",
+    "琛ㄦ牸澶存樉绀�": "琛ㄦ牸闋’绀�",
+    "姣忛〉鏄剧ず": "姣忛爜椤ず",
+    "棣栭〉鏄剧ず": "棣栭爜椤ず",
+    "涓嶆樉绀�": "涓嶉’绀�",
+    "鏁版嵁绫诲瀷": "璩囨枡椤炲瀷",
+    "鏃ユ湡鏃堕棿": "鏃ユ湡鏅傞枔",
+    "甯冨皵": "甯冪埦",
+    "鏍煎紡": "鏍煎紡",
+    "鏍煎紡鍖栧嚱鏁�": "鏍煎紡鍖栧嚱鏁�",
+    "鏍峰紡鍑芥暟": "妯e紡鍑芥暩",
+    "琛�/鍒楀悎骞跺嚱鏁�": "琛�/鍒楀悎浣靛嚱鏁�",
+    "璺ㄩ〉鍚堝苟鏄惁娓呴櫎": "璺ㄩ爜鍚堜降鏄惁娓呴櫎",
+    "琛ㄦ牸鑴氬嚱鏁�": "琛ㄦ牸鑵冲嚱鏁�",
+    "鍒嗙粍瀛楁鍑芥暟": "鍒嗙祫娆勪綅鍑芥暩",
+    "鍒嗙粍澶存牸寮忓寲鍑芥暟": "鍒嗙祫闋牸寮忓寲鍑芥暩",
+    "鍒嗙粍澶翠俊鎭�": "鍒嗙祫闋硣瑷�",
+    "鍒嗙粍鑴氭牸寮忓寲鍑芥暟": "鍒嗙祫鑵虫牸寮忓寲鍑芥暩",
+    "鍒嗙粍鑴氫俊鎭�": "鍒嗙祫鑵宠硣瑷�",
+    "澶氱粍琛ㄦ牸鑴氬嚱鏁�": "澶氱祫琛ㄦ牸鑵冲嚱鏁�",
+    "琛屾牱寮忓嚱鏁�": "琛屾ǎ寮忓嚱鏁�",
+    "鍗曞厓鏍煎乏鍙冲榻�": "鍎插瓨鏍煎乏鍙冲皪榻�",
+    "鍗曞厓鏍间笂涓嬪榻�": "鍎插瓨鏍间笂涓嬪皪榻�",
+    "涓�": "涓�",
+    "涓�": "涓�",
+    "琛ㄦ牸澶村崟鍏冩牸宸﹀彸瀵归綈": "琛ㄦ牸闋劜瀛樻牸宸﹀彸灏嶉綈",
+    "鍗曞厓鏍兼牱寮忓嚱鏁�": "鍎插瓨鏍兼ǎ寮忓嚱鏁�",
+    "琛ㄦ牸澶存牱寮忓嚱鏁�": "琛ㄦ牸闋ǎ寮忓嚱鏁�",
+    "鍗曞厓鏍兼牸寮忓寲鍑芥暟": "鍎插瓨鏍兼牸寮忓寲鍑芥暩",
+    "鍗曞厓鏍兼覆鏌撳嚱鏁�": "鍎插瓨鏍兼覆鏌撳嚱鏁�",
+    "鑷姩琛ュ叏": "鑷嫊瀹屾垚",
+    "姣忛〉鏈�澶ц鏁�": "姣忛爜鏈�澶ц鏁�",
+    "琛ㄦ牸鑴氭樉绀�": "琛ㄦ牸鑵抽’绀�",
+    "鏈�鍚庢樉绀�": "鏈�寰岄’绀�",
+    "娌℃湁瓒冲绌洪棿杩涜琛ㄦ牸鍒嗛〉锛岃璋冩暣椤电湁/椤佃剼绾�": "娌掓湁瓒冲绌洪枔閫茶琛ㄦ牸鍒嗛爜,璜嬭鏁撮爜鐪�/闋佽叧绶�",
+    "娌℃湁瓒冲绌洪棿,鏄剧ず涓嬫柟鍐呭, 鍙垎椤甸珮搴�": "娌掓湁瓒冲绌洪枔,椤ず涓嬫柟鍏у, 鍙垎闋侀珮搴�",
+    "鍒楀睘鎬�": "鍒楀爆鎬�",
+    "鍦ㄤ笂鏂规彃鍏ヨ": "鍦ㄤ笂鏂规彃鍏ュ垪",
+    "鍦ㄤ笅鏂规彃鍏ヨ": "鍦ㄤ笅鏂规彃鍏ュ垪",
+    "鍚戝乏鏂规彃鍏ュ垪": "鍚戝乏鏂规彃鍏ュ垪",
+    "鍚戝彸鏂规彃鍏ュ垪": "鍚戝彸鏂规彃鍏ュ垪",
+    "鍒犻櫎琛�": "鍒櫎鍒�",
+    "鍒犻櫎鍒�": "鍒櫎鍒�",
+    "瀵归綈": "灏嶉綂",
+    "宸�": "宸�",
+    "宸﹀彸灞呬腑": "宸﹀彸缃腑",
+    "鍙�": "鍙�",
+    "涓�": "涓�",
+    "鍚堝苟鍗曞厓鏍�": "鍚堜降鍎插瓨鏍�",
+    "瑙e紑鍗曞厓鏍�": "瑙i枊鍎插瓨鏍�",
+    "鏉″舰鐮佺敓鎴愬け璐�": "姊濈⒓鐢熸垚澶辨晽",
+    "璇锋鏌� hiprint.init 鐨� provider 鏄惁閰嶇疆浜�": "璜嬫鏌� hiprint.init 鐨� provider 鏄惁閰嶇疆浜�",
+    "宸茬Щ闄�'tableCustom',璇锋浛鎹娇鐢�'table'璇︽儏瑙佹洿鏂拌褰�": "宸茬Щ闄�'tableCustom',璜嬫浛鎻涗娇鐢�'table'瑭虫儏瑕嬫洿鏂拌閷�",
+    "纭畾": "纰哄畾",
+    "鍒犻櫎": "鍒櫎",
+    "杩炴帴瀹㈡埛绔け璐�": "閫f帴瀹㈡埗绔け鏁�",
+    "鍩虹": "鍩虹",
+    "杈规": "閭婃",
+    "鍒�": "鍒�",
+    "楂樼骇": "楂樼礆",
+    "闈㈡澘鎺掑垪": "闈㈡澘鎺掑垪",
+    "鎺掑垪鏂瑰紡": "鎺掑垪鏂瑰紡",
+    "鍨傜洿闂磋窛%s": "鍨傜洿闁撹窛%s",
+    "姘村钩闂磋窛%s": "姘村钩闁撹窛%s",
+    "杈规鍦嗚": "閭婃鍦撹",
+    "鏄剧ず鐮佸��": "椤ず纰煎��",
+    "褰撳墠闇�瑕侀珮搴�": "鐣跺墠闇�瑕侀珮搴�"
+}
diff --git a/src/i18n/de.json b/src/i18n/de.json
new file mode 100644
index 0000000..f55859f
--- /dev/null
+++ b/src/i18n/de.json
@@ -0,0 +1,251 @@
+{
+  "璇烽�夋嫨瀛楁": "Bitte Feld ausw盲hlen",
+  "璁℃暟": "Anzahl",
+  "鍚堣": "Summe",
+  "骞冲潎鍊�": "Durchschnitt",
+  "鏈�灏忓��": "Min",
+  "鏈�澶у��": "Max",
+  "姝ゆ牸寮忎笉鏀寔璇ユ枃鏈�": "Dieses Format unterst眉tzt diesen Text nicht",
+  "浜岀淮鐮佺敓鎴愬け璐�": "QR-Code Generierung fehlgeschlagen",
+  "瀛椾綋琛岄珮": "Schriftzeilenh枚he",
+  "榛樿": "Standard",
+  "瀛椾綋": "Schriftart",
+  "瀹嬩綋": "SimSun",
+  "寰蒋闆呴粦": "Microsoft YaHei",
+  "瀛椾綋澶у皬": "Schriftgr枚脽e",
+  "瀛椾綋绮楃粏": "Schriftst盲rke",
+  "鏇寸粏": "Feiner",
+  "绮椾綋": "Fett",
+  "绮椾綋+": "Fetter",
+  "瀛楅棿璺�": "Zeilenabstand",
+  "宸﹀彸瀵归綈": "Blocksatz",
+  "灞呭乏": "Linksb眉ndig",
+  "灞呬腑": "Zentriert",
+  "灞呭彸": "Rechtsb眉ndig",
+  "涓ょ瀵归綈": "Blocksatz",
+  "鏍囬鏄剧ず闅愯棌": "Titelanzeige",
+  "鏄剧ず": "Anzeigen",
+  "闅愯棌": "Ausblenden",
+  "琛ㄦ牸杈规": "Tabellenrahmen",
+  "鏈夎竟妗�": "Ja",
+  "鏃犺竟妗�": "Nein",
+  "琛ㄥご杈规": "Kopfrahmen",
+  "宸﹁竟妗�": "Links",
+  "鍙宠竟妗�": "Rechts",
+  "宸﹀彸杈规": "Links & Rechts",
+  "涓婅竟妗�": "Oben",
+  "涓嬭竟妗�": "Unten",
+  "涓婁笅杈规": "Oben & Unten",
+  "琛ㄥご鍗曞厓鏍艰竟妗�": "Kopfzel-lenrahmen",
+  "琛ㄥ熬杈规": "Fu脽zeilenrahmen",
+  "琛ㄥ熬鍗曞厓鏍艰竟妗�": "Fu脽zellenrahmen",
+  "琛ㄥご琛岄珮": "Kopfzeilenh枚he",
+  "琛ㄥご瀛椾綋澶у皬": "Kopfschriftgr枚脽e",
+  "琛ㄥご瀛椾綋绮楃粏": "Kopfschriftst盲rke",
+  "琛ㄤ綋鍗曞厓鏍艰竟妗�": "Zellenrahmen",
+  "琛ㄤ綋琛岄珮": "Zeilenh枚he",
+  "琛ㄥご鑳屾櫙": "Kopfzeilen-hintergrund",
+  "绾垮": "Linienbreite",
+  "杈规澶у皬": "Rahmenbreite",
+  "鏉″舰鐮佹牸寮�": "Strichcodetyp",
+  "鍟嗗搧鏉$爜": "Waren-Strichcode",
+  "鏉″舰鐮�": "Strichcode",
+  "鐗╂祦": "Logistik",
+  "閭斂鍜屽揩閫掔紪鐮�": "Post- und Kuriercode",
+  "鍖荤枟浜у搧缂栫爜": "Medizinproduktcode",
+  "涓嶅父鐢ㄧ紪鐮�": "Ungew枚hnlicher Code",
+  "闄勫姞缁勪欢": "Zus盲tzliche Komponente",
+  "瀹為獙缂栫爜": "Experimenteller Code",
+  "鏉$爜绫诲瀷": "Strichcodetyp",
+  "浜岀淮鐮佺被鍨�": "QR-Code-Typ",
+  "浜岀淮鐮佸閿欑巼": "QR-Code-Fehlerkorrektur",
+  "瀛椾綋棰滆壊": "Schriftfarbe",
+  "鏂囨湰淇グ": "Textdekoration",
+  "涓嬪垝绾�": "Unterstrichen",
+  "涓婂垝绾�": "脺berstrichen",
+  "绌挎绾�": "Durchgestrichen",
+  "瀛楁鍚�": "Feldname",
+  "璇疯緭鍏ュ瓧娈靛悕": "Bitte Feldname eingeben",
+  "鏍囬": "Titel",
+  "璇疯緭鍏ユ爣棰�": "Bitte Titel eingeben",
+  "娴嬭瘯鏁版嵁": "Testdaten",
+  "浠呭瓧娈靛悕绉板瓨鍦ㄦ椂鏈夋晥": "Nur g眉ltig, wenn Feldnamen vorhanden",
+  "浣嶇疆鍧愭爣": "Positionskoordinate",
+  "X浣嶇疆(宸�)": "X-Position (links)",
+  "Y浣嶇疆(涓�)": "Y-Position (oben)",
+  "鍚屾": "Synchronisieren",
+  "涓嶅悓姝�": "Nicht synchronisieren",
+  "瀹介珮澶у皬": "Breite & H枚he",
+  "瀹�": "Breite",
+  "楂�": "H枚he",
+  "鍥剧墖鍦板潃": "Bild-URL",
+  "璇疯緭鍏ュ浘鐗囧湴鍧�": "Bitte Bild-URL eingeben",
+  "閫夋嫨": "Ausw盲hlen",
+  "鍥剧墖缂╂斁": "Bildskalierung",
+  "绛夋瘮": "Proportional",
+  "瑁佸垏": "Zuschneiden",
+  "濉厖": "Auff眉llen",
+  "鍘熷灏哄": "Originalgr枚脽e",
+  "棰滆壊": "Farbe",
+  "杈规棰滆壊": "Rahmenfarbe",
+  "姘村嵃鍔熻兘": "Wasserzeichen",
+  "姘村嵃鍐呭": "Wasserzeicheninhalt",
+  "鏃嬭浆瑙掑害": "Drehwinkel",
+  "姘村钩瀵嗗害": "Horizontale Dichte",
+  "鍨傜洿瀵嗗害": "Vertikale Dichte",
+  "姘村嵃鏃堕棿": "Wasserzeichenzeit",
+  "鏃堕棿鏍煎紡": "Zeitformat",
+  "椤电爜鏍煎紡": "Seitenzahlformat",
+  "鏄剧ず椤电爜": "Seitenzahl anzeigen",
+  "椤电爜缁帓": "Seitenzahl fortsetzen",
+  "缁帓": "Fortsetzen",
+  "閲嶆帓": "Zur眉cksetzen",
+  "姣忚缂╄繘": "Einr眉ckung",
+  "鏄剧ず瑙勫垯": "Anzeigeregel",
+  "濮嬬粓闅愯棌": "Immer ausblenden",
+  "棣栭〉": "Erste Seite",
+  "濂囨暟椤�": "Ungerade Seiten",
+  "鍋舵暟椤�": "Gerade Seiten",
+  "灏鹃〉": "Letzte Seite",
+  "寮哄埗鍒嗛〉": "Seitenumbruch erzwingen",
+  "鏄�": "Ja",
+  "鍚�": "Nein",
+  "鎵撳嵃瑙勫垯": "Druckregel",
+  "淇濇寔濂囨暟": "Ungerade beibehalten",
+  "淇濇寔鍋舵暟": "Gerade beibehalten",
+  "鍒嗛〉瑙勫垯": "Seitenumbruchregel",
+  "涓嶅垎椤�": "Kein Seitenumbruch",
+  "绉婚櫎娈佃惤宸︿晶绌虹櫧": "Linken Freiraum entfernen",
+  "绉婚櫎": "Entfernen",
+  "涓嶇Щ闄�": "Nicht entfernen",
+  "棣栭〉椤靛熬": "Fu脽zeile erste Seite",
+  "灏鹃〉椤靛熬": "Fu脽zeile letzte Seite",
+  "鍋舵暟椤甸〉灏�": "Fu脽zeile gerade Seiten",
+  "濂囨暟椤甸〉灏�": "Fu脽zeile ungerade Seiten",
+  "浣嶇疆鍥哄畾": "Feste Position",
+  "鎷栧姩鏂瑰悜": "Zugrichtung",
+  "妯悜": "Horizontal",
+  "绔栧悜": "Vertikal",
+  "宸﹀亸绉�": "Linker Versatz",
+  "鍋忕Щ閲�": "Versatz",
+  "鏈�浣庨珮搴�": "Mindesth枚he",
+  "鏂囨湰杩囩煭鎴栦负绌烘椂鐨勯珮搴�": "H枚he bei zu kurzem oder leerem Text",
+  "闅愯棌瑙勫垯": "Ausblendregel",
+  "琛ㄤ綋琛岃竟妗�": "Zeilenrahmen",
+  "鍏冪礌灞傜骇": "Z-Index",
+  "杈规璁剧疆": "Rahmeneinstellungen",
+  "瀹炵嚎": "Durchgezogen",
+  "铏氱嚎": "Gestrichelt",
+  "宸﹀唴杈硅窛": "Linker Abstand",
+  "涓婂唴杈硅窛": "Oberer Abstand",
+  "鍙冲唴杈硅窛": "Rechter Abstand",
+  "涓嬪唴杈硅窛": "Unterer Abstand",
+  "鏍峰紡": "Stil",
+  "杈规鏍峰紡": "Rahmenstil",
+  "闀胯櫄绾�": "Lang gestrichelt",
+  "鐭櫄绾�": "Kurz gestrichelt",
+  "鑳屾櫙棰滆壊": "Hintergrundfarbe",
+  "绾稿紶鏂瑰悜(浠呰嚜瀹氫箟绾歌川鏈夋晥)": "Papierausrichtung (nur benutzerdefiniertes Papier)",
+  "绾靛悜": "Hochformat",
+  "涓婁笅瀵归綈": "Vertikale Ausrichtung",
+  "鍨傜洿灞呬腑": "Vertikal zentriert",
+  "搴曢儴": "Unten",
+  "鏂囨湰鎹㈣": "Textumbruch",
+  "涓嶆崲琛�": "Kein Umbruch",
+  "涓嶆崲琛�&闅愯棌": "Kein Umbruch & ausbl.",
+  "涓嶆崲琛�&鐪佺暐": "Kein Umbruch & Ausl.",
+  "鎵撳嵃绫诲瀷": "Drucktyp",
+  "鏂囨湰": "Text",
+  "浜岀淮鐮�": "QR-Code",
+  "瀛楁绫诲瀷": "Feldtyp",
+  "榛樿(鏂囨湰)": "Standard (Text)",
+  "搴忓彿": "Index",
+  "鍥剧墖": "Bild",
+  "鍗曞厓鏍奸珮搴�": "Zellenh枚he",
+  "鏉″舰鐮併�佷簩缁寸爜浠ュ強鍥剧墖鏈夋晥": "Strichcode, QR-Code und Bild g眉ltig",
+  "搴曢儴鑱氬悎鏍囬": "Zusammenfassungstitel",
+  "搴曢儴鑱氬悎鏂囨湰": "Zusammenfassungstext",
+  "鑱氬悎绫诲瀷": "Zusammenfassungstyp",
+  "搴曢儴鑱氬悎鍚堝苟鍒楁暟": "Zusammenfassungsspalten",
+  "鍚堝苟鍒楁暟": "Spalten verbinden",
+  "搴曢儴鑱氬悎绫诲瀷宸﹀彸瀵归綈": "Zusammenfassungsausrichtung",
+  "鏁存暟": "Ganzzahl",
+  "淇濈暀%s浣�": "Behalte %s Dezimalstellen",
+  "搴曢儴鑱氬悎灏忔暟": "Zusammenfassungsdezimalstellen",
+  "杞ぇ灏忓啓": "Gro脽-/Kleinschreibung",
+  "搴曢儴鑱氬悎绫诲瀷": "Zusammenfassungstyp",
+  "涓嶈仛鍚�": "Keine Zusammenfassung",
+  "浠呮枃鏈�": "Nur Text",
+  "椤堕儴鍋忕Щ": "oberer Versatz",
+  "涓�琛屽缁�": "Mehrere Gruppen pro Zeile",
+  "涓�琛屼簩鍒�": "Eine Zeile zwei Spalten",
+  "涓�琛屼笁鍒�": "Eine Zeile drei Spalten",
+  "涓�琛屽洓鍒�": "Eine Zeile vier Spalten",
+  "涓�琛屽缁勯棿闅�": "Abstand mehrerer Gruppen pro Zeile",
+  "琛ㄦ牸澶存樉绀�": "Tabellenkopf Anzeige",
+  "姣忛〉鏄剧ず": "Pro Seite anzeigen",
+  "棣栭〉鏄剧ず": "Auf erster Seite anzeigen",
+  "涓嶆樉绀�": "Nicht anzeigen",
+  "鏁版嵁绫诲瀷": "Datentyp",
+  "鏃ユ湡鏃堕棿": "DatumUhrzeit",
+  "甯冨皵": "Boolesch",
+  "鏍煎紡": "Format",
+  "鏍煎紡鍖栧嚱鏁�": "Formatierungsfunktion",
+  "鏍峰紡鍑芥暟": "Style-Funktion",
+  "琛�/鍒楀悎骞跺嚱鏁�": "Zeile/Spalte zusammenf眉hren",
+  "璺ㄩ〉鍚堝苟鏄惁娓呴櫎": "Seitenumbruch aufheben",
+  "琛ㄦ牸鑴氬嚱鏁�": "Tabellenfu脽funktion",
+  "鍒嗙粍瀛楁鍑芥暟": "Gruppenfeld-Funktion",
+  "鍒嗙粍澶存牸寮忓寲鍑芥暟": "Gruppenkopf-Formatierungsfunktion",
+  "鍒嗙粍澶翠俊鎭�": "Gruppenkopfinfo",
+  "鍒嗙粍鑴氭牸寮忓寲鍑芥暟": "Gruppenfu脽-Formatierungsfunktion",
+  "鍒嗙粍鑴氫俊鎭�": "Gruppenfu脽info",
+  "澶氱粍琛ㄦ牸鑴氬嚱鏁�": "Mehrere Gruppen Tabellenfu脽funktion",
+  "琛屾牱寮忓嚱鏁�": "Zeilenstilfunktion",
+  "鍗曞厓鏍煎乏鍙冲榻�": "Zellenausrichtung",
+  "鍗曞厓鏍间笂涓嬪榻�": "Zellenvertikale Ausrichtung",
+  "涓�": "Oben",
+  "涓�": "Mitte",
+  "琛ㄦ牸澶村崟鍏冩牸宸﹀彸瀵归綈": "Tabellenkopf Ausrichtung",
+  "鍗曞厓鏍兼牱寮忓嚱鏁�": "Zellenstilfunktion",
+  "琛ㄦ牸澶存牱寮忓嚱鏁�": "Tabellenkopf-Stilfunktion",
+  "鍗曞厓鏍兼牸寮忓寲鍑芥暟": "Zellenformatierungsfunktion",
+  "鍗曞厓鏍兼覆鏌撳嚱鏁�": "Zellen-Rendering-Funktion",
+  "鑷姩琛ュ叏": "Auto Vervollst盲ndigen",
+  "姣忛〉鏈�澶ц鏁�": "Max Zeilen pro Seite",
+  "琛ㄦ牸鑴氭樉绀�": "Tabellenfu脽anzeige",
+  "鏈�鍚庢樉绀�": "Auf letzter Seite anzeigen",
+  "娌℃湁瓒冲绌洪棿杩涜琛ㄦ牸鍒嗛〉锛岃璋冩暣椤电湁/椤佃剼绾�": "Nicht gen眉gend Platz f眉r die Tabellenseitenumbr眉che, bitte Kopf-/Fu脽zeile anpassen",
+  "娌℃湁瓒冲绌洪棿,鏄剧ず涓嬫柟鍐呭, 鍙垎椤甸珮搴�": "Nicht gen眉gend Platz, Inhalt unten anzeigen, H枚he kann umgebrochen werden:",
+  "鍒楀睘鎬�": "Spalteneigenschaft",
+  "鍦ㄤ笂鏂规彃鍏ヨ": "Zeile oben einf眉gen",
+  "鍦ㄤ笅鏂规彃鍏ヨ": "Zeile unten einf眉gen",
+  "鍚戝乏鏂规彃鍏ュ垪": "Spalte links einf眉gen",
+  "鍚戝彸鏂规彃鍏ュ垪": "Spalte rechts einf眉gen",
+  "鍒犻櫎琛�": "Zeile l枚schen",
+  "鍒犻櫎鍒�": "Spalte l枚schen",
+  "瀵归綈": "Ausrichtung",
+  "宸�": "Links",
+  "宸﹀彸灞呬腑": "Zentriert",
+  "鍙�": "Rechts",
+  "涓�": "Unten",
+  "鍚堝苟鍗曞厓鏍�": "Zelle verbinden",
+  "瑙e紑鍗曞厓鏍�": "Zellenverbindung aufheben",
+  "鏉″舰鐮佺敓鎴愬け璐�": "Strichcode-Generierung fehlgeschlagen",
+  "璇锋鏌� hiprint.init 鐨� provider 鏄惁閰嶇疆浜�": "Bitte 眉berpr眉fen, ob der Anbieter von hiprint.init konfiguriert wurde",
+  "宸茬Щ闄�'tableCustom',璇锋浛鎹娇鐢�'table'璇︽儏瑙佹洿鏂拌褰�": "'TableCustom' wurde entfernt, bitte durch 'table' ersetzen, Details siehe 脛nderungsprotokoll",
+  "纭畾": "Best盲tigen",
+  "鍒犻櫎": "L枚schen",
+  "杩炴帴瀹㈡埛绔け璐�": "Verbindung zum Client fehlgeschlagen",
+  "鍩虹": "Grundlegend",
+  "杈规": "Rahmen",
+  "鍒�": "Spalte",
+  "楂樼骇": "Erweitert",
+  "闈㈡澘鎺掑垪": "Panelanordnung",
+  "鎺掑垪鏂瑰紡": "Anordnungsart",
+  "鍨傜洿闂磋窛%s": "Vertikaler Abstand %s",
+  "姘村钩闂磋窛%s": "Horizontaler Abstand %s",
+  "杈规鍦嗚": "Abgerundete Ecken",
+  "鏄剧ず鐮佸��": "Anzeigecode",
+  "褰撳墠闇�瑕侀珮搴�": "Aktuelle ben枚tigte H枚he"
+}
diff --git a/src/i18n/en.json b/src/i18n/en.json
new file mode 100644
index 0000000..9ed81ba
--- /dev/null
+++ b/src/i18n/en.json
@@ -0,0 +1,252 @@
+{
+  "璇烽�夋嫨瀛楁": "Please select field",
+  "璁℃暟": "Count",
+  "鍚堣": "Sum",
+  "骞冲潎鍊�": "Average",
+  "鏈�灏忓��": "Min",
+  "鏈�澶у��": "Max",
+  "姝ゆ牸寮忎笉鏀寔璇ユ枃鏈�": "This format does not support this text",
+  "浜岀淮鐮佺敓鎴愬け璐�": "QR code generation failed",
+  "瀛椾綋琛岄珮": "Font Height",
+  "榛樿": "Default",
+  "瀛椾綋": "Font",
+  "瀹嬩綋": "SimSun",
+  "寰蒋闆呴粦": "Microsoft YaHei",
+  "瀛椾綋澶у皬": "Font Size",
+  "瀛椾綋绮楃粏": "Font Weight",
+  "鏇寸粏": "Lighter",
+  "绮椾綋": "Bold",
+  "绮椾綋+": "Bolder",
+  "瀛楅棿璺�": "Letter Spacing",
+  "宸﹀彸瀵归綈": "Justified",
+  "灞呭乏": "Left",
+  "灞呬腑": "Center",
+  "灞呭彸": "Right",
+  "涓ょ瀵归綈": "Justified",
+  "鏍囬鏄剧ず闅愯棌": "Title Display",
+  "鏄剧ず": "Show",
+  "闅愯棌": "Hide",
+  "琛ㄦ牸杈规": "Table Border",
+  "鏈夎竟妗�": "Yes",
+  "鏃犺竟妗�": "No",
+  "琛ㄥご杈规": "Header Border",
+  "宸﹁竟妗�": "Left",
+  "鍙宠竟妗�": "Right",
+  "宸﹀彸杈规": "Left & Right",
+  "涓婅竟妗�": "Top",
+  "涓嬭竟妗�": "Bottom",
+  "涓婁笅杈规": "Top & Bottom",
+  "琛ㄥご鍗曞厓鏍艰竟妗�": "Header Cell Border",
+  "琛ㄥ熬杈规": "Footer Border",
+  "琛ㄥ熬鍗曞厓鏍艰竟妗�": "Footer Cell Border",
+  "琛ㄥご琛岄珮": "Header Row Height",
+  "琛ㄥご瀛椾綋澶у皬": "Header Font Size",
+  "琛ㄥご瀛椾綋绮楃粏": "Header Font Weight",
+  "琛ㄤ綋鍗曞厓鏍艰竟妗�": "Body Cell Border",
+  "琛ㄤ綋琛岄珮": "Body Row Height",
+  "琛ㄥご鑳屾櫙": "Header Background",
+  "绾垮": "Line Width",
+  "杈规澶у皬": "Border Size",
+  "鏉″舰鐮佹牸寮�": "Barcode Type",
+  "鍟嗗搧鏉$爜": "Goods Barcode",
+  "鏉″舰鐮�": "Barcode",
+  "鐗╂祦": "Logistics",
+  "閭斂鍜屽揩閫掔紪鐮�": "Postal and Courier Code",
+  "鍖荤枟浜у搧缂栫爜": "Medical Product Code",
+  "涓嶅父鐢ㄧ紪鐮�": "Uncommon Code",
+  "闄勫姞缁勪欢": "Additional Component",
+  "瀹為獙缂栫爜": "Experimental Code",
+  "鏉$爜绫诲瀷": "Barcode Type",
+  "浜岀淮鐮佺被鍨�": "QRCode Type",
+  "浜岀淮鐮佸閿欑巼": "QRCode ErrorCorrectionLevel",
+  "瀛椾綋棰滆壊": "Font Color",
+  "鏂囨湰淇グ": "Text Decoration",
+  "涓嬪垝绾�": "Underline",
+  "涓婂垝绾�": "Overline",
+  "绌挎绾�": "Line Through",
+  "瀛楁鍚�": "Field",
+  "璇疯緭鍏ュ瓧娈靛悕": "Please enter field",
+  "鏍囬": "Title",
+  "璇疯緭鍏ユ爣棰�": "Please enter title",
+  "娴嬭瘯鏁版嵁": "Test Data",
+  "浠呭瓧娈靛悕绉板瓨鍦ㄦ椂鏈夋晥": "Only valid when field name exists",
+  "浣嶇疆鍧愭爣": "Position Coordinate",
+  "X浣嶇疆(宸�)": "X Position(Left)",
+  "Y浣嶇疆(涓�)": "Y Position(Top)",
+  "鍚屾": "Sync",
+  "涓嶅悓姝�": "Unsync",
+  "瀹介珮澶у皬": "Width & Height",
+  "瀹�": "Width",
+  "楂�": "Height",
+  "鍥剧墖鍦板潃": "Image URL",
+  "璇疯緭鍏ュ浘鐗囧湴鍧�": "Please enter image URL",
+  "閫夋嫨": "Choose",
+  "鍥剧墖缂╂斁": "Image Scale",
+  "绛夋瘮": "Proportional",
+  "瑁佸垏": "Crop",
+  "濉厖": "Fill",
+  "鍘熷灏哄": "Original Size",
+  "棰滆壊": "Color",
+  "杈规棰滆壊": "Border Color",
+  "姘村嵃鍔熻兘": "Watermark",
+  "姘村嵃鍐呭": "Watermark Content",
+  "鏃嬭浆瑙掑害": "Rotate Angle",
+  "姘村钩瀵嗗害": "Horizontal Density",
+  "鍨傜洿瀵嗗害": "Vertical Density",
+  "姘村嵃鏃堕棿": "Watermark Time",
+  "鏃堕棿鏍煎紡": "Time Format",
+  "椤电爜鏍煎紡": "Page Number Format",
+  "鏄剧ず椤电爜": "Show Page Number",
+  "椤电爜缁帓": "Page Number Continue",
+  "缁帓": "Continue",
+  "閲嶆帓": "Reset",
+  "姣忚缂╄繘": "Indent",
+  "鏄剧ず瑙勫垯": "Display Rule",
+  "濮嬬粓闅愯棌": "Always Hide",
+  "棣栭〉": "First Page",
+  "濂囨暟椤�": "Odd Page",
+  "鍋舵暟椤�": "Even Page",
+  "灏鹃〉": "Last Page",
+  "寮哄埗鍒嗛〉": "Force Page Break",
+  "鏄�": "Yes",
+  "鍚�": "No",
+  "鎵撳嵃瑙勫垯": "Print Rule",
+  "淇濇寔濂囨暟": "Keep Odd",
+  "淇濇寔鍋舵暟": "Keep Even",
+  "鍒嗛〉瑙勫垯": "Page Break Rule",
+  "涓嶅垎椤�": "No Page Break",
+  "绉婚櫎娈佃惤宸︿晶绌虹櫧": "Remove Left Blank",
+  "绉婚櫎": "Remove",
+  "涓嶇Щ闄�": "No Remove",
+  "棣栭〉椤靛熬": "First Page",
+  "灏鹃〉椤靛熬": "Last Page",
+  "鍋舵暟椤甸〉灏�": "Even Page",
+  "濂囨暟椤甸〉灏�": "Odd Page",
+  "浣嶇疆鍥哄畾": "Fixed Position",
+  "鎷栧姩鏂瑰悜": "Drag Direction",
+  "妯悜": "Horizontal",
+  "绔栧悜": "Vertical",
+  "宸﹀亸绉�": "Left Offset",
+  "鍋忕Щ閲�": "Offset",
+  "鏈�浣庨珮搴�": "Min Height",
+  "鏂囨湰杩囩煭鎴栦负绌烘椂鐨勯珮搴�": "Height when text is too short or empty",
+  "闅愯棌瑙勫垯": "Hide Rule",
+  "琛ㄤ綋琛岃竟妗�": "Body Row Border",
+  "鍏冪礌灞傜骇": "Zindex",
+  "杈规璁剧疆": "Border Setting",
+  "瀹炵嚎": "Solid",
+  "铏氱嚎": "Dashed",
+  "宸﹀唴杈硅窛": "Left Padding",
+  "涓婂唴杈硅窛": "Top Padding",
+  "鍙冲唴杈硅窛": "Right Padding",
+  "涓嬪唴杈硅窛": "Bottom Padding",
+  "鏍峰紡": "Style",
+  "杈规鏍峰紡": "Border Style",
+  "闀胯櫄绾�": "Long Dashed",
+  "鐭櫄绾�": "Short Dashed",
+  "鑳屾櫙棰滆壊": "Background Color",
+  "绾稿紶鏂瑰悜(浠呰嚜瀹氫箟绾歌川鏈夋晥)": "Paper Orientation (Only Custom Paper)",
+  "绾靛悜": "Portrait",
+  "涓婁笅瀵归綈": "Vertical Align",
+  "鍨傜洿灞呬腑": "Middle",
+  "搴曢儴": "Bottom",
+  "鏂囨湰鎹㈣": "Text Wrap",
+  "涓嶆崲琛�": "No Wrap",
+  "涓嶆崲琛�&闅愯棌": "No Wrap & Hide",
+  "涓嶆崲琛�&鐪佺暐": "No Wrap & Ellipsis",
+  "鎵撳嵃绫诲瀷": "Print Type",
+  "鏂囨湰": "Text",
+  "浜岀淮鐮�": "QRCode",
+  "瀛楁绫诲瀷": "Field Type",
+  "榛樿(鏂囨湰)": "Default(Text)",
+  "搴忓彿": "Index",
+  "鍥剧墖": "Image",
+  "鍗曞厓鏍奸珮搴�": "Cell Height",
+  "鏉″舰鐮併�佷簩缁寸爜浠ュ強鍥剧墖鏈夋晥": "Barcode, QRCode and Image are valid",
+  "搴曢儴鑱氬悎鏍囬": "Summary Title",
+  "搴曢儴鑱氬悎鏂囨湰": "Summary Text",
+  "鑱氬悎绫诲瀷": "Summary Type",
+  "搴曢儴鑱氬悎鍚堝苟鍒楁暟": "Summary Colspan",
+  "鍚堝苟鍒楁暟": "Colspan",
+  "搴曢儴鑱氬悎绫诲瀷宸﹀彸瀵归綈": "Summary Align",
+  "鏁存暟": "Integer",
+  "淇濈暀%s浣�": "Keep %s Decimal",
+  "搴曢儴鑱氬悎灏忔暟": "Summary Decimal",
+  "搴曢儴鑱氬悎鏍煎紡鍖栧嚱鏁�": "Summary Format Function",
+  "杞ぇ灏忓啓": "UpperCase or LowerCase",
+  "搴曢儴鑱氬悎绫诲瀷": "Summary Type",
+  "涓嶈仛鍚�": "No Summary",
+  "浠呮枃鏈�": "Text Only",
+  "椤堕儴鍋忕Щ": "Top Offset",
+  "涓�琛屽缁�": "Multi Group",
+  "涓�琛屼簩鍒�": "One Line Two Column",
+  "涓�琛屼笁鍒�": "One Line Three Column",
+  "涓�琛屽洓鍒�": "One Line Four Column",
+  "涓�琛屽缁勯棿闅�": "Multi Group Spacing",
+  "琛ㄦ牸澶存樉绀�": "Table Header Display",
+  "姣忛〉鏄剧ず": "Display Per Page",
+  "棣栭〉鏄剧ず": "Display On First Page",
+  "涓嶆樉绀�": "No Display",
+  "鏁版嵁绫诲瀷": "Data Type",
+  "鏃ユ湡鏃堕棿": "DateTime",
+  "甯冨皵": "Boolean",
+  "鏍煎紡": "Format",
+  "鏍煎紡鍖栧嚱鏁�": "Format Function",
+  "鏍峰紡鍑芥暟": "Style Function",
+  "琛�/鍒楀悎骞跺嚱鏁�": "Row/Column Merge Function",
+  "璺ㄩ〉鍚堝苟鏄惁娓呴櫎": "Clear Page Break Merge",
+  "琛ㄦ牸鑴氬嚱鏁�": "Table Footer Function",
+  "鍒嗙粍瀛楁鍑芥暟": "Group Field Function",
+  "鍒嗙粍澶存牸寮忓寲鍑芥暟": "Group Header Format Function",
+  "鍒嗙粍澶翠俊鎭�": "Group Header Info",
+  "鍒嗙粍鑴氭牸寮忓寲鍑芥暟": "Group Footer Format Function",
+  "鍒嗙粍鑴氫俊鎭�": "Group Footer Info",
+  "澶氱粍琛ㄦ牸鑴氬嚱鏁�": "Multi Group Table Footer Function",
+  "琛屾牱寮忓嚱鏁�": "Row Style Function",
+  "鍗曞厓鏍煎乏鍙冲榻�": "Cell Align",
+  "鍗曞厓鏍间笂涓嬪榻�": "Cell Vertical Align",
+  "涓�": "Top",
+  "涓�": "Middle",
+  "琛ㄦ牸澶村崟鍏冩牸宸﹀彸瀵归綈": "Header Cell Align",
+  "鍗曞厓鏍兼牱寮忓嚱鏁�": "Cell Style Function",
+  "琛ㄦ牸澶存牱寮忓嚱鏁�": "Header Style Function",
+  "鍗曞厓鏍兼牸寮忓寲鍑芥暟": "Cell Format Function",
+  "鍗曞厓鏍兼覆鏌撳嚱鏁�": "Cell Render Function",
+  "鑷姩琛ュ叏": "Auto Complete",
+  "姣忛〉鏈�澶ц鏁�": "Max Rows Per Page",
+  "琛ㄦ牸鑴氭樉绀�": "Table Footer Display",
+  "鏈�鍚庢樉绀�": "Display On Last Page",
+  "娌℃湁瓒冲绌洪棿杩涜琛ㄦ牸鍒嗛〉锛岃璋冩暣椤电湁/椤佃剼绾�": "There is not enough space for table pagination, please adjust the header/footer line",
+  "娌℃湁瓒冲绌洪棿,鏄剧ず涓嬫柟鍐呭, 鍙垎椤甸珮搴�": "Not enough space, display the content below, the height can be paginated:",
+  "鍒楀睘鎬�": "Column Property",
+  "鍦ㄤ笂鏂规彃鍏ヨ": "Insert Row Above",
+  "鍦ㄤ笅鏂规彃鍏ヨ": "Insert Row Below",
+  "鍚戝乏鏂规彃鍏ュ垪": "Insert Column Left",
+  "鍚戝彸鏂规彃鍏ュ垪": "Insert Column Right",
+  "鍒犻櫎琛�": "Delete Row",
+  "鍒犻櫎鍒�": "Delete Column",
+  "瀵归綈": "Align",
+  "宸�": "Left",
+  "宸﹀彸灞呬腑": "Center",
+  "鍙�": "Right",
+  "涓�": "Bottom",
+  "鍚堝苟鍗曞厓鏍�": "Merge Cell",
+  "瑙e紑鍗曞厓鏍�": "Unmerge Cell",
+  "鏉″舰鐮佺敓鎴愬け璐�": "Barcode generation failed",
+  "璇锋鏌� hiprint.init 鐨� provider 鏄惁閰嶇疆浜�": "Please check if the provider of hiprint.init is configured",
+  "宸茬Щ闄�'tableCustom',璇锋浛鎹娇鐢�'table'璇︽儏瑙佹洿鏂拌褰�": "The 'tableCustom' has been removed, please replace it with 'table', see the update log for details",
+  "纭畾": "Confirm",
+  "鍒犻櫎": "Delete",
+  "杩炴帴瀹㈡埛绔け璐�": "Failed to connect to the client",
+  "鍩虹": "Basic",
+  "杈规": "Border",
+  "鍒�": "Column",
+  "楂樼骇": "Advanced",
+  "闈㈡澘鎺掑垪": "Panel Arrangement",
+  "鎺掑垪鏂瑰紡": "Arrangement Method",
+  "鍨傜洿闂磋窛%s": "Vertical Spacing %s",
+  "姘村钩闂磋窛%s": "Horizontal Spacing %s",
+  "杈规鍦嗚": "Border Radius",
+  "鏄剧ず鐮佸��": "Display Code value",
+  "褰撳墠闇�瑕侀珮搴�": "Current Required Height"
+}
diff --git a/src/i18n/es.json b/src/i18n/es.json
new file mode 100644
index 0000000..d926270
--- /dev/null
+++ b/src/i18n/es.json
@@ -0,0 +1,251 @@
+{
+    "璇烽�夋嫨瀛楁": "Por favor, selecciona un campo",
+    "璁℃暟": "Recuento",
+    "鍚堣": "Suma",
+    "骞冲潎鍊�": "Promedio",
+    "鏈�灏忓��": "M铆nimo",
+    "鏈�澶у��": "M谩ximo",
+    "姝ゆ牸寮忎笉鏀寔璇ユ枃鏈�": "Este formato no es compatible con este texto",
+    "浜岀淮鐮佺敓鎴愬け璐�": "Error al generar c贸digo QR",
+    "瀛椾綋琛岄珮": "Altura de fuente",
+    "榛樿": "Predeterminado",
+    "瀛椾綋": "Fuente",
+    "瀹嬩綋": "SimSun",
+    "寰蒋闆呴粦": "Microsoft YaHei",
+    "瀛椾綋澶у皬": "Tama帽o de fuente",
+    "瀛椾綋绮楃粏": "Grosor de fuente",
+    "鏇寸粏": "M谩s fino",
+    "绮椾綋": "Negrita",
+    "绮椾綋+": "M谩s negrita",
+    "瀛楅棿璺�": "Espacio entre letras",
+    "宸﹀彸瀵归綈": "Justificado",
+    "灞呭乏": "Izquierda",
+    "灞呬腑": "Centrado",
+    "灞呭彸": "Derecha",
+    "涓ょ瀵归綈": "Justificado",
+    "鏍囬鏄剧ず闅愯棌": "Visualizaci贸n de t铆tulo",
+    "鏄剧ず": "Mostrar",
+    "闅愯棌": "Ocultar",
+    "琛ㄦ牸杈规": "Borde de tabla",
+    "鏈夎竟妗�": "S铆",
+    "鏃犺竟妗�": "No",
+    "琛ㄥご杈规": "Borde de encabezado",
+    "宸﹁竟妗�": "Izquierda",
+    "鍙宠竟妗�": "Derecha",
+    "宸﹀彸杈规": "Izquierda y derecha",
+    "涓婅竟妗�": "Superior",
+    "涓嬭竟妗�": "Inferior",
+    "涓婁笅杈规": "Superior e inferior",
+    "琛ㄥご鍗曞厓鏍艰竟妗�": "Borde de celda de encabezado",
+    "琛ㄥ熬杈规": "Borde de pie de p谩gina",
+    "琛ㄥ熬鍗曞厓鏍艰竟妗�": "Borde de celda de pie de p谩gina",
+    "琛ㄥご琛岄珮": "Altura de fila de encabezado",
+    "琛ㄥご瀛椾綋澶у皬": "Tama帽o de fuente de encabezado",
+    "琛ㄥご瀛椾綋绮楃粏": "Grosor de fuente de encabezado",
+    "琛ㄤ綋鍗曞厓鏍艰竟妗�": "Borde de celda de cuerpo",
+    "琛ㄤ綋琛岄珮": "Altura de fila de cuerpo",
+    "琛ㄥご鑳屾櫙": "Fondo de encabezado",
+    "绾垮": "Ancho de l铆nea",
+    "杈规澶у皬": "Tama帽o de borde",
+    "鏉″舰鐮佹牸寮�": "Tipo de c贸digo de barras",
+    "鍟嗗搧鏉$爜": "C贸digo de barras de producto",
+    "鏉″舰鐮�": "C贸digo de barras",
+    "鐗╂祦": "Log铆stica",
+    "閭斂鍜屽揩閫掔紪鐮�": "C贸digo postal y de mensajer铆a",
+    "鍖荤枟浜у搧缂栫爜": "C贸digo de producto m茅dico",
+    "涓嶅父鐢ㄧ紪鐮�": "C贸digo inusual",
+    "闄勫姞缁勪欢": "Componente adicional",
+    "瀹為獙缂栫爜": "C贸digo experimental",
+    "鏉$爜绫诲瀷": "Tipo de c贸digo de barras",
+    "浜岀淮鐮佺被鍨�": "Tipo de c贸digo QR",
+    "浜岀淮鐮佸閿欑巼": "Nivel de correcci贸n de errores de c贸digo QR",
+    "瀛椾綋棰滆壊": "Color de fuente",
+    "鏂囨湰淇グ": "Decoraci贸n de texto",
+    "涓嬪垝绾�": "Subrayado",
+    "涓婂垝绾�": "Tachado",
+    "绌挎绾�": "Tachado",
+    "瀛楁鍚�": "Nombre de campo",
+    "璇疯緭鍏ュ瓧娈靛悕": "Introduce el nombre del campo",
+    "鏍囬": "T铆tulo",
+    "璇疯緭鍏ユ爣棰�": "Introduce el t铆tulo",
+    "娴嬭瘯鏁版嵁": "Datos de prueba",
+    "浠呭瓧娈靛悕绉板瓨鍦ㄦ椂鏈夋晥": "V谩lido solo cuando existe el nombre de campo",
+    "浣嶇疆鍧愭爣": "Coordenada de posici贸n",
+    "X浣嶇疆(宸�)": "Posici贸n X (izquierda)",
+    "Y浣嶇疆(涓�)": "Posici贸n Y (superior)",
+    "鍚屾": "Sincronizar",
+    "涓嶅悓姝�": "No sincronizar",
+    "瀹介珮澶у皬": "Ancho y alto",
+    "瀹�": "Ancho",
+    "楂�": "Alto",
+    "鍥剧墖鍦板潃": "URL de imagen",
+    "璇疯緭鍏ュ浘鐗囧湴鍧�": "Introduce la URL de la imagen",
+    "閫夋嫨": "Elegir",
+    "鍥剧墖缂╂斁": "Escala de imagen",
+    "绛夋瘮": "Proporcional",
+    "瑁佸垏": "Recortar",
+    "濉厖": "Rellenar",
+    "鍘熷灏哄": "Tama帽o original",
+    "棰滆壊": "Color",
+    "杈规棰滆壊": "Color de borde",
+    "姘村嵃鍔熻兘": "Marca de agua",
+    "姘村嵃鍐呭": "Contenido de la marca de agua",
+    "鏃嬭浆瑙掑害": "脕ngulo de rotaci贸n",
+    "姘村钩瀵嗗害": "Densidad horizontal",
+    "鍨傜洿瀵嗗害": "Densidad vertical",
+    "姘村嵃鏃堕棿": "Hora de la marca de agua",
+    "鏃堕棿鏍煎紡": "Formato de hora",
+    "椤电爜鏍煎紡": "Formato del n煤mero de p谩gina",
+    "鏄剧ず椤电爜": "Mostrar n煤mero de p谩gina",
+    "椤电爜缁帓": "Continuar con el n煤mero de p谩gina",
+    "缁帓": "Continuar",
+    "閲嶆帓": "Reiniciar",
+    "姣忚缂╄繘": "Sangr铆a",
+    "鏄剧ず瑙勫垯": "Regla de visualizaci贸n",
+    "濮嬬粓闅愯棌": "Ocultar siempre",
+    "棣栭〉": "Primera p谩gina",
+    "濂囨暟椤�": "P谩ginas impares",
+    "鍋舵暟椤�": "P谩ginas pares",
+    "灏鹃〉": "脷ltima p谩gina",
+    "寮哄埗鍒嗛〉": "Forzar salto de p谩gina",
+    "鏄�": "S铆",
+    "鍚�": "No",
+    "鎵撳嵃瑙勫垯": "Regla de impresi贸n",
+    "淇濇寔濂囨暟": "Mantener impares",
+    "淇濇寔鍋舵暟": "Mantener pares",
+    "鍒嗛〉瑙勫垯": "Regla de salto de p谩gina",
+    "涓嶅垎椤�": "Sin salto de p谩gina",
+    "绉婚櫎娈佃惤宸︿晶绌虹櫧": "Eliminar espacio en blanco izquierdo",
+    "绉婚櫎": "Eliminar",
+    "涓嶇Щ闄�": "No eliminar",
+    "棣栭〉椤靛熬": "Pie de p谩gina de primera p谩gina",
+    "灏鹃〉椤靛熬": "Pie de p谩gina de 煤ltima p谩gina",
+    "鍋舵暟椤甸〉灏�": "Pie de p谩gina en p谩ginas pares",
+    "濂囨暟椤甸〉灏�": "Pie de p谩gina en p谩ginas impares",
+    "浣嶇疆鍥哄畾": "Posici贸n fija",
+    "鎷栧姩鏂瑰悜": "Direcci贸n de arrastre",
+    "妯悜": "Horizontal",
+    "绔栧悜": "Vertical",
+    "宸﹀亸绉�": "Desplazamiento izquierdo",
+    "鍋忕Щ閲�": "Desplazamiento",
+    "鏈�浣庨珮搴�": "Altura m铆nima",
+    "鏂囨湰杩囩煭鎴栦负绌烘椂鐨勯珮搴�": "Altura cuando el texto es demasiado corto o est谩 vac铆o",
+    "闅愯棌瑙勫垯": "Regla para ocultar",
+    "琛ㄤ綋琛岃竟妗�": "Borde de fila de cuerpo",
+    "鍏冪礌灞傜骇": "脥ndice Z",
+    "杈规璁剧疆": "Ajustes de borde",
+    "瀹炵嚎": "S贸lido",
+    "铏氱嚎": "Discontinuo",
+    "宸﹀唴杈硅窛": "Relleno izquierdo",
+    "涓婂唴杈硅窛": "Relleno superior",
+    "鍙冲唴杈硅窛": "Relleno derecho",
+    "涓嬪唴杈硅窛": "Relleno inferior",
+    "鏍峰紡": "Estilo",
+    "杈规鏍峰紡": "Estilo de borde",
+    "闀胯櫄绾�": "Discontinuo largo",
+    "鐭櫄绾�": "Discontinuo corto",
+    "鑳屾櫙棰滆壊": "Color de fondo",
+    "绾稿紶鏂瑰悜(浠呰嚜瀹氫箟绾歌川鏈夋晥)": "Orientaci贸n del papel (solo papel personalizado)",
+    "绾靛悜": "Vertical",
+    "涓婁笅瀵归綈": "Alineaci贸n vertical",
+    "鍨傜洿灞呬腑": "Centrado vertical",
+    "搴曢儴": "Inferior",
+    "鏂囨湰鎹㈣": "Ajuste de texto",
+    "涓嶆崲琛�": "Sin ajuste",
+    "涓嶆崲琛�&闅愯棌": "Sin ajuste y ocultar",
+    "涓嶆崲琛�&鐪佺暐": "Sin ajuste y puntos suspensivos",
+    "鎵撳嵃绫诲瀷": "Tipo de impresi贸n",
+    "鏂囨湰": "Texto",
+    "浜岀淮鐮�": "C贸digo QR",
+    "瀛楁绫诲瀷": "Tipo de campo",
+    "榛樿(鏂囨湰)": "Predeterminado (texto)",
+    "搴忓彿": "脥ndice",
+    "鍥剧墖": "Imagen",
+    "鍗曞厓鏍奸珮搴�": "Altura de celda",
+    "鏉″舰鐮併�佷簩缁寸爜浠ュ強鍥剧墖鏈夋晥": "C贸digo de barras, c贸digo QR e imagen son v谩lidos",
+    "搴曢儴鑱氬悎鏍囬": "T铆tulo de resumen",
+    "搴曢儴鑱氬悎鏂囨湰": "Texto de resumen",
+    "鑱氬悎绫诲瀷": "Tipo de resumen",
+    "搴曢儴鑱氬悎鍚堝苟鍒楁暟": "Columnas combinadas de resumen",
+    "鍚堝苟鍒楁暟": "Columnas combinadas",
+    "搴曢儴鑱氬悎绫诲瀷宸﹀彸瀵归綈": "Alineaci贸n de resumen",
+    "鏁存暟": "Entero",
+    "淇濈暀%s浣�": "Mantener %s decimales",
+    "搴曢儴鑱氬悎灏忔暟": "Decimales en resumen",
+    "杞ぇ灏忓啓": "May煤sculas o min煤sculas",
+    "搴曢儴鑱氬悎绫诲瀷": "Tipo de resumen",
+    "涓嶈仛鍚�": "Sin resumen",
+    "浠呮枃鏈�": "Solo texto",
+    "椤堕儴鍋忕Щ": "Desplazamiento superior",
+    "涓�琛屽缁�": "Varios grupos en una l铆nea",
+    "涓�琛屼簩鍒�": "Una l铆nea dos columnas",
+    "涓�琛屼笁鍒�": "Una l铆nea tres columnas",
+    "涓�琛屽洓鍒�": "Una l铆nea cuatro columnas",
+    "涓�琛屽缁勯棿闅�": "Espaciado de varios grupos en una l铆nea",
+    "琛ㄦ牸澶存樉绀�": "Visualizaci贸n de encabezado de tabla",
+    "姣忛〉鏄剧ず": "Mostrar por p谩gina",
+    "棣栭〉鏄剧ず": "Mostrar en primera p谩gina",
+    "涓嶆樉绀�": "No mostrar",
+    "鏁版嵁绫诲瀷": "Tipo de dato",
+    "鏃ユ湡鏃堕棿": "Fecha y hora",
+    "甯冨皵": "Booleano",
+    "鏍煎紡": "Formato",
+    "鏍煎紡鍖栧嚱鏁�": "Funci贸n de formato",
+    "鏍峰紡鍑芥暟": "Funci贸n de estilo",
+    "琛�/鍒楀悎骞跺嚱鏁�": "Funci贸n combinar fila/columna",
+    "璺ㄩ〉鍚堝苟鏄惁娓呴櫎": "驴Borrar combinaci贸n entre p谩ginas?",
+    "琛ㄦ牸鑴氬嚱鏁�": "Funci贸n de pie de tabla",
+    "鍒嗙粍瀛楁鍑芥暟": "Funci贸n de campo de agrupaci贸n",
+    "鍒嗙粍澶存牸寮忓寲鍑芥暟": "Funci贸n de formato de encabezado de grupo",
+    "鍒嗙粍澶翠俊鎭�": "Informaci贸n de encabezado de grupo",
+    "鍒嗙粍鑴氭牸寮忓寲鍑芥暟": "Funci贸n de formato de pie de grupo",
+    "鍒嗙粍鑴氫俊鎭�": "Informaci贸n de pie de grupo",
+    "澶氱粍琛ㄦ牸鑴氬嚱鏁�": "Funci贸n de pie de tabla de varios grupos",
+    "琛屾牱寮忓嚱鏁�": "Funci贸n de estilo de fila",
+    "鍗曞厓鏍煎乏鍙冲榻�": "Alineaci贸n de celda",
+    "鍗曞厓鏍间笂涓嬪榻�": "Alineaci贸n vertical de celda",
+    "涓�": "Superior",
+    "涓�": "Centro",
+    "琛ㄦ牸澶村崟鍏冩牸宸﹀彸瀵归綈": "Alineaci贸n de celda de encabezado",
+    "鍗曞厓鏍兼牱寮忓嚱鏁�": "Funci贸n de estilo de celda",
+    "琛ㄦ牸澶存牱寮忓嚱鏁�": "Funci贸n de estilo de encabezado",
+    "鍗曞厓鏍兼牸寮忓寲鍑芥暟": "Funci贸n de formato de celda",
+    "鍗曞厓鏍兼覆鏌撳嚱鏁�": "Funci贸n de representaci贸n de celda",
+    "鑷姩琛ュ叏": "Autocompletar",
+    "姣忛〉鏈�澶ц鏁�": "Filas m谩ximo por p谩gina",
+    "琛ㄦ牸鑴氭樉绀�": "Visualizaci贸n de pie de tabla",
+    "鏈�鍚庢樉绀�": "Mostrar en 煤ltima p谩gina",
+    "娌℃湁瓒冲绌洪棿杩涜琛ㄦ牸鍒嗛〉锛岃璋冩暣椤电湁/椤佃剼绾�": "No hay suficiente espacio para la paginaci贸n de tablas, ajuste la l铆nea de encabezado/pie de p谩gina",
+    "娌℃湁瓒冲绌洪棿,鏄剧ず涓嬫柟鍐呭, 鍙垎椤甸珮搴�": "No hay suficiente espacio, muestre el contenido a continuaci贸n, se puede paginar la altura:",
+    "鍒楀睘鎬�": "Propiedad de columna",
+    "鍦ㄤ笂鏂规彃鍏ヨ": "Insertar fila encima",
+    "鍦ㄤ笅鏂规彃鍏ヨ": "Insertar fila debajo",
+    "鍚戝乏鏂规彃鍏ュ垪": "Insertar columna a la izquierda",
+    "鍚戝彸鏂规彃鍏ュ垪": "Insertar columna a la derecha",
+    "鍒犻櫎琛�": "Eliminar fila",
+    "鍒犻櫎鍒�": "Eliminar columna",
+    "瀵归綈": "Alinear",
+    "宸�": "Izquierda",
+    "宸﹀彸灞呬腑": "Centrar",
+    "鍙�": "Derecha",
+    "涓�": "Inferior",
+    "鍚堝苟鍗曞厓鏍�": "Combinar celda",
+    "瑙e紑鍗曞厓鏍�": "Descombinar celda",
+    "鏉″舰鐮佺敓鎴愬け璐�": "Error al generar c贸digo de barras",
+    "璇锋鏌� hiprint.init 鐨� provider 鏄惁閰嶇疆浜�": "Verifique si se ha configurado el proveedor de hiprint.init",
+    "宸茬Щ闄�'tableCustom',璇锋浛鎹娇鐢�'table'璇︽儏瑙佹洿鏂拌褰�": "Se ha eliminado 'tableCustom', reempl谩celo por 'table', consulte el registro de actualizaci贸n para obtener detalles",
+    "纭畾": "Confirmar",
+    "鍒犻櫎": "Eliminar",
+    "杩炴帴瀹㈡埛绔け璐�": "Error al conectarse al cliente",
+    "鍩虹": "B谩sico",
+    "杈规": "Borde",
+    "鍒�": "Columna",
+    "楂樼骇": "Avanzado",
+    "闈㈡澘鎺掑垪": "Disposici贸n del panel",
+    "鎺掑垪鏂瑰紡": "M茅todo de disposici贸n",
+    "鍨傜洿闂磋窛%s": "Espaciado Vertical %s",
+    "姘村钩闂磋窛%s": "Espaciado Horizontal %s",
+    "杈规鍦嗚": "Radio de Borde",
+    "鏄剧ず鐮佸��": "Mostrar Valor del C贸digo",
+    "褰撳墠闇�瑕侀珮搴�": "Altura Requerida Actual"
+}
\ No newline at end of file
diff --git a/src/i18n/fr.json b/src/i18n/fr.json
new file mode 100644
index 0000000..13040a8
--- /dev/null
+++ b/src/i18n/fr.json
@@ -0,0 +1,251 @@
+{
+    "璇烽�夋嫨瀛楁": "Veuillez s茅lectionner un champ",
+    "璁℃暟": "Compter",
+    "鍚堣": "Somme",
+    "骞冲潎鍊�": "Moyenne",
+    "鏈�灏忓��": "Minimum",
+    "鏈�澶у��": "Maximum",
+    "姝ゆ牸寮忎笉鏀寔璇ユ枃鏈�": "Ce format ne prend pas en charge ce texte",
+    "浜岀淮鐮佺敓鎴愬け璐�": "脡chec de la g茅n茅ration de code QR",
+    "瀛椾綋琛岄珮": "Hauteur de police",
+    "榛樿": "D茅faut",
+    "瀛椾綋": "Police",
+    "瀹嬩綋": "SimSun",
+    "寰蒋闆呴粦": "Microsoft YaHei",
+    "瀛椾綋澶у皬": "Taille de police",
+    "瀛椾綋绮楃粏": "脡paisseur de police",
+    "鏇寸粏": "Plus l茅ger",
+    "绮椾綋": "Gras",
+    "绮椾綋+": "Plus gras",
+    "瀛楅棿璺�": "Espacement des lettres",
+    "宸﹀彸瀵归綈": "Justifi茅",
+    "灞呭乏": "Gauche",
+    "灞呬腑": "Centr茅",
+    "灞呭彸": "Droite",
+    "涓ょ瀵归綈": "Justifi茅",
+    "鏍囬鏄剧ず闅愯棌": "Affichage du titre",
+    "鏄剧ず": "Afficher",
+    "闅愯棌": "Masquer",
+    "琛ㄦ牸杈规": "Bordure du tableau",
+    "鏈夎竟妗�": "Oui",
+    "鏃犺竟妗�": "Non",
+    "琛ㄥご杈规": "Bordure d'en-t锚te",
+    "宸﹁竟妗�": "Gauche",
+    "鍙宠竟妗�": "Droite",
+    "宸﹀彸杈规": "Gauche et droite",
+    "涓婅竟妗�": "Haut",
+    "涓嬭竟妗�": "Bas",
+    "涓婁笅杈规": "Haut et bas",
+    "琛ㄥご鍗曞厓鏍艰竟妗�": "Bordure de cellule d'en-t锚te",
+    "琛ㄥ熬杈规": "Bordure de pied de page",
+    "琛ㄥ熬鍗曞厓鏍艰竟妗�": "Bordure de cellule de pied de page",
+    "琛ㄥご琛岄珮": "Hauteur de ligne d'en-t锚te",
+    "琛ㄥご瀛椾綋澶у皬": "Taille de police d'en-t锚te",
+    "琛ㄥご瀛椾綋绮楃粏": "脡paisseur de police d'en-t锚te",
+    "琛ㄤ綋鍗曞厓鏍艰竟妗�": "Bordure de cellule de corps",
+    "琛ㄤ綋琛岄珮": "Hauteur de ligne de corps",
+    "琛ㄥご鑳屾櫙": "Arri猫re-plan de l'en-t锚te",
+    "绾垮": "Largeur de trait",
+    "杈规澶у皬": "Taille de bordure",
+    "鏉″舰鐮佹牸寮�": "Type de code 脿 barres",
+    "鍟嗗搧鏉$爜": "Code 脿 barres de produit",
+    "鏉″舰鐮�": "Code 脿 barres",
+    "鐗╂祦": "Logistique",
+    "閭斂鍜屽揩閫掔紪鐮�": "Code postal et messagerie",
+    "鍖荤枟浜у搧缂栫爜": "Code de produit m茅dical",
+    "涓嶅父鐢ㄧ紪鐮�": "Code inhabituel",
+    "闄勫姞缁勪欢": "Composant suppl茅mentaire",
+    "瀹為獙缂栫爜": "Code exp茅rimental",
+    "鏉$爜绫诲瀷": "Type de code 脿 barres",
+    "浜岀淮鐮佺被鍨�": "Type de QR code",
+    "浜岀淮鐮佸閿欑巼": "Niveau de correction d'erreur de QR code",
+    "瀛椾綋棰滆壊": "Couleur de police",
+    "鏂囨湰淇グ": "D茅coration de texte",
+    "涓嬪垝绾�": "Soulign茅",
+    "涓婂垝绾�": "Barr茅",
+    "绌挎绾�": "Barr茅",
+    "瀛楁鍚�": "Nom de champ",
+    "璇疯緭鍏ュ瓧娈靛悕": "Veuillez saisir le nom du champ",
+    "鏍囬": "Titre",
+    "璇疯緭鍏ユ爣棰�": "Veuillez saisir le titre",
+    "娴嬭瘯鏁版嵁": "Donn茅es de test",
+    "浠呭瓧娈靛悕绉板瓨鍦ㄦ椂鏈夋晥": "Valide uniquement lorsque le nom de champ existe",
+    "浣嶇疆鍧愭爣": "Coordonn茅e de position",
+    "X浣嶇疆(宸�)": "Position X (gauche)",
+    "Y浣嶇疆(涓�)": "Position Y (haut)",
+    "鍚屾": "Synchroniser",
+    "涓嶅悓姝�": "Non synchronis茅",
+    "瀹介珮澶у皬": "Largeur et hauteur",
+    "瀹�": "Largeur",
+    "楂�": "Hauteur",
+    "鍥剧墖鍦板潃": "URL de l'image",
+    "璇疯緭鍏ュ浘鐗囧湴鍧�": "Veuillez saisir l'URL de l'image",
+    "閫夋嫨": "Choisir",
+    "鍥剧墖缂╂斁": "Mise 脿 l'茅chelle de l'image",
+    "绛夋瘮": "Proportionnel",
+    "瑁佸垏": "Rogner",
+    "濉厖": "Remplir",
+    "鍘熷灏哄": "Taille d'origine",
+    "棰滆壊": "Couleur",
+    "杈规棰滆壊": "Couleur de bordure",
+    "姘村嵃鍔熻兘": "Filigrane",
+    "姘村嵃鍐呭": "Contenu du filigrane",
+    "鏃嬭浆瑙掑害": "Angle de rotation",
+    "姘村钩瀵嗗害": "Densit茅 horizontale",
+    "鍨傜洿瀵嗗害": "Densit茅 verticale",
+    "姘村嵃鏃堕棿": "Heure du filigrane",
+    "鏃堕棿鏍煎紡": "Format de l'heure",
+    "椤电爜鏍煎紡": "Format du num茅ro de page",
+    "鏄剧ず椤电爜": "Afficher le num茅ro de page",
+    "椤电爜缁帓": "Continuer le num茅ro de page",
+    "缁帓": "Continuer",
+    "閲嶆帓": "R茅initialiser",
+    "姣忚缂╄繘": "Retrait",
+    "鏄剧ず瑙勫垯": "R猫gle d'affichage",
+    "濮嬬粓闅愯棌": "Toujours masquer",
+    "棣栭〉": "Premi猫re page",
+    "濂囨暟椤�": "Pages impaires",
+    "鍋舵暟椤�": "Pages paires",
+    "灏鹃〉": "Derni猫re page",
+    "寮哄埗鍒嗛〉": "Forcer saut de page",
+    "鏄�": "Oui",
+    "鍚�": "Non",
+    "鎵撳嵃瑙勫垯": "R猫gle d'impression",
+    "淇濇寔濂囨暟": "Garder impaires",
+    "淇濇寔鍋舵暟": "Garder paires",
+    "鍒嗛〉瑙勫垯": "R猫gle de saut de page",
+    "涓嶅垎椤�": "Pas de saut de page",
+    "绉婚櫎娈佃惤宸︿晶绌虹櫧": "Supprimer l'espace vide 脿 gauche",
+    "绉婚櫎": "Supprimer",
+    "涓嶇Щ闄�": "Ne pas supprimer",
+    "棣栭〉椤靛熬": "Pied de page premi猫re page",
+    "灏鹃〉椤靛熬": "Pied de page derni猫re page",
+    "鍋舵暟椤甸〉灏�": "Pied de page pages paires",
+    "濂囨暟椤甸〉灏�": "Pied de page pages impaires",
+    "浣嶇疆鍥哄畾": "Position fixe",
+    "鎷栧姩鏂瑰悜": "Direction de glissement",
+    "妯悜": "Horizontal",
+    "绔栧悜": "Vertical",
+    "宸﹀亸绉�": "D茅calage 脿 gauche",
+    "鍋忕Щ閲�": "D茅calage",
+    "鏈�浣庨珮搴�": "Hauteur minimum",
+    "鏂囨湰杩囩煭鎴栦负绌烘椂鐨勯珮搴�": "Hauteur lorsque le texte est trop court ou vide",
+    "闅愯棌瑙勫垯": "R猫gle de masquage",
+    "琛ㄤ綋琛岃竟妗�": "Bordure de ligne du corps",
+    "鍏冪礌灞傜骇": "Index Z",
+    "杈规璁剧疆": "Param猫tres de bordure",
+    "瀹炵嚎": "Plein",
+    "铏氱嚎": "Pointill茅",
+    "宸﹀唴杈硅窛": "Marge int茅rieure gauche",
+    "涓婂唴杈硅窛": "Marge int茅rieure haut",
+    "鍙冲唴杈硅窛": "Marge int茅rieure droite",
+    "涓嬪唴杈硅窛": "Marge int茅rieure bas",
+    "鏍峰紡": "Style",
+    "杈规鏍峰紡": "Style de bordure",
+    "闀胯櫄绾�": "Pointill茅 long",
+    "鐭櫄绾�": "Pointill茅 court",
+    "鑳屾櫙棰滆壊": "Couleur de fond",
+    "绾稿紶鏂瑰悜(浠呰嚜瀹氫箟绾歌川鏈夋晥)": "Orientation du papier (uniquement papier personnalis茅)",
+    "绾靛悜": "Portrait",
+    "涓婁笅瀵归綈": "Alignement vertical",
+    "鍨傜洿灞呬腑": "Centr茅 verticalement",
+    "搴曢儴": "Bas",
+    "鏂囨湰鎹㈣": "C茅sure de texte",
+    "涓嶆崲琛�": "Pas de c茅sure",
+    "涓嶆崲琛�&闅愯棌": "Pas de c茅sure et masquer",
+    "涓嶆崲琛�&鐪佺暐": "Pas de c茅sure et points de suspension",
+    "鎵撳嵃绫诲瀷": "Type d'impression",
+    "鏂囨湰": "Texte",
+    "浜岀淮鐮�": "QR code",
+    "瀛楁绫诲瀷": "Type de champ",
+    "榛樿(鏂囨湰)": "D茅faut (texte)",
+    "搴忓彿": "Index",
+    "鍥剧墖": "Image",
+    "鍗曞厓鏍奸珮搴�": "Hauteur de cellule",
+    "鏉″舰鐮併�佷簩缁寸爜浠ュ強鍥剧墖鏈夋晥": "Code 脿 barres, QR code et image sont valides",
+    "搴曢儴鑱氬悎鏍囬": "Titre du r茅capitulatif",
+    "搴曢儴鑱氬悎鏂囨湰": "Texte du r茅capitulatif",
+    "鑱氬悎绫诲瀷": "Type de r茅capitulatif",
+    "搴曢儴鑱氬悎鍚堝苟鍒楁暟": "Colonnes fusionn茅es du r茅capitulatif",
+    "鍚堝苟鍒楁暟": "Colonnes fusionn茅es",
+    "搴曢儴鑱氬悎绫诲瀷宸﹀彸瀵归綈": "Alignement du r茅capitulatif",
+    "鏁存暟": "Entier",
+    "淇濈暀%s浣�": "Garder %s d茅cimales",
+    "搴曢儴鑱氬悎灏忔暟": "D茅cimales du r茅capitulatif",
+    "杞ぇ灏忓啓": "Majuscules ou minuscules",
+    "搴曢儴鑱氬悎绫诲瀷": "Type de r茅capitulatif",
+    "涓嶈仛鍚�": "Pas de r茅capitulatif",
+    "浠呮枃鏈�": "Texte uniquement",
+    "椤堕儴鍋忕Щ": "D茅calage sup茅rieur",
+    "涓�琛屽缁�": "Plusieurs groupes sur une ligne",
+    "涓�琛屼簩鍒�": "Une ligne deux colonnes",
+    "涓�琛屼笁鍒�": "Une ligne trois colonnes",
+    "涓�琛屽洓鍒�": "Une ligne quatre colonnes",
+    "涓�琛屽缁勯棿闅�": "Espacement de plusieurs groupes sur une ligne",
+    "琛ㄦ牸澶存樉绀�": "Affichage de l'en-t锚te du tableau",
+    "姣忛〉鏄剧ず": "Afficher par page",
+    "棣栭〉鏄剧ず": "Afficher sur la premi猫re page",
+    "涓嶆樉绀�": "Ne pas afficher",
+    "鏁版嵁绫诲瀷": "Type de donn茅es",
+    "鏃ユ湡鏃堕棿": "DateHeure",
+    "甯冨皵": "Bool茅en",
+    "鏍煎紡": "Format",
+    "鏍煎紡鍖栧嚱鏁�": "Fonction de mise en forme",
+    "鏍峰紡鍑芥暟": "Fonction de style",
+    "琛�/鍒楀悎骞跺嚱鏁�": "Fusionner ligne/colonne",
+    "璺ㄩ〉鍚堝苟鏄惁娓呴櫎": "Annuler fusion sur saut de page",
+    "琛ㄦ牸鑴氬嚱鏁�": "Fonction pied de tableau",
+    "鍒嗙粍瀛楁鍑芥暟": "Fonction Champ de regroupement",
+    "鍒嗙粍澶存牸寮忓寲鍑芥暟": "Fonction de mise en forme en-t锚te de groupe",
+    "鍒嗙粍澶翠俊鎭�": "Informations en-t锚te de groupe",
+    "鍒嗙粍鑴氭牸寮忓寲鍑芥暟": "Fonction de mise en forme pied de groupe",
+    "鍒嗙粍鑴氫俊鎭�": "Informations pied de groupe",
+    "澶氱粍琛ㄦ牸鑴氬嚱鏁�": "Fonction pied de tableau multi-groupe",
+    "琛屾牱寮忓嚱鏁�": "Fonction style de ligne",
+    "鍗曞厓鏍煎乏鍙冲榻�": "Alignement des cellules",
+    "鍗曞厓鏍间笂涓嬪榻�": "Alignement vertical des cellules",
+    "涓�": "Haut",
+    "涓�": "Milieu",
+    "琛ㄦ牸澶村崟鍏冩牸宸﹀彸瀵归綈": "Alignement des cellules d'en-t锚te",
+    "鍗曞厓鏍兼牱寮忓嚱鏁�": "Fonction style de cellule",
+    "琛ㄦ牸澶存牱寮忓嚱鏁�": "Fonction style d'en-t锚te",
+    "鍗曞厓鏍兼牸寮忓寲鍑芥暟": "Fonction de mise en forme de cellule",
+    "鍗曞厓鏍兼覆鏌撳嚱鏁�": "Fonction d'affichage de cellule",
+    "鑷姩琛ュ叏": "Saisie automatique",
+    "姣忛〉鏈�澶ц鏁�": "Lignes max par page",
+    "琛ㄦ牸鑴氭樉绀�": "Affichage pied de tableau",
+    "鏈�鍚庢樉绀�": "Afficher sur derni猫re page",
+    "娌℃湁瓒冲绌洪棿杩涜琛ㄦ牸鍒嗛〉锛岃璋冩暣椤电湁/椤佃剼绾�": "Pas assez d'espace pour la pagination du tableau, veuillez ajuster la ligne d'ent锚te/pied de page",
+    "娌℃湁瓒冲绌洪棿,鏄剧ず涓嬫柟鍐呭, 鍙垎椤甸珮搴�": "Pas assez de place, afficher le contenu ci-dessous, la hauteur peut 锚tre pagin茅e :",
+    "鍒楀睘鎬�": "Propri茅t茅 de colonne",
+    "鍦ㄤ笂鏂规彃鍏ヨ": "Ins茅rer ligne au-dessus",
+    "鍦ㄤ笅鏂规彃鍏ヨ": "Ins茅rer ligne en dessous",
+    "鍚戝乏鏂规彃鍏ュ垪": "Ins茅rer colonne 脿 gauche",
+    "鍚戝彸鏂规彃鍏ュ垪": "Ins茅rer colonne 脿 droite",
+    "鍒犻櫎琛�": "Supprimer ligne",
+    "鍒犻櫎鍒�": "Supprimer colonne",
+    "瀵归綈": "Aligner",
+    "宸�": "Gauche",
+    "宸﹀彸灞呬腑": "Centrer",
+    "鍙�": "Droite",
+    "涓�": "Bas",
+    "鍚堝苟鍗曞厓鏍�": "Fusionner cellule",
+    "瑙e紑鍗曞厓鏍�": "D茅fusionner cellule",
+    "鏉″舰鐮佺敓鎴愬け璐�": "脡chec de la g茅n茅ration de code 脿 barres",
+    "璇锋鏌� hiprint.init 鐨� provider 鏄惁閰嶇疆浜�": "Veuillez v茅rifier si le fournisseur de hiprint.init est configur茅",
+    "宸茬Щ闄�'tableCustom',璇锋浛鎹娇鐢�'table'璇︽儏瑙佹洿鏂拌褰�": "'TableCustom' a 茅t茅 supprim茅, veuillez le remplacer par 'table', voir le journal de mise 脿 jour pour plus de d茅tails",
+    "纭畾": "Confirmer",
+    "鍒犻櫎": "Supprimer",
+    "杩炴帴瀹㈡埛绔け璐�": "脡chec de connexion au client",
+    "鍩虹": "De base",
+    "杈规": "Bordure",
+    "鍒�": "Colonne",
+    "楂樼骇": "Avanc茅",
+    "闈㈡澘鎺掑垪": "Agencement du panneau",
+    "鎺掑垪鏂瑰紡": "Mode d'agencement",
+    "鍨傜洿闂磋窛%s": "Espacement Vertical %s",
+    "姘村钩闂磋窛%s": "Espacement Horizontal %s",
+    "杈规鍦嗚": "Rayon de Bordure",
+    "鏄剧ず鐮佸��": "Afficher la Valeur du Code",
+    "褰撳墠闇�瑕侀珮搴�": "Hauteur Requise Actuelle"
+}
\ No newline at end of file
diff --git a/src/i18n/it.json b/src/i18n/it.json
new file mode 100644
index 0000000..d47ae96
--- /dev/null
+++ b/src/i18n/it.json
@@ -0,0 +1,251 @@
+{
+    "璇烽�夋嫨瀛楁": "Seleziona campo",
+    "璁℃暟": "Conteggio",
+    "鍚堣": "Somma",
+    "骞冲潎鍊�": "Media",
+    "鏈�灏忓��": "Minimo",
+    "鏈�澶у��": "Massimo",
+    "姝ゆ牸寮忎笉鏀寔璇ユ枃鏈�": "Questo formato non supporta questo testo",
+    "浜岀淮鐮佺敓鎴愬け璐�": "Generazione codice QR non riuscita",
+    "瀛椾綋琛岄珮": "Altezza carattere",
+    "榛樿": "Predefinito",
+    "瀛椾綋": "Carattere",
+    "瀹嬩綋": "SimSun",
+    "寰蒋闆呴粦": "Microsoft YaHei",
+    "瀛椾綋澶у皬": "Dimensione carattere",
+    "瀛椾綋绮楃粏": "Spessore carattere",
+    "鏇寸粏": "Pi霉 leggero ",
+    "绮椾綋": "Grassetto",
+    "绮椾綋+": "Pi霉 grassetto",
+    "瀛楅棿璺�": "Spaziatura lettere",
+    "宸﹀彸瀵归綈": "Giustificato",
+    "灞呭乏": "Sinistra",
+    "灞呬腑": "Centrato",
+    "灞呭彸": "Destra",
+    "涓ょ瀵归綈": "Giustificato",
+    "鏍囬鏄剧ず闅愯棌": "Visualizzazione titolo",
+    "鏄剧ず": "Mostra",
+    "闅愯棌": "Nascondi",
+    "琛ㄦ牸杈规": "Bordo tabella",
+    "鏈夎竟妗�": "S矛",
+    "鏃犺竟妗�": "No",
+    "琛ㄥご杈规": "Bordo intestazione",
+    "宸﹁竟妗�": "Sinistra",
+    "鍙宠竟妗�": "Destra",
+    "宸﹀彸杈规": "Sinistra e destra",
+    "涓婅竟妗�": "Alto",
+    "涓嬭竟妗�": "Basso",
+    "涓婁笅杈规": "Alto e basso",
+    "琛ㄥご鍗曞厓鏍艰竟妗�": "Bordo cella intestazione",
+    "琛ㄥ熬杈规": "Bordo pi猫 di pagina",
+    "琛ㄥ熬鍗曞厓鏍艰竟妗�": "Bordo cella pi猫 di pagina",
+    "琛ㄥご琛岄珮": "Altezza riga intestazione",
+    "琛ㄥご瀛椾綋澶у皬": "Dimensione carattere intestazione",
+    "琛ㄥご瀛椾綋绮楃粏": "Spessore carattere intestazione",
+    "琛ㄤ綋鍗曞厓鏍艰竟妗�": "Bordo cella corpo",
+    "琛ㄤ綋琛岄珮": "Altezza riga corpo",
+    "琛ㄥご鑳屾櫙": "Sfondo intestazione",
+    "绾垮": "Larghezza linea",
+    "杈规澶у皬": "Dimensione bordo",
+    "鏉″舰鐮佹牸寮�": "Tipo codice a barre",
+    "鍟嗗搧鏉$爜": "Codice a barre prodotto",
+    "鏉″舰鐮�": "Codice a barre",
+    "鐗╂祦": "Logistica",
+    "閭斂鍜屽揩閫掔紪鐮�": "Codice postale e corriere",
+    "鍖荤枟浜у搧缂栫爜": "Codice prodotto medico",
+    "涓嶅父鐢ㄧ紪鐮�": "Codice insolito",
+    "闄勫姞缁勪欢": "Componente aggiuntivo",
+    "瀹為獙缂栫爜": "Codice sperimentale",
+    "鏉$爜绫诲瀷": "Tipo di codice a barre",
+    "浜岀淮鐮佺被鍨�": "Tipo codice QR",
+    "浜岀淮鐮佸閿欑巼": "Livello correzione errore codice QR",
+    "瀛椾綋棰滆壊": "Colore carattere",
+    "鏂囨湰淇グ": "Decorazione testo",
+    "涓嬪垝绾�": "Sottolineato",
+    "涓婂垝绾�": "Barrato",
+    "绌挎绾�": "Barrato",
+    "瀛楁鍚�": "Nome campo",
+    "璇疯緭鍏ュ瓧娈靛悕": "Inserisci nome campo",
+    "鏍囬": "Titolo",
+    "璇疯緭鍏ユ爣棰�": "Inserisci titolo",
+    "娴嬭瘯鏁版嵁": "Dati di prova",
+    "浠呭瓧娈靛悕绉板瓨鍦ㄦ椂鏈夋晥": "Valido solo quando esiste nome campo",
+    "浣嶇疆鍧愭爣": "Coordinate di posizione",
+    "X浣嶇疆(宸�)": "Posizione X (sinistra)",
+    "Y浣嶇疆(涓�)": "Posizione Y (alto)",
+    "鍚屾": "Sincronizzare",
+    "涓嶅悓姝�": "Non sincronizzare",
+    "瀹介珮澶у皬": "Larghezza e altezza",
+    "瀹�": "Larghezza",
+    "楂�": "Altezza",
+    "鍥剧墖鍦板潃": "URL immagine",
+    "璇疯緭鍏ュ浘鐗囧湴鍧�": "Inserisci URL immagine",
+    "閫夋嫨": "Scegliere",
+    "鍥剧墖缂╂斁": "Ridimensionamento immagine",
+    "绛夋瘮": "Proporzionale",
+    "瑁佸垏": "Ritagliare",
+    "濉厖": "Riempire",
+    "鍘熷灏哄": "Dimensione originale",
+    "棰滆壊": "Colore",
+    "杈规棰滆壊": "Colore bordo",
+    "姘村嵃鍔熻兘": "Filigrana",
+    "姘村嵃鍐呭": "Contenuto filigrana",
+    "鏃嬭浆瑙掑害": "Angolo di rotazione",
+    "姘村钩瀵嗗害": "Densit脿 orizzontale",
+    "鍨傜洿瀵嗗害": "Densit脿 verticale",
+    "姘村嵃鏃堕棿": "Ora filigrana",
+    "鏃堕棿鏍煎紡": "Formato ora",
+    "椤电爜鏍煎紡": "Formato numero pagina",
+    "鏄剧ず椤电爜": "Mostra numero pagina",
+    "椤电爜缁帓": "Continua numero pagina",
+    "缁帓": "Continua",
+    "閲嶆帓": "Ripristina",
+    "姣忚缂╄繘": "Rientro",
+    "鏄剧ず瑙勫垯": "Regola di visualizzazione",
+    "濮嬬粓闅愯棌": "Nascondi sempre",
+    "棣栭〉": "Prima pagina",
+    "濂囨暟椤�": "Pagine dispari",
+    "鍋舵暟椤�": "Pagine pari",
+    "灏鹃〉": "Ultima pagina",
+    "寮哄埗鍒嗛〉": "Forza interruzione pagina",
+    "鏄�": "S矛",
+    "鍚�": "No",
+    "鎵撳嵃瑙勫垯": "Regola di stampa",
+    "淇濇寔濂囨暟": "Mantieni dispari",
+    "淇濇寔鍋舵暟": "Mantieni pari",
+    "鍒嗛〉瑙勫垯": "Regola interruzione pagina",
+    "涓嶅垎椤�": "Nessuna interruzione pagina",
+    "绉婚櫎娈佃惤宸︿晶绌虹櫧": "Rimuovi spazio vuoto a sinistra",
+    "绉婚櫎": "Rimuovere",
+    "涓嶇Щ闄�": "Non rimuovere",
+    "棣栭〉椤靛熬": "Pi猫 di pagina prima pagina",
+    "灏鹃〉椤靛熬": "Pi猫 di pagina ultima pagina",
+    "鍋舵暟椤甸〉灏�": "Pi猫 di pagina pagine pari",
+    "濂囨暟椤甸〉灏�": "Pi猫 di pagina pagine dispari",
+    "浣嶇疆鍥哄畾": "Posizione fissa",
+    "鎷栧姩鏂瑰悜": "Direzione trascinamento",
+    "妯悜": "Orizzontale",
+    "绔栧悜": "Verticale",
+    "宸﹀亸绉�": "Scostamento a sinistra",
+    "鍋忕Щ閲�": "Scostamento",
+    "鏈�浣庨珮搴�": "Altezza minima",
+    "鏂囨湰杩囩煭鎴栦负绌烘椂鐨勯珮搴�": "Altezza quando testo troppo corto o vuoto",
+    "闅愯棌瑙勫垯": "Regola nascondi",
+    "琛ㄤ綋琛岃竟妗�": "Bordo riga corpo",
+    "鍏冪礌灞傜骇": "Indice Z",
+    "杈规璁剧疆": "Impostazioni bordo",
+    "瀹炵嚎": "Continuo",
+    "铏氱嚎": "Tratteggiato",
+    "宸﹀唴杈硅窛": "Riempimento sinistro",
+    "涓婂唴杈硅窛": "Riempimento superiore",
+    "鍙冲唴杈硅窛": "Riempimento destro",
+    "涓嬪唴杈硅窛": "Riempimento inferiore",
+    "鏍峰紡": "Stile",
+    "杈规鏍峰紡": "Stile bordo",
+    "闀胯櫄绾�": "Tratteggiato lungo",
+    "鐭櫄绾�": "Tratteggiato corto",
+    "鑳屾櫙棰滆壊": "Colore sfondo",
+    "绾稿紶鏂瑰悜(浠呰嚜瀹氫箟绾歌川鏈夋晥)": "Orientamento carta (solo carta personalizzata)",
+    "绾靛悜": "Verticale",
+    "涓婁笅瀵归綈": "Allineamento verticale",
+    "鍨傜洿灞呬腑": "Centrato verticalmente",
+    "搴曢儴": "In basso",
+    "鏂囨湰鎹㈣": "A capo automatico",
+    "涓嶆崲琛�": "Nessun a capo",
+    "涓嶆崲琛�&闅愯棌": "Nessun a capo e nascondi",
+    "涓嶆崲琛�&鐪佺暐": "Nessun a capo e puntini",
+    "鎵撳嵃绫诲瀷": "Tipo di stampa",
+    "鏂囨湰": "Testo",
+    "浜岀淮鐮�": "Codice QR",
+    "瀛楁绫诲瀷": "Tipo di campo",
+    "榛樿(鏂囨湰)": "Predefinito (testo)",
+    "搴忓彿": "Indice",
+    "鍥剧墖": "Immagine",
+    "鍗曞厓鏍奸珮搴�": "Altezza cella",
+    "鏉″舰鐮併�佷簩缁寸爜浠ュ強鍥剧墖鏈夋晥": "Codice a barre, codice QR e immagine validi",
+    "搴曢儴鑱氬悎鏍囬": "Titolo del riepilogo",
+    "搴曢儴鑱氬悎鏂囨湰": "Testo del riepilogo",
+    "鑱氬悎绫诲瀷": "Tipo di riepilogo",
+    "搴曢儴鑱氬悎鍚堝苟鍒楁暟": "Colonne del riepilogo unite",
+    "鍚堝苟鍒楁暟": "Colonne unite",
+    "搴曢儴鑱氬悎绫诲瀷宸﹀彸瀵归綈": "Allineamento riepilogo",
+    "鏁存暟": "Intero",
+    "淇濈暀%s浣�": "Mantieni %s decimali",
+    "搴曢儴鑱氬悎灏忔暟": "Decimali del riepilogo",
+    "杞ぇ灏忓啓": "Maiuscole o minuscole",
+    "搴曢儴鑱氬悎绫诲瀷": "Tipo di riepilogo",
+    "涓嶈仛鍚�": "Nessun riepilogo",
+    "浠呮枃鏈�": "Solo testo",
+    "椤堕儴鍋忕Щ": "Scostamento superiore",
+    "涓�琛屽缁�": "Pi霉 gruppi in una riga",
+    "涓�琛屼簩鍒�": "Una riga due colonne",
+    "涓�琛屼笁鍒�": "Una riga tre colonne",
+    "涓�琛屽洓鍒�": "Una riga quattro colonne",
+    "涓�琛屽缁勯棿闅�": "Spaziatura pi霉 gruppi in una riga",
+    "琛ㄦ牸澶存樉绀�": "Visualizzazione intestazione tabella",
+    "姣忛〉鏄剧ず": "Mostra per pagina",
+    "棣栭〉鏄剧ず": "Mostra in prima pagina",
+    "涓嶆樉绀�": "Non visualizzare",
+    "鏁版嵁绫诲瀷": "Tipo di dati",
+    "鏃ユ湡鏃堕棿": "DataOra",
+    "甯冨皵": "Booleano",
+    "鏍煎紡": "Formato",
+    "鏍煎紡鍖栧嚱鏁�": "Funzione di formattazione",
+    "鏍峰紡鍑芥暟": "Funzione di stile",
+    "琛�/鍒楀悎骞跺嚱鏁�": "Unisci riga/colonna",
+    "璺ㄩ〉鍚堝苟鏄惁娓呴櫎": "Annulla unione interruzione pagina",
+    "琛ㄦ牸鑴氬嚱鏁�": "Funzione pi猫 di pagina tabella",
+    "鍒嗙粍瀛楁鍑芥暟": "Funzione campo di raggruppamento",
+    "鍒嗙粍澶存牸寮忓寲鍑芥暟": "Funzione di formattazione intestazione gruppo",
+    "鍒嗙粍澶翠俊鎭�": "Informazioni intestazione gruppo",
+    "鍒嗙粍鑴氭牸寮忓寲鍑芥暟": "Funzione di formattazione pi猫 di gruppo",
+    "鍒嗙粍鑴氫俊鎭�": "Informazioni pi猫 di gruppo",
+    "澶氱粍琛ㄦ牸鑴氬嚱鏁�": "Funzione pi猫 di pagina tabella multi-gruppo",
+    "琛屾牱寮忓嚱鏁�": "Funzione stile riga",
+    "鍗曞厓鏍煎乏鍙冲榻�": "Allineamento cella",
+    "鍗曞厓鏍间笂涓嬪榻�": "Allineamento verticale cella",
+    "涓�": "Alto",
+    "涓�": "Centro",
+    "琛ㄦ牸澶村崟鍏冩牸宸﹀彸瀵归綈": "Allineamento cella intestazione",
+    "鍗曞厓鏍兼牱寮忓嚱鏁�": "Funzione stile cella",
+    "琛ㄦ牸澶存牱寮忓嚱鏁�": "Funzione stile intestazione",
+    "鍗曞厓鏍兼牸寮忓寲鍑芥暟": "Funzione di formattazione cella",
+    "鍗曞厓鏍兼覆鏌撳嚱鏁�": "Funzione di rendering cella",
+    "鑷姩琛ュ叏": "Completamento automatico",
+    "姣忛〉鏈�澶ц鏁�": "Righe massime per pagina",
+    "琛ㄦ牸鑴氭樉绀�": "Visualizzazione pi猫 di pagina tabella",
+    "鏈�鍚庢樉绀�": "Mostra nell'ultima pagina",
+    "娌℃湁瓒冲绌洪棿杩涜琛ㄦ牸鍒嗛〉锛岃璋冩暣椤电湁/椤佃剼绾�": "Spazio insufficiente per la paginazione della tabella, regolare la linea di intestazione/pi猫 di pagina",
+    "娌℃湁瓒冲绌洪棿,鏄剧ず涓嬫柟鍐呭, 鍙垎椤甸珮搴�": "Spazio insufficiente, visualizza il contenuto sottostante, l'altezza pu貌 essere impaginata:",
+    "鍒楀睘鎬�": "Propriet脿 colonna",
+    "鍦ㄤ笂鏂规彃鍏ヨ": "Inserisci riga sopra",
+    "鍦ㄤ笅鏂规彃鍏ヨ": "Inserisci riga sotto",
+    "鍚戝乏鏂规彃鍏ュ垪": "Inserisci colonna a sinistra",
+    "鍚戝彸鏂规彃鍏ュ垪": "Inserisci colonna a destra",
+    "鍒犻櫎琛�": "Elimina riga",
+    "鍒犻櫎鍒�": "Elimina colonna",
+    "瀵归綈": "Allinea",
+    "宸�": "Sinistra",
+    "宸﹀彸灞呬腑": "Centra",
+    "鍙�": "Destra",
+    "涓�": "Basso",
+    "鍚堝苟鍗曞厓鏍�": "Unisci cella",
+    "瑙e紑鍗曞厓鏍�": "Separa cella",
+    "鏉″舰鐮佺敓鎴愬け璐�": "Generazione codice a barre non riuscita",
+    "璇锋鏌� hiprint.init 鐨� provider 鏄惁閰嶇疆浜�": "Controlla se il provider di hiprint.init 猫 configurato",
+    "宸茬Щ闄�'tableCustom',璇锋浛鎹娇鐢�'table'璇︽儏瑙佹洿鏂拌褰�": "'TableCustom' 猫 stato rimosso, sostituirlo con 'table', vedi il log di aggiornamento per i dettagli",
+    "纭畾": "Conferma",
+    "鍒犻櫎": "Elimina",
+    "杩炴帴瀹㈡埛绔け璐�": "Connessione al client non riuscita",
+    "鍩虹": "Di base",
+    "杈规": "Bordo",
+    "鍒�": "Colonna",
+    "楂樼骇": "Avanzate",
+    "闈㈡澘鎺掑垪": "Disposizione del pannello",
+    "鎺掑垪鏂瑰紡": "Metodo di disposizione",
+    "鍨傜洿闂磋窛%s": "Spaziatura Verticale %s",
+    "姘村钩闂磋窛%s": "Spaziatura Orizzontale %s",
+    "杈规鍦嗚": "Raggio del Bordo",
+    "鏄剧ず鐮佸��": "Mostra Valore del Codice",
+    "褰撳墠闇�瑕侀珮搴�": "Altezza Richiesta Attuale"
+}
\ No newline at end of file
diff --git a/src/i18n/ja.json b/src/i18n/ja.json
new file mode 100644
index 0000000..77178f5
--- /dev/null
+++ b/src/i18n/ja.json
@@ -0,0 +1,251 @@
+{
+    "璇烽�夋嫨瀛楁": "銉曘偅銉笺儷銉夈倰閬告姙銇椼仸銇忋仩銇曘亜",
+    "璁℃暟": "銈偊銉炽儓",
+    "鍚堣": "鍚堣▓",
+    "骞冲潎鍊�": "骞冲潎",
+    "鏈�灏忓��": "鏈�灏忓��",
+    "鏈�澶у��": "鏈�澶у��",
+    "姝ゆ牸寮忎笉鏀寔璇ユ枃鏈�": "銇撱伄銉曘偐銉笺優銉冦儓銇亾銇儐銈偣銉堛倰銈点儩銉笺儓銇椼仸銇勩伨銇涖倱",
+    "浜岀淮鐮佺敓鎴愬け璐�": "QR銈炽兗銉夈伄鐢熸垚銇け鏁椼仐銇俱仐銇�",
+    "瀛椾綋琛岄珮": "銉曘偐銉炽儓銇銇珮銇�",
+    "榛樿": "銉囥儠銈┿儷銉�",
+    "瀛椾綋": "銉曘偐銉炽儓",
+    "瀹嬩綋": "鏄庢湞",
+    "寰蒋闆呴粦": "Yu Gothic",
+    "瀛椾綋澶у皬": "銉曘偐銉炽儓銈点偆銈�",
+    "瀛椾綋绮楃粏": "銉曘偐銉炽儓銇お銇�",
+    "鏇寸粏": "銈堛倞绱般亜",
+    "绮椾綋": "澶瓧",
+    "绮椾綋+": "銈堛倞澶瓧",
+    "瀛楅棿璺�": "鏂囧瓧闁撻殧",
+    "宸﹀彸瀵归綈": "涓$鎻冦亪",
+    "灞呭乏": "宸﹀瘎銇�",
+    "灞呬腑": "涓ぎ瀵勩仜",
+    "灞呭彸": "鍙冲瘎銇�",
+    "涓ょ瀵归綈": "涓$鎻冦亪",
+    "鏍囬鏄剧ず闅愯棌": "銈裤偆銉堛儷銇〃绀�/闈炶〃绀�",
+    "鏄剧ず": "琛ㄧず",
+    "闅愯棌": "闈炶〃绀�",
+    "琛ㄦ牸杈规": "琛ㄣ伄缃窔",
+    "鏈夎竟妗�": "缃窔銇傘倞",
+    "鏃犺竟妗�": "缃窔銇仐",
+    "琛ㄥご杈规": "銉樸儍銉�銉笺伄缃窔",
+    "宸﹁竟妗�": "宸︾将绶�",
+    "鍙宠竟妗�": "鍙崇将绶�",
+    "宸﹀彸杈规": "宸﹀彸缃窔",
+    "涓婅竟妗�": "涓婄将绶�",
+    "涓嬭竟妗�": "涓嬬将绶�",
+    "涓婁笅杈规": "涓婁笅缃窔",
+    "琛ㄥご鍗曞厓鏍艰竟妗�": "銉樸儍銉�銉笺伄銈汇儷缃窔",
+    "琛ㄥ熬杈规": "銉曘儍銈裤兗銇将绶�",
+    "琛ㄥ熬鍗曞厓鏍艰竟妗�": "銉曘儍銈裤兗銇偦銉将绶�",
+    "琛ㄥご琛岄珮": "銉樸儍銉�銉笺伄琛屻伄楂樸仌",
+    "琛ㄥご瀛椾綋澶у皬": "銉樸儍銉�銉笺伄銉曘偐銉炽儓銈点偆銈�",
+    "琛ㄥご瀛椾綋绮楃粏": "銉樸儍銉�銉笺伄銉曘偐銉炽儓銇お銇�",
+    "琛ㄤ綋鍗曞厓鏍艰竟妗�": "鏈綋銇偦銉将绶�",
+    "琛ㄤ綋琛岄珮": "鏈綋銇銇珮銇�",
+    "琛ㄥご鑳屾櫙": "銉樸儍銉�銉笺伄鑳屾櫙",
+    "绾垮": "绶氥伄澶仌",
+    "杈规澶у皬": "缃窔銇お銇�",
+    "鏉″舰鐮佹牸寮�": "銉愩兗銈炽兗銉夈伄褰㈠紡",
+    "鍟嗗搧鏉$爜": "鍟嗗搧銉愩兗銈炽兗銉�",
+    "鏉″舰鐮�": "銉愩兗銈炽兗銉�",
+    "鐗╂祦": "鐗╂祦",
+    "閭斂鍜屽揩閫掔紪鐮�": "閮典究銇娿倛銇冲畢閰嶄究鐣彿",
+    "鍖荤枟浜у搧缂栫爜": "鍖荤檪鐢ㄥ搧銈炽兗銉�",
+    "涓嶅父鐢ㄧ紪鐮�": "銇傘伨銈婁娇銈忋倢銇亜銈炽兗銉�",
+    "闄勫姞缁勪欢": "浠樺睘鍝�",
+    "瀹為獙缂栫爜": "瀹熼〒鐨勩偝銉笺儔",
+    "鏉$爜绫诲瀷": "銉愩兗銈炽兗銉夈伄銈裤偆銉�",
+    "浜岀淮鐮佺被鍨�": "QR銈炽兗銉夈伄銈裤偆銉�",
+    "浜岀淮鐮佸閿欑巼": "QR銈炽兗銉夈伄瑾ゃ倞瑷傛銉儥銉�",
+    "瀛椾綋棰滆壊": "鏂囧瓧鑹�",
+    "鏂囨湰淇グ": "銉嗐偔銈广儓銇椋�",
+    "涓嬪垝绾�": "涓嬬窔",
+    "涓婂垝绾�": "涓婄窔",
+    "绌挎绾�": "鍙栥倞娑堛仐绶�",
+    "瀛楁鍚�": "銉曘偅銉笺儷銉夊悕",
+    "璇疯緭鍏ュ瓧娈靛悕": "銉曘偅銉笺儷銉夊悕銈掑叆鍔涖仐銇︺亸銇犮仌銇�",
+    "鏍囬": "銈裤偆銉堛儷",
+    "璇疯緭鍏ユ爣棰�": "銈裤偆銉堛儷銈掑叆鍔涖仐銇︺亸銇犮仌銇�",
+    "娴嬭瘯鏁版嵁": "銉嗐偣銉堛儑銉笺偪",
+    "浠呭瓧娈靛悕绉板瓨鍦ㄦ椂鏈夋晥": "銉曘偅銉笺儷銉夊悕銇屻亗銈嬨仺銇嶃伄銇挎湁鍔�",
+    "浣嶇疆鍧愭爣": "浣嶇疆搴ф",
+    "X浣嶇疆(宸�)": "X浣嶇疆(宸�)",
+    "Y浣嶇疆(涓�)": "Y浣嶇疆(涓�)",
+    "鍚屾": "鍚屾湡",
+    "涓嶅悓姝�": "闈炲悓鏈�",
+    "瀹介珮澶у皬": "骞呫仺楂樸仌",
+    "瀹�": "骞�",
+    "楂�": "楂樸仌",
+    "鍥剧墖鍦板潃": "鐢诲儚銇甎RL",
+    "璇疯緭鍏ュ浘鐗囧湴鍧�": "鐢诲儚銇甎RL銈掑叆鍔涖仐銇︺亸銇犮仌銇�",
+    "閫夋嫨": "閬告姙",
+    "鍥剧墖缂╂斁": "鐢诲儚銇嫛澶�/绺皬",
+    "绛夋瘮": "绛夊��",
+    "瑁佸垏": "鍒囥倞鎶溿亶",
+    "濉厖": "鍩嬨倎杈笺伩",
+    "鍘熷灏哄": "銈儶銈搞儕銉偟銈ゃ偤",
+    "棰滆壊": "鑹�",
+    "杈规棰滆壊": "缃窔銇壊",
+    "姘村嵃鍔熻兘": "閫忋亱銇�",
+    "姘村嵃鍐呭": "閫忋亱銇椼伄鍐呭",
+    "鏃嬭浆瑙掑害": "鍥炶虎瑙掑害",
+    "姘村钩瀵嗗害": "姘村钩鏂瑰悜銇瘑搴�",
+    "鍨傜洿瀵嗗害": "鍨傜洿鏂瑰悜銇瘑搴�",
+    "姘村嵃鏃堕棿": "閫忋亱銇椼伄鏅傚埢",
+    "鏃堕棿鏍煎紡": "鏅傚埢銇儠銈┿兗銉炪儍銉�",
+    "椤电爜鏍煎紡": "銉氥兗銈哥暘鍙枫伄銉曘偐銉笺優銉冦儓",
+    "鏄剧ず椤电爜": "銉氥兗銈哥暘鍙枫倰琛ㄧず",
+    "椤电爜缁帓": "銉氥兗銈哥暘鍙枫伄缍氥亶",
+    "缁帓": "缍氥亶",
+    "閲嶆帓": "銉偦銉冦儓",
+    "姣忚缂╄繘": "琛岄牠瀛椾笅銇�",
+    "鏄剧ず瑙勫垯": "琛ㄧず銉兗銉�",
+    "濮嬬粓闅愯棌": "甯搞伀闈炶〃绀�",
+    "棣栭〉": "鏈�鍒濄伄銉氥兗銈�",
+    "濂囨暟椤�": "濂囨暟銉氥兗銈�",
+    "鍋舵暟椤�": "鍋舵暟銉氥兗銈�",
+    "灏鹃〉": "鏈�绲傘儦銉笺偢",
+    "寮哄埗鍒嗛〉": "鏀广儦銉笺偢銈掑挤鍒�",
+    "鏄�": "銇亜",
+    "鍚�": "銇勩亜銇�",
+    "鎵撳嵃瑙勫垯": "鍗板埛銉兗銉�",
+    "淇濇寔濂囨暟": "濂囨暟銉氥兗銈搞倰缍寔",
+    "淇濇寔鍋舵暟": "鍋舵暟銉氥兗銈搞倰缍寔",
+    "鍒嗛〉瑙勫垯": "鏀广儦銉笺偢銉兗銉�",
+    "涓嶅垎椤�": "鏀广儦銉笺偢銇仐",
+    "绉婚櫎娈佃惤宸︿晶绌虹櫧": "娈佃惤宸﹀伌銇┖鐧姐倰鍓婇櫎",
+    "绉婚櫎": "鍓婇櫎銇欍倠",
+    "涓嶇Щ闄�": "鍓婇櫎銇椼仾銇�",
+    "棣栭〉椤靛熬": "鏈�鍒濄伄銉氥兗銈搞伄銉曘儍銈裤兗",
+    "灏鹃〉椤靛熬": "鏈�绲傘儦銉笺偢銇儠銉冦偪銉�",
+    "鍋舵暟椤甸〉灏�": "鍋舵暟銉氥兗銈搞伄銉曘儍銈裤兗",
+    "濂囨暟椤甸〉灏�": "濂囨暟銉氥兗銈搞伄銉曘儍銈裤兗",
+    "浣嶇疆鍥哄畾": "鍥哄畾浣嶇疆",
+    "鎷栧姩鏂瑰悜": "銉夈儵銉冦偘鏂瑰悜",
+    "妯悜": "妯柟鍚�",
+    "绔栧悜": "绺︽柟鍚�",
+    "宸﹀亸绉�": "宸︾銇嬨倝銇偑銉曘偦銉冦儓",
+    "鍋忕Щ閲�": "銈儠銈汇儍銉堥噺",
+    "鏈�浣庨珮搴�": "鏈�灏忋伄楂樸仌",
+    "鏂囨湰杩囩煭鎴栦负绌烘椂鐨勯珮搴�": "銉嗐偔銈广儓銇岀煭銇欍亷銈嬨亱绌恒伄銇ㄣ亶銇珮銇�",
+    "闅愯棌瑙勫垯": "闈炶〃绀恒儷銉笺儷",
+    "琛ㄤ綋琛岃竟妗�": "鏈綋銇銇将绶�",
+    "鍏冪礌灞傜骇": "Z銈ゃ兂銉囥儍銈偣",
+    "杈规璁剧疆": "鏋犵窔銇ō瀹�",
+    "瀹炵嚎": "瀹熺窔",
+    "铏氱嚎": "鐐圭窔",
+    "宸﹀唴杈硅窛": "宸︺伄銉戙儑銈c兂銈�",
+    "涓婂唴杈硅窛": "涓娿伄銉戙儑銈c兂銈�",
+    "鍙冲唴杈硅窛": "鍙炽伄銉戙儑銈c兂銈�",
+    "涓嬪唴杈硅窛": "涓嬨伄銉戙儑銈c兂銈�",
+    "鏍峰紡": "銈广偪銈ゃ儷",
+    "杈规鏍峰紡": "鏋犵窔銇偣銈裤偆銉�",
+    "闀胯櫄绾�": "闀风偣绶�",
+    "鐭櫄绾�": "鐭偣绶�",
+    "鑳屾櫙棰滆壊": "鑳屾櫙鑹�",
+    "绾稿紶鏂瑰悜(浠呰嚜瀹氫箟绾歌川鏈夋晥)": "鐢ㄧ礄銇悜銇�(銈偣銈裤儬鐢ㄧ礄銇伩鏈夊姽)",
+    "绾靛悜": "绺︽柟鍚�",
+    "涓婁笅瀵归綈": "涓婁笅銇厤缃�",
+    "鍨傜洿灞呬腑": "鍨傜洿涓ぎ鎻冦亪",
+    "搴曢儴": "涓嬫弮銇�",
+    "鏂囨湰鎹㈣": "銉嗐偔銈广儓銇姌銈婅繑銇�",
+    "涓嶆崲琛�": "鎶樸倞杩斻仌銇亜",
+    "涓嶆崲琛�&闅愯棌": "鎶樸倞杩斻仌銇氶潪琛ㄧず",
+    "涓嶆崲琛�&鐪佺暐": "鎶樸倞杩斻仌銇氱渷鐣ヨ鍙�",
+    "鎵撳嵃绫诲瀷": "鍗板埛銈裤偆銉�",
+    "鏂囨湰": "銉嗐偔銈广儓",
+    "浜岀淮鐮�": "QR銈炽兗銉�",
+    "瀛楁绫诲瀷": "銉曘偅銉笺儷銉夈偪銈ゃ儣",
+    "榛樿(鏂囨湰)": "銉囥儠銈┿儷銉�(銉嗐偔銈广儓)",
+    "搴忓彿": "銈ゃ兂銉囥儍銈偣",
+    "鍥剧墖": "鐢诲儚",
+    "鍗曞厓鏍奸珮搴�": "銈汇儷銇珮銇�",
+    "鏉″舰鐮併�佷簩缁寸爜浠ュ強鍥剧墖鏈夋晥": "銉愩兗銈炽兗銉夈�丵R銈炽兗銉夈�佺敾鍍忔湁鍔�",
+    "搴曢儴鑱氬悎鏍囬": "闆嗚▓銈裤偆銉堛儷",
+    "搴曢儴鑱氬悎鏂囨湰": "闆嗚▓銉嗐偔銈广儓",
+    "鑱氬悎绫诲瀷": "闆嗚▓銇偪銈ゃ儣",
+    "搴曢儴鑱氬悎鍚堝苟鍒楁暟": "闆嗚▓銇祼鍚堝垪鏁�",
+    "鍚堝苟鍒楁暟": "绲愬悎鍒楁暟",
+    "搴曢儴鑱氬悎绫诲瀷宸﹀彸瀵归綈": "闆嗚▓銇乏鍙虫弮銇�",
+    "鏁存暟": "鏁存暟",
+    "淇濈暀%s浣�": "%s妗併倰淇濇寔",
+    "搴曢儴鑱氬悎灏忔暟": "闆嗚▓銇皬鏁扮偣浠ヤ笅妗佹暟",
+    "杞ぇ灏忓啓": "澶ф枃瀛楀皬鏂囧瓧銇鎻�",
+    "搴曢儴鑱氬悎绫诲瀷": "闆嗚▓銇偪銈ゃ儣",
+    "涓嶈仛鍚�": "闆嗚▓銇椼仾銇�",
+    "浠呮枃鏈�": "銉嗐偔銈广儓銇伩",
+    "椤堕儴鍋忕Щ": "涓婇儴銇偑銉曘偦銉冦儓",
+    "涓�琛屽缁�": "1琛岃鏁般偘銉兗銉�",
+    "涓�琛屼簩鍒�": "1琛�2鍒�",
+    "涓�琛屼笁鍒�": "1琛�3鍒�",
+    "涓�琛屽洓鍒�": "1琛�4鍒�",
+    "涓�琛屽缁勯棿闅�": "1琛岃鏁般偘銉兗銉椼伄闁撻殧",
+    "琛ㄦ牸澶存樉绀�": "琛ㄣ儤銉冦儉銉笺伄琛ㄧず",
+    "姣忛〉鏄剧ず": "1銉氥兗銈搞仈銇ㄣ伀琛ㄧず",
+    "棣栭〉鏄剧ず": "鏈�鍒濄伄銉氥兗銈搞伀琛ㄧず",
+    "涓嶆樉绀�": "琛ㄧず銇椼仾銇�",
+    "鏁版嵁绫诲瀷": "銉囥兗銈垮瀷",
+    "鏃ユ湡鏃堕棿": "鏃ユ檪",
+    "甯冨皵": "銉栥兗銉�",
+    "鏍煎紡": "銉曘偐銉笺優銉冦儓",
+    "鏍煎紡鍖栧嚱鏁�": "鏇稿紡瑷畾闁㈡暟",
+    "鏍峰紡鍑芥暟": "銈广偪銈ゃ儷闁㈡暟",
+    "琛�/鍒楀悎骞跺嚱鏁�": "琛�/鍒椼伄銉炪兗銈搁枹鏁�",
+    "璺ㄩ〉鍚堝苟鏄惁娓呴櫎": "鏀广儦銉笺偢銇с伄銉炪兗銈搞倰銈儶銈€仚銈嬨亱",
+    "琛ㄦ牸鑴氬嚱鏁�": "琛ㄣ伄銉曘儍銈裤兗闁㈡暟",
+    "鍒嗙粍瀛楁鍑芥暟": "銈般儷銉笺儣銉曘偅銉笺儷銉夐枹鏁�",
+    "鍒嗙粍澶存牸寮忓寲鍑芥暟": "銈般儷銉笺儣銉樸儍銉�銉笺伄鏇稿紡瑷畾闁㈡暟",
+    "鍒嗙粍澶翠俊鎭�": "銈般儷銉笺儣銉樸儍銉�銉兼儏鍫�",
+    "鍒嗙粍鑴氭牸寮忓寲鍑芥暟": "銈般儷銉笺儣銉曘儍銈裤兗銇浉寮忚ō瀹氶枹鏁�",
+    "鍒嗙粍鑴氫俊鎭�": "銈般儷銉笺儣銉曘儍銈裤兗鎯呭牨",
+    "澶氱粍琛ㄦ牸鑴氬嚱鏁�": "瑜囨暟銈般儷銉笺儣琛ㄣ伄銉曘儍銈裤兗闁㈡暟",
+    "琛屾牱寮忓嚱鏁�": "琛屻伄銈广偪銈ゃ儷闁㈡暟",
+    "鍗曞厓鏍煎乏鍙冲榻�": "銈汇儷銇乏鍙虫弮銇�",
+    "鍗曞厓鏍间笂涓嬪榻�": "銈汇儷銇笂涓嬫弮銇�",
+    "涓�": "涓�",
+    "涓�": "涓ぎ",
+    "琛ㄦ牸澶村崟鍏冩牸宸﹀彸瀵归綈": "銉樸儍銉�銉笺偦銉伄宸﹀彸鎻冦亪",
+    "鍗曞厓鏍兼牱寮忓嚱鏁�": "銈汇儷銇偣銈裤偆銉枹鏁�",
+    "琛ㄦ牸澶存牱寮忓嚱鏁�": "銉樸儍銉�銉笺伄銈广偪銈ゃ儷闁㈡暟",
+    "鍗曞厓鏍兼牸寮忓寲鍑芥暟": "銈汇儷銇浉寮忚ō瀹氶枹鏁�",
+    "鍗曞厓鏍兼覆鏌撳嚱鏁�": "銈汇儷銇儸銉炽儉銉兂銈伴枹鏁�",
+    "鑷姩琛ュ叏": "銈兗銉堛偝銉炽儣銉兗銉�",
+    "姣忛〉鏈�澶ц鏁�": "1銉氥兗銈告渶澶ц鏁�",
+    "琛ㄦ牸鑴氭樉绀�": "琛ㄣ伄銉曘儍銈裤兗銇〃绀�",
+    "鏈�鍚庢樉绀�": "鏈�绲傘儦銉笺偢銇ц〃绀�",
+    "娌℃湁瓒冲绌洪棿杩涜琛ㄦ牸鍒嗛〉锛岃璋冩暣椤电湁/椤佃剼绾�": "琛ㄣ伄銉氥兗銈稿垎鍓层伄銇熴倎銇崄鍒嗐仾銈广儦銉笺偣銇屻亗銈娿伨銇涖倱銆傘儤銉冦儉銉�/銉曘儍銈裤兗銇窔銈掕鏁淬仐銇︺亸銇犮仌銇�",
+    "娌℃湁瓒冲绌洪棿,鏄剧ず涓嬫柟鍐呭, 鍙垎椤甸珮搴�": "銈广儦銉笺偣銇屽崄鍒嗐仹銇亗銈娿伨銇涖倱銆備笅銇偝銉炽儐銉炽儎銈掕〃绀恒仐銆侀珮銇曘伅銉氥兗銈稿垎鍓层仹銇嶃伨銇�:",
+    "鍒楀睘鎬�": "鍒椼伄銉椼儹銉戙儐銈�",
+    "鍦ㄤ笂鏂规彃鍏ヨ": "涓娿伀琛屻倰鎸垮叆",
+    "鍦ㄤ笅鏂规彃鍏ヨ": "涓嬨伀琛屻倰鎸垮叆",
+    "鍚戝乏鏂规彃鍏ュ垪": "宸︺伀鍒椼倰鎸垮叆",
+    "鍚戝彸鏂规彃鍏ュ垪": "鍙炽伀鍒椼倰鎸垮叆 ",
+    "鍒犻櫎琛�": "琛屻倰鍓婇櫎",
+    "鍒犻櫎鍒�": "鍒椼倰鍓婇櫎",
+    "瀵归綈": "閰嶇疆",
+    "宸�": "宸�",
+    "宸﹀彸灞呬腑": "涓ぎ",
+    "鍙�": "鍙�",
+    "涓�": "涓�",
+    "鍚堝苟鍗曞厓鏍�": "銈汇儷銈掋優銉笺偢",
+    "瑙e紑鍗曞厓鏍�": "銉炪兗銈搞倰瑙i櫎",
+    "鏉″舰鐮佺敓鎴愬け璐�": "銉愩兗銈炽兗銉夈伄鐢熸垚銇け鏁椼仐銇俱仐銇�",
+    "璇锋鏌� hiprint.init 鐨� provider 鏄惁閰嶇疆浜�": "hiprint.init 銇儣銉儛銈ゃ儉銇岃ō瀹氥仌銈屻仸銇勩倠銇撱仺銈掔⒑瑾嶃仐銇︺亸銇犮仌銇�",
+    "宸茬Щ闄�'tableCustom',璇锋浛鎹娇鐢�'table'璇︽儏瑙佹洿鏂拌褰�": "'tableCustom'銇墛闄ゃ仌銈屻伨銇椼仧銆�'table'銇疆銇嶆彌銇堛仸銇忋仩銇曘亜銆傝┏绱般伅鏇存柊銉偘銈掑弬鐓с仐銇︺亸銇犮仌銇勩��",
+    "纭畾": "纰哄畾",
+    "鍒犻櫎": "鍓婇櫎",
+    "杩炴帴瀹㈡埛绔け璐�": "銈儵銈ゃ偄銉炽儓銇搞伄鎺ョ稓銇け鏁椼仐銇俱仐銇�",
+    "鍩虹": "鍩烘湰",
+    "杈规": "鏋犵窔",
+    "鍒�": "鍒�",
+    "楂樼骇": "楂樺害",
+    "闈㈡澘鎺掑垪": "銉戙儘銉厤缃�",
+    "鎺掑垪鏂瑰紡": "閰嶅垪鏂规硶",
+    "鍨傜洿闂磋窛%s": "鍨傜洿闁撻殧 %s",
+    "姘村钩闂磋窛%s": "姘村钩闁撻殧 %s",
+    "杈规鍦嗚": "銉溿兗銉�銉笺儵銈搞偊銈�",
+    "鏄剧ず鐮佸��": "琛ㄧず銈炽兗銉夊��",
+    "褰撳墠闇�瑕侀珮搴�": "鐝惧湪蹇呰銇珮銇�"
+}
\ No newline at end of file
diff --git a/src/i18n/ru.json b/src/i18n/ru.json
new file mode 100644
index 0000000..ad15db5
--- /dev/null
+++ b/src/i18n/ru.json
@@ -0,0 +1,251 @@
+{
+    "璇烽�夋嫨瀛楁": "袩芯卸邪谢褍泄褋褌邪, 胁褘斜械褉懈褌械 锌芯谢械",
+    "璁℃暟": "袩芯写褋褔械褌",
+    "鍚堣": "小褍屑屑邪",
+    "骞冲潎鍊�": "小褉械写薪械械 蟹薪邪褔械薪懈械",
+    "鏈�灏忓��": "袦懈薪懈屑褍屑",
+    "鏈�澶у��": "袦邪泻褋懈屑褍屑",
+    "姝ゆ牸寮忎笉鏀寔璇ユ枃鏈�": "协褌芯褌 褎芯褉屑邪褌 薪械 锌芯写写械褉卸懈胁邪械褌 褌邪泻芯泄 褌械泻褋褌",
+    "浜岀淮鐮佺敓鎴愬け璐�": "小斜芯泄 谐械薪械褉邪褑懈懈 QR-泻芯写邪",
+    "瀛椾綋琛岄珮": "袙褘褋芯褌邪 褋褌褉芯泻懈 褕褉懈褎褌邪",
+    "榛樿": "袩芯 褍屑芯谢褔邪薪懈褞",
+    "瀛椾綋": "楔褉懈褎褌",
+    "瀹嬩綋": "SimSun",
+    "寰蒋闆呴粦": "Microsoft YaHei",
+    "瀛椾綋澶у皬": "袪邪蟹屑械褉 褕褉懈褎褌邪",
+    "瀛椾綋绮楃粏": "孝芯谢褖懈薪邪 褕褉懈褎褌邪",
+    "鏇寸粏": "孝芯薪褜褕械",
+    "绮椾綋": "袞懈褉薪褘泄",
+    "绮椾綋+": "袞懈褉薪械械",
+    "瀛楅棿璺�": "袦械卸斜褍泻胁械薪薪褘泄 懈薪褌械褉胁邪谢",
+    "宸﹀彸瀵归綈": "袩芯 褕懈褉懈薪械",
+    "灞呭乏": "袩芯 谢械胁芯屑褍 泻褉邪褞",
+    "灞呬腑": "袩芯 褑械薪褌褉褍",
+    "灞呭彸": "袩芯 锌褉邪胁芯屑褍 泻褉邪褞",
+    "涓ょ瀵归綈": "袩芯 褕懈褉懈薪械",
+    "鏍囬鏄剧ず闅愯棌": "袨褌芯斜褉邪卸械薪懈械 蟹邪谐芯谢芯胁泻邪",
+    "鏄剧ず": "袩芯泻邪蟹褘胁邪褌褜",
+    "闅愯棌": "小泻褉褘褌褜",
+    "琛ㄦ牸杈规": "袚褉邪薪懈褑邪 褌邪斜谢懈褑褘",
+    "鏈夎竟妗�": "袛邪",
+    "鏃犺竟妗�": "袧械褌",
+    "琛ㄥご杈规": "袚褉邪薪懈褑邪 蟹邪谐芯谢芯胁泻邪",
+    "宸﹁竟妗�": "袥械胁邪褟 谐褉邪薪懈褑邪",
+    "鍙宠竟妗�": "袩褉邪胁邪褟 谐褉邪薪懈褑邪",
+    "宸﹀彸杈规": "袥械胁邪褟 懈 锌褉邪胁邪褟 谐褉邪薪懈褑褘",
+    "涓婅竟妗�": "袙械褉褏薪褟褟 谐褉邪薪懈褑邪",
+    "涓嬭竟妗�": "袧懈卸薪褟褟 谐褉邪薪懈褑邪",
+    "涓婁笅杈规": "袙械褉褏薪褟褟 懈 薪懈卸薪褟褟 谐褉邪薪懈褑褘",
+    "琛ㄥご鍗曞厓鏍艰竟妗�": "袚褉邪薪懈褑邪 褟褔械泄泻懈 蟹邪谐芯谢芯胁泻邪",
+    "琛ㄥ熬杈规": "袚褉邪薪懈褑邪 锌芯写胁邪谢邪",
+    "琛ㄥ熬鍗曞厓鏍艰竟妗�": "袚褉邪薪懈褑邪 褟褔械泄泻懈 锌芯写胁邪谢邪",
+    "琛ㄥご琛岄珮": "袙褘褋芯褌邪 褋褌褉芯泻懈 蟹邪谐芯谢芯胁泻邪",
+    "琛ㄥご瀛椾綋澶у皬": "袪邪蟹屑械褉 褕褉懈褎褌邪 蟹邪谐芯谢芯胁泻邪",
+    "琛ㄥご瀛椾綋绮楃粏": "孝芯谢褖懈薪邪 褕褉懈褎褌邪 蟹邪谐芯谢芯胁泻邪",
+    "琛ㄤ綋鍗曞厓鏍艰竟妗�": "袚褉邪薪懈褑邪 褟褔械泄泻懈 芯褋薪芯胁薪芯泄 褔邪褋褌懈",
+    "琛ㄤ綋琛岄珮": "袙褘褋芯褌邪 褋褌褉芯泻懈 芯褋薪芯胁薪芯泄 褔邪褋褌懈",
+    "琛ㄥご鑳屾櫙": "肖芯薪 蟹邪谐芯谢芯胁泻邪",
+    "绾垮": "孝芯谢褖懈薪邪 谢懈薪懈懈",
+    "杈规澶у皬": "袪邪蟹屑械褉 谐褉邪薪懈褑褘",
+    "鏉″舰鐮佹牸寮�": "孝懈锌 褕褌褉懈褏泻芯写邪",
+    "鍟嗗搧鏉$爜": "楔褌褉懈褏泻芯写 褌芯胁邪褉邪",
+    "鏉″舰鐮�": "楔褌褉懈褏泻芯写",
+    "鐗╂祦": "袥芯谐懈褋褌懈泻邪",
+    "閭斂鍜屽揩閫掔紪鐮�": "袩芯褔褌芯胁褘泄 懈 泻褍褉褜械褉褋泻懈泄 泻芯写",
+    "鍖荤枟浜у搧缂栫爜": "袣芯写 屑械写懈褑懈薪褋泻芯谐芯 锌褉芯写褍泻褌邪",
+    "涓嶅父鐢ㄧ紪鐮�": "袧械褋褌邪薪写邪褉褌薪褘泄 泻芯写",
+    "闄勫姞缁勪欢": "袛芯锌芯谢薪懈褌械谢褜薪褘泄 泻芯屑锌芯薪械薪褌",
+    "瀹為獙缂栫爜": "协泻褋锌械褉懈屑械薪褌邪谢褜薪褘泄 泻芯写",
+    "鏉$爜绫诲瀷": "孝懈锌 褕褌褉懈褏泻芯写邪",
+    "浜岀淮鐮佺被鍨�": "孝懈锌 QR-泻芯写邪",
+    "浜岀淮鐮佸閿欑巼": "校褉芯胁械薪褜 泻芯褉褉械泻褑懈懈 芯褕懈斜芯泻 QR-泻芯写邪",
+    "瀛椾綋棰滆壊": "笑胁械褌 褕褉懈褎褌邪",
+    "鏂囨湰淇グ": "袨褎芯褉屑谢械薪懈械 褌械泻褋褌邪",
+    "涓嬪垝绾�": "袩芯写褔械褉泻懈胁邪薪懈械",
+    "涓婂垝绾�": "袧邪写褔械褉泻懈胁邪薪懈械",
+    "绌挎绾�": "袩械褉械褔械褉泻懈胁邪薪懈械",
+    "瀛楁鍚�": "袠屑褟 锌芯谢褟",
+    "璇疯緭鍏ュ瓧娈靛悕": "袩芯卸邪谢褍泄褋褌邪, 胁胁械写懈褌械 懈屑褟 锌芯谢褟",
+    "鏍囬": "袟邪谐芯谢芯胁芯泻",
+    "璇疯緭鍏ユ爣棰�": "袩芯卸邪谢褍泄褋褌邪, 胁胁械写懈褌械 蟹邪谐芯谢芯胁芯泻",
+    "娴嬭瘯鏁版嵁": "孝械褋褌芯胁褘械 写邪薪薪褘械",
+    "浠呭瓧娈靛悕绉板瓨鍦ㄦ椂鏈夋晥": "袛械泄褋褌胁懈褌械谢褜薪芯 褌芯谢褜泻芯 械褋谢懈 褋褍褖械褋褌胁褍械褌 懈屑褟 锌芯谢褟",
+    "浣嶇疆鍧愭爣": "袣芯芯褉写懈薪邪褌褘 锌芯蟹懈褑懈懈",
+    "X浣嶇疆(宸�)": "袩芯蟹懈褑懈褟 X (褋谢械胁邪)",
+    "Y浣嶇疆(涓�)": "袩芯蟹懈褑懈褟 Y (褋胁械褉褏褍)",
+    "鍚屾": "小懈薪褏褉芯薪懈蟹懈褉芯胁邪褌褜",
+    "涓嶅悓姝�": "袧械 褋懈薪褏褉芯薪懈蟹懈褉芯胁邪褌褜",
+    "瀹介珮澶у皬": "楔懈褉懈薪邪 懈 胁褘褋芯褌邪",
+    "瀹�": "楔懈褉懈薪邪",
+    "楂�": "袙褘褋芯褌邪",
+    "鍥剧墖鍦板潃": "URL 懈蟹芯斜褉邪卸械薪懈褟",
+    "璇疯緭鍏ュ浘鐗囧湴鍧�": "袩芯卸邪谢褍泄褋褌邪, 胁胁械写懈褌械 URL 懈蟹芯斜褉邪卸械薪懈褟",
+    "閫夋嫨": "袙褘斜褉邪褌褜",
+    "鍥剧墖缂╂斁": "袦邪褋褕褌邪斜 懈蟹芯斜褉邪卸械薪懈褟",
+    "绛夋瘮": "袩褉芯锌芯褉褑懈芯薪邪谢褜薪芯",
+    "瑁佸垏": "袨斜褉械蟹邪褌褜",
+    "濉厖": "袟邪锌芯谢薪懈褌褜",
+    "鍘熷灏哄": "袠褋褏芯写薪褘泄 褉邪蟹屑械褉",
+    "棰滆壊": "笑胁械褌",
+    "杈规棰滆壊": "笑胁械褌 谐褉邪薪懈褑褘",
+    "姘村嵃鍔熻兘": "袙芯写褟薪芯泄 蟹薪邪泻",
+    "姘村嵃鍐呭": "小芯写械褉卸邪薪懈械 胁芯写褟薪芯谐芯 蟹薪邪泻邪",
+    "鏃嬭浆瑙掑害": "校谐芯谢 锌芯胁芯褉芯褌邪",
+    "姘村钩瀵嗗害": "袚芯褉懈蟹芯薪褌邪谢褜薪邪褟 锌谢芯褌薪芯褋褌褜",
+    "鍨傜洿瀵嗗害": "袙械褉褌懈泻邪谢褜薪邪褟 锌谢芯褌薪芯褋褌褜",
+    "姘村嵃鏃堕棿": "袙褉械屑褟 胁芯写褟薪芯谐芯 蟹薪邪泻邪",
+    "鏃堕棿鏍煎紡": "肖芯褉屑邪褌 胁褉械屑械薪懈",
+    "椤电爜鏍煎紡": "肖芯褉屑邪褌 薪芯屑械褉邪 褋褌褉邪薪懈褑褘",
+    "鏄剧ず椤电爜": "袩芯泻邪蟹褘胁邪褌褜 薪芯屑械褉 褋褌褉邪薪懈褑褘",
+    "椤电爜缁帓": "袩褉芯写芯谢卸懈褌褜 薪褍屑械褉邪褑懈褞 褋褌褉邪薪懈褑",
+    "缁帓": "袩褉芯写芯谢卸懈褌褜",
+    "閲嶆帓": "小斜褉芯褋懈褌褜",
+    "姣忚缂╄繘": "袨褌褋褌褍锌 褋褌褉芯泻懈",
+    "鏄剧ず瑙勫垯": "袩褉邪胁懈谢芯 芯褌芯斜褉邪卸械薪懈褟",
+    "濮嬬粓闅愯棌": "袙褋械谐写邪 褋泻褉褘胁邪褌褜",
+    "棣栭〉": "袩械褉胁邪褟 褋褌褉邪薪懈褑邪",
+    "濂囨暟椤�": "袧械褔械褌薪褘械 褋褌褉邪薪懈褑褘",
+    "鍋舵暟椤�": "效械褌薪褘械 褋褌褉邪薪懈褑褘",
+    "灏鹃〉": "袩芯褋谢械写薪褟褟 褋褌褉邪薪懈褑邪",
+    "寮哄埗鍒嗛〉": "袩褉懈薪褍写懈褌械谢褜薪褘泄 褉邪蟹褉褘胁 褋褌褉邪薪懈褑褘",
+    "鏄�": "袛邪",
+    "鍚�": "袧械褌",
+    "鎵撳嵃瑙勫垯": "袩褉邪胁懈谢芯 锌械褔邪褌懈",
+    "淇濇寔濂囨暟": "小芯褏褉邪薪褟褌褜 薪械褔械褌薪褘械",
+    "淇濇寔鍋舵暟": "小芯褏褉邪薪褟褌褜 褔械褌薪褘械",
+    "鍒嗛〉瑙勫垯": "袩褉邪胁懈谢芯 褉邪蟹褉褘胁邪 褋褌褉邪薪懈褑",
+    "涓嶅垎椤�": "袘械蟹 褉邪蟹褉褘胁邪 褋褌褉邪薪懈褑",
+    "绉婚櫎娈佃惤宸︿晶绌虹櫧": "校斜褉邪褌褜 谢械胁褘泄 芯褌褋褌褍锌",
+    "绉婚櫎": "校写邪谢懈褌褜",
+    "涓嶇Щ闄�": "袧械 褍写邪谢褟褌褜",
+    "棣栭〉椤靛熬": "袧懈卸薪懈泄 泻芯谢芯薪褌懈褌褍谢 锌械褉胁芯泄 褋褌褉邪薪懈褑褘",
+    "灏鹃〉椤靛熬": "袧懈卸薪懈泄 泻芯谢芯薪褌懈褌褍谢 锌芯褋谢械写薪械泄 褋褌褉邪薪懈褑褘",
+    "鍋舵暟椤甸〉灏�": "袧懈卸薪懈泄 泻芯谢芯薪褌懈褌褍谢 薪邪 褔械褌薪褘褏 褋褌褉邪薪懈褑邪褏",
+    "濂囨暟椤甸〉灏�": "袧懈卸薪懈泄 泻芯谢芯薪褌懈褌褍谢 薪邪 薪械褔械褌薪褘褏 褋褌褉邪薪懈褑邪褏",
+    "浣嶇疆鍥哄畾": "肖懈泻褋懈褉芯胁邪薪薪邪褟 锌芯蟹懈褑懈褟",
+    "鎷栧姩鏂瑰悜": "袧邪锌褉邪胁谢械薪懈械 锌械褉械褌邪褋泻懈胁邪薪懈褟",
+    "妯悜": "袚芯褉懈蟹芯薪褌邪谢褜薪芯",
+    "绔栧悜": "袙械褉褌懈泻邪谢褜薪芯",
+    "宸﹀亸绉�": "小屑械褖械薪懈械 褋谢械胁邪",
+    "鍋忕Щ閲�": "小屑械褖械薪懈械",
+    "鏈�浣庨珮搴�": "袦懈薪懈屑邪谢褜薪邪褟 胁褘褋芯褌邪",
+    "鏂囨湰杩囩煭鎴栦负绌烘椂鐨勯珮搴�": "袙褘褋芯褌邪 锌褉懈 褋谢懈褕泻芯屑 泻芯褉芯褌泻芯屑 懈谢懈 锌褍褋褌芯屑 褌械泻褋褌械",
+    "闅愯棌瑙勫垯": "袩褉邪胁懈谢芯 褋泻褉褘褌懈褟",
+    "琛ㄤ綋琛岃竟妗�": "袚褉邪薪懈褑邪 褋褌褉芯泻懈 芯褋薪芯胁薪芯泄 褔邪褋褌懈",
+    "鍏冪礌灞傜骇": "Z-懈薪写械泻褋",
+    "杈规璁剧疆": "袧邪褋褌褉芯泄泻懈 谐褉邪薪懈褑褘",
+    "瀹炵嚎": "小锌谢芯褕薪邪褟 谢懈薪懈褟",
+    "铏氱嚎": "袩褍薪泻褌懈褉",
+    "宸﹀唴杈硅窛": "袨褌褋褌褍锌 褋谢械胁邪",
+    "涓婂唴杈硅窛": "袨褌褋褌褍锌 褋胁械褉褏褍",
+    "鍙冲唴杈硅窛": "袨褌褋褌褍锌 褋锌褉邪胁邪",
+    "涓嬪唴杈硅窛": "袨褌褋褌褍锌 褋薪懈蟹褍",
+    "鏍峰紡": "小褌懈谢褜",
+    "杈规鏍峰紡": "小褌懈谢褜 谐褉邪薪懈褑褘",
+    "闀胯櫄绾�": "袛谢懈薪薪褘泄 锌褍薪泻褌懈褉",
+    "鐭櫄绾�": "袣芯褉芯褌泻懈泄 锌褍薪泻褌懈褉",
+    "鑳屾櫙棰滆壊": "笑胁械褌 褎芯薪邪",
+    "绾稿紶鏂瑰悜(浠呰嚜瀹氫箟绾歌川鏈夋晥)": "袨褉懈械薪褌邪褑懈褟 斜褍屑邪谐懈 (褌芯谢褜泻芯 锌芯谢褜蟹芯胁邪褌械谢褜褋泻邪褟)",
+    "绾靛悜": "袣薪懈卸薪邪褟",
+    "涓婁笅瀵归綈": "袙械褉褌懈泻邪谢褜薪芯械 胁褘褉邪胁薪懈胁邪薪懈械",
+    "鍨傜洿灞呬腑": "袩芯 褑械薪褌褉褍 锌芯 胁械褉褌懈泻邪谢懈",
+    "搴曢儴": "袙薪懈蟹褍",
+    "鏂囨湰鎹㈣": "袩械褉械薪芯褋 褋褌褉芯泻",
+    "涓嶆崲琛�": "袘械蟹 锌械褉械薪芯褋邪 褋褌褉芯泻",
+    "涓嶆崲琛�&闅愯棌": "袘械蟹 锌械褉械薪芯褋邪 褋褌褉芯泻 懈 褋泻褉褘褌褜",
+    "涓嶆崲琛�&鐪佺暐": "袘械蟹 锌械褉械薪芯褋邪 褋褌褉芯泻 懈 屑薪芯谐芯褌芯褔懈械",
+    "鎵撳嵃绫诲瀷": "孝懈锌 锌械褔邪褌懈",
+    "鏂囨湰": "孝械泻褋褌",
+    "浜岀淮鐮�": "QR-泻芯写",
+    "瀛楁绫诲瀷": "孝懈锌 锌芯谢褟",
+    "榛樿(鏂囨湰)": "袩芯 褍屑芯谢褔邪薪懈褞 (褌械泻褋褌)",
+    "搴忓彿": "袠薪写械泻褋",
+    "鍥剧墖": "袠蟹芯斜褉邪卸械薪懈械",
+    "鍗曞厓鏍奸珮搴�": "袙褘褋芯褌邪 褟褔械泄泻懈",
+    "鏉″舰鐮併�佷簩缁寸爜浠ュ強鍥剧墖鏈夋晥": "楔褌褉懈褏泻芯写, QR-泻芯写 懈 懈蟹芯斜褉邪卸械薪懈械 写械泄褋褌胁懈褌械谢褜薪褘",
+    "搴曢儴鑱氬悎鏍囬": "袟邪谐芯谢芯胁芯泻 懈褌芯谐芯胁",
+    "搴曢儴鑱氬悎鏂囨湰": "孝械泻褋褌 懈褌芯谐芯胁",
+    "鑱氬悎绫诲瀷": "孝懈锌 懈褌芯谐芯胁",
+    "搴曢儴鑱氬悎鍚堝苟鍒楁暟": "袣芯谢懈褔械褋褌胁芯 芯斜褗械写懈薪械薪薪褘褏 褋褌芯谢斜褑芯胁 懈褌芯谐芯胁",
+    "鍚堝苟鍒楁暟": "袣芯谢懈褔械褋褌胁芯 芯斜褗械写懈薪械薪薪褘褏 褋褌芯谢斜褑芯胁",
+    "搴曢儴鑱氬悎绫诲瀷宸﹀彸瀵归綈": "袙褘褉邪胁薪懈胁邪薪懈械 懈褌芯谐芯胁",
+    "鏁存暟": "笑械谢芯械 褔懈褋谢芯",
+    "淇濈暀%s浣�": "袨褋褌邪胁懈褌褜 %s 蟹薪邪泻芯胁 锌芯褋谢械 蟹邪锌褟褌芯泄",
+    "搴曢儴鑱氬悎灏忔暟": "袛褉芯斜薪邪褟 褔邪褋褌褜 懈褌芯谐芯胁",
+    "杞ぇ灏忓啓": "袙械褉褏薪懈泄 懈谢懈 薪懈卸薪懈泄 褉械谐懈褋褌褉",
+    "搴曢儴鑱氬悎绫诲瀷": "孝懈锌 懈褌芯谐芯胁",
+    "涓嶈仛鍚�": "袘械蟹 懈褌芯谐芯胁",
+    "浠呮枃鏈�": "孝芯谢褜泻芯 褌械泻褋褌",
+    "椤堕儴鍋忕Щ": "小屑械褖械薪懈械 褋胁械褉褏褍",
+    "涓�琛屽缁�": "袧械褋泻芯谢褜泻芯 谐褉褍锌锌 胁 褋褌褉芯泻械",
+    "涓�琛屼簩鍒�": "袨写薪邪 褋褌褉芯泻邪 写胁械 泻芯谢芯薪泻懈",
+    "涓�琛屼笁鍒�": "袨写薪邪 褋褌褉芯泻邪 褌褉懈 泻芯谢芯薪泻懈",
+    "涓�琛屽洓鍒�": "袨写薪邪 褋褌褉芯泻邪 褔械褌褘褉械 泻芯谢芯薪泻懈",
+    "涓�琛屽缁勯棿闅�": "袠薪褌械褉胁邪谢 屑械卸写褍 谐褉褍锌锌邪屑懈 胁 褋褌褉芯泻械",
+    "琛ㄦ牸澶存樉绀�": "袨褌芯斜褉邪卸械薪懈械 蟹邪谐芯谢芯胁泻邪 褌邪斜谢懈褑褘",
+    "姣忛〉鏄剧ず": "袩芯泻邪蟹褘胁邪褌褜 薪邪 褋褌褉邪薪懈褑械",
+    "棣栭〉鏄剧ず": "袩芯泻邪蟹褘胁邪褌褜 薪邪 锌械褉胁芯泄 褋褌褉邪薪懈褑械",
+    "涓嶆樉绀�": "袧械 锌芯泻邪蟹褘胁邪褌褜",
+    "鏁版嵁绫诲瀷": "孝懈锌 写邪薪薪褘褏",
+    "鏃ユ湡鏃堕棿": "袛邪褌邪 懈 胁褉械屑褟",
+    "甯冨皵": "袥芯谐懈褔械褋泻懈泄",
+    "鏍煎紡": "肖芯褉屑邪褌",
+    "鏍煎紡鍖栧嚱鏁�": "肖褍薪泻褑懈褟 褎芯褉屑邪褌懈褉芯胁邪薪懈褟",
+    "鏍峰紡鍑芥暟": "肖褍薪泻褑懈褟 褋褌懈谢褟",
+    "琛�/鍒楀悎骞跺嚱鏁�": "袨斜褗械写懈薪械薪懈械 褋褌褉芯泻懈/褋褌芯谢斜褑邪",
+    "璺ㄩ〉鍚堝苟鏄惁娓呴櫎": "袨褔懈褋褌懈褌褜 芯斜褗械写懈薪械薪懈械 锌械褉械写 褉邪蟹褉褘胁芯屑 褋褌褉邪薪懈褑褘",
+    "琛ㄦ牸鑴氬嚱鏁�": "肖褍薪泻褑懈褟 薪懈卸薪械谐芯 泻芯谢芯薪褌懈褌褍谢邪 褌邪斜谢懈褑褘",
+    "鍒嗙粍瀛楁鍑芥暟": "肖褍薪泻褑懈褟 锌芯谢褟 谐褉褍锌锌懈褉芯胁泻懈",
+    "鍒嗙粍澶存牸寮忓寲鍑芥暟": "肖褍薪泻褑懈褟 褎芯褉屑邪褌懈褉芯胁邪薪懈褟 蟹邪谐芯谢芯胁泻邪 谐褉褍锌锌褘",
+    "鍒嗙粍澶翠俊鎭�": "袠薪褎芯褉屑邪褑懈褟 蟹邪谐芯谢芯胁泻邪 谐褉褍锌锌褘",
+    "鍒嗙粍鑴氭牸寮忓寲鍑芥暟": "肖褍薪泻褑懈褟 褎芯褉屑邪褌懈褉芯胁邪薪懈褟 锌芯写胁邪谢邪 谐褉褍锌锌褘",
+    "鍒嗙粍鑴氫俊鎭�": "袠薪褎芯褉屑邪褑懈褟 锌芯写胁邪谢邪 谐褉褍锌锌褘",
+    "澶氱粍琛ㄦ牸鑴氬嚱鏁�": "肖褍薪泻褑懈褟 薪懈卸薪械谐芯 泻芯谢芯薪褌懈褌褍谢邪 褌邪斜谢懈褑褘 褋 薪械褋泻芯谢褜泻懈屑懈 谐褉褍锌锌邪屑懈",
+    "琛屾牱寮忓嚱鏁�": "肖褍薪泻褑懈褟 褋褌懈谢褟 褋褌褉芯泻懈",
+    "鍗曞厓鏍煎乏鍙冲榻�": "袙褘褉邪胁薪懈胁邪薪懈械 褟褔械械泻 锌芯 谐芯褉懈蟹芯薪褌邪谢懈",
+    "鍗曞厓鏍间笂涓嬪榻�": "袙械褉褌懈泻邪谢褜薪芯械 胁褘褉邪胁薪懈胁邪薪懈械 褟褔械械泻",
+    "涓�": "袙胁械褉褏褍",
+    "涓�": "袩芯 褑械薪褌褉褍",
+    "琛ㄦ牸澶村崟鍏冩牸宸﹀彸瀵归綈": "袚芯褉懈蟹芯薪褌邪谢褜薪芯械 胁褘褉邪胁薪懈胁邪薪懈械 褟褔械械泻 蟹邪谐芯谢芯胁泻邪",
+    "鍗曞厓鏍兼牱寮忓嚱鏁�": "肖褍薪泻褑懈褟 褋褌懈谢褟 褟褔械泄泻懈",
+    "琛ㄦ牸澶存牱寮忓嚱鏁�": "肖褍薪泻褑懈褟 褋褌懈谢褟 蟹邪谐芯谢芯胁泻邪 褌邪斜谢懈褑褘",
+    "鍗曞厓鏍兼牸寮忓寲鍑芥暟": "肖褍薪泻褑懈褟 褎芯褉屑邪褌懈褉芯胁邪薪懈褟 褟褔械泄泻懈",
+    "鍗曞厓鏍兼覆鏌撳嚱鏁�": "肖褍薪泻褑懈褟 芯褌褉懈褋芯胁泻懈 褟褔械泄泻懈",
+    "鑷姩琛ュ叏": "袗胁褌芯蟹邪锌芯谢薪械薪懈械",
+    "姣忛〉鏈�澶ц鏁�": "袦邪泻褋. 褋褌褉芯泻 薪邪 褋褌褉邪薪懈褑械",
+    "琛ㄦ牸鑴氭樉绀�": "袨褌芯斜褉邪卸械薪懈械 薪懈卸薪械谐芯 泻芯谢芯薪褌懈褌褍谢邪 褌邪斜谢懈褑褘",
+    "鏈�鍚庢樉绀�": "袩芯泻邪蟹邪褌褜 薪邪 锌芯褋谢械写薪械泄 褋褌褉邪薪懈褑械",
+    "娌℃湁瓒冲绌洪棿杩涜琛ㄦ牸鍒嗛〉锛岃璋冩暣椤电湁/椤佃剼绾�": "袧械写芯褋褌邪褌芯褔薪芯 屑械褋褌邪 写谢褟 锌芯褋褌褉邪薪懈褔薪芯谐芯 褉邪蟹写械谢械薪懈褟 褌邪斜谢懈褑褘, 芯褌褉械谐褍谢懈褉褍泄褌械 褋褌褉芯泻褍 蟹邪谐芯谢芯胁泻邪/锌芯写胁邪谢邪",
+    "娌℃湁瓒冲绌洪棿,鏄剧ず涓嬫柟鍐呭, 鍙垎椤甸珮搴�": "袧械写芯褋褌邪褌芯褔薪芯 屑械褋褌邪, 锌芯泻邪蟹邪褌褜 褋芯写械褉卸懈屑芯械 薪懈卸械, 胁褘褋芯褌褍 屑芯卸薪芯 褉邪蟹斜懈褌褜 薪邪 褋褌褉邪薪懈褑褘:",
+    "鍒楀睘鎬�": "小胁芯泄褋褌胁芯 褋褌芯谢斜褑邪",
+    "鍦ㄤ笂鏂规彃鍏ヨ": "袙褋褌邪胁懈褌褜 褋褌褉芯泻褍 胁褘褕械",
+    "鍦ㄤ笅鏂规彃鍏ヨ": "袙褋褌邪胁懈褌褜 褋褌褉芯泻褍 薪懈卸械",
+    "鍚戝乏鏂规彃鍏ュ垪": "袙褋褌邪胁懈褌褜 褋褌芯谢斜械褑 褋谢械胁邪",
+    "鍚戝彸鏂规彃鍏ュ垪": "袙褋褌邪胁懈褌褜 褋褌芯谢斜械褑 褋锌褉邪胁邪",
+    "鍒犻櫎琛�": "校写邪谢懈褌褜 褋褌褉芯泻褍",
+    "鍒犻櫎鍒�": "校写邪谢懈褌褜 褋褌芯谢斜械褑",
+    "瀵归綈": "袙褘褉邪胁薪懈胁邪薪懈械",
+    "宸�": "小谢械胁邪",
+    "宸﹀彸灞呬腑": "袩芯 褑械薪褌褉褍",
+    "鍙�": "小锌褉邪胁邪",
+    "涓�": "袙薪懈蟹褍",
+    "鍚堝苟鍗曞厓鏍�": "袨斜褗械写懈薪懈褌褜 褟褔械泄泻懈",
+    "瑙e紑鍗曞厓鏍�": "袪邪蟹褗械写懈薪懈褌褜 褟褔械泄泻懈",
+    "鏉″舰鐮佺敓鎴愬け璐�": "小斜芯泄 谐械薪械褉邪褑懈懈 褕褌褉懈褏泻芯写邪",
+    "璇锋鏌� hiprint.init 鐨� provider 鏄惁閰嶇疆浜�": "袩褉芯胁械褉褜褌械, 薪邪褋褌褉芯械薪 谢懈 锌芯褋褌邪胁褖懈泻 hiprint.init",
+    "宸茬Щ闄�'tableCustom',璇锋浛鎹娇鐢�'table'璇︽儏瑙佹洿鏂拌褰�": "'TableCustom' 斜褘谢邪 褍写邪谢械薪邪, 蟹邪屑械薪懈褌械 械械 薪邪 'table', 锌芯写褉芯斜薪芯褋褌懈 褋屑. 胁 卸褍褉薪邪谢械 芯斜薪芯胁谢械薪懈泄",
+    "纭畾": "袩芯写褌胁械褉写懈褌褜",
+    "鍒犻櫎": "校写邪谢懈褌褜",
+    "杩炴帴瀹㈡埛绔け璐�": "袧械 褍写邪谢芯褋褜 锌芯写泻谢褞褔懈褌褜褋褟 泻 泻谢懈械薪褌褍",
+    "鍩虹": "袨褋薪芯胁薪褘械",
+    "杈规": "袚褉邪薪懈褑邪",
+    "鍒�": "小褌芯谢斜械褑",
+    "楂樼骇": "袛芯锌芯谢薪懈褌械谢褜薪芯",
+    "闈㈡澘鎺掑垪": "袪邪褋锌芯谢芯卸械薪懈械 锌邪薪械谢懈",
+    "鎺掑垪鏂瑰紡": "小锌芯褋芯斜 褉邪褋锌褉械写械谢械薪懈褟",
+    "鍨傜洿闂磋窛%s": "袙械褉褌懈泻邪谢褜薪褘泄 懈薪褌械褉胁邪谢 %s",
+    "姘村钩闂磋窛%s": "袚芯褉懈蟹芯薪褌邪谢褜薪褘泄 懈薪褌械褉胁邪谢 %s",
+    "杈规鍦嗚": "袪邪写懈褍褋 谐褉邪薪懈褑褘",
+    "鏄剧ず鐮佸��": "袨褌芯斜褉邪卸械薪懈械 泻芯写芯胁芯谐芯 蟹薪邪褔械薪懈褟",
+    "褰撳墠闇�瑕侀珮搴�": "孝械泻褍褖邪褟 褌褉械斜褍械屑邪褟 胁褘褋芯褌邪"
+}
\ No newline at end of file
diff --git a/src/main.js b/src/main.js
index 68ecebe..ffe8d26 100644
--- a/src/main.js
+++ b/src/main.js
@@ -60,8 +60,21 @@
 Vue.use(plugins)
 DictData.install()
 
+// hiprint鎸傝浇
+import Antd from 'ant-design-vue';
+import 'ant-design-vue/dist/antd.css';
+Vue.use(Antd);
 
+import {hiPrintPlugin} from './hiprintVue/index'
+Vue.use(hiPrintPlugin)
 
+import Storage from 'vue-ls'
+let options = {
+  namespace: 'hiPrint-',
+  name: 'ls',
+  storage: 'local',
+};
+Vue.use(Storage, options);
 /**
  * If you don't want to use mock-server
  * you want to use MockJs for mock api
@@ -93,6 +106,7 @@
     size: Cookies.get('size') || 'medium' // set element-ui default size
   })
 
+
   Vue.config.productionTip = false
 
   new Vue({
diff --git a/src/permission.js b/src/permission.js
index c18fd23..e3be4bf 100644
--- a/src/permission.js
+++ b/src/permission.js
@@ -27,7 +27,8 @@
   "/FbStepFoldOutBillList",
   "/warehouse/barcodeMaster/Gy_BarCodeBill_JinLong",
   "/warehouse/barcodeMaster/Gy_BarCodeBill_JinLong_AutoLogin",
-  "/warehouse/barcodeMaster/Gy_BarCodeBillList_JinLong_AutoLogin"
+  "/warehouse/barcodeMaster/Gy_BarCodeBillList_JinLong_AutoLogin",
+  "/printDesigner"
 ]; // no redirect whitelist
 
 const isWhiteList = (path) => {
@@ -54,7 +55,7 @@
         // 鍒ゆ柇褰撳墠鐢ㄦ埛鏄惁宸叉媺鍙栧畬user_info淇℃伅
         store .dispatch("GetInfo").then(() => {
             isRelogin.show = false;
-            
+
             store.dispatch("GenerateRoutes").then((accessRoutes) => {
               // 鏍规嵁roles鏉冮檺鐢熸垚鍙闂殑璺敱琛�
               router.addRoutes(accessRoutes); // 鍔ㄦ�佹坊鍔犲彲璁块棶璺敱琛�
diff --git a/src/router/index.js b/src/router/index.js
index bab52bd..21d0a95 100644
--- a/src/router/index.js
+++ b/src/router/index.js
@@ -169,7 +169,7 @@
     ],
   },
   //#endregion
-  
+
   //#region 鏉$爜鐢熸垚_閿﹂殕
   {
     path: "/warehouse/barcodeMaster/Gy_BarCodeBill_JinLong",
@@ -194,7 +194,7 @@
     ],
   },
   //#endregion
-  
+
   //#region 鏉$爜鐢熸垚_閿﹂殕_鑷姩鐧诲綍
   {
     path: "/warehouse/barcodeMaster/Gy_BarCodeBill_JinLong_AutoLogin",
@@ -1727,6 +1727,14 @@
     hidden: true,
   },
   //#endregion
+
+  //#region 鎵撳嵃璁捐鍣�
+  {
+    path: "/printDesigner",
+    component: () => import("@/views/printTemplateDesigner/design/index.vue"),
+    hidden: true,
+  },
+  //#endregion
   //#endregion
   //#endregion
 
@@ -1801,7 +1809,7 @@
        {
         path: "GyUnit",
         component: () => import("@/views/basic/gyUnit/gyUnit"),
-       
+
         name: "IframeGyUnit",
         meta: { title: "璁¢噺鍗曚綅鍒楄〃", noCache: true, noLoading: true },
       },
@@ -1810,14 +1818,14 @@
         component: () => import("@/views/basic/gyUnit/gyUnitEdit"), // 璁¢噺鍗曚綅缂栬緫
         name: "IframeGyUnitEdit",
         meta: { title: "璁¢噺鍗曚綅缂栬緫", noCache: true, noLoading: true },
-        
+
       },
       {
         path: "GyUnitGroup",
         component: () => import("@/views/basic/gyUnit/gyUnitGroup"), // 璁¢噺鍗曚綅缁勫垪琛�
         name: "IframeGyUnitGroup",
         meta: { title: "璁¢噺鍗曚綅缁勫垪琛�", noCache: true, noLoading: true },
-        
+
       },
       {
         path: "GySupplier",
@@ -1843,7 +1851,7 @@
         name: "IframeGyCarEdit",
         meta: { title: "杞﹁締缂栬緫", noCache: true, noLoading: true },
       },
-      
+
       {
         path: "GyProperty",
         component: () => import("@/views/basic/gyProperty/gyPropertyList"), // 杈呭姪灞炴��
diff --git a/src/utils/decodeVerHiPrint.js b/src/utils/decodeVerHiPrint.js
new file mode 100644
index 0000000..bc1a721
--- /dev/null
+++ b/src/utils/decodeVerHiPrint.js
@@ -0,0 +1,26 @@
+/*
+ * @Date: 2023-09-14 23:11:39
+ * @LastEditors: admin@54xavier.cn
+ * @LastEditTime: 2023-09-15 01:14:13
+ * @FilePath: /vue-plugin-hiprint/src/utils/index.js
+ */
+/**
+ * @description: 瑙f瀽鐗堟湰鍙蜂俊鎭�
+ * @param {String} ver 鐗堟湰鍙�
+ * @return {Object} 瑙f瀽鍚庣殑鐗堟湰鍙蜂俊鎭�
+ */
+export function decodeVer(ver) {
+  var matchObj =
+    ver.match(
+      /(?<range>\^|~)?(?<version>(?<mainver>\d+(\.\d+){0,2})(?<appendver>-\w+)?)?/
+    )?.groups || {};
+  matchObj = { ...matchObj, ver };
+  matchObj.mainVal =
+    matchObj.mainver
+      ?.split(".")
+      ?.map((v, i) => v * Math.pow(10, 6 - i * 3))
+      ?.reduce((acc, curr) => acc + curr, 0) || 0;
+  matchObj.appendVal = (matchObj.appendver?.match(/[0-9]+/) || 0) * 1;
+  matchObj.verVal = `${matchObj.mainVal}.${matchObj.appendVal}` * 1;
+  return matchObj;
+}
\ No newline at end of file
diff --git a/src/utils/request.js b/src/utils/request.js
index dc411ac..e330861 100644
--- a/src/utils/request.js
+++ b/src/utils/request.js
@@ -6,6 +6,7 @@
 import { tansParams, blobValidate } from "@/utils/ruoyi"
 import cache from '@/plugins/cache'
 import { saveAs } from 'file-saver'
+import { setToken } from './auth'
 
 let downloadLoadingInstance
 // 鏄惁鏄剧ず閲嶆柊鐧诲綍
@@ -19,15 +20,18 @@
   // 瓒呮椂
   timeout: null
 })
+
+
+
 // request鎷︽埅鍣�
 service.interceptors.request.use(config => {
   // 鏄惁闇�瑕佽缃� token
   const isToken = (config.headers || {}).isToken === false
   // 鏄惁闇�瑕侀槻姝㈡暟鎹噸澶嶆彁浜�
   const isRepeatSubmit = (config.headers || {}).repeatSubmit === false
-  // if (getToken() && !isToken) {
-  //   config.headers['Authorization'] = 'Bearer ' + getToken() // 璁╂瘡涓姹傛惡甯﹁嚜瀹氫箟token 璇锋牴鎹疄闄呮儏鍐佃嚜琛屼慨鏀�
-  // }
+  if (getToken() && !isToken) {
+    config.headers['Authorization'] = 'Bearer ' + getToken() // 璁╂瘡涓姹傛惡甯﹁嚜瀹氫箟token 璇锋牴鎹疄闄呮儏鍐佃嚜琛屼慨鏀�
+  }
   // get璇锋眰鏄犲皠params鍙傛暟
   if (config.method === 'get' && config.params) {
     let url = config.url + '?' + tansParams(config.params)
@@ -80,6 +84,13 @@
     if (res.request.responseType ===  'blob' || res.request.responseType ===  'arraybuffer') {
       return res.data
     }
+
+    // 鍒ゆ柇杩斿洖淇℃伅涓槸鍚︽惡甯oken淇℃伅锛屽鏋滄惡甯oken淇℃伅锛屽垯灏唗oken鍐欏叆cookie
+    let {token} = res.data
+    if(token) {
+      setToken(token)
+    }
+
     if (code === 401) {
       if (!isRelogin.show) {
         isRelogin.show = true
@@ -93,17 +104,17 @@
       })
     }
       return Promise.reject('鏃犳晥鐨勪細璇濓紝鎴栬�呬細璇濆凡杩囨湡锛岃閲嶆柊鐧诲綍銆�')
-    } 
+    }
     // else if (code === 500) {
     //   Message({ message: msg, type: 'error' })
     //   return Promise.reject(new Error(msg))
     // } else if (code === 601) {
     //   Message({ message: msg, type: 'warning' })
     //   return Promise.reject('error')
-    // } else if (code !== 200) {      
+    // } else if (code !== 200) {
     //   Notification.error({ title: msg })
     //   return Promise.reject('error')
-    // } 
+    // }
     else {
       return res.data
     }
@@ -159,4 +170,69 @@
   console.log(`Axios 鍏ㄥ眬 baseURL 宸茶缃細${baseUrl}`);
 };
 
+// 閲嶅畾鍚戝叏灞�axios鍒拌axios瀹炰緥锛岀‘淇濇嫤鎴櫒鐢熸晥
+axios.interceptors.request = service.interceptors.request
+// 閫氳繃service 鎺ュ彛杩涜鐨剅esponse澶勭悊鍜� 閫氳繃axios澶勭悊鐨勪笉鍚岋紝闇�瑕佸彟鍋氬鐞�
+axios.interceptors.response.use(res => {
+  // 鏈缃姸鎬佺爜鍒欓粯璁ゆ垚鍔熺姸鎬�
+  const code = res.data.code || 200
+  // 鑾峰彇閿欒淇℃伅
+  const msg = errorCode[code] || res.data.msg || errorCode['default']
+  // 浜岃繘鍒舵暟鎹垯鐩存帴杩斿洖
+  if (res.request.responseType ===  'blob' || res.request.responseType ===  'arraybuffer') {
+    return res.data
+  }
+
+  // 鍒ゆ柇杩斿洖淇℃伅涓槸鍚︽惡甯oken淇℃伅锛屽鏋滄惡甯oken淇℃伅锛屽垯灏唗oken鍐欏叆cookie
+  let {token} = res.data
+  if(token) {
+    setToken(token)
+  }
+
+  if (code === 401) {
+    if (!isRelogin.show) {
+      isRelogin.show = true
+      MessageBox.confirm('鐧诲綍鐘舵�佸凡杩囨湡锛屾偍鍙互缁х画鐣欏湪璇ラ〉闈紝鎴栬�呴噸鏂扮櫥褰�', '绯荤粺鎻愮ず', { confirmButtonText: '閲嶆柊鐧诲綍', cancelButtonText: '鍙栨秷', type: 'warning' }).then(() => {
+        isRelogin.show = false
+        store.dispatch('LogOut').then(() => {
+          location.href = '/index'
+        })
+    }).catch(() => {
+      isRelogin.show = false
+    })
+  }
+    return Promise.reject('鏃犳晥鐨勪細璇濓紝鎴栬�呬細璇濆凡杩囨湡锛岃閲嶆柊鐧诲綍銆�')
+  }
+  // else if (code === 500) {
+  //   Message({ message: msg, type: 'error' })
+  //   return Promise.reject(new Error(msg))
+  // } else if (code === 601) {
+  //   Message({ message: msg, type: 'warning' })
+  //   return Promise.reject('error')
+  // } else if (code !== 200) {
+  //   Notification.error({ title: msg })
+  //   return Promise.reject('error')
+  // }
+  else {
+    return res
+  }
+},
+error => {
+  console.log('err' + error)
+  let { message } = error
+  if (message == "Network Error") {
+    message = "鍚庣鎺ュ彛杩炴帴寮傚父"
+  } else if (message.includes("timeout")) {
+    message = "绯荤粺鎺ュ彛璇锋眰瓒呮椂"
+  } else if (message.includes("Request failed with status code")) {
+    message = "绯荤粺鎺ュ彛" + message.substr(message.length - 3) + "寮傚父"
+  }
+  Message({ message: message, type: 'error', duration: 5 * 1000 })
+  return Promise.reject(error)
+}
+)
+
+// axios.defaults = service.defaults
+
+
 export default service
diff --git a/src/utils/ruoyi.js b/src/utils/ruoyi.js
index 3de2d98..7d76329 100644
--- a/src/utils/ruoyi.js
+++ b/src/utils/ruoyi.js
@@ -193,7 +193,9 @@
   for (const propName of Object.keys(params)) {
     const value = params[propName]
     var part = encodeURIComponent(propName) + "="
-    if (value !== null && value !== "" && typeof (value) !== "undefined") {
+    if (value !== null 
+      // && value !== ""
+      && typeof (value) !== "undefined") {
       if (typeof value === 'object') {
         for (const key of Object.keys(value)) {
           if (value[key] !== null && value[key] !== "" && typeof (value[key]) !== 'undefined') {
diff --git a/src/views/CaiGouGuanLi/CaiGouRuKu/Kf_POStockInBillEdit.vue b/src/views/CaiGouGuanLi/CaiGouRuKu/Kf_POStockInBillEdit.vue
index 9a49282..5169afa 100644
--- a/src/views/CaiGouGuanLi/CaiGouRuKu/Kf_POStockInBillEdit.vue
+++ b/src/views/CaiGouGuanLi/CaiGouRuKu/Kf_POStockInBillEdit.vue
@@ -3,7 +3,7 @@
     <div style=" margin-bottom: 10px; border-bottom: 1px solid #f6f6f6;">
       <el-button type="primary" @click="handleAdd(OperationType = 1)" v-if="addBtnShow">鏂板</el-button>
       <el-button type="primary" @click="submitForm" :disabled="subDisabled">淇� 瀛�</el-button>
-      <el-button type="primary" @click="set_CheckBill(0, form)">瀹� 鏍�</el-button>
+      
       <el-button type="primary" @click="close">閫� 鍑�</el-button>
       <!-- <el-button @click="cancel">鍙� 娑�</el-button> -->
     </div>
@@ -26,7 +26,7 @@
             <el-col :span="6">
               <el-form-item label="涓氬姟鍛�" prop="HEmpName">
                 <el-input v-model="form.HEmpName" placeholder="璇疯緭鍏ヤ笟鍔″憳" disabled>
-                  <el-button slot="append" icon="el-icon-search"></el-button>
+                <el-button slot="append" icon="el-icon-search" @click="openDataDialog(5,empType=1)"></el-button>
                 </el-input>
               </el-form-item>
             </el-col>
@@ -42,7 +42,7 @@
             <el-col :span="6">
               <el-form-item label="渚涘簲鍟�" prop="HSupName">
                 <el-input v-model="form.HSupName" placeholder="璇疯緭鍏ヤ緵搴斿晢" disabled>
-                  <el-button slot="append" icon="el-icon-search"></el-button>
+                  <el-button slot="append" icon="el-icon-search" @click="openDataDialog(6)"></el-button>
                 </el-input>
               </el-form-item>
             </el-col>
@@ -54,14 +54,14 @@
             <el-col :span="6">
               <el-form-item label="浠撳簱" prop="HWHName">
                 <el-input v-model="form.HWHName" placeholder="璇疯緭鍏ヤ粨搴�">
-                  <el-button slot="append" icon="el-icon-search"></el-button>
+                   <el-button slot="append" icon="el-icon-search" @click="openDataDialog(2,eHWHType=1)"></el-button>
                 </el-input>
               </el-form-item>
             </el-col>
             <el-col :span="6">
               <el-form-item label="楠屾敹鍛�" prop="HSecManagerName">
                 <el-input v-model="form.HSecManagerName" placeholder="璇疯緭鍏ラ獙鏀跺憳" disabled>
-                  <el-button slot="append" icon="el-icon-search"></el-button>
+                 <el-button slot="append" icon="el-icon-search" @click="openDataDialog(5,empType=2)"></el-button>
                 </el-input>
               </el-form-item>
             </el-col>
@@ -222,14 +222,14 @@
         </el-table-column>
         <el-table-column align="center" label="鏀舵枡浠撳簱" width="120">
           <template slot-scope="scope">
-            <el-input v-model="scope.row.鏀舵枡浠撳簱" placeholder="璇疯緭鍏ユ敹鏂欎粨搴�" @keyup.native.f7="openDataDialog(2, scope.row)"
-              @dblclick.native="openDataDialog(2, scope.row)" />
+            <el-input v-model="scope.row.鏀舵枡浠撳簱" placeholder="璇疯緭鍏ユ敹鏂欎粨搴�" @keyup.native.f7="openDataDialog(2,scope.row,eHWHType=2)"
+              @dblclick.native="openDataDialog(2, scope.row,eHWHType=2)" />
           </template>
         </el-table-column>
         <el-table-column align="center" label="浠撲綅鍚嶇О" width="120">
           <template slot-scope="scope">
-            <el-input v-model="scope.row.鏀舵枡浠撲綅" placeholder="璇疯緭鍏ヤ粨浣嶅悕绉�" @keyup.native.f7="openDataDialog(2, scope.row)"
-              @dblclick.native="openDataDialog(2, scope.row)" />
+            <el-input v-model="scope.row.浠撲綅鍚嶇О" placeholder="璇疯緭鍏ヤ粨浣嶅悕绉�" @keyup.native.f7="openDataDialog(9, scope.row)"
+              @dblclick.native="openDataDialog(9, scope.row)" />
           </template>
         </el-table-column>
         <el-table-column align="center" label="澶囨敞" width="120">
@@ -258,11 +258,17 @@
     <!-- 鏁版嵁寮圭獥 -->
     <el-dialog :title="dialogTitle" :visible.sync="openData" width="1280px" append-to-body>
       <!-- 閮ㄩ棬 -->
-      <Dept @deptEmitDb="dbEmitData" @deptEmit="emitData" v-if="deptShow" />
+       <Dept @deptEmitDb="dbEmitData" @deptEmit="emitData" :openPage="HModName" v-if="deptShow" />
       <!-- 浠撳簱 -->
-      <Warehouse @deptEmitDb="dbEmitData" @deptEmit="emitData" v-if="warehouseShow" />
+      <Warehouse @deptEmitDb="dbEmitData" @deptEmit="emitData" :openPage="HModName" v-if="warehouseShow" />
       <!-- 鐗╂枡 -->
-      <Material @deptEmitDb="dbEmitData" @deptEmit="emitData" v-if="materialShow" />
+      <Material @deptEmitDb="dbEmitData" @deptEmit="emitData"  :openPage="HModName" v-if="materialShow" />
+      <!-- 鑱屽憳 -->
+      <GyEmployee @deptEmitDb="dbEmitData" @deptEmit="emitData" :openPage="HModName" v-if="gyEmployeeShow" />
+      <!-- 渚涘簲鍟� -->
+      <GySupplier @deptEmitDb="dbEmitData" @deptEmit="emitData" :openPage="HModName" v-if="gySupplierShow" />
+         <!-- 浠撲綅 -->
+      <GyStockPlace @deptEmitDb="dbEmitData" @deptEmit="emitData" :openPage="HModName" :openPageData="openPageData" v-if="gyStockPlaceShow" />
       <div slot="footer" class="dialog-footer">
         <el-button type="primary" @click="deptClickSub">纭� 瀹�</el-button>
         <el-button @click="deptClose">鍙� 娑�</el-button>
@@ -278,13 +284,16 @@
 import axios from 'axios'
 import moment from 'moment';
 import RowSettings from '@/views/component/rowSettings'
-import Dept from '@/views/component/dept'
-import Warehouse from '@/views/component/warehouse'
-import Material from '@/views/component/material'
+import GyEmployee from '@/views/basic/gyEmployee/gyEmployee.vue'
+import Warehouse from '@/views/basic/gyWarehouse/gyWarehouse.vue'
+import Dept from '@/views/basic/gy/gyDepartment'
+import GySupplier from '@/views/basic/gy/gySupplier.vue'
+import GyStockPlace from '@/views/basic/gyStockPlace/gyStockPlace.vue'
+import Material from '@/views/gyMaterial/GyMaterial'
 
 export default {
   name: 'SellOutBill',
-  components: { Dept, Warehouse, Material, RowSettings },
+  components: { Dept, Warehouse, Material, RowSettings,GySupplier ,GyStockPlace,GyEmployee},
   props: {
     OperationType: { type: Number, },
     linterid: { type: Number, },
@@ -295,14 +304,14 @@
   data() {
     return {
       baseURL: process.env.VUE_APP_BASE_API,                                     //鍚庣鎺ュ彛鍓嶇紑(鍚庣鏈嶅姟鍣↖P)
-
+      HModName:"Sc_MouldProdOutBillEdit",
       organizationList: [],                                                      //椤甸潰鍒濆鍖栫粍缁囧垪琛�
 
       loading: true,                                                             // 閬僵灞�
 
       addBtnShow: false,                                                         //鏂板鎸夐挳鏄剧ず鏍囪
       subDisabled: false,                                                        //淇濆瓨鎸夐挳绂佺敤鏍囪
-
+      openPageData:{},//浼犲叆寮圭獥鐨勬暟鎹�
       formShow: false,                                                           //琛ㄥ崟鏄惁鏄剧ず鏍囪
       formLoading: true,                                                         //琛ㄥ崟鍔犺浇閬僵
       zzSelDis: false,                                                           //缁勭粐涓嬫媺鍒楄〃绂佺敤鏍囪
@@ -315,6 +324,8 @@
       dialogTypeNum: null,                                                       //閮ㄩ棬寮圭獥1锛屼粨搴撳脊绐�2
       deptShow: false,                                                           //閮ㄩ棬鏁版嵁缁勪欢鏄剧ず鏍囪
       warehouseShow: false,                                                      //浠撳簱鏁版嵁缁勪欢鏄剧ず鏍囪
+      gyEmployeeShow:false,
+      gySupplierShow :false,
       materialShow: false,                                                       //鐗╂枡鏁版嵁缁勪欢鏄剧ず鏍囪
       stockPlaceShow: false,                                                     //浠撲綅鏁版嵁缁勪欢鏄剧ず鏍囪
       deptform: {},                                                              //寮圭獥閫変腑鏁版嵁
@@ -509,57 +520,60 @@
     //#region 椤甸潰鏁版嵁鍒濆鍖�
     reset() {
       this.form = {
-        HInterID: 0,
-        HBillNo: "",
-        HDate: new Date(),
-        HEmpID: 0,
-        HEmpName: "",
-        HDeptID: 0,
-        HDeptName: "",
-        HSupID: 0,
-        HSupName: "",
-        HInvoiceBillNo: "",
-        HWHID: 0,
-        HWHName: "",
-        HSecManagerID: 0,
-        HSecManagerName: "",
-        HRemark: "",
-        HOrgID: sessionStorage["OrganizationID"] - 0,
-        HMaker: sessionStorage["HUserName"],
-        HChecker: "",
-        HCloseMan: "",
-        HUpDater: "",
-        HDeleteMan: "",
-        HMakeDate: "",//new Date().format("yyyy-MM-dd hh:mm:ss"),
-        HCheckDate: "",
-        HCloseDate: "",
-        HUpDateDate: "",
-        HDeleteDate: "",
-        BillType: '1402',
-        HBillSubType: '1205',
-        HSTOCKORGID: sessionStorage["OrganizationID"] - 0,//缁勭粐id
-        HOWNERID: sessionStorage["OrganizationID"] - 0,
+      HInterID: 0,
+      HBillNo: " ",
+      HDate: new Date(),
+      HEmpID: 1,
+      HEmpName: " ",
+      HDeptID: 1,
+      HDeptName: " ",
+      HSupID: 1,
+      HSupName: " ",
+      HInvoiceBillNo: " ",
+      HWHID: 1,
+      HWHName: " ",
+      HSecManagerID: 1,
+      HSecManagerName: " ",
+      HRemark: " ",
+      HOrgID: sessionStorage["OrganizationID"] - 0,
+      HMaker: sessionStorage["HUserName"],
+      HChecker: " ",
+      HCloseMan: " ",
+      HUpDater: " ",
+      HDeleteMan: " ",
+      
+      HMakeDate: moment(new Date()).format("YYYY-MM-DD HH:mm:ss"),
+      HCheckDate: moment(new Date()).format("YYYY-MM-DD HH:mm:ss"),
+      HCloseDate: moment(new Date()).format("YYYY-MM-DD HH:mm:ss"),
+      HUpDateDate: moment(new Date()).format("YYYY-MM-DD HH:mm:ss"),
+      HDeleteDate: moment(new Date()).format("YYYY-MM-DD HH:mm:ss"),
 
-        
-        HManagerID: 0,
-        HManagerName:"",
-        HKeeperID: 0,
-        HKeeperName: "",
-        HProjectID: 0,
-        HProjectNumber: "",
-        HProjectName: "",
-        
-        
-        HCurID: 0,
-        HCurName: '',
-        HExRate: 1,
-        HSourceBillType: "",
-        HMainSourceInterID: 0,
-        HMainSourceEntryID: 0,
-        HMainSourceBillType: '',
-        HMainSourceBillNo: '',
-        HExplanation :"",
-        HInnerBillNo: "",
+      HBillType: "1201",
+      BillType: '1402',
+      HBillSubType: '1201',
+      HSTOCKORGID: sessionStorage["OrganizationID"] - 0,
+      HOWNERID: sessionStorage["OrganizationID"] - 0,
+      eHWHType: 1,
+      empType: 1,
+
+      HManagerID: 1,
+      HManagerName: " ",
+      HKeeperID: 1,
+      HKeeperName: " ",
+      HProjectID: 1,
+      HProjectNumber: " ",
+      HProjectName: " ",
+
+      HCurID: 1,
+      HCurName: " ",
+      HExRate: 1,
+      HSourceBillType: "0",
+      HMainSourceInterID: 1,
+      HMainSourceEntryID: 1,
+      HMainSourceBillType: '0',
+      HMainSourceBillNo: ' ',
+      HExplanation: " ",
+      HInnerBillNo: " "
       }
       this.editData = []
       this.editBtData = []
@@ -730,7 +744,7 @@
         this.deptShow = true
         this.openData = true
       } else if (num == 2) {
-        this.dialogTitle = '鍑哄簱浠撳簱鍒楄〃'
+        this.dialogTitle = '浠撳簱鍒楄〃'
         this.warehouseShow = true
         this.openData = true
       } else if (num == 3) {
@@ -741,6 +755,28 @@
         this.dialogTitle = '浠撲綅鍒楄〃'
         this.stockPlaceShow = true
         this.openData = true
+      }else if (num == 5) {
+        if(this.empType == 1){
+          this.dialogTitle = '涓氬姟鍛樺垪琛�'
+        }else{
+          this.dialogTitle = '楠屾敹鍛樺憳鍒楄〃'
+        }
+        this.gyEmployeeShow = true
+        this.openData = true
+      }
+      else if (num == 6) {
+        this.dialogTitle = '渚涘簲鍟嗗垪琛�'
+        this.gySupplierShow = true
+        this.openData = true
+      }else if(num ==9 ){
+        if(this.editData[this.zbIndex].鏀舵枡浠撳簱){
+          this.dialogTitle = '浠撲綅鍒楄〃'
+          this.openPageData.HWHName = this.editData[this.zbIndex].鏀舵枡浠撳簱
+          this.gyStockPlaceShow = true
+          this.openData = true
+        }else{
+          this.$modal.msgError("璇峰厛閫夋嫨浠撳簱!");
+        }
       }
     },
     //#region 灏嗘暟鎹脊绐楀叏閮ㄥ彇娑堝姞杞�
@@ -748,6 +784,9 @@
       this.deptShow = false
       this.warehouseShow = false
       this.materialShow = false
+      this.gyEmployeeShow =false
+      this.gySupplierShow = false
+      this.gyStockPlaceShow = false
     },
     //#endregion
     //#endregion
@@ -759,34 +798,78 @@
         this.form.HDeptID = deptRow.HItemID
         this.form.HEmpID = deptRow.HEmpID
         this.form.HManagerName = deptRow.璐熻矗浜�
+        this.deptShow = false
         this.openData = false
       } 
-      else if (num == 2) {                                                      //鏀舵枡浠撳簱
-        this.editData[this.zbIndex].HWHID = deptRow.HItemID;
-        this.editData[this.zbIndex].鏀舵枡浠撳簱 = deptRow.浠撳簱鍚嶇О;
-        this.openData = false
-      }
-      else if (num == 4) {                                                      //浠撲綅
-        this.editData[this.zbIndex].HSPID = deptRow.HItemID;
-        this.editData[this.zbIndex].浠撲綅鍚嶇О = deptRow.浠撲綅鍚嶇О;
-        this.openData = false
+      else if (num == 2) {
+        if(this.eHWHType == 1){
+              this.form.HWHName = deptRow.浠撳簱鍚嶇О
+              this.form.HWHID = deptRow.HItemID
+              this.form.HWHNumber = deptRow.浠撳簱浠g爜
+              this.openData = false
+            }else{
+              this.editData[this.zbIndex].HWHID = deptRow.HItemID;
+              this.editData[this.zbIndex].鏀舵枡浠撳簱 = deptRow.浠撳簱鍚嶇О;
+              this.openData = false
+            }
+          this.openData = false
       }
       else if (num == 3) {                                                      //鐗╂枡
         this.editData[this.zbIndex].HMaterID = deptRow.HItemID;
         this.editData[this.zbIndex].鐗╂枡浠g爜 = deptRow.鐗╂枡浠g爜;
         this.editData[this.zbIndex].鐗╂枡鍚嶇О = deptRow.鐗╂枡鍚嶇О;
         this.editData[this.zbIndex].HUnitID = deptRow.HUnitID;
-        this.editData[this.zbIndex].瑙勬牸鍨嬪彿 = deptRow.瑙勬牸鍨嬪彿
-        this.editData[this.zbIndex].璁¢噺鍗曚綅 = deptRow.璁¢噺鍗曚綅鍚嶇О
-        this.editData[this.zbIndex].HTaxPrice = deptRow.鍚◣鎴愭湰浠�
-        this.editData[this.zbIndex].HTaxRate = deptRow.榛樿绋庣巼
+        this.editData[this.zbIndex].瑙勬牸鍨嬪彿 = deptRow.瑙勬牸鍨嬪彿;
+        this.editData[this.zbIndex].璁¢噺鍗曚綅 = deptRow.璁¢噺鍗曚綅鍚嶇О;
+        this.editData[this.zbIndex].HTaxPrice = deptRow.鍚◣鎴愭湰浠�;
+        this.editData[this.zbIndex].HTaxRate = deptRow.榛樿绋庣巼;
+        this.materialShow = false
         this.openData = false
       }
+      else if (num == 4) {                                                      //浠撲綅
+          if(this.empType == 1){
+              this.form.HEmpName = deptRow.鑱屽憳鍚嶇О
+              this.form.HEmpID = deptRow.HItemID
+            }else if(this.empType == 2){
+              this.form.HSecManagerName = deptRow.鑱屽憳鍚嶇О
+              this.form.HSecManagerID = deptRow.HItemID
+            }
+            this.gyEmployeeShow =false
+            this.openData = false
+      }
+       else if (num == 5) {                                    //鑱屽憳
+            if(this.empType == 1){
+              this.form.HEmpName = deptRow.鑱屽憳鍚嶇О
+              this.form.HEmpID = deptRow.HItemID
+            }else if(this.empType == 2){
+              this.form.HMangerName = deptRow.鑱屽憳鍚嶇О
+              this.form.HMangerID = deptRow.HItemID
+            }else if(this.empType == 3){
+              this.form.HSecManagerName = deptRow.鑱屽憳鍚嶇О
+              this.form.HSecManagerID = deptRow.HItemID
+            }else if(this.empType == 4){
+              this.form.HKeeperName = deptRow.鑱屽憳鍚嶇О
+              this.form.HKeeperID = deptRow.HItemID
+            }
+            this.openData = false
+        }
+        else if (num == 6) {
+            this.form.HSupName = deptRow.渚涘簲鍟嗗悕绉�
+            this.form.HSupID = deptRow.HItemID
+            this.openData = false
+        }
+        else if (num == 9){
+            this.editData[this.zbIndex].HSPID = deptRow.HItemID
+            this.editData[this.zbIndex].浠撲綅鍚嶇О = deptRow.浠撲綅鍚嶇О
+            this.gyStockPlaceShow = false
+            this.openData = false
+          }
     },
     //#endregion
 
     //#region 寮圭獥鏁版嵁鍗曞嚮浜嬩欢
     emitData(deptRow, num) {
+      
       this.dialogTypeNum = num
       this.deptform = deptRow
     },
@@ -813,12 +896,12 @@
       this.$refs["form"].validate(valid => {
         if (valid) {
           let fhck = false
-          this.editData.map((item, index) => {
-            if (!item.鍙戣揣浠撳簱) {
-              fhck = true
-              this.$modal.msgError("绗�" + (index + 1) + "琛岋細鍙戣揣浠撳簱鏈�夋嫨锛�");
-            }
-          })
+          // this.editData.map((item, index) => {
+          //   if (!item.鍙戣揣浠撳簱) {
+          //     fhck = true
+          //     this.$modal.msgError("绗�" + (index + 1) + "琛岋細鍙戣揣浠撳簱鏈�夋嫨锛�");
+          //   }
+          // })
           this.$nextTick(() => {
             if (!fhck) {
               var sMainStr = JSON.stringify(this.form);
@@ -826,7 +909,7 @@
               var sMainSub = sMainStr + ';' + sSubStr + ';' + sessionStorage["HUserName"] + ';' + this.OperationType;
               axios({
                 method: 'post',
-                url: this.$baseUrl + "/Kf_SellOutBill/SaveSellOutBillList",
+                url: this.$baseUrl + "/Kf_POStockInBill/SaveSellOutBillList",
                 data: {
                   'msg': sMainSub
                 },
@@ -834,7 +917,7 @@
                 if (response.data.count == 1) {
                   this.subDisabled = true//璁剧疆淇濆瓨鎸夐挳涓嶅彲鐢�
                   this.$modal.msgSuccess(response.data.Message);
-                  this.get_MAXNum_Task(1);//璁剧疆娴佹按鍙峰鍔�
+                  // this.get_MAXNum_Task(1);//璁剧疆娴佹按鍙峰鍔�
                   if (response.data.Verify == "Y") //鑷姩瀹℃牳
                   {
                     this.set_CheckBill(0, this.form); //瀹℃牳
@@ -914,7 +997,7 @@
           HMoney: 0,
           HTaxMoney: 0,
           HWHID: 0,
-          鍙戣揣浠撳簱: '',
+          鏀舵枡浠撳簱: '',
           HRemark: '',
           HQty_Full: 0,
           HQty_Empty: 0,
@@ -924,15 +1007,15 @@
           HSalePrice: 0,
           HSeOrderInterID: 741,
           HSeOrderEntryID: 18,
-          HSeOrderBillNo: 'XSFH00000747',
+          HSeOrderBillNo: '',
           HSourceInterID: 741,
           HSourceEntryID: 18,
-          HSourceBillNo: 'XSFH00000747',
+          HSourceBillNo: '',
           HSourceBillType: 1402,
           HRelationQty: 0,
           HRelationMoney: 0,
           HSPID: 0,
-          HSPName: '',
+          浠撲綅鍚嶇О: '',
           HSPGroupID: 0,
           HSPGroupName: '',
           HSCWHID: 0,
@@ -1076,23 +1159,26 @@
     },
     //#endregion
 
-    //#region 鑾峰彇鏈�澶у崟鎹彿
-    get_MAXNum_Task(Type) {
-      var sql = `exec h_p_Xt_GetMaxBillNo_SubType '1201','${this.form.HDate}',0,0,0,'${Type}','${this.form.HDeptID}'`;
-      axios({
-        method: 'get',
-        url: this.$baseUrl + "/CommonModel/searchMethod",
-        params: { "sql": sql, "user": sessionStorage["HUserName"], "ModRightNameCheck": "" },
-      }).then(response => {
-        if (response.data.count == 1) {
-          this.form.HBillNo = response.data.data[0].HBillNo;
-        } else {
-          this.$modal.msgError(response.data.code + response.data.Message);
-        }
-      }).catch(error => {
-        this.$modal.msgError("鎺ュ彛璇锋眰澶辫触!");
-      });
-    },
+    // //#region 鑾峰彇鏈�澶у崟鎹彿
+    // get_MAXNum_Task(Type) {
+    //   const formatDate = this.form.HDate
+    //  ? new Date(this.form.HDate).toISOString().split('T')[0]
+    // : new Date().toISOString().split('T')[0];
+    //  var sql = `exec h_p_Xt_GetMaxBillNo_SubType '1201','${formatDate}',0,0,0,'${Type}','${this.form.HDeptID}'`;
+    //   axios({
+    //     method: 'get',
+    //     url: this.$baseUrl + "/CommonModel/searchMethod",
+    //     params: { "sql": sql, "user": sessionStorage["HUserName"], "ModRightNameCheck": "" },
+    //   }).then(response => {
+    //     if (response.data.count == 1) {
+    //       this.form.HBillNo = response.data.data[0].HBillNo;
+    //     } else {
+    //       this.$modal.msgError(response.data.code + response.data.Message);
+    //     }
+    //   }).catch(error => {
+    //     this.$modal.msgError("鎺ュ彛璇锋眰澶辫触!");
+    //   });
+    // },
     //#endregion
 
     //#region 鏍规嵁鐢ㄦ埛鑾峰彇瀵瑰簲鑱屽憳銆侀儴闂ㄣ�侀攢鍞富绠�
diff --git a/src/views/CaiGouGuanLi/CaiGouRuKu/Kf_POStockInBillList.vue b/src/views/CaiGouGuanLi/CaiGouRuKu/Kf_POStockInBillList.vue
index ba5ea40..6cea393 100644
--- a/src/views/CaiGouGuanLi/CaiGouRuKu/Kf_POStockInBillList.vue
+++ b/src/views/CaiGouGuanLi/CaiGouRuKu/Kf_POStockInBillList.vue
@@ -123,6 +123,10 @@
           @click="handleEdit(row = rowForm, OperationType = 3)">缂栬緫</el-button>
       </el-col>
       <el-col :span="1.5">
+        <el-button type="primary" icon="el-icon-Pallet" size="mini" :disabled="single" @click="set_PalletChange">鎵樻暟鍙樻洿
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
         <el-button type="primary" icon="el-icon-document-copy" size="mini" :disabled="single"
           @click="handleEdit(row = rowForm, OperationType = 1, copyType = 1)">澶嶅埗</el-button>
       </el-col>
@@ -397,10 +401,58 @@
       }).catch(error => {
         this.$modal.msgError("鎺ュ彛璇锋眰澶辫触!");
       });
-      this.queryParams.HOrgID = sessionStorage["OrganizationID"];
+     
+      const orgId = sessionStorage["OrganizationID"];
+      this.queryParams.HOrgID = orgId ? Number(orgId) : null;
+      this.$forceUpdate();
     },
     //#endregion
 
+      set_PalletChange() {
+      if (!this.rowForm || !this.rowForm.hmainid) {
+        this.$modal.msgError('璇峰厛閫夋嫨涓�鏉¤褰曪紒')
+        return
+      }
+      
+      const rowData = this.rowForm // 浣跨敤 rowForm 鑰屼笉鏄� rowList
+      const currentPallet = rowData.鎵樻暟 || 0
+
+      // 灏�"璇疯緭鍏ユ柊鎵樻暟"浣滀负杈撳叆妗嗙殑placeholder
+      this.$prompt(`褰撳墠鎵樻暟锛�${currentPallet}`, {
+        confirmButtonText: '淇濆瓨',
+        cancelButtonText: '鍙栨秷',
+        inputValue: currentPallet,
+        inputType: 'number',
+        inputValidator: (value) => {
+          if (!value) return '璇疯緭鍏ユ墭鏁帮紒'
+          const num = parseInt(value)
+          if (isNaN(num)) return '璇疯緭鍏ユ湁鏁堢殑鏁板瓧锛�'
+          if (num.toString() !== value) return '鎵樻暟涓嶈兘涓哄皬鏁帮紒'
+          if (num < 0) return '鎵樻暟蹇呴』澶т簬0锛�'
+          return true
+        }
+      }).then(({ value }) => {
+        const newPallet = parseInt(value)
+        
+        return axios.post(this.$baseUrl + '/Kf_POStockInBill/UpdatePallet', {
+          hmainid: rowData.hmainid,
+          newPallet: newPallet,
+          operator: sessionStorage["HUserName"]
+        })
+      }).then(response => {
+        if (response.data && response.data.count == 1) {
+          this.$modal.msgSuccess('鎵樻暟鍙樻洿鎴愬姛锛�')
+          this.getList()
+        } else {
+          this.$modal.msgError('閿欒锛�' + (response.data.Message || '淇濆瓨澶辫触'))
+        }
+      }).catch(error => {
+        if (error !== 'cancel') {
+          this.$modal.msgError('鎿嶄綔澶辫触锛�' + error.message)
+        }
+      })
+    },
+
     //#region 閲嶇疆
     resetQuery() {
       this.sWhere = ''
diff --git a/src/views/KCGL/MoveStockBill/Kf_MoveStockBillEdit.vue b/src/views/KCGL/MoveStockBill/Kf_MoveStockBillEdit.vue
index 4c7d2ac..1f9c725 100644
--- a/src/views/KCGL/MoveStockBill/Kf_MoveStockBillEdit.vue
+++ b/src/views/KCGL/MoveStockBill/Kf_MoveStockBillEdit.vue
@@ -19,14 +19,14 @@
             </el-col>
             <el-col :span="6">
               <el-form-item label="鏃ユ湡" prop="HDate">
-                <el-date-picker v-model="form.HDate" type="date" placeholder="閫夋嫨鏃ユ湡" value-format="yyyy-MM-ddT">
+                <el-date-picker v-model="form.HDate" type="date" placeholder="閫夋嫨鏃ユ湡" value-format="yyyy-MM-dd">
                 </el-date-picker>
               </el-form-item>
             </el-col>
             <el-col :span="6">
               <el-form-item label="涓氬姟鍛�" prop="HEmpName">
-                <el-input v-model="form.HKeeperName" placeholder="璇疯緭鍏ヤ笟鍔″憳" disabled>
-                  <el-button slot="append" icon="el-icon-search" @click="openDataDialog(1)"></el-button>
+                <el-input v-model="form.HEmpName" placeholder="璇疯緭鍏ヤ笟鍔″憳" disabled>
+                  <el-button slot="append" icon="el-icon-search" @click="openDataDialog(4,empType=1)"></el-button>
                 </el-input>
               </el-form-item>
             </el-col>
@@ -41,22 +41,22 @@
           <el-row>
             <el-col :span="6">
               <el-form-item label="寰�鏉ュ崟浣�" prop="HSupName">
-                <el-input v-model="form.HDeptName" placeholder="璇疯緭鍏ュ線鏉ュ崟浣�" disabled>
-                  <el-button slot="append" icon="el-icon-search" @click="openDataDialog(1)"></el-button>
+                <el-input v-model="form.HSupName" placeholder="璇疯緭鍏ュ線鏉ュ崟浣�" disabled>
+                  <el-button slot="append" icon="el-icon-search" @click="openDataDialog(7)"></el-button>
                 </el-input>
               </el-form-item>
             </el-col>
             <el-col :span="6">
               <el-form-item label="璋冨叆浠撳簱" prop="HWHName">
                 <el-input v-model="form.HWHName" placeholder="璇疯緭鍏ヤ粨搴�" disabled>
-                  <el-button slot="append" icon="el-icon-search" @click="openDataDialog(1)"></el-button>
+                  <el-button slot="append" icon="el-icon-search" @click="openDataDialog(2,eHWHType=1)"></el-button>
                 </el-input>
               </el-form-item>
             </el-col>
             <el-col :span="6">
               <el-form-item label="璋冨嚭浠撳簱" prop="HSCWHName">
                 <el-input v-model="form.HSCWHName" placeholder="璇疯皟鍑轰粨搴�" disabled>
-                  <el-button slot="append" icon="el-icon-search" @click="openDataDialog(1)"></el-button>
+                  <el-button slot="append" icon="el-icon-search" @click="openDataDialog(2,eHWHType=2)"></el-button>
                 </el-input>
               </el-form-item>
             </el-col>
@@ -73,7 +73,7 @@
             <el-col :span="6">
               <el-form-item label="閫夊崟鍙�" prop="HMainSourceBillNo">
                 <el-input v-model="form.HMainSourceBillNo" placeholder="璇烽�夋嫨婧愬崟" disabled>
-                  <el-button slot="append" icon="el-icon-search" @click="openDataDialog(1)"></el-button>
+                  <el-button slot="append" icon="el-icon-search" @click="openDataDialog(null)"></el-button>
                 </el-input>
               </el-form-item>
             </el-col>
@@ -334,8 +334,8 @@
         </el-table-column>
         <el-table-column align="center" label="璋冨叆浠撳簱" width="120">
           <template slot-scope="scope">
-            <el-input v-model="scope.row.璋冨叆浠撳簱" placeholder="璇疯緭鍏ヨ皟鍏ヤ粨搴�" @keyup.native.f7="openDataDialog(2, scope.row)"
-              @dblclick.native="openDataDialog(2, scope.row)" />
+            <el-input v-model="scope.row.HWHName" placeholder="璇疯緭鍏ヨ皟鍏ヤ粨搴�" @keyup.native.f7="openDataDialog(2, scope.row,eHWHType=3)"
+              @dblclick.native="openDataDialog(2, scope.row,eHWHType=3)" />
           </template>
         </el-table-column>
         <el-table-column align="center" label="HSPID" width="120">
@@ -345,8 +345,8 @@
         </el-table-column>
         <el-table-column align="center" label="璋冨叆浠撲綅" width="120">
           <template slot-scope="scope">
-            <el-input v-model="scope.row.浠撲綅鍚嶇О" placeholder="璋冨叆浠撲綅" @keyup.native.f7="openDataDialog(2, scope.row)"
-              @dblclick.native="openDataDialog(2, scope.row)" />
+            <el-input v-model="scope.row.HSPName" placeholder="璋冨叆浠撲綅" @keyup.native.f7="openDataDialog(9, scope.row,HSPType=1)"
+              @dblclick.native="openDataDialog(9, scope.row,HSPType=1)" />
           </template>
         </el-table-column>
         <el-table-column align="center" label="HSCWHID" width="120">
@@ -356,8 +356,8 @@
         </el-table-column>
         <el-table-column align="center" label="璋冨嚭浠撳簱" width="120">
           <template slot-scope="scope">
-            <el-input v-model="scope.row.璋冨嚭浠撳簱" placeholder="璇疯緭鍏ヨ皟鍑轰粨搴�" @keyup.native.f7="openDataDialog(2, scope.row)"
-              @dblclick.native="openDataDialog(2, scope.row)" />
+            <el-input v-model="scope.row.HSCWHName" placeholder="璇疯緭鍏ヨ皟鍑轰粨搴�" @keyup.native.f7="openDataDialog(2, scope.row,eHWHType=4)"
+              @dblclick.native="openDataDialog(2, scope.row,eHWHType=4)" />
           </template>
         </el-table-column>
         <el-table-column align="center" label="HSCSPID" width="120">
@@ -367,8 +367,8 @@
         </el-table-column>
         <el-table-column align="center" label="璋冨嚭浠撲綅" width="120">
           <template slot-scope="scope">
-            <el-input v-model="scope.row.璋冨嚭浠撲綅鍚嶇О" placeholder="璋冨嚭浠撲綅" @keyup.native.f7="openDataDialog(2, scope.row)"
-              @dblclick.native="openDataDialog(2, scope.row)" />
+            <el-input v-model="scope.row.HSCSPName" placeholder="璋冨嚭浠撲綅" @keyup.native.f7="openDataDialog(9, scope.row,HSPType=2)"
+              @dblclick.native="openDataDialog(9, scope.row,HSPType=2)" />
           </template>
         </el-table-column>
         <el-table-column align="center" label="鎵规" width="120">
@@ -422,11 +422,19 @@
     <!-- 鏁版嵁寮圭獥 -->
     <el-dialog :title="dialogTitle" :visible.sync="openData" width="1280px" append-to-body>
       <!-- 閮ㄩ棬 -->
-      <Dept @deptEmitDb="dbEmitData" @deptEmit="emitData" v-if="deptShow" />
+      <Dept @deptEmitDb="dbEmitData" @deptEmit="emitData" :openPage="HModName" v-if="deptShow" />
       <!-- 浠撳簱 -->
-      <Warehouse @deptEmitDb="dbEmitData" @deptEmit="emitData" v-if="warehouseShow" />
+      <Warehouse @deptEmitDb="dbEmitData" @deptEmit="emitData" :openPage="HModName" v-if="warehouseShow" />
       <!-- 鐗╂枡 -->
-      <Material @deptEmitDb="dbEmitData" @deptEmit="emitData" v-if="materialShow" />
+      <Material @deptEmitDb="dbEmitData" @deptEmit="emitData" :openPage="HModName" v-if="materialShow" />
+      <!--涓氬姟鍛�-->
+      <GyEmployee @deptEmitDb="dbEmitData" @deptEmit="emitData" :openPage="HModName" v-if="gyEmployeeShow" />
+      <!--瀹㈡埛-->
+      <GyCustomer @deptEmitDb="dbEmitData" @deptEmit="emitData" :openPage="HModName" v-if="gyCustomerShow" />
+      <!--浠撲綅-->銆�
+      <GyStockPlace @deptEmitDb="dbEmitData" @deptEmit="emitData" :openPage="HModName" :openPageData="openPageData" v-if="gyStockPlaceShow" />
+      <!--閫夋嫨婧愬崟-->
+      <HSourceReportHtml @deptEmitDb="dbEmitData" @deptEmit="emitData" :openPage="HModName" :HOrgID='this.form.HOrgID' :HSouceBillType="HSouceBillType" v-if="ScICMOBillShow" />
       <div slot="footer" class="dialog-footer">
         <el-button type="primary" @click="deptClickSub">纭� 瀹�</el-button>
         <el-button @click="deptClose">鍙� 娑�</el-button>
@@ -442,13 +450,18 @@
 import axios from 'axios'
 import moment from 'moment';
 import RowSettings from '@/views/component/rowSettings'
-import Dept from '@/views/component/dept'
-import Warehouse from '@/views/component/warehouse'
-import Material from '@/views/component/material'
+import GyEmployee from '@/views/basic/gyEmployee/gyEmployee.vue'
+import Warehouse from '@/views/basic/gyWarehouse/gyWarehouse.vue'
+import Dept from '@/views/basic/gy/gyDepartment'
+import GySupplier from '@/views/basic/gy/gySupplier.vue'
+import GyStockPlace from '@/views/basic/gyStockPlace/gyStockPlace.vue'
+import Material from '@/views/gyMaterial/GyMaterial'
+import GyCustomer from '@/views/GyCustomer/index'
+import HSourceReportHtml from '@/views/component/HSourceReportHtml'
 
 export default {
   name: 'MoveStockBillEdit',
-  components: { Dept, Warehouse, Material, RowSettings },
+  components: { Dept, Warehouse, Material, RowSettings, GyEmployee, GyCustomer, HSourceReportHtml, GyStockPlace },
   props: {
     OperationType: { type: Number, },
     linterid: { type: Number, },
@@ -462,11 +475,17 @@
 
       organizationList: [],                                                      //椤甸潰鍒濆鍖栫粍缁囧垪琛�
       sourceBillTypeList: [],                                                   //椤甸潰鍒濆鍖栨簮鍗曠被鍨嬪垪琛�
-
+      eHWHType: 0,
       loading: true,                                                             // 閬僵灞�
-
+      HModName: "Kf_MoveStockBill",
       addBtnShow: false,                                                         //鏂板鎸夐挳鏄剧ず鏍囪
       subDisabled: false,                                                        //淇濆瓨鎸夐挳绂佺敤鏍囪
+      empType:0,
+      HSPType:0,
+      HOutMoney:0,
+      rsv:"",
+      openPageData:{},                                                           //浼犲叆寮圭獥鐨勬暟鎹�
+      HSouceBillType:"",
 
       formShow: false,                                                           //琛ㄥ崟鏄惁鏄剧ず鏍囪
       formHideDataShow: false,                                                   //琛ㄥ崟闅愯棌鍐呭鏍囪
@@ -483,6 +502,9 @@
       warehouseShow: false,                                                      //浠撳簱鏁版嵁缁勪欢鏄剧ず鏍囪
       materialShow: false,                                                       //鐗╂枡鏁版嵁缁勪欢鏄剧ず鏍囪
       stockPlaceShow: false,                                                     //浠撲綅鏁版嵁缁勪欢鏄剧ず鏍囪
+      gyEmployeeShow: false,                                                     //涓氬姟鍛樻暟鎹粍浠舵樉绀烘爣璁�
+      ScICMOBillShow: false,                                                     //婧愬崟鏁版嵁缁勪欢鏄剧ず鏍囪
+      GyCustomerShow: false,                                                     //寰�鏉ュ崟浣嶆暟鎹粍浠舵樉绀烘爣璁�
       deptform: {},                                                              //寮圭獥閫変腑鏁版嵁
       
       temp: undefined,                                                           //涓存椂鍙橀噺
@@ -516,9 +538,11 @@
 
       if ((this.OperationType == 1 && this.copyType != 1) || (!this.OperationType && !this.copyType)) {
         this.handleAdd()
+        this.rsv = "Add"
       } 
       else if (this.OperationType == 3 || this.copyType == 1) { 
         this.handleUpdate()
+        this.rsv = "Update"
       }
     },
     //#endregion
@@ -528,12 +552,17 @@
       this.form = {
         HInterID: 0,
         HBillNo: "",
-        HDate: new Date(),
+        HDate: moment().format('YYYY-MM-DD'),
         HInnerBillNo: "",
         HSupID: 0,
         HSupName: "",
         HWHID: 0,
         HWHName: "",
+        HSCWHName: "",
+        HLinkMan: "",
+        HLinkPhone:"",
+        HAddress:"",
+        HSCWHID: "",
         HSecManagerID: 0,
         HSecManagerName: "",
         HKeeperID: 0,
@@ -547,6 +576,7 @@
         HSourceBillType: "",
         HExplanation :"",
         HRemark: "",
+        HManagerName:"",
         HOrgID: sessionStorage["OrganizationID"] - 0,
 
         HMaker: sessionStorage["HUserName"],
@@ -586,6 +616,35 @@
     },
     //#endregion
 
+        getSupType() {
+            var type = this.form.HSourceBillType
+            switch (type) {
+                case '1402':
+                    return "鍙戣揣閫氱煡鍗�";
+                    break;
+                case '1243':
+                    return "璋冩嫧鐢宠鍗�";
+                    break;
+                case '3720':
+                    return "鐢熶骇鐢ㄦ枡娓呭崟";
+                    break;
+                case '1604':
+                    return "濮斿鐢ㄦ枡娓呭崟";
+                    break;
+                case '1214':
+                    return "鐢熶骇鍙戞枡閫氱煡鍗�";
+                    break;
+                case '3721':
+                    return "鐢熶骇澶囨枡鍗�";
+                    break;
+                case '1242':
+                    return "鍑哄簱鐢宠鍗�";
+                    break;
+            }
+        },
+      isAllEqual(array) {
+            return array.every(item => item === array[0])
+      },
     //#region 缂栬緫椤甸潰鍒濆鍖�
     handleUpdate() {
       this.reset()
@@ -663,13 +722,13 @@
                 , HOutPrice: data.HOutPrice
                 , HOutMoney: data.HOutMoney
                 , HWHID: data.HWHID
-                , 璋冨叆浠撳簱: data.璋冨叆浠撳簱
+                , HWHName: data.璋冨叆浠撳簱
                 , HSPID: data.HSPID
-                , 浠撲綅鍚嶇О: data.浠撲綅鍚嶇О
+                , HSPName: data.浠撲綅鍚嶇О
                 , HSCWHID: data.HSCWHID
-                , 璋冨嚭浠撳簱: data.璋冨嚭浠撳簱
+                , HSCWHName: data.璋冨嚭浠撳簱
                 , HSCSPID: data.HSCSPID
-                , 璋冨嚭浠撲綅鍚嶇О: data.璋冨嚭浠撲綅鍚嶇О
+                , HSCSPName: data.璋冨嚭浠撲綅鍚嶇О
                 , HBatchNo:data.HBatchNo
                 , HPOOrderInterID: data.HPOOrderInterID
                 , HPOOrderEntryID: data.HPOOrderEntryID
@@ -740,17 +799,59 @@
         this.dialogTitle = '鐗╂枡鍒楄〃'
         this.materialShow = true
         this.openData = true
-      }else if (num == 4) {
-        this.dialogTitle = '浠撲綅鍒楄〃'
-        this.stockPlaceShow = true
+      } else if (num == 4) {
+        if(this.empType == 1){
+          this.dialogTitle = '涓氬姟鍛樺垪琛�'
+        }else if(this.empType == 2){
+          this.dialogTitle = '涓荤鍒楄〃'
+        }else if(this.empType == 3){
+          this.dialogTitle = '楠屾敹鍛樺垪琛�'
+        }else if(this.empType == 4){
+          this.dialogTitle = '淇濈鍛樺垪琛�'
+        }
+        this.gyEmployeeShow = true
         this.openData = true
-      }
+      }else if (num == 7){
+        this.dialogTitle = '瀹㈡埛鍒楄〃'
+        this.gyCustomerShow = true
+        this.openData = true
+      } else if (num == 9) {
+        if(this.HSPType==1){
+          if(this.editData[this.zbIndex].HWHName){
+            this.dialogTitle = '浠撲綅鍒楄〃'
+            this.openPageData.HWHName = this.editData[this.zbIndex].HWHName
+            this.gyStockPlaceShow = true
+            this.openData = true
+          }else{
+            this.$modal.msgError("璇峰厛閫夋嫨璋冨叆浠撳簱!");
+          }
+        }
+        if(this.HSPType==2){
+          if(this.editData[this.zbIndex].HSCWHName){
+            this.dialogTitle = '浠撲綅鍒楄〃'
+            this.openPageData.HWHName = this.editData[this.zbIndex].HSCWHName
+            this.gyStockPlaceShow = true
+            this.openData = true
+          }else{
+            this.$modal.msgError("璇峰厛閫夋嫨璋冨嚭浠撳簱!");
+          }
+        }
+      }else {
+                this.showReset()
+                this.HSouceBillType = this.getSupType()
+                this.dialogTitle = this.getSupType() + '鍒楄〃'
+                this.ScICMOBillShow = true
+                this.openData = true
+            }
+
     },
     //#region 灏嗘暟鎹脊绐楀叏閮ㄥ彇娑堝姞杞�
     showReset() {
       this.deptShow = false
       this.warehouseShow = false
       this.materialShow = false
+      this.gyEmployeeShow = false
+      this.GyCustomerShow = false
     },
     //#endregion
     //#endregion
@@ -760,21 +861,55 @@
       if (num == 1) {
         this.form.HDeptName = deptRow.閮ㄩ棬鍚嶇О                                  //閮ㄩ棬
         this.form.HDeptID = deptRow.HItemID
-        this.form.HEmpID = deptRow.HEmpID
-        this.form.HManagerName = deptRow.璐熻矗浜�
         this.openData = false
       } 
-      else if (num == 2) {                                                      //鏀舵枡浠撳簱
-        this.editData[this.zbIndex].HWHID = deptRow.HItemID;
-        this.editData[this.zbIndex].鏀舵枡浠撳簱 = deptRow.浠撳簱鍚嶇О;
-        this.openData = false
-      }
-      else if (num == 4) {                                                      //浠撲綅
-        this.editData[this.zbIndex].HSPID = deptRow.HItemID;
-        this.editData[this.zbIndex].浠撲綅鍚嶇О = deptRow.浠撲綅鍚嶇О;
-        this.openData = false
-      }
-      else if (num == 3) {                                                      //鐗╂枡
+      else if (num == 2) {
+          if(this.eHWHType == 1){
+            this.form.HWHName = deptRow.浠撳簱鍚嶇О
+            this.form.HWHID = deptRow.HItemID
+            this.form.HWHNumber = deptRow.浠撳簱浠g爜
+            for (let i = 0; i < this.editData.length; i++) {
+              this.editData[i].HWHID = deptRow.HItemID
+              this.editData[i].HWHNumber = deptRow.浠撳簱浠g爜
+              this.editData[i].HWHName = deptRow.浠撳簱鍚嶇О
+            }
+          }else if(this.eHWHType == 2){
+            this.form.HSCWHName = deptRow.浠撳簱鍚嶇О
+            this.form.HSCWHID = deptRow.HItemID
+            this.form.HSCWHNumber = deptRow.浠撳簱浠g爜
+            for (let i = 0; i < this.editData.length; i++) {
+              this.editData[i].HSCWHID = deptRow.HItemID
+              this.editData[i].HSCWHNumber = deptRow.浠撳簱浠g爜
+              this.editData[i].HSCWHName = deptRow.浠撳簱鍚嶇О
+            }
+          }else if(this.eHWHType == 3){
+            this.editData[this.zbIndex].HWHID = deptRow.HItemID
+            this.editData[this.zbIndex].HWHNumber = deptRow.浠撳簱浠g爜
+            this.editData[this.zbIndex].HWHName = deptRow.浠撳簱鍚嶇О
+          }else if(this.eHWHType == 4){
+            this.editData[this.zbIndex].HSCWHID = deptRow.HItemID
+            this.editData[this.zbIndex].HSCWHNumber = deptRow.浠撳簱浠g爜
+            this.editData[this.zbIndex].HSCWHName = deptRow.浠撳簱鍚嶇О
+          }
+          this.warehouseShow = false
+          this.openData = false
+        } else if (num == 4) {
+          if(this.empType == 1){
+            this.form.HEmpName = deptRow.鑱屽憳鍚嶇О
+            this.form.HEmpID = deptRow.HItemID
+          }else if(this.empType == 2){
+            this.form.HMangerName = deptRow.鑱屽憳鍚嶇О
+            this.form.HMangerID = deptRow.HItemID
+          }else if(this.empType == 3){
+            this.form.HSecManagerName = deptRow.鑱屽憳鍚嶇О
+            this.form.HSecManagerID = deptRow.HItemID
+          }else if(this.empType == 4){
+            this.form.HKeeperName = deptRow.鑱屽憳鍚嶇О
+            this.form.HKeeperID = deptRow.HItemID
+          }else
+          this.gyEmployeeShow = false
+          this.openData = false
+        } else if (num == 3) {                                                      //鐗╂枡
         this.editData[this.zbIndex].HMaterID = deptRow.HItemID;
         this.editData[this.zbIndex].鐗╂枡浠g爜 = deptRow.鐗╂枡浠g爜;
         this.editData[this.zbIndex].鐗╂枡鍚嶇О = deptRow.鐗╂枡鍚嶇О;
@@ -783,8 +918,26 @@
         this.editData[this.zbIndex].璁¢噺鍗曚綅 = deptRow.璁¢噺鍗曚綅鍚嶇О
         this.editData[this.zbIndex].HTaxPrice = deptRow.鍚◣鎴愭湰浠�
         this.editData[this.zbIndex].HTaxRate = deptRow.榛樿绋庣巼
+        this.materialShow = false
         this.openData = false
-      }
+      } else if(num == 7){
+          this.form.HSupName = deptRow.瀹㈡埛鍚嶇О
+          this.form.HSupID = deptRow.HItemID
+          this.gyCustomerShow = false
+          this.openData = false
+      }else if (num == 9){
+            if(this.HSPType == 1){
+              this.editData[this.zbIndex].HSPID = deptRow.HItemID
+              this.editData[this.zbIndex].HSPNumber = deptRow.浠撲綅浠g爜
+              this.editData[this.zbIndex].HSPName = deptRow.浠撲綅鍚嶇О
+            }else{
+              this.editData[this.zbIndex].HSCSPID = deptRow.HItemID
+              this.editData[this.zbIndex].HSCSPNumber = deptRow.浠撲綅浠g爜
+              this.editData[this.zbIndex].HSCSPName = deptRow.浠撲綅鍚嶇О
+            }
+            this.gyStockPlaceShow = false
+            this.openData = false
+          }
     },
     //#endregion
 
@@ -817,19 +970,19 @@
         if (valid) {
           let fhck = false
           this.editData.map((item, index) => {
-            if (!item.鍙戣揣浠撳簱) {
-              fhck = true
-              this.$modal.msgError("绗�" + (index + 1) + "琛岋細鍙戣揣浠撳簱鏈�夋嫨锛�");
-            }
+            // if (!item.鍙戣揣浠撳簱) {
+            //   fhck = true
+            //   this.$modal.msgError("绗�" + (index + 1) + "琛岋細鍙戣揣浠撳簱鏈�夋嫨锛�");
+            // }
           })
           this.$nextTick(() => {
             if (!fhck) {
               var sMainStr = JSON.stringify(this.form);
               var sSubStr = JSON.stringify(this.editData);
-              var sMainSub = sMainStr + ';' + sSubStr + ';' + sessionStorage["HUserName"] + ';' + this.OperationType;
+              var sMainSub = sMainStr + ';' + sSubStr + ';' + this.rsv + ';' + sessionStorage["HUserName"];
               axios({
                 method: 'post',
-                url: this.$baseUrl + "/Kf_SellOutBill/SaveSellOutBillList",
+                url: this.$baseUrl + "Kf_MoveStockBill/SaveKf_MoveStockBillMain",
                 data: {
                   'msg': sMainSub
                 },
diff --git a/src/views/KCGL/MoveStockBill/Kf_MoveStockBillList.vue b/src/views/KCGL/MoveStockBill/Kf_MoveStockBillList.vue
index 677aa13..041c9a2 100644
--- a/src/views/KCGL/MoveStockBill/Kf_MoveStockBillList.vue
+++ b/src/views/KCGL/MoveStockBill/Kf_MoveStockBillList.vue
@@ -174,7 +174,7 @@
         </template>
       </el-table>
       <!-- 璁板綍鏁般�侀〉鏁般�佸綋鍓嶉〉 -->
-      <pagination v-show="total > 0" :total="total" :page.sync="page" :limit.sync="pageSize" @pagination="handleQuery" />
+      <pagination v-show="total > 0" :total="total" :page.sync="page" :limit.sync="pageSize" :pageSizes="pageSizes" @pagination="getList" />
       <!-- 鍒楄缃� -->
       <el-dialog title="闅愯棌鍒楄缃�" :visible.sync="openRowHide" width="816px" append-to-body>
         <RowSettings :colName="btResList" HModName="Kf_MoveStockBillList" @rowEditClose="rowSetClose"
@@ -285,9 +285,17 @@
         ColContent: '',
       },
       
-      page: 1,                                                      //page椤电储寮�
-      pageSize: 0,                                                  //page椤甸潰璁板綍鏁�
-      total: 0,                                                     //璁板綍鍚堣鏁�
+      loading: true,
+      tyResList: [],//鍒楄〃锛堟帴鍙f暟鎹級
+      btList: [],//琛ㄥご鍒楄〃鏄剧ず
+      btResList: [],
+      tableData: [],//鍒楄〃(鍒嗛〉鏄剧ず)
+      dataList: [],
+      titleData: [],//涓嶉渶瑕佹樉绀虹殑瀛楁 鍙墿灞�
+      pageSizes: [ 50,100, 500, 5000, 50000],
+      page: 1,
+      pageSize: 0,
+      total: 0,    
       tableShow: true,                                              // table鏄剧ず鏍囪
       totalNameList: [],                                            // 闇�瑕佽缃悎璁¤鐨勫垪鏁扮粍
       tableData: [],                                                // 鍒楄〃鏁版嵁銆傜敤浜巘able鐩戝惉浜嬩欢
@@ -497,7 +505,6 @@
 
     //#region 鏌ヨ
     getList() {
-      this.pageSize = 50
       if (this.pageSize == 0) {
         this.pageSize = 50
       }
@@ -505,16 +512,19 @@
       this.loading = true
       
       // 鍒楄〃鏌ヨ
-      axios.get(this.$baseUrl + '/Kf_MoveStockBill/GetMoveStockBillList', {
+      axios.get(this.$baseUrl + '/Kf_MoveStockBill/page', {
         params: {
           "sWhere": this.sWhere,
-          "user": sessionStorage["HUserName"]
+          "user": sessionStorage["HUserName"],
+          "page": this.page,
+          "size": this.pageSize,
+          "Type":'1207',
         },
       }).then(response => {
         this.tyResList = response.data.data//鎬绘暟鎹�
         let data1 = response.data
         let option = []
-        if (data1.count == 1) {
+        if (data1.list && data1.list.length > 0) {
           this.btResList = data1.list             //鍒楄〃琛ㄥご鏁版嵁
           this.total = data1.count;
           var data = [];//鍒楀瓧娈垫暟鎹�
@@ -808,11 +818,11 @@
               this.totalNameList.push(item)
             }
           })
-          if (data1.data[0].HPageSize == 0) {
-            this.pageSize = 50
-          } else {
-            this.pageSize = data1.data[0].HPageSize
-          }
+          // if (data1.data[0].HPageSize == 0) {
+          //   this.pageSize = 50
+          // } else {
+          //   this.pageSize = data1.data[0].HPageSize
+          // }
           this.tableData = option.data
           this.tableShow = true
           this.loading = false
@@ -918,7 +928,7 @@
       var result = false;
       axios.get(this.$baseUrl + '/Xt_getInfo/getCompanyName').then(response => {
         var data1 = response.data
-        if (data1.count == 1) {
+        if (data1.list && data1.list.length > 0) {
           if (data1.data == "姘村姟") {
             result = true;
           }
diff --git a/src/views/ProductInBill/Kf_ProductInBillList.vue b/src/views/ProductInBill/Kf_ProductInBillList.vue
index 0a7958b..1b97fa0 100644
--- a/src/views/ProductInBill/Kf_ProductInBillList.vue
+++ b/src/views/ProductInBill/Kf_ProductInBillList.vue
@@ -664,7 +664,7 @@
       this.rowHideShow = true
       this.openRowHide = true
     },
-       set_PalletChange() {
+    set_PalletChange() {
       if (!this.rowForm || !this.rowForm.hmainid) {
         this.$modal.msgError('璇峰厛閫夋嫨涓�鏉¤褰曪紒')
         return
diff --git a/src/views/component/printList/barcode.vue b/src/views/component/printList/barcode.vue
index 683c8c4..69e739a 100644
--- a/src/views/component/printList/barcode.vue
+++ b/src/views/component/printList/barcode.vue
@@ -118,7 +118,7 @@
       this.pageSize.width = grfMeta.Printer.Width * 10 + "mm";
       this.pageSize.height = grfMeta.Printer.Height * 10 + "mm";
       console.log("pageSize: ",this.pageSize)
-      this.oriention = grfMeta.Printer.Oriention.toLowerCase()
+      // this.oriention = grfMeta.Printer.Oriention.toLowerCase()
     },
     getTemp() {
       // 瀵规瘡涓鎵撳嵃鐨勫璞℃坊鍔犲垎椤�
diff --git a/src/views/component/printList/index.vue b/src/views/component/printList/index.vue
index 54d0aaa..6a69e3a 100644
--- a/src/views/component/printList/index.vue
+++ b/src/views/component/printList/index.vue
@@ -1,217 +1,281 @@
 <template>
-    <div style="margin-top: -40px;">
-        <el-form ref="formData" :model="formData" label-width="100px">
-            <div style="padding: 10px; ">
-                <el-button type="primary" size="small" @click="printClick" v-if=false>鎶ヨ〃鎵撳嵃</el-button>
-                <el-button type="primary" size="small" @click="printClickWeb">鎶ヨ〃鎵撳嵃(缃戦〉)</el-button>
-            </div>
-            <el-table v-loading="loading" :data="printdata" ref="printTable" max-height="540"
-                @selection-change="handleSelectionChange" :row-class-name="rowSysIndex" border>
-                <el-table-column type="selection" width="55" align="center" />
-                <el-table-column align="center" label="妯″潡浠g爜" prop="HNumber" v-if="hideFlag" />
-                <el-table-column align="center" label="妯℃澘鍚嶇О" prop="妯℃澘鍚嶇О" />
-            </el-table>
-        </el-form>
-        <el-dialog title="鎶ヨ〃鎵撳嵃" :visible.sync="openPrint" width="800px" append-to-body>
-            <div ref="print" id="printId">111</div>
-            <el-button type="primary" size="small" @click="printClick">鎵撳嵃</el-button>
-        </el-dialog>
-    </div>
+  <div style="margin-top: -40px;">
+    <el-form ref="formData" :model="formData" label-width="100px">
+      <div style="padding: 10px; ">
+        <el-button type="primary" size="small" @click="printClick">鎶ヨ〃鎵撳嵃</el-button>
+        <el-button type="primary" size="small" @click="printClickWeb">鎶ヨ〃鎵撳嵃(缃戦〉)</el-button>
+        <a-button type="primary" icon="eye" @click="preView">棰勮</a-button>
+      </div>
+      <el-table v-loading="loading" :data="printdata" ref="printTable" max-height="540"
+        @selection-change="handleSelectionChange" :row-class-name="rowSysIndex" border>
+        <el-table-column type="selection" width="55" align="center" />
+        <el-table-column align="center" label="妯″潡浠g爜" prop="HNumber" v-if="hideFlag" />
+        <el-table-column align="center" label="妯℃澘鍚嶇О" prop="妯℃澘鍚嶇О" />
+      </el-table>
+    </el-form>
+    <el-dialog title="鎶ヨ〃鎵撳嵃" :visible.sync="openPrint" width="800px" append-to-body>
+      <div ref="print" id="printId">111</div>
+      <el-button type="primary" size="small" @click="printClick">鎵撳嵃</el-button>
+    </el-dialog>
+    <print-preview ref="preView" />
+  </div>
 </template>
 
 <script>
 import axios from 'axios'
-
+import printPreview from './preview'
 export default {
-    name: 'PrintList',
-    props: {
-        linterid: { type: Number, },
-        MyMsg: { type: Number, },
-        Type: { type: String, },
-        HModName: { type: String, }
-    },
-    data() {
-        return {
-            openPrint: false,
-            selRowData: [],
-            baseURL: process.env.VUE_APP_BASE_API,
-            user: 'admin',//鐧诲綍鐢ㄦ埛鍚�
-            // 琛ㄦ牸鏁版嵁
-            printdata: [],
-            // 閫変腑鏁扮粍index
-            selIndex: [],
-            // 闈炲崟涓鐢�
-            single: true,
-            // 闈炲涓鐢�
-            multiple: true,
-            // 閬僵灞�
-            loading: true,
-            formData: {
-                HFixCols: '',
-                HFontSize: '',
-                HColumnWidth: '',
-                HPageSize: '',
-                HSortFlag: '',
-                HSelTotal: ''
-            },
-            colTitleName: '',
-            tableIns: null,
-            option: {},
-            tableData: [],
-            hideFlag:false,                             //闅愯棌鏍囪銆傜敤浜庤缃煇浜涗笉甯屾湜鏄剧ず鐨勬爣绛�                                          // 褰撳墠閫変腑鐨勮
-        }
-    },
-    created() {
-        this.getDisplay()
-    },
-    methods: {
-        handlePrint() {
-            this.openPrint = true
-        },
-        printClickWeb() {
-          const routeUrl = this.$router.resolve({ path: '/hBarPlanPrintWeb',query:{linterid:this.linterid.toString(),Type:this.Type.toString(),OpenTmp: encodeURIComponent(this.rowForm.妯℃澘鍚嶇О)} });
-          window.open(routeUrl.href, '_blank');
-        },
-        printClick() {
-            const routeUrl = this.$router.resolve({ path: '/hBarPlanPrint',query:{linterid:this.linterid.toString(),Type:this.Type.toString(),OpenTmp: encodeURIComponent(this.rowForm.妯℃澘鍚嶇О)} });
-            window.open(routeUrl.href, '_blank');
-        },
-        getDisplay() {
-            this.loading = true
-            axios.get(this.$baseUrl + '/Open_PrintTem/GetOpenTmpList_Json', {
-                params: { "HNumber": this.Type },
-            }).then(response => {
-                 console.log(response)
-                var result = response.data
-                this.printdata = result.data
-                this.loading = false
-            }).catch(error => {
-                console.log(error)
-                this.$modal.msgError("鎺ュ彛璇锋眰澶辫触!");
-            });
-        },
-        //涓婁竴琛�
-        handleMoveRowUp(row) {
-            if (this.selRowData.length != 1) {
-                this.$modal.msgError("璇烽�夋嫨涓�琛屾暟鎹紒")
-            } else {
-                let num = row.index - 1
-                if (num == 0) {
-                    this.$modal.msgError("绗竴琛屾暟鎹棤娉曚笂绉�");
-                } else { // 纭繚涓嶆槸绗竴琛�
-                    const record = this.rowTitleData.splice(num, 1)[0];
-                    this.rowTitleData.splice(num - 1, 0, record);
-                }
-            }
-            console.log(this.rowTitleData)
-        },
-        //涓嬩竴琛�
-        handleMoveRowDown(row) {
-            if (this.selRowData.length != 1) {
-                this.$modal.msgError("璇烽�夋嫨涓�琛屾暟鎹�")
-            } else {
-                let num = row.index - 1
-                if (num == this.rowTitleData.length - 1) {
-                    this.$modal.msgError("鏈�鍚庝竴琛屾暟鎹棤娉曚笅绉�");
-                } else { // 纭繚涓嶆槸绗竴琛�
-                    const record = this.rowTitleData.splice(num, 1)[0];
-                    this.rowTitleData.splice(num + 1, 0, record);
-                }
-            }
-        },
-        // 澶氶�夋閫変腑鏁版嵁
-        handleSelectionChange(selection) {
-            //鍗曢��
-            if (selection.length > 1) {
-                const del_row = selection.shift()
-                this.$refs.printTable.toggleRowSelection(del_row, false) //璁剧疆杩欎竴琛屽彇娑堥�変腑
-            }
-            this.rowForm = {}
-            this.ids = selection.map(item => item.HItemID)
-            this.rowForm = selection[0]
-        },
-        //琛ㄦ牸琛岀储寮�
-        rowSysIndex({ row, rowIndex }) {
-            row.index = rowIndex + 1;
-        },
-        //鍏ㄩ��
-        handleCheckAll() {
-            for (var i = 0; i < this.rowTitleData.length; i++) {
-                this.rowTitleData[i].IsHide = true;
-            }
-        },
-        //鍏ㄦ竻
-        handleClearBill() {
-            for (var i = 0; i < this.rowTitleData.length; i++) {
-                this.rowTitleData[i].IsHide = false;
-            }
-        },
-        //鍏ㄥ眳涓�
-        handleCenter() {
-            for (var i = 0; i < this.rowTitleData.length; i++) {
-                this.rowTitleData[i].Alignment = 'M';
-            }
-        },
-        //淇濆瓨
-        handleSave() {
-            const cache = this.rowTitleData
-            const num = cache.filter(item => item !== "").map((item, i) => {
-                item.LAY_TABLE_INDEX = i
-                return item
-            })
-            // 楠岃瘉鍒嗛〉鍙傛暟
-            const HPageSize = this.formData.HPageSize
-            if (HPageSize && !/^[0-9]+$/.test(HPageSize)) {
-                this.$modal.msgError("榛樿鍒嗛〉涓嶄负姝f暣鏁�!")
-                return
-            }
-            const sMainStr = JSON.stringify(this.formData)
-            const sSubStr = JSON.stringify(num)
-            const OperationType = "1"
-            const sMainSub = `${sMainStr};${sSubStr};${this.HModName};${OperationType};${this.user}`
-            axios({
-                method: 'post',
-                url: this.$baseUrl + "/Xt_grdAlignment_WMES/AddgrdAlignmentWMES",
-                data: {
-                    'sMainSub': sMainSub
-                },
-            }).then(response => {
-                console.log(1, response)
-                if (response.data.count == 1) {
-                    this.$modal.msgSuccess("鎻愪氦鎴愬姛")
-                } else {
-                    this.$modal.msgError(response.data.Message);
-                }
-            }).catch(error => {
-                console.log(2, error)
-
-                this.$modal.msgError("鎺ュ彛璇锋眰澶辫触!");
-            });
-        },
-        //閫�鍑�
-        handleExit() {
-            this.$emit('rowEditClose', false)
-        },
-        // 鍒犻櫎
-        handleDel() {
-            this.$modal.confirm('纭瑕佸垹闄ゅ悧锛屽垹闄ゅ悗涓嶈兘鎭㈠').then(() => {
-                console.log(this.rowForm.hmainid.toString())
-                axios.get(this.$baseUrl + "/Xt_grdAlignment_WMES/DelgrdAlignmentWMES", {
-                    params: { "HModName": this.HModName, "user": this.user }
-                }).then(response => {
-                    let result = response.data
-                    if (response.data.count == 1) {
-                        this.getList()
-                        this.$modal.msgSuccess(result.Message)
-                    } else {
-                        this.$modal.msgError("閿欒:" + result.code + result.Message);
-                    }
-                }).catch(error => {
-                    console.log(error)
-                    this.$modal.msgError("鎺ュ彛璇锋眰澶辫触!");
-                });
-            }).catch(() => { })
-        },
+  name: 'PrintList',
+  props: {
+    linterid: { type: Number | String, },
+    MyMsg: { type: Number | String, default: '' },
+    Type: { type: String, },
+    HModName: { type: String, }
+  },
+  components: { printPreview },
+  data() {
+    return {
+      openPrint: false,
+      selRowData: [],
+      baseURL: process.env.VUE_APP_BASE_API,
+      user: 'admin',//鐧诲綍鐢ㄦ埛鍚�
+      // 琛ㄦ牸鏁版嵁
+      printdata: [],
+      // 閫変腑鏁扮粍index
+      selIndex: [],
+      // 闈炲崟涓鐢�
+      single: true,
+      // 闈炲涓鐢�
+      multiple: true,
+      // 閬僵灞�
+      loading: true,
+      formData: {
+        HFixCols: '',
+        HFontSize: '',
+        HColumnWidth: '',
+        HPageSize: '',
+        HSortFlag: '',
+        HSelTotal: ''
+      },
+      colTitleName: '',
+      tableIns: null,
+      option: {},
+      tableData: [],
+      hideFlag: false,                             //闅愯棌鏍囪銆傜敤浜庤缃煇浜涗笉甯屾湜鏄剧ず鐨勬爣绛�                                          // 褰撳墠閫変腑鐨勮
     }
+  },
+  created() {
+    this.getDisplay()
+  },
+  methods: {
+    async preView() {
+      console.log(this.rowForm)
+      let templateName = this.rowForm["妯℃澘鍚嶇О"]
+      if (templateName) {
+        let printTemplate = await axios.get(`/static/printTemplate/${templateName}.json`)
+        let printData = await this.getPrintData()
+
+        this.openPrint = false
+        this.$refs.preView.show(printTemplate.data, printData.data.data)
+      } else {
+        this.$modal.msgWarning("鏈�変腑妯℃澘锛岃閫変腑妯℃澘鍚庡啀棰勮");
+      }
+    },
+    handlePrint() {
+      this.openPrint = true
+    },
+    printClickWeb() {
+      const routeUrl = this.$router.resolve({ path: '/hBarPlanPrintWeb', query: { linterid: this.linterid.toString(), Type: this.Type.toString(), OpenTmp: encodeURIComponent(this.rowForm.妯℃澘鍚嶇О) } });
+      window.open(routeUrl.href, '_blank');
+    },
+    printClick() {
+      const routeUrl = this.$router.resolve({ path: '/hBarPlanPrint', query: { linterid: this.linterid.toString(), Type: this.Type.toString(), OpenTmp: encodeURIComponent(this.rowForm.妯℃澘鍚嶇О) } });
+      window.open(routeUrl.href, '_blank');
+    },
+    getDisplay() {
+      this.loading = true
+      axios.get(this.$baseUrl + '/Open_PrintTem/GetOpenTmpList_Json', {
+        params: { "HNumber": this.Type },
+      }).then(response => {
+        console.log(response)
+        var result = response.data
+        this.printdata = result.data
+        this.loading = false
+      }).catch(error => {
+        console.log(error)
+        this.$modal.msgError("鎺ュ彛璇锋眰澶辫触!");
+      });
+    },
+    //涓婁竴琛�
+    handleMoveRowUp(row) {
+      if (this.selRowData.length != 1) {
+        this.$modal.msgError("璇烽�夋嫨涓�琛屾暟鎹紒")
+      } else {
+        let num = row.index - 1
+        if (num == 0) {
+          this.$modal.msgError("绗竴琛屾暟鎹棤娉曚笂绉�");
+        } else { // 纭繚涓嶆槸绗竴琛�
+          const record = this.rowTitleData.splice(num, 1)[0];
+          this.rowTitleData.splice(num - 1, 0, record);
+        }
+      }
+      console.log(this.rowTitleData)
+    },
+    //涓嬩竴琛�
+    handleMoveRowDown(row) {
+      if (this.selRowData.length != 1) {
+        this.$modal.msgError("璇烽�夋嫨涓�琛屾暟鎹�")
+      } else {
+        let num = row.index - 1
+        if (num == this.rowTitleData.length - 1) {
+          this.$modal.msgError("鏈�鍚庝竴琛屾暟鎹棤娉曚笅绉�");
+        } else { // 纭繚涓嶆槸绗竴琛�
+          const record = this.rowTitleData.splice(num, 1)[0];
+          this.rowTitleData.splice(num + 1, 0, record);
+        }
+      }
+    },
+    // 澶氶�夋閫変腑鏁版嵁
+    handleSelectionChange(selection) {
+      //鍗曢��
+      if (selection.length > 1) {
+        const del_row = selection.shift()
+        this.$refs.printTable.toggleRowSelection(del_row, false) //璁剧疆杩欎竴琛屽彇娑堥�変腑
+      }
+      this.rowForm = {}
+      this.ids = selection.map(item => item.HItemID)
+      this.rowForm = selection[0]
+    },
+    //琛ㄦ牸琛岀储寮�
+    rowSysIndex({ row, rowIndex }) {
+      row.index = rowIndex + 1;
+    },
+    //鍏ㄩ��
+    handleCheckAll() {
+      for (var i = 0; i < this.rowTitleData.length; i++) {
+        this.rowTitleData[i].IsHide = true;
+      }
+    },
+    //鍏ㄦ竻
+    handleClearBill() {
+      for (var i = 0; i < this.rowTitleData.length; i++) {
+        this.rowTitleData[i].IsHide = false;
+      }
+    },
+    //鍏ㄥ眳涓�
+    handleCenter() {
+      for (var i = 0; i < this.rowTitleData.length; i++) {
+        this.rowTitleData[i].Alignment = 'M';
+      }
+    },
+    //淇濆瓨
+    handleSave() {
+      const cache = this.rowTitleData
+      const num = cache.filter(item => item !== "").map((item, i) => {
+        item.LAY_TABLE_INDEX = i
+        return item
+      })
+      // 楠岃瘉鍒嗛〉鍙傛暟
+      const HPageSize = this.formData.HPageSize
+      if (HPageSize && !/^[0-9]+$/.test(HPageSize)) {
+        this.$modal.msgError("榛樿鍒嗛〉涓嶄负姝f暣鏁�!")
+        return
+      }
+      const sMainStr = JSON.stringify(this.formData)
+      const sSubStr = JSON.stringify(num)
+      const OperationType = "1"
+      const sMainSub = `${sMainStr};${sSubStr};${this.HModName};${OperationType};${this.user}`
+      axios({
+        method: 'post',
+        url: this.$baseUrl + "/Xt_grdAlignment_WMES/AddgrdAlignmentWMES",
+        data: {
+          'sMainSub': sMainSub
+        },
+      }).then(response => {
+        console.log(1, response)
+        if (response.data.count == 1) {
+          this.$modal.msgSuccess("鎻愪氦鎴愬姛")
+        } else {
+          this.$modal.msgError(response.data.Message);
+        }
+      }).catch(error => {
+        console.log(2, error)
+
+        this.$modal.msgError("鎺ュ彛璇锋眰澶辫触!");
+      });
+    },
+    //閫�鍑�
+    handleExit() {
+      this.$emit('rowEditClose', false)
+    },
+    // 鍒犻櫎
+    handleDel() {
+      this.$modal.confirm('纭瑕佸垹闄ゅ悧锛屽垹闄ゅ悗涓嶈兘鎭㈠').then(() => {
+        console.log(this.rowForm.hmainid.toString())
+        axios.get(this.$baseUrl + "/Xt_grdAlignment_WMES/DelgrdAlignmentWMES", {
+          params: { "HModName": this.HModName, "user": this.user }
+        }).then(response => {
+          let result = response.data
+          if (response.data.count == 1) {
+            this.getList()
+            this.$modal.msgSuccess(result.Message)
+          } else {
+            this.$modal.msgError("閿欒:" + result.code + result.Message);
+          }
+        }).catch(error => {
+          console.log(error)
+          this.$modal.msgError("鎺ュ彛璇锋眰澶辫触!");
+        });
+      }).catch(() => { })
+    },
+    getPrintData() {
+      let sql = "";
+      if (this.Type == "Kf_SellOutBillList") {
+        sql =
+          "exec h_p_Kf_SellOutBillList_PrintSellOutBill " +
+          this.linterid;
+      } else if (this.Type == "HGy_BarCodeBill") {
+        sql =
+          "select * from h_v_IF_BarCodeBillList where hmainid in(" +
+          this.linterid +
+          ") order by hmainid desc";
+      } else if (this.Type == "HPOInStockBill") {
+        sql =
+          "select * from h_v_Sc_PrintMouldProdOutBillList where hmainid=" +
+          this.linterid +
+          " order by hmainid";
+      } else if (this.Type == "HGyStockPlaceBarCode") {
+        let condition = decodeURI(this.linterid);
+        sql = `SELECT
+                CEILING(CAST(t.row_num AS FLOAT) / 2) AS orderid,
+                MAX(CASE WHEN t.row_num % 2 = 1 THEN t.鏉$爜缂栧彿 END) AS 鏉$爜缂栧彿1,
+                MAX(CASE WHEN t.row_num % 2 = 1 THEN t.浠撲綅鍚嶇О END) AS 浠撲綅鍚嶇О1,
+                MAX(CASE WHEN t.row_num % 2 = 0 THEN t.鏉$爜缂栧彿 END) AS 鏉$爜缂栧彿2,
+                MAX(CASE WHEN t.row_num % 2 = 0 THEN t.浠撲綅鍚嶇О END) AS 浠撲綅鍚嶇О2
+              FROM (
+                SELECT
+                  鏉$爜缂栧彿, 浠撲綅鍚嶇О,
+                  ROW_NUMBER() OVER (ORDER BY t1.HItemID) AS row_num
+                FROM h_v_IF_StockPlaceList t1 where 鏉$爜缂栧彿 in (${condition})
+              ) AS t
+              GROUP BY CEILING(CAST(t.row_num AS FLOAT) / 2)
+              ORDER BY orderid;`;
+      } else if (this.Type == "WL_YayBill") {
+
+        sql = "select * from h_v_WL_YayBilllist where hmainid in(" +
+          this.linterid +
+          ") order by hmainid desc";
+      }
+
+      return axios.get(this.$baseUrl + "/CommonModel/searchMethod", {
+        params: {
+          sql: sql,
+          user: sessionStorage["HUserName"],
+          ModRightNameCheck: " ",
+          // , "HSubID": data[i].hsubid
+        },
+      })
+    }
+  }
 }
 </script>
\ No newline at end of file
diff --git a/src/views/component/printList/preview.vue b/src/views/component/printList/preview.vue
new file mode 100644
index 0000000..e03f0e4
--- /dev/null
+++ b/src/views/component/printList/preview.vue
@@ -0,0 +1,194 @@
+<template>
+  <!-- <a-modal :visible="visible" :maskClosable="false" @cancel="hideModal" :width="width + 'mm'">
+    <a-spin :spinning="spinning" style="min-height: 100px">
+      <div id="preview_content_design"></div>
+    </a-spin>
+    <template slot="title">
+      <a-space>
+        <div style="margin-right: 20px">鎵撳嵃棰勮</div>
+        <a-button :loading="waitShowPrinter" type="primary" icon="printer" @click.stop="print">鎵撳嵃</a-button>
+        <a-button type="primary" icon="printer" @click.stop="toPdf">pdf</a-button>
+      </a-space>
+    </template>
+<template slot="footer">
+      <a-button key="close" type="info" @click="hideModal">
+        鍏抽棴
+      </a-button>
+    </template>
+</a-modal> -->
+  <el-dialog title="鎵撳嵃棰勮" :visible.sync="visible" :close-on-click-modal="false" :close-on-press-escape="false"
+    append-to-body @closed="onDialogClosed">
+    <!-- 鏇挎崲 el-spin 鈫� 浣跨敤 Ruoyi 鏀寔鐨� v-loading -->
+    <div style="min-height: 100px; position:relative;" v-loading="spinning" element-loading-text="鍔犺浇涓�...">
+      <div id="preview_content_design"></div>
+    </div>
+
+    <span slot="title" class="dialog-title-wrapper">
+      <span>鎵撳嵃棰勮</span>
+      <span class="dialog-title-btn">
+        <el-button :loading="waitShowPrinter" type="primary" icon="el-icon-printer" @click.stop="print">
+          鎵撳嵃
+        </el-button>
+        <el-button type="primary" icon="el-icon-document" @click.stop="toPdf">
+          PDF
+        </el-button>
+      </span>
+    </span>
+
+    <div slot="footer" class="dialog-footer">
+      <el-button key="close" type="info" @click="hideModal">
+        鍏抽棴
+      </el-button>
+    </div>
+  </el-dialog>
+</template>
+
+<script>
+import { template } from 'lodash'
+import * as vuePluginHiprint from '../../../hiprintVue/index'
+import $ from 'jquery'
+window.jQuery = window.$ = $
+const hiprint = vuePluginHiprint.hiprint
+const defaultElementTypeProvider = vuePluginHiprint.defaultElementTypeProvider
+
+// 鍏ㄥ眬鎸傝浇锛坧review 蹇呴』锛�
+window.hiprint = hiprint
+window.defaultElementTypeProvider = defaultElementTypeProvider
+
+export default {
+  name: "printPreview",
+  props: {},
+  data() {
+    return {
+      visible: false,
+      spinning: true,
+      waitShowPrinter: false,
+      isInited: false,
+      // 绾稿紶瀹� mm
+      width: 0,
+      // 妯℃澘
+      hiprintTemplate: {},
+      // 鏁版嵁
+      printData: {}
+    }
+  },
+  computed: {},
+  watch: {},
+  created() {
+    this.initHiPrintInPreview()
+  },
+  mounted() {
+  },
+  methods: {
+    hideModal() {
+      this.visible = false
+    },
+    // ======================
+    // 寮傛鍒濆鍖栨柟娉�
+    // ======================
+    async initHiPrintAsync() {
+      return new Promise((resolve) => {
+        // 濡傛灉宸茬粡鍒濆鍖栬繃锛岀洿鎺ヨ繑鍥�
+        if (this.isInited) {
+          console.log("鉁� preview 鍐呴儴鍒濆鍖� hiprint 瀹屾垚")
+          return resolve()
+        }
+
+        // 鎵ц鍒濆鍖�
+        window.hiprint.init({
+          providers: [new window.defaultElementTypeProvider()],
+          autoConnect: false
+        })
+
+        // 绛夊緟DOM/璧勬簮鍔犺浇锛堜繚闄╃瓑寰� 100ms锛�
+        setTimeout(() => {
+          this.isInited = true
+          console.log("鉁� preview 鍐呴儴鍒濆鍖� hiprint 瀹屾垚")
+          resolve()
+        }, 100)
+      })
+    },
+    initHiPrintInPreview() {
+      if (hiprint) return
+
+      // 浠庢彃浠惰幏鍙栧疄渚�
+      hiprint = vuePluginHiprint.hiprint
+      defaultElementTypeProvider = vuePluginHiprint.defaultElementTypeProvider
+
+      // 鍐呴儴鍒濆鍖栵紒
+      hiprint.init({
+        providers: [new defaultElementTypeProvider()],
+        autoConnect: false
+      })
+
+      console.log("鉁� preview 鍐呴儴鍒濆鍖� hiprint 瀹屾垚")
+    },
+    async show(hiprintTemplate, printData, width = '210') {
+      await this.initHiPrintAsync()
+      this.visible = true
+      this.spinning = true
+      this.width = hiprintTemplate.editingPanel ? hiprintTemplate.editingPanel.width : width;
+      this.hiprintTemplate = hiprintTemplate
+      this.printData = printData
+      let hiprintTemplateInstance = new window.hiprint.PrintTemplate({
+        template: hiprintTemplate,
+        settingContainer: $('#preview_content_design'),
+        fields: printData
+      });
+
+      // hiprintTemplateInstance.getJson(tempContainer)
+      setTimeout(() => {
+        // eslint-disable-next-line no-undef
+        $("#preview_content_design").html(hiprintTemplateInstance.getHtml(printData))
+        this.spinning = false
+        this.hiprintTemplate = hiprintTemplateInstance
+      }, 1000)
+    },
+    print() {
+      this.waitShowPrinter = true
+      this.hiprintTemplate.print(this.printData, {}, {
+        callback: () => {
+          console.log('callback')
+          this.waitShowPrinter = false
+        }
+      })
+    },
+    toPdf() {
+      this.hiprintTemplate.toPdf(this.printData, '鎵撳嵃棰勮', { scale: 4 });
+    },
+    // 鍏抽棴寮圭獥
+    hideModal() {
+      this.visible = false;
+    },
+    // 寮圭獥瀹屽叏鍏抽棴鍚� 鈫� 寮哄埗绉昏蛋鐒︾偣锛堜慨澶嶄綘涔嬪墠鐨勬祻瑙堝櫒鎶ラ敊锛侊級
+    onDialogClosed() {
+      document.body.focus();
+    }
+  }
+}
+
+</script>
+
+
+<style lang="less" scoped>
+// /deep/ .ant-modal-body {
+//   padding: 0px;
+// }
+
+// /deep/ .ant-modal-content {
+//   margin-bottom: 24px;
+// }
+
+/* 鎵撳嵃棰勮寮圭獥鏍囬鏍峰紡 */
+.dialog-title-wrapper {
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+  width: 100%;
+}
+
+.dialog-title-btn {
+  display: flex;
+  gap: 8px;
+}
+</style>
diff --git a/src/views/login.vue b/src/views/login.vue
index 9e3caf7..0a7265c 100644
--- a/src/views/login.vue
+++ b/src/views/login.vue
@@ -58,7 +58,7 @@
 import { getCodeImg, getOrganizations, webBaseInfo, webGetDataBases } from "@/api/login"
 import Cookies from "js-cookie"
 import { encrypt, decrypt } from '@/utils/jsencrypt'
-
+import { setToken } from "../utils/auth";
 export default {
   name: "Login",
   data() {
@@ -110,10 +110,10 @@
   created() {
     // this.getCode()
     this.getInfoData()
-    this.getCookie()    
+    this.getCookie()
   },
   methods: {
-   
+
     //璇█鐨勯�夋嫨
     languageChange() {
       this.loginForm.HCusName = this.tranData.HCusName
@@ -196,6 +196,7 @@
             Cookies.set("username", this.loginForm.username, { expires: 30 })
             Cookies.set("password", encrypt(this.loginForm.password), { expires: 30 })
             Cookies.set('rememberMe', this.loginForm.rememberMe, { expires: 30 })
+
           } else {
             Cookies.remove("HTranSlate")
             Cookies.remove("HOrgName")
diff --git a/src/views/printTemplateDesigner/design/font-size.js b/src/views/printTemplateDesigner/design/font-size.js
new file mode 100644
index 0000000..3bce5b5
--- /dev/null
+++ b/src/views/printTemplateDesigner/design/font-size.js
@@ -0,0 +1,38 @@
+export default (function () {
+  function t() {
+    this.name = "fontSize"; // 閲嶅啓鐨勫弬鏁� key
+  }
+  // 娑夊強淇敼鍏冪礌鏍峰紡锛� 娣诲姞涓�涓� css 鏂规硶
+  return t.prototype.css = function (t, e) {
+    if (t && t.length) {
+      if (e) return t.css("font-size", e + "pt"), "font-size:" + e + "pt";
+      t[0].style.fontSize = "";
+    }
+    return null;
+  },
+  // 鍒涘缓 DOM
+  t.prototype.createTarget = function () {
+    let list = [8, 9, 10, 11, 12, 14, 16, 18, 20, 22, 24, 26, 28, 36, 48, 72];
+    let fontSizeList = '\n            <option value="" >榛樿</option>';
+    list.forEach(function (e) {
+      fontSizeList += '\n            <option value="' + e + '">' + e + 'pt</option>';
+    })
+    this.target = $(' <div class="hiprint-option-item">\n        <div class="hiprint-option-item-label">\n        瀛椾綋澶у皬\n        </div>\n        <div class="hiprint-option-item-field">\n        <select class="auto-submit">        </select>\n        </div>\n    </div>');
+    this.target.find(".auto-submit").append($(fontSizeList));
+    return this.target;
+  },
+  // 鑾峰彇鍊�
+  t.prototype.getValue = function () {
+    var t = this.target.find("select").val();
+    if (t) return parseFloat(t.toString());
+  },
+  // 璁剧疆鍊�
+  t.prototype.setValue = function (t) {
+    t && (this.target.find('option[value="' + t + '"]').length || this.target.find("select").prepend('<option value="' + t + '" >' + t + "</option>"));
+    this.target.find("select").val(t);
+  },
+  // 閿�姣� DOM
+  t.prototype.destroy = function () {
+    this.target.remove();
+  }, t;
+}())
diff --git a/src/views/printTemplateDesigner/design/index.vue b/src/views/printTemplateDesigner/design/index.vue
new file mode 100644
index 0000000..6a344c7
--- /dev/null
+++ b/src/views/printTemplateDesigner/design/index.vue
@@ -0,0 +1,1241 @@
+<template>
+  <a-card>
+    <div style="display: flex;flex-direction: column">
+      <a-space style="margin-bottom: 10px">
+        <a-button-group>
+          <template v-for="(value,type) in paperTypes">
+            <a-button :type="curPaperType === type ? 'primary' : 'info'" @click="setPaper(type,value)" :key="type">
+              {{ type }}
+            </a-button>
+          </template>
+          <a-popover v-model="paperPopVisible" title="璁剧疆绾稿紶瀹介珮(mm)" trigger="click">
+            <div slot="content">
+              <a-input-group compact style="margin: 10px 10px">
+                <a-input type="number" v-model="paperWidth" style=" width: 100px; text-align: center"
+                         placeholder="瀹�(mm)"/>
+                <a-input style=" width: 30px; border-left: 0; pointer-events: none; backgroundColor: #fff"
+                         placeholder="~" disabled
+                />
+                <a-input type="number" v-model="paperHeight" style="width: 100px; text-align: center; border-left: 0"
+                         placeholder="楂�(mm)"/>
+              </a-input-group>
+              <a-button type="primary" style="width: 100%" @click="otherPaper">纭畾</a-button>
+            </div>
+            <a-button :type="'other'==curPaperType?'primary':''">鑷畾涔夌焊寮�</a-button>
+          </a-popover>
+        </a-button-group>
+        <a-button type="text" icon="zoom-out" @click="changeScale(false)"></a-button>
+        <a-input-number
+          :value="scaleValue"
+          :min="scaleMin"
+          :max="scaleMax"
+          :step="0.1"
+          disabled
+          style="width: 70px;"
+          :formatter="value => `${(value * 100).toFixed(0)}%`"
+          :parser="value => value.replace('%', '')"
+        />
+        <a-button type="text" icon="zoom-in" @click="changeScale(true)"></a-button>
+        <a-button type="primary" icon="redo" @click="rotatePaper()">鏃嬭浆</a-button>
+        <a-button type="primary" icon="eye" @click="preView">
+          棰勮
+        </a-button>
+        <a-popconfirm
+          title="鏄惁纭娓呯┖?"
+          okType="danger"
+          okText="纭畾娓呯┖"
+          @confirm="clearPaper"
+        >
+          <a-icon slot="icon" type="question-circle-o" style="color: red"/>
+          <a-button type="danger">
+            娓呯┖
+            <a-icon type="close"/>
+          </a-button>
+        </a-popconfirm>
+        <json-view :template="template"/>
+        <a-dropdown>
+          <a-menu slot="overlay" @click="handleMenuClick">
+            <a-menu-item key="0">閮戒笉鐪�,鎴戝氨涓嶇湅</a-menu-item>
+            <a-menu-item v-for="item in keyList" :key="item.key"> {{ item.name }}</a-menu-item>
+          </a-menu>
+          <a-button style="margin-left: 8px"> 鏇村鍔熻兘绀轰緥
+            <a-icon type="down"/>
+          </a-button>
+        </a-dropdown>
+      </a-space>
+      <a-space v-if="'1' == curKey" style="margin-bottom: 10px">
+        <div class="btn-text-desc">鐩存帴鎵撳嵃/api鎵撳嵃:</div>
+        <a-button type="primary" icon="printer" @click="print">
+          鐩存帴鎵撳嵃
+        </a-button>
+        <a-button type="primary" icon="printer" @click="printByFragments">
+          鍒嗘壒鐩存帴鎵撳嵃
+        </a-button>
+        <a-button type="primary" @click="onlyPrint">
+          Api鍗曠嫭鎵撳嵃
+        </a-button>
+        <a-button type="primary" @click="onlyPrint2">
+          Api鍗曠嫭鐩存帴鎵撳嵃
+        </a-button>
+      </a-space>
+      <a-space v-if="'2' == curKey" style="margin-bottom: 10px">
+        <div class="btn-text-desc">瀵煎嚭PDF鏂囦欢/娴�:</div>
+        <a-button type="primary" @click="exportPdf('')">
+          瀵煎嚭鑾峰彇pdf(Blob)
+        </a-button>
+        <a-button type="primary" @click="exportPdf('arraybuffer')">
+          瀵煎嚭鑾峰彇pdf(ArrayBuffer)
+        </a-button>
+        <a-button type="primary" @click="exportPdf('dataurl')">
+          瀵煎嚭鑾峰彇pdf(DataUrl)
+        </a-button>
+        <a-button type="primary" @click="exportPdf('bloburl')">
+          瀵煎嚭鑾峰彇pdf(BlobUrl)
+        </a-button>
+        <a-button type="primary" @click="exportPdf('dataurlstring')">
+          瀵煎嚭鑾峰彇pdf(DataUrlString)
+        </a-button>
+        <a-button type="primary" @click="exportPdf('pdfobjectnewwindow')">
+          瀵煎嚭鏌ョ湅pdf(PdfObjectNewWindow)
+        </a-button>
+      </a-space>
+      <a-space v-if="'3' == curKey" style="margin-bottom: 10px">
+        <div class="btn-text-desc">ipp鎵撳嵃(闇�鎵撳嵃鏈烘敮鎸�):</div>
+        <a-button type="primary" @click="ippPrintAttr">
+          ipp鑾峰彇 鎵撳嵃鏈� 鍙傛暟鎯呭喌
+        </a-button>
+        <a-button type="primary" @click="ippPrintTest">
+          ipp鎵撳嵃娴嬭瘯
+        </a-button>
+        <a-button type="primary" @click="ippRequestTest">
+          ipp璇锋眰 鑾峰彇 鎵撳嵃鏈� 鍙傛暟鎯呭喌
+        </a-button>
+        <a-button type="primary" @click="ippRequestPrint">
+          ipp璇锋眰 鎵撳嵃娴嬭瘯
+        </a-button>
+      </a-space>
+      <a-space v-if="'4' == curKey" style="margin-bottom: 10px">
+        <div class="btn-text-desc">鍏冪礌鍙傛暟鎿嶄綔:</div>
+        <a-button type="primary" @click="setOptionConfig(-1)"> 娴嬭瘯闅愯棌鍙傛暟[鐪嬩唬鐮乚
+        </a-button>
+        <a-button type="primary" @click="setOptionConfig(1)"> 闅愯棌[鏂囨湰] "杈规"銆�"楂樼骇"
+        </a-button>
+        <a-button type="primary" @click="setOptionConfig(2)"> [鍥剧墖]涓嶅垎缁�
+        </a-button>
+        <a-button type="primary" @click="setOptionConfig(3)"> 閲嶅啓[鏂囨湰] "瀛椾綋澶у皬"銆�"鍏冪礌灞傜骇"
+        </a-button>
+        <a-button type="primary" @click="setOptionConfig(4)"> [鏂囨湰]鏂板 "缂╂斁"
+        </a-button>
+        <a-button type="primary" @click="setOptionConfig(0)"> 杩樺師閰嶇疆
+        </a-button>
+      </a-space>
+      <a-space v-if="'5' == curKey" style="margin-bottom: 10px">
+        <div class="btn-text-desc">妯℃澘瀵煎叆瀵煎嚭:</div>
+        <a-textarea style="width:30vw" v-model="jsonIn" @pressEnter="updateJson"
+                    placeholder="澶嶅埗json妯℃澘鍒版鍚� 鐐瑰嚮鍙充晶鏇存柊"
+                    allow-clear/>
+        <a-button type="primary" @click="updateJson">
+          鏇存柊json妯℃澘
+        </a-button>
+        <a-button type="primary" @click="exportJson">
+          瀵煎嚭json妯℃澘鍒� textArea
+        </a-button>
+        <a-textarea style="width:30vw" v-model="jsonOut" placeholder="鐐瑰嚮宸︿晶瀵煎嚭json" allow-clear/>
+      </a-space>
+      <a-space v-if="'6' == curKey" style="margin-bottom: 10px">
+        <div class="btn-text-desc">鍏冪礌鑾峰彇/鏇存柊鍙傛暟:</div>
+        <a-button type="primary" @click="getSelectEls">
+          鑾峰彇閫変腑鍏冪礌
+        </a-button>
+        <a-button type="primary" @click="setEleSelectByField">
+          璁剧疆鏍规嵁field閫変腑鏂囨湰鍏冪礌
+        </a-button>
+
+        <a-button type="primary" @click="updateFontSize">
+          閫変腑鍏冪礌瀛椾綋12pt
+        </a-button>
+        <a-button type="primary" @click="updateFontWeight">
+          閫変腑鍏冪礌瀛椾綋Bolder
+        </a-button>
+      </a-space>
+      <a-space v-if="'7' == curKey" style="margin-bottom: 10px">
+        <div class="btn-text-desc">鍏冪礌瀵归綈/闂磋窛(闇�鍏堥�変腑):</div>
+        <a-button type="primary" @click="setElsSpace(true)"> 姘村钩闂磋窛10
+        </a-button>
+        <a-button type="primary" @click="setElsSpace(false)"> 鍨傜洿闂磋窛10
+        </a-button>
+        <a-radio-group>
+          <a-radio-button @click="setElsAlign('left')" title="宸﹀榻�">
+            <span class="glyphicon glyphicon-object-align-left"></span>
+          </a-radio-button>
+          <a-radio-button @click="setElsAlign('vertical')" title="灞呬腑">
+            <span class="glyphicon glyphicon-object-align-vertical"></span>
+          </a-radio-button>
+          <a-radio-button @click="setElsAlign('right')" title="鍙冲榻�">
+            <span class="glyphicon glyphicon-object-align-right"></span>
+          </a-radio-button>
+          <a-radio-button @click="setElsAlign('top')" title="椤堕儴瀵归綈">
+            <span class="glyphicon glyphicon-object-align-top"></span>
+          </a-radio-button>
+          <a-radio-button @click="setElsAlign('horizontal')" title="鍨傜洿灞呬腑">
+            <span class="glyphicon glyphicon-object-align-horizontal"></span>
+          </a-radio-button>
+          <a-radio-button @click="setElsAlign('bottom')" title="搴曢儴瀵归綈">
+            <span class="glyphicon glyphicon-object-align-bottom"></span>
+          </a-radio-button>
+          <a-radio-button @click="setElsAlign('distributeHor')" title="妯悜鍒嗘暎">
+            <span class="glyphicon glyphicon-resize-horizontal"></span>
+          </a-radio-button>
+          <a-radio-button @click="setElsAlign('distributeVer')" title="绾靛悜鍒嗘暎">
+            <span class="glyphicon glyphicon-resize-vertical"></span>
+          </a-radio-button>
+        </a-radio-group>
+      </a-space>
+    </div>
+    <a-row :gutter="[8,0]">
+      <a-col :span="4">
+        <a-card style="height: 100vh">
+          <a-row>
+            <a-col :span="24" class="rect-printElement-types hiprintEpContainer">
+              <a-row class="drag_item_title">鎷栨嫿缁勪欢鍒楄〃</a-row>
+              <a-row style="height: 100px;">
+                <a-col :span="12" class="drag_item_box">
+                  <div>
+                    <a class="ep-draggable-item" tid="defaultModule.text" style>
+                      <span class="glyphicon glyphicon-text-width" aria-hidden="true"></span>
+                      <p class="glyphicon-class">鏂囨湰</p>
+                    </a>
+                  </div>
+                </a-col>
+                <a-col :span="12" class="drag_item_box">
+                  <div>
+                    <a class="ep-draggable-item" tid="defaultModule.image" style>
+                      <span class="glyphicon glyphicon-picture" aria-hidden="true"></span>
+                      <p class="glyphicon-class">鍥剧墖</p>
+                    </a>
+                  </div>
+                </a-col>
+              </a-row>
+              <a-row style="height: 100px;">
+                <a-col :span="12" class="drag_item_box">
+                  <div>
+                    <a class="ep-draggable-item" tid="defaultModule.longText">
+                      <span class="glyphicon glyphicon-subscript" aria-hidden="true"></span>
+                      <p class="glyphicon-class">闀挎枃</p>
+                    </a>
+                  </div>
+                </a-col>
+                <a-col :span="12" class="drag_item_box">
+                  <div>
+                    <a class="ep-draggable-item" tid="defaultModule.table" style>
+                      <span class="glyphicon glyphicon-th" aria-hidden="true"></span>
+                      <p class="glyphicon-class">琛ㄦ牸</p>
+                    </a>
+                  </div>
+                </a-col>
+              </a-row>
+              <a-row style="height: 100px;">
+                <a-col :span="12" class="drag_item_box">
+                  <div>
+                    <a class="ep-draggable-item" tid="defaultModule.emptyTable" style>
+                      <span class="glyphicon glyphicon-th" aria-hidden="true"></span>
+                      <p class="glyphicon-class">绌虹櫧琛ㄦ牸</p>
+                    </a>
+                  </div>
+                </a-col>
+              </a-row>
+              <a-row style="height: 100px;">
+                <a-col :span="12" class="drag_item_box">
+                  <div>
+                    <a class="ep-draggable-item" tid="defaultModule.html" style="">
+                      <span class="glyphicon glyphicon-header" aria-hidden="true"></span>
+                      <p class="glyphicon-class">html</p>
+                    </a>
+                  </div>
+                </a-col>
+                <a-col :span="12" class="drag_item_box">
+                  <div>
+                    <a class="ep-draggable-item" tid="defaultModule.customText" style>
+                      <span class="glyphicon glyphicon-text-width" aria-hidden="true"></span>
+                      <p class="glyphicon-class">鑷畾涔�</p>
+                    </a>
+                  </div>
+                </a-col>
+              </a-row>
+              <a-row class="drag_item_title">杈呭姪</a-row>
+              <a-row style="height: 100px;">
+                <a-col :span="12" class="drag_item_box">
+                  <div>
+                    <a class="ep-draggable-item" tid="defaultModule.hline" style>
+                      <span class="glyphicon glyphicon-resize-horizontal" aria-hidden="true"></span>
+                      <p class="glyphicon-class">妯嚎</p>
+                    </a>
+                  </div>
+                </a-col>
+                <a-col :span="12" class="drag_item_box">
+                  <div>
+                    <a class="ep-draggable-item" tid="defaultModule.vline" style>
+                      <span class="glyphicon glyphicon-resize-vertical" aria-hidden="true"></span>
+                      <p class="glyphicon-class">绔栫嚎</p>
+                    </a>
+                  </div>
+                </a-col>
+              </a-row>
+              <a-row style="height: 100px;">
+                <a-col :span="12" class="drag_item_box">
+                  <div>
+                    <a class="ep-draggable-item" tid="defaultModule.rect">
+                      <span class="glyphicon glyphicon-unchecked" aria-hidden="true"></span>
+                      <p class="glyphicon-class">鐭╁舰</p>
+                    </a>
+                  </div>
+                </a-col>
+                <a-col :span="12" class="drag_item_box">
+                  <div>
+                    <a class="ep-draggable-item" tid="defaultModule.oval">
+                      <span class="glyphicon glyphicon-record" aria-hidden="true"></span>
+                      <p class="glyphicon-class">妞渾</p>
+                    </a>
+                  </div>
+                </a-col>
+              </a-row>
+              <a-row v-if="currVerInfo.verVal >= 55.3" style="height: 100px;">
+                <a-col :span="12" class="drag_item_box">
+                  <div>
+                    <a class="ep-draggable-item" tid="defaultModule.barcode">
+                      <span class="glyphicon glyphicon-barcode" aria-hidden="true"></span>
+                      <p class="glyphicon-class">鏉″舰鐮�</p>
+                    </a>
+                  </div>
+                </a-col>
+                <a-col :span="12" class="drag_item_box">
+                  <div>
+                    <a class="ep-draggable-item" tid="defaultModule.qrcode">
+                      <span class="glyphicon glyphicon-qrcode" aria-hidden="true"></span>
+                      <p class="glyphicon-class">浜岀淮鐮�</p>
+                    </a>
+                  </div>
+                </a-col>
+              </a-row>
+            </a-col>
+          </a-row>
+        </a-card>
+      </a-col>
+      <a-col :span="15">
+        <a-card class="card-design">
+          <div id="hiprint-printTemplate" class="hiprint-printTemplate"></div>
+        </a-card>
+      </a-col>
+      <a-col :span="5" class="params_setting_container">
+        <a-card>
+          <a-row class="hinnn-layout-sider">
+            <div id="PrintElementOptionSetting"></div>
+          </a-row>
+        </a-card>
+      </a-col>
+    </a-row>
+    <!-- 棰勮 -->
+    <print-preview ref="preView"/>
+  </a-card>
+</template>
+
+<script defer>
+// import {defaultElementTypeProvider, hiprint} from '../../index'
+import * as vuePluginHiprint from '../../../hiprintVue/index'
+// import panel from './panel'
+import printData from './print-data'
+import printPreview from './preview'
+import jsonView from "../json-view.vue";
+import fontSize from "./font-size.js";
+import scale from "./scale.js";
+import {decodeVer} from '@/utils/decodeVerHiPrint.js'
+
+// disAutoConnect();
+var hiprint, defaultElementTypeProvider, panel;
+let hiprintTemplate;
+
+export default {
+  name: "printDesign",
+  components: {printPreview, jsonView},
+  data() {
+    return {
+      template: null,
+      curPaper: {
+        type: 'A4',
+        width: 210,
+        height: 296.6
+      },
+      paperTypes: {
+        'A3': {
+          width: 420,
+          height: 296.6
+        },
+        'A4': {
+          width: 210,
+          height: 296.6
+        },
+        'A5': {
+          width: 210,
+          height: 147.6
+        },
+        'B3': {
+          width: 500,
+          height: 352.6
+        },
+        'B4': {
+          width: 250,
+          height: 352.6
+        },
+        'B5': {
+          width: 250,
+          height: 175.6
+        }
+      },
+      // 鑷畾涔夌焊寮�
+      paperPopVisible: false,
+      paperWidth: '220',
+      paperHeight: '80',
+      // 缂╂斁
+      scaleValue: 1,
+      scaleMax: 5,
+      scaleMin: 0.5,
+      // 瀵煎叆瀵煎嚭json
+      jsonIn: '',
+      jsonOut: '',
+      // 鍔熻兘
+      curKey: '',
+      keyList: [
+        {key: 1, name: '鐩存帴鎵撳嵃/api鎵撳嵃'},
+        {key: 2, name: '瀵煎嚭PDF鏂囦欢/娴�'},
+        {key: 3, name: 'ipp鎵撳嵃(闇�鎵撳嵃鏈烘敮鎸�)'},
+        {key: 4, name: '鍏冪礌鍙傛暟鎿嶄綔'},
+        {key: 5, name: '妯℃澘瀵煎叆瀵煎嚭'},
+        {key: 6, name: '鍏冪礌鑾峰彇/鏇存柊鍙傛暟'},
+        {key: 7, name: '鍏冪礌瀵归綈/闂磋窛(闇�鍏堥�変腑)'},
+      ],
+    }
+  },
+  computed: {
+    curPaperType() {
+      let type = 'other'
+      let types = this.paperTypes
+      for (const key in types) {
+        let item = types[key]
+        let {width, height} = this.curPaper
+        if (item.width === width && item.height === height) {
+          type = key
+        }
+      }
+      return type
+    },
+    /**
+     * @description: 褰撳墠鐗堟湰淇℃伅锛岀敤浜� demo 椤甸潰鏍规嵁鐗堟湰鎺у埗鍔熻兘
+     * @return {Object}
+     */
+    currVerInfo() {
+      if (this.$parent.version && this.$parent.version != "development") {
+        return decodeVer(this.$parent.version)
+      } else if (hiprint?.version) {
+        return decodeVer(hiprint.version)
+      } else {
+        return {
+          verVal: 9999
+        }
+      }
+    }
+  },
+  mounted() {
+    this.getPanel()
+    // 瀛樺湪涓�涓浐瀹氱増鏈彿锛屽苟涓斾笉鏄紑鍙戠増鏈�
+    if (this.$parent.version && this.$parent.version != "development") {
+      // 鍔犺浇瀵瑰簲鐗堟湰鐨� hiprint
+      this.getVersion(this.$parent.version)
+    }
+    // 涓嶅瓨鍦ㄥ浐瀹氱増鏈紝鍔犺浇褰撳墠浠g爜涓殑 hiprint
+    else {
+      hiprint = vuePluginHiprint.hiprint
+      defaultElementTypeProvider = vuePluginHiprint.defaultElementTypeProvider
+      this.init()
+    }
+  },
+  methods: {
+    /**
+     * @description: 鍔犺浇 panel
+     */
+    getPanel() {
+      // 鍔犺浇鎵�鏈� panel
+      const panels = require.context('./', true, /panel.*\.js$/)
+      // 瀵规墍鏈� panel 杩涜鐗堟湰瑙f瀽
+      var panelInfos = panels.keys().map(key => ({
+        ...decodeVer(key.replace(/(\.\/panel-?)|(\.js)/g, '')),
+        key
+      }))
+      // 瀛樺湪涓�涓浐瀹氱増鏈彿锛屽苟涓斾笉鏄紑鍙戠増鏈�
+      if (this.$parent.version && this.$parent.version != "development") {
+        // 瑙f瀽瀵瑰簲鐗堟湰淇℃伅
+        var currVerInfo = decodeVer(this.$parent.version)
+        // 鏌ユ壘灏忎簬绛変簬褰撳墠鐗堟湰鐨� panel
+        var newVers = panelInfos.filter(({verVal}) => verVal <= currVerInfo.verVal)
+          // 瀵圭増鏈彿杩涜鍊掑彊
+          .sort((acc, curr) => curr.verVal - acc.verVal)
+        // 鑾峰彇鏈�澶х増鏈彿闈㈡澘 json
+        panel = panels(newVers[0].key).default
+      }
+      // 涓嶅瓨鍦ㄥ浐瀹氱増鏈紝鍔犺浇榛樿闈㈡澘 json
+      else {
+        panel = panels('./panel.js').default
+      }
+    },
+    /**
+     * @description: 鍔犺浇鐗堟湰
+     * @param {string} version 鐗堟湰鍙�
+     */
+    getVersion(version) {
+      const script = document.createElement("script");
+      script.setAttribute("type", "text/javascript");
+      script.setAttribute(
+        "src",
+        // jsdelivr cdn
+        // `https://cdn.jsdelivr.net/npm/vue-plugin-hiprint@${version}/dist/vue-plugin-hiprint.js`
+        // cnpm cdn
+        // `https://registry.npmmirror.com/vue-plugin-hiprint/${version}/files/dist/vue-plugin-hiprint.js`
+        // unpkg cdn
+        `https://unpkg.com/vue-plugin-hiprint@${version}/dist/vue-plugin-hiprint.js`
+      );
+      script.addEventListener("load", () => {
+        hiprint = window['vue-plugin-hiprint'].hiprint
+        defaultElementTypeProvider = window['vue-plugin-hiprint'].defaultElementTypeProvider
+        this.init()
+      })
+      const head = document.querySelector("head");
+      head.querySelector('link[media=print][href*="print-lock.css"]').remove();
+      head.append(
+        // $(`<link rel="stylesheet" type="text/css" media="print" href="https://registry.npmmirror.com/vue-plugin-hiprint/${version}/files/dist/print-lock.css">`)[0]
+        $(`<link rel="stylesheet" type="text/css" media="print" href="https://unpkg.com/vue-plugin-hiprint@${version}/dist/print-lock.css">`)[0]
+      )
+      head.append(script)
+    },
+    init() {
+      hiprint.init({
+        providers: [new defaultElementTypeProvider()],
+        lang: this.$parent.lang,
+        autoConnect: false
+      });
+      // 杩樺師閰嶇疆
+      hiprint.setConfig()
+      // eslint-disable-next-line no-undef
+      hiprint.PrintElementTypeManager.buildByHtml($('.ep-draggable-item'));
+      $('#hiprint-printTemplate').empty()
+      let that = this;
+      this.template = hiprintTemplate = new hiprint.PrintTemplate({
+        template: panel,
+        // 鍥剧墖閫夋嫨鍔熻兘
+        onImageChooseClick: (target) => {
+          // 娴嬭瘯 3绉掑悗淇敼鍥剧墖鍦板潃鍊�
+          setTimeout(() => {
+            // target.refresh(url,options,callback)
+            // callback(el, width, height) // 鍘熷厓绱�,瀹�,楂�
+            // target.refresh(url,false,(el,width,height)=>{
+            //   el.options.width = width;
+            //   el.designTarget.css('width', width + "pt");
+            //   el.designTarget.children('.resize-panel').trigger($.Event('click'));
+            // })
+            target.refresh("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAtAAAAIIAQMAAAB99EudAAAABlBMVEUmf8vG2O41LStnAAABD0lEQVR42u3XQQqCQBSAYcWFS4/QUTpaHa2jdISWLUJjjMpclJoPGvq+1WsYfiJCZ4oCAAAAAAAAAAAAAAAAAHin6pL9c6H/fOzHbRrP0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0u/SY9LS0tLS0tLS0tLS0n+edm+UlpaWlpaWlpaWlpaW/tl0Ndyzbno7/+tPTJdd1wal69dNa6abx+Lq6TSeYtK7BX/Diek0XULSZZrakPRtV0i6Hu/KIt30q4fM0pvBqvR9mvsQkZaW9gyJT+f5lsnzjR54xAk8mAUeJyMPwYFH98ALx5Jr0kRLLndT7b64UX9QR/0eAAAAAAAAAAAAAAAAAAD/4gpryzr/bja4QgAAAABJRU5ErkJggg==", {
+              // auto: true, // 鏍规嵁鍥剧墖瀹介珮鑷姩绛夋瘮(瀹�>楂�?width:height)
+              // width: true, // 鎸夊璋冩暣楂�
+              // height: true, // 鎸夐珮璋冩暣瀹�
+              real: true // 鏍规嵁鍥剧墖瀹為檯灏哄璋冩暣(杞琾t)
+            })
+          }, 3000)
+          // target.getValue()
+          // target.refresh(url)
+        },
+        // 鑷畾涔夊彲閫夊瓧浣�
+        // 鎴栬�呬娇鐢� hiprintTemplate.setFontList([])
+        // 鎴栧厓绱犱腑 options.fontList: []
+        fontList: [
+          {title: '寰蒋闆呴粦', value: 'Microsoft YaHei'},
+          {title: '榛戜綋', value: 'STHeitiSC-Light'},
+          {title: '鎬濇簮榛戜綋', value: 'SourceHanSansCN-Normal'},
+          {title: '鐜嬬静涔嬩功娉曚綋', value: '鐜嬬静涔嬩功娉曚綋'},
+          {title: '瀹嬩綋', value: 'SimSun'},
+          {title: '鍗庝负妤蜂綋', value: 'STKaiti'},
+          {title: 'cursive', value: 'cursive'},
+        ],
+        dataMode: 1, // 1:getJson 鍏朵粬锛歡etJsonTid 榛樿1
+        history: true, // 鏄惁闇�瑕� 鎾ら攢閲嶅仛鍔熻兘
+        willOutOfBounds: true, // 鏄惁鍏佽缁勪欢鍐呯殑鎺т欢瓒呭嚭鑼冨洿
+        qtDesigner: true, // 鏄惁寮�鍚被浼糛T Designer鐨勫敮涓�field鐢熸垚妯″紡
+        onDataChanged: (type, json) => {
+          console.log(type); // 鏂板銆佺Щ鍔ㄣ�佸垹闄ゃ�佷慨鏀�(鍙傛暟璋冩暣)銆佸ぇ灏忋�佹棆杞�
+          console.log(json); // 杩斿洖 template
+        },
+        onUpdateError: (e) => {
+          console.log(e);
+        },
+        settingContainer: '#PrintElementOptionSetting',
+        paginationContainer: '.hiprint-printPagination'
+      });
+      hiprintTemplate.design('#hiprint-printTemplate', {grid: true});
+      console.log(hiprintTemplate);
+      // 鑾峰彇褰撳墠鏀惧ぇ姣斾緥, 褰搝oom鏃朵紶true 鎵嶄細鏈�
+      this.scaleValue = hiprintTemplate.editingPanel.scale || 1;
+    },
+    setOptionConfig(type) {
+      switch (type) {
+        case -1: // 娴嬭瘯
+          hiprint.setConfig({
+            movingDistance: 2.5,
+            text: {
+              tabs: [
+                // 闅愯棌閮ㄥ垎
+                {
+                  // name: '娴嬭瘯', // tab鍚嶇О 鍙拷鐣�
+                  options: [
+                    {
+                      name: 'fixed',
+                      hidden: true
+                    },
+                  ]
+                },
+                // 褰撲慨鏀圭浜屼釜 tabs 鏃�,蹇呴』鎶婁粬涔嬪墠鐨� tabs 閮藉垪涓惧嚭鏉�.
+              ],
+              supportOptions: [
+                {
+                  name: 'styler',
+                  hidden: true
+                },
+                {
+                  name: 'formatter',
+                  hidden: true
+                },
+              ]
+            },
+            image: {
+              tabs: [
+                {
+                  // 鏁翠綋鏇挎崲
+                  replace: true,
+                  name: '鍩烘湰', options: [
+                    {
+                      name: 'field',
+                      hidden: false
+                    },
+                    {
+                      name: 'src',
+                      hidden: false
+                    },
+                    {
+                      name: 'fit',
+                      hidden: false
+                    }
+                  ]
+                },
+              ],
+            }
+          })
+          hiprint.setConfig({
+            movingDistance: 2.5,
+            text: {
+              tabs: [
+                // 闅愯棌閮ㄥ垎
+                {
+                  // name: '娴嬭瘯', // tab鍚嶇О 鍙拷鐣�
+                  options: [
+                    {
+                      name: 'fixed',
+                      hidden: true
+                    },
+                  ]
+                },
+                // 褰撲慨鏀圭浜屼釜 tabs 鏃�,蹇呴』鎶婁粬涔嬪墠鐨� tabs 閮藉垪涓惧嚭鏉�.
+              ],
+              supportOptions: [
+                {
+                  name: 'styler',
+                  hidden: true
+                },
+                {
+                  name: 'formatter',
+                  hidden: true
+                },
+              ]
+            },
+            image: {
+              tabs: [
+                {
+                  // 鏁翠綋鏇挎崲
+                  replace: true,
+                  name: '鍩烘湰', options: [
+                    {
+                      name: 'field',
+                      hidden: false
+                    },
+                    {
+                      name: 'src',
+                      hidden: false
+                    },
+                    {
+                      name: 'fit',
+                      hidden: false
+                    }
+                  ]
+                },
+              ],
+            }
+          })
+          break;
+        case 0: // 杩樺師閰嶇疆
+          hiprint.setConfig();
+          break;
+        case 1: // 闅愯棌鏂囨湰 杈规銆侀珮绾�
+          hiprint.setConfig({
+            text: {
+              tabs: [
+                {},
+                {},
+                // 闅愯棌杈规
+                {
+                  name: '杈规',
+                  replace: true, // 鏁翠綋鏇挎崲
+                  options: []
+                },
+                // 闅愯棌楂樼骇
+                {
+                  name: '楂樼骇',
+                  replace: true, // 鏁翠綋鏇挎崲
+                  options: []
+                },
+              ],
+            }
+          });
+          break
+        case 2: // 鍥剧墖鍏冪礌 鍙傛暟涓嶅垎缁�
+          hiprint.setConfig({
+            image: {
+              tabs: [],
+              supportOptions: [],
+            }
+          });
+          break;
+        case 3: // 閲嶅啓瀛椾綋澶у皬銆佸厓绱犲眰绾у弬鏁�
+          hiprint.setConfig({
+            optionItems: [
+              fontSize,
+              function () {
+                function t() {
+                  this.name = "zIndex";
+                }
+
+                return t.prototype.css = function (t, e) {
+                  if (t && t.length) {
+                    if (e) return t.css('z-index', e);
+                  }
+                  return null;
+                }, t.prototype.createTarget = function () {
+                  return this.target = $('<div class="hiprint-option-item">\n        <div class="hiprint-option-item-label">\n        鍏冪礌灞傜骇2\n        </div>\n        <div class="hiprint-option-item-field">\n        <input type="number" class="auto-submit"/>\n        </div>\n    </div>'), this.target;
+                }, t.prototype.getValue = function () {
+                  var t = this.target.find("input").val();
+                  if (t) return parseInt(t.toString());
+                }, t.prototype.setValue = function (t) {
+                  this.target.find("input").val(t);
+                }, t.prototype.destroy = function () {
+                  this.target.remove();
+                }, t;
+              }(),
+            ]
+          });
+          break;
+        case 4: // 鏂板缂╂斁鍙傛暟
+          hiprint.setConfig({
+            optionItems: [
+              scale,
+            ],
+            movingDistance: 2.5,
+            text: {
+              tabs: [
+                {},
+                // 褰撲慨鏀圭浜屼釜 tabs 鏃�,蹇呴』鎶婁粬涔嬪墠鐨� tabs 閮藉垪涓惧嚭鏉�.
+                {
+                  name: '鏍峰紡', options: [
+                    {
+                      name: 'scale',
+                      after: 'transform', // 鑷畾涔夊弬鏁帮紝鎻掑叆鍦� transform 涔嬪悗
+                      hidden: false
+                    },
+                  ]
+                }
+              ],
+            }
+          });
+          break;
+      }
+      // 鍙傛暟 tabs 浼氱紦瀛�. 杩欓噷婕旂ず: 鎵嬪姩娓呯┖涓�涓�, 鍐嶇偣鍑婚�変腑鍏冪礌
+      console.log(hiprintTemplate);
+      hiprintTemplate.editingPanel.printElements.forEach((e) => {
+        if (e._printElementOptionTabs) {
+          delete e._printElementOptionTabs;
+        }
+        if (e._printElementOptionItems) {
+          delete e._printElementOptionItems;
+        }
+      });
+      let els = hiprintTemplate.getSelectEls();
+      els && els.length && els[0].designTarget.trigger($.Event('click'));
+    },
+    /**
+     * 璁剧疆绾稿紶澶у皬
+     * @param type [A3, A4, A5, B3, B4, B5, other]
+     * @param value {width,height} mm
+     */
+    setPaper(type, value) {
+      try {
+        if (Object.keys(this.paperTypes).includes(type)) {
+          this.curPaper = {type: type, width: value.width, height: value.height}
+          hiprintTemplate.setPaper(value.width, value.height)
+        } else {
+          this.curPaper = {type: 'other', width: value.width, height: value.height}
+          hiprintTemplate.setPaper(value.width, value.height)
+        }
+      } catch (error) {
+        this.$message.error(`鎿嶄綔澶辫触: ${error}`)
+      }
+    },
+    otherPaper() {
+      let value = {}
+      value.width = this.paperWidth
+      value.height = this.paperHeight
+      this.paperPopVisible = false
+      this.setPaper('other', value)
+    },
+    changeScale(big) {
+      let scaleValue = this.scaleValue;
+      if (big) {
+        scaleValue += 0.1;
+        if (scaleValue > this.scaleMax) scaleValue = 5;
+      } else {
+        scaleValue -= 0.1;
+        if (scaleValue < this.scaleMin) scaleValue = 0.5;
+      }
+      if (hiprintTemplate) {
+        // scaleValue: 鏀惧ぇ缂╁皬鍊�, false: 涓嶄繚瀛�(涓嶄紶涔熶竴鏍�), 濡傛灉浼� true, 鎵撳嵃鏃朵篃浼氭斁澶�
+        hiprintTemplate.zoom(scaleValue);
+        this.scaleValue = scaleValue;
+      }
+    },
+    rotatePaper() {
+      if (hiprintTemplate) {
+        hiprintTemplate.rotatePaper()
+      }
+    },
+    preView() {
+      // 娴嬭瘯, 鐐归瑙堟洿鏂版嫋鎷藉厓绱�
+      hiprint.updateElementType('defaultModule.text', (type) => {
+        type.title = '杩欐槸鏇存柊鍚庣殑鍏冪礌';
+        return type
+      })
+      // 娴嬭瘯, 閫氳繃socket鍒锋柊鎵撳嵃鏈哄垪琛紱 榛樿鍙湁杩炴帴鐨勬椂鍊欐墠浼氳幏鍙栧埌鏈�鏂扮殑鎵撳嵃鏈哄垪琛�
+      hiprint.refreshPrinterList((list) => {
+        console.log('refreshPrinterList')
+        console.log(list)
+      });
+      // 娴嬭瘯, 鑾峰彇IP銆両PV6銆丮AC鍦板潃銆丏NS
+      // 鍙傛暟鏍煎紡锛�
+      // 1. 绫诲瀷锛坕p銆乮pv6銆乵ac銆乨ns銆乤ll銆乮nterface銆乿boxnet锛�
+      // 2. 鍥炶皟 data => {addr, e}  addr: 杩斿洖鐨勬暟鎹� e:閿欒淇℃伅
+      // 3. 鍏朵粬鍙傛暟 ...args
+      hiprint.getAddress('ip', (data) => {
+        console.log('ip')
+        console.log(data)
+      })
+      hiprint.getAddress('ipv6', (data) => {
+        console.log('ipv6')
+        console.log(data)
+      })
+      hiprint.getAddress('mac', (data) => {
+        console.log('mac')
+        console.log(data)
+      })
+      hiprint.getAddress('dns', (data) => {
+        console.log('dns')
+        console.log(data)
+      })
+      hiprint.getAddress('all', (data) => {
+        console.log('all')
+        console.log(data)
+      })
+      // 鍚勪釜骞冲彴涓嶄竴鏍�, 鐢ㄦ硶瑙�: https://www.npmjs.com/package/address
+      hiprint.getAddress('interface', (data) => {
+        console.log('interface')
+        console.log(data)
+      }, 'IPv4', 'eth1')
+      console.log(hiprintTemplate)
+      this.$refs.preView.show(hiprintTemplate, printData)
+    },
+    onlyPrint() {
+      let hiprintTemplate = this.$print(undefined, panel, printData, {}, {
+        styleHandler: () => {
+          let css = '<link href="http://hiprint.io/Content/hiprint/css/print-lock.css" media="print" rel="stylesheet">';
+          return css
+        }
+      })
+      console.log(hiprintTemplate);
+    },
+    onlyPrint2() {
+      let that = this;
+      if (window.hiwebSocket.opened) {
+        let hiprintTemplate = this.$print2(undefined, panel, printData, {
+          printer: '', title: 'Api鍗曠嫭鎵撳嵃',
+          styleHandler: () => {
+            // let css = '<link href="http://hiprint.io/Content/hiprint/css/print-lock.css" media="print" rel="stylesheet">';
+            let css = '<style>.hiprint-printElement-text{color:red !important;}</style>'
+            return css
+          }
+        })
+        let key = 'Api鍗曠嫭鐩存帴鎵撳嵃';
+        hiprintTemplate.on('printSuccess', function () {
+          that.$notification.success({
+            key: key,
+            placement: 'topRight',
+            message: key + ' 鎵撳嵃鎴愬姛',
+            description: 'Api鍗曠嫭鐩存帴鎵撳嵃鍥炶皟',
+          });
+        });
+        return;
+      }
+      this.$error({
+        title: "瀹㈡埛绔湭杩炴帴",
+        content: (h) => (
+          <div>
+            杩炴帴銆恵hiwebSocket.host}銆戝け璐ワ紒
+            <br/>
+            璇风‘淇濈洰鏍囨湇鍔″櫒宸�
+            <a
+              href="https://gitee.com/CcSimple/electron-hiprint/releases"
+              target="_blank"
+            >
+              涓嬭浇
+            </a>
+            骞�
+            <a href="hiprint://" target="_blank">
+              杩愯
+            </a>
+            鎵撳嵃鏈嶅姟锛�
+          </div>
+        ),
+      });
+    },
+    handleMenuClick(e) {
+      const {key} = e;
+      this.curKey = key;
+    },
+    print() {
+      this.doOperationWhenClientConnected(() => {
+        const printerList = hiprintTemplate.getPrinterList();
+        console.log(printerList)
+        hiprintTemplate.print2(printData, {printer: '', title: 'hiprint娴嬭瘯鎵撳嵃'});
+      })
+    },
+    printByFragments() {
+      this.doOperationWhenClientConnected(() => {
+        const dataList = new Array(50).fill(printData)
+        // 鍘熸湁鏂规硶鎵撳嵃涓嶆垚鍔燂紝鍘熷洜鏄幏鍙朒TML鐨勬柟娉曞鐞嗘椂闂磋繃闀匡紝瀵艰嚧瓒呰繃socket蹇冭烦闂撮殧
+        // hiprintTemplate.print2(dataList, {printer: '', title: 'hiprint娴嬭瘯鎵撳嵃'});
+        hiprintTemplate.print2(dataList, {
+          printer: '',
+          title: 'hiprint娴嬭瘯鎵撳嵃',
+          printByFragments: true,   // 鏄惁闇�瑕佸垎鎵规墦鍗帮紝鍒嗘壒鎵撳嵃鑳藉鏀寔杩炵画鎵撳嵃澶ч噺鏁版嵁锛屼絾浼氬鍔犳墦鍗版墍闇�鏃堕棿
+          // generateHTMLInterval: 30, // 澶氭潯鏁版嵁鐢熸垚HTML鐨勯棿闅旓紝鍗曚綅ms锛岄粯璁ゆ槸10
+          // fragmentSize: 10000,  // 鍒嗙墖瀛楃闀垮害锛岄粯璁�50000
+          // sendInterval: 20, // 鍒嗙墖浼犺緭闂撮殧锛屽崟浣峬s锛岄粯璁�10
+          // type: 'pdf',
+        });
+      })
+    },
+    doOperationWhenClientConnected(operation) {
+      if (window.hiwebSocket.opened) {
+        operation?.()
+        return
+      }
+      this.$error({
+        title: "瀹㈡埛绔湭杩炴帴",
+        content: (h) => (
+          <div>
+            杩炴帴銆恵hiwebSocket.host}銆戝け璐ワ紒
+            <br/>
+            璇风‘淇濈洰鏍囨湇鍔″櫒宸�
+            <a
+              href="https://gitee.com/CcSimple/electron-hiprint/releases"
+              target="_blank"
+            >
+              涓嬭浇
+            </a>
+            骞�
+            <a href="hiprint://" target="_blank">
+              杩愯
+            </a>
+            鎵撳嵃鏈嶅姟锛�
+          </div>
+        ),
+      });
+    },
+    clearPaper() {
+      try {
+        hiprintTemplate.clear();
+      } catch (error) {
+        this.$message.error(`鎿嶄綔澶辫触: ${error}`);
+      }
+    },
+    exportPdf(type) {
+      hiprintTemplate.toPdf(printData, '娴嬭瘯瀵煎嚭pdf', {isDownload: false, type: type}).then((res) => {
+        console.log('type:', type);
+        console.log(res);
+      });
+    },
+    ippPrintAttr() {
+      // 涓嶇煡閬撴墦鍗版満 ipp 鎯呭喌锛� 鍙�氳繃 '瀹㈡埛绔�' 鑾峰彇涓�涓�
+      const printerList = hiprintTemplate.getPrinterList();
+      console.log(printerList)
+      if (!printerList.length) return;
+      let p = printerList[0];
+      console.log(p)
+      // 绯荤粺涓嶅悓锛� 鍙傛暟鍙兘涓嶅悓
+      let url = p.options['printer-uri-supported'];
+      // 娴嬭瘯 鑾峰彇 ipp鎵撳嵃 鏀寔鍙傛暟
+      hiprint.ippPrint({
+        url: url,
+        // 鎵撳嵃鏈哄弬鏁帮細 {version,uri,charset,language}
+        opt: {},
+        action: 'Get-Printer-Attributes', // 鑾峰彇鎵撳嵃鏈烘敮鎸佸弬鏁�
+        // ipp鍙傛暟
+        message: null,
+      }, (res) => {
+        // 鎵ц鐨刬pp 浠诲姟鍥炶皟 / 閿欒鍥炶皟
+        console.log(res)
+      }, (printer) => {
+        // ipp杩炴帴鎴愬姛 鍥炶皟 鎵撳嵃鏈轰俊鎭�
+        console.log(printer)
+      })
+    },
+    ippPrintTest() {
+      // 涓嶇煡閬撴墦鍗版満 ipp 鎯呭喌锛� 鍙�氳繃 '瀹㈡埛绔�' 鑾峰彇涓�涓�
+      const printerList = hiprintTemplate.getPrinterList();
+      console.log(printerList)
+      if (!printerList.length) return;
+      let p = printerList[0];
+      console.log(p)
+      // 绯荤粺涓嶅悓锛� 鍙傛暟鍙兘涓嶅悓
+      let url = p.options['printer-uri-supported'];
+      // 娴嬭瘯 鎵撳嵃鏂囨湰
+      hiprint.ippPrint({
+        url: url,
+        // 鎵撳嵃鏈哄弬鏁帮細 {version,uri,charset,language}
+        opt: {},
+        action: 'Print-Job',
+        // ipp鍙傛暟
+        message: {
+          "operation-attributes-tag": {
+            "requesting-user-name": "hiPrint", // 鐢ㄦ埛鍚�
+            "job-name": "ipp Test Job", // 浠诲姟鍚�
+            "document-format": "text/plain" // 鏂囨。绫诲瀷
+          },
+          // data 闇�涓� Buffer (瀹㈡埛绔畝鍗曞鐞嗕簡string 杞� Buffer), 鏀寔璁剧疆 encoding
+          // data 闇�涓� Buffer (瀹㈡埛绔畝鍗曞鐞嗕簡string 杞� Buffer), 鏀寔璁剧疆 encoding
+          // data 闇�涓� Buffer (瀹㈡埛绔畝鍗曞鐞嗕簡string 杞� Buffer), 鏀寔璁剧疆 encoding
+          // 鍏朵粬 Uint8Array/ArrayBuffer   榛樿浠� 浣跨敤 Buffer.from(data)
+          // 鍏朵粬 Uint8Array/ArrayBuffer   榛樿浠� 浣跨敤 Buffer.from(data)
+          // 鍏朵粬 Uint8Array/ArrayBuffer   榛樿浠� 浣跨敤 Buffer.from(data)
+          // 鍏朵粬 Uint8Array/ArrayBuffer   榛樿浠� 浣跨敤 Buffer.from(data)
+          data: 'test test test test test test test',
+          encoding: 'utf-8' // 榛樿鍙笉浼�
+        }
+      }, (res) => {
+        // 鎵ц鐨刬pp 浠诲姟鍥炶皟 / 閿欒鍥炶皟
+        console.log(res)
+      }, (printer) => {
+        // ipp杩炴帴鎴愬姛 鍥炶皟 鎵撳嵃鏈轰俊鎭�
+        console.log(printer)
+      })
+    },
+    // 鑷畾涔� ipp 璇锋眰
+    ippRequestTest() {
+      const printerList = hiprintTemplate.getPrinterList();
+      console.log(printerList)
+      if (!printerList.length) return;
+      let p = printerList[0];
+      console.log(p)
+      // 绯荤粺涓嶅悓锛� 鍙傛暟鍙兘涓嶅悓
+      let url = p.options['printer-uri-supported'];
+      // 璇﹁锛� https://www.npmjs.com/package/ipp
+      hiprint.ippRequest({
+        url: url,
+        // 浼犲叆鐨勬暟鎹� ipp.serialize 鍚� 鏈仛浠讳綍澶勭悊  鎵撳嵃鍐呭 闇�瑕� Buffer
+        // 浼犲叆鐨勬暟鎹� ipp.serialize 鍚� 鏈仛浠讳綍澶勭悊  鎵撳嵃鍐呭 闇�瑕� Buffer
+        // 浼犲叆鐨勬暟鎹� ipp.serialize 鍚� 鏈仛浠讳綍澶勭悊  鎵撳嵃鍐呭 闇�瑕� Buffer
+        data: {
+          "operation": "Get-Printer-Attributes",
+          "operation-attributes-tag": {
+            // 娴嬭瘯鍙戠幇 Request涓嬪垪3涓繀椤昏鏈�
+            "attributes-charset": "utf-8",
+            "attributes-natural-language": "zh-cn",
+            "printer-uri": url
+          }
+        }
+      }, (res) => {
+        // 鎵ц鐨刬pp 浠诲姟鍥炶皟 / 閿欒鍥炶皟
+        console.log(res)
+      })
+    },
+    ippRequestPrint() {
+      const printerList = hiprintTemplate.getPrinterList();
+      console.log(printerList)
+      if (!printerList.length) return;
+      let p = printerList[0];
+      console.log(p)
+      // 绯荤粺涓嶅悓锛� 鍙傛暟鍙兘涓嶅悓
+      let url = p.options['printer-uri-supported'];
+      let str = "ippRequestPrint ippRequestPrint ippRequestPrint";
+      let array = new Uint8Array(str.length);
+      for (var i = 0; i < str.length; i++) {
+        array[i] = str.charCodeAt(i);
+      }
+      let testData = array.buffer;
+      // 璇﹁锛� https://www.npmjs.com/package/ipp
+      hiprint.ippRequest({
+        url: url,
+        // 浼犲叆鐨勬暟鎹� ipp.serialize 鍚� 鏈仛浠讳綍澶勭悊  鎵撳嵃鍐呭 闇�瑕� Buffer
+        // 浼犲叆鐨勬暟鎹� ipp.serialize 鍚� 鏈仛浠讳綍澶勭悊  鎵撳嵃鍐呭 闇�瑕� Buffer
+        // 浼犲叆鐨勬暟鎹� ipp.serialize 鍚� 鏈仛浠讳綍澶勭悊  鎵撳嵃鍐呭 闇�瑕� Buffer
+        data: {
+          "operation": "Print-Job",
+          "operation-attributes-tag": {
+            // 娴嬭瘯鍙戠幇 Request涓嬪垪3涓繀椤昏鏈�
+            "attributes-charset": "utf-8",
+            "attributes-natural-language": "zh-cn",
+            "printer-uri": url,
+            "requesting-user-name": "hiPrint", // 鐢ㄦ埛鍚�
+            "job-name": "ipp Request Job", // 浠诲姟鍚�
+            "document-format": "text/plain" // 鏂囨。绫诲瀷
+          },
+          data: testData
+        }
+      }, (res) => {
+        // 鎵ц鐨刬pp 浠诲姟鍥炶皟 / 閿欒鍥炶皟
+        console.log(res)
+      })
+    },
+    updateJson() {
+      if (hiprintTemplate) {
+        try {
+          hiprintTemplate.update(JSON.parse(this.jsonIn))
+        } catch (e) {
+          this.$message.error(`鏇存柊澶辫触: ${e}`)
+        }
+      }
+    },
+    exportJson() {
+      if (hiprintTemplate) {
+        this.jsonOut = JSON.stringify(hiprintTemplate.getJson() || {})
+      }
+    },
+    setElsAlign(e) {
+      hiprintTemplate.setElsAlign(e)
+    },
+    setElsSpace(h) {
+      hiprintTemplate.setElsSpace(10, h)
+    },
+    setEleSelectByField() {
+      hiprintTemplate.selectElementsByField(['name'])
+    },
+    getSelectEls() {
+      let els = hiprintTemplate.getSelectEls();
+      console.log(els)
+    },
+    updateFontSize() {
+      hiprintTemplate.updateOption('fontSize', 12);
+    },
+    updateFontWeight() {
+      hiprintTemplate.updateOption('fontWeight', 'bolder');
+    }
+  }
+}
+</script>
+
+<style lang="less" scoped>
+
+.btn-text-desc {
+  width: 12vw;
+  text-align: right;
+  white-space: nowrap;
+}
+
+// 鎷栨嫿
+.drag_item_box {
+  height: 100%;
+  padding: 6px;
+}
+
+.drag_item_box > div {
+  height: 100%;
+  width: 100%;
+  background-color: #fff;
+  display: flex;
+  justify-content: center;
+  align-items: center;
+}
+
+.drag_item_box > div > a {
+  text-align: center;
+  text-decoration-line: none;
+}
+
+.drag_item_box > div > a > span {
+  font-size: 28px;
+}
+
+.drag_item_box > div > a > p {
+  margin: 0;
+}
+
+.drag_item_title {
+  font-size: 16px;
+  padding: 12px 6px 0 6px;
+  font-weight: bold;
+}
+
+// 榛樿鍥剧墖
+/deep/ .hiprint-printElement-image-content {
+  img {
+    content: url("~@/assets/logo.png");
+  }
+}
+
+// 杈呭姪绾挎牱寮�
+/deep/ .toplineOfPosition {
+  border: 0;
+  border-top: 1px dashed purple;
+}
+
+/deep/ .bottomlineOfPosition {
+  border: 0;
+  border-top: 1px dashed purple;
+}
+
+/deep/ .leftlineOfPosition {
+  border: 0;
+  border-left: 1px dashed purple;
+}
+
+/deep/ .rightlineOfPosition {
+  border: 0;
+  border-left: 1px dashed purple;
+}
+
+// 璁捐瀹瑰櫒
+.card-design {
+  overflow: hidden;
+  overflow-x: auto;
+  overflow-y: auto;
+}
+
+</style>
diff --git a/src/views/printTemplateDesigner/design/panel.js b/src/views/printTemplateDesigner/design/panel.js
new file mode 100644
index 0000000..b29eb3e
--- /dev/null
+++ b/src/views/printTemplateDesigner/design/panel.js
@@ -0,0 +1,745 @@
+export default {
+  "panels": [
+    {
+      "index": 0,
+      "name": 1,
+      "height": 297,
+      "width": 210,
+      "paperHeader": 49.5,
+      "paperFooter": 780.0000000000001,
+      "printElements": [
+        {
+          "options": {
+            "left": 0,
+            "top": 0,
+            "height": 22.5,
+            "width": 114,
+            "title": "涓轰簡鐪嬫墦鍗拌竟璺�(Safari)",
+            "right": 82.5,
+            "bottom": 9.75,
+            "vCenter": 41.25,
+            "hCenter": 4.875,
+            "coordinateSync": false,
+            "widthHeightSync": false,
+            "color": "#ffffff",
+            "backgroundColor": "#57b3ff",
+            "textAlign": "center",
+            "textContentVerticalAlign": "middle",
+            "qrCodeLevel": 0
+          },
+          "printElementType": {
+            "title": "杩欐槸鏇存柊鍚庣殑鍏冪礌",
+            "type": "text"
+          }
+        },
+        {
+          "options": {
+            "left": 175.5,
+            "top": 10.5,
+            "height": 27,
+            "width": 259,
+            "title": "HiPrint鑷畾涔夋ā鍧楁墦鍗版彃浠�",
+            "fontSize": 19,
+            "fontWeight": "600",
+            "textAlign": "center",
+            "lineHeight": 26,
+            "coordinateSync": true,
+            "widthHeightSync": true,
+            "draggable": false
+          },
+          "printElementType": {
+            "title": "鑷畾涔夋枃鏈�",
+            "type": "text"
+          }
+        },
+        {
+          "options": {
+            "left": 60,
+            "top": 27,
+            "height": 13,
+            "width": 52,
+            "title": "椤电湁绾�",
+            "textAlign": "center"
+          },
+          "printElementType": {
+            "title": "鑷畾涔夋枃鏈�",
+            "type": "text"
+          }
+        },
+        {
+          "options": {
+            "left": 570,
+            "top": 51,
+            "height": 109.5,
+            "width": 24,
+            "title": "涓轰簡鐪嬫墦鍗拌竟璺�",
+            "right": 597,
+            "bottom": 159.75,
+            "vCenter": 585,
+            "hCenter": 105,
+            "coordinateSync": false,
+            "widthHeightSync": false,
+            "letterSpacing": 4.5,
+            "color": "#ffffff",
+            "backgroundColor": "#57b3ff",
+            "textAlign": "center",
+            "textContentVerticalAlign": "middle",
+            "qrCodeLevel": 0
+          },
+          "printElementType": {
+            "title": "杩欐槸鏇存柊鍚庣殑鍏冪礌",
+            "type": "text"
+          }
+        },
+        {
+          "options": {
+            "left": 0,
+            "top": 51,
+            "height": 109.5,
+            "width": 24,
+            "title": "涓轰簡鐪嬫墦鍗拌竟璺�",
+            "right": -3,
+            "bottom": 154.5,
+            "vCenter": -15,
+            "hCenter": 99.75,
+            "coordinateSync": false,
+            "widthHeightSync": false,
+            "letterSpacing": 4.5,
+            "color": "#ffffff",
+            "backgroundColor": "#57b3ff",
+            "textAlign": "center",
+            "textContentVerticalAlign": "middle",
+            "qrCodeLevel": 0
+          },
+          "printElementType": {
+            "title": "杩欐槸鏇存柊鍚庣殑鍏冪礌",
+            "type": "text"
+          }
+        },
+        {
+          "options": {
+            "left": 25.5,
+            "top": 57,
+            "height": 705,
+            "width": 9,
+            "fixed": true,
+            "borderStyle": "dotted"
+          },
+          "printElementType": {
+            "type": "vline"
+          }
+        },
+        {
+          "options": {
+            "left": 60,
+            "top": 61.5,
+            "height": 48,
+            "width": 87,
+            "src": "",
+            "fit": "contain"
+          },
+          "printElementType": {
+            "title": "鍥剧墖",
+            "type": "image"
+          }
+        },
+        {
+          "options": {
+            "left": 153,
+            "top": 64.5,
+            "height": 39,
+            "width": 276,
+            "title": "浜岀淮鐮佷互鍙婃潯褰㈢爜鍧囬噰鐢╯vg鏍煎紡鎵撳嵃銆備笉鍚屾墦鍗版満鎵撳嵃涓嶄細閫犳垚澶辩湡銆傚浘鐗囨墦鍗帮細涓嶅悓DPI鎵撳嵃鍙兘浼氬鑷村け鐪燂紝",
+            "fontFamily": "寰蒋闆呴粦",
+            "textAlign": "center",
+            "lineHeight": 18
+          },
+          "printElementType": {
+            "title": "鑷畾涔夋枃鏈�",
+            "type": "text"
+          }
+        },
+        {
+          "options": {
+            "left": 457.5,
+            "top": 79.5,
+            "height": 13,
+            "width": 120,
+            "title": "濮撳悕",
+            "field": "name",
+            "testData": "鍙ゅ姏濞滄墡",
+            "color": "#f00808",
+            "textDecoration": "underline",
+            "textAlign": "center",
+            "fields": [
+              {
+                "text": "id",
+                "field": "id"
+              },
+              {
+                "text": "濮撳悕",
+                "field": "name"
+              },
+              {
+                "text": "鎬у埆",
+                "field": "gender"
+              },
+              {
+                "text": "鏁伴噺",
+                "field": "count"
+              }
+            ]
+          },
+          "printElementType": {
+            "title": "鏂囨湰",
+            "type": "text"
+          }
+        },
+        {
+          options: {
+            left: 60,
+            top: 130,
+            height: 60,
+            width: 60,
+            title: "qrcode",
+            field: "qrcode",
+            testData: "qrcode",
+          },
+          printElementType: {
+            title: "浜岀淮鐮�",
+            type: "qrcode",
+          },
+        },
+        {
+          options: {
+            left: 140,
+            top: 130,
+            height: 40,
+            width: 120,
+            title: "barcode",
+            field: "barcode",
+            testData: "barcode",
+          },
+          printElementType: {
+            title: "鏉″舰鐮�",
+            type: "barcode",
+          },
+        },
+        {
+          "options": {
+            "left": 60,
+            "top": 110,
+            "height": 19,
+            "width": 213,
+            "title": "鎵�鏈夋墦鍗板厓绱犻兘鍙凡鎷栨嫿鐨勬柟寮忔潵鏀瑰彉鍏冪礌澶у皬",
+            "fontFamily": "寰蒋闆呴粦",
+            "textAlign": "center",
+            "lineHeight": 18
+          },
+          "printElementType": {
+            "title": "鑷畾涔夋枃鏈�",
+            "type": "text"
+          }
+        },
+        {
+          "options": {
+            "left": 483,
+            "top": 115,
+            "height": 60,
+            "width": 60,
+            "title": "123456789",
+            "textAlign": "center",
+            "textType": "qrcode"
+          },
+          "printElementType": {
+            "title": "鑷畾涔夋枃鏈�",
+            "type": "text"
+          }
+        },
+        {
+          "options": {
+            "left": 285,
+            "top": 125,
+            "height": 40,
+            "width": 175,
+            "title": "123456789",
+            "fontFamily": "寰蒋闆呴粦",
+            "textAlign": "center",
+            "textType": "barcode"
+          },
+          "printElementType": {
+            "title": "鑷畾涔夋枃鏈�",
+            "type": "text"
+          }
+        },
+        {
+          "options": {
+            "left": 153,
+            "top": 189,
+            "height": 13,
+            "width": 238,
+            "title": "鍗曞嚮鍏冪礌锛屽彸渚у彲鑷畾涔夊厓绱犲睘鎬�",
+            "textAlign": "center",
+            "fontFamily": "寰蒋闆呴粦"
+          },
+          "printElementType": {
+            "title": "鑷畾涔夋枃鏈�",
+            "type": "text"
+          }
+        },
+        {
+          "options": {
+            "left": 60,
+            "top": 190.5,
+            "height": 13,
+            "width": 51,
+            "title": "妯嚎",
+            "textAlign": "center"
+          },
+          "printElementType": {
+            "title": "鑷畾涔夋枃鏈�",
+            "type": "text"
+          }
+        },
+        {
+          "options": {
+            "left": 415.5,
+            "top": 190.5,
+            "height": 13,
+            "width": 164,
+            "title": "鍙互閰嶇疆鍚勫睘鎬х殑榛樿鍊�",
+            "textAlign": "center",
+            "fontFamily": "寰蒋闆呴粦"
+          },
+          "printElementType": {
+            "title": "鑷畾涔夋枃鏈�",
+            "type": "text"
+          }
+        },
+        {
+          "options": {
+            "left": 60,
+            "top": 214.5,
+            "height": 10,
+            "width": 475.5,
+            "borderWidth": 0.75
+          },
+          "printElementType": {
+            "title": "妯嚎",
+            "type": "hline"
+          }
+        },
+        {
+          "options": {
+            "left": 235.5,
+            "top": 220.5,
+            "height": 32,
+            "width": 342,
+            "title": "鑷畾涔夎〃鏍硷細鐢ㄦ埛鍙乏閿�変腑琛ㄥご锛屽彸閿煡鐪嬪彲鎿嶄綔椤癸紝鎿嶄綔绫讳技Excel锛屽弻鍑昏〃澶村崟鍏冩牸鍙繘琛岀紪杈戙�傚唴瀹癸細title#field",
+            "fontFamily": "寰蒋闆呴粦",
+            "textAlign": "center",
+            "lineHeight": 15
+          },
+          "printElementType": {
+            "title": "鑷畾涔夋枃鏈�",
+            "type": "text"
+          }
+        },
+        {
+          "options": {
+            "left": 156,
+            "top": 265.5,
+            "height": 13,
+            "width": 94,
+            "title": "琛ㄥご鍒楀ぇ灏忓彲鎷栧姩",
+            "fontFamily": "寰蒋闆呴粦",
+            "textAlign": "center"
+          },
+          "printElementType": {
+            "title": "鑷畾涔夋枃鏈�",
+            "type": "text"
+          }
+        },
+        {
+          "options": {
+            "left": 60,
+            "top": 265.5,
+            "height": 13,
+            "width": 90,
+            "title": "绾㈣壊鍖哄煙鍙嫋鍔�",
+            "fontFamily": "寰蒋闆呴粦",
+            "textAlign": "center"
+          },
+          "printElementType": {
+            "title": "鑷畾涔夋枃鏈�",
+            "type": "text"
+          }
+        },
+        {
+          "options": {
+            "left": 60,
+            "top": 285,
+            "height": 56,
+            "width": 511.5,
+            "field": "table",
+            "tableFooterRepeat": "",
+            "tableBorder": "noBorder",
+            "tableHeaderBorder": "topBorder",
+            "tableHeaderCellBorder": "border",
+            "tableBodyRowBorder": "topBorder",
+            "tableFooterBorder": "topBorder",
+            "fields": [
+              {
+                "text": "id",
+                "field": "id"
+              },
+              {
+                "text": "濮撳悕",
+                "field": "name"
+              },
+              {
+                "text": "鎬у埆",
+                "field": "gender"
+              },
+              {
+                "text": "鏁伴噺",
+                "field": "count"
+              }
+            ],
+            "columns": [
+              [
+                {
+                  "width": 102.30000000000001,
+                  "checked": true,
+                  "fixed": false,
+                  "rowspan": 1,
+                  "colspan": 1
+                },
+                {
+                  "width": 102.30000000000001,
+                  "title": "濮撳悕",
+                  "field": "name",
+                  "checked": true,
+                  "columnId": "name",
+                  "fixed": false,
+                  "rowspan": 1,
+                  "colspan": 1,
+                  "align": "center",
+                  "tableSummary": "count"
+                },
+                {
+                  "width": 102.30000000000001,
+                  "title": "鏁伴噺",
+                  "field": "count",
+                  "checked": true,
+                  "columnId": "count",
+                  "fixed": false,
+                  "rowspan": 1,
+                  "colspan": 1,
+                  "align": "center",
+                  "tableSummary": "sum"
+                },
+                {
+                  "width": 102.30000000000001,
+                  "checked": true,
+                  "fixed": false,
+                  "rowspan": 1,
+                  "colspan": 1
+                },
+                {
+                  "width": 102.30000000000001,
+                  "checked": true,
+                  "fixed": false,
+                  "rowspan": 1,
+                  "colspan": 1
+                },
+                {
+                  "width": 85.25,
+                  "title": "鎬у埆",
+                  "field": "gender",
+                  "checked": false,
+                  "columnId": "gender",
+                  "fixed": false,
+                  "rowspan": 1,
+                  "colspan": 1
+                }
+              ]
+            ]
+          },
+          "printElementType": {
+            "title": "琛ㄦ牸",
+            "type": "table",
+            "editable": true,
+            "columnDisplayEditable": true,
+            "columnDisplayIndexEditable": true,
+            "columnTitleEditable": true,
+            "columnResizable": true,
+            "columnAlignEditable": true,
+            "isEnableEditField": true,
+            "isEnableContextMenu": true,
+            "isEnableInsertRow": true,
+            "isEnableDeleteRow": true,
+            "isEnableInsertColumn": true,
+            "isEnableDeleteColumn": true,
+            "isEnableMergeCell": true
+          }
+        },
+        {
+          "options": {
+            "left": 21,
+            "top": 346.5,
+            "height": 61.5,
+            "width": 15,
+            "title": "瑁呰绾�",
+            "lineHeight": 18,
+            "fixed": true,
+            "contentPaddingTop": 3.75,
+            "backgroundColor": "#ffffff"
+          },
+          "printElementType": {
+            "type": "text"
+          }
+        },
+        {
+          "options": {
+            "left": 225,
+            "top": 355,
+            "height": 13,
+            "width": 346.5,
+            "title": "鑷畾涔夋ā鍧楋細涓昏涓哄紑鍙戜汉鍛樿璁★紝鑳藉蹇�燂紝绠�鍗曪紝瀹炵幇鑷繁鍔熻兘",
+            "textAlign": "center"
+          },
+          "printElementType": {
+            "title": "鑷畾涔夋枃鏈�",
+            "type": "text"
+          }
+        },
+        {
+          "options": {
+            "left": 60,
+            "top": 370.5,
+            "height": 18,
+            "width": 79,
+            "title": "閰嶇疆椤硅〃鏍�",
+            "textAlign": "center"
+          },
+          "printElementType": {
+            "title": "鑷畾涔夋枃鏈�",
+            "type": "text"
+          }
+        },
+        {
+          "options": {
+            "left": 225,
+            "top": 385.5,
+            "height": 38,
+            "width": 346.5,
+            "title": "閰嶇疆妯″潡锛氫富瑕佷负瀹㈡埛浣跨敤锛屽紑鍙戜汉鍛樺彲浠ラ厤缃睘鎬э紝瀛楁锛屾爣棰樼瓑锛屽鎴风洿鎺ヤ娇鐢紝閰嶇疆妯″潡璇峰弬鑰冨疄渚�2",
+            "fontFamily": "寰蒋闆呴粦",
+            "lineHeight": 15,
+            "textAlign": "center",
+            "color": "#d93838"
+          },
+          "printElementType": {
+            "title": "鑷畾涔夋枃鏈�",
+            "type": "text"
+          }
+        },
+        {
+          "options": {
+            "left": 60,
+            "top": 487.5,
+            "height": 13,
+            "width": 123,
+            "title": "闀挎枃鏈細鑷姩鍒嗛〉",
+            "textAlign": "center"
+          },
+          "printElementType": {
+            "title": "鑷畾涔夋枃鏈�",
+            "type": "text"
+          }
+        },
+        {
+          "options": {
+            "left": 60,
+            "top": 507,
+            "height": 40,
+            "width": 511.5,
+            "field": "longText"
+          },
+          "printElementType": {
+            "title": "闀挎枃",
+            "type": "longText"
+          }
+        },
+        {
+          "options": {
+            "left": 475.5,
+            "top": 565.5,
+            "height": 100,
+            "width": 100
+          },
+          "printElementType": {
+            "title": "鐭╁舰",
+            "type": "rect"
+          }
+        },
+        {
+          "options": {
+            "left": 174,
+            "top": 568.5,
+            "height": 13,
+            "width": 90,
+            "title": "绔栫嚎",
+            "textAlign": "center"
+          },
+          "printElementType": {
+            "title": "鑷畾涔夋枃鏈�",
+            "type": "text"
+          }
+        },
+        {
+          "options": {
+            "left": 60,
+            "top": 574.5,
+            "height": 100,
+            "width": 10
+          },
+          "printElementType": {
+            "title": "绔栫嚎",
+            "type": "vline"
+          }
+        },
+        {
+          "options": {
+            "left": 210,
+            "top": 604.5,
+            "height": 13,
+            "width": 120,
+            "title": "妯嚎",
+            "textAlign": "center"
+          },
+          "printElementType": {
+            "title": "鑷畾涔夋枃鏈�",
+            "type": "text"
+          }
+        },
+        {
+          "options": {
+            "left": 130.5,
+            "top": 625.5,
+            "height": 10,
+            "width": 277,
+            "borderWidth": 0.75
+          },
+          "printElementType": {
+            "title": "妯嚎",
+            "type": "hline"
+          }
+        },
+        {
+          "options": {
+            "left": 364.5,
+            "top": 649.5,
+            "height": 13,
+            "width": 101,
+            "title": "鐭╁舰",
+            "textAlign": "center"
+          },
+          "printElementType": {
+            "title": "鑷畾涔夋枃鏈�",
+            "type": "text"
+          }
+        },
+        {
+          "options": {
+            "left": 525,
+            "top": 784.5,
+            "height": 13,
+            "width": 63,
+            "title": "椤靛熬绾�",
+            "textAlign": "center"
+          },
+          "printElementType": {
+            "title": "鑷畾涔夋枃鏈�",
+            "type": "text"
+          }
+        },
+        {
+          "options": {
+            "left": 12,
+            "top": 786,
+            "height": 49,
+            "width": 49
+          },
+          "printElementType": {
+            "title": "html",
+            "type": "html"
+          }
+        },
+        {
+          "options": {
+            "left": 75,
+            "top": 790.5,
+            "height": 13,
+            "width": 137,
+            "title": "绾㈣壊鍘熷瀷鏄嚜鍔ㄥ畾涔夌殑Html",
+            "textAlign": "center"
+          },
+          "printElementType": {
+            "title": "鑷畾涔夋枃鏈�",
+            "type": "text"
+          }
+        },
+        {
+          "options": {
+            "left": 334.5,
+            "top": 810,
+            "height": 13,
+            "width": 205,
+            "title": "椤电湁绾垮凡涓娿�傞〉灏句笅浠ヤ笅姣忛〉閮戒細閲嶅鎵撳嵃",
+            "textAlign": "center"
+          },
+          "printElementType": {
+            "title": "鑷畾涔夋枃鏈�",
+            "type": "text"
+          }
+        },
+        {
+          "options": {
+            "left": 0,
+            "top": 816,
+            "height": 22.5,
+            "width": 114,
+            "title": "涓轰簡鐪嬫墦鍗拌竟璺�(Safari)",
+            "right": 99.99609375,
+            "bottom": 845.49609375,
+            "vCenter": 42.99609375,
+            "hCenter": 834.24609375,
+            "coordinateSync": false,
+            "widthHeightSync": false,
+            "color": "#ffffff",
+            "backgroundColor": "#57b3ff",
+            "textAlign": "center",
+            "textContentVerticalAlign": "middle",
+            "qrCodeLevel": 0
+          },
+          "printElementType": {
+            "title": "杩欐槸鏇存柊鍚庣殑鍏冪礌",
+            "type": "text"
+          }
+        }
+      ],
+      "paperNumberLeft": 565.5,
+      "paperNumberTop": 573,
+      "paperNumberContinue": true,
+      "watermarkOptions": {
+        "content": "vue-plugin-hiprint",
+        "rotate": 25,
+        "timestamp": true,
+        "format": "YYYY-MM-DD HH:mm"
+      },
+      "panelLayoutOptions": {}
+    }
+  ]
+}
diff --git a/src/views/printTemplateDesigner/design/preview.vue b/src/views/printTemplateDesigner/design/preview.vue
new file mode 100644
index 0000000..ff11514
--- /dev/null
+++ b/src/views/printTemplateDesigner/design/preview.vue
@@ -0,0 +1,85 @@
+<template>
+  <a-modal :visible="visible" :maskClosable="false"
+           @cancel="hideModal" :width="width+'mm'">
+    <a-spin :spinning="spinning" style="min-height: 100px">
+      <div id="preview_content_design"></div>
+    </a-spin>
+    <template slot="title">
+      <a-space>
+        <div style="margin-right: 20px">鎵撳嵃棰勮</div>
+        <a-button :loading="waitShowPrinter" type="primary" icon="printer" @click.stop="print">鎵撳嵃</a-button>
+        <a-button type="primary" icon="printer" @click.stop="toPdf">pdf</a-button>
+      </a-space>
+    </template>
+    <template slot="footer">
+      <a-button key="close" type="info" @click="hideModal">
+        鍏抽棴
+      </a-button>
+    </template>
+  </a-modal>
+</template>
+
+<script>
+export default {
+  name: "printPreview",
+  props: {},
+  data() {
+    return {
+      visible: false,
+      spinning: true,
+      waitShowPrinter: false,
+      // 绾稿紶瀹� mm
+      width: 0,
+      // 妯℃澘
+      hiprintTemplate: {},
+      // 鏁版嵁
+      printData: {}
+    }
+  },
+  computed: {},
+  watch: {},
+  created() {
+  },
+  mounted() {
+  },
+  methods: {
+    hideModal() {
+      this.visible = false
+    },
+    show(hiprintTemplate, printData, width = '210') {
+      this.visible = true
+      this.spinning = true
+      this.width = hiprintTemplate.editingPanel ? hiprintTemplate.editingPanel.width : width;
+      this.hiprintTemplate = hiprintTemplate
+      this.printData = printData
+      setTimeout(() => {
+        // eslint-disable-next-line no-undef
+        $('#preview_content_design').html(hiprintTemplate.getHtml(printData))
+        this.spinning = false
+      }, 500)
+    },
+    print() {
+      this.waitShowPrinter = true
+      this.hiprintTemplate.print(this.printData, {}, {
+        callback: () => {
+          console.log('callback')
+          this.waitShowPrinter = false
+        }
+      })
+    },
+    toPdf() {
+      this.hiprintTemplate.toPdf({}, '鎵撳嵃棰勮');
+    },
+  }
+}
+
+</script>
+<style lang="less" scoped>
+/deep/ .ant-modal-body {
+  padding: 0px;
+}
+
+/deep/ .ant-modal-content {
+  margin-bottom: 24px;
+}
+</style>
diff --git a/src/views/printTemplateDesigner/design/print-data.js b/src/views/printTemplateDesigner/design/print-data.js
new file mode 100644
index 0000000..5e25eb0
--- /dev/null
+++ b/src/views/printTemplateDesigner/design/print-data.js
@@ -0,0 +1,54 @@
+export default {
+  name: '榛勭',
+  logoTest: 'https://portrait.gitee.com/uploads/avatars/user/1800/5400665_CcSimple_1591166830.png!avatar60',
+  password: '12346',
+  longText: '娴欐睙鍦ㄧ嚎3鏈�29鏃ヨ鏈�杩戯紝\n涓�绡囧皬瀛︿簲骞寸骇瀛︾敓鍐欑殑浣滄枃寮曡捣浜嗛挶鎶ヨ鑰呯殑鍏虫敞杩欑瘒浣滄枃鐨勯鐩彨鍋氥�婅剰璇濋娉€�嬶紝璁茶堪鐨勬槸灏忎綔鑰呯彮绾ч噷鍙戠敓鐨勪竴绉嶄笉鏂囨槑鐜拌薄鈥斺�旇鑴忚瘽鐨勫悓瀛﹁秺鏉ヨ秺澶氾紝鏈夌殑浜鸿璇濈敋鑷冲彞鍙モ�滃甫鎶婂効鈥濄�傜彮涓讳换涓轰簡閬忓埗杩欑鐜拌薄锛岀厼璐硅嫤蹇冩兂浜嗗緢澶氬姙娉曪紝璺熷鐢熸枟鏅烘枟鍕団�︹�︾湅鍒拌繖绡囦綔鏂囷紝璁拌�呯獊鐒舵兂鍒帮紝鑷繁璇诲叚骞寸骇鐨勫効瀛愭湁澶╃獊鐒跺啋鍑轰竴鍙ヨ剰璇濄�傛鍓嶏紝浠栨槸浠庝笉璇磋剰璇濈殑銆傞棶浠栨�庝箞瀛︿細鐨勶紝浠栦篃璇翠笉鍑轰釜鎵�浠ョ劧鏉ャ�備簬鏄紝璁拌�呭仛浜嗚繖涓皬瀛︾敓鑴忚瘽鐜拌薄璋冩煡銆傜粡杩囦簡瑙f墠鍙戠幇锛屽皬瀛︾敓鐖辫鑴忚瘽绔熺劧杈冧负鏅亶锛屼竴鑸笁骞寸骇浼氬啋鍑鸿嫍澶淬�傛棤璁烘槸瀛︿範鎴愮哗濂界殑锛岃繕鏄钩鏃朵笉澶捣鐪肩殑锛岄兘浼氳鑴忚瘽銆傝�屼笖锛岃鑴忚瘽浼氣�滀紶鏌撯�濓紝涓�鏃﹀啋澶翠笉鍒舵锛屽埌浜嗕簲鍏勾绾х敋鑷冲彲鑳藉湪鐝噷澶х垎鍙戙�備互涓嬩负浣滄枃銆婅剰璇濋娉€�嬫禉姹熷湪绾�3鏈�29鏃ヨ鏈�杩戯紝涓�绡囧皬瀛︿簲骞寸骇瀛︾敓鍐欑殑浣滄枃寮曡捣浜嗛挶鎶ヨ鑰呯殑鍏虫敞銆傝繖绡囦綔鏂囩殑棰樼洰鍙仛銆婅剰璇濋娉€�嬶紝璁茶堪鐨勬槸灏忎綔鑰呯彮绾ч噷鍙戠敓鐨勪竴绉嶄笉鏂囨槑鐜拌薄鈥斺�旇鑴忚瘽鐨勫悓瀛﹁秺鏉ヨ秺澶氾紝鏈夌殑浜鸿璇濈敋鑷冲彞鍙モ�滃甫鎶婂効鈥濄�傜彮涓讳换涓轰簡閬忓埗杩欑鐜拌薄锛岀厼璐硅嫤蹇冩兂浜嗗緢澶氬姙娉曪紝璺熷鐢熸枟鏅烘枟鍕団�︹�︾湅鍒拌繖绡囦綔鏂囷紝璁拌�呯獊鐒舵兂鍒帮紝鑷繁璇诲叚骞寸骇鐨勫効瀛愭湁澶╃獊鐒跺啋鍑轰竴鍙ヨ剰璇濄�傛鍓嶏紝浠栨槸浠庝笉璇磋剰璇濈殑銆傞棶浠栨�庝箞瀛︿細鐨勶紝浠栦篃璇翠笉鍑轰釜鎵�浠ョ劧鏉ャ�備簬鏄紝璁拌�呭仛浜嗚繖涓皬瀛︾敓鑴忚瘽鐜拌薄璋冩煡銆傜粡杩囦簡瑙f墠鍙戠幇锛屽皬瀛︾敓鐖辫鑴忚瘽绔熺劧杈冧负鏅亶锛屼竴鑸笁骞寸骇浼氬啋鍑鸿嫍澶淬�傛棤璁烘槸瀛︿範鎴愮哗濂界殑锛岃繕鏄钩鏃朵笉澶捣鐪肩殑锛岄兘浼氳鑴忚瘽銆傝�屼笖锛岃鑴忚瘽浼氣�滀紶鏌撯�濓紝涓�鏃﹀啋澶翠笉鍒舵锛屽埌浜嗕簲鍏勾绾х敋鑷冲彲鑳藉湪鐝噷澶х垎鍙戙�備互涓嬩负浣滄枃銆婅剰璇濋娉€�嬫禉姹熷湪绾�3鏈�29鏃ヨ鏈�杩戯紝涓�绡囧皬瀛︿簲骞寸骇瀛︾敓鍐欑殑浣滄枃寮曡捣浜嗛挶鎶ヨ鑰呯殑鍏虫敞銆傝繖绡囦綔鏂囩殑棰樼洰鍙仛銆婅剰璇濋娉€�嬶紝璁茶堪鐨勬槸灏忎綔鑰呯彮绾ч噷鍙戠敓鐨勪竴绉嶄笉鏂囨槑鐜拌薄鈥斺�旇鑴忚瘽鐨勫悓瀛﹁秺鏉ヨ秺澶氾紝鏈夌殑浜鸿璇濈敋鑷冲彞鍙モ�滃甫鎶婂効鈥濄�傜彮涓讳换涓轰簡閬忓埗杩欑鐜拌薄锛岀厼璐硅嫤蹇冩兂浜嗗緢澶氬姙娉曪紝璺熷鐢熸枟鏅烘枟鍕団�︹�︾湅鍒拌繖绡囦綔鏂囷紝璁拌�呯獊鐒舵兂鍒帮紝鑷繁璇诲叚骞寸骇鐨勫効瀛愭湁澶╃獊鐒跺啋鍑轰竴鍙ヨ剰璇濄�傛鍓嶏紝浠栨槸浠庝笉璇磋剰璇濈殑銆傞棶浠栨�庝箞瀛︿細鐨勶紝浠栦篃璇翠笉鍑轰釜鎵�浠ョ劧鏉ャ�備簬鏄紝璁拌�呭仛浜嗚繖涓皬瀛︾敓鑴忚瘽鐜拌薄璋冩煡銆傜粡杩囦簡瑙f墠鍙戠幇锛屽皬瀛︾敓鐖辫鑴忚瘽绔熺劧杈冧负鏅亶锛屼竴鑸笁骞寸骇浼氬啋鍑鸿嫍澶淬�傛棤璁烘槸瀛︿範鎴愮哗濂界殑锛岃繕鏄钩鏃朵笉澶捣鐪肩殑锛岄兘浼氳鑴忚瘽銆傝�屼笖锛岃鑴忚瘽浼氣�滀紶鏌撯�濓紝涓�鏃﹀啋澶翠笉鍒舵锛屽埌浜嗕簲鍏勾绾х敋鑷冲彲鑳藉湪鐝噷澶х垎鍙戙�備互涓嬩负浣滄枃銆婅剰璇濋娉€�嬫禉姹熷湪绾�3鏈�29鏃ヨ鏈�杩戯紝涓�绡囧皬瀛︿簲骞寸骇瀛︾敓鍐欑殑浣滄枃寮曡捣浜嗛挶鎶ヨ鑰呯殑鍏虫敞銆傝繖绡囦綔鏂囩殑棰樼洰鍙仛銆婅剰璇濋娉€�嬶紝璁茶堪鐨勬槸灏忎綔鑰呯彮绾ч噷鍙戠敓鐨勪竴绉嶄笉鏂囨槑鐜拌薄鈥斺�旇鑴忚瘽鐨勫悓瀛﹁秺鏉ヨ秺澶氾紝鏈夌殑浜鸿璇濈敋鑷冲彞鍙モ�滃甫鎶婂効鈥濄�傜彮涓讳换涓轰簡閬忓埗杩欑鐜拌薄锛岀厼璐硅嫤蹇冩兂浜嗗緢澶氬姙娉曪紝璺熷鐢熸枟鏅烘枟鍕団�︹�︾湅鍒拌繖绡囦綔鏂囷紝璁拌�呯獊鐒舵兂鍒帮紝鑷繁璇诲叚骞寸骇鐨勫効瀛愭湁澶╃獊鐒跺啋鍑轰竴鍙ヨ剰璇濄�傛鍓嶏紝浠栨槸浠庝笉璇磋剰璇濈殑銆傞棶浠栨�庝箞瀛︿細鐨勶紝浠栦篃璇翠笉鍑轰釜鎵�浠ョ劧鏉ャ�備簬鏄紝璁拌�呭仛浜嗚繖涓皬瀛︾敓鑴忚瘽鐜拌薄璋冩煡銆傜粡杩囦簡瑙f墠鍙戠幇锛屽皬瀛︾敓鐖辫鑴忚瘽绔熺劧杈冧负鏅亶锛屼竴鑸笁骞寸骇浼氬啋鍑鸿嫍澶淬�傛棤璁烘槸瀛︿範鎴愮哗濂界殑锛岃繕鏄钩鏃朵笉澶捣鐪肩殑锛岄兘浼氳鑴忚瘽銆傝�屼笖锛岃鑴忚瘽浼氣�滀紶鏌撯�濓紝涓�鏃﹀啋澶翠笉鍒舵锛屽埌浜嗕簲鍏勾绾х敋鑷冲彲鑳藉湪鐝噷澶х垎鍙戙�備互涓嬩负浣滄枃銆婅剰璇濋娉€�嬫禉姹熷湪绾�3鏈�29鏃ヨ鏈�杩戯紝涓�绡囧皬瀛︿簲骞寸骇瀛︾敓鍐欑殑浣滄枃寮曡捣浜嗛挶鎶ヨ鑰呯殑鍏虫敞銆傝繖绡囦綔鏂囩殑棰樼洰鍙仛銆婅剰璇濋娉€�嬶紝璁茶堪鐨勬槸灏忎綔鑰呯彮绾ч噷鍙戠敓鐨勪竴绉嶄笉鏂囨槑鐜拌薄鈥斺�旇鑴忚瘽鐨勫悓瀛﹁秺鏉ヨ秺澶氾紝鏈夌殑浜鸿璇濈敋鑷冲彞鍙モ�滃甫鎶婂効鈥濄�傜彮涓讳换涓轰簡閬忓埗杩欑鐜拌薄锛岀厼璐硅嫤蹇冩兂浜嗗緢澶氬姙娉曪紝璺熷鐢熸枟鏅烘枟鍕団�︹�︾湅鍒拌繖绡囦綔鏂囷紝璁拌�呯獊鐒舵兂鍒帮紝鑷繁璇诲叚骞寸骇鐨勫効瀛愭湁澶╃獊鐒跺啋鍑轰竴鍙ヨ剰璇濄�傛鍓嶏紝浠栨槸浠庝笉璇磋剰璇濈殑銆傞棶浠栨�庝箞瀛︿細鐨勶紝浠栦篃璇翠笉鍑轰釜鎵�浠ョ劧鏉ャ�備簬鏄紝璁拌�呭仛浜嗚繖涓皬瀛︾敓鑴忚瘽鐜拌薄璋冩煡銆傜粡杩囦簡瑙f墠鍙戠幇锛屽皬瀛︾敓鐖辫鑴忚瘽绔熺劧杈冧负鏅亶锛屼竴鑸笁骞寸骇浼氬啋鍑鸿嫍澶淬�傛棤璁烘槸瀛︿範鎴愮哗濂界殑锛岃繕鏄钩鏃朵笉澶捣鐪肩殑锛岄兘浼氳鑴忚瘽銆傝�屼笖锛岃鑴忚瘽浼氣�滀紶鏌撯�濓紝涓�鏃﹀啋澶翠笉鍒舵锛屽埌浜嗕簲鍏勾绾х敋鑷冲彲鑳藉湪鐝噷澶х垎鍙戙�備互涓嬩负浣滄枃璁茶堪鐨勬槸灏忎綔鑰呯彮绾ч噷鍙戠敓鐨勪竴绉嶄笉鏂囨槑鐜拌薄鈥斺�旇鑴忚瘽鐨勫悓瀛﹁秺鏉ヨ秺澶氾紝鏈夌殑浜鸿璇濈敋鑷冲彞鍙モ�滃甫鎶婂効鈥濄�傜彮涓讳换涓轰簡閬忓埗杩欑鐜拌薄锛岀厼璐硅嫤蹇冩兂浜嗗緢澶氬姙娉曪紝璺熷鐢熸枟鏅烘枟鍕団�︹�︾湅鍒拌繖绡囦綔鏂囷紝璁拌�呯獊鐒舵兂鍒帮紝鑷繁璇诲叚骞寸骇鐨勫効瀛愭湁澶╃獊鐒跺啋鍑轰竴鍙ヨ剰璇濄�傛鍓嶏紝浠栨槸浠庝笉璇磋剰璇濈殑銆傞棶浠栨�庝箞瀛︿細鐨勶紝浠栦篃璇翠笉鍑轰釜鎵�浠ョ劧鏉ャ�備簬鏄紝璁拌�呭仛浜嗚繖涓皬瀛︾敓鑴忚瘽鐜拌薄璋冩煡銆傜粡杩囦簡瑙f墠鍙戠幇锛屽皬瀛︾敓鐖辫鑴忚瘽绔熺劧杈冧负鏅亶锛屼竴鑸笁骞寸骇浼氬啋鍑鸿嫍澶淬�傛棤璁烘槸瀛︿範鎴愮哗濂界殑锛岃繕鏄钩鏃朵笉澶捣鐪肩殑锛岄兘浼氳鑴忚瘽銆傝�屼笖锛岃鑴忚瘽浼氣�滀紶鏌撯�濓紝涓�鏃﹀啋澶翠笉鍒舵锛屽埌浜嗕簲鍏勾绾х敋鑷冲彲鑳藉湪鐝噷澶х垎鍙戙�備互涓嬩负浣滄枃缁忚繃浜嗚В鎵嶅彂鐜帮紝灏忓鐢熺埍璇磋剰璇濈珶鐒惰緝涓烘櫘閬嶏紝涓�鑸笁骞寸骇浼氬啋鍑鸿嫍澶淬�傛棤璁烘槸瀛︿範鎴愮哗濂界殑锛岃繕鏄钩鏃朵笉澶捣鐪肩殑锛岄兘浼氳鑴忚瘽銆傝�屼笖锛岃鑴忚瘽浼氣�滀紶鏌撯�濓紝涓�鏃﹀啋澶翠笉鍒舵锛屽埌浜嗕簲鍏勾绾х敋鑷冲彲鑳藉湪鐝噷澶х垎鍙戙�備互涓嬩负浣滄枃璁茶堪鐨勬槸灏忎綔鑰呯彮绾ч噷鍙戠敓鐨勪竴绉嶄笉鏂囨槑鐜拌薄鈥斺�旇鑴忚瘽鐨勫悓瀛﹁秺鏉ヨ秺澶氾紝鏈夌殑浜鸿璇濈敋鑷冲彞鍙モ�滃甫鎶婂効鈥濄�傜彮涓讳换涓轰簡閬忓埗杩欑鐜拌薄锛岀厼璐硅嫤蹇冩兂浜嗗緢澶氬姙娉曪紝璺熷鐢熸枟鏅烘枟鍕団�︹�︾湅鍒拌繖绡囦綔鏂囷紝璁拌�呯獊鐒舵兂鍒帮紝鑷繁璇诲叚骞寸骇鐨勫効瀛愭湁澶╃獊鐒跺啋鍑轰竴鍙ヨ剰璇濄�傛鍓嶏紝浠栨槸浠庝笉璇磋剰璇濈殑銆傞棶浠栨�庝箞瀛︿細鐨勶紝浠栦篃璇翠笉鍑轰釜鎵�浠ョ劧鏉ャ�備簬鏄紝璁拌�呭仛浜嗚繖涓皬瀛︾敓鑴忚瘽鐜拌薄璋冩煡銆傜粡杩囦簡瑙f墠鍙戠幇锛屽皬瀛︾敓鐖辫鑴忚瘽绔熺劧杈冧负鏅亶锛屼竴鑸笁骞寸骇浼氬啋鍑鸿嫍澶淬�傛棤璁烘槸瀛︿範鎴愮哗濂界殑锛岃繕鏄钩鏃朵笉澶捣鐪肩殑锛岄兘浼氳鑴忚瘽銆傝�屼笖锛岃鑴忚瘽浼氣�滀紶鏌撯�濓紝涓�鏃﹀啋澶翠笉鍒舵锛屽埌浜嗕簲鍏勾绾х敋鑷冲彲鑳藉湪鐝噷澶х垎鍙戙�備互涓嬩负浣滄枃',
+  barcode: '123456',
+  qrcode: 'https://hi.printjs.cn',
+  table: [
+    {id: '1', name: '鐜嬪皬鍙�', gender: '鐢�', count: '120', amount: '9089鍏�'},
+    {id: '2', name: '姊︿箣閬�', gender: '濂�', count: '20', amount: '89鍏�'},
+    {id: '3', name: '姊︿箣閬�', gender: '濂�', count: '720', amount: '29089鍏�'},
+    {id: '4', name: '榛勫皬鑿�', gender: '濂�', count: '420', amount: '19089鍏�'},
+    {id: '5', name: '榛勫皬鑿�', gender: '濂�', count: '420', amount: '19089鍏�'},
+    {id: '6', name: '榛勫皬鑿�', gender: '濂�', count: '420', amount: '19089鍏�'},
+    {id: '7', name: '榛勫皬鑿�', gender: '濂�', count: '420', amount: '19089鍏�'},
+    {id: '8', name: '榛勫皬鑿�', gender: '濂�', count: '420', amount: '19089鍏�'},
+    {id: '9', name: '榛勫皬鑿�', gender: '濂�', count: '420', amount: '19089鍏�'},
+    {id: '10', name: '榛勫皬鑿�', gender: '濂�', count: '420', amount: '19089鍏�'},
+    {id: '11', name: '鐜嬪皬鍙�', gender: '鐢�', count: '120', amount: '9089鍏�'},
+    {id: '12', name: '姊︿箣閬�', gender: '濂�', count: '20', amount: '89鍏�'},
+    {id: '13', name: '姊︿箣閬�', gender: '濂�', count: '720', amount: '29089鍏�'},
+    {id: '14', name: '榛勫皬鑿�', gender: '濂�', count: '420', amount: '19089鍏�'},
+    {id: '15', name: '榛勫皬鑿�', gender: '濂�', count: '420', amount: '19089鍏�'},
+    {id: '16', name: '榛勫皬鑿�', gender: '濂�', count: '420', amount: '19089鍏�'},
+    {id: '17', name: '榛勫皬鑿�', gender: '濂�', count: '420', amount: '19089鍏�'},
+    {id: '18', name: '榛勫皬鑿�', gender: '濂�', count: '420', amount: '19089鍏�'},
+    {id: '19', name: '榛勫皬鑿�', gender: '濂�', count: '420', amount: '19089鍏�'},
+    {id: '20', name: '榛勫皬鑿�', gender: '濂�', count: '420', amount: '19089鍏�'},
+    {id: '21', name: '鐜嬪皬鍙�', gender: '鐢�', count: '120', amount: '9089鍏�'},
+    {id: '22', name: '姊︿箣閬�', gender: '濂�', count: '20', amount: '89鍏�'},
+    {id: '23', name: '姊︿箣閬�', gender: '濂�', count: '720', amount: '29089鍏�'},
+    {id: '24', name: '榛勫皬鑿�', gender: '濂�', count: '420', amount: '19089鍏�'},
+    {id: '25', name: '榛勫皬鑿�', gender: '濂�', count: '420', amount: '19089鍏�'},
+    {id: '26', name: '榛勫皬鑿�', gender: '濂�', count: '420', amount: '19089鍏�'},
+    {id: '27', name: '榛勫皬鑿�', gender: '濂�', count: '420', amount: '19089鍏�'},
+    {id: '28', name: '榛勫皬鑿�', gender: '濂�', count: '420', amount: '19089鍏�'},
+    {id: '29', name: '榛勫皬鑿�', gender: '濂�', count: '420', amount: '19089鍏�'},
+    {id: '21', name: '鐜嬪皬鍙�', gender: '鐢�', count: '120', amount: '9089鍏�'},
+    {id: '22', name: '姊︿箣閬�', gender: '濂�', count: '20', amount: '89鍏�'},
+    {id: '23', name: '姊︿箣閬�', gender: '濂�', count: '720', amount: '29089鍏�'},
+    {id: '24', name: '榛勫皬鑿�', gender: '濂�', count: '420', amount: '19089鍏�'},
+    {id: '25', name: '榛勫皬鑿�', gender: '濂�', count: '420', amount: '19089鍏�'},
+    {id: '26', name: '榛勫皬鑿�', gender: '濂�', count: '420', amount: '19089鍏�'},
+    {id: '27', name: '榛勫皬鑿�', gender: '濂�', count: '420', amount: '19089鍏�'},
+    {id: '28', name: '榛勫皬鑿�', gender: '濂�', count: '420', amount: '19089鍏�'},
+    {id: '29', name: '榛勫皬鑿�', gender: '濂�', count: '420', amount: '19089鍏�'},
+    {id: '21', name: '鐜嬪皬鍙�', gender: '鐢�', count: '120', amount: '9089鍏�'},
+    {id: '22', name: '姊︿箣閬�', gender: '濂�', count: '20', amount: '89鍏�'},
+    {id: '23', name: '姊︿箣閬�', gender: '濂�', count: '720', amount: '29089鍏�'},
+
+    {id: '29', name: '榛勫皬鑿�', gender: '濂�', count: '420', amount: '19089鍏�'},
+    {id: '30', name: '榛勫皬鑿�', gender: '濂�', count: '420', amount: '19089鍏�'}
+  ]
+};
diff --git a/src/views/printTemplateDesigner/design/scale.js b/src/views/printTemplateDesigner/design/scale.js
new file mode 100644
index 0000000..f2b987b
--- /dev/null
+++ b/src/views/printTemplateDesigner/design/scale.js
@@ -0,0 +1,31 @@
+export default (function () {
+  function t() {
+    // json妯℃澘 options 瀵瑰簲閿�� key
+    this.name = "scale";
+  }
+  // 娑夊強淇敼鍏冪礌鏍峰紡锛� 娣诲姞涓�涓� css 鏂规硶
+  // t: 鍏冪礌瀵硅薄锛� e 鍙傛暟鍊�
+  return t.prototype.css = function (t, e) {
+    if (t && t.length) {
+      if (e) return t.css('transform', 'scale(' + e + ')');
+    }
+    return null;
+  },
+  // 鍒涘缓 DOM
+  t.prototype.createTarget = function (t, i, e) { //  t: 鍏冪礌瀵硅薄锛宨: 鍏冪礌options, e: 鍏冪礌printElementType
+    return this.target = $('<div class="hiprint-option-item">\n        <div class="hiprint-option-item-label">\n        缂╂斁\n        </div>\n        <div class="hiprint-option-item-field">\n        <input type="number" value="1" step="0.1" min="0.1" max="3" class="auto-submit"/>\n        </div>\n    </div>'), this.target;
+  },
+  // 鑾峰彇鍊�
+  t.prototype.getValue = function () {
+    var t = this.target.find("input").val();
+    if (t) return parseFloat(t.toString());
+  },
+  // 璁剧疆鍊�
+  t.prototype.setValue = function (t) { //  t: options 瀵瑰簲閿殑鍊�
+    this.target.find("input").val(t);
+  },
+  // 閿�姣� DOM
+  t.prototype.destroy = function () {
+    this.target.remove();
+  }, t;
+}())
diff --git a/src/views/printTemplateDesigner/json-view.vue b/src/views/printTemplateDesigner/json-view.vue
new file mode 100644
index 0000000..adf033b
--- /dev/null
+++ b/src/views/printTemplateDesigner/json-view.vue
@@ -0,0 +1,81 @@
+<template>
+  <div>
+    <a-button type="primary" @click="show">
+      鏌ョ湅妯℃澘json
+    </a-button>
+    <a-modal :visible="visible" :maskClosable="false"
+             @cancel="hideModal">
+      <a-spin :spinning="spinning" style="min-height: 100px">
+        <a-textarea style="width:40vw;height:50vh" v-model:value="jsonOut"/>
+      </a-spin>
+      <template slot="title">
+        <a-space>
+          <div style="margin-right: 20px">JSON</div>
+          <a-switch checked-children="tid妯″紡" un-checked-children="榛樿" v-model:checked="tidMode"
+                    @change="onModeChange"/>
+          <a-switch checked-children="缇庡寲" un-checked-children="鍘嬬缉" v-model:checked="beautify"
+                    @change="onModeChange"/>
+        </a-space>
+      </template>
+      <template slot="footer">
+        <a-button key="close" type="info" @click="hideModal">
+          鍏抽棴
+        </a-button>
+      </template>
+    </a-modal>
+  </div>
+</template>
+
+<script>
+export default {
+  name: "JSONView",
+  props: {
+    template: {
+      type: Object,
+    }
+  },
+  data() {
+    return {
+      visible: false,
+      spinning: true,
+      jsonOut: "",
+      tidMode: false,
+      beautify: false,
+    }
+  },
+  computed: {},
+  watch: {},
+  created() {
+  },
+  mounted() {
+  },
+  methods: {
+    hideModal() {
+      this.visible = false
+    },
+    show() {
+      this.visible = true
+      this.spinning = true
+      setTimeout(() => {
+        let json = this.tidMode ? this.template.getJsonTid() : this.template.getJson();
+        let beautify = this.beautify ? 2 : 0;
+        this.jsonOut = JSON.stringify(json, null, beautify);
+        this.spinning = false
+      }, 500)
+    },
+    onModeChange() {
+      this.show();
+    }
+  }
+}
+
+</script>
+<style lang="less" scoped>
+/deep/ .ant-modal-body {
+  padding: 0px;
+}
+
+/deep/ .ant-modal-content {
+  margin-bottom: 24px;
+}
+</style>
diff --git a/src/views/printTemplateDesigner/panels/index.vue b/src/views/printTemplateDesigner/panels/index.vue
new file mode 100644
index 0000000..33bf554
--- /dev/null
+++ b/src/views/printTemplateDesigner/panels/index.vue
@@ -0,0 +1,349 @@
+<template>
+  <a-card>
+    <a-row :gutter="[8,0]" style="margin-bottom: 10px">
+      <a-col :span="4">
+        <!-- 妯℃澘閫夋嫨 -->
+        <a-select v-model='mode' showSearch @change="changeMode" :defaultValue="0" option-label-prop="label"
+                  style="width: 100%;">
+          <a-select-option v-for='(opt,idx) in modeList' :key='idx' :label="opt.name" :value='idx'>
+            {{ opt.name }}
+          </a-select-option>
+        </a-select>
+      </a-col>
+      <a-col :span="20">
+        <a-row>
+          <a-space>
+            <!-- 绾稿紶璁剧疆 -->
+            <a-button-group>
+              <template v-for="(value,type) in paperTypes">
+                <a-button :type="curPaperType === type ? 'primary' : 'info'" @click="setPaper(type,value)" :key="type">
+                  {{ type }}
+                </a-button>
+              </template>
+              <a-popover v-model="paperPopVisible" title="璁剧疆绾稿紶瀹介珮(mm)" trigger="click">
+                <div slot="content">
+                  <a-input-group compact style="margin: 10px 10px">
+                    <a-input type="number" v-model="paperWidth" style=" width: 100px; text-align: center"
+                             placeholder="瀹�(mm)"/>
+                    <a-input style=" width: 30px; border-left: 0; pointer-events: none; backgroundColor: #fff"
+                             placeholder="~" disabled
+                    />
+                    <a-input type="number" v-model="paperHeight"
+                             style="width: 100px; text-align: center; border-left: 0"
+                             placeholder="楂�(mm)"/>
+                  </a-input-group>
+                  <a-button type="primary" style="width: 100%" @click="otherPaper">纭畾</a-button>
+                </div>
+                <a-button :type="'other'==curPaperType?'primary':''">鑷畾涔夌焊寮�</a-button>
+              </a-popover>
+            </a-button-group>
+            <a-button type="text" icon="zoom-out" @click="changeScale(false)"></a-button>
+            <a-input-number
+              :value="scaleValue"
+              :min="scaleMin"
+              :max="scaleMax"
+              :step="0.1"
+              disabled
+              style="width: 70px;"
+              :formatter="value => `${(value * 100).toFixed(0)}%`"
+              :parser="value => value.replace('%', '')"
+            />
+            <a-button type="text" icon="zoom-in" @click="changeScale(true)"></a-button>
+            <!-- 棰勮/鎵撳嵃 -->
+            <a-button-group>
+              <a-button type="primary" icon="eye" @click="preView">
+                棰勮
+              </a-button>
+              <a-button type="primary" @click="print">
+                鐩存帴鎵撳嵃
+                <a-icon type="printer"/>
+              </a-button>
+            </a-button-group>
+            <!-- 淇濆瓨/娓呯┖ -->
+            <a-button-group>
+              <a-button type="primary" icon="save" @click="save">
+                淇濆瓨
+              </a-button>
+              <a-popconfirm
+                title="鏄惁纭娓呯┖?"
+                okType="danger"
+                okText="纭畾娓呯┖"
+                @confirm="clearPaper"
+              >
+                <a-icon slot="icon" type="question-circle-o" style="color: red"/>
+                <a-button type="danger">
+                  娓呯┖
+                  <a-icon type="close"/>
+                </a-button>
+              </a-popconfirm>
+            </a-button-group>
+            <json-view :template="template"/>
+          </a-space>
+          <!-- 澶氶潰鏉跨殑瀹瑰櫒 -->
+          <div class="hiprint-printPagination" style="margin-top: 14px;"></div>
+        </a-row>
+      </a-col>
+    </a-row>
+    <a-row :gutter="[8,0]">
+      <a-col :span="4">
+        <a-card style="height: 100vh">
+          <a-row>
+            <a-col :span="24" class="rect-printElement-types hiprintEpContainer">
+            </a-col>
+          </a-row>
+        </a-card>
+      </a-col>
+      <a-col :span="14">
+        <a-card class="card-design">
+          <div id="hiprint-printTemplate" class="hiprint-printTemplate"></div>
+        </a-card>
+      </a-col>
+      <a-col :span="6" class="params_setting_container">
+        <a-card>
+          <a-row class="hinnn-layout-sider">
+            <div id="PrintElementOptionSetting"></div>
+          </a-row>
+        </a-card>
+      </a-col>
+    </a-row>
+    <!-- 棰勮 -->
+    <print-preview ref="preView"/>
+  </a-card>
+</template>
+
+<script>
+
+import printPreview from './preview'
+import jsonView from '../json-view.vue'
+
+import {hiprint} from '../../../hiprintVue/index'
+import {providers, providerList} from './providers'
+import printData from './print-data'
+
+let hiprintTemplate;
+export default {
+  name: "printPanels",
+  components: {printPreview, jsonView},
+  data() {
+    return {
+      template: null,
+      // 妯℃澘閫夋嫨
+      mode: 0,
+      modeList: [],
+      // 褰撳墠绾稿紶
+      curPaper: {
+        type: 'other',
+        width: 220,
+        height: 80
+      },
+      // 绾稿紶绫诲瀷
+      paperTypes: {
+        'A3': {
+          width: 420,
+          height: 296.6
+        },
+        'A4': {
+          width: 210,
+          height: 296.6
+        },
+        'A5': {
+          width: 210,
+          height: 147.6
+        },
+        'B3': {
+          width: 500,
+          height: 352.6
+        },
+        'B4': {
+          width: 250,
+          height: 352.6
+        },
+        'B5': {
+          width: 250,
+          height: 175.6
+        }
+      },
+      scaleValue: 1,
+      scaleMax: 5,
+      scaleMin: 0.5,
+      // 鑷畾涔夌焊寮�
+      paperPopVisible: false,
+      paperWidth: '220',
+      paperHeight: '80',
+      lastjson: '',
+    }
+  },
+  computed: {
+    curPaperType() {
+      let type = 'other'
+      let types = this.paperTypes
+      for (const key in types) {
+        let item = types[key]
+        let {width, height} = this.curPaper
+        if (item.width === width && item.height === height) {
+          type = key
+        }
+      }
+      return type
+    }
+  },
+  mounted() {
+    this.init()
+    this.otherPaper()
+  },
+  methods: {
+    init() {
+      this.modeList = providerList
+      this.changeMode()
+      this.buildTemplate()
+    },
+    changeMode() {
+      let {mode} = this
+      let provider = providerList[mode]
+      hiprint.init({
+        providers: [...providers],
+        autoConnect: false,
+      });
+      $('.hiprintEpContainer').empty()
+      hiprint.PrintElementTypeManager.build('.hiprintEpContainer', provider.value);
+
+    },
+    buildTemplate() {
+      $('#hiprint-printTemplate').empty()
+      let templates = this.$ls.get('KEY_TEMPLATES_PANELS', {})
+      let that = this;
+      this.template = hiprintTemplate = new hiprint.PrintTemplate({
+        template: templates,
+        settingContainer: '#PrintElementOptionSetting',
+        paginationContainer: '.hiprint-printPagination',
+        defaultPanelName: '榛樿闈㈡澘鍚嶇О',
+        onPanelAddClick: (panel, createPanel) => {
+          panel.name = '鏂伴潰鏉�' + (panel.index + 1);
+          that.$message.success('寮瑰嚭涓笢瑗�,璁╀綘浠煡閬�,鍦ㄨ繖閲屽彲浠ヨ嚜瀹氫箟闈㈡澘鍚嶇О');
+          that.$notification.success({
+            placement: 'topRight',
+            message: '寮瑰嚭涓笢瑗�,璁╀綘浠煡閬�,鍦ㄨ繖閲屽彲浠ヨ嚜瀹氫箟闈㈡澘鍚嶇О',
+            description: '鑷畾涔夐潰鏉垮悕绉�',
+          });
+          createPanel(panel);
+        },
+      });
+      hiprintTemplate.design('#hiprint-printTemplate', {grid: true});
+      // 鑾峰彇褰撳墠鏀惧ぇ姣斾緥, 褰搝oom鏃朵紶true 鎵嶄細鏈�
+      this.scaleValue = hiprintTemplate.editingPanel.scale || 1;
+    },
+    /**
+     * 璁剧疆绾稿紶澶у皬
+     * @param type [A3, A4, A5, B3, B4, B5, other]
+     * @param value {width,height} mm
+     */
+    setPaper(type, value) {
+      try {
+        if (Object.keys(this.paperTypes).includes(type)) {
+          this.curPaper = {type: type, width: value.width, height: value.height}
+          hiprintTemplate.setPaper(value.width, value.height)
+        } else {
+          this.curPaper = {type: 'other', width: value.width, height: value.height}
+          hiprintTemplate.setPaper(value.width, value.height)
+        }
+      } catch (error) {
+        this.$message.error(`鎿嶄綔澶辫触: ${error}`)
+      }
+    },
+    changeScale(big) {
+      let scaleValue = this.scaleValue;
+      if (big) {
+        scaleValue += 0.1;
+        if (scaleValue > this.scaleMax) scaleValue = 5;
+      } else {
+        scaleValue -= 0.1;
+        if (scaleValue < this.scaleMin) scaleValue = 0.5;
+      }
+      if (hiprintTemplate) {
+        // scaleValue: 鏀惧ぇ缂╁皬鍊�, false: 涓嶄繚瀛�(涓嶄紶涔熶竴鏍�), 濡傛灉浼� true, 鎵撳嵃鏃朵篃浼氭斁澶�
+        hiprintTemplate.zoom(scaleValue, true);
+        this.scaleValue = scaleValue;
+      }
+    },
+    otherPaper() {
+      let value = {}
+      value.width = this.paperWidth
+      value.height = this.paperHeight
+      this.paperPopVisible = false
+      this.setPaper('other', value)
+    },
+    preView() {
+      let {width} = this.curPaper
+      this.$refs.preView.show(hiprintTemplate, printData, width)
+    },
+    print() {
+      if (window.hiwebSocket.opened) {
+        const printerList = hiprintTemplate.getPrinterList();
+        console.log(printerList)
+        hiprintTemplate.print2(printData, {printer: '', title: 'hiprint娴嬭瘯鎵撳嵃'});
+        return
+      }
+      this.$error({
+        title: "瀹㈡埛绔湭杩炴帴",
+        content: (h) => (
+          <div>
+            杩炴帴銆恵hiwebSocket.host}銆戝け璐ワ紒
+            <br />
+            璇风‘淇濈洰鏍囨湇鍔″櫒宸�
+            <a
+              href="https://gitee.com/CcSimple/electron-hiprint/releases"
+              target="_blank"
+            >
+              涓嬭浇
+            </a>
+            骞�
+            <a href="hiprint://" target="_blank">
+              杩愯
+            </a>
+            鎵撳嵃鏈嶅姟锛�
+          </div>
+        ),
+      });
+    },
+    save() {
+      let json = hiprintTemplate.getJson();
+      console.log(json);
+      this.$ls.set('KEY_TEMPLATES_PANELS', json)
+      this.$message.info('淇濆瓨鎴愬姛')
+    },
+    clearPaper() {
+      try {
+        hiprintTemplate.clear();
+      } catch (error) {
+        this.$message.error(`鎿嶄綔澶辫触: ${error}`);
+      }
+    }
+  }
+}
+</script>
+
+<style lang="less" scoped>
+// build 鎷栨嫿
+/deep/ .hiprint-printElement-type > li > ul > li > a {
+  padding: 4px 4px;
+  color: #1296db;
+  line-height: 1;
+  height: auto;
+  text-overflow: ellipsis;
+}
+
+// 榛樿鍥剧墖
+/deep/ .hiprint-printElement-image-content {
+  img {
+    content: url("~@/assets/logo.png");
+  }
+}
+
+// 璁捐瀹瑰櫒
+.card-design {
+  overflow: hidden;
+  overflow-x: auto;
+  overflow-y: auto;
+}
+
+</style>
diff --git a/src/views/printTemplateDesigner/panels/preview.vue b/src/views/printTemplateDesigner/panels/preview.vue
new file mode 100644
index 0000000..d2f5a6e
--- /dev/null
+++ b/src/views/printTemplateDesigner/panels/preview.vue
@@ -0,0 +1,85 @@
+<template>
+  <a-modal :visible="visible" :maskClosable="false"
+           @cancel="hideModal" :width="width+'mm'">
+    <a-spin :spinning="spinning" style="min-height: 100px">
+      <div id="preview_content_custom"></div>
+    </a-spin>
+    <template slot="title">
+      <a-space>
+        <div style="margin-right: 20px">鎵撳嵃棰勮</div>
+        <a-button :loading="waitShowPrinter" type="primary" icon="printer" @click.stop="print">鎵撳嵃</a-button>
+        <a-button type="primary" icon="printer" @click.stop="toPdf">pdf</a-button>
+      </a-space>
+    </template>
+    <template slot="footer">
+      <a-button key="close" type="info" @click="hideModal">
+        鍏抽棴
+      </a-button>
+    </template>
+  </a-modal>
+</template>
+
+<script>
+export default {
+  name: "printPreview",
+  props: {},
+  data() {
+    return {
+      visible: false,
+      spinning: true,
+      waitShowPrinter: false,
+      // 绾稿紶瀹� mm
+      width: 0,
+      // 妯℃澘
+      hiprintTemplate: {},
+      // 鏁版嵁
+      printData: {}
+    }
+  },
+  computed: {},
+  watch: {},
+  created() {
+  },
+  mounted() {
+  },
+  methods: {
+    hideModal() {
+      this.visible = false
+    },
+    show(hiprintTemplate, printData, width = '210') {
+      this.visible = true
+      this.spinning = true
+      this.width = hiprintTemplate.editingPanel ? hiprintTemplate.editingPanel.width : width;
+      this.hiprintTemplate = hiprintTemplate
+      this.printData = printData
+      setTimeout(() => {
+        // eslint-disable-next-line no-undef
+        $('#preview_content_custom').html(hiprintTemplate.getHtml(printData))
+        this.spinning = false
+      }, 500)
+    },
+    print() {
+      this.waitShowPrinter = true
+      this.hiprintTemplate.print(this.printData, {}, {
+        callback: () => {
+          this.waitShowPrinter = false
+        }
+      })
+    },
+    toPdf() {
+      this.hiprintTemplate.toPdf(this.printData, '鎵撳嵃棰勮pdf');
+    },
+  }
+}
+
+</script>
+<style lang="less" scoped>
+
+/deep/ .ant-modal-body {
+  padding: 0px;
+}
+
+/deep/ .ant-modal-content {
+  margin-bottom: 24px;
+}
+</style>
diff --git a/src/views/printTemplateDesigner/panels/print-data.js b/src/views/printTemplateDesigner/panels/print-data.js
new file mode 100644
index 0000000..e25dce7
--- /dev/null
+++ b/src/views/printTemplateDesigner/panels/print-data.js
@@ -0,0 +1,38 @@
+export default {
+  totalCap: '澹逛桨鍏冩暣',
+  logo: 'https://portrait.gitee.com/uploads/avatars/user/1800/5400665_CcSimple_1591166830.png!avatar60',
+  barcode: 'XS888888888',
+  qrcode: '0123456789',
+  table: [
+    {INDEX: '1', NAME: '娴嬭瘯鍟嗗搧01', SL: 2, GG: '1*24g', TM: '2O22010100110', DJ: '6.8', JE: '13.6'},
+    {INDEX: '2', NAME: '娴嬭瘯鍟嗗搧02', SL: 2, GG: '1*24g', TM: '2O22010100110', DJ: '6.8', JE: '13.6'},
+    {INDEX: '3', NAME: '娴嬭瘯鍟嗗搧03', SL: 2, GG: '1*24g', TM: '2O22010100110', DJ: '6.8', JE: '13.6'},
+    {INDEX: '4', NAME: '娴嬭瘯鍟嗗搧04', SL: 2, GG: '1*24g', TM: '2O22010100110', DJ: '6.8', JE: '13.6'},
+    {INDEX: '5', NAME: '娴嬭瘯鍟嗗搧05', SL: 2, GG: '1*24g', TM: '2O22010100110', DJ: '6.8', JE: '13.6'},
+    {INDEX: '6', NAME: '娴嬭瘯鍟嗗搧06', SL: 2, GG: '1*24g', TM: '2O22010100110', DJ: '6.8', JE: '13.6'},
+    {INDEX: '7', NAME: '娴嬭瘯鍟嗗搧07', SL: 2, GG: '1*24g', TM: '2O22010100110', DJ: '6.8', JE: '13.6'},
+    {INDEX: '8', NAME: '娴嬭瘯鍟嗗搧08', SL: 2, GG: '1*24g', TM: '2O22010100110', DJ: '6.8', JE: '13.6'},
+    {INDEX: '9', NAME: '娴嬭瘯鍟嗗搧09', SL: 2, GG: '1*24g', TM: '2O22010100110', DJ: '6.8', JE: '13.6'},
+    {INDEX: '10', NAME: '娴嬭瘯鍟嗗搧10', SL: 2, GG: '1*24g', TM: '2O22010100110', DJ: '6.8', JE: '13.6'},
+    {INDEX: '11', NAME: '娴嬭瘯鍟嗗搧11', SL: 2, GG: '1*24g', TM: '2O22010100110', DJ: '6.8', JE: '13.6'},
+    {INDEX: '12', NAME: '娴嬭瘯鍟嗗搧12', SL: 2, GG: '1*24g', TM: '2O22010100110', DJ: '6.8', JE: '13.6'},
+    {INDEX: '13', NAME: '娴嬭瘯鍟嗗搧13', SL: 2, GG: '1*24g', TM: '2O22010100110', DJ: '6.8', JE: '13.6'},
+    {INDEX: '14', NAME: '娴嬭瘯鍟嗗搧14', SL: 2, GG: '1*24g', TM: '2O22010100110', DJ: '6.8', JE: '13.6'},
+    {INDEX: '15', NAME: '娴嬭瘯鍟嗗搧15', SL: 2, GG: '1*24g', TM: '2O22010100110', DJ: '6.8', JE: '13.6'},
+    {INDEX: '16', NAME: '娴嬭瘯鍟嗗搧16', SL: 2, GG: '1*24g', TM: '2O22010100110', DJ: '6.8', JE: '13.6'},
+    {INDEX: '17', NAME: '娴嬭瘯鍟嗗搧17', SL: 2, GG: '1*24g', TM: '2O22010100110', DJ: '6.8', JE: '13.6'},
+    {INDEX: '18', NAME: '娴嬭瘯鍟嗗搧18', SL: 2, GG: '1*24g', TM: '2O22010100110', DJ: '6.8', JE: '13.6'},
+    {INDEX: '19', NAME: '娴嬭瘯鍟嗗搧19', SL: 2, GG: '1*24g', TM: '2O22010100110', DJ: '6.8', JE: '13.6'},
+    {INDEX: '20', NAME: '娴嬭瘯鍟嗗搧20', SL: 2, GG: '1*24g', TM: '2O22010100110', DJ: '6.8', JE: '13.6'},
+    {INDEX: '21', NAME: '娴嬭瘯鍟嗗搧21', SL: 2, GG: '1*24g', TM: '2O22010100110', DJ: '6.8', JE: '13.6'},
+    {INDEX: '22', NAME: '娴嬭瘯鍟嗗搧22', SL: 2, GG: '1*24g', TM: '2O22010100110', DJ: '6.8', JE: '13.6'},
+    {INDEX: '23', NAME: '娴嬭瘯鍟嗗搧23', SL: 2, GG: '1*24g', TM: '2O22010100110', DJ: '6.8', JE: '13.6'},
+    {INDEX: '24', NAME: '娴嬭瘯鍟嗗搧24', SL: 2, GG: '1*24g', TM: '2O22010100110', DJ: '6.8', JE: '13.6'},
+    {INDEX: '25', NAME: '娴嬭瘯鍟嗗搧25', SL: 2, GG: '1*24g', TM: '2O22010100110', DJ: '6.8', JE: '13.6'},
+    {INDEX: '26', NAME: '娴嬭瘯鍟嗗搧26', SL: 2, GG: '1*24g', TM: '2O22010100110', DJ: '6.8', JE: '13.6'},
+    {INDEX: '27', NAME: '娴嬭瘯鍟嗗搧27', SL: 2, GG: '1*24g', TM: '2O22010100110', DJ: '6.8', JE: '13.6'},
+    {INDEX: '28', NAME: '娴嬭瘯鍟嗗搧28', SL: 2, GG: '1*24g', TM: '2O22010100110', DJ: '6.8', JE: '13.6'},
+    {INDEX: '29', NAME: '娴嬭瘯鍟嗗搧29', SL: 2, GG: '1*24g', TM: '2O22010100110', DJ: '6.8', JE: '13.6'},
+    {INDEX: '30', NAME: '娴嬭瘯鍟嗗搧30', SL: 2, GG: '1*24g', TM: '2O22010100110', DJ: '6.8', JE: '13.6'},
+  ]
+};
diff --git a/src/views/printTemplateDesigner/panels/providers.js b/src/views/printTemplateDesigner/panels/providers.js
new file mode 100644
index 0000000..371cc94
--- /dev/null
+++ b/src/views/printTemplateDesigner/panels/providers.js
@@ -0,0 +1,429 @@
+/* eslint-disable */
+import {hiprint} from '../../index'
+
+// 鑷畾涔夎璁″厓绱�1
+export const panelsProvider1 = function (ops) {
+  var addElementTypes = function (context) {
+    context.removePrintElementTypes("panelsProvider1");
+    context.addPrintElementTypes(
+      "panelsProvider1",
+      [
+        new hiprint.PrintElementTypeGroup("骞冲彴", [
+          {
+            tid: 'panelsProvider1.header', title: '鍗曟嵁琛ㄥご', data: '鍗曟嵁琛ㄥご', type: 'text',
+            options: {
+              testData: '鍗曟嵁琛ㄥご',
+              height: 17,
+              fontSize: 16.5,
+              fontWeight: "700",
+              textAlign: "center",
+              hideTitle: true
+            }
+          },
+          {
+            tid: 'panelsProvider1.type', title: '鍗曟嵁绫诲瀷', data: '鍗曟嵁绫诲瀷', type: 'text',
+            options: {
+              testData: '鍗曟嵁绫诲瀷',
+              height: 16,
+              fontSize: 15,
+              fontWeight: "700",
+              textAlign: "center",
+              hideTitle: true
+            }
+          },
+          {
+            tid: 'panelsProvider1.order', title: '璁㈠崟缂栧彿', data: 'XS888888888', type: 'text',
+            options: {
+              field: 'orderId',
+              testData: 'XS888888888',
+              height: 16,
+              fontSize: 6.75,
+              fontWeight: "700",
+              textAlign: "left",
+              textContentVerticalAlign: "middle"
+            }
+          },
+          {
+            tid: 'panelsProvider1.date', title: '涓氬姟鏃ユ湡', data: '2020-01-01', type: 'text',
+            options: {
+              field: 'date',
+              testData: '2020-01-01',
+              height: 16,
+              fontSize: 6.75,
+              fontWeight: "700",
+              textAlign: "left",
+              textContentVerticalAlign: "middle"
+            }
+          },
+          {
+            tid: 'panelsProvider1.barcode', title: '鏉″舰鐮�', data: 'XS888888888', type: 'text',
+            options: {
+              field: 'barcode',
+              testData: 'XS888888888',
+              height: 32,
+              fontSize: 12,
+              lineHeight: 18,
+              textType: "barcode"
+            }
+          },
+          {
+            tid: 'panelsProvider1.qrcode', title: '浜岀淮鐮�', data: 'XS888888888', type: 'text',
+            options: {
+              field: 'qrcode',
+              testData: 'XS888888888',
+              height: 32,
+              fontSize: 12,
+              lineHeight: 18,
+              textType: "qrcode"
+            }
+          },
+          {
+            tid: 'panelsProvider1.platform', title: '骞冲彴鍚嶇О', data: '骞冲彴鍚嶇О', type: 'text',
+            options: {
+              testData: '骞冲彴鍚嶇О',
+              height: 17,
+              fontSize: 16.5,
+              fontWeight: "700",
+              textAlign: "center",
+              hideTitle: true
+            }
+          },
+          {tid: 'panelsProvider1.logo', title: 'Logo', data: '', type: 'image'},
+        ]),
+        new hiprint.PrintElementTypeGroup("搴撶", [
+          {
+            tid: 'panelsProvider1.creater', title: '鍒跺崟浜�', data: '鏉庡洓', type: 'text',
+            options: {
+              field: 'creater',
+              testData: '鏉庡洓',
+              height: 16,
+              fontSize: 6.75,
+              fontWeight: "700",
+              textAlign: "left",
+              textContentVerticalAlign: "middle"
+            }
+          },
+          {
+            tid: 'panelsProvider1.printDate', title: '鎵撳嵃鏃堕棿', data: '2022-01-01 09:00', type: 'text',
+            options: {
+              field: 'printDate',
+              testData: '2022-01-01 09:00',
+              height: 16,
+              fontSize: 6.75,
+              fontWeight: "700",
+              textAlign: "left",
+              textContentVerticalAlign: "middle"
+            }
+          },
+          {
+            tid: 'panelsProvider1.signer', title: '搴撶绛惧瓧', data: '', type: 'text',
+            options: {
+              title: '搴撶绛惧瓧锛�',
+              height: 16,
+              fontSize: 6.75,
+              fontWeight: "700",
+              textAlign: "left",
+              textContentVerticalAlign: "middle"
+            }
+          },
+        ]),
+        new hiprint.PrintElementTypeGroup("琛ㄦ牸/鍏朵粬", [
+          {
+            tid: 'panelsProvider1.table', title: '璁㈠崟鏁版嵁',
+            type: 'table',
+            options: {
+              field: 'table',
+              tableHeaderRepeat: 'first',
+              tableFooterRepeat: 'last',
+              fields: [
+                {text: '鍚嶇О', field: 'NAME'},
+                {text: '鏁伴噺', field: 'SL'},
+                {text: '瑙勬牸', field: 'GG'},
+                {text: '鏉$爜', field: 'TM'},
+                {text: '鍗曚环', field: 'DJ'},
+                {text: '閲戦', field: 'JE'},
+              ],
+            },
+            editable: true,
+            columnDisplayEditable: true,//鍒楁樉绀烘槸鍚﹁兘缂栬緫
+            columnDisplayIndexEditable: true,//鍒楅『搴忔樉绀烘槸鍚﹁兘缂栬緫
+            columnTitleEditable: true,//鍒楁爣棰樻槸鍚﹁兘缂栬緫
+            columnResizable: true, //鍒楀鏄惁鑳借皟鏁�
+            columnAlignEditable: true,//鍒楀榻愭槸鍚﹁皟鏁�
+            isEnableEditField: true, //缂栬緫瀛楁
+            isEnableContextMenu: true, //寮�鍚彸閿彍鍗� 榛樿true
+            isEnableInsertRow: true, //鎻掑叆琛�
+            isEnableDeleteRow: true, //鍒犻櫎琛�
+            isEnableInsertColumn: true, //鎻掑叆鍒�
+            isEnableDeleteColumn: true, //鍒犻櫎鍒�
+            isEnableMergeCell: true, //鍚堝苟鍗曞厓鏍�
+            columns: [
+              [
+                {title: '鍚嶇О', align: 'center', field: 'NAME', width: 150},
+                {title: '鏁伴噺', align: 'center', field: 'SL', width: 80},
+                {title: '瑙勬牸', align: 'center', field: 'GG', width: 80, checked: false},
+                {title: '鏉$爜', align: 'center', field: 'TM', width: 100, checked: false},
+                {title: '鍗曚环', align: 'center', field: 'DJ', width: 100},
+                {title: '閲戦', align: 'center', field: 'JE', width: 100, checked: false},
+              ],
+            ],
+            rowsColumnsMerge: function (data, col, index) {
+              // 杩斿洖涓�涓暟缁�,鍙傛暟涓�涓鸿锛坮owspan锛夊悎骞舵暟,鍙傛暟浜屼负鍒楋紙colspan锛夊悎骞舵暟, 琚悎骞剁殑琛屾垨鑰呭垪鍊艰涓�0
+              if (index == 0) {
+                return [1, data.INDEX % 2 == 1 ? 2 : 1]
+              } else if (index > 0 && index < 2) {
+                return [data.INDEX % 2 == 1 ? 0 : 1, 1]
+              } else {
+                return [data.INDEX % 2 == 1 ? 2 : 0, 1]
+              }
+            },
+            footerFormatter: function (options, rows, data, currentPageGridRowsData) {
+              if (data && data['totalCap']) {
+                return `<td style="padding:0 10px" colspan="100">${'搴旀敹閲戦澶у啓: ' + data['totalCap']}</td>`
+              }
+              return '<td style="padding:0 10px" colspan="100">搴旀敹閲戦澶у啓: </td>'
+            },
+          },
+          {tid: 'panelsProvider1.customText', title: '鏂囨湰', customText: '鑷畾涔夋枃鏈�', custom: true, type: 'text'},
+          {
+            tid: 'panelsProvider1.longText', title: '闀挎枃鏈�', type: 'longText', options: {
+              field: 'test.longText',
+              width: 200,
+              testData: '闀挎枃鏈垎椤�/涓嶅垎椤垫祴璇�'
+            },
+          }
+        ]),
+        new hiprint.PrintElementTypeGroup("杈呭姪", [
+          {
+            tid: 'panelsProvider1.hline',
+            title: '妯嚎',
+            type: 'hline'
+          },
+          {
+            tid: 'panelsProvider1.vline',
+            title: '绔栫嚎',
+            type: 'vline'
+          },
+          {
+            tid: 'panelsProvider1.rect',
+            title: '鐭╁舰',
+            type: 'rect'
+          },
+          {
+            tid: 'panelsProvider1.oval',
+            title: '妞渾',
+            type: 'oval'
+          }
+        ])
+      ]
+    );
+  };
+  return {
+    addElementTypes: addElementTypes
+  };
+};
+
+// 鑷畾涔夎璁″厓绱�2
+export const panelsProvider2 = function (ops) {
+  var addElementTypes = function (context) {
+    context.removePrintElementTypes("panelsProvider2");
+    context.addPrintElementTypes(
+      "panelsProvider2",
+      [
+        new hiprint.PrintElementTypeGroup("甯歌", [
+          {
+            tid: 'panelsProvider2.header', title: '鍗曟嵁琛ㄥご', data: '鍗曟嵁琛ㄥご', type: 'text',
+            options: {
+              testData: '鍗曟嵁琛ㄥご',
+              height: 17,
+              fontSize: 16.5,
+              fontWeight: "700",
+              textAlign: "center",
+              hideTitle: true
+            }
+          },
+          {
+            tid: 'panelsProvider2.type', title: '鍗曟嵁绫诲瀷', data: '鍗曟嵁绫诲瀷', type: 'text',
+            options: {
+              testData: '鍗曟嵁绫诲瀷',
+              height: 16,
+              fontSize: 15,
+              fontWeight: "700",
+              textAlign: "center",
+              hideTitle: true
+            }
+          },
+          {
+            tid: 'panelsProvider2.order', title: '璁㈠崟缂栧彿', data: 'XS888888888', type: 'text',
+            options: {
+              field: 'orderId',
+              testData: 'XS888888888',
+              height: 16,
+              fontSize: 6.75,
+              fontWeight: "700",
+              textAlign: "left",
+              textContentVerticalAlign: "middle"
+            }
+          },
+          {
+            tid: 'panelsProvider2.date', title: '涓氬姟鏃ユ湡', data: '2020-01-01', type: 'text',
+            options: {
+              field: 'date',
+              testData: '2020-01-01',
+              height: 16,
+              fontSize: 6.75,
+              fontWeight: "700",
+              textAlign: "left",
+              textContentVerticalAlign: "middle"
+            }
+          },
+          {
+            tid: 'panelsProvider2.barcode', title: '鏉″舰鐮�', data: 'XS888888888', type: 'text',
+            options: {
+              field: 'barcode',
+              testData: 'XS888888888',
+              height: 32,
+              fontSize: 12,
+              lineHeight: 18,
+              textType: "barcode"
+            }
+          },
+          {
+            tid: 'panelsProvider2.qrcode', title: '浜岀淮鐮�', data: 'XS888888888', type: 'text',
+            options: {
+              field: 'qrcode',
+              testData: 'XS888888888',
+              height: 32,
+              fontSize: 12,
+              lineHeight: 18,
+              textType: "qrcode"
+            }
+          },
+          {
+            tid: 'panelsProvider2.platform', title: '骞冲彴鍚嶇О', data: '骞冲彴鍚嶇О', type: 'text',
+            options: {
+              testData: '骞冲彴鍚嶇О',
+              height: 17,
+              fontSize: 16.5,
+              fontWeight: "700",
+              textAlign: "center",
+              hideTitle: true
+            }
+          },
+          {tid: 'panelsProvider2.image', title: 'Logo', data: '', type: 'image'},
+        ]),
+        new hiprint.PrintElementTypeGroup("瀹㈡埛", [
+          {
+            tid: 'panelsProvider2.khname', title: '瀹㈡埛鍚嶇О', data: '楂樼骇瀹㈡埛', type: 'text',
+            options: {
+              field: 'name',
+              testData: '楂樼骇瀹㈡埛',
+              height: 16,
+              fontSize: 6.75,
+              fontWeight: "700",
+              textAlign: "left",
+              textContentVerticalAlign: "middle"
+            }
+          },
+          {
+            tid: 'panelsProvider2.tel', title: '瀹㈡埛鐢佃瘽', data: '18888888888', type: 'text',
+            options: {
+              field: 'tel',
+              testData: '18888888888',
+              height: 16,
+              fontSize: 6.75,
+              fontWeight: "700",
+              textAlign: "left",
+              textContentVerticalAlign: "middle"
+            }
+          },
+        ]),
+        new hiprint.PrintElementTypeGroup("琛ㄦ牸/鍏朵粬", [
+          {
+            tid: 'panelsProvider2.table', title: '璁㈠崟鏁版嵁',
+            type: 'table',
+            options: {
+              field: 'table',
+              fields: [
+                {text: '鍚嶇О', field: 'NAME'},
+                {text: '鏁伴噺', field: 'SL'},
+                {text: '瑙勬牸', field: 'GG'},
+                {text: '鏉$爜', field: 'TM'},
+                {text: '鍗曚环', field: 'DJ'},
+                {text: '閲戦', field: 'JE'},
+                {text: '澶囨敞', field: 'DETAIL'},
+              ],
+            },
+            editable: true,
+            columnDisplayEditable: true,//鍒楁樉绀烘槸鍚﹁兘缂栬緫
+            columnDisplayIndexEditable: true,//鍒楅『搴忔樉绀烘槸鍚﹁兘缂栬緫
+            columnTitleEditable: true,//鍒楁爣棰樻槸鍚﹁兘缂栬緫
+            columnResizable: true, //鍒楀鏄惁鑳借皟鏁�
+            columnAlignEditable: true,//鍒楀榻愭槸鍚﹁皟鏁�
+            columns: [
+              [
+                {title: '鍚嶇О', align: 'center', field: 'NAME', width: 100},
+                {title: '鏁伴噺', align: 'center', field: 'SL', width: 100},
+                {title: '鏉$爜', align: 'center', field: 'TM', width: 100},
+                {title: '瑙勬牸', align: 'center', field: 'GG', width: 100},
+                {title: '鍗曚环', align: 'center', field: 'DJ', width: 100},
+                {title: '閲戦', align: 'center', field: 'JE', width: 100},
+                {title: '澶囨敞', align: 'center', field: 'DETAIL', width: 100},
+              ]
+            ],
+            footerFormatter: function (options, rows, data, currentPageGridRowsData) {
+              if (data && data['totalCap']) {
+                return `<td style="padding:0 10px" colspan="100">${'搴旀敹閲戦澶у啓: ' + data['totalCap']}</td>`
+              }
+              return '<td style="padding:0 10px" colspan="100">搴旀敹閲戦澶у啓: </td>'
+            },
+          },
+          {tid: 'panelsProvider2.customText', title: '鏂囨湰', customText: '鑷畾涔夋枃鏈�', custom: true, type: 'text'},
+          {
+            tid: 'panelsProvider2.longText', title: '闀挎枃鏈�', type: 'longText', options: {
+              field: 'test.longText',
+              width: 200,
+              testData: '闀挎枃鏈垎椤�/涓嶅垎椤垫祴璇�'
+            },
+          }
+        ]),
+        new hiprint.PrintElementTypeGroup("杈呭姪", [
+          {
+            tid: 'panelsProvider2.hline',
+            title: '妯嚎',
+            type: 'hline'
+          },
+          {
+            tid: 'panelsProvider2.vline',
+            title: '绔栫嚎',
+            type: 'vline'
+          },
+          {
+            tid: 'panelsProvider2.rect',
+            title: '鐭╁舰',
+            type: 'rect'
+          },
+          {
+            tid: 'panelsProvider2.oval',
+            title: '妞渾',
+            type: 'oval'
+          }
+        ])
+      ]
+    );
+  };
+  return {
+    addElementTypes: addElementTypes
+  };
+};
+
+export const providers = [panelsProvider1(), panelsProvider2()];
+export const providerList = [{
+  name: '璁捐1',
+  type: 1,
+  value: 'panelsProvider1',
+}, {
+  name: '璁捐2',
+  type: 2,
+  value: 'panelsProvider2',
+}]
diff --git a/src/views/scMould/warehouse/Sc_MouldInRequestBillEdit.vue b/src/views/scMould/warehouse/Sc_MouldInRequestBillEdit.vue
index eb3a114..74eca8d 100644
--- a/src/views/scMould/warehouse/Sc_MouldInRequestBillEdit.vue
+++ b/src/views/scMould/warehouse/Sc_MouldInRequestBillEdit.vue
@@ -95,9 +95,9 @@
             <el-col :span="6">
               <el-form-item v-show="HIsShow" label="瀛愬崟鎹被鍨�" prop="HBillSubType">
                 <el-select v-model="form.HBillSubType" placeholder="璇烽�夋嫨瀛愬崟鎹被鍨�">
-                  <el-option label="鍙戣揣" value="鍙戣揣"></el-option>
+                  <el-option label="閲囪喘鍏ュ簱" value="閲囪喘鍏ュ簱"></el-option>
+                  <el-option label="鐢熶骇鍏ュ簱" value="鐢熶骇鍏ュ簱"></el-option>
                   <el-option label="瀹㈣繑" value="瀹㈣繑"></el-option>
-                  <el-option label="渚涘簲鍟嗙鍊�" value="渚涘簲鍟嗙鍊�"></el-option>
                   <el-option label="渚涘簲鍟嗚繑杩�" value="渚涘簲鍟嗚繑杩�"></el-option>
                 </el-select>
               </el-form-item>
diff --git a/src/views/scMould/warehouse/Sc_MouldMoveStockRequestBillEdit.vue b/src/views/scMould/warehouse/Sc_MouldMoveStockRequestBillEdit.vue
index 84e8091..415afb9 100644
--- a/src/views/scMould/warehouse/Sc_MouldMoveStockRequestBillEdit.vue
+++ b/src/views/scMould/warehouse/Sc_MouldMoveStockRequestBillEdit.vue
@@ -35,9 +35,7 @@
             <el-form-item label="瀛愬崟鎹被鍨�" prop="HBillSubType">
               <el-select v-model="form.HBillSubType" placeholder="璇烽�夋嫨瀛愬崟鎹被鍨�">
                 <el-option label="鍙戣揣" value="鍙戣揣"></el-option>
-                <el-option label="瀹㈣繑" value="瀹㈣繑"></el-option>
-                <el-option label="渚涘簲鍟嗙鍊�" value="渚涘簲鍟嗙鍊�"></el-option>
-                <el-option label="渚涘簲鍟嗚繑杩�" value="渚涘簲鍟嗚繑杩�"></el-option>
+                <el-option label="鍐呴儴璋冩嫧" value="鍐呴儴璋冩嫧"></el-option>
               </el-select>
             </el-form-item>
           </el-col>
diff --git a/src/views/scMould/warehouse/Sc_MouldOutRequestBillEdit.vue b/src/views/scMould/warehouse/Sc_MouldOutRequestBillEdit.vue
index ff7defe..fa78168 100644
--- a/src/views/scMould/warehouse/Sc_MouldOutRequestBillEdit.vue
+++ b/src/views/scMould/warehouse/Sc_MouldOutRequestBillEdit.vue
@@ -95,10 +95,11 @@
             <el-col :span="6">
               <el-form-item v-show="HIsShow" label="瀛愬崟鎹被鍨�" prop="HBillSubType">
                 <el-select v-model="form.HBillSubType" placeholder="璇烽�夋嫨瀛愬崟鎹被鍨�">
+                  <el-option label="鐢熶骇棰嗙敤" value="鐢熶骇棰嗙敤"></el-option>
+                  <el-option label="棰嗙敤閫�搴�" value="棰嗙敤閫�搴�"></el-option>
                   <el-option label="鍙戣揣" value="鍙戣揣"></el-option>
-                  <el-option label="瀹㈣繑" value="瀹㈣繑"></el-option>
                   <el-option label="渚涘簲鍟嗙鍊�" value="渚涘簲鍟嗙鍊�"></el-option>
-                  <el-option label="渚涘簲鍟嗚繑杩�" value="渚涘簲鍟嗚繑杩�"></el-option>
+                  <el-option label="鎶ュ簾鍑哄簱" value="鎶ュ簾鍑哄簱"></el-option>
                 </el-select>
               </el-form-item>
             </el-col>
diff --git a/src/views/scMould/warehouse/Sc_MouldProdBackBillEdit.vue b/src/views/scMould/warehouse/Sc_MouldProdBackBillEdit.vue
index 4ceb76d..bd1c049 100644
--- a/src/views/scMould/warehouse/Sc_MouldProdBackBillEdit.vue
+++ b/src/views/scMould/warehouse/Sc_MouldProdBackBillEdit.vue
@@ -117,9 +117,9 @@
             <el-col :span="6">
               <el-form-item v-show="HIsShow" label="瀛愬崟鎹被鍨�" prop="HBillSubType">
                 <el-select v-model="form.HBillSubType" placeholder="璇烽�夋嫨瀛愬崟鎹被鍨�">
-                  <el-option label="鍙戣揣" value="鍙戣揣"></el-option>
+                  <el-option label="閲囪喘鍏ュ簱" value="閲囪喘鍏ュ簱"></el-option>
+                  <el-option label="鐢熶骇鍏ュ簱" value="鐢熶骇鍏ュ簱"></el-option>
                   <el-option label="瀹㈣繑" value="瀹㈣繑"></el-option>
-                  <el-option label="渚涘簲鍟嗙鍊�" value="渚涘簲鍟嗙鍊�"></el-option>
                   <el-option label="渚涘簲鍟嗚繑杩�" value="渚涘簲鍟嗚繑杩�"></el-option>
                 </el-select>
               </el-form-item>
diff --git a/src/views/scMould/warehouse/Sc_MouldProdMoveBillEdit.vue b/src/views/scMould/warehouse/Sc_MouldProdMoveBillEdit.vue
index 282f30d..6aedf1b 100644
--- a/src/views/scMould/warehouse/Sc_MouldProdMoveBillEdit.vue
+++ b/src/views/scMould/warehouse/Sc_MouldProdMoveBillEdit.vue
@@ -59,9 +59,7 @@
               <el-form-item label="瀛愬崟鎹被鍨�" prop="HBillSubType">
               <el-select v-model="form.HBillSubType" placeholder="璇烽�夋嫨瀛愬崟鎹被鍨�">
                 <el-option label="鍙戣揣" value="鍙戣揣"></el-option>
-                <el-option label="瀹㈣繑" value="瀹㈣繑"></el-option>
-                <el-option label="渚涘簲鍟嗙鍊�" value="渚涘簲鍟嗙鍊�"></el-option>
-                <el-option label="渚涘簲鍟嗚繑杩�" value="渚涘簲鍟嗚繑杩�"></el-option>
+                <el-option label="鍐呴儴璋冩嫧" value="鍐呴儴璋冩嫧"></el-option>
               </el-select>
             </el-form-item>
           </el-row>
diff --git a/src/views/scMould/warehouse/Sc_MouldProdOutBillEdit.vue b/src/views/scMould/warehouse/Sc_MouldProdOutBillEdit.vue
index c371703..dc06039 100644
--- a/src/views/scMould/warehouse/Sc_MouldProdOutBillEdit.vue
+++ b/src/views/scMould/warehouse/Sc_MouldProdOutBillEdit.vue
@@ -117,10 +117,11 @@
             <el-col :span="6">
               <el-form-item v-show="HIsShow" label="瀛愬崟鎹被鍨�" prop="HBillSubType">
                 <el-select v-model="form.HBillSubType" placeholder="璇烽�夋嫨瀛愬崟鎹被鍨�">
+                  <el-option label="鐢熶骇棰嗙敤" value="鐢熶骇棰嗙敤"></el-option>
+                  <el-option label="棰嗙敤閫�搴�" value="棰嗙敤閫�搴�"></el-option>
                   <el-option label="鍙戣揣" value="鍙戣揣"></el-option>
-                  <el-option label="瀹㈣繑" value="瀹㈣繑"></el-option>
                   <el-option label="渚涘簲鍟嗙鍊�" value="渚涘簲鍟嗙鍊�"></el-option>
-                  <el-option label="渚涘簲鍟嗚繑杩�" value="渚涘簲鍟嗚繑杩�"></el-option>
+                  <el-option label="鎶ュ簾鍑哄簱" value="鎶ュ簾鍑哄簱"></el-option>
                 </el-select>
               </el-form-item>
             </el-col>

--
Gitblit v1.9.1