From 341d73d02f4fc9ee0ad9ef81028a6914016dd246 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E4=B9=90?= <419641032@qq.com> Date: Thu, 13 Aug 2020 16:12:57 +0800 Subject: [PATCH] =?UTF-8?q?=E6=88=91=E4=BB=AC=E5=8F=91=E5=B8=83=E5=95=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 107 +- admin/.editorconfig | 14 + admin/.env.development | 16 + admin/.env.production | 7 + admin/.env.staging | 8 + admin/.eslintignore | 7 + admin/.eslintrc.js | 396 + admin/.travis.yml | 5 + admin/LICENSE | 21 + admin/README.ZBKJ.md | 15 + admin/README.es.md | 217 + admin/README.ja.md | 213 + admin/README.md | 217 + admin/README.zh-CN.md | 240 + admin/babel.config.js | 5 + admin/build/index.js | 35 + admin/jest.config.js | 24 + admin/jsconfig.json | 9 + admin/mock/article.js | 116 + admin/mock/index.js | 57 + admin/mock/mock-server.js | 84 + admin/mock/remote-search.js | 51 + admin/mock/role/index.js | 98 + admin/mock/role/routes.js | 525 + admin/mock/user.js | 84 + admin/package-lock.json | 18618 +++++++++ admin/package.json | 123 + admin/plop-templates/component/index.hbs | 26 + admin/plop-templates/component/prompt.js | 55 + admin/plop-templates/store/index.hbs | 16 + admin/plop-templates/store/prompt.js | 62 + admin/plop-templates/utils.js | 9 + admin/plop-templates/view/index.hbs | 26 + admin/plop-templates/view/prompt.js | 55 + admin/plopfile.js | 9 + admin/postcss.config.js | 5 + .../public/UEditor/dialogs/anchor/anchor.html | 40 + .../UEditor/dialogs/attachment/attachment.css | 681 + .../dialogs/attachment/attachment.html | 60 + .../UEditor/dialogs/attachment/attachment.js | 760 + .../attachment/fileTypeImages/icon_chm.gif | Bin 0 -> 923 bytes .../fileTypeImages/icon_default.png | Bin 0 -> 841 bytes .../attachment/fileTypeImages/icon_doc.gif | Bin 0 -> 1012 bytes .../attachment/fileTypeImages/icon_exe.gif | Bin 0 -> 949 bytes .../attachment/fileTypeImages/icon_jpg.gif | Bin 0 -> 950 bytes .../attachment/fileTypeImages/icon_mp3.gif | Bin 0 -> 986 bytes .../attachment/fileTypeImages/icon_mv.gif | Bin 0 -> 1001 bytes .../attachment/fileTypeImages/icon_pdf.gif | Bin 0 -> 996 bytes .../attachment/fileTypeImages/icon_ppt.gif | Bin 0 -> 1001 bytes .../attachment/fileTypeImages/icon_psd.gif | Bin 0 -> 1009 bytes .../attachment/fileTypeImages/icon_rar.gif | Bin 0 -> 1007 bytes .../attachment/fileTypeImages/icon_txt.gif | Bin 0 -> 970 bytes .../attachment/fileTypeImages/icon_xls.gif | Bin 0 -> 1005 bytes .../dialogs/attachment/images/alignicon.gif | Bin 0 -> 1051 bytes .../dialogs/attachment/images/alignicon.png | Bin 0 -> 3714 bytes .../UEditor/dialogs/attachment/images/bg.png | Bin 0 -> 2810 bytes .../dialogs/attachment/images/file-icons.gif | Bin 0 -> 20097 bytes .../dialogs/attachment/images/file-icons.png | Bin 0 -> 44070 bytes .../dialogs/attachment/images/icons.gif | Bin 0 -> 453 bytes .../dialogs/attachment/images/icons.png | Bin 0 -> 2678 bytes .../dialogs/attachment/images/image.png | Bin 0 -> 1672 bytes .../dialogs/attachment/images/progress.png | Bin 0 -> 1269 bytes .../dialogs/attachment/images/success.gif | Bin 0 -> 445 bytes .../dialogs/attachment/images/success.png | Bin 0 -> 1621 bytes .../UEditor/dialogs/background/background.css | 94 + .../dialogs/background/background.html | 56 + .../UEditor/dialogs/background/background.js | 376 + .../UEditor/dialogs/background/images/bg.png | Bin 0 -> 2810 bytes .../dialogs/background/images/success.png | Bin 0 -> 1621 bytes .../UEditor/dialogs/charts/chart.config.js | 65 + .../public/UEditor/dialogs/charts/charts.css | 165 + .../public/UEditor/dialogs/charts/charts.html | 89 + admin/public/UEditor/dialogs/charts/charts.js | 519 + .../UEditor/dialogs/charts/images/charts0.png | Bin 0 -> 25306 bytes .../UEditor/dialogs/charts/images/charts1.png | Bin 0 -> 19263 bytes .../UEditor/dialogs/charts/images/charts2.png | Bin 0 -> 23016 bytes .../UEditor/dialogs/charts/images/charts3.png | Bin 0 -> 7823 bytes .../UEditor/dialogs/charts/images/charts4.png | Bin 0 -> 8344 bytes .../UEditor/dialogs/charts/images/charts5.png | Bin 0 -> 47084 bytes .../UEditor/dialogs/emotion/emotion.css | 43 + .../UEditor/dialogs/emotion/emotion.html | 54 + .../public/UEditor/dialogs/emotion/emotion.js | 186 + .../UEditor/dialogs/emotion/images/0.gif | Bin 0 -> 43 bytes .../UEditor/dialogs/emotion/images/bface.gif | Bin 0 -> 27167 bytes .../UEditor/dialogs/emotion/images/cface.gif | Bin 0 -> 8603 bytes .../UEditor/dialogs/emotion/images/fface.gif | Bin 0 -> 18479 bytes .../dialogs/emotion/images/jxface2.gif | Bin 0 -> 40706 bytes .../emotion/images/neweditor-tab-bg.png | Bin 0 -> 216 bytes .../UEditor/dialogs/emotion/images/tface.gif | Bin 0 -> 19805 bytes .../UEditor/dialogs/emotion/images/wface.gif | Bin 0 -> 49850 bytes .../UEditor/dialogs/emotion/images/yface.gif | Bin 0 -> 28409 bytes admin/public/UEditor/dialogs/gmap/gmap.html | 89 + admin/public/UEditor/dialogs/help/help.css | 7 + admin/public/UEditor/dialogs/help/help.html | 82 + admin/public/UEditor/dialogs/help/help.js | 56 + .../dialogs/insertframe/insertframe.html | 98 + admin/public/UEditor/dialogs/internal.js | 80 + admin/public/UEditor/dialogs/link/link.html | 126 + admin/public/UEditor/dialogs/map/map.html | 135 + admin/public/UEditor/dialogs/map/show.html | 118 + admin/public/UEditor/dialogs/music/music.css | 30 + admin/public/UEditor/dialogs/music/music.html | 32 + admin/public/UEditor/dialogs/music/music.js | 192 + .../UEditor/dialogs/preview/preview.html | 40 + .../UEditor/dialogs/scrawl/images/addimg.png | Bin 0 -> 628 bytes .../UEditor/dialogs/scrawl/images/brush.png | Bin 0 -> 608 bytes .../UEditor/dialogs/scrawl/images/delimg.png | Bin 0 -> 516 bytes .../UEditor/dialogs/scrawl/images/delimgH.png | Bin 0 -> 578 bytes .../UEditor/dialogs/scrawl/images/empty.png | Bin 0 -> 519 bytes .../UEditor/dialogs/scrawl/images/emptyH.png | Bin 0 -> 657 bytes .../UEditor/dialogs/scrawl/images/eraser.png | Bin 0 -> 43271 bytes .../UEditor/dialogs/scrawl/images/redo.png | Bin 0 -> 454 bytes .../UEditor/dialogs/scrawl/images/redoH.png | Bin 0 -> 536 bytes .../UEditor/dialogs/scrawl/images/scale.png | Bin 0 -> 435 bytes .../UEditor/dialogs/scrawl/images/scaleH.png | Bin 0 -> 330 bytes .../UEditor/dialogs/scrawl/images/size.png | Bin 0 -> 775 bytes .../UEditor/dialogs/scrawl/images/undo.png | Bin 0 -> 444 bytes .../UEditor/dialogs/scrawl/images/undoH.png | Bin 0 -> 511 bytes .../public/UEditor/dialogs/scrawl/scrawl.css | 72 + .../public/UEditor/dialogs/scrawl/scrawl.html | 95 + admin/public/UEditor/dialogs/scrawl/scrawl.js | 671 + .../dialogs/searchreplace/searchreplace.html | 102 + .../dialogs/searchreplace/searchreplace.js | 164 + .../dialogs/snapscreen/snapscreen.html | 58 + .../UEditor/dialogs/spechars/spechars.html | 21 + .../UEditor/dialogs/spechars/spechars.js | 57 + .../public/UEditor/dialogs/table/dragicon.png | Bin 0 -> 304 bytes .../UEditor/dialogs/table/edittable.css | 84 + .../UEditor/dialogs/table/edittable.html | 64 + .../public/UEditor/dialogs/table/edittable.js | 237 + .../public/UEditor/dialogs/table/edittd.html | 61 + .../public/UEditor/dialogs/table/edittip.html | 33 + .../public/UEditor/dialogs/template/config.js | 42 + .../UEditor/dialogs/template/images/bg.gif | Bin 0 -> 84 bytes .../UEditor/dialogs/template/images/pre0.png | Bin 0 -> 250 bytes .../UEditor/dialogs/template/images/pre1.png | Bin 0 -> 291 bytes .../UEditor/dialogs/template/images/pre2.png | Bin 0 -> 394 bytes .../UEditor/dialogs/template/images/pre3.png | Bin 0 -> 485 bytes .../UEditor/dialogs/template/images/pre4.png | Bin 0 -> 393 bytes .../UEditor/dialogs/template/template.css | 18 + .../UEditor/dialogs/template/template.html | 26 + .../UEditor/dialogs/template/template.js | 53 + .../UEditor/dialogs/video/images/bg.png | Bin 0 -> 2810 bytes .../dialogs/video/images/center_focus.jpg | Bin 0 -> 11795 bytes .../dialogs/video/images/file-icons.gif | Bin 0 -> 20097 bytes .../dialogs/video/images/file-icons.png | Bin 0 -> 44070 bytes .../UEditor/dialogs/video/images/icons.gif | Bin 0 -> 453 bytes .../UEditor/dialogs/video/images/icons.png | Bin 0 -> 2678 bytes .../UEditor/dialogs/video/images/image.png | Bin 0 -> 1672 bytes .../dialogs/video/images/left_focus.jpg | Bin 0 -> 11423 bytes .../dialogs/video/images/none_focus.jpg | Bin 0 -> 11546 bytes .../UEditor/dialogs/video/images/progress.png | Bin 0 -> 1269 bytes .../dialogs/video/images/right_focus.jpg | Bin 0 -> 11334 bytes .../UEditor/dialogs/video/images/success.gif | Bin 0 -> 445 bytes .../UEditor/dialogs/video/images/success.png | Bin 0 -> 1621 bytes admin/public/UEditor/dialogs/video/video.css | 635 + admin/public/UEditor/dialogs/video/video.html | 86 + admin/public/UEditor/dialogs/video/video.js | 797 + .../public/UEditor/dialogs/webapp/webapp.html | 53 + .../UEditor/dialogs/wordimage/tangram.js | 1495 + .../UEditor/dialogs/wordimage/wordimage.html | 111 + .../UEditor/dialogs/wordimage/wordimage.js | 157 + admin/public/UEditor/index.html | 175 + admin/public/UEditor/lang/en/en.js | 755 + .../UEditor/lang/en/images/addimage.png | Bin 0 -> 3373 bytes .../lang/en/images/alldeletebtnhoverskin.png | Bin 0 -> 743 bytes .../lang/en/images/alldeletebtnupskin.png | Bin 0 -> 743 bytes .../UEditor/lang/en/images/background.png | Bin 0 -> 3854 bytes .../public/UEditor/lang/en/images/button.png | Bin 0 -> 4929 bytes admin/public/UEditor/lang/en/images/copy.png | Bin 0 -> 1222 bytes .../UEditor/lang/en/images/deletedisable.png | Bin 0 -> 649 bytes .../UEditor/lang/en/images/deleteenable.png | Bin 0 -> 664 bytes .../UEditor/lang/en/images/listbackground.png | Bin 0 -> 3750 bytes .../UEditor/lang/en/images/localimage.png | Bin 0 -> 3083 bytes admin/public/UEditor/lang/en/images/music.png | Bin 0 -> 91561 bytes .../lang/en/images/rotateleftdisable.png | Bin 0 -> 719 bytes .../lang/en/images/rotateleftenable.png | Bin 0 -> 952 bytes .../lang/en/images/rotaterightdisable.png | Bin 0 -> 754 bytes .../lang/en/images/rotaterightenable.png | Bin 0 -> 1007 bytes .../public/UEditor/lang/en/images/upload.png | Bin 0 -> 3941 bytes .../public/UEditor/lang/zh-cn/images/copy.png | Bin 0 -> 4319 bytes .../UEditor/lang/zh-cn/images/localimage.png | Bin 0 -> 6979 bytes .../UEditor/lang/zh-cn/images/music.png | Bin 0 -> 23106 bytes .../UEditor/lang/zh-cn/images/upload.png | Bin 0 -> 6608 bytes admin/public/UEditor/lang/zh-cn/zh-cn.js | 669 + .../UEditor/themes/default/css/ueditor.css | 1904 + .../themes/default/css/ueditor.min.css | 8 + .../UEditor/themes/default/dialogbase.css | 100 + .../UEditor/themes/default/images/anchor.gif | Bin 0 -> 184 bytes .../UEditor/themes/default/images/arrow.png | Bin 0 -> 1173 bytes .../themes/default/images/arrow_down.png | Bin 0 -> 1610 bytes .../themes/default/images/arrow_up.png | Bin 0 -> 1649 bytes .../themes/default/images/button-bg.gif | Bin 0 -> 1114 bytes .../themes/default/images/cancelbutton.gif | Bin 0 -> 1227 bytes .../UEditor/themes/default/images/charts.png | Bin 0 -> 518 bytes .../themes/default/images/cursor_h.gif | Bin 0 -> 253 bytes .../themes/default/images/cursor_h.png | Bin 0 -> 175 bytes .../themes/default/images/cursor_v.gif | Bin 0 -> 370 bytes .../themes/default/images/cursor_v.png | Bin 0 -> 177 bytes .../themes/default/images/dialog-title-bg.png | Bin 0 -> 938 bytes .../themes/default/images/filescan.png | Bin 0 -> 4282 bytes .../themes/default/images/highlighted.gif | Bin 0 -> 111 bytes .../themes/default/images/icons-all.gif | Bin 0 -> 3750 bytes .../UEditor/themes/default/images/icons.gif | Bin 0 -> 20947 bytes .../UEditor/themes/default/images/icons.png | Bin 0 -> 19694 bytes .../themes/default/images/loaderror.png | Bin 0 -> 3209 bytes .../UEditor/themes/default/images/loading.gif | Bin 0 -> 734 bytes .../UEditor/themes/default/images/lock.gif | Bin 0 -> 1062 bytes .../default/images/neweditor-tab-bg.png | Bin 0 -> 216 bytes .../themes/default/images/pagebreak.gif | Bin 0 -> 54 bytes .../UEditor/themes/default/images/scale.png | Bin 0 -> 167 bytes .../themes/default/images/sortable.png | Bin 0 -> 2851 bytes .../UEditor/themes/default/images/spacer.gif | Bin 0 -> 43 bytes .../themes/default/images/sparator_v.png | Bin 0 -> 122 bytes .../default/images/table-cell-align.png | Bin 0 -> 1847 bytes .../default/images/tangram-colorpicker.png | Bin 0 -> 17355 bytes .../themes/default/images/toolbar_bg.png | Bin 0 -> 170 bytes .../themes/default/images/unhighlighted.gif | Bin 0 -> 111 bytes .../UEditor/themes/default/images/upload.png | Bin 0 -> 6608 bytes .../themes/default/images/videologo.gif | Bin 0 -> 1604 bytes .../UEditor/themes/default/images/word.gif | Bin 0 -> 1019 bytes .../themes/default/images/wordpaste.png | Bin 0 -> 6467 bytes admin/public/UEditor/themes/iframe.css | 1 + .../third-party/SyntaxHighlighter/shCore.js | 3655 ++ .../SyntaxHighlighter/shCoreDefault.css | 1 + .../third-party/codemirror/codemirror.css | 104 + .../third-party/codemirror/codemirror.js | 3581 ++ .../highcharts/adapters/mootools-adapter.js | 13 + .../adapters/mootools-adapter.src.js | 313 + .../highcharts/adapters/prototype-adapter.js | 15 + .../adapters/prototype-adapter.src.js | 316 + .../adapters/standalone-framework.js | 17 + .../adapters/standalone-framework.src.js | 583 + .../third-party/highcharts/highcharts-more.js | 50 + .../highcharts/highcharts-more.src.js | 2430 ++ .../third-party/highcharts/highcharts.js | 283 + .../third-party/highcharts/highcharts.src.js | 16974 ++++++++ .../highcharts/modules/annotations.js | 7 + .../highcharts/modules/annotations.src.js | 401 + .../highcharts/modules/canvas-tools.js | 133 + .../highcharts/modules/canvas-tools.src.js | 3113 ++ .../third-party/highcharts/modules/data.js | 17 + .../highcharts/modules/data.src.js | 582 + .../highcharts/modules/drilldown.js | 11 + .../highcharts/modules/drilldown.src.js | 447 + .../highcharts/modules/exporting.js | 22 + .../highcharts/modules/exporting.src.js | 709 + .../third-party/highcharts/modules/funnel.js | 12 + .../highcharts/modules/funnel.src.js | 289 + .../third-party/highcharts/modules/heatmap.js | 1 + .../highcharts/modules/heatmap.src.js | 53 + .../third-party/highcharts/modules/map.js | 27 + .../third-party/highcharts/modules/map.src.js | 1002 + .../highcharts/modules/no-data-to-display.js | 12 + .../modules/no-data-to-display.src.js | 128 + .../highcharts/themes/dark-blue.js | 254 + .../highcharts/themes/dark-green.js | 255 + .../third-party/highcharts/themes/gray.js | 257 + .../third-party/highcharts/themes/grid.js | 103 + .../third-party/highcharts/themes/skies.js | 89 + .../UEditor/third-party/jquery-1.10.2.js | 9789 +++++ .../UEditor/third-party/jquery-1.10.2.min.js | 6 + .../UEditor/third-party/jquery-1.10.2.min.map | 1 + .../snapscreen/UEditorSnapscreen.exe | Bin 0 -> 519936 bytes .../UEditor/third-party/video-js/font/vjs.eot | Bin 0 -> 3536 bytes .../UEditor/third-party/video-js/font/vjs.svg | 65 + .../UEditor/third-party/video-js/font/vjs.ttf | Bin 0 -> 3372 bytes .../third-party/video-js/font/vjs.woff | Bin 0 -> 4228 bytes .../UEditor/third-party/video-js/video-js.css | 766 + .../third-party/video-js/video-js.min.css | 5 + .../UEditor/third-party/video-js/video.dev.js | 7108 ++++ .../UEditor/third-party/video-js/video.js | 129 + .../third-party/webuploader/webuploader.css | 28 + .../webuploader/webuploader.custom.js | 5670 +++ .../webuploader/webuploader.custom.min.js | 2 + .../webuploader/webuploader.flashonly.js | 4176 ++ .../webuploader/webuploader.flashonly.min.js | 2 + .../webuploader/webuploader.html5only.js | 5559 +++ .../webuploader/webuploader.html5only.min.js | 2 + .../third-party/webuploader/webuploader.js | 6733 ++++ .../webuploader/webuploader.min.js | 2 + .../webuploader/webuploader.withoutimage.js | 4593 +++ .../webuploader.withoutimage.min.js | 2 + admin/public/UEditor/third-party/xss.min.js | 1 + .../zeroclipboard/ZeroClipboard.js | 1256 + .../zeroclipboard/ZeroClipboard.min.js | 9 + admin/public/UEditor/ueditor.all.js | 29559 ++++++++++++++ admin/public/UEditor/ueditor.all.min.js | 18 + admin/public/UEditor/ueditor.config.js | 481 + admin/public/UEditor/ueditor.parse.js | 1022 + admin/public/UEditor/ueditor.parse.min.js | 7 + admin/public/favicon.ico | Bin 0 -> 67646 bytes admin/public/index.html | 20 + admin/public/preview.html | 38 + admin/src/App.vue | 11 + admin/src/api/article.js | 123 + admin/src/api/categoryApi.js | 126 + admin/src/api/configApi.js | 101 + admin/src/api/configTabApi.js | 95 + admin/src/api/dashboard.js | 81 + admin/src/api/distribution.js | 90 + admin/src/api/logistics.js | 154 + admin/src/api/marketing.js | 86 + admin/src/api/order.js | 111 + admin/src/api/qiniu.js | 8 + admin/src/api/remote-search.js | 17 + admin/src/api/role.js | 70 + admin/src/api/roleApi.js | 21 + admin/src/api/sms.js | 127 + admin/src/api/store.js | 243 + admin/src/api/storePoint.js | 193 + admin/src/api/system.js | 59 + admin/src/api/systemConfig.js | 111 + admin/src/api/systemFormConfig.js | 53 + admin/src/api/systemGroup.js | 63 + admin/src/api/systemGroupData.js | 55 + admin/src/api/systemSetting.js | 93 + admin/src/api/systemadmin.js | 86 + admin/src/api/user.js | 349 + admin/src/api/wxApi.js | 197 + admin/src/assets/401_images/401.gif | Bin 0 -> 164227 bytes admin/src/assets/404_images/404.png | Bin 0 -> 98071 bytes admin/src/assets/404_images/404_cloud.png | Bin 0 -> 4766 bytes .../custom-theme/fonts/element-icons.ttf | Bin 0 -> 11028 bytes .../custom-theme/fonts/element-icons.woff | Bin 0 -> 6124 bytes admin/src/assets/custom-theme/index.css | 1 + admin/src/assets/imgs/bg.jpg | Bin 0 -> 71811 bytes admin/src/assets/imgs/head.gif | Bin 0 -> 129103 bytes admin/src/assets/imgs/mobilefoot.png | Bin 0 -> 1348 bytes admin/src/assets/imgs/mobilehead.png | Bin 0 -> 12673 bytes admin/src/assets/imgs/moren.jpg | Bin 0 -> 2768 bytes admin/src/assets/imgs/no.png | Bin 0 -> 4166 bytes admin/src/components/BackToTop/index.vue | 111 + admin/src/components/Breadcrumb/index.vue | 82 + admin/src/components/Category/edit.vue | 203 + admin/src/components/Category/info.vue | 89 + admin/src/components/Category/list.vue | 276 + admin/src/components/Charts/Keyboard.vue | 155 + admin/src/components/Charts/LineMarker.vue | 227 + admin/src/components/Charts/MixChart.vue | 271 + admin/src/components/Charts/mixins/resize.js | 56 + admin/src/components/DragSelect/index.vue | 61 + admin/src/components/Dropzone/index.vue | 297 + admin/src/components/ErrorLog/index.vue | 78 + .../components/SvgIcon/index.vue | 73 + .../components/generator/config.js | 601 + .../FormGenerator/components/generator/css.js | 18 + .../components/generator/drawingDefalut.js | 37 + .../components/generator/html.js | 427 + .../FormGenerator/components/generator/js.js | 254 + .../components/generator/ruleTrigger.js | 17 + .../components/parser/Parser.vue | 196 + .../FormGenerator/components/parser/README.md | 17 + .../components/parser/ZBParser.vue | 64 + .../components/parser/example/Index.vue | 264 + .../FormGenerator/components/parser/index.js | 3 + .../components/parser/package.json | 25 + .../components/render/package.json | 19 + .../FormGenerator/components/render/render.js | 59 + .../components/render/slots/el-button.js | 5 + .../render/slots/el-checkbox-group.js | 13 + .../components/render/slots/el-input.js | 8 + .../components/render/slots/el-radio-group.js | 13 + .../components/render/slots/el-select.js | 9 + .../components/render/slots/el-upload.js | 17 + .../components/tinymce/config.js | 8 + .../components/tinymce/index.vue | 93 + .../FormGenerator/components/tinymce/zh_CN.js | 420 + .../FormGenerator/index/CodeTypeDialog.vue | 110 + .../FormGenerator/index/DraggableItem.vue | 106 + .../FormGenerator/index/FormDrawer.vue | 333 + .../components/FormGenerator/index/Home.vue | 495 + .../FormGenerator/index/IconsDialog.vue | 123 + .../FormGenerator/index/JsonDrawer.vue | 158 + .../FormGenerator/index/ResourceDialog.vue | 114 + .../FormGenerator/index/RightPanel.vue | 1014 + .../FormGenerator/index/TreeNodeDialog.vue | 158 + .../components/FormGenerator/index/index.vue | 22 + .../components/FormGenerator/preview/main.js | 59 + .../components/FormGenerator/styles/home.scss | 271 + .../FormGenerator/styles/index.scss | 137 + .../FormGenerator/styles/mixin.scss | 33 + .../src/components/FormGenerator/utils/db.js | 67 + .../components/FormGenerator/utils/icon.json | 1 + .../components/FormGenerator/utils/index.js | 102 + .../FormGenerator/utils/loadBeautifier.js | 26 + .../FormGenerator/utils/loadMonaco.js | 42 + .../FormGenerator/utils/loadScript.js | 60 + .../FormGenerator/utils/loadTinymce.js | 26 + admin/src/components/Hamburger/index.vue | 44 + admin/src/components/HeaderSearch/index.vue | 183 + admin/src/components/ImageCropper/index.vue | 1778 + .../ImageCropper/utils/data2blob.js | 19 + .../ImageCropper/utils/effectRipple.js | 39 + .../components/ImageCropper/utils/language.js | 232 + .../components/ImageCropper/utils/mimes.js | 7 + admin/src/components/JsonEditor/index.vue | 72 + admin/src/components/Kanban/index.vue | 99 + admin/src/components/MDinput/index.vue | 360 + .../MarkdownEditor/default-options.js | 31 + admin/src/components/MarkdownEditor/index.vue | 118 + admin/src/components/Pagination/index.vue | 101 + admin/src/components/PanThumb/index.vue | 142 + admin/src/components/RightPanel/index.vue | 145 + admin/src/components/Screenfull/index.vue | 60 + admin/src/components/Share/DropdownMenu.vue | 103 + admin/src/components/SizeSelect/index.vue | 57 + admin/src/components/Sticky/index.vue | 91 + admin/src/components/SvgIcon/index.vue | 62 + .../src/components/TextHoverEffect/Mallki.vue | 113 + admin/src/components/ThemePicker/index.vue | 175 + .../Tinymce/components/EditorImage.vue | 111 + .../components/Tinymce/dynamicLoadScript.js | 59 + admin/src/components/Tinymce/index.vue | 237 + admin/src/components/Tinymce/plugins.js | 7 + admin/src/components/Tinymce/toolbar.js | 6 + admin/src/components/Upload/SingleImage.vue | 134 + admin/src/components/Upload/SingleImage2.vue | 130 + admin/src/components/Upload/SingleImage3.vue | 157 + admin/src/components/Upload/uploadFile.vue | 70 + admin/src/components/UploadExcel/index.vue | 138 + .../articleList/articleFrom/index.js | 22 + .../articleList/articleFrom/index.vue | 48 + admin/src/components/articleList/index.vue | 164 + admin/src/components/attrFrom/index.vue | 269 + admin/src/components/cards/index.vue | 102 + .../components/couponList/couponFrom/index.js | 25 + .../couponList/couponFrom/index.vue | 49 + admin/src/components/couponList/index.vue | 277 + admin/src/components/customerInfo/index.vue | 194 + admin/src/components/echarts/index.vue | 192 + .../components/goodList/goodListFrom/index.js | 23 + .../goodList/goodListFrom/index.vue | 41 + admin/src/components/goodList/index.vue | 267 + .../src/components/iconFrom/element-icons.js | 3 + admin/src/components/iconFrom/index.vue | 107 + admin/src/components/ueditorFrom/index.vue | 85 + .../uploadPicture/forGenrator/index.vue | 150 + admin/src/components/uploadPicture/index.vue | 670 + .../uploadPicture/uploadFrom/index.js | 23 + .../uploadPicture/uploadFrom/index.vue | 46 + admin/src/directive/clipboard/clipboard.js | 49 + admin/src/directive/clipboard/index.js | 13 + admin/src/directive/el-drag-dialog/drag.js | 77 + admin/src/directive/el-drag-dialog/index.js | 13 + admin/src/directive/el-table/adaptive.js | 41 + admin/src/directive/el-table/index.js | 13 + admin/src/directive/permission/index.js | 13 + admin/src/directive/permission/permission.js | 22 + admin/src/directive/sticky.js | 91 + admin/src/directive/waves/index.js | 13 + admin/src/directive/waves/waves.css | 26 + admin/src/directive/waves/waves.js | 72 + admin/src/filters/commFilter.js | 95 + admin/src/filters/index.js | 72 + admin/src/filters/order.js | 26 + admin/src/filters/user.js | 24 + admin/src/icons/index.js | 9 + admin/src/icons/svg/404.svg | 1 + admin/src/icons/svg/bug.svg | 1 + admin/src/icons/svg/chart.svg | 1 + admin/src/icons/svg/clipboard.svg | 1 + admin/src/icons/svg/component.svg | 1 + admin/src/icons/svg/dashboard.svg | 1 + admin/src/icons/svg/documentation.svg | 1 + admin/src/icons/svg/drag.svg | 1 + admin/src/icons/svg/edit.svg | 1 + admin/src/icons/svg/education.svg | 1 + admin/src/icons/svg/email.svg | 1 + admin/src/icons/svg/example.svg | 1 + admin/src/icons/svg/excel.svg | 1 + admin/src/icons/svg/exit-fullscreen.svg | 1 + admin/src/icons/svg/eye-open.svg | 1 + admin/src/icons/svg/eye.svg | 1 + admin/src/icons/svg/form.svg | 1 + admin/src/icons/svg/fullscreen.svg | 1 + admin/src/icons/svg/guide.svg | 1 + admin/src/icons/svg/icon.svg | 1 + admin/src/icons/svg/international.svg | 1 + admin/src/icons/svg/language.svg | 1 + admin/src/icons/svg/link.svg | 1 + admin/src/icons/svg/list.svg | 1 + admin/src/icons/svg/lock.svg | 1 + admin/src/icons/svg/message.svg | 1 + admin/src/icons/svg/money.svg | 1 + admin/src/icons/svg/nested.svg | 1 + admin/src/icons/svg/password.svg | 1 + admin/src/icons/svg/pdf.svg | 1 + admin/src/icons/svg/people.svg | 1 + admin/src/icons/svg/peoples.svg | 1 + admin/src/icons/svg/qq.svg | 1 + admin/src/icons/svg/search.svg | 1 + admin/src/icons/svg/shopping.svg | 1 + admin/src/icons/svg/size.svg | 1 + admin/src/icons/svg/skill.svg | 1 + admin/src/icons/svg/star.svg | 1 + admin/src/icons/svg/tab.svg | 1 + admin/src/icons/svg/table.svg | 1 + admin/src/icons/svg/theme.svg | 1 + admin/src/icons/svg/tree-table.svg | 1 + admin/src/icons/svg/tree.svg | 1 + admin/src/icons/svg/user.svg | 1 + admin/src/icons/svg/wechat.svg | 1 + admin/src/icons/svg/zip.svg | 1 + admin/src/icons/svgo.yml | 22 + admin/src/layout/components/AppMain.vue | 57 + admin/src/layout/components/Navbar.vue | 170 + .../src/layout/components/Settings/index.vue | 108 + .../layout/components/Sidebar/FixiOSBug.js | 26 + admin/src/layout/components/Sidebar/Item.vue | 30 + admin/src/layout/components/Sidebar/Link.vue | 36 + admin/src/layout/components/Sidebar/Logo.vue | 82 + .../layout/components/Sidebar/SidebarItem.vue | 94 + admin/src/layout/components/Sidebar/index.vue | 55 + .../layout/components/TagsView/ScrollPane.vue | 85 + .../src/layout/components/TagsView/index.vue | 289 + admin/src/layout/components/index.js | 5 + admin/src/layout/index.vue | 102 + admin/src/layout/mixin/ResizeHandler.js | 45 + admin/src/libs/modal-attr.js | 33 + admin/src/libs/modal-coupon.js | 36 + admin/src/libs/modal-icon.js | 30 + admin/src/libs/public.js | 32 + admin/src/main.js | 150 + admin/src/permission.js | 63 + admin/src/router/index.js | 255 + admin/src/router/modules/appSetting.js | 96 + admin/src/router/modules/charts.js | 36 + admin/src/router/modules/content.js | 34 + admin/src/router/modules/distribution.js | 28 + admin/src/router/modules/financial.js | 58 + admin/src/router/modules/maintain.js | 66 + admin/src/router/modules/marketing.js | 134 + admin/src/router/modules/operation.js | 162 + admin/src/router/modules/order.js | 23 + admin/src/router/modules/store.js | 47 + admin/src/router/modules/user.js | 40 + admin/src/settings.js | 40 + admin/src/store/getters.js | 16 + admin/src/store/index.js | 25 + admin/src/store/modules/app.js | 56 + admin/src/store/modules/errorLog.js | 28 + admin/src/store/modules/permission.js | 102 + admin/src/store/modules/settings.js | 34 + admin/src/store/modules/tagsView.js | 160 + admin/src/store/modules/user.js | 157 + admin/src/styles/btn.scss | 99 + admin/src/styles/element-ui.scss | 84 + admin/src/styles/element-variables.scss | 31 + admin/src/styles/index.scss | 212 + admin/src/styles/mixin.scss | 66 + admin/src/styles/sidebar.scss | 209 + admin/src/styles/styles.scss | 344 + admin/src/styles/transition.scss | 48 + admin/src/styles/variables.scss | 35 + admin/src/utils/ZBKJIutil.js | 43 + admin/src/utils/auth.js | 15 + admin/src/utils/city.js | 5046 +++ admin/src/utils/clipboard.js | 32 + admin/src/utils/constants.js | 81 + admin/src/utils/error-log.js | 34 + admin/src/utils/get-page-title.js | 10 + admin/src/utils/index.js | 383 + admin/src/utils/open-window.js | 25 + admin/src/utils/permission.js | 24 + admin/src/utils/request.js | 87 + admin/src/utils/scroll-to.js | 58 + admin/src/utils/settingMer.js | 13 + admin/src/utils/validate.js | 88 + admin/src/vendor/Export2Excel.js | 220 + admin/src/vendor/Export2Zip.js | 24 + admin/src/views/appSetting/index.vue | 15 + admin/src/views/appSetting/routine/index.vue | 15 + .../appSetting/routine/routineTemplate.vue | 13 + .../src/views/appSetting/wxAccount/index.vue | 15 + .../wxAccount/reply/follow/index.vue | 626 + .../appSetting/wxAccount/reply/index.vue | 3 + .../wxAccount/reply/keyword/index.vue | 156 + .../views/appSetting/wxAccount/wxMenus.vue | 422 + .../appSetting/wxAccount/wxTemplate/index.vue | 226 + admin/src/views/content/article/edit.vue | 205 + admin/src/views/content/article/list.vue | 192 + admin/src/views/content/articleclass/list.vue | 23 + .../dashboard/admin/components/BarChart.vue | 102 + .../dashboard/admin/components/BoxCard.vue | 118 + .../dashboard/admin/components/LineChart.vue | 135 + .../dashboard/admin/components/PanelGroup.vue | 181 + .../dashboard/admin/components/PieChart.vue | 79 + .../admin/components/RaddarChart.vue | 116 + .../admin/components/TodoList/Todo.vue | 81 + .../admin/components/TodoList/index.scss | 320 + .../admin/components/TodoList/index.vue | 127 + .../admin/components/TransactionTable.vue | 55 + .../admin/components/mixins/resize.js | 55 + admin/src/views/dashboard/admin/index.vue | 120 + .../views/dashboard/components/baseInfo.vue | 176 + .../views/dashboard/components/gridMenu.vue | 110 + .../views/dashboard/components/userChart.vue | 187 + .../views/dashboard/components/visitChart.vue | 594 + admin/src/views/dashboard/editor/index.vue | 72 + admin/src/views/dashboard/index.vue | 43 + admin/src/views/datas/datamark/index.vue | 0 admin/src/views/datas/index.vue | 15 + .../views/datas/transaction/goods/index.vue | 13 + admin/src/views/datas/transaction/index.vue | 15 + .../views/datas/transaction/order/index.vue | 13 + admin/src/views/distribution/config/index.vue | 173 + admin/src/views/distribution/index.vue | 458 + .../views/error-log/components/ErrorTestA.vue | 13 + .../views/error-log/components/ErrorTestB.vue | 11 + admin/src/views/error-log/index.vue | 32 + admin/src/views/error-page/401.vue | 99 + admin/src/views/error-page/404.vue | 237 + admin/src/views/financial/brokerage/index.vue | 13 + .../src/views/financial/commission/index.vue | 15 + .../financial/commission/withdrawal/index.vue | 13 + admin/src/views/financial/index.vue | 15 + admin/src/views/financial/operating/index.vue | 0 .../views/financial/record/charge/index.vue | 13 + admin/src/views/financial/record/index.vue | 15 + .../views/financial/record/monitor/index.vue | 13 + admin/src/views/login/auth-redirect.vue | 15 + admin/src/views/login/index.vue | 508 + .../maintain/devconfig/combineDataList.vue | 182 + .../views/maintain/devconfig/combineEdit.vue | 118 + .../views/maintain/devconfig/combinedData.vue | 143 + .../maintain/devconfig/combinedDataEdit.vue | 108 + .../maintain/devconfig/configCategotyEdit.vue | 151 + .../maintain/devconfig/configCategroy.vue | 203 + .../views/maintain/devconfig/configList.vue | 23 + admin/src/views/maintain/formConfig/edit.vue | 56 + admin/src/views/maintain/formConfig/index.vue | 142 + admin/src/views/maintain/index.vue | 15 + admin/src/views/maintain/user/index.vue | 110 + admin/src/views/marketing/bargain/index.vue | 13 + admin/src/views/marketing/coupon.vue | 15 + .../marketing/coupon/couponTemplate/index.vue | 15 + admin/src/views/marketing/coupon/index.vue | 15 + .../marketing/coupon/list/creatCoupon.vue | 271 + .../src/views/marketing/coupon/list/index.vue | 295 + .../views/marketing/coupon/record/index.vue | 201 + .../views/marketing/groupBuy/goods/index.vue | 13 + admin/src/views/marketing/groupBuy/index.vue | 15 + .../views/marketing/groupBuy/list/list.vue | 13 + .../views/marketing/integral/config/index.vue | 39 + admin/src/views/marketing/integral/index.vue | 15 + .../src/views/marketing/spike/config/edit.vue | 104 + .../views/marketing/spike/config/index.vue | 167 + .../src/views/marketing/spike/googs/index.vue | 13 + admin/src/views/marketing/spike/index.vue | 15 + admin/src/views/order/index.vue | 565 + admin/src/views/order/orderDetail.vue | 113 + admin/src/views/order/orderSend.vue | 103 + admin/src/views/redirect/index.vue | 12 + admin/src/views/sms/index.vue | 13 + .../sms/smsConfig/components/loginFrom.vue | 174 + .../sms/smsConfig/components/register.vue | 254 + .../sms/smsConfig/components/tableList.vue | 129 + admin/src/views/sms/smsConfig/index.vue | 190 + admin/src/views/sms/smsMessage/index.vue | 39 + admin/src/views/sms/smsPay/index.vue | 256 + admin/src/views/sms/smsTemplate/index.vue | 218 + admin/src/views/store/creatStore/index.vue | 1105 + admin/src/views/store/creatStore/index2.vue | 1055 + admin/src/views/store/index.vue | 274 + admin/src/views/store/sort/index.vue | 23 + admin/src/views/store/storeAttr/index.vue | 188 + .../views/store/storeComment/creatComment.vue | 240 + admin/src/views/store/storeComment/index.vue | 318 + admin/src/views/store/taoBao.vue | 593 + .../administratorAuthority/adminList/edit.vue | 180 + .../adminList/index.vue | 220 + .../identityManager/edit.vue | 110 + .../identityManager/index.vue | 165 + .../administratorAuthority/index.vue | 15 + .../permissionRules/index.vue | 87 + .../logistics/cityList/index.vue | 215 + .../logistics/companyList/index.vue | 266 + .../systemSetting/logistics/config/index.vue | 75 + .../views/systemSetting/logistics/index.vue | 13 + .../shippingTemplates/creatTemplates.vue | 472 + .../logistics/shippingTemplates/index.vue | 190 + .../src/views/systemSetting/setting/index.vue | 254 + .../views/systemSetting/setting/index2.vue | 254 + .../systemStore/clerkList/addClerk.vue | 194 + .../systemStore/clerkList/index.vue | 205 + .../views/systemSetting/systemStore/index.vue | 13 + .../systemSetting/systemStore/order/index.vue | 252 + .../systemStore/point/addPoint.vue | 284 + .../systemSetting/systemStore/point/index.vue | 207 + admin/src/views/user/grade/creatGrade.vue | 148 + admin/src/views/user/grade/index.vue | 185 + admin/src/views/user/group/index.vue | 151 + admin/src/views/user/list/edit.vue | 171 + admin/src/views/user/list/index.vue | 829 + admin/src/views/user/list/userDetails.vue | 366 + admin/src/views/user/notice/index.vue | 15 + admin/tests/unit/.eslintrc.js | 5 + admin/tests/unit/components/Hamburger.spec.js | 18 + admin/tests/unit/components/SvgIcon.spec.js | 22 + admin/tests/unit/utils/formatTime.spec.js | 29 + admin/tests/unit/utils/parseTime.spec.js | 32 + admin/tests/unit/utils/validate.spec.js | 28 + admin/vue.config.js | 132 + app/App.vue | 85 + app/api/activity.js | 182 + app/api/admin.js | 89 + app/api/api.js | 224 + app/api/order.js | 187 + app/api/public.js | 84 + app/api/store.js | 161 + app/api/user.js | 395 + app/components/Authorize.vue | 145 + app/components/Authorize002.vue | 154 + app/components/Loading/index.vue | 57 + app/components/PriceChange/index.vue | 173 + app/components/adc/index.vue | 185 + app/components/addressWindow/index.vue | 184 + app/components/countDown/index.vue | 120 + app/components/couponListWindow/index.vue | 109 + app/components/couponListWindow/备份.vue | 173 + app/components/couponWindow/index.vue | 171 + app/components/easy-upload/easy-upload.vue | 261 + app/components/easy-upload/readme.md | 40 + app/components/emptyPage.vue | 36 + app/components/goodList/index.vue | 143 + app/components/home/index.vue | 116 + app/components/jyf-parser/jyf-parser.vue | 814 + app/components/jyf-parser/libs/CssHandler.js | 102 + .../jyf-parser/libs/MpHtmlParser.js | 577 + app/components/jyf-parser/libs/config.js | 80 + app/components/jyf-parser/libs/handler.sjs | 35 + app/components/jyf-parser/libs/handler.wxs | 44 + app/components/jyf-parser/libs/trees.vue | 476 + .../mpvue-calendar/browser-style.css | 406 + app/components/mpvue-calendar/calendarinit.js | 524 + app/components/mpvue-calendar/icon.css | 15 + .../mpvue-calendar/mpvue-calendar.vue | 1153 + app/components/mpvue-calendar/style.css | 394 + app/components/orderGoods/index.vue | 99 + app/components/payment/index.vue | 300 + app/components/productConSwiper/index.vue | 89 + app/components/productWindow/index.vue | 302 + app/components/promotionGood/index.vue | 110 + app/components/recommend/index.vue | 113 + app/components/shareInfo/index.vue | 47 + app/components/shareRedPackets/index.vue | 57 + app/components/swipers/index.vue | 52 + app/components/tabNav.vue | 186 + app/components/ucharts/component.vue | 165 + app/components/ucharts/ucharts.js | 5658 +++ app/components/ucharts/ucharts.min.js | 1 + app/components/uni-calendar/calendar.js | 546 + .../uni-calendar/uni-calendar-item.vue | 152 + app/components/uni-calendar/uni-calendar.vue | 434 + app/components/uni-calendar/util.js | 327 + app/components/userEvaluation/index.vue | 133 + app/components/vconsole.min.js | 10 + app/components/wPicker/city-data/area.js | 12542 ++++++ app/components/wPicker/city-data/city.js | 1503 + app/components/wPicker/city-data/province.js | 139 + app/components/wPicker/w-picker.js | 681 + app/components/wPicker/w-picker.vue | 1139 + app/config/app.js | 29 + app/config/cache.js | 32 + app/config/socket.js | 8 + app/js_sdk/Sansnn-uQRCode/uqrcode.js | 1380 + app/libs/chat.js | 62 + app/libs/login.js | 61 + app/libs/order.js | 19 + app/libs/routine.js | 141 + app/libs/wechat.js | 268 + app/main.js | 58 + app/manifest.json | 100 + app/mixins/SendVerifyCode.js | 27 + app/package-lock.json | 447 + app/pages.json | 544 + app/pages/activity/bargain/index.vue | 255 + app/pages/activity/goods_bargain/index.vue | 260 + .../activity/goods_bargain_details/index.vue | 1092 + .../activity/goods_combination/index.vue | 228 + .../goods_combination_details/index.vue | 1412 + .../goods_combination_status/index.vue | 875 + app/pages/activity/goods_seckill/index.vue | 358 + .../activity/goods_seckill_details/index.vue | 1205 + app/pages/activity/poster-poster/index.vue | 136 + app/pages/admin/delivery/index.vue | 360 + app/pages/admin/order/index.vue | 268 + app/pages/admin/orderDetail/index.vue | 776 + app/pages/admin/orderList/index.vue | 467 + app/pages/admin/order_cancellation/index.vue | 323 + app/pages/admin/static/scan.gif | Bin 0 -> 195347 bytes app/pages/admin/statistics/index.vue | 631 + app/pages/auth/index.vue | 80 + app/pages/columnGoods/HotNewGoods/index.vue | 144 + app/pages/customer_list/chat.vue | 1021 + app/pages/customer_list/index.vue | 80 + app/pages/first_new_product/index.vue | 94 + app/pages/goods_cate/goods_cate.vue | 251 + app/pages/goods_details/index.vue | 1717 + app/pages/goods_details/index001.vue | 1730 + app/pages/goods_details/index003.vue | 81 + app/pages/goods_list/index.vue | 394 + app/pages/goods_search/index.vue | 219 + app/pages/index/index.vue | 1787 + app/pages/index/index001.vue | 1917 + app/pages/news_details/index.vue | 280 + app/pages/news_list/index.vue | 313 + app/pages/order_addcart/order_addcart.vue | 1082 + app/pages/order_addcart/order_addcart01.vue | 756 + app/pages/order_details/index.vue | 991 + app/pages/order_pay_status/index.vue | 245 + app/pages/promotional_items/index.vue | 8 + app/pages/retrieve_password/index.vue | 123 + app/pages/user/index.vue | 586 + app/pages/users/commission_rank/index.vue | 234 + app/pages/users/goods_comment_con/index.vue | 312 + app/pages/users/goods_comment_list/index.vue | 137 + app/pages/users/goods_details_store/index.vue | 250 + app/pages/users/goods_logistics/index.vue | 279 + app/pages/users/goods_return/index.vue | 205 + app/pages/users/login/index.vue | 372 + app/pages/users/order_confirm/index.vue | 1147 + app/pages/users/order_list/index.vue | 558 + app/pages/users/promoter-list/index.vue | 352 + app/pages/users/promoter-order/index.vue | 226 + app/pages/users/promoter_rank/index.vue | 313 + app/pages/users/retrievePassword/index.vue | 163 + app/pages/users/static/vip.png | Bin 0 -> 725 bytes app/pages/users/static/vip01.png | Bin 0 -> 6100 bytes app/pages/users/static/vip02.png | Bin 0 -> 5864 bytes app/pages/users/static/vip03.png | Bin 0 -> 5959 bytes app/pages/users/static/vip04.png | Bin 0 -> 5585 bytes app/pages/users/static/vip05.png | Bin 0 -> 5769 bytes app/pages/users/user_address/index.vue | 533 + app/pages/users/user_address/index001.vue | 537 + app/pages/users/user_address_list/index.vue | 463 + app/pages/users/user_bill/index.vue | 173 + app/pages/users/user_cash/index.vue | 362 + app/pages/users/user_coupon/index.vue | 135 + app/pages/users/user_get_coupon/index.vue | 160 + .../users/user_goods_collection/index.vue | 232 + app/pages/users/user_info/index.vue | 383 + app/pages/users/user_info/index001.vue | 475 + app/pages/users/user_integral/index.vue | 359 + app/pages/users/user_money/index.vue | 447 + app/pages/users/user_payment/index.vue | 539 + app/pages/users/user_phone/index.vue | 205 + app/pages/users/user_pwd_edit/index.vue | 218 + app/pages/users/user_return_list/index.vue | 185 + app/pages/users/user_sgin/index.vue | 534 + app/pages/users/user_sgin_list/index.vue | 109 + app/pages/users/user_spread_code/index.vue | 410 + app/pages/users/user_spread_money/index.vue | 192 + app/pages/users/user_spread_user/index.vue | 224 + app/pages/users/user_vip/index.vue | 510 + app/pages/users/user_vip/index01.vue | 480 + app/plugin/animate/animate.min.css | 11 + app/plugin/clipboard/clipboard.js | 973 + app/plugin/dayjs/dayjs.min.js | 1 + app/plugin/emoji-awesome/css/apple.min.css | 1 + app/plugin/emoji-awesome/css/emojione.min.css | 1 + app/plugin/emoji-awesome/css/facebook.min.css | 1 + app/plugin/emoji-awesome/css/google.min.css | 1 + .../emoji-awesome/css/messenger.min.css | 1 + app/plugin/emoji-awesome/css/twitter.min.css | 1 + .../img/sheet_apple_64_indexed_256colors.png | Bin 0 -> 1665354 bytes .../img/sheet_emojione_64_indexed_128.png | Bin 0 -> 920068 bytes .../img/sheet_facebook_64_indexed_128.png | Bin 0 -> 1129873 bytes .../img/sheet_google_64_indexed_128.png | Bin 0 -> 965345 bytes .../img/sheet_messenger_64_indexed_128.png | Bin 0 -> 1167266 bytes .../img/sheet_twitter_64_indexed_128.png | Bin 0 -> 882455 bytes app/plugin/image-tools/index.js | 147 + app/plugin/jweixin-module/index.js | 1 + app/static/css/base.css | 367 + app/static/css/guildford.css | 6 + app/static/css/style.scss | 722 + app/static/iconfont/iconfont.css | 864 + app/static/images/1-001.png | Bin 0 -> 1946 bytes app/static/images/1-002.png | Bin 0 -> 1690 bytes app/static/images/2-001.png | Bin 0 -> 1519 bytes app/static/images/2-002.png | Bin 0 -> 1417 bytes app/static/images/3-001.png | Bin 0 -> 2133 bytes app/static/images/3-002.png | Bin 0 -> 1899 bytes app/static/images/4-001.png | Bin 0 -> 2482 bytes app/static/images/4-002.png | Bin 0 -> 2016 bytes app/static/images/aa.jpg | Bin 0 -> 129708 bytes app/static/images/accountBg.png | Bin 0 -> 3094 bytes app/static/images/address.png | Bin 0 -> 2120 bytes app/static/images/alter.png | Bin 0 -> 1921 bytes app/static/images/angle.png | Bin 0 -> 2512 bytes app/static/images/balance.png | Bin 0 -> 2762 bytes app/static/images/barg001.png | Bin 0 -> 2307 bytes app/static/images/barg002.png | Bin 0 -> 25191 bytes app/static/images/bargain.png | Bin 0 -> 1269 bytes app/static/images/bargainBg.jpg | Bin 0 -> 32457 bytes app/static/images/close.gif | Bin 0 -> 18292 bytes app/static/images/code_1.png | Bin 0 -> 855 bytes app/static/images/code_2.png | Bin 0 -> 900 bytes app/static/images/collection.png | Bin 0 -> 2007 bytes app/static/images/coupon.png | Bin 0 -> 1575 bytes app/static/images/crmeb.png | Bin 0 -> 2622 bytes app/static/images/customer.png | Bin 0 -> 1520 bytes app/static/images/del.png | Bin 0 -> 1314 bytes app/static/images/dfh.png | Bin 0 -> 2272 bytes app/static/images/dfk.png | Bin 0 -> 2130 bytes app/static/images/down.png | Bin 0 -> 1247 bytes app/static/images/dpj.png | Bin 0 -> 2112 bytes app/static/images/dsh.png | Bin 0 -> 2016 bytes app/static/images/edit.png | Bin 0 -> 437 bytes app/static/images/empty-box.png | Bin 0 -> 26170 bytes app/static/images/examine.png | Bin 0 -> 8970 bytes app/static/images/explosion-title.png | Bin 0 -> 3012 bytes app/static/images/explosion.png | Bin 0 -> 4862 bytes app/static/images/extension.png | Bin 0 -> 1861 bytes app/static/images/f.png | Bin 0 -> 7127 bytes app/static/images/face.png | Bin 0 -> 3370 bytes app/static/images/gift.png | Bin 0 -> 5522 bytes app/static/images/group01.png | Bin 0 -> 2372 bytes app/static/images/group02.gif | Bin 0 -> 12628 bytes app/static/images/horn.png | Bin 0 -> 1245 bytes app/static/images/keyboard.png | Bin 0 -> 3058 bytes app/static/images/left.png | Bin 0 -> 1303 bytes app/static/images/light.png | Bin 0 -> 42803 bytes app/static/images/line.jpg | Bin 0 -> 7042 bytes app/static/images/ling.png | Bin 0 -> 1417 bytes app/static/images/live-01.png | Bin 0 -> 623 bytes app/static/images/live-02.png | Bin 0 -> 512 bytes app/static/images/live-03.png | Bin 0 -> 609 bytes app/static/images/lock.png | Bin 0 -> 3382 bytes app/static/images/lock2.png | Bin 0 -> 3558 bytes app/static/images/logo.png | Bin 0 -> 2932 bytes app/static/images/logo2.png | Bin 0 -> 24056 bytes app/static/images/medal01.png | Bin 0 -> 3140 bytes app/static/images/medal02.png | Bin 0 -> 3111 bytes app/static/images/medal03.png | Bin 0 -> 3404 bytes app/static/images/member.png | Bin 0 -> 2357 bytes app/static/images/memberCenter.png | Bin 0 -> 1731 bytes app/static/images/money.png | Bin 0 -> 7329 bytes app/static/images/mores.png | Bin 0 -> 1200 bytes app/static/images/news.png | Bin 0 -> 2857 bytes app/static/images/noAddress.png | Bin 0 -> 23548 bytes app/static/images/noCart.png | Bin 0 -> 11158 bytes app/static/images/noCollection.png | Bin 0 -> 24495 bytes app/static/images/noCoupon.png | Bin 0 -> 25213 bytes app/static/images/noEvaluate.png | Bin 0 -> 24918 bytes app/static/images/noNews.png | Bin 0 -> 20651 bytes app/static/images/noOrder.png | Bin 0 -> 20212 bytes app/static/images/noSearch.png | Bin 0 -> 13251 bytes app/static/images/noShopper.png | Bin 0 -> 11049 bytes app/static/images/one.png | Bin 0 -> 5004 bytes app/static/images/open.gif | Bin 0 -> 23525 bytes app/static/images/order1.png | Bin 0 -> 1153 bytes app/static/images/order2.png | Bin 0 -> 1220 bytes app/static/images/order3.png | Bin 0 -> 1150 bytes app/static/images/order4.png | Bin 0 -> 1160 bytes app/static/images/order5.png | Bin 0 -> 1241 bytes app/static/images/orderIndex.png | Bin 0 -> 26152 bytes app/static/images/orderTime.png | Bin 0 -> 6428 bytes app/static/images/phone_1.png | Bin 0 -> 583 bytes app/static/images/plus.png | Bin 0 -> 3548 bytes app/static/images/poster-close.png | Bin 0 -> 2130 bytes app/static/images/posterbackgd.png | Bin 0 -> 20310 bytes app/static/images/priceTag.png | Bin 0 -> 8602 bytes app/static/images/pricetitle.jpg | Bin 0 -> 4010 bytes app/static/images/qh.png | Bin 0 -> 1204 bytes app/static/images/record1.png | Bin 0 -> 1311 bytes app/static/images/record2.png | Bin 0 -> 1647 bytes app/static/images/record3.png | Bin 0 -> 2427 bytes app/static/images/record4.png | Bin 0 -> 2566 bytes app/static/images/red-packets.png | Bin 0 -> 7735 bytes app/static/images/right-icon.png | Bin 0 -> 1271 bytes app/static/images/rushBuy.jpg | Bin 0 -> 3638 bytes app/static/images/score.png | Bin 0 -> 13325 bytes app/static/images/sh.png | Bin 0 -> 4249 bytes app/static/images/share-info.png | Bin 0 -> 7947 bytes app/static/images/shuoming.png | Bin 0 -> 916 bytes app/static/images/sort1.png | Bin 0 -> 1137 bytes app/static/images/sort2.png | Bin 0 -> 1117 bytes app/static/images/sort3.png | Bin 0 -> 1139 bytes app/static/images/spike-icon-001.png | Bin 0 -> 2621 bytes app/static/images/spike-icon-002.gif | Bin 0 -> 9851 bytes app/static/images/spot.png | Bin 0 -> 1452 bytes app/static/images/stars1.png | Bin 0 -> 2999 bytes app/static/images/stars2.png | Bin 0 -> 2260 bytes app/static/images/stars3.png | Bin 0 -> 2999 bytes app/static/images/stop.png | Bin 0 -> 7434 bytes app/static/images/support.png | Bin 0 -> 6087 bytes app/static/images/three.png | Bin 0 -> 5124 bytes app/static/images/time.png | Bin 0 -> 1183 bytes app/static/images/transparent.png | Bin 0 -> 3403 bytes app/static/images/two.png | Bin 0 -> 5071 bytes app/static/images/up.png | Bin 0 -> 1248 bytes app/static/images/user_bg.png | Bin 0 -> 19407 bytes app/static/images/user_menu08.png | Bin 0 -> 916 bytes app/static/images/user_menu09.png | Bin 0 -> 1572 bytes app/static/images/vacancy.png | Bin 0 -> 4029 bytes app/static/images/value.jpg | Bin 0 -> 22382 bytes app/static/images/vip.png | Bin 0 -> 2487 bytes app/static/images/writeOff.jpg | Bin 0 -> 10429 bytes app/static/img/live-logo.gif | Bin 0 -> 91441 bytes app/store/getters.js | 15 + app/store/index.js | 13 + app/store/modules/app.js | 78 + app/store/modules/index.js | 5 + app/uni.scss | 75 + app/utils/SubscribeMessage.js | 110 + app/utils/cache.js | 146 + app/utils/dialog.js | 1 + app/utils/emoji.js | 62 + app/utils/index.js | 84 + app/utils/permission.js | 245 + app/utils/request.js | 69 + app/utils/util.js | 623 + app/utils/validate.js | 30 + app/vue.config.js | 11 + .../.mvn/wrapper/MavenWrapperDownloader.java | 118 + crmeb/.mvn/wrapper/maven-wrapper.jar | Bin 0 -> 50710 bytes crmeb/.mvn/wrapper/maven-wrapper.properties | 2 + crmeb/README.md | 51 + crmeb/crmeb.iml | 216 + crmeb/lib/yly_sdk-1.1.jar | Bin 0 -> 10383 bytes crmeb/mvnw | 310 + crmeb/mvnw.cmd | 182 + crmeb/pom.xml | 439 + .../main/java/com/aop/ControllerAspect.java | 48 + .../main/java/com/common/CheckAdminToken.java | 53 + .../main/java/com/common/CheckFrontToken.java | 48 + .../src/main/java/com/common/CommonPage.java | 69 + .../main/java/com/common/CommonResult.java | 153 + .../java/com/common/PageParamRequest.java | 16 + .../main/java/com/constants/Constants.java | 404 + .../java/com/constants/RegularConstants.java | 100 + .../main/java/com/constants/SmsConstants.java | 91 + .../java/com/constants/WeChatConstants.java | 195 + .../main/java/com/exception/ApiException.java | 27 + .../java/com/exception/CrmebException.java | 26 + .../java/com/exception/ExceptionCodeEnum.java | 32 + .../java/com/exception/ExceptionHandler.java | 8 + .../com/exception/GlobalExceptionHandler.java | 73 + .../main/java/com/filter/ResponseFilter.java | 64 + .../main/java/com/filter/ResponseRouter.java | 34 + .../main/java/com/filter/ResponseWrapper.java | 69 + crmeb/src/main/java/com/im/MessageVo.java | 16 + crmeb/src/main/java/com/im/SocketClient.java | 129 + crmeb/src/main/java/com/im/SocketClient1.java | 104 + crmeb/src/main/java/com/im/SocketClient2.java | 101 + crmeb/src/main/java/com/im/SocketServer.java | 94 + .../com/interceptor/AdminAuthInterceptor.java | 46 + .../interceptor/AdminTokenInterceptor.java | 48 + .../interceptor/FrontTokenInterceptor.java | 44 + .../com/interceptor/SwaggerInterceptor.java | 68 + crmeb/src/main/java/com/utils/CrmebUtil.java | 742 + crmeb/src/main/java/com/utils/DateUtil.java | 521 + crmeb/src/main/java/com/utils/ExcelUtil.java | 354 + .../main/java/com/utils/ImageMergeUtil.java | 140 + crmeb/src/main/java/com/utils/QRCodeUtil.java | 62 + crmeb/src/main/java/com/utils/RedisUtil.java | 292 + .../src/main/java/com/utils/RequestUtil.java | 93 + .../main/java/com/utils/RestTemplateUtil.java | 317 + crmeb/src/main/java/com/utils/SpringUtil.java | 38 + .../main/java/com/utils/ThreadLocalUtil.java | 90 + crmeb/src/main/java/com/utils/UploadUtil.java | 314 + .../java/com/utils/UploadWeChatMediaUtil.java | 94 + crmeb/src/main/java/com/utils/UrlUtil.java | 69 + .../main/java/com/utils/ValidateCodeUtil.java | 203 + .../main/java/com/utils/ValidateFormUtil.java | 188 + crmeb/src/main/java/com/utils/XmlUtil.java | 87 + .../java/com/utils/vo/ImageMergeUtilVo.java | 28 + .../java/com/utils/vo/dateLimitUtilVo.java | 23 + .../java/com/zbkj/crmeb/CrmebApplication.java | 26 + .../article/controller/ArticleController.java | 157 + .../zbkj/crmeb/article/dao/ArticleDao.java | 16 + .../com/zbkj/crmeb/article/model/Article.java | 100 + .../crmeb/article/request/ArticleRequest.java | 75 + .../article/request/ArticleSearchRequest.java | 51 + .../crmeb/article/service/ArticleService.java | 22 + .../service/impl/ArticleServiceImpl.java | 153 + .../com/zbkj/crmeb/article/vo/ArticleVo.java | 104 + .../authorization/controller/adminUser.java | 118 + .../authorization/manager/TokenManager.java | 36 + .../manager/TokenManagerImpl.java | 158 + .../crmeb/authorization/model/TokenModel.java | 51 + .../controller/CategoryController.java | 161 + .../zbkj/crmeb/category/dao/CategoryDao.java | 16 + .../zbkj/crmeb/category/model/Category.java | 58 + .../category/request/CategoryRequest.java | 66 + .../request/CategorySearchRequest.java | 43 + .../category/service/CategoryService.java | 39 + .../service/impl/CategoryServiceImpl.java | 345 + .../crmeb/category/vo/CategoryTreeVo.java | 55 + .../com/zbkj/crmeb/config/CorsConfig.java | 26 + .../com/zbkj/crmeb/config/DruidConfig.java | 48 + .../com/zbkj/crmeb/config/JacksonConfig.java | 25 + .../com/zbkj/crmeb/config/RedisConfig.java | 109 + .../zbkj/crmeb/config/RestTemplateConfig.java | 43 + .../zbkj/crmeb/config/SchedulerConfig.java | 24 + .../com/zbkj/crmeb/config/SwaggerConfig.java | 146 + .../zbkj/crmeb/config/TaskExecutorConfig.java | 96 + .../java/com/zbkj/crmeb/config/WebConfig.java | 144 + .../export/controller/ExcelController.java | 50 + .../crmeb/export/service/ExcelService.java | 16 + .../export/service/impl/ExcelServiceImpl.java | 101 + .../com/zbkj/crmeb/export/vo/ExcelColumn.java | 13 + .../zbkj/crmeb/export/vo/ProductExcelVo.java | 64 + .../express/controller/ExpressController.java | 123 + .../ShippingTemplatesController.java | 104 + .../ShippingTemplatesFreeController.java | 42 + .../ShippingTemplatesRegionController.java | 42 + .../zbkj/crmeb/express/dao/ExpressDao.java | 16 + .../express/dao/ShippingTemplatesDao.java | 16 + .../express/dao/ShippingTemplatesFreeDao.java | 20 + .../dao/ShippingTemplatesRegionDao.java | 20 + .../com/zbkj/crmeb/express/model/Express.java | 47 + .../express/model/ShippingTemplates.java | 55 + .../express/model/ShippingTemplatesFree.java | 68 + .../model/ShippingTemplatesRegion.java | 78 + .../crmeb/express/request/ExpressRequest.java | 50 + .../express/request/ExpressSearchRequest.java | 37 + .../request/ShippingTemplatesFreeRequest.java | 48 + .../ShippingTemplatesRegionRequest.java | 61 + .../request/ShippingTemplatesRequest.java | 61 + .../ShippingTemplatesSearchRequest.java | 34 + .../crmeb/express/service/ExpressService.java | 37 + .../express/service/LogisticService.java | 18 + .../service/ShippingTemplatesFreeService.java | 31 + .../ShippingTemplatesRegionService.java | 32 + .../service/ShippingTemplatesService.java | 34 + .../service/impl/ExpressServiceImpl.java | 100 + .../service/impl/LogisticsServiceImpl.java | 108 + .../ShippingTemplatesFreeServiceImpl.java | 183 + .../ShippingTemplatesRegionServiceImpl.java | 182 + .../impl/ShippingTemplatesServiceImpl.java | 169 + .../express/vo/LogisticsResultListVo.java | 20 + .../crmeb/express/vo/LogisticsResultVo.java | 59 + .../controller/FundsMonitorController.java | 73 + .../controller/UserExtractController.java | 82 + .../controller/UserRechargeController.java | 89 + .../crmeb/finance/dao/UserExtractDao.java | 18 + .../finance/dao/UserFundsMonitorDao.java | 19 + .../crmeb/finance/dao/UserRechargeDao.java | 19 + .../zbkj/crmeb/finance/model/UserExtract.java | 81 + .../crmeb/finance/model/UserFundsMonitor.java | 52 + .../crmeb/finance/model/UserRecharge.java | 64 + .../request/FundsMonitorSearchRequest.java | 62 + .../FundsMonitorUserSearchRequest.java | 41 + .../finance/request/UserExtractRequest.java | 59 + .../request/UserExtractSearchRequest.java | 47 + .../finance/request/UserRechargeRequest.java | 63 + .../request/UserRechargeSearchRequest.java | 47 + .../finance/response/BalanceResponse.java | 50 + .../finance/response/UserExtractResponse.java | 25 + .../finance/service/UserExtractService.java | 38 + .../service/UserFundsMonitorService.java | 19 + .../finance/service/UserRechargeService.java | 30 + .../service/impl/UserExtractServiceImpl.java | 283 + .../impl/UserFundsMonitorServiceImpl.java | 65 + .../service/impl/UserRechargeServiceImpl.java | 150 + .../front/controller/ArticleController.java | 113 + .../front/controller/CartController.java | 146 + .../front/controller/CityController.java | 50 + .../front/controller/CouponController.java | 79 + .../front/controller/ExpressController.java | 49 + .../front/controller/IndexController.java | 82 + .../front/controller/LoginController.java | 103 + .../front/controller/ProductController.java | 111 + .../front/controller/QrCodeController.java | 54 + .../front/controller/StoreController.java | 42 + .../controller/StoreOrderController.java | 252 + .../controller/StoreServiceController.java | 71 + .../controller/UploadFrontController.java | 53 + .../controller/UserAddressController.java | 122 + .../controller/UserCollectController.java | 107 + .../front/controller/UserController.java | 327 + .../controller/UserCouponController.java | 87 + .../controller/UserRechargeController.java | 88 + .../front/controller/UserSignController.java | 111 + .../front/controller/WeChatController.java | 115 + .../zbkj/crmeb/front/request/CartRequest.java | 54 + .../crmeb/front/request/CartResetRequest.java | 34 + .../crmeb/front/request/GetProductReply.java | 27 + .../IndexStoreProductSearchRequest.java | 63 + .../front/request/LoginMobileRequest.java | 47 + .../crmeb/front/request/LoginRequest.java | 40 + .../front/request/OrderAgainRequest.java | 21 + .../front/request/OrderComputedRequest.java | 31 + .../front/request/OrderCreateRequest.java | 70 + .../crmeb/front/request/OrderPayRequest.java | 33 + .../request/OrderRefundApplyRequest.java | 44 + .../request/OrderRefundVerifyRequest.java | 30 + .../crmeb/front/request/PasswordRequest.java | 47 + .../crmeb/front/request/ProductRequest.java | 43 + .../crmeb/front/request/RegisterRequest.java | 51 + .../crmeb/front/request/StoreNearRequest.java | 32 + .../front/request/UserAddressCityRequest.java | 43 + .../front/request/UserAddressDelRequest.java | 34 + .../front/request/UserAddressRequest.java | 56 + .../front/request/UserBindingRequest.java | 41 + .../front/request/UserCollectAllRequest.java | 40 + .../front/request/UserCollectRequest.java | 41 + .../request/UserCouponReceiveRequest.java | 33 + .../crmeb/front/request/UserEditRequest.java | 41 + .../front/request/UserRechargeRequest.java | 57 + .../front/request/UserSignInfoRequest.java | 38 + .../request/UserSpreadPeopleRequest.java | 42 + .../front/request/ValidateCodeRequest.java | 29 + .../front/response/ComputeOrderResponse.java | 23 + .../front/response/ConfirmOrderResponse.java | 52 + .../front/response/IndexInfoItemResponse.java | 66 + .../front/response/IndexInfoResponse.java | 67 + .../response/IndexProductBannerResponse.java | 36 + .../crmeb/front/response/LoginResponse.java | 38 + .../front/response/OrderDataResponse.java | 24 + .../front/response/OrderPayItemResponse.java | 24 + .../front/response/OrderPayResponse.java | 30 + .../front/response/PriceGroupResponse.java | 26 + .../front/response/ProductDetailResponse.java | 63 + .../crmeb/front/response/ProductResponse.java | 60 + .../front/response/StoreNearResponse.java | 36 + .../response/StoreOrderDetailResponse.java | 196 + .../StoreProductReplayCountResponse.java | 56 + .../front/response/UserBalanceResponse.java | 45 + .../UserCenterOrderStatusNumResponse.java | 45 + .../front/response/UserCenterResponse.java | 136 + .../response/UserCommissionResponse.java | 36 + .../response/UserExtractCashResponse.java | 52 + .../response/UserRechargeItemResponse.java | 37 + .../response/UserRechargePaymentResponse.java | 40 + .../front/response/UserRechargeResponse.java | 35 + .../front/response/UserSignInfoResponse.java | 75 + .../response/UserSpreadBannerResponse.java | 36 + .../UserSpreadCommissionResponse.java | 42 + .../UserSpreadOrderItemChildResponse.java | 58 + .../response/UserSpreadOrderItemResponse.java | 38 + .../response/UserSpreadOrderResponse.java | 33 + .../UserSpreadPeopleItemResponse.java | 51 + .../response/UserSpreadPeopleResponse.java | 36 + .../crmeb/front/service/IndexService.java | 23 + .../crmeb/front/service/OrderService.java | 126 + .../crmeb/front/service/ProductService.java | 38 + .../crmeb/front/service/QrCodeService.java | 17 + .../front/service/UserCenterService.java | 66 + .../front/service/impl/IndexServiceImpl.java | 201 + .../front/service/impl/OrderServiceImpl.java | 819 + .../service/impl/ProductServiceImpl.java | 331 + .../front/service/impl/QrCodeServiceImpl.java | 75 + .../service/impl/UserCenterServiceImpl.java | 719 + .../zbkj/crmeb/front/vo/OrderAgainItemVo.java | 30 + .../com/zbkj/crmeb/front/vo/OrderAgainVo.java | 26 + .../com/zbkj/crmeb/front/vo/PriceGroup.java | 14 + .../com/zbkj/crmeb/front/vo/PriceItem.java | 35 + .../controller/StoreCouponController.java | 96 + .../controller/StoreCouponUserController.java | 66 + .../crmeb/marketing/dao/StoreCouponDao.java | 16 + .../marketing/dao/StoreCouponUserDao.java | 16 + .../crmeb/marketing/model/StoreCoupon.java | 96 + .../marketing/model/StoreCouponUser.java | 82 + .../marketing/request/StoreCouponRequest.java | 89 + .../request/StoreCouponSearchRequest.java | 47 + .../request/StoreCouponUserRequest.java | 41 + .../request/StoreCouponUserSearchRequest.java | 48 + .../response/StoreCouponFrontResponse.java | 99 + .../response/StoreCouponInfoResponse.java | 46 + .../response/StoreCouponUserOrder.java | 87 + .../response/StoreCouponUserResponse.java | 91 + .../marketing/service/StoreCouponService.java | 43 + .../service/StoreCouponUserService.java | 52 + .../service/impl/StoreCouponServiceImpl.java | 349 + .../impl/StoreCouponUserServiceImpl.java | 472 + .../java/com/zbkj/crmeb/payment/README.md | 6 + .../controller/CallbackController.java | 66 + .../payment/service/CallbackService.java | 14 + .../payment/service/OrderPayService.java | 19 + .../crmeb/payment/service/PayService.java | 17 + .../payment/service/RechargePayService.java | 17 + .../service/impl/CallbackServiceImpl.java | 105 + .../service/impl/OrderPayServiceImpl.java | 349 + .../service/impl/RechargePayServiceImpl.java | 225 + .../crmeb/payment/vo/wechat/AttachVo.java | 29 + .../crmeb/payment/vo/wechat/CallbackVo.java | 71 + .../CreateOrderH5SceneInfoDetailVo.java | 31 + .../vo/wechat/CreateOrderH5SceneInfoVo.java | 25 + .../vo/wechat/CreateOrderRequestVo.java | 87 + .../vo/wechat/CreateOrderResponseVo.java | 71 + .../crmeb/payment/vo/wechat/PayParamsVo.java | 62 + .../payment/wechat/WeChatPayService.java | 16 + .../wechat/impl/WeChatPayServiceImpl.java | 234 + .../pub/controller/AuthorizationAdmin.java | 80 + .../pub/controller/ImageMergeController.java | 32 + .../pub/controller/RedisTestController.java | 80 + .../controller/WeChatMessageController.java | 53 + .../pub/controller/WeChatPushController.java | 148 + .../sms/controller/SmsRecordController.java | 304 + .../com/zbkj/crmeb/sms/dao/SmsRecordDao.java | 16 + .../com/zbkj/crmeb/sms/model/SmsRecord.java | 78 + .../crmeb/sms/request/PublicTempRequest.java | 46 + .../crmeb/sms/request/RegisterRequest.java | 56 + .../com/zbkj/crmeb/sms/request/SendSmsVo.java | 25 + .../crmeb/sms/request/SmsConfigRequest.java | 55 + .../crmeb/sms/request/SmsLoginRequest.java | 26 + .../crmeb/sms/request/SmsRecordRequest.java | 42 + .../crmeb/sms/service/SmsRecordService.java | 33 + .../zbkj/crmeb/sms/service/SmsService.java | 58 + .../service/impl/SmsRecordServiceImpl.java | 55 + .../sms/service/impl/SmsServiceImpl.java | 684 + .../statistics/controller/HomeController.java | 143 + .../statistics/response/HomeRateResponse.java | 50 + .../response/HomeUserBuyResponse.java | 38 + .../crmeb/statistics/service/HomeService.java | 35 + .../service/impl/HomeServiceImpl.java | 474 + .../controller/RetailShopController.java | 219 + .../controller/StoreBargainController.java | 117 + .../StoreBargainUserController.java | 120 + .../StoreBargainUserHelpController.java | 118 + .../controller/StoreCategoryController.java | 132 + .../StoreCombinationController.java | 119 + .../controller/StoreOrderController.java | 192 + .../StoreOrderStatusController.java | 119 + .../store/controller/StorePinkController.java | 119 + .../StoreProductAttrController.java | 117 + .../StoreProductAttrResultController.java | 117 + .../StoreProductAttrValueController.java | 117 + .../StoreProductCateController.java | 117 + .../controller/StoreProductController.java | 251 + .../StoreProductCouponController.java | 117 + .../StoreProductDescriptionController.java | 117 + .../StoreProductRelationController.java | 123 + .../StoreProductReplyController.java | 149 + .../StoreProductRuleController.java | 118 + .../controller/StoreServiceController.java | 115 + .../controller/StoreServiceLogController.java | 47 + .../zbkj/crmeb/store/dao/StoreBargainDao.java | 16 + .../crmeb/store/dao/StoreBargainUserDao.java | 16 + .../store/dao/StoreBargainUserHelpDao.java | 16 + .../zbkj/crmeb/store/dao/StoreCartDao.java | 16 + .../crmeb/store/dao/StoreCategoryDao.java | 16 + .../crmeb/store/dao/StoreCombinationDao.java | 16 + .../zbkj/crmeb/store/dao/StoreOrderDao.java | 23 + .../crmeb/store/dao/StoreOrderInfoDao.java | 16 + .../crmeb/store/dao/StoreOrderStatusDao.java | 16 + .../zbkj/crmeb/store/dao/StorePinkDao.java | 16 + .../crmeb/store/dao/StoreProductAttrDao.java | 18 + .../store/dao/StoreProductAttrResultDao.java | 16 + .../store/dao/StoreProductAttrValueDao.java | 16 + .../crmeb/store/dao/StoreProductCateDao.java | 16 + .../store/dao/StoreProductCouponDao.java | 17 + .../zbkj/crmeb/store/dao/StoreProductDao.java | 16 + .../store/dao/StoreProductDescriptionDao.java | 16 + .../store/dao/StoreProductRelationDao.java | 21 + .../crmeb/store/dao/StoreProductReplyDao.java | 16 + .../crmeb/store/dao/StoreProductRuleDao.java | 16 + .../zbkj/crmeb/store/dao/StoreServiceDao.java | 16 + .../crmeb/store/dao/StoreServiceLogDao.java | 16 + .../zbkj/crmeb/store/model/StoreBargain.java | 138 + .../crmeb/store/model/StoreBargainUser.java | 60 + .../store/model/StoreBargainUserHelp.java | 51 + .../com/zbkj/crmeb/store/model/StoreCart.java | 71 + .../zbkj/crmeb/store/model/StoreCategory.java | 53 + .../crmeb/store/model/StoreCombination.java | 129 + .../zbkj/crmeb/store/model/StoreOrder.java | 190 + .../crmeb/store/model/StoreOrderInfo.java | 49 + .../crmeb/store/model/StoreOrderStatus.java | 43 + .../com/zbkj/crmeb/store/model/StorePink.java | 79 + .../zbkj/crmeb/store/model/StoreProduct.java | 156 + .../crmeb/store/model/StoreProductAttr.java | 47 + .../store/model/StoreProductAttrResult.java | 55 + .../store/model/StoreProductAttrValue.java | 93 + .../crmeb/store/model/StoreProductCate.java | 52 + .../crmeb/store/model/StoreProductCoupon.java | 52 + .../store/model/StoreProductDescription.java | 46 + .../store/model/StoreProductRelation.java | 54 + .../crmeb/store/model/StoreProductReply.java | 88 + .../crmeb/store/model/StoreProductRule.java | 40 + .../zbkj/crmeb/store/model/StoreService.java | 61 + .../crmeb/store/model/StoreServiceLog.java | 61 + .../store/request/RetailShopRequest.java | 78 + .../request/RetailShopStairUserRequest.java | 36 + .../store/request/StoreBargainRequest.java | 134 + .../request/StoreBargainSearchRequest.java | 134 + .../request/StoreBargainUserHelpRequest.java | 47 + .../StoreBargainUserHelpSearchRequest.java | 47 + .../request/StoreBargainUserRequest.java | 56 + .../StoreBargainUserSearchRequest.java | 57 + .../store/request/StoreCategoryRequest.java | 48 + .../request/StoreCategorySearchRequest.java | 48 + .../request/StoreCombinationRequest.java | 125 + .../StoreCombinationSearchRequest.java | 125 + .../store/request/StoreOrderInfoRequest.java | 35 + .../request/StoreOrderInfoSearchRequest.java | 36 + .../request/StoreOrderRefundRequest.java | 40 + .../store/request/StoreOrderRequest.java | 43 + .../request/StoreOrderSearchRequest.java | 40 + .../store/request/StoreOrderSendRequest.java | 46 + .../request/StoreOrderStatusRequest.java | 36 + .../StoreOrderStatusSearchRequest.java | 36 + .../crmeb/store/request/StorePinkRequest.java | 75 + .../store/request/StorePinkSearchRequest.java | 75 + .../request/StoreProductAttrItemRequest.java | 37 + .../request/StoreProductAttrRequest.java | 35 + .../StoreProductAttrResultRequest.java | 36 + .../StoreProductAttrResultSearchRequest.java | 36 + .../StoreProductAttrSearchRequest.java | 11 + .../StoreProductAttrValueListRequest.java | 36 + .../request/StoreProductAttrValueRequest.java | 97 + .../StoreProductAttrValueSearchRequest.java | 34 + .../request/StoreProductCateRequest.java | 45 + .../StoreProductCateSearchRequest.java | 48 + .../request/StoreProductCouponRequest.java | 29 + .../StoreProductCouponSearchRequest.java | 11 + .../StoreProductDescriptionRequest.java | 33 + .../StoreProductDescriptionSearchRequest.java | 34 + .../request/StoreProductRelationRequest.java | 11 + .../StoreProductRelationSearchRequest.java | 37 + .../request/StoreProductReplyAddRequest.java | 60 + .../StoreProductReplyCommentRequest.java | 37 + .../request/StoreProductReplyRequest.java | 66 + .../StoreProductReplySearchRequest.java | 55 + .../store/request/StoreProductRequest.java | 177 + .../request/StoreProductRuleItemRequest.java | 34 + .../request/StoreProductRuleRequest.java | 38 + .../StoreProductRuleSearchRequest.java | 31 + .../request/StoreProductSearchRequest.java | 63 + .../request/StoreProductStockRequest.java | 40 + .../request/StoreServiceLogSearchRequest.java | 36 + .../store/request/StoreServiceRequest.java | 50 + .../response/RetailShopOrderDataResponse.java | 24 + .../RetailShopStatisticsResponse.java | 24 + .../response/RetailShopUserResponse.java | 192 + .../store/response/StoreCartResponse.java | 86 + .../store/response/StoreCategoryTreeList.java | 38 + .../response/StoreOrderCountItemResponse.java | 67 + .../response/StoreOrderCreateResponse.java | 189 + .../response/StoreOrderInfoResponse.java | 201 + .../response/StoreOrderListResponse.java | 187 + .../store/response/StoreOrderResponse.java | 38 + .../StoreOrderSpreadInfoResponse.java | 41 + .../response/StoreOrderTopItemResponse.java | 44 + .../response/StoreProductAttrResponse.java | 66 + .../StoreProductAttrValueItemResponse.java | 21 + .../StoreProductAttrValueResponse.java | 101 + .../StoreProductCartProductInfoResponse.java | 155 + .../StoreProductRecommendResponse.java | 38 + .../response/StoreProductReplyResponse.java | 71 + .../store/response/StoreProductResponse.java | 184 + .../response/StoreProductRuleResponse.java | 39 + .../StoreProductStoreInfoResponse.java | 155 + .../response/StoreProductTabsHeader.java | 26 + .../crmeb/store/service/OrderTaskService.java | 21 + .../store/service/RetailShopService.java | 57 + .../store/service/StoreBargainService.java | 18 + .../service/StoreBargainUserHelpService.java | 18 + .../service/StoreBargainUserService.java | 18 + .../crmeb/store/service/StoreCartService.java | 97 + .../store/service/StoreCategoryService.java | 21 + .../service/StoreCombinationService.java | 18 + .../store/service/StoreOrderInfoService.java | 31 + .../service/StoreOrderRefundService.java | 15 + .../store/service/StoreOrderService.java | 135 + .../service/StoreOrderStatusService.java | 31 + .../store/service/StoreOrderTaskService.java | 23 + .../crmeb/store/service/StorePinkService.java | 18 + .../StoreProductAttrResultService.java | 24 + .../service/StoreProductAttrService.java | 27 + .../service/StoreProductAttrValueService.java | 63 + .../service/StoreProductCateService.java | 22 + .../service/StoreProductCouponService.java | 38 + .../StoreProductDescriptionService.java | 20 + .../service/StoreProductRelationService.java | 35 + .../service/StoreProductReplyService.java | 33 + .../service/StoreProductRuleService.java | 18 + .../store/service/StoreProductService.java | 117 + .../store/service/StoreServiceLogService.java | 18 + .../store/service/StoreServiceService.java | 17 + .../crmeb/store/service/impl/JSONExample.java | 5139 +++ .../service/impl/OrderTaskServiceImpl.java | 190 + .../service/impl/RetailShopServiceImpl.java | 180 + .../service/impl/StoreBargainServiceImpl.java | 52 + .../impl/StoreBargainUserHelpServiceImpl.java | 52 + .../impl/StoreBargainUserServiceImpl.java | 52 + .../service/impl/StoreCartServiceImpl.java | 370 + .../impl/StoreCategoryServiceImpl.java | 72 + .../impl/StoreCombinationServiceImpl.java | 53 + .../impl/StoreOrderInfoServiceImpl.java | 139 + .../impl/StoreOrderRefundServiceImpl.java | 44 + .../service/impl/StoreOrderServiceImpl.java | 1563 + .../impl/StoreOrderStatusServiceImpl.java | 108 + .../impl/StoreOrderTaskServiceImpl.java | 546 + .../service/impl/StorePinkServiceImpl.java | 52 + .../StoreProductAttrResultServiceImpl.java | 86 + .../impl/StoreProductAttrServiceImpl.java | 101 + .../StoreProductAttrValueServiceImpl.java | 158 + .../impl/StoreProductCateServiceImpl.java | 68 + .../impl/StoreProductCouponServiceImpl.java | 84 + .../StoreProductDescriptionServiceImpl.java | 57 + .../impl/StoreProductRelationServiceImpl.java | 214 + .../impl/StoreProductReplyServiceImpl.java | 315 + .../impl/StoreProductRuleServiceImpl.java | 52 + .../service/impl/StoreProductServiceImpl.java | 1284 + .../impl/StoreServiceLogServiceImpl.java | 52 + .../service/impl/StoreServiceServiceImpl.java | 46 + .../crmeb/store/utilService/OrderUtils.java | 864 + .../zbkj/crmeb/store/vo/StoreOrderInfoVo.java | 49 + .../store/vo/StoreProductRelationCountVo.java | 34 + .../controller/SystemAdminController.java | 140 + .../SystemAttachmentController.java | 141 + .../controller/SystemCityController.java | 144 + .../controller/SystemConfigController.java | 95 + .../controller/SystemFormTempController.java | 132 + .../controller/SystemGroupController.java | 117 + .../controller/SystemGroupDataController.java | 111 + .../controller/SystemLogController.java | 116 + .../SystemNoticeAdminController.java | 116 + .../controller/SystemNoticeController.java | 116 + .../controller/SystemRoleController.java | 140 + .../controller/SystemStoreController.java | 140 + .../SystemStoreStaffController.java | 136 + .../controller/SystemUserLevelController.java | 138 + .../controller/SystemUserTaskController.java | 116 + .../SystemWriteOffOrderController.java | 48 + .../zbkj/crmeb/system/dao/SystemAdminDao.java | 16 + .../crmeb/system/dao/SystemAttachmentDao.java | 16 + .../zbkj/crmeb/system/dao/SystemCityDao.java | 16 + .../crmeb/system/dao/SystemConfigDao.java | 16 + .../zbkj/crmeb/system/dao/SystemFileDao.java | 16 + .../crmeb/system/dao/SystemFormTempDao.java | 16 + .../zbkj/crmeb/system/dao/SystemGroupDao.java | 16 + .../crmeb/system/dao/SystemGroupDataDao.java | 16 + .../zbkj/crmeb/system/dao/SystemLogDao.java | 16 + .../system/dao/SystemNoticeAdminDao.java | 16 + .../crmeb/system/dao/SystemNoticeDao.java | 16 + .../zbkj/crmeb/system/dao/SystemRoleDao.java | 16 + .../zbkj/crmeb/system/dao/SystemStoreDao.java | 22 + .../crmeb/system/dao/SystemStoreStaffDao.java | 16 + .../crmeb/system/dao/SystemUserLevelDao.java | 16 + .../crmeb/system/dao/SystemUserTaskDao.java | 16 + .../zbkj/crmeb/system/model/SystemAdmin.java | 69 + .../crmeb/system/model/SystemAttachment.java | 62 + .../zbkj/crmeb/system/model/SystemCity.java | 68 + .../zbkj/crmeb/system/model/SystemConfig.java | 67 + .../zbkj/crmeb/system/model/SystemFile.java | 50 + .../crmeb/system/model/SystemFormTemp.java | 51 + .../zbkj/crmeb/system/model/SystemGroup.java | 51 + .../crmeb/system/model/SystemGroupData.java | 54 + .../zbkj/crmeb/system/model/SystemLog.java | 62 + .../zbkj/crmeb/system/model/SystemNotice.java | 59 + .../crmeb/system/model/SystemNoticeAdmin.java | 59 + .../zbkj/crmeb/system/model/SystemRole.java | 53 + .../zbkj/crmeb/system/model/SystemStore.java | 79 + .../crmeb/system/model/SystemStoreStaff.java | 61 + .../crmeb/system/model/SystemUserLevel.java | 68 + .../crmeb/system/model/SystemUserTask.java | 64 + .../system/request/SystemAdminAddRequest.java | 78 + .../request/SystemAdminLoginRequest.java | 33 + .../system/request/SystemAdminRequest.java | 71 + .../request/SystemAttachmentMoveRequest.java | 9 + .../request/SystemAttachmentRequest.java | 46 + .../system/request/SystemCityRequest.java | 40 + .../request/SystemCitySearchRequest.java | 37 + .../system/request/SystemConfigRequest.java | 57 + .../system/request/SystemFileRequest.java | 51 + .../request/SystemFormCheckRequest.java | 50 + .../request/SystemFormItemCheckRequest.java | 39 + .../system/request/SystemFormTempRequest.java | 46 + .../request/SystemFormTempSearchRequest.java | 35 + .../request/SystemGroupDataRequest.java | 38 + .../request/SystemGroupDataSearchRequest.java | 40 + .../system/request/SystemGroupRequest.java | 41 + .../request/SystemGroupSearchRequest.java | 34 + .../system/request/SystemLogRequest.java | 63 + .../request/SystemNoticeAdminRequest.java | 60 + .../system/request/SystemNoticeRequest.java | 60 + .../system/request/SystemRoleRequest.java | 45 + .../request/SystemRoleSearchRequest.java | 42 + .../system/request/SystemStoreRequest.java | 68 + .../request/SystemStoreSearchRequest.java | 36 + .../request/SystemStoreStaffRequest.java | 56 + .../request/SystemUserLevelRequest.java | 75 + .../request/SystemUserLevelSearchRequest.java | 44 + .../system/request/SystemUserTaskRequest.java | 65 + .../SystemWriteOffOrderSearchRequest.java | 37 + .../response/StoreOrderItemResponse.java | 136 + .../system/response/SystemAdminResponse.java | 43 + ...stemGroupDataAdminLoginBannerResponse.java | 30 + ...SystemGroupDataOrderStatusPicResponse.java | 33 + .../response/SystemStoreStaffResponse.java | 68 + .../response/SystemWriteOffOrderResponse.java | 44 + .../system/service/SystemAdminService.java | 64 + .../service/SystemAttachmentService.java | 36 + .../service/SystemCityAsyncService.java | 16 + .../system/service/SystemCityService.java | 30 + .../system/service/SystemConfigService.java | 46 + .../system/service/SystemFileService.java | 17 + .../system/service/SystemFormTempService.java | 21 + .../service/SystemGroupDataService.java | 31 + .../system/service/SystemGroupService.java | 19 + .../system/service/SystemLogService.java | 17 + .../service/SystemNoticeAdminService.java | 17 + .../system/service/SystemNoticeService.java | 17 + .../system/service/SystemRoleService.java | 23 + .../system/service/SystemStoreService.java | 40 + .../service/SystemStoreStaffService.java | 22 + .../service/SystemUserLevelService.java | 25 + .../system/service/SystemUserTaskService.java | 19 + .../service/impl/SystemAdminServiceImpl.java | 193 + .../impl/SystemAttachmentServiceImpl.java | 186 + .../impl/SystemCityAsyncServiceImpl.java | 109 + .../service/impl/SystemCityServiceImpl.java | 165 + .../service/impl/SystemConfigServiceImpl.java | 306 + .../service/impl/SystemFileServiceImpl.java | 34 + .../impl/SystemFormTempServiceImpl.java | 129 + .../impl/SystemGroupDataServiceImpl.java | 231 + .../service/impl/SystemGroupServiceImpl.java | 55 + .../service/impl/SystemLogServiceImpl.java | 34 + .../impl/SystemNoticeAdminServiceImpl.java | 34 + .../service/impl/SystemNoticeServiceImpl.java | 34 + .../service/impl/SystemRoleServiceImpl.java | 125 + .../service/impl/SystemStoreServiceImpl.java | 266 + .../impl/SystemStoreStaffServiceImpl.java | 125 + .../impl/SystemUserLevelServiceImpl.java | 129 + .../impl/SystemUserTaskServiceImpl.java | 78 + .../crmeb/system/vo/SystemCityTreeVo.java | 65 + .../SystemConfigFormItemConfigRegListVo.java | 33 + .../vo/SystemConfigFormItemConfigVo.java | 71 + .../system/vo/SystemConfigFormItemVo.java | 51 + .../crmeb/system/vo/SystemConfigFormVo.java | 64 + .../vo/SystemGroupDataMenuUserConfigVo.java | 39 + .../vo/SystemGroupDataRechargeConfigVo.java | 37 + .../vo/SystemGroupDataSignConfigVo.java | 47 + .../crmeb/system/vo/SystemStoreNearVo.java | 80 + .../java/com/zbkj/crmeb/task/AsyncCloud.java | 36 + .../com/zbkj/crmeb/task/AsyncSmsSend.java | 41 + .../task/AsyncWeChatProgramTempMessage.java | 36 + .../task/AsyncWeChatPublicTempMessage.java | 39 + .../crmeb/task/order/OrderCancelByUser.java | 37 + .../crmeb/task/order/OrderCompleteByUser.java | 36 + .../crmeb/task/order/OrderDeleteByUser.java | 36 + .../crmeb/task/order/OrderRefundByUser.java | 36 + .../crmeb/task/order/OrderTakeByUser.java | 36 + .../upload/controller/UploadController.java | 88 + .../crmeb/upload/service/AsyncService.java | 15 + .../zbkj/crmeb/upload/service/CosService.java | 13 + .../zbkj/crmeb/upload/service/OssService.java | 13 + .../crmeb/upload/service/QiNiuService.java | 13 + .../crmeb/upload/service/UploadService.java | 17 + .../upload/service/impl/AsyncServiceImpl.java | 245 + .../upload/service/impl/CosServiceImpl.java | 82 + .../upload/service/impl/OssServiceImpl.java | 76 + .../upload/service/impl/QiNiuServiceImpl.java | 66 + .../service/impl/UploadServiceImpl.java | 92 + .../com/zbkj/crmeb/upload/vo/CloudVo.java | 39 + .../zbkj/crmeb/upload/vo/FileResultVo.java | 32 + .../user/controller/UserBillController.java | 116 + .../crmeb/user/controller/UserController.java | 194 + .../user/controller/UserGroupController.java | 114 + .../user/controller/UserLevelController.java | 89 + .../user/controller/UserTagController.java | 115 + .../zbkj/crmeb/user/dao/UserAddressDao.java | 16 + .../com/zbkj/crmeb/user/dao/UserBillDao.java | 17 + .../java/com/zbkj/crmeb/user/dao/UserDao.java | 24 + .../com/zbkj/crmeb/user/dao/UserGroupDao.java | 16 + .../com/zbkj/crmeb/user/dao/UserLevelDao.java | 16 + .../zbkj/crmeb/user/dao/UserNoticeDao.java | 16 + .../com/zbkj/crmeb/user/dao/UserSignDao.java | 16 + .../com/zbkj/crmeb/user/dao/UserTagDao.java | 16 + .../crmeb/user/dao/UserTaskFinishDao.java | 16 + .../com/zbkj/crmeb/user/dao/UserTokenDao.java | 16 + .../java/com/zbkj/crmeb/user/model/User.java | 148 + .../zbkj/crmeb/user/model/UserAddress.java | 84 + .../com/zbkj/crmeb/user/model/UserBill.java | 77 + .../com/zbkj/crmeb/user/model/UserGroup.java | 37 + .../com/zbkj/crmeb/user/model/UserLevel.java | 66 + .../com/zbkj/crmeb/user/model/UserNotice.java | 58 + .../com/zbkj/crmeb/user/model/UserSign.java | 57 + .../com/zbkj/crmeb/user/model/UserTag.java | 37 + .../zbkj/crmeb/user/model/UserTaskFinish.java | 54 + .../com/zbkj/crmeb/user/model/UserToken.java | 53 + .../request/RegisterThirdUserRequest.java | 49 + .../crmeb/user/request/UserBillRequest.java | 63 + .../user/request/UserBillSearchRequest.java | 68 + .../crmeb/user/request/UserGroupRequest.java | 36 + .../crmeb/user/request/UserLevelRequest.java | 71 + .../user/request/UserLevelSearchRequest.java | 68 + .../crmeb/user/request/UserNoticeRequest.java | 59 + .../user/request/UserNoticeSearchRequest.java | 59 + .../user/request/UserOperateFundsRequest.java | 62 + .../UserOperateIntegralMoneyRequest.java | 58 + .../zbkj/crmeb/user/request/UserRequest.java | 71 + .../crmeb/user/request/UserSearchRequest.java | 80 + .../crmeb/user/request/UserTagRequest.java | 36 + .../zbkj/crmeb/user/response/TopDetail.java | 27 + .../crmeb/user/response/UserBillResponse.java | 78 + .../crmeb/user/response/UserResponse.java | 126 + .../user/service/UserAddressService.java | 43 + .../crmeb/user/service/UserBillService.java | 48 + .../crmeb/user/service/UserGroupService.java | 21 + .../crmeb/user/service/UserLevelService.java | 29 + .../crmeb/user/service/UserNoticeService.java | 18 + .../zbkj/crmeb/user/service/UserService.java | 131 + .../crmeb/user/service/UserSignService.java | 35 + .../crmeb/user/service/UserTagService.java | 21 + .../user/service/UserTaskFinishService.java | 19 + .../crmeb/user/service/UserTokenService.java | 26 + .../service/impl/UserAddressServiceImpl.java | 195 + .../service/impl/UserBillServiceImpl.java | 499 + .../service/impl/UserGroupServiceImpl.java | 81 + .../service/impl/UserLevelServiceImpl.java | 197 + .../service/impl/UserNoticeServiceImpl.java | 45 + .../user/service/impl/UserServiceImpl.java | 1325 + .../service/impl/UserSignServiceImpl.java | 388 + .../user/service/impl/UserTagServiceImpl.java | 85 + .../impl/UserTaskFinishServiceImpl.java | 89 + .../service/impl/UserTokenServiceImpl.java | 102 + .../crmeb/user/vo/UserOperateFundsVo.java | 38 + .../zbkj/crmeb/user/vo/UserSignMonthVo.java | 41 + .../com/zbkj/crmeb/user/vo/UserSignVo.java | 47 + .../controller/ValidateCodeController.java | 57 + .../validatecode/model/ValidateCode.java | 38 + .../service/ValidateCodeService.java | 17 + .../service/impl/ValidateCodeServiceImpl.java | 72 + .../RoutineAccessTokenController.java | 116 + .../controller/RoutineFormIdController.java | 116 + .../controller/RoutineQrcodeController.java | 116 + .../controller/TemplateMessageController.java | 150 + .../wechat/controller/WeChatController.java | 123 + .../controller/WeChatUserTagsController.java | 177 + .../controller/WechatMediaController.java | 63 + .../controller/WechatMessageController.java | 116 + .../controller/WechatQrcodeController.java | 116 + .../controller/WechatReplyController.java | 146 + .../controller/WechatUserController.java | 41 + .../wechat/dao/RoutineAccessTokenDao.java | 16 + .../crmeb/wechat/dao/RoutineFormIdDao.java | 16 + .../crmeb/wechat/dao/RoutineQrcodeDao.java | 16 + .../crmeb/wechat/dao/TemplateMessageDao.java | 17 + .../zbkj/crmeb/wechat/dao/WechatMediaDao.java | 16 + .../crmeb/wechat/dao/WechatMessageDao.java | 16 + .../crmeb/wechat/dao/WechatQrcodeDao.java | 16 + .../zbkj/crmeb/wechat/dao/WechatReplyDao.java | 16 + .../wechat/model/RoutineAccessToken.java | 48 + .../crmeb/wechat/model/RoutineFormId.java | 54 + .../crmeb/wechat/model/RoutineQrcode.java | 60 + .../crmeb/wechat/model/TemplateMessage.java | 62 + .../zbkj/crmeb/wechat/model/WechatMedia.java | 58 + .../crmeb/wechat/model/WechatMessage.java | 52 + .../zbkj/crmeb/wechat/model/WechatQrcode.java | 67 + .../zbkj/crmeb/wechat/model/WechatReply.java | 55 + .../request/RoutineAccessTokenRequest.java | 39 + .../RoutineAccessTokenSearchRequest.java | 34 + .../wechat/request/RoutineFormIdRequest.java | 44 + .../request/RoutineFormIdSearchRequest.java | 45 + .../wechat/request/RoutineQrcodeRequest.java | 47 + .../request/RoutineQrcodeSearchRequest.java | 56 + .../request/TemplateMessageRequest.java | 32 + .../request/TemplateMessageSearchRequest.java | 25 + .../wechat/request/WechatMediaRequest.java | 46 + .../request/WechatMediaSearchRequest.java | 50 + .../wechat/request/WechatMessageRequest.java | 44 + .../request/WechatMessageSearchRequest.java | 44 + .../wechat/request/WechatQrcodeRequest.java | 59 + .../request/WechatQrcodeSearchRequest.java | 59 + .../wechat/request/WechatReplyRequest.java | 46 + .../request/WechatReplySearchRequest.java | 38 + ...WeChatAuthorizeLoginGetOpenIdResponse.java | 47 + .../WeChatAuthorizeLoginUserInfoResponse.java | 59 + ...rogramAuthorizeLoginGetOpenIdResponse.java | 47 + .../service/RoutineAccessTokenService.java | 18 + .../wechat/service/RoutineFormIdService.java | 18 + .../wechat/service/RoutineQrcodeService.java | 18 + .../service/TemplateMessageService.java | 30 + .../crmeb/wechat/service/WeChatService.java | 77 + .../wechat/service/WechatMediaService.java | 16 + .../wechat/service/WechatMessageService.java | 18 + .../wechat/service/WechatQrcodeService.java | 18 + .../wechat/service/WechatReplyService.java | 29 + .../wechat/service/WechatUserService.java | 13 + .../impl/RoutineAccessTokenServiceImpl.java | 45 + .../impl/RoutineFormIdServiceImpl.java | 45 + .../impl/RoutineQrcodeServiceImpl.java | 45 + .../impl/TemplateMessageServiceImpl.java | 257 + .../service/impl/WeChatServiceImpl.java | 898 + .../service/impl/WechatMediaServiceImpl.java | 170 + .../impl/WechatMessageServiceImpl.java | 45 + .../service/impl/WechatQrcodeServiceImpl.java | 45 + .../service/impl/WechatReplyServiceImpl.java | 158 + .../service/impl/WechatUserServiceImpl.java | 100 + .../zbkj/crmeb/wechat/vo/MediaCountVo.java | 33 + .../zbkj/crmeb/wechat/vo/MediaDetailVo.java | 30 + .../wechat/vo/SendTemplateMessageItemVo.java | 26 + .../wechat/vo/SendTemplateMessageVo.java | 27 + .../vo/TemplateMessageIndustryItemVo.java | 20 + .../wechat/vo/TemplateMessageIndustryVo.java | 22 + .../crmeb/wechat/vo/TemplateMessageVo.java | 27 + .../service/WeChatMessageService.java | 16 + .../impl/WeChatMessageServiceImpl.java | 216 + .../crmeb/wechatMessage/vo/BaseMessageVo.java | 26 + .../wechatMessage/vo/MessageImageItemVo.java | 21 + .../wechatMessage/vo/MessageImageVo.java | 26 + .../vo/MessageNewsItemDetailVo.java | 33 + .../wechatMessage/vo/MessageNewsItemVo.java | 21 + .../crmeb/wechatMessage/vo/MessageNewsVo.java | 32 + .../wechatMessage/vo/MessageReplyDataVo.java | 28 + .../crmeb/wechatMessage/vo/MessageTextVo.java | 27 + .../wechatMessage/vo/MessageVoiceItemVo.java | 21 + .../wechatMessage/vo/MessageVoiceVo.java | 26 + crmeb/src/main/resources/application-prod.yml | 55 + crmeb/src/main/resources/application.yml | 77 + crmeb/src/main/resources/logback-spring.xml | 233 + .../mapper/article/ArticleMapper.xml | 5 + .../mapper/category/CategoryMapper.xml | 5 + .../mapper/express/ExpressMapper.xml | 5 + .../express/ShippingTemplatesFreeMapper.xml | 8 + .../express/ShippingTemplatesMapper.xml | 5 + .../express/ShippingTemplatesRegionMapper.xml | 8 + .../mapper/finance/UserExtractMapper.xml | 4 + .../mapper/finance/UserFundsMonitorMapper.xml | 23 + .../mapper/finance/UserRechargeMapper.xml | 11 + .../mapper/marketing/StoreCouponMapper.xml | 5 + .../marketing/StoreCouponUserMapper.xml | 5 + .../resources/mapper/sms/SmsRecordMapper.xml | 5 + .../mapper/store/StoreBargainMapper.xml | 5 + .../store/StoreBargainUserHelpMapper.xml | 5 + .../mapper/store/StoreBargainUserMapper.xml | 5 + .../mapper/store/StoreCartMapper.xml | 5 + .../mapper/store/StoreCategoryMapper.xml | 5 + .../mapper/store/StoreCombinationMapper.xml | 5 + .../mapper/store/StoreOrderInfoMapper.xml | 5 + .../mapper/store/StoreOrderMapper.xml | 14 + .../mapper/store/StoreOrderStatusMapper.xml | 5 + .../mapper/store/StorePinkMapper.xml | 5 + .../mapper/store/StoreProductAttrMapper.xml | 13 + .../store/StoreProductAttrResultMapper.xml | 5 + .../store/StoreProductAttrValueMapper.xml | 5 + .../mapper/store/StoreProductCateMapper.xml | 5 + .../mapper/store/StoreProductCouponMapper.xml | 5 + .../store/StoreProductDescriptionMapper.xml | 5 + .../mapper/store/StoreProductMapper.xml | 5 + .../store/StoreProductRelationMapper.xml | 5 + .../mapper/store/StoreProductReplyMapper.xml | 5 + .../mapper/store/StoreProductRuleMapper.xml | 5 + .../mapper/store/StoreServiceLogMapper.xml | 5 + .../mapper/store/StoreServiceMapper.xml | 5 + .../mapper/system/SystemAdminMapper.xml | 5 + .../mapper/system/SystemAttachmentMapper.xml | 5 + .../mapper/system/SystemCityMapper.xml | 5 + .../mapper/system/SystemConfigMapper.xml | 5 + .../mapper/system/SystemConfigTabMapper.xml | 5 + .../mapper/system/SystemFileMapper.xml | 5 + .../mapper/system/SystemFormTempMapper.xml | 5 + .../mapper/system/SystemGroupDataMapper.xml | 5 + .../mapper/system/SystemGroupMapper.xml | 5 + .../mapper/system/SystemLogMapper.xml | 5 + .../mapper/system/SystemNoticeAdminMapper.xml | 5 + .../mapper/system/SystemNoticeMapper.xml | 5 + .../mapper/system/SystemRoleMapper.xml | 5 + .../mapper/system/SystemStoreMapper.xml | 8 + .../mapper/system/SystemStoreStaffMapper.xml | 5 + .../mapper/system/SystemUserLevelMapper.xml | 5 + .../mapper/system/SystemUserTaskMapper.xml | 5 + .../mapper/user/UserAddressMapper.xml | 5 + .../resources/mapper/user/UserBillMapper.xml | 4 + .../resources/mapper/user/UserGroupMapper.xml | 5 + .../resources/mapper/user/UserLevelMapper.xml | 5 + .../main/resources/mapper/user/UserMapper.xml | 25 + .../mapper/user/UserNoticeMapper.xml | 5 + .../resources/mapper/user/UserSignMapper.xml | 5 + .../resources/mapper/user/UserTagMapper.xml | 5 + .../mapper/user/UserTaskFinishMapper.xml | 5 + .../resources/mapper/user/UserTokenMapper.xml | 5 + .../wechat/RoutineAccessTokenMapper.xml | 5 + .../mapper/wechat/RoutineFormIdMapper.xml | 5 + .../mapper/wechat/RoutineQrcodeMapper.xml | 5 + .../mapper/wechat/TemplateMessageMapper.xml | 5 + .../mapper/wechat/WechatMediaMapper.xml | 5 + .../mapper/wechat/WechatMessageMapper.xml | 5 + .../mapper/wechat/WechatQrcodeMapper.xml | 5 + .../mapper/wechat/WechatReplyMapper.xml | 5 + .../resources/templates/controller.java.vm | 114 + crmeb/src/main/resources/templates/mapper.vm | 16 + crmeb/src/main/webapp/index.jsp | 31 + .../com/zbkj/crmeb/CrmebApplicationTests.java | 24 + .../StoreProductRelationServiceImplTest.java | 5 + .../StoreProductReplyServiceImplTest.java | 7 + .../service/impl/UserServiceImplTest.java | 7 + crmeb/start.sh | 132 + crmeb_java_v1.0.sql | 32071 ++++++++++++++++ 1885 files changed, 376936 insertions(+), 2 deletions(-) create mode 100644 admin/.editorconfig create mode 100644 admin/.env.development create mode 100644 admin/.env.production create mode 100644 admin/.env.staging create mode 100644 admin/.eslintignore create mode 100644 admin/.eslintrc.js create mode 100644 admin/.travis.yml create mode 100644 admin/LICENSE create mode 100644 admin/README.ZBKJ.md create mode 100644 admin/README.es.md create mode 100644 admin/README.ja.md create mode 100644 admin/README.md create mode 100644 admin/README.zh-CN.md create mode 100644 admin/babel.config.js create mode 100644 admin/build/index.js create mode 100644 admin/jest.config.js create mode 100644 admin/jsconfig.json create mode 100644 admin/mock/article.js create mode 100644 admin/mock/index.js create mode 100644 admin/mock/mock-server.js create mode 100644 admin/mock/remote-search.js create mode 100644 admin/mock/role/index.js create mode 100644 admin/mock/role/routes.js create mode 100644 admin/mock/user.js create mode 100644 admin/package-lock.json create mode 100644 admin/package.json create mode 100644 admin/plop-templates/component/index.hbs create mode 100644 admin/plop-templates/component/prompt.js create mode 100644 admin/plop-templates/store/index.hbs create mode 100644 admin/plop-templates/store/prompt.js create mode 100644 admin/plop-templates/utils.js create mode 100644 admin/plop-templates/view/index.hbs create mode 100644 admin/plop-templates/view/prompt.js create mode 100644 admin/plopfile.js create mode 100644 admin/postcss.config.js create mode 100644 admin/public/UEditor/dialogs/anchor/anchor.html create mode 100644 admin/public/UEditor/dialogs/attachment/attachment.css create mode 100644 admin/public/UEditor/dialogs/attachment/attachment.html create mode 100644 admin/public/UEditor/dialogs/attachment/attachment.js create mode 100644 admin/public/UEditor/dialogs/attachment/fileTypeImages/icon_chm.gif create mode 100644 admin/public/UEditor/dialogs/attachment/fileTypeImages/icon_default.png create mode 100644 admin/public/UEditor/dialogs/attachment/fileTypeImages/icon_doc.gif create mode 100644 admin/public/UEditor/dialogs/attachment/fileTypeImages/icon_exe.gif create mode 100644 admin/public/UEditor/dialogs/attachment/fileTypeImages/icon_jpg.gif create mode 100644 admin/public/UEditor/dialogs/attachment/fileTypeImages/icon_mp3.gif create mode 100644 admin/public/UEditor/dialogs/attachment/fileTypeImages/icon_mv.gif create mode 100644 admin/public/UEditor/dialogs/attachment/fileTypeImages/icon_pdf.gif create mode 100644 admin/public/UEditor/dialogs/attachment/fileTypeImages/icon_ppt.gif create mode 100644 admin/public/UEditor/dialogs/attachment/fileTypeImages/icon_psd.gif create mode 100644 admin/public/UEditor/dialogs/attachment/fileTypeImages/icon_rar.gif create mode 100644 admin/public/UEditor/dialogs/attachment/fileTypeImages/icon_txt.gif create mode 100644 admin/public/UEditor/dialogs/attachment/fileTypeImages/icon_xls.gif create mode 100644 admin/public/UEditor/dialogs/attachment/images/alignicon.gif create mode 100644 admin/public/UEditor/dialogs/attachment/images/alignicon.png create mode 100644 admin/public/UEditor/dialogs/attachment/images/bg.png create mode 100644 admin/public/UEditor/dialogs/attachment/images/file-icons.gif create mode 100644 admin/public/UEditor/dialogs/attachment/images/file-icons.png create mode 100644 admin/public/UEditor/dialogs/attachment/images/icons.gif create mode 100644 admin/public/UEditor/dialogs/attachment/images/icons.png create mode 100644 admin/public/UEditor/dialogs/attachment/images/image.png create mode 100644 admin/public/UEditor/dialogs/attachment/images/progress.png create mode 100644 admin/public/UEditor/dialogs/attachment/images/success.gif create mode 100644 admin/public/UEditor/dialogs/attachment/images/success.png create mode 100644 admin/public/UEditor/dialogs/background/background.css create mode 100644 admin/public/UEditor/dialogs/background/background.html create mode 100644 admin/public/UEditor/dialogs/background/background.js create mode 100644 admin/public/UEditor/dialogs/background/images/bg.png create mode 100644 admin/public/UEditor/dialogs/background/images/success.png create mode 100644 admin/public/UEditor/dialogs/charts/chart.config.js create mode 100644 admin/public/UEditor/dialogs/charts/charts.css create mode 100644 admin/public/UEditor/dialogs/charts/charts.html create mode 100644 admin/public/UEditor/dialogs/charts/charts.js create mode 100644 admin/public/UEditor/dialogs/charts/images/charts0.png create mode 100644 admin/public/UEditor/dialogs/charts/images/charts1.png create mode 100644 admin/public/UEditor/dialogs/charts/images/charts2.png create mode 100644 admin/public/UEditor/dialogs/charts/images/charts3.png create mode 100644 admin/public/UEditor/dialogs/charts/images/charts4.png create mode 100644 admin/public/UEditor/dialogs/charts/images/charts5.png create mode 100644 admin/public/UEditor/dialogs/emotion/emotion.css create mode 100644 admin/public/UEditor/dialogs/emotion/emotion.html create mode 100644 admin/public/UEditor/dialogs/emotion/emotion.js create mode 100644 admin/public/UEditor/dialogs/emotion/images/0.gif create mode 100644 admin/public/UEditor/dialogs/emotion/images/bface.gif create mode 100644 admin/public/UEditor/dialogs/emotion/images/cface.gif create mode 100644 admin/public/UEditor/dialogs/emotion/images/fface.gif create mode 100644 admin/public/UEditor/dialogs/emotion/images/jxface2.gif create mode 100644 admin/public/UEditor/dialogs/emotion/images/neweditor-tab-bg.png create mode 100644 admin/public/UEditor/dialogs/emotion/images/tface.gif create mode 100644 admin/public/UEditor/dialogs/emotion/images/wface.gif create mode 100644 admin/public/UEditor/dialogs/emotion/images/yface.gif create mode 100644 admin/public/UEditor/dialogs/gmap/gmap.html create mode 100644 admin/public/UEditor/dialogs/help/help.css create mode 100644 admin/public/UEditor/dialogs/help/help.html create mode 100644 admin/public/UEditor/dialogs/help/help.js create mode 100644 admin/public/UEditor/dialogs/insertframe/insertframe.html create mode 100644 admin/public/UEditor/dialogs/internal.js create mode 100644 admin/public/UEditor/dialogs/link/link.html create mode 100644 admin/public/UEditor/dialogs/map/map.html create mode 100644 admin/public/UEditor/dialogs/map/show.html create mode 100644 admin/public/UEditor/dialogs/music/music.css create mode 100644 admin/public/UEditor/dialogs/music/music.html create mode 100644 admin/public/UEditor/dialogs/music/music.js create mode 100644 admin/public/UEditor/dialogs/preview/preview.html create mode 100644 admin/public/UEditor/dialogs/scrawl/images/addimg.png create mode 100644 admin/public/UEditor/dialogs/scrawl/images/brush.png create mode 100644 admin/public/UEditor/dialogs/scrawl/images/delimg.png create mode 100644 admin/public/UEditor/dialogs/scrawl/images/delimgH.png create mode 100644 admin/public/UEditor/dialogs/scrawl/images/empty.png create mode 100644 admin/public/UEditor/dialogs/scrawl/images/emptyH.png create mode 100644 admin/public/UEditor/dialogs/scrawl/images/eraser.png create mode 100644 admin/public/UEditor/dialogs/scrawl/images/redo.png create mode 100644 admin/public/UEditor/dialogs/scrawl/images/redoH.png create mode 100644 admin/public/UEditor/dialogs/scrawl/images/scale.png create mode 100644 admin/public/UEditor/dialogs/scrawl/images/scaleH.png create mode 100644 admin/public/UEditor/dialogs/scrawl/images/size.png create mode 100644 admin/public/UEditor/dialogs/scrawl/images/undo.png create mode 100644 admin/public/UEditor/dialogs/scrawl/images/undoH.png create mode 100644 admin/public/UEditor/dialogs/scrawl/scrawl.css create mode 100644 admin/public/UEditor/dialogs/scrawl/scrawl.html create mode 100644 admin/public/UEditor/dialogs/scrawl/scrawl.js create mode 100644 admin/public/UEditor/dialogs/searchreplace/searchreplace.html create mode 100644 admin/public/UEditor/dialogs/searchreplace/searchreplace.js create mode 100644 admin/public/UEditor/dialogs/snapscreen/snapscreen.html create mode 100644 admin/public/UEditor/dialogs/spechars/spechars.html create mode 100644 admin/public/UEditor/dialogs/spechars/spechars.js create mode 100644 admin/public/UEditor/dialogs/table/dragicon.png create mode 100644 admin/public/UEditor/dialogs/table/edittable.css create mode 100644 admin/public/UEditor/dialogs/table/edittable.html create mode 100644 admin/public/UEditor/dialogs/table/edittable.js create mode 100644 admin/public/UEditor/dialogs/table/edittd.html create mode 100644 admin/public/UEditor/dialogs/table/edittip.html create mode 100644 admin/public/UEditor/dialogs/template/config.js create mode 100644 admin/public/UEditor/dialogs/template/images/bg.gif create mode 100644 admin/public/UEditor/dialogs/template/images/pre0.png create mode 100644 admin/public/UEditor/dialogs/template/images/pre1.png create mode 100644 admin/public/UEditor/dialogs/template/images/pre2.png create mode 100644 admin/public/UEditor/dialogs/template/images/pre3.png create mode 100644 admin/public/UEditor/dialogs/template/images/pre4.png create mode 100644 admin/public/UEditor/dialogs/template/template.css create mode 100644 admin/public/UEditor/dialogs/template/template.html create mode 100644 admin/public/UEditor/dialogs/template/template.js create mode 100644 admin/public/UEditor/dialogs/video/images/bg.png create mode 100644 admin/public/UEditor/dialogs/video/images/center_focus.jpg create mode 100644 admin/public/UEditor/dialogs/video/images/file-icons.gif create mode 100644 admin/public/UEditor/dialogs/video/images/file-icons.png create mode 100644 admin/public/UEditor/dialogs/video/images/icons.gif create mode 100644 admin/public/UEditor/dialogs/video/images/icons.png create mode 100644 admin/public/UEditor/dialogs/video/images/image.png create mode 100644 admin/public/UEditor/dialogs/video/images/left_focus.jpg create mode 100644 admin/public/UEditor/dialogs/video/images/none_focus.jpg create mode 100644 admin/public/UEditor/dialogs/video/images/progress.png create mode 100644 admin/public/UEditor/dialogs/video/images/right_focus.jpg create mode 100644 admin/public/UEditor/dialogs/video/images/success.gif create mode 100644 admin/public/UEditor/dialogs/video/images/success.png create mode 100644 admin/public/UEditor/dialogs/video/video.css create mode 100644 admin/public/UEditor/dialogs/video/video.html create mode 100644 admin/public/UEditor/dialogs/video/video.js create mode 100644 admin/public/UEditor/dialogs/webapp/webapp.html create mode 100644 admin/public/UEditor/dialogs/wordimage/tangram.js create mode 100644 admin/public/UEditor/dialogs/wordimage/wordimage.html create mode 100644 admin/public/UEditor/dialogs/wordimage/wordimage.js create mode 100644 admin/public/UEditor/index.html create mode 100644 admin/public/UEditor/lang/en/en.js create mode 100644 admin/public/UEditor/lang/en/images/addimage.png create mode 100644 admin/public/UEditor/lang/en/images/alldeletebtnhoverskin.png create mode 100644 admin/public/UEditor/lang/en/images/alldeletebtnupskin.png create mode 100644 admin/public/UEditor/lang/en/images/background.png create mode 100644 admin/public/UEditor/lang/en/images/button.png create mode 100644 admin/public/UEditor/lang/en/images/copy.png create mode 100644 admin/public/UEditor/lang/en/images/deletedisable.png create mode 100644 admin/public/UEditor/lang/en/images/deleteenable.png create mode 100644 admin/public/UEditor/lang/en/images/listbackground.png create mode 100644 admin/public/UEditor/lang/en/images/localimage.png create mode 100644 admin/public/UEditor/lang/en/images/music.png create mode 100644 admin/public/UEditor/lang/en/images/rotateleftdisable.png create mode 100644 admin/public/UEditor/lang/en/images/rotateleftenable.png create mode 100644 admin/public/UEditor/lang/en/images/rotaterightdisable.png create mode 100644 admin/public/UEditor/lang/en/images/rotaterightenable.png create mode 100644 admin/public/UEditor/lang/en/images/upload.png create mode 100644 admin/public/UEditor/lang/zh-cn/images/copy.png create mode 100644 admin/public/UEditor/lang/zh-cn/images/localimage.png create mode 100644 admin/public/UEditor/lang/zh-cn/images/music.png create mode 100644 admin/public/UEditor/lang/zh-cn/images/upload.png create mode 100644 admin/public/UEditor/lang/zh-cn/zh-cn.js create mode 100644 admin/public/UEditor/themes/default/css/ueditor.css create mode 100644 admin/public/UEditor/themes/default/css/ueditor.min.css create mode 100644 admin/public/UEditor/themes/default/dialogbase.css create mode 100644 admin/public/UEditor/themes/default/images/anchor.gif create mode 100644 admin/public/UEditor/themes/default/images/arrow.png create mode 100644 admin/public/UEditor/themes/default/images/arrow_down.png create mode 100644 admin/public/UEditor/themes/default/images/arrow_up.png create mode 100644 admin/public/UEditor/themes/default/images/button-bg.gif create mode 100644 admin/public/UEditor/themes/default/images/cancelbutton.gif create mode 100644 admin/public/UEditor/themes/default/images/charts.png create mode 100644 admin/public/UEditor/themes/default/images/cursor_h.gif create mode 100644 admin/public/UEditor/themes/default/images/cursor_h.png create mode 100644 admin/public/UEditor/themes/default/images/cursor_v.gif create mode 100644 admin/public/UEditor/themes/default/images/cursor_v.png create mode 100644 admin/public/UEditor/themes/default/images/dialog-title-bg.png create mode 100644 admin/public/UEditor/themes/default/images/filescan.png create mode 100644 admin/public/UEditor/themes/default/images/highlighted.gif create mode 100644 admin/public/UEditor/themes/default/images/icons-all.gif create mode 100644 admin/public/UEditor/themes/default/images/icons.gif create mode 100644 admin/public/UEditor/themes/default/images/icons.png create mode 100644 admin/public/UEditor/themes/default/images/loaderror.png create mode 100644 admin/public/UEditor/themes/default/images/loading.gif create mode 100644 admin/public/UEditor/themes/default/images/lock.gif create mode 100644 admin/public/UEditor/themes/default/images/neweditor-tab-bg.png create mode 100644 admin/public/UEditor/themes/default/images/pagebreak.gif create mode 100644 admin/public/UEditor/themes/default/images/scale.png create mode 100644 admin/public/UEditor/themes/default/images/sortable.png create mode 100644 admin/public/UEditor/themes/default/images/spacer.gif create mode 100644 admin/public/UEditor/themes/default/images/sparator_v.png create mode 100644 admin/public/UEditor/themes/default/images/table-cell-align.png create mode 100644 admin/public/UEditor/themes/default/images/tangram-colorpicker.png create mode 100644 admin/public/UEditor/themes/default/images/toolbar_bg.png create mode 100644 admin/public/UEditor/themes/default/images/unhighlighted.gif create mode 100644 admin/public/UEditor/themes/default/images/upload.png create mode 100644 admin/public/UEditor/themes/default/images/videologo.gif create mode 100644 admin/public/UEditor/themes/default/images/word.gif create mode 100644 admin/public/UEditor/themes/default/images/wordpaste.png create mode 100644 admin/public/UEditor/themes/iframe.css create mode 100644 admin/public/UEditor/third-party/SyntaxHighlighter/shCore.js create mode 100644 admin/public/UEditor/third-party/SyntaxHighlighter/shCoreDefault.css create mode 100644 admin/public/UEditor/third-party/codemirror/codemirror.css create mode 100644 admin/public/UEditor/third-party/codemirror/codemirror.js create mode 100644 admin/public/UEditor/third-party/highcharts/adapters/mootools-adapter.js create mode 100644 admin/public/UEditor/third-party/highcharts/adapters/mootools-adapter.src.js create mode 100644 admin/public/UEditor/third-party/highcharts/adapters/prototype-adapter.js create mode 100644 admin/public/UEditor/third-party/highcharts/adapters/prototype-adapter.src.js create mode 100644 admin/public/UEditor/third-party/highcharts/adapters/standalone-framework.js create mode 100644 admin/public/UEditor/third-party/highcharts/adapters/standalone-framework.src.js create mode 100644 admin/public/UEditor/third-party/highcharts/highcharts-more.js create mode 100644 admin/public/UEditor/third-party/highcharts/highcharts-more.src.js create mode 100644 admin/public/UEditor/third-party/highcharts/highcharts.js create mode 100644 admin/public/UEditor/third-party/highcharts/highcharts.src.js create mode 100644 admin/public/UEditor/third-party/highcharts/modules/annotations.js create mode 100644 admin/public/UEditor/third-party/highcharts/modules/annotations.src.js create mode 100644 admin/public/UEditor/third-party/highcharts/modules/canvas-tools.js create mode 100644 admin/public/UEditor/third-party/highcharts/modules/canvas-tools.src.js create mode 100644 admin/public/UEditor/third-party/highcharts/modules/data.js create mode 100644 admin/public/UEditor/third-party/highcharts/modules/data.src.js create mode 100644 admin/public/UEditor/third-party/highcharts/modules/drilldown.js create mode 100644 admin/public/UEditor/third-party/highcharts/modules/drilldown.src.js create mode 100644 admin/public/UEditor/third-party/highcharts/modules/exporting.js create mode 100644 admin/public/UEditor/third-party/highcharts/modules/exporting.src.js create mode 100644 admin/public/UEditor/third-party/highcharts/modules/funnel.js create mode 100644 admin/public/UEditor/third-party/highcharts/modules/funnel.src.js create mode 100644 admin/public/UEditor/third-party/highcharts/modules/heatmap.js create mode 100644 admin/public/UEditor/third-party/highcharts/modules/heatmap.src.js create mode 100644 admin/public/UEditor/third-party/highcharts/modules/map.js create mode 100644 admin/public/UEditor/third-party/highcharts/modules/map.src.js create mode 100644 admin/public/UEditor/third-party/highcharts/modules/no-data-to-display.js create mode 100644 admin/public/UEditor/third-party/highcharts/modules/no-data-to-display.src.js create mode 100644 admin/public/UEditor/third-party/highcharts/themes/dark-blue.js create mode 100644 admin/public/UEditor/third-party/highcharts/themes/dark-green.js create mode 100644 admin/public/UEditor/third-party/highcharts/themes/gray.js create mode 100644 admin/public/UEditor/third-party/highcharts/themes/grid.js create mode 100644 admin/public/UEditor/third-party/highcharts/themes/skies.js create mode 100644 admin/public/UEditor/third-party/jquery-1.10.2.js create mode 100644 admin/public/UEditor/third-party/jquery-1.10.2.min.js create mode 100644 admin/public/UEditor/third-party/jquery-1.10.2.min.map create mode 100644 admin/public/UEditor/third-party/snapscreen/UEditorSnapscreen.exe create mode 100644 admin/public/UEditor/third-party/video-js/font/vjs.eot create mode 100644 admin/public/UEditor/third-party/video-js/font/vjs.svg create mode 100644 admin/public/UEditor/third-party/video-js/font/vjs.ttf create mode 100644 admin/public/UEditor/third-party/video-js/font/vjs.woff create mode 100644 admin/public/UEditor/third-party/video-js/video-js.css create mode 100644 admin/public/UEditor/third-party/video-js/video-js.min.css create mode 100644 admin/public/UEditor/third-party/video-js/video.dev.js create mode 100644 admin/public/UEditor/third-party/video-js/video.js create mode 100644 admin/public/UEditor/third-party/webuploader/webuploader.css create mode 100644 admin/public/UEditor/third-party/webuploader/webuploader.custom.js create mode 100644 admin/public/UEditor/third-party/webuploader/webuploader.custom.min.js create mode 100644 admin/public/UEditor/third-party/webuploader/webuploader.flashonly.js create mode 100644 admin/public/UEditor/third-party/webuploader/webuploader.flashonly.min.js create mode 100644 admin/public/UEditor/third-party/webuploader/webuploader.html5only.js create mode 100644 admin/public/UEditor/third-party/webuploader/webuploader.html5only.min.js create mode 100644 admin/public/UEditor/third-party/webuploader/webuploader.js create mode 100644 admin/public/UEditor/third-party/webuploader/webuploader.min.js create mode 100644 admin/public/UEditor/third-party/webuploader/webuploader.withoutimage.js create mode 100644 admin/public/UEditor/third-party/webuploader/webuploader.withoutimage.min.js create mode 100644 admin/public/UEditor/third-party/xss.min.js create mode 100644 admin/public/UEditor/third-party/zeroclipboard/ZeroClipboard.js create mode 100644 admin/public/UEditor/third-party/zeroclipboard/ZeroClipboard.min.js create mode 100644 admin/public/UEditor/ueditor.all.js create mode 100644 admin/public/UEditor/ueditor.all.min.js create mode 100644 admin/public/UEditor/ueditor.config.js create mode 100644 admin/public/UEditor/ueditor.parse.js create mode 100644 admin/public/UEditor/ueditor.parse.min.js create mode 100644 admin/public/favicon.ico create mode 100644 admin/public/index.html create mode 100644 admin/public/preview.html create mode 100644 admin/src/App.vue create mode 100644 admin/src/api/article.js create mode 100644 admin/src/api/categoryApi.js create mode 100644 admin/src/api/configApi.js create mode 100644 admin/src/api/configTabApi.js create mode 100644 admin/src/api/dashboard.js create mode 100644 admin/src/api/distribution.js create mode 100644 admin/src/api/logistics.js create mode 100644 admin/src/api/marketing.js create mode 100644 admin/src/api/order.js create mode 100644 admin/src/api/qiniu.js create mode 100644 admin/src/api/remote-search.js create mode 100644 admin/src/api/role.js create mode 100644 admin/src/api/roleApi.js create mode 100644 admin/src/api/sms.js create mode 100644 admin/src/api/store.js create mode 100644 admin/src/api/storePoint.js create mode 100644 admin/src/api/system.js create mode 100644 admin/src/api/systemConfig.js create mode 100644 admin/src/api/systemFormConfig.js create mode 100644 admin/src/api/systemGroup.js create mode 100644 admin/src/api/systemGroupData.js create mode 100644 admin/src/api/systemSetting.js create mode 100644 admin/src/api/systemadmin.js create mode 100644 admin/src/api/user.js create mode 100644 admin/src/api/wxApi.js create mode 100644 admin/src/assets/401_images/401.gif create mode 100644 admin/src/assets/404_images/404.png create mode 100644 admin/src/assets/404_images/404_cloud.png create mode 100644 admin/src/assets/custom-theme/fonts/element-icons.ttf create mode 100644 admin/src/assets/custom-theme/fonts/element-icons.woff create mode 100644 admin/src/assets/custom-theme/index.css create mode 100644 admin/src/assets/imgs/bg.jpg create mode 100644 admin/src/assets/imgs/head.gif create mode 100644 admin/src/assets/imgs/mobilefoot.png create mode 100644 admin/src/assets/imgs/mobilehead.png create mode 100644 admin/src/assets/imgs/moren.jpg create mode 100644 admin/src/assets/imgs/no.png create mode 100644 admin/src/components/BackToTop/index.vue create mode 100644 admin/src/components/Breadcrumb/index.vue create mode 100644 admin/src/components/Category/edit.vue create mode 100644 admin/src/components/Category/info.vue create mode 100644 admin/src/components/Category/list.vue create mode 100644 admin/src/components/Charts/Keyboard.vue create mode 100644 admin/src/components/Charts/LineMarker.vue create mode 100644 admin/src/components/Charts/MixChart.vue create mode 100644 admin/src/components/Charts/mixins/resize.js create mode 100644 admin/src/components/DragSelect/index.vue create mode 100644 admin/src/components/Dropzone/index.vue create mode 100644 admin/src/components/ErrorLog/index.vue create mode 100644 admin/src/components/FormGenerator/components/SvgIcon/index.vue create mode 100644 admin/src/components/FormGenerator/components/generator/config.js create mode 100644 admin/src/components/FormGenerator/components/generator/css.js create mode 100644 admin/src/components/FormGenerator/components/generator/drawingDefalut.js create mode 100644 admin/src/components/FormGenerator/components/generator/html.js create mode 100644 admin/src/components/FormGenerator/components/generator/js.js create mode 100644 admin/src/components/FormGenerator/components/generator/ruleTrigger.js create mode 100644 admin/src/components/FormGenerator/components/parser/Parser.vue create mode 100644 admin/src/components/FormGenerator/components/parser/README.md create mode 100644 admin/src/components/FormGenerator/components/parser/ZBParser.vue create mode 100644 admin/src/components/FormGenerator/components/parser/example/Index.vue create mode 100644 admin/src/components/FormGenerator/components/parser/index.js create mode 100644 admin/src/components/FormGenerator/components/parser/package.json create mode 100644 admin/src/components/FormGenerator/components/render/package.json create mode 100644 admin/src/components/FormGenerator/components/render/render.js create mode 100644 admin/src/components/FormGenerator/components/render/slots/el-button.js create mode 100644 admin/src/components/FormGenerator/components/render/slots/el-checkbox-group.js create mode 100644 admin/src/components/FormGenerator/components/render/slots/el-input.js create mode 100644 admin/src/components/FormGenerator/components/render/slots/el-radio-group.js create mode 100644 admin/src/components/FormGenerator/components/render/slots/el-select.js create mode 100644 admin/src/components/FormGenerator/components/render/slots/el-upload.js create mode 100644 admin/src/components/FormGenerator/components/tinymce/config.js create mode 100644 admin/src/components/FormGenerator/components/tinymce/index.vue create mode 100644 admin/src/components/FormGenerator/components/tinymce/zh_CN.js create mode 100644 admin/src/components/FormGenerator/index/CodeTypeDialog.vue create mode 100644 admin/src/components/FormGenerator/index/DraggableItem.vue create mode 100644 admin/src/components/FormGenerator/index/FormDrawer.vue create mode 100644 admin/src/components/FormGenerator/index/Home.vue create mode 100644 admin/src/components/FormGenerator/index/IconsDialog.vue create mode 100644 admin/src/components/FormGenerator/index/JsonDrawer.vue create mode 100644 admin/src/components/FormGenerator/index/ResourceDialog.vue create mode 100644 admin/src/components/FormGenerator/index/RightPanel.vue create mode 100644 admin/src/components/FormGenerator/index/TreeNodeDialog.vue create mode 100644 admin/src/components/FormGenerator/index/index.vue create mode 100644 admin/src/components/FormGenerator/preview/main.js create mode 100644 admin/src/components/FormGenerator/styles/home.scss create mode 100644 admin/src/components/FormGenerator/styles/index.scss create mode 100644 admin/src/components/FormGenerator/styles/mixin.scss create mode 100644 admin/src/components/FormGenerator/utils/db.js create mode 100644 admin/src/components/FormGenerator/utils/icon.json create mode 100644 admin/src/components/FormGenerator/utils/index.js create mode 100644 admin/src/components/FormGenerator/utils/loadBeautifier.js create mode 100644 admin/src/components/FormGenerator/utils/loadMonaco.js create mode 100644 admin/src/components/FormGenerator/utils/loadScript.js create mode 100644 admin/src/components/FormGenerator/utils/loadTinymce.js create mode 100644 admin/src/components/Hamburger/index.vue create mode 100644 admin/src/components/HeaderSearch/index.vue create mode 100644 admin/src/components/ImageCropper/index.vue create mode 100644 admin/src/components/ImageCropper/utils/data2blob.js create mode 100644 admin/src/components/ImageCropper/utils/effectRipple.js create mode 100644 admin/src/components/ImageCropper/utils/language.js create mode 100644 admin/src/components/ImageCropper/utils/mimes.js create mode 100644 admin/src/components/JsonEditor/index.vue create mode 100644 admin/src/components/Kanban/index.vue create mode 100644 admin/src/components/MDinput/index.vue create mode 100644 admin/src/components/MarkdownEditor/default-options.js create mode 100644 admin/src/components/MarkdownEditor/index.vue create mode 100644 admin/src/components/Pagination/index.vue create mode 100644 admin/src/components/PanThumb/index.vue create mode 100644 admin/src/components/RightPanel/index.vue create mode 100644 admin/src/components/Screenfull/index.vue create mode 100644 admin/src/components/Share/DropdownMenu.vue create mode 100644 admin/src/components/SizeSelect/index.vue create mode 100644 admin/src/components/Sticky/index.vue create mode 100644 admin/src/components/SvgIcon/index.vue create mode 100644 admin/src/components/TextHoverEffect/Mallki.vue create mode 100644 admin/src/components/ThemePicker/index.vue create mode 100644 admin/src/components/Tinymce/components/EditorImage.vue create mode 100644 admin/src/components/Tinymce/dynamicLoadScript.js create mode 100644 admin/src/components/Tinymce/index.vue create mode 100644 admin/src/components/Tinymce/plugins.js create mode 100644 admin/src/components/Tinymce/toolbar.js create mode 100644 admin/src/components/Upload/SingleImage.vue create mode 100644 admin/src/components/Upload/SingleImage2.vue create mode 100644 admin/src/components/Upload/SingleImage3.vue create mode 100644 admin/src/components/Upload/uploadFile.vue create mode 100644 admin/src/components/UploadExcel/index.vue create mode 100644 admin/src/components/articleList/articleFrom/index.js create mode 100644 admin/src/components/articleList/articleFrom/index.vue create mode 100644 admin/src/components/articleList/index.vue create mode 100644 admin/src/components/attrFrom/index.vue create mode 100644 admin/src/components/cards/index.vue create mode 100644 admin/src/components/couponList/couponFrom/index.js create mode 100644 admin/src/components/couponList/couponFrom/index.vue create mode 100644 admin/src/components/couponList/index.vue create mode 100644 admin/src/components/customerInfo/index.vue create mode 100644 admin/src/components/echarts/index.vue create mode 100644 admin/src/components/goodList/goodListFrom/index.js create mode 100644 admin/src/components/goodList/goodListFrom/index.vue create mode 100644 admin/src/components/goodList/index.vue create mode 100644 admin/src/components/iconFrom/element-icons.js create mode 100644 admin/src/components/iconFrom/index.vue create mode 100644 admin/src/components/ueditorFrom/index.vue create mode 100644 admin/src/components/uploadPicture/forGenrator/index.vue create mode 100644 admin/src/components/uploadPicture/index.vue create mode 100644 admin/src/components/uploadPicture/uploadFrom/index.js create mode 100644 admin/src/components/uploadPicture/uploadFrom/index.vue create mode 100644 admin/src/directive/clipboard/clipboard.js create mode 100644 admin/src/directive/clipboard/index.js create mode 100644 admin/src/directive/el-drag-dialog/drag.js create mode 100644 admin/src/directive/el-drag-dialog/index.js create mode 100644 admin/src/directive/el-table/adaptive.js create mode 100644 admin/src/directive/el-table/index.js create mode 100644 admin/src/directive/permission/index.js create mode 100644 admin/src/directive/permission/permission.js create mode 100644 admin/src/directive/sticky.js create mode 100644 admin/src/directive/waves/index.js create mode 100644 admin/src/directive/waves/waves.css create mode 100644 admin/src/directive/waves/waves.js create mode 100644 admin/src/filters/commFilter.js create mode 100644 admin/src/filters/index.js create mode 100644 admin/src/filters/order.js create mode 100644 admin/src/filters/user.js create mode 100644 admin/src/icons/index.js create mode 100644 admin/src/icons/svg/404.svg create mode 100644 admin/src/icons/svg/bug.svg create mode 100644 admin/src/icons/svg/chart.svg create mode 100644 admin/src/icons/svg/clipboard.svg create mode 100644 admin/src/icons/svg/component.svg create mode 100644 admin/src/icons/svg/dashboard.svg create mode 100644 admin/src/icons/svg/documentation.svg create mode 100644 admin/src/icons/svg/drag.svg create mode 100644 admin/src/icons/svg/edit.svg create mode 100644 admin/src/icons/svg/education.svg create mode 100644 admin/src/icons/svg/email.svg create mode 100644 admin/src/icons/svg/example.svg create mode 100644 admin/src/icons/svg/excel.svg create mode 100644 admin/src/icons/svg/exit-fullscreen.svg create mode 100644 admin/src/icons/svg/eye-open.svg create mode 100644 admin/src/icons/svg/eye.svg create mode 100644 admin/src/icons/svg/form.svg create mode 100644 admin/src/icons/svg/fullscreen.svg create mode 100644 admin/src/icons/svg/guide.svg create mode 100644 admin/src/icons/svg/icon.svg create mode 100644 admin/src/icons/svg/international.svg create mode 100644 admin/src/icons/svg/language.svg create mode 100644 admin/src/icons/svg/link.svg create mode 100644 admin/src/icons/svg/list.svg create mode 100644 admin/src/icons/svg/lock.svg create mode 100644 admin/src/icons/svg/message.svg create mode 100644 admin/src/icons/svg/money.svg create mode 100644 admin/src/icons/svg/nested.svg create mode 100644 admin/src/icons/svg/password.svg create mode 100644 admin/src/icons/svg/pdf.svg create mode 100644 admin/src/icons/svg/people.svg create mode 100644 admin/src/icons/svg/peoples.svg create mode 100644 admin/src/icons/svg/qq.svg create mode 100644 admin/src/icons/svg/search.svg create mode 100644 admin/src/icons/svg/shopping.svg create mode 100644 admin/src/icons/svg/size.svg create mode 100644 admin/src/icons/svg/skill.svg create mode 100644 admin/src/icons/svg/star.svg create mode 100644 admin/src/icons/svg/tab.svg create mode 100644 admin/src/icons/svg/table.svg create mode 100644 admin/src/icons/svg/theme.svg create mode 100644 admin/src/icons/svg/tree-table.svg create mode 100644 admin/src/icons/svg/tree.svg create mode 100644 admin/src/icons/svg/user.svg create mode 100644 admin/src/icons/svg/wechat.svg create mode 100644 admin/src/icons/svg/zip.svg create mode 100644 admin/src/icons/svgo.yml create mode 100644 admin/src/layout/components/AppMain.vue create mode 100644 admin/src/layout/components/Navbar.vue create mode 100644 admin/src/layout/components/Settings/index.vue create mode 100644 admin/src/layout/components/Sidebar/FixiOSBug.js create mode 100644 admin/src/layout/components/Sidebar/Item.vue create mode 100644 admin/src/layout/components/Sidebar/Link.vue create mode 100644 admin/src/layout/components/Sidebar/Logo.vue create mode 100644 admin/src/layout/components/Sidebar/SidebarItem.vue create mode 100644 admin/src/layout/components/Sidebar/index.vue create mode 100644 admin/src/layout/components/TagsView/ScrollPane.vue create mode 100644 admin/src/layout/components/TagsView/index.vue create mode 100644 admin/src/layout/components/index.js create mode 100644 admin/src/layout/index.vue create mode 100644 admin/src/layout/mixin/ResizeHandler.js create mode 100644 admin/src/libs/modal-attr.js create mode 100644 admin/src/libs/modal-coupon.js create mode 100644 admin/src/libs/modal-icon.js create mode 100644 admin/src/libs/public.js create mode 100644 admin/src/main.js create mode 100644 admin/src/permission.js create mode 100644 admin/src/router/index.js create mode 100644 admin/src/router/modules/appSetting.js create mode 100644 admin/src/router/modules/charts.js create mode 100644 admin/src/router/modules/content.js create mode 100644 admin/src/router/modules/distribution.js create mode 100644 admin/src/router/modules/financial.js create mode 100644 admin/src/router/modules/maintain.js create mode 100644 admin/src/router/modules/marketing.js create mode 100644 admin/src/router/modules/operation.js create mode 100644 admin/src/router/modules/order.js create mode 100644 admin/src/router/modules/store.js create mode 100644 admin/src/router/modules/user.js create mode 100644 admin/src/settings.js create mode 100644 admin/src/store/getters.js create mode 100644 admin/src/store/index.js create mode 100644 admin/src/store/modules/app.js create mode 100644 admin/src/store/modules/errorLog.js create mode 100644 admin/src/store/modules/permission.js create mode 100644 admin/src/store/modules/settings.js create mode 100644 admin/src/store/modules/tagsView.js create mode 100644 admin/src/store/modules/user.js create mode 100644 admin/src/styles/btn.scss create mode 100644 admin/src/styles/element-ui.scss create mode 100644 admin/src/styles/element-variables.scss create mode 100644 admin/src/styles/index.scss create mode 100644 admin/src/styles/mixin.scss create mode 100644 admin/src/styles/sidebar.scss create mode 100644 admin/src/styles/styles.scss create mode 100644 admin/src/styles/transition.scss create mode 100644 admin/src/styles/variables.scss create mode 100644 admin/src/utils/ZBKJIutil.js create mode 100644 admin/src/utils/auth.js create mode 100644 admin/src/utils/city.js create mode 100644 admin/src/utils/clipboard.js create mode 100644 admin/src/utils/constants.js create mode 100644 admin/src/utils/error-log.js create mode 100644 admin/src/utils/get-page-title.js create mode 100644 admin/src/utils/index.js create mode 100644 admin/src/utils/open-window.js create mode 100644 admin/src/utils/permission.js create mode 100644 admin/src/utils/request.js create mode 100644 admin/src/utils/scroll-to.js create mode 100644 admin/src/utils/settingMer.js create mode 100644 admin/src/utils/validate.js create mode 100644 admin/src/vendor/Export2Excel.js create mode 100644 admin/src/vendor/Export2Zip.js create mode 100644 admin/src/views/appSetting/index.vue create mode 100644 admin/src/views/appSetting/routine/index.vue create mode 100644 admin/src/views/appSetting/routine/routineTemplate.vue create mode 100644 admin/src/views/appSetting/wxAccount/index.vue create mode 100644 admin/src/views/appSetting/wxAccount/reply/follow/index.vue create mode 100644 admin/src/views/appSetting/wxAccount/reply/index.vue create mode 100644 admin/src/views/appSetting/wxAccount/reply/keyword/index.vue create mode 100644 admin/src/views/appSetting/wxAccount/wxMenus.vue create mode 100644 admin/src/views/appSetting/wxAccount/wxTemplate/index.vue create mode 100644 admin/src/views/content/article/edit.vue create mode 100644 admin/src/views/content/article/list.vue create mode 100644 admin/src/views/content/articleclass/list.vue create mode 100644 admin/src/views/dashboard/admin/components/BarChart.vue create mode 100644 admin/src/views/dashboard/admin/components/BoxCard.vue create mode 100644 admin/src/views/dashboard/admin/components/LineChart.vue create mode 100644 admin/src/views/dashboard/admin/components/PanelGroup.vue create mode 100644 admin/src/views/dashboard/admin/components/PieChart.vue create mode 100644 admin/src/views/dashboard/admin/components/RaddarChart.vue create mode 100644 admin/src/views/dashboard/admin/components/TodoList/Todo.vue create mode 100644 admin/src/views/dashboard/admin/components/TodoList/index.scss create mode 100644 admin/src/views/dashboard/admin/components/TodoList/index.vue create mode 100644 admin/src/views/dashboard/admin/components/TransactionTable.vue create mode 100644 admin/src/views/dashboard/admin/components/mixins/resize.js create mode 100644 admin/src/views/dashboard/admin/index.vue create mode 100644 admin/src/views/dashboard/components/baseInfo.vue create mode 100644 admin/src/views/dashboard/components/gridMenu.vue create mode 100644 admin/src/views/dashboard/components/userChart.vue create mode 100644 admin/src/views/dashboard/components/visitChart.vue create mode 100644 admin/src/views/dashboard/editor/index.vue create mode 100644 admin/src/views/dashboard/index.vue create mode 100644 admin/src/views/datas/datamark/index.vue create mode 100644 admin/src/views/datas/index.vue create mode 100644 admin/src/views/datas/transaction/goods/index.vue create mode 100644 admin/src/views/datas/transaction/index.vue create mode 100644 admin/src/views/datas/transaction/order/index.vue create mode 100644 admin/src/views/distribution/config/index.vue create mode 100644 admin/src/views/distribution/index.vue create mode 100644 admin/src/views/error-log/components/ErrorTestA.vue create mode 100644 admin/src/views/error-log/components/ErrorTestB.vue create mode 100644 admin/src/views/error-log/index.vue create mode 100644 admin/src/views/error-page/401.vue create mode 100644 admin/src/views/error-page/404.vue create mode 100644 admin/src/views/financial/brokerage/index.vue create mode 100644 admin/src/views/financial/commission/index.vue create mode 100644 admin/src/views/financial/commission/withdrawal/index.vue create mode 100644 admin/src/views/financial/index.vue create mode 100644 admin/src/views/financial/operating/index.vue create mode 100644 admin/src/views/financial/record/charge/index.vue create mode 100644 admin/src/views/financial/record/index.vue create mode 100644 admin/src/views/financial/record/monitor/index.vue create mode 100644 admin/src/views/login/auth-redirect.vue create mode 100644 admin/src/views/login/index.vue create mode 100644 admin/src/views/maintain/devconfig/combineDataList.vue create mode 100644 admin/src/views/maintain/devconfig/combineEdit.vue create mode 100644 admin/src/views/maintain/devconfig/combinedData.vue create mode 100644 admin/src/views/maintain/devconfig/combinedDataEdit.vue create mode 100644 admin/src/views/maintain/devconfig/configCategotyEdit.vue create mode 100644 admin/src/views/maintain/devconfig/configCategroy.vue create mode 100644 admin/src/views/maintain/devconfig/configList.vue create mode 100644 admin/src/views/maintain/formConfig/edit.vue create mode 100644 admin/src/views/maintain/formConfig/index.vue create mode 100644 admin/src/views/maintain/index.vue create mode 100644 admin/src/views/maintain/user/index.vue create mode 100644 admin/src/views/marketing/bargain/index.vue create mode 100644 admin/src/views/marketing/coupon.vue create mode 100644 admin/src/views/marketing/coupon/couponTemplate/index.vue create mode 100644 admin/src/views/marketing/coupon/index.vue create mode 100644 admin/src/views/marketing/coupon/list/creatCoupon.vue create mode 100644 admin/src/views/marketing/coupon/list/index.vue create mode 100644 admin/src/views/marketing/coupon/record/index.vue create mode 100644 admin/src/views/marketing/groupBuy/goods/index.vue create mode 100644 admin/src/views/marketing/groupBuy/index.vue create mode 100644 admin/src/views/marketing/groupBuy/list/list.vue create mode 100644 admin/src/views/marketing/integral/config/index.vue create mode 100644 admin/src/views/marketing/integral/index.vue create mode 100644 admin/src/views/marketing/spike/config/edit.vue create mode 100644 admin/src/views/marketing/spike/config/index.vue create mode 100644 admin/src/views/marketing/spike/googs/index.vue create mode 100644 admin/src/views/marketing/spike/index.vue create mode 100644 admin/src/views/order/index.vue create mode 100644 admin/src/views/order/orderDetail.vue create mode 100644 admin/src/views/order/orderSend.vue create mode 100644 admin/src/views/redirect/index.vue create mode 100644 admin/src/views/sms/index.vue create mode 100644 admin/src/views/sms/smsConfig/components/loginFrom.vue create mode 100644 admin/src/views/sms/smsConfig/components/register.vue create mode 100644 admin/src/views/sms/smsConfig/components/tableList.vue create mode 100644 admin/src/views/sms/smsConfig/index.vue create mode 100644 admin/src/views/sms/smsMessage/index.vue create mode 100644 admin/src/views/sms/smsPay/index.vue create mode 100644 admin/src/views/sms/smsTemplate/index.vue create mode 100644 admin/src/views/store/creatStore/index.vue create mode 100644 admin/src/views/store/creatStore/index2.vue create mode 100644 admin/src/views/store/index.vue create mode 100644 admin/src/views/store/sort/index.vue create mode 100644 admin/src/views/store/storeAttr/index.vue create mode 100644 admin/src/views/store/storeComment/creatComment.vue create mode 100644 admin/src/views/store/storeComment/index.vue create mode 100644 admin/src/views/store/taoBao.vue create mode 100644 admin/src/views/systemSetting/administratorAuthority/adminList/edit.vue create mode 100644 admin/src/views/systemSetting/administratorAuthority/adminList/index.vue create mode 100644 admin/src/views/systemSetting/administratorAuthority/identityManager/edit.vue create mode 100644 admin/src/views/systemSetting/administratorAuthority/identityManager/index.vue create mode 100644 admin/src/views/systemSetting/administratorAuthority/index.vue create mode 100644 admin/src/views/systemSetting/administratorAuthority/permissionRules/index.vue create mode 100644 admin/src/views/systemSetting/logistics/cityList/index.vue create mode 100644 admin/src/views/systemSetting/logistics/companyList/index.vue create mode 100644 admin/src/views/systemSetting/logistics/config/index.vue create mode 100644 admin/src/views/systemSetting/logistics/index.vue create mode 100644 admin/src/views/systemSetting/logistics/shippingTemplates/creatTemplates.vue create mode 100644 admin/src/views/systemSetting/logistics/shippingTemplates/index.vue create mode 100644 admin/src/views/systemSetting/setting/index.vue create mode 100644 admin/src/views/systemSetting/setting/index2.vue create mode 100644 admin/src/views/systemSetting/systemStore/clerkList/addClerk.vue create mode 100644 admin/src/views/systemSetting/systemStore/clerkList/index.vue create mode 100644 admin/src/views/systemSetting/systemStore/index.vue create mode 100644 admin/src/views/systemSetting/systemStore/order/index.vue create mode 100644 admin/src/views/systemSetting/systemStore/point/addPoint.vue create mode 100644 admin/src/views/systemSetting/systemStore/point/index.vue create mode 100644 admin/src/views/user/grade/creatGrade.vue create mode 100644 admin/src/views/user/grade/index.vue create mode 100644 admin/src/views/user/group/index.vue create mode 100644 admin/src/views/user/list/edit.vue create mode 100644 admin/src/views/user/list/index.vue create mode 100644 admin/src/views/user/list/userDetails.vue create mode 100644 admin/src/views/user/notice/index.vue create mode 100644 admin/tests/unit/.eslintrc.js create mode 100644 admin/tests/unit/components/Hamburger.spec.js create mode 100644 admin/tests/unit/components/SvgIcon.spec.js create mode 100644 admin/tests/unit/utils/formatTime.spec.js create mode 100644 admin/tests/unit/utils/parseTime.spec.js create mode 100644 admin/tests/unit/utils/validate.spec.js create mode 100644 admin/vue.config.js create mode 100644 app/App.vue create mode 100644 app/api/activity.js create mode 100644 app/api/admin.js create mode 100644 app/api/api.js create mode 100644 app/api/order.js create mode 100644 app/api/public.js create mode 100644 app/api/store.js create mode 100644 app/api/user.js create mode 100644 app/components/Authorize.vue create mode 100644 app/components/Authorize002.vue create mode 100644 app/components/Loading/index.vue create mode 100644 app/components/PriceChange/index.vue create mode 100644 app/components/adc/index.vue create mode 100644 app/components/addressWindow/index.vue create mode 100644 app/components/countDown/index.vue create mode 100644 app/components/couponListWindow/index.vue create mode 100644 app/components/couponListWindow/备份.vue create mode 100644 app/components/couponWindow/index.vue create mode 100644 app/components/easy-upload/easy-upload.vue create mode 100644 app/components/easy-upload/readme.md create mode 100644 app/components/emptyPage.vue create mode 100644 app/components/goodList/index.vue create mode 100644 app/components/home/index.vue create mode 100644 app/components/jyf-parser/jyf-parser.vue create mode 100644 app/components/jyf-parser/libs/CssHandler.js create mode 100644 app/components/jyf-parser/libs/MpHtmlParser.js create mode 100644 app/components/jyf-parser/libs/config.js create mode 100644 app/components/jyf-parser/libs/handler.sjs create mode 100644 app/components/jyf-parser/libs/handler.wxs create mode 100644 app/components/jyf-parser/libs/trees.vue create mode 100644 app/components/mpvue-calendar/browser-style.css create mode 100644 app/components/mpvue-calendar/calendarinit.js create mode 100644 app/components/mpvue-calendar/icon.css create mode 100644 app/components/mpvue-calendar/mpvue-calendar.vue create mode 100644 app/components/mpvue-calendar/style.css create mode 100644 app/components/orderGoods/index.vue create mode 100644 app/components/payment/index.vue create mode 100644 app/components/productConSwiper/index.vue create mode 100644 app/components/productWindow/index.vue create mode 100644 app/components/promotionGood/index.vue create mode 100644 app/components/recommend/index.vue create mode 100644 app/components/shareInfo/index.vue create mode 100644 app/components/shareRedPackets/index.vue create mode 100644 app/components/swipers/index.vue create mode 100644 app/components/tabNav.vue create mode 100644 app/components/ucharts/component.vue create mode 100644 app/components/ucharts/ucharts.js create mode 100644 app/components/ucharts/ucharts.min.js create mode 100644 app/components/uni-calendar/calendar.js create mode 100644 app/components/uni-calendar/uni-calendar-item.vue create mode 100644 app/components/uni-calendar/uni-calendar.vue create mode 100644 app/components/uni-calendar/util.js create mode 100644 app/components/userEvaluation/index.vue create mode 100644 app/components/vconsole.min.js create mode 100644 app/components/wPicker/city-data/area.js create mode 100644 app/components/wPicker/city-data/city.js create mode 100644 app/components/wPicker/city-data/province.js create mode 100644 app/components/wPicker/w-picker.js create mode 100644 app/components/wPicker/w-picker.vue create mode 100644 app/config/app.js create mode 100644 app/config/cache.js create mode 100644 app/config/socket.js create mode 100644 app/js_sdk/Sansnn-uQRCode/uqrcode.js create mode 100644 app/libs/chat.js create mode 100644 app/libs/login.js create mode 100644 app/libs/order.js create mode 100644 app/libs/routine.js create mode 100644 app/libs/wechat.js create mode 100644 app/main.js create mode 100644 app/manifest.json create mode 100644 app/mixins/SendVerifyCode.js create mode 100644 app/package-lock.json create mode 100644 app/pages.json create mode 100644 app/pages/activity/bargain/index.vue create mode 100644 app/pages/activity/goods_bargain/index.vue create mode 100644 app/pages/activity/goods_bargain_details/index.vue create mode 100644 app/pages/activity/goods_combination/index.vue create mode 100644 app/pages/activity/goods_combination_details/index.vue create mode 100644 app/pages/activity/goods_combination_status/index.vue create mode 100644 app/pages/activity/goods_seckill/index.vue create mode 100644 app/pages/activity/goods_seckill_details/index.vue create mode 100644 app/pages/activity/poster-poster/index.vue create mode 100644 app/pages/admin/delivery/index.vue create mode 100644 app/pages/admin/order/index.vue create mode 100644 app/pages/admin/orderDetail/index.vue create mode 100644 app/pages/admin/orderList/index.vue create mode 100644 app/pages/admin/order_cancellation/index.vue create mode 100644 app/pages/admin/static/scan.gif create mode 100644 app/pages/admin/statistics/index.vue create mode 100644 app/pages/auth/index.vue create mode 100644 app/pages/columnGoods/HotNewGoods/index.vue create mode 100644 app/pages/customer_list/chat.vue create mode 100644 app/pages/customer_list/index.vue create mode 100644 app/pages/first_new_product/index.vue create mode 100644 app/pages/goods_cate/goods_cate.vue create mode 100644 app/pages/goods_details/index.vue create mode 100644 app/pages/goods_details/index001.vue create mode 100644 app/pages/goods_details/index003.vue create mode 100644 app/pages/goods_list/index.vue create mode 100644 app/pages/goods_search/index.vue create mode 100644 app/pages/index/index.vue create mode 100644 app/pages/index/index001.vue create mode 100644 app/pages/news_details/index.vue create mode 100644 app/pages/news_list/index.vue create mode 100644 app/pages/order_addcart/order_addcart.vue create mode 100644 app/pages/order_addcart/order_addcart01.vue create mode 100644 app/pages/order_details/index.vue create mode 100644 app/pages/order_pay_status/index.vue create mode 100644 app/pages/promotional_items/index.vue create mode 100644 app/pages/retrieve_password/index.vue create mode 100644 app/pages/user/index.vue create mode 100644 app/pages/users/commission_rank/index.vue create mode 100644 app/pages/users/goods_comment_con/index.vue create mode 100644 app/pages/users/goods_comment_list/index.vue create mode 100644 app/pages/users/goods_details_store/index.vue create mode 100644 app/pages/users/goods_logistics/index.vue create mode 100644 app/pages/users/goods_return/index.vue create mode 100644 app/pages/users/login/index.vue create mode 100644 app/pages/users/order_confirm/index.vue create mode 100644 app/pages/users/order_list/index.vue create mode 100644 app/pages/users/promoter-list/index.vue create mode 100644 app/pages/users/promoter-order/index.vue create mode 100644 app/pages/users/promoter_rank/index.vue create mode 100644 app/pages/users/retrievePassword/index.vue create mode 100644 app/pages/users/static/vip.png create mode 100644 app/pages/users/static/vip01.png create mode 100644 app/pages/users/static/vip02.png create mode 100644 app/pages/users/static/vip03.png create mode 100644 app/pages/users/static/vip04.png create mode 100644 app/pages/users/static/vip05.png create mode 100644 app/pages/users/user_address/index.vue create mode 100644 app/pages/users/user_address/index001.vue create mode 100644 app/pages/users/user_address_list/index.vue create mode 100644 app/pages/users/user_bill/index.vue create mode 100644 app/pages/users/user_cash/index.vue create mode 100644 app/pages/users/user_coupon/index.vue create mode 100644 app/pages/users/user_get_coupon/index.vue create mode 100644 app/pages/users/user_goods_collection/index.vue create mode 100644 app/pages/users/user_info/index.vue create mode 100644 app/pages/users/user_info/index001.vue create mode 100644 app/pages/users/user_integral/index.vue create mode 100644 app/pages/users/user_money/index.vue create mode 100644 app/pages/users/user_payment/index.vue create mode 100644 app/pages/users/user_phone/index.vue create mode 100644 app/pages/users/user_pwd_edit/index.vue create mode 100644 app/pages/users/user_return_list/index.vue create mode 100644 app/pages/users/user_sgin/index.vue create mode 100644 app/pages/users/user_sgin_list/index.vue create mode 100644 app/pages/users/user_spread_code/index.vue create mode 100644 app/pages/users/user_spread_money/index.vue create mode 100644 app/pages/users/user_spread_user/index.vue create mode 100644 app/pages/users/user_vip/index.vue create mode 100644 app/pages/users/user_vip/index01.vue create mode 100644 app/plugin/animate/animate.min.css create mode 100644 app/plugin/clipboard/clipboard.js create mode 100644 app/plugin/dayjs/dayjs.min.js create mode 100644 app/plugin/emoji-awesome/css/apple.min.css create mode 100644 app/plugin/emoji-awesome/css/emojione.min.css create mode 100644 app/plugin/emoji-awesome/css/facebook.min.css create mode 100644 app/plugin/emoji-awesome/css/google.min.css create mode 100644 app/plugin/emoji-awesome/css/messenger.min.css create mode 100644 app/plugin/emoji-awesome/css/twitter.min.css create mode 100644 app/plugin/emoji-awesome/img/sheet_apple_64_indexed_256colors.png create mode 100644 app/plugin/emoji-awesome/img/sheet_emojione_64_indexed_128.png create mode 100644 app/plugin/emoji-awesome/img/sheet_facebook_64_indexed_128.png create mode 100644 app/plugin/emoji-awesome/img/sheet_google_64_indexed_128.png create mode 100644 app/plugin/emoji-awesome/img/sheet_messenger_64_indexed_128.png create mode 100644 app/plugin/emoji-awesome/img/sheet_twitter_64_indexed_128.png create mode 100644 app/plugin/image-tools/index.js create mode 100644 app/plugin/jweixin-module/index.js create mode 100644 app/static/css/base.css create mode 100644 app/static/css/guildford.css create mode 100644 app/static/css/style.scss create mode 100644 app/static/iconfont/iconfont.css create mode 100644 app/static/images/1-001.png create mode 100644 app/static/images/1-002.png create mode 100644 app/static/images/2-001.png create mode 100644 app/static/images/2-002.png create mode 100644 app/static/images/3-001.png create mode 100644 app/static/images/3-002.png create mode 100644 app/static/images/4-001.png create mode 100644 app/static/images/4-002.png create mode 100644 app/static/images/aa.jpg create mode 100644 app/static/images/accountBg.png create mode 100644 app/static/images/address.png create mode 100644 app/static/images/alter.png create mode 100644 app/static/images/angle.png create mode 100644 app/static/images/balance.png create mode 100644 app/static/images/barg001.png create mode 100644 app/static/images/barg002.png create mode 100644 app/static/images/bargain.png create mode 100644 app/static/images/bargainBg.jpg create mode 100644 app/static/images/close.gif create mode 100644 app/static/images/code_1.png create mode 100644 app/static/images/code_2.png create mode 100644 app/static/images/collection.png create mode 100644 app/static/images/coupon.png create mode 100644 app/static/images/crmeb.png create mode 100644 app/static/images/customer.png create mode 100644 app/static/images/del.png create mode 100644 app/static/images/dfh.png create mode 100644 app/static/images/dfk.png create mode 100644 app/static/images/down.png create mode 100644 app/static/images/dpj.png create mode 100644 app/static/images/dsh.png create mode 100644 app/static/images/edit.png create mode 100644 app/static/images/empty-box.png create mode 100644 app/static/images/examine.png create mode 100644 app/static/images/explosion-title.png create mode 100644 app/static/images/explosion.png create mode 100644 app/static/images/extension.png create mode 100644 app/static/images/f.png create mode 100644 app/static/images/face.png create mode 100644 app/static/images/gift.png create mode 100644 app/static/images/group01.png create mode 100644 app/static/images/group02.gif create mode 100644 app/static/images/horn.png create mode 100644 app/static/images/keyboard.png create mode 100644 app/static/images/left.png create mode 100644 app/static/images/light.png create mode 100644 app/static/images/line.jpg create mode 100644 app/static/images/ling.png create mode 100644 app/static/images/live-01.png create mode 100644 app/static/images/live-02.png create mode 100644 app/static/images/live-03.png create mode 100644 app/static/images/lock.png create mode 100644 app/static/images/lock2.png create mode 100644 app/static/images/logo.png create mode 100644 app/static/images/logo2.png create mode 100644 app/static/images/medal01.png create mode 100644 app/static/images/medal02.png create mode 100644 app/static/images/medal03.png create mode 100644 app/static/images/member.png create mode 100644 app/static/images/memberCenter.png create mode 100644 app/static/images/money.png create mode 100644 app/static/images/mores.png create mode 100644 app/static/images/news.png create mode 100644 app/static/images/noAddress.png create mode 100644 app/static/images/noCart.png create mode 100644 app/static/images/noCollection.png create mode 100644 app/static/images/noCoupon.png create mode 100644 app/static/images/noEvaluate.png create mode 100644 app/static/images/noNews.png create mode 100644 app/static/images/noOrder.png create mode 100644 app/static/images/noSearch.png create mode 100644 app/static/images/noShopper.png create mode 100644 app/static/images/one.png create mode 100644 app/static/images/open.gif create mode 100644 app/static/images/order1.png create mode 100644 app/static/images/order2.png create mode 100644 app/static/images/order3.png create mode 100644 app/static/images/order4.png create mode 100644 app/static/images/order5.png create mode 100644 app/static/images/orderIndex.png create mode 100644 app/static/images/orderTime.png create mode 100644 app/static/images/phone_1.png create mode 100644 app/static/images/plus.png create mode 100644 app/static/images/poster-close.png create mode 100644 app/static/images/posterbackgd.png create mode 100644 app/static/images/priceTag.png create mode 100644 app/static/images/pricetitle.jpg create mode 100644 app/static/images/qh.png create mode 100644 app/static/images/record1.png create mode 100644 app/static/images/record2.png create mode 100644 app/static/images/record3.png create mode 100644 app/static/images/record4.png create mode 100644 app/static/images/red-packets.png create mode 100644 app/static/images/right-icon.png create mode 100644 app/static/images/rushBuy.jpg create mode 100644 app/static/images/score.png create mode 100644 app/static/images/sh.png create mode 100644 app/static/images/share-info.png create mode 100644 app/static/images/shuoming.png create mode 100644 app/static/images/sort1.png create mode 100644 app/static/images/sort2.png create mode 100644 app/static/images/sort3.png create mode 100644 app/static/images/spike-icon-001.png create mode 100644 app/static/images/spike-icon-002.gif create mode 100644 app/static/images/spot.png create mode 100644 app/static/images/stars1.png create mode 100644 app/static/images/stars2.png create mode 100644 app/static/images/stars3.png create mode 100644 app/static/images/stop.png create mode 100644 app/static/images/support.png create mode 100644 app/static/images/three.png create mode 100644 app/static/images/time.png create mode 100644 app/static/images/transparent.png create mode 100644 app/static/images/two.png create mode 100644 app/static/images/up.png create mode 100644 app/static/images/user_bg.png create mode 100644 app/static/images/user_menu08.png create mode 100644 app/static/images/user_menu09.png create mode 100644 app/static/images/vacancy.png create mode 100644 app/static/images/value.jpg create mode 100644 app/static/images/vip.png create mode 100644 app/static/images/writeOff.jpg create mode 100644 app/static/img/live-logo.gif create mode 100644 app/store/getters.js create mode 100644 app/store/index.js create mode 100644 app/store/modules/app.js create mode 100644 app/store/modules/index.js create mode 100644 app/uni.scss create mode 100644 app/utils/SubscribeMessage.js create mode 100644 app/utils/cache.js create mode 100644 app/utils/dialog.js create mode 100644 app/utils/emoji.js create mode 100644 app/utils/index.js create mode 100644 app/utils/permission.js create mode 100644 app/utils/request.js create mode 100644 app/utils/util.js create mode 100644 app/utils/validate.js create mode 100644 app/vue.config.js create mode 100644 crmeb/.mvn/wrapper/MavenWrapperDownloader.java create mode 100644 crmeb/.mvn/wrapper/maven-wrapper.jar create mode 100644 crmeb/.mvn/wrapper/maven-wrapper.properties create mode 100644 crmeb/README.md create mode 100644 crmeb/crmeb.iml create mode 100644 crmeb/lib/yly_sdk-1.1.jar create mode 100644 crmeb/mvnw create mode 100644 crmeb/mvnw.cmd create mode 100644 crmeb/pom.xml create mode 100644 crmeb/src/main/java/com/aop/ControllerAspect.java create mode 100644 crmeb/src/main/java/com/common/CheckAdminToken.java create mode 100644 crmeb/src/main/java/com/common/CheckFrontToken.java create mode 100644 crmeb/src/main/java/com/common/CommonPage.java create mode 100644 crmeb/src/main/java/com/common/CommonResult.java create mode 100644 crmeb/src/main/java/com/common/PageParamRequest.java create mode 100644 crmeb/src/main/java/com/constants/Constants.java create mode 100644 crmeb/src/main/java/com/constants/RegularConstants.java create mode 100644 crmeb/src/main/java/com/constants/SmsConstants.java create mode 100644 crmeb/src/main/java/com/constants/WeChatConstants.java create mode 100644 crmeb/src/main/java/com/exception/ApiException.java create mode 100644 crmeb/src/main/java/com/exception/CrmebException.java create mode 100644 crmeb/src/main/java/com/exception/ExceptionCodeEnum.java create mode 100644 crmeb/src/main/java/com/exception/ExceptionHandler.java create mode 100644 crmeb/src/main/java/com/exception/GlobalExceptionHandler.java create mode 100644 crmeb/src/main/java/com/filter/ResponseFilter.java create mode 100644 crmeb/src/main/java/com/filter/ResponseRouter.java create mode 100644 crmeb/src/main/java/com/filter/ResponseWrapper.java create mode 100644 crmeb/src/main/java/com/im/MessageVo.java create mode 100644 crmeb/src/main/java/com/im/SocketClient.java create mode 100644 crmeb/src/main/java/com/im/SocketClient1.java create mode 100644 crmeb/src/main/java/com/im/SocketClient2.java create mode 100644 crmeb/src/main/java/com/im/SocketServer.java create mode 100644 crmeb/src/main/java/com/interceptor/AdminAuthInterceptor.java create mode 100644 crmeb/src/main/java/com/interceptor/AdminTokenInterceptor.java create mode 100644 crmeb/src/main/java/com/interceptor/FrontTokenInterceptor.java create mode 100644 crmeb/src/main/java/com/interceptor/SwaggerInterceptor.java create mode 100644 crmeb/src/main/java/com/utils/CrmebUtil.java create mode 100644 crmeb/src/main/java/com/utils/DateUtil.java create mode 100644 crmeb/src/main/java/com/utils/ExcelUtil.java create mode 100644 crmeb/src/main/java/com/utils/ImageMergeUtil.java create mode 100644 crmeb/src/main/java/com/utils/QRCodeUtil.java create mode 100644 crmeb/src/main/java/com/utils/RedisUtil.java create mode 100644 crmeb/src/main/java/com/utils/RequestUtil.java create mode 100644 crmeb/src/main/java/com/utils/RestTemplateUtil.java create mode 100644 crmeb/src/main/java/com/utils/SpringUtil.java create mode 100644 crmeb/src/main/java/com/utils/ThreadLocalUtil.java create mode 100644 crmeb/src/main/java/com/utils/UploadUtil.java create mode 100644 crmeb/src/main/java/com/utils/UploadWeChatMediaUtil.java create mode 100644 crmeb/src/main/java/com/utils/UrlUtil.java create mode 100644 crmeb/src/main/java/com/utils/ValidateCodeUtil.java create mode 100644 crmeb/src/main/java/com/utils/ValidateFormUtil.java create mode 100644 crmeb/src/main/java/com/utils/XmlUtil.java create mode 100644 crmeb/src/main/java/com/utils/vo/ImageMergeUtilVo.java create mode 100644 crmeb/src/main/java/com/utils/vo/dateLimitUtilVo.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/CrmebApplication.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/article/controller/ArticleController.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/article/dao/ArticleDao.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/article/model/Article.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/article/request/ArticleRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/article/request/ArticleSearchRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/article/service/ArticleService.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/article/service/impl/ArticleServiceImpl.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/article/vo/ArticleVo.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/authorization/controller/adminUser.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/authorization/manager/TokenManager.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/authorization/manager/TokenManagerImpl.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/authorization/model/TokenModel.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/category/controller/CategoryController.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/category/dao/CategoryDao.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/category/model/Category.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/category/request/CategoryRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/category/request/CategorySearchRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/category/service/CategoryService.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/category/service/impl/CategoryServiceImpl.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/category/vo/CategoryTreeVo.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/config/CorsConfig.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/config/DruidConfig.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/config/JacksonConfig.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/config/RedisConfig.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/config/RestTemplateConfig.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/config/SchedulerConfig.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/config/SwaggerConfig.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/config/TaskExecutorConfig.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/config/WebConfig.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/export/controller/ExcelController.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/export/service/ExcelService.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/export/service/impl/ExcelServiceImpl.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/export/vo/ExcelColumn.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/export/vo/ProductExcelVo.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/express/controller/ExpressController.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/express/controller/ShippingTemplatesController.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/express/controller/ShippingTemplatesFreeController.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/express/controller/ShippingTemplatesRegionController.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/express/dao/ExpressDao.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/express/dao/ShippingTemplatesDao.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/express/dao/ShippingTemplatesFreeDao.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/express/dao/ShippingTemplatesRegionDao.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/express/model/Express.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/express/model/ShippingTemplates.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/express/model/ShippingTemplatesFree.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/express/model/ShippingTemplatesRegion.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/express/request/ExpressRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/express/request/ExpressSearchRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/express/request/ShippingTemplatesFreeRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/express/request/ShippingTemplatesRegionRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/express/request/ShippingTemplatesRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/express/request/ShippingTemplatesSearchRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/express/service/ExpressService.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/express/service/LogisticService.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/express/service/ShippingTemplatesFreeService.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/express/service/ShippingTemplatesRegionService.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/express/service/ShippingTemplatesService.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/express/service/impl/ExpressServiceImpl.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/express/service/impl/LogisticsServiceImpl.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/express/service/impl/ShippingTemplatesFreeServiceImpl.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/express/service/impl/ShippingTemplatesRegionServiceImpl.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/express/service/impl/ShippingTemplatesServiceImpl.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/express/vo/LogisticsResultListVo.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/express/vo/LogisticsResultVo.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/finance/controller/FundsMonitorController.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/finance/controller/UserExtractController.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/finance/controller/UserRechargeController.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/finance/dao/UserExtractDao.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/finance/dao/UserFundsMonitorDao.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/finance/dao/UserRechargeDao.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/finance/model/UserExtract.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/finance/model/UserFundsMonitor.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/finance/model/UserRecharge.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/finance/request/FundsMonitorSearchRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/finance/request/FundsMonitorUserSearchRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/finance/request/UserExtractRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/finance/request/UserExtractSearchRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/finance/request/UserRechargeRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/finance/request/UserRechargeSearchRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/finance/response/BalanceResponse.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/finance/response/UserExtractResponse.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/finance/service/UserExtractService.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/finance/service/UserFundsMonitorService.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/finance/service/UserRechargeService.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/finance/service/impl/UserExtractServiceImpl.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/finance/service/impl/UserFundsMonitorServiceImpl.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/finance/service/impl/UserRechargeServiceImpl.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/front/controller/ArticleController.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/front/controller/CartController.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/front/controller/CityController.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/front/controller/CouponController.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/front/controller/ExpressController.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/front/controller/IndexController.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/front/controller/LoginController.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/front/controller/ProductController.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/front/controller/QrCodeController.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/front/controller/StoreController.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/front/controller/StoreOrderController.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/front/controller/StoreServiceController.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/front/controller/UploadFrontController.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/front/controller/UserAddressController.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/front/controller/UserCollectController.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/front/controller/UserController.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/front/controller/UserCouponController.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/front/controller/UserRechargeController.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/front/controller/UserSignController.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/front/controller/WeChatController.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/front/request/CartRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/front/request/CartResetRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/front/request/GetProductReply.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/front/request/IndexStoreProductSearchRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/front/request/LoginMobileRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/front/request/LoginRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/front/request/OrderAgainRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/front/request/OrderComputedRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/front/request/OrderCreateRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/front/request/OrderPayRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/front/request/OrderRefundApplyRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/front/request/OrderRefundVerifyRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/front/request/PasswordRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/front/request/ProductRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/front/request/RegisterRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/front/request/StoreNearRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/front/request/UserAddressCityRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/front/request/UserAddressDelRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/front/request/UserAddressRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/front/request/UserBindingRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/front/request/UserCollectAllRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/front/request/UserCollectRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/front/request/UserCouponReceiveRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/front/request/UserEditRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/front/request/UserRechargeRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/front/request/UserSignInfoRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/front/request/UserSpreadPeopleRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/front/request/ValidateCodeRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/front/response/ComputeOrderResponse.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/front/response/ConfirmOrderResponse.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/front/response/IndexInfoItemResponse.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/front/response/IndexInfoResponse.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/front/response/IndexProductBannerResponse.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/front/response/LoginResponse.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/front/response/OrderDataResponse.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/front/response/OrderPayItemResponse.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/front/response/OrderPayResponse.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/front/response/PriceGroupResponse.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/front/response/ProductDetailResponse.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/front/response/ProductResponse.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/front/response/StoreNearResponse.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/front/response/StoreOrderDetailResponse.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/front/response/StoreProductReplayCountResponse.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/front/response/UserBalanceResponse.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/front/response/UserCenterOrderStatusNumResponse.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/front/response/UserCenterResponse.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/front/response/UserCommissionResponse.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/front/response/UserExtractCashResponse.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/front/response/UserRechargeItemResponse.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/front/response/UserRechargePaymentResponse.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/front/response/UserRechargeResponse.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/front/response/UserSignInfoResponse.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/front/response/UserSpreadBannerResponse.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/front/response/UserSpreadCommissionResponse.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/front/response/UserSpreadOrderItemChildResponse.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/front/response/UserSpreadOrderItemResponse.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/front/response/UserSpreadOrderResponse.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/front/response/UserSpreadPeopleItemResponse.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/front/response/UserSpreadPeopleResponse.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/front/service/IndexService.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/front/service/OrderService.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/front/service/ProductService.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/front/service/QrCodeService.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/front/service/UserCenterService.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/front/service/impl/IndexServiceImpl.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/front/service/impl/OrderServiceImpl.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/front/service/impl/ProductServiceImpl.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/front/service/impl/QrCodeServiceImpl.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/front/service/impl/UserCenterServiceImpl.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/front/vo/OrderAgainItemVo.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/front/vo/OrderAgainVo.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/front/vo/PriceGroup.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/front/vo/PriceItem.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/marketing/controller/StoreCouponController.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/marketing/controller/StoreCouponUserController.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/marketing/dao/StoreCouponDao.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/marketing/dao/StoreCouponUserDao.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/marketing/model/StoreCoupon.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/marketing/model/StoreCouponUser.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/marketing/request/StoreCouponRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/marketing/request/StoreCouponSearchRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/marketing/request/StoreCouponUserRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/marketing/request/StoreCouponUserSearchRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/marketing/response/StoreCouponFrontResponse.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/marketing/response/StoreCouponInfoResponse.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/marketing/response/StoreCouponUserOrder.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/marketing/response/StoreCouponUserResponse.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/marketing/service/StoreCouponService.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/marketing/service/StoreCouponUserService.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/marketing/service/impl/StoreCouponServiceImpl.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/marketing/service/impl/StoreCouponUserServiceImpl.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/payment/README.md create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/payment/controller/CallbackController.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/payment/service/CallbackService.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/payment/service/OrderPayService.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/payment/service/PayService.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/payment/service/RechargePayService.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/payment/service/impl/CallbackServiceImpl.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/payment/service/impl/OrderPayServiceImpl.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/payment/service/impl/RechargePayServiceImpl.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/payment/vo/wechat/AttachVo.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/payment/vo/wechat/CallbackVo.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/payment/vo/wechat/CreateOrderH5SceneInfoDetailVo.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/payment/vo/wechat/CreateOrderH5SceneInfoVo.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/payment/vo/wechat/CreateOrderRequestVo.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/payment/vo/wechat/CreateOrderResponseVo.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/payment/vo/wechat/PayParamsVo.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/payment/wechat/WeChatPayService.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/payment/wechat/impl/WeChatPayServiceImpl.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/pub/controller/AuthorizationAdmin.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/pub/controller/ImageMergeController.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/pub/controller/RedisTestController.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/pub/controller/WeChatMessageController.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/pub/controller/WeChatPushController.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/sms/controller/SmsRecordController.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/sms/dao/SmsRecordDao.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/sms/model/SmsRecord.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/sms/request/PublicTempRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/sms/request/RegisterRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/sms/request/SendSmsVo.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/sms/request/SmsConfigRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/sms/request/SmsLoginRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/sms/request/SmsRecordRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/sms/service/SmsRecordService.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/sms/service/SmsService.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/sms/service/impl/SmsRecordServiceImpl.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/sms/service/impl/SmsServiceImpl.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/statistics/controller/HomeController.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/statistics/response/HomeRateResponse.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/statistics/response/HomeUserBuyResponse.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/statistics/service/HomeService.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/statistics/service/impl/HomeServiceImpl.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/controller/RetailShopController.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/controller/StoreBargainController.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/controller/StoreBargainUserController.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/controller/StoreBargainUserHelpController.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/controller/StoreCategoryController.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/controller/StoreCombinationController.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/controller/StoreOrderController.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/controller/StoreOrderStatusController.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/controller/StorePinkController.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/controller/StoreProductAttrController.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/controller/StoreProductAttrResultController.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/controller/StoreProductAttrValueController.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/controller/StoreProductCateController.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/controller/StoreProductController.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/controller/StoreProductCouponController.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/controller/StoreProductDescriptionController.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/controller/StoreProductRelationController.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/controller/StoreProductReplyController.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/controller/StoreProductRuleController.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/controller/StoreServiceController.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/controller/StoreServiceLogController.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/dao/StoreBargainDao.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/dao/StoreBargainUserDao.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/dao/StoreBargainUserHelpDao.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/dao/StoreCartDao.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/dao/StoreCategoryDao.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/dao/StoreCombinationDao.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/dao/StoreOrderDao.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/dao/StoreOrderInfoDao.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/dao/StoreOrderStatusDao.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/dao/StorePinkDao.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/dao/StoreProductAttrDao.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/dao/StoreProductAttrResultDao.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/dao/StoreProductAttrValueDao.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/dao/StoreProductCateDao.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/dao/StoreProductCouponDao.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/dao/StoreProductDao.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/dao/StoreProductDescriptionDao.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/dao/StoreProductRelationDao.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/dao/StoreProductReplyDao.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/dao/StoreProductRuleDao.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/dao/StoreServiceDao.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/dao/StoreServiceLogDao.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/model/StoreBargain.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/model/StoreBargainUser.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/model/StoreBargainUserHelp.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/model/StoreCart.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/model/StoreCategory.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/model/StoreCombination.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/model/StoreOrder.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/model/StoreOrderInfo.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/model/StoreOrderStatus.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/model/StorePink.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/model/StoreProduct.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/model/StoreProductAttr.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/model/StoreProductAttrResult.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/model/StoreProductAttrValue.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/model/StoreProductCate.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/model/StoreProductCoupon.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/model/StoreProductDescription.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/model/StoreProductRelation.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/model/StoreProductReply.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/model/StoreProductRule.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/model/StoreService.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/model/StoreServiceLog.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/request/RetailShopRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/request/RetailShopStairUserRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreBargainRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreBargainSearchRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreBargainUserHelpRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreBargainUserHelpSearchRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreBargainUserRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreBargainUserSearchRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreCategoryRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreCategorySearchRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreCombinationRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreCombinationSearchRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreOrderInfoRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreOrderInfoSearchRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreOrderRefundRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreOrderRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreOrderSearchRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreOrderSendRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreOrderStatusRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreOrderStatusSearchRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/request/StorePinkRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/request/StorePinkSearchRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreProductAttrItemRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreProductAttrRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreProductAttrResultRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreProductAttrResultSearchRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreProductAttrSearchRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreProductAttrValueListRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreProductAttrValueRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreProductAttrValueSearchRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreProductCateRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreProductCateSearchRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreProductCouponRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreProductCouponSearchRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreProductDescriptionRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreProductDescriptionSearchRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreProductRelationRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreProductRelationSearchRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreProductReplyAddRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreProductReplyCommentRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreProductReplyRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreProductReplySearchRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreProductRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreProductRuleItemRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreProductRuleRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreProductRuleSearchRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreProductSearchRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreProductStockRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreServiceLogSearchRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/request/StoreServiceRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/response/RetailShopOrderDataResponse.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/response/RetailShopStatisticsResponse.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/response/RetailShopUserResponse.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/response/StoreCartResponse.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/response/StoreCategoryTreeList.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/response/StoreOrderCountItemResponse.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/response/StoreOrderCreateResponse.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/response/StoreOrderInfoResponse.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/response/StoreOrderListResponse.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/response/StoreOrderResponse.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/response/StoreOrderSpreadInfoResponse.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/response/StoreOrderTopItemResponse.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/response/StoreProductAttrResponse.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/response/StoreProductAttrValueItemResponse.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/response/StoreProductAttrValueResponse.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/response/StoreProductCartProductInfoResponse.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/response/StoreProductRecommendResponse.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/response/StoreProductReplyResponse.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/response/StoreProductResponse.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/response/StoreProductRuleResponse.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/response/StoreProductStoreInfoResponse.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/response/StoreProductTabsHeader.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/service/OrderTaskService.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/service/RetailShopService.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/service/StoreBargainService.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/service/StoreBargainUserHelpService.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/service/StoreBargainUserService.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/service/StoreCartService.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/service/StoreCategoryService.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/service/StoreCombinationService.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/service/StoreOrderInfoService.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/service/StoreOrderRefundService.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/service/StoreOrderService.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/service/StoreOrderStatusService.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/service/StoreOrderTaskService.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/service/StorePinkService.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/service/StoreProductAttrResultService.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/service/StoreProductAttrService.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/service/StoreProductAttrValueService.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/service/StoreProductCateService.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/service/StoreProductCouponService.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/service/StoreProductDescriptionService.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/service/StoreProductRelationService.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/service/StoreProductReplyService.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/service/StoreProductRuleService.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/service/StoreProductService.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/service/StoreServiceLogService.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/service/StoreServiceService.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/service/impl/JSONExample.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/service/impl/OrderTaskServiceImpl.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/service/impl/RetailShopServiceImpl.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/service/impl/StoreBargainServiceImpl.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/service/impl/StoreBargainUserHelpServiceImpl.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/service/impl/StoreBargainUserServiceImpl.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/service/impl/StoreCartServiceImpl.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/service/impl/StoreCategoryServiceImpl.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/service/impl/StoreCombinationServiceImpl.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/service/impl/StoreOrderInfoServiceImpl.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/service/impl/StoreOrderRefundServiceImpl.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/service/impl/StoreOrderServiceImpl.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/service/impl/StoreOrderStatusServiceImpl.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/service/impl/StoreOrderTaskServiceImpl.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/service/impl/StorePinkServiceImpl.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/service/impl/StoreProductAttrResultServiceImpl.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/service/impl/StoreProductAttrServiceImpl.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/service/impl/StoreProductAttrValueServiceImpl.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/service/impl/StoreProductCateServiceImpl.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/service/impl/StoreProductCouponServiceImpl.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/service/impl/StoreProductDescriptionServiceImpl.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/service/impl/StoreProductRelationServiceImpl.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/service/impl/StoreProductReplyServiceImpl.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/service/impl/StoreProductRuleServiceImpl.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/service/impl/StoreProductServiceImpl.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/service/impl/StoreServiceLogServiceImpl.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/service/impl/StoreServiceServiceImpl.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/utilService/OrderUtils.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/vo/StoreOrderInfoVo.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/store/vo/StoreProductRelationCountVo.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/controller/SystemAdminController.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/controller/SystemAttachmentController.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/controller/SystemCityController.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/controller/SystemConfigController.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/controller/SystemFormTempController.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/controller/SystemGroupController.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/controller/SystemGroupDataController.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/controller/SystemLogController.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/controller/SystemNoticeAdminController.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/controller/SystemNoticeController.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/controller/SystemRoleController.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/controller/SystemStoreController.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/controller/SystemStoreStaffController.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/controller/SystemUserLevelController.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/controller/SystemUserTaskController.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/controller/SystemWriteOffOrderController.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/dao/SystemAdminDao.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/dao/SystemAttachmentDao.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/dao/SystemCityDao.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/dao/SystemConfigDao.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/dao/SystemFileDao.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/dao/SystemFormTempDao.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/dao/SystemGroupDao.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/dao/SystemGroupDataDao.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/dao/SystemLogDao.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/dao/SystemNoticeAdminDao.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/dao/SystemNoticeDao.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/dao/SystemRoleDao.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/dao/SystemStoreDao.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/dao/SystemStoreStaffDao.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/dao/SystemUserLevelDao.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/dao/SystemUserTaskDao.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/model/SystemAdmin.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/model/SystemAttachment.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/model/SystemCity.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/model/SystemConfig.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/model/SystemFile.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/model/SystemFormTemp.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/model/SystemGroup.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/model/SystemGroupData.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/model/SystemLog.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/model/SystemNotice.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/model/SystemNoticeAdmin.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/model/SystemRole.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/model/SystemStore.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/model/SystemStoreStaff.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/model/SystemUserLevel.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/model/SystemUserTask.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/request/SystemAdminAddRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/request/SystemAdminLoginRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/request/SystemAdminRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/request/SystemAttachmentMoveRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/request/SystemAttachmentRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/request/SystemCityRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/request/SystemCitySearchRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/request/SystemConfigRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/request/SystemFileRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/request/SystemFormCheckRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/request/SystemFormItemCheckRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/request/SystemFormTempRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/request/SystemFormTempSearchRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/request/SystemGroupDataRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/request/SystemGroupDataSearchRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/request/SystemGroupRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/request/SystemGroupSearchRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/request/SystemLogRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/request/SystemNoticeAdminRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/request/SystemNoticeRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/request/SystemRoleRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/request/SystemRoleSearchRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/request/SystemStoreRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/request/SystemStoreSearchRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/request/SystemStoreStaffRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/request/SystemUserLevelRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/request/SystemUserLevelSearchRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/request/SystemUserTaskRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/request/SystemWriteOffOrderSearchRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/response/StoreOrderItemResponse.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/response/SystemAdminResponse.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/response/SystemGroupDataAdminLoginBannerResponse.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/response/SystemGroupDataOrderStatusPicResponse.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/response/SystemStoreStaffResponse.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/response/SystemWriteOffOrderResponse.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/service/SystemAdminService.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/service/SystemAttachmentService.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/service/SystemCityAsyncService.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/service/SystemCityService.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/service/SystemConfigService.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/service/SystemFileService.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/service/SystemFormTempService.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/service/SystemGroupDataService.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/service/SystemGroupService.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/service/SystemLogService.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/service/SystemNoticeAdminService.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/service/SystemNoticeService.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/service/SystemRoleService.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/service/SystemStoreService.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/service/SystemStoreStaffService.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/service/SystemUserLevelService.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/service/SystemUserTaskService.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/service/impl/SystemAdminServiceImpl.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/service/impl/SystemAttachmentServiceImpl.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/service/impl/SystemCityAsyncServiceImpl.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/service/impl/SystemCityServiceImpl.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/service/impl/SystemConfigServiceImpl.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/service/impl/SystemFileServiceImpl.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/service/impl/SystemFormTempServiceImpl.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/service/impl/SystemGroupDataServiceImpl.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/service/impl/SystemGroupServiceImpl.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/service/impl/SystemLogServiceImpl.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/service/impl/SystemNoticeAdminServiceImpl.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/service/impl/SystemNoticeServiceImpl.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/service/impl/SystemRoleServiceImpl.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/service/impl/SystemStoreServiceImpl.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/service/impl/SystemStoreStaffServiceImpl.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/service/impl/SystemUserLevelServiceImpl.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/service/impl/SystemUserTaskServiceImpl.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/vo/SystemCityTreeVo.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/vo/SystemConfigFormItemConfigRegListVo.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/vo/SystemConfigFormItemConfigVo.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/vo/SystemConfigFormItemVo.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/vo/SystemConfigFormVo.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/vo/SystemGroupDataMenuUserConfigVo.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/vo/SystemGroupDataRechargeConfigVo.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/vo/SystemGroupDataSignConfigVo.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/system/vo/SystemStoreNearVo.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/task/AsyncCloud.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/task/AsyncSmsSend.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/task/AsyncWeChatProgramTempMessage.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/task/AsyncWeChatPublicTempMessage.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/task/order/OrderCancelByUser.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/task/order/OrderCompleteByUser.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/task/order/OrderDeleteByUser.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/task/order/OrderRefundByUser.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/task/order/OrderTakeByUser.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/upload/controller/UploadController.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/upload/service/AsyncService.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/upload/service/CosService.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/upload/service/OssService.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/upload/service/QiNiuService.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/upload/service/UploadService.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/upload/service/impl/AsyncServiceImpl.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/upload/service/impl/CosServiceImpl.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/upload/service/impl/OssServiceImpl.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/upload/service/impl/QiNiuServiceImpl.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/upload/service/impl/UploadServiceImpl.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/upload/vo/CloudVo.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/upload/vo/FileResultVo.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/user/controller/UserBillController.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/user/controller/UserController.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/user/controller/UserGroupController.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/user/controller/UserLevelController.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/user/controller/UserTagController.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/user/dao/UserAddressDao.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/user/dao/UserBillDao.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/user/dao/UserDao.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/user/dao/UserGroupDao.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/user/dao/UserLevelDao.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/user/dao/UserNoticeDao.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/user/dao/UserSignDao.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/user/dao/UserTagDao.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/user/dao/UserTaskFinishDao.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/user/dao/UserTokenDao.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/user/model/User.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/user/model/UserAddress.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/user/model/UserBill.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/user/model/UserGroup.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/user/model/UserLevel.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/user/model/UserNotice.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/user/model/UserSign.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/user/model/UserTag.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/user/model/UserTaskFinish.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/user/model/UserToken.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/user/request/RegisterThirdUserRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/user/request/UserBillRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/user/request/UserBillSearchRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/user/request/UserGroupRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/user/request/UserLevelRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/user/request/UserLevelSearchRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/user/request/UserNoticeRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/user/request/UserNoticeSearchRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/user/request/UserOperateFundsRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/user/request/UserOperateIntegralMoneyRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/user/request/UserRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/user/request/UserSearchRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/user/request/UserTagRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/user/response/TopDetail.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/user/response/UserBillResponse.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/user/response/UserResponse.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/user/service/UserAddressService.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/user/service/UserBillService.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/user/service/UserGroupService.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/user/service/UserLevelService.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/user/service/UserNoticeService.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/user/service/UserService.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/user/service/UserSignService.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/user/service/UserTagService.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/user/service/UserTaskFinishService.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/user/service/UserTokenService.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/user/service/impl/UserAddressServiceImpl.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/user/service/impl/UserBillServiceImpl.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/user/service/impl/UserGroupServiceImpl.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/user/service/impl/UserLevelServiceImpl.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/user/service/impl/UserNoticeServiceImpl.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/user/service/impl/UserServiceImpl.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/user/service/impl/UserSignServiceImpl.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/user/service/impl/UserTagServiceImpl.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/user/service/impl/UserTaskFinishServiceImpl.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/user/service/impl/UserTokenServiceImpl.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/user/vo/UserOperateFundsVo.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/user/vo/UserSignMonthVo.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/user/vo/UserSignVo.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/validatecode/controller/ValidateCodeController.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/validatecode/model/ValidateCode.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/validatecode/service/ValidateCodeService.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/validatecode/service/impl/ValidateCodeServiceImpl.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/wechat/controller/RoutineAccessTokenController.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/wechat/controller/RoutineFormIdController.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/wechat/controller/RoutineQrcodeController.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/wechat/controller/TemplateMessageController.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/wechat/controller/WeChatController.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/wechat/controller/WeChatUserTagsController.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/wechat/controller/WechatMediaController.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/wechat/controller/WechatMessageController.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/wechat/controller/WechatQrcodeController.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/wechat/controller/WechatReplyController.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/wechat/controller/WechatUserController.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/wechat/dao/RoutineAccessTokenDao.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/wechat/dao/RoutineFormIdDao.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/wechat/dao/RoutineQrcodeDao.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/wechat/dao/TemplateMessageDao.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/wechat/dao/WechatMediaDao.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/wechat/dao/WechatMessageDao.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/wechat/dao/WechatQrcodeDao.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/wechat/dao/WechatReplyDao.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/wechat/model/RoutineAccessToken.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/wechat/model/RoutineFormId.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/wechat/model/RoutineQrcode.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/wechat/model/TemplateMessage.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/wechat/model/WechatMedia.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/wechat/model/WechatMessage.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/wechat/model/WechatQrcode.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/wechat/model/WechatReply.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/wechat/request/RoutineAccessTokenRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/wechat/request/RoutineAccessTokenSearchRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/wechat/request/RoutineFormIdRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/wechat/request/RoutineFormIdSearchRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/wechat/request/RoutineQrcodeRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/wechat/request/RoutineQrcodeSearchRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/wechat/request/TemplateMessageRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/wechat/request/TemplateMessageSearchRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/wechat/request/WechatMediaRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/wechat/request/WechatMediaSearchRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/wechat/request/WechatMessageRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/wechat/request/WechatMessageSearchRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/wechat/request/WechatQrcodeRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/wechat/request/WechatQrcodeSearchRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/wechat/request/WechatReplyRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/wechat/request/WechatReplySearchRequest.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/wechat/response/WeChatAuthorizeLoginGetOpenIdResponse.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/wechat/response/WeChatAuthorizeLoginUserInfoResponse.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/wechat/response/WeChatProgramAuthorizeLoginGetOpenIdResponse.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/wechat/service/RoutineAccessTokenService.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/wechat/service/RoutineFormIdService.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/wechat/service/RoutineQrcodeService.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/wechat/service/TemplateMessageService.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/wechat/service/WeChatService.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/wechat/service/WechatMediaService.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/wechat/service/WechatMessageService.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/wechat/service/WechatQrcodeService.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/wechat/service/WechatReplyService.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/wechat/service/WechatUserService.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/wechat/service/impl/RoutineAccessTokenServiceImpl.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/wechat/service/impl/RoutineFormIdServiceImpl.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/wechat/service/impl/RoutineQrcodeServiceImpl.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/wechat/service/impl/TemplateMessageServiceImpl.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/wechat/service/impl/WeChatServiceImpl.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/wechat/service/impl/WechatMediaServiceImpl.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/wechat/service/impl/WechatMessageServiceImpl.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/wechat/service/impl/WechatQrcodeServiceImpl.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/wechat/service/impl/WechatReplyServiceImpl.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/wechat/service/impl/WechatUserServiceImpl.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/wechat/vo/MediaCountVo.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/wechat/vo/MediaDetailVo.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/wechat/vo/SendTemplateMessageItemVo.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/wechat/vo/SendTemplateMessageVo.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/wechat/vo/TemplateMessageIndustryItemVo.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/wechat/vo/TemplateMessageIndustryVo.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/wechat/vo/TemplateMessageVo.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/wechatMessage/service/WeChatMessageService.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/wechatMessage/service/impl/WeChatMessageServiceImpl.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/wechatMessage/vo/BaseMessageVo.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/wechatMessage/vo/MessageImageItemVo.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/wechatMessage/vo/MessageImageVo.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/wechatMessage/vo/MessageNewsItemDetailVo.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/wechatMessage/vo/MessageNewsItemVo.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/wechatMessage/vo/MessageNewsVo.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/wechatMessage/vo/MessageReplyDataVo.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/wechatMessage/vo/MessageTextVo.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/wechatMessage/vo/MessageVoiceItemVo.java create mode 100644 crmeb/src/main/java/com/zbkj/crmeb/wechatMessage/vo/MessageVoiceVo.java create mode 100644 crmeb/src/main/resources/application-prod.yml create mode 100644 crmeb/src/main/resources/application.yml create mode 100644 crmeb/src/main/resources/logback-spring.xml create mode 100644 crmeb/src/main/resources/mapper/article/ArticleMapper.xml create mode 100644 crmeb/src/main/resources/mapper/category/CategoryMapper.xml create mode 100644 crmeb/src/main/resources/mapper/express/ExpressMapper.xml create mode 100644 crmeb/src/main/resources/mapper/express/ShippingTemplatesFreeMapper.xml create mode 100644 crmeb/src/main/resources/mapper/express/ShippingTemplatesMapper.xml create mode 100644 crmeb/src/main/resources/mapper/express/ShippingTemplatesRegionMapper.xml create mode 100644 crmeb/src/main/resources/mapper/finance/UserExtractMapper.xml create mode 100644 crmeb/src/main/resources/mapper/finance/UserFundsMonitorMapper.xml create mode 100644 crmeb/src/main/resources/mapper/finance/UserRechargeMapper.xml create mode 100644 crmeb/src/main/resources/mapper/marketing/StoreCouponMapper.xml create mode 100644 crmeb/src/main/resources/mapper/marketing/StoreCouponUserMapper.xml create mode 100644 crmeb/src/main/resources/mapper/sms/SmsRecordMapper.xml create mode 100644 crmeb/src/main/resources/mapper/store/StoreBargainMapper.xml create mode 100644 crmeb/src/main/resources/mapper/store/StoreBargainUserHelpMapper.xml create mode 100644 crmeb/src/main/resources/mapper/store/StoreBargainUserMapper.xml create mode 100644 crmeb/src/main/resources/mapper/store/StoreCartMapper.xml create mode 100644 crmeb/src/main/resources/mapper/store/StoreCategoryMapper.xml create mode 100644 crmeb/src/main/resources/mapper/store/StoreCombinationMapper.xml create mode 100644 crmeb/src/main/resources/mapper/store/StoreOrderInfoMapper.xml create mode 100644 crmeb/src/main/resources/mapper/store/StoreOrderMapper.xml create mode 100644 crmeb/src/main/resources/mapper/store/StoreOrderStatusMapper.xml create mode 100644 crmeb/src/main/resources/mapper/store/StorePinkMapper.xml create mode 100644 crmeb/src/main/resources/mapper/store/StoreProductAttrMapper.xml create mode 100644 crmeb/src/main/resources/mapper/store/StoreProductAttrResultMapper.xml create mode 100644 crmeb/src/main/resources/mapper/store/StoreProductAttrValueMapper.xml create mode 100644 crmeb/src/main/resources/mapper/store/StoreProductCateMapper.xml create mode 100644 crmeb/src/main/resources/mapper/store/StoreProductCouponMapper.xml create mode 100644 crmeb/src/main/resources/mapper/store/StoreProductDescriptionMapper.xml create mode 100644 crmeb/src/main/resources/mapper/store/StoreProductMapper.xml create mode 100644 crmeb/src/main/resources/mapper/store/StoreProductRelationMapper.xml create mode 100644 crmeb/src/main/resources/mapper/store/StoreProductReplyMapper.xml create mode 100644 crmeb/src/main/resources/mapper/store/StoreProductRuleMapper.xml create mode 100644 crmeb/src/main/resources/mapper/store/StoreServiceLogMapper.xml create mode 100644 crmeb/src/main/resources/mapper/store/StoreServiceMapper.xml create mode 100644 crmeb/src/main/resources/mapper/system/SystemAdminMapper.xml create mode 100644 crmeb/src/main/resources/mapper/system/SystemAttachmentMapper.xml create mode 100644 crmeb/src/main/resources/mapper/system/SystemCityMapper.xml create mode 100644 crmeb/src/main/resources/mapper/system/SystemConfigMapper.xml create mode 100644 crmeb/src/main/resources/mapper/system/SystemConfigTabMapper.xml create mode 100644 crmeb/src/main/resources/mapper/system/SystemFileMapper.xml create mode 100644 crmeb/src/main/resources/mapper/system/SystemFormTempMapper.xml create mode 100644 crmeb/src/main/resources/mapper/system/SystemGroupDataMapper.xml create mode 100644 crmeb/src/main/resources/mapper/system/SystemGroupMapper.xml create mode 100644 crmeb/src/main/resources/mapper/system/SystemLogMapper.xml create mode 100644 crmeb/src/main/resources/mapper/system/SystemNoticeAdminMapper.xml create mode 100644 crmeb/src/main/resources/mapper/system/SystemNoticeMapper.xml create mode 100644 crmeb/src/main/resources/mapper/system/SystemRoleMapper.xml create mode 100644 crmeb/src/main/resources/mapper/system/SystemStoreMapper.xml create mode 100644 crmeb/src/main/resources/mapper/system/SystemStoreStaffMapper.xml create mode 100644 crmeb/src/main/resources/mapper/system/SystemUserLevelMapper.xml create mode 100644 crmeb/src/main/resources/mapper/system/SystemUserTaskMapper.xml create mode 100644 crmeb/src/main/resources/mapper/user/UserAddressMapper.xml create mode 100644 crmeb/src/main/resources/mapper/user/UserBillMapper.xml create mode 100644 crmeb/src/main/resources/mapper/user/UserGroupMapper.xml create mode 100644 crmeb/src/main/resources/mapper/user/UserLevelMapper.xml create mode 100644 crmeb/src/main/resources/mapper/user/UserMapper.xml create mode 100644 crmeb/src/main/resources/mapper/user/UserNoticeMapper.xml create mode 100644 crmeb/src/main/resources/mapper/user/UserSignMapper.xml create mode 100644 crmeb/src/main/resources/mapper/user/UserTagMapper.xml create mode 100644 crmeb/src/main/resources/mapper/user/UserTaskFinishMapper.xml create mode 100644 crmeb/src/main/resources/mapper/user/UserTokenMapper.xml create mode 100644 crmeb/src/main/resources/mapper/wechat/RoutineAccessTokenMapper.xml create mode 100644 crmeb/src/main/resources/mapper/wechat/RoutineFormIdMapper.xml create mode 100644 crmeb/src/main/resources/mapper/wechat/RoutineQrcodeMapper.xml create mode 100644 crmeb/src/main/resources/mapper/wechat/TemplateMessageMapper.xml create mode 100644 crmeb/src/main/resources/mapper/wechat/WechatMediaMapper.xml create mode 100644 crmeb/src/main/resources/mapper/wechat/WechatMessageMapper.xml create mode 100644 crmeb/src/main/resources/mapper/wechat/WechatQrcodeMapper.xml create mode 100644 crmeb/src/main/resources/mapper/wechat/WechatReplyMapper.xml create mode 100644 crmeb/src/main/resources/templates/controller.java.vm create mode 100644 crmeb/src/main/resources/templates/mapper.vm create mode 100644 crmeb/src/main/webapp/index.jsp create mode 100644 crmeb/src/test/java/com/zbkj/crmeb/CrmebApplicationTests.java create mode 100644 crmeb/src/test/java/com/zbkj/crmeb/store/service/impl/StoreProductRelationServiceImplTest.java create mode 100644 crmeb/src/test/java/com/zbkj/crmeb/store/service/impl/StoreProductReplyServiceImplTest.java create mode 100644 crmeb/src/test/java/com/zbkj/crmeb/user/service/impl/UserServiceImplTest.java create mode 100755 crmeb/start.sh create mode 100644 crmeb_java_v1.0.sql diff --git a/README.md b/README.md index c6903fc8..927737c8 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,105 @@ -# crmeb_java -crmeb_java +CRMEB JAVA +=============== + +> 运行环境要求JAVA1.8。 + +注意:请尽量遵循阿里巴巴开发规范,可以减少在开发过程中出现不必要的错误 + +项目内包含三个子项目 + +## crmeb项目结构详细说明, 此处主要是Api +~~~ + crmeb + │ ├─ crmeb_log 日志 + │ ├─ image图片临时文件夹 + │ ├─ /src/main/ + │ ├─ java/com + │ ├─ aop 切片 + │ ├─ common 公用基础类 + │ ├─ constants 常量类 + │ ├─ exception 异常 + │ ├─ filter 过滤器 + │ ├─ interceptor 拦截器 + │ ├─ utils 工具类 + │ ├─ zbkj.crmeb 模块服务 + │ ├─ article 文章 + │ ├─ authorization 后台用户登录,token + │ ├─ category 分类服务 + │ ├─ config 配置 + │ ├─ export 导出 + │ ├─ express 物流 + │ ├─ finance 资金 + │ ├─ front 对移动端接口 + │ ├─ marketing 营销 + │ ├─ payment 支付 + │ ├─ pub 公共服务(可根据自己情况决定此处是否隐藏) + │ ├─ sms 短信 + │ ├─ statistics 统计 + │ ├─ store 产品、订单 + │ ├─ system 系统服务 + │ ├─ task 计划任务 + │ ├─ upload 上传 + │ ├─ user 用户 + │ ├─ validatecode 验证码 + │ ├─ wechat 微信相关 + │ └─ wechatMessage 微信消息 + │ ├─resource 资源文件 + │ ├─ mapper mapper文件 按模块分文件夹 + │ ├─ application-*.yml 配置文件,在启动项目的时候使用 + └─sql sql文件目录 + +~~~ +## 主要特性 + +有详细的代码注释,有完整系统手册 +### SpringBoot框架 +使用SpringBoot框架框架开发 +### 前端采用Vue CLI框架 +前端使用Vue CLI框架nodejs打包,页面加载更流畅,用户体验更好 +### 标准接口 +标准接口、前后端分离,二次开发更方便 +### 支持队列 +降低流量高峰,解除耦合,高可用 +### 无缝事件机制 +行为扩展更方便,方便二次开发 +### 数据表格导出 +Excel数据导出,导出表格更加美观可视; +### 数据统计分析 +后台使用ECharts图表统计,实现用户、产品、订单、资金等统计分析 +### 强大的后台权限管理 +后台多种角色、多重身份权限管理,权限可以控制到每一步操作 +### 强大的表单生成控件 +可以自由配置开发表单,减少前端工作量,后端接口统一调用 + + +## 安装 + +## 创建三个站点 +1. 把crmeb内的文件夹上传到 接口站点,此站点重定向到自己配置的端口,详情见crmeb项目.md文档 +2. 打包app项目,请使用uniapp专业工具 +3. 打包admin项目,详情见admin文件夹里.md文档 +4. 新建数据库导入sql文件 + +##解析三个域名: +1. api.xx.com | 此域名配置到crmeb站点下 需要做重定向域名 +2. app.xx.com +3. admin.xx.com + + +## admin项目超级管理员 +admin 123456 + +## 参与开发 + +请参阅 [CRMEB](https://github.com/crmeb/crmeb_java)。 + +## 版权信息 + + +本项目包含的第三方源码和二进制文件之版权信息另行标注。 + +版权所有Copyright © 2017-2020 by CRMEB (http://www.crmeb.com) + +All rights reserved。 + +CRMEB® 商标和著作权所有者为西安众邦网络科技有限公司。 diff --git a/admin/.editorconfig b/admin/.editorconfig new file mode 100644 index 00000000..3454886e --- /dev/null +++ b/admin/.editorconfig @@ -0,0 +1,14 @@ +# https://editorconfig.org +root = true + +[*] +charset = utf-8 +indent_style = space +indent_size = 2 +end_of_line = lf +insert_final_newline = true +trim_trailing_whitespace = true + +[*.md] +insert_final_newline = false +trim_trailing_whitespace = false diff --git a/admin/.env.development b/admin/.env.development new file mode 100644 index 00000000..b0969b77 --- /dev/null +++ b/admin/.env.development @@ -0,0 +1,16 @@ +# just a flag +ENV = 'development' + +# base api +# VUE_APP_BASE_API = '/dev-api' +# VUE_APP_BASE_API = 'https://api.java.crmeb.net' + VUE_APP_BASE_API = 'https://api.java.crmeb.net' + +# vue-cli uses the VUE_CLI_BABEL_TRANSPILE_MODULES environment variable, +# to control whether the babel-plugin-dynamic-import-node plugin is enabled. +# It only does one thing by converting all import() to require(). +# This configuration can significantly increase the speed of hot updates, +# when you have a large number of pages. +# Detail: https://github.com/vuejs/vue-cli/blob/dev/packages/@vue/babel-preset-app/index.js + +VUE_CLI_BABEL_TRANSPILE_MODULES = true diff --git a/admin/.env.production b/admin/.env.production new file mode 100644 index 00000000..2242ce1c --- /dev/null +++ b/admin/.env.production @@ -0,0 +1,7 @@ +# just a flag +ENV = 'production' + +# base api +# VUE_APP_BASE_API = '/prod-api' +VUE_APP_BASE_API = 'https://api.java.crmeb.net' + diff --git a/admin/.env.staging b/admin/.env.staging new file mode 100644 index 00000000..a8793a09 --- /dev/null +++ b/admin/.env.staging @@ -0,0 +1,8 @@ +NODE_ENV = production + +# just a flag +ENV = 'staging' + +# base api +VUE_APP_BASE_API = '/stage-api' + diff --git a/admin/.eslintignore b/admin/.eslintignore new file mode 100644 index 00000000..9611f530 --- /dev/null +++ b/admin/.eslintignore @@ -0,0 +1,7 @@ +build/*.js +src/assets +public +dist +src/components/FormGenerator +src/directive +src/ diff --git a/admin/.eslintrc.js b/admin/.eslintrc.js new file mode 100644 index 00000000..b0c7f138 --- /dev/null +++ b/admin/.eslintrc.js @@ -0,0 +1,396 @@ +module.exports = { + root: true, + parserOptions: { + parser: 'babel-eslint', + sourceType: 'module' + }, + env: { + browser: true, + node: true, + es6: true, + }, + extends: ['plugin:vue/recommended', 'eslint:recommended'], + + // add your custom rules here + //it is base on https://github.com/vuejs/eslint-config-vue + rules: { + "vue/max-attributes-per-line": [2, { + "singleline": 10, + "multiline": { + "max": 1, + "allowFirstLine": false + } + }], + "vue/singleline-html-element-content-newline": "off", + "vue/multiline-html-element-content-newline":"off", + "vue/name-property-casing": ["error", "PascalCase"], + "vue/no-v-html": "off", + 'accessor-pairs': 2, + 'arrow-spacing': [2, { + 'before': true, + 'after': true + }], + 'block-spacing': [2, 'always'], + 'brace-style': [2, '1tbs', { + 'allowSingleLine': true + }], + 'camelcase': [0, { + 'properties': 'always' + }], + 'comma-dangle': [2, 'never'], + 'comma-spacing': [2, { + 'before': false, + 'after': true + }], + 'comma-style': [2, 'last'], + 'constructor-super': 2, + 'curly': [2, 'multi-line'], + 'dot-location': [2, 'property'], + 'eol-last': 2, + 'eqeqeq': ["error", "always", {"null": "ignore"}], + 'generator-star-spacing': [2, { + 'before': true, + 'after': true + }], + 'handle-callback-err': [2, '^(err|error)$'], + 'indent': [2, 2, { + 'SwitchCase': 1 + }], + 'jsx-quotes': [2, 'prefer-single'], + 'key-spacing': [2, { + 'beforeColon': false, + 'afterColon': true + }], + 'keyword-spacing': [2, { + 'before': true, + 'after': true + }], + 'new-cap': [2, { + 'newIsCap': true, + 'capIsNew': false + }], + 'new-parens': 2, + 'no-array-constructor': 2, + 'no-caller': 2, + 'no-console': 'off', + 'no-class-assign': 2, + 'no-cond-assign': 2, + 'no-const-assign': 2, + 'no-control-regex': 0, + 'no-delete-var': 2, + 'no-dupe-args': 2, + 'no-dupe-class-members': 2, + 'no-dupe-keys': 2, + 'no-duplicate-case': 2, + 'no-empty-character-class': 2, + 'no-empty-pattern': 2, + 'no-eval': 2, + 'no-ex-assign': 2, + 'no-extend-native': 2, + 'no-extra-bind': 2, + 'no-extra-boolean-cast': 2, + 'no-extra-parens': [2, 'functions'], + 'no-fallthrough': 2, + 'no-floating-decimal': 2, + 'no-func-assign': 2, + 'no-implied-eval': 2, + 'no-inner-declarations': [2, 'functions'], + 'no-invalid-regexp': 2, + 'no-irregular-whitespace': 2, + 'no-iterator': 2, + 'no-label-var': 2, + 'no-labels': [2, { + 'allowLoop': false, + 'allowSwitch': false + }], + 'no-lone-blocks': 2, + 'no-mixed-spaces-and-tabs': 2, + 'no-multi-spaces': 2, + 'no-multi-str': 2, + 'no-multiple-empty-lines': [2, { + 'max': 1 + }], + 'no-native-reassign': 2, + 'no-negated-in-lhs': 2, + 'no-new-object': 2, + 'no-new-require': 2, + 'no-new-symbol': 2, + 'no-new-wrappers': 2, + 'no-obj-calls': 2, + 'no-octal': 2, + 'no-octal-escape': 2, + 'no-path-concat': 2, + 'no-proto': 2, + 'no-redeclare': 2, + 'no-regex-spaces': 2, + 'no-return-assign': [2, 'except-parens'], + 'no-self-assign': 2, + 'no-self-compare': 2, + 'no-sequences': 2, + 'no-shadow-restricted-names': 2, + 'no-spaced-func': 2, + 'no-sparse-arrays': 2, + 'no-this-before-super': 2, + 'no-throw-literal': 2, + 'no-trailing-spaces': 2, + 'no-undef': 2, + 'no-undef-init': 2, + 'no-unexpected-multiline': 2, + 'no-unmodified-loop-condition': 2, + 'no-unneeded-ternary': [2, { + 'defaultAssignment': false + }], + 'no-unreachable': 2, + 'no-unsafe-finally': 2, + 'no-unused-vars': [2, { + 'vars': 'all', + 'args': 'none' + }], + 'no-useless-call': 2, + 'no-useless-computed-key': 2, + 'no-useless-constructor': 2, + 'no-useless-escape': 0, + 'no-whitespace-before-property': 2, + 'no-with': 2, + 'one-var': [2, { + 'initialized': 'never' + }], + 'operator-linebreak': [2, 'after', { + 'overrides': { + '?': 'before', + ':': 'before' + } + }], + 'padded-blocks': [2, 'never'], + 'quotes': [2, 'single', { + 'avoidEscape': true, + 'allowTemplateLiterals': true + }], + 'semi': [2, 'never'], + 'semi-spacing': [2, { + 'before': false, + 'after': true + }], + 'space-before-blocks': [2, 'always'], + 'space-before-function-paren': [2, 'never'], + 'space-in-parens': [2, 'never'], + 'space-infix-ops': 2, + 'space-unary-ops': [2, { + 'words': true, + 'nonwords': false + }], + 'spaced-comment': [2, 'always', { + 'markers': ['global', 'globals', 'eslint', 'eslint-disable', '*package', '!', ','] + }], + 'template-curly-spacing': [2, 'never'], + 'use-isnan': 2, + 'valid-typeof': 2, + 'wrap-iife': [2, 'any'], + 'yield-star-spacing': [2, 'both'], + 'yoda': [2, 'never'], + 'prefer-const': 2, + 'no-debugger': process.env.NODE_ENV === 'production' ? 2 : 0, + 'object-curly-spacing': [2, 'always', { + objectsInObjects: false + }], + 'array-bracket-spacing': [2, 'never'] + } +} +module.exports = { + root: true, + parserOptions: { + parser: 'babel-eslint', + sourceType: 'module' + }, + env: { + browser: true, + node: true, + es6: true, + }, + extends: ['plugin:vue/recommended', 'eslint:recommended'], + + // add your custom rules here + //it is base on https://github.com/vuejs/eslint-config-vue + rules: { + "vue/max-attributes-per-line": [2, { + "singleline": 10, + "multiline": { + "max": 1, + "allowFirstLine": false + } + }], + "vue/singleline-html-element-content-newline": "off", + "vue/multiline-html-element-content-newline":"off", + "vue/name-property-casing": ["error", "PascalCase"], + "vue/no-v-html": "off", + 'accessor-pairs': 2, + 'arrow-spacing': [2, { + 'before': true, + 'after': true + }], + 'block-spacing': [2, 'always'], + 'brace-style': [2, '1tbs', { + 'allowSingleLine': true + }], + 'camelcase': [0, { + 'properties': 'always' + }], + 'comma-dangle': [2, 'never'], + 'comma-spacing': [2, { + 'before': false, + 'after': true + }], + 'comma-style': [2, 'last'], + 'constructor-super': 2, + 'curly': [2, 'multi-line'], + 'dot-location': [2, 'property'], + 'eol-last': 2, + 'eqeqeq': ["error", "always", {"null": "ignore"}], + 'generator-star-spacing': [2, { + 'before': true, + 'after': true + }], + 'handle-callback-err': [2, '^(err|error)$'], + 'indent': [2, 2, { + 'SwitchCase': 1 + }], + 'jsx-quotes': [2, 'prefer-single'], + 'key-spacing': [2, { + 'beforeColon': false, + 'afterColon': true + }], + 'keyword-spacing': [2, { + 'before': true, + 'after': true + }], + 'new-cap': [2, { + 'newIsCap': true, + 'capIsNew': false + }], + 'new-parens': 2, + 'no-array-constructor': 2, + 'no-caller': 2, + 'no-console': 'off', + 'no-class-assign': 2, + 'no-cond-assign': 2, + 'no-const-assign': 2, + 'no-control-regex': 0, + 'no-delete-var': 2, + 'no-dupe-args': 2, + 'no-dupe-class-members': 2, + 'no-dupe-keys': 2, + 'no-duplicate-case': 2, + 'no-empty-character-class': 2, + 'no-empty-pattern': 2, + 'no-eval': 2, + 'no-ex-assign': 2, + 'no-extend-native': 2, + 'no-extra-bind': 2, + 'no-extra-boolean-cast': 2, + 'no-extra-parens': [2, 'functions'], + 'no-fallthrough': 2, + 'no-floating-decimal': 2, + 'no-func-assign': 2, + 'no-implied-eval': 2, + 'no-inner-declarations': [2, 'functions'], + 'no-invalid-regexp': 2, + 'no-irregular-whitespace': 2, + 'no-iterator': 2, + 'no-label-var': 2, + 'no-labels': [2, { + 'allowLoop': false, + 'allowSwitch': false + }], + 'no-lone-blocks': 2, + 'no-mixed-spaces-and-tabs': 2, + 'no-multi-spaces': 2, + 'no-multi-str': 2, + 'no-multiple-empty-lines': [2, { + 'max': 1 + }], + 'no-native-reassign': 2, + 'no-negated-in-lhs': 2, + 'no-new-object': 2, + 'no-new-require': 2, + 'no-new-symbol': 2, + 'no-new-wrappers': 2, + 'no-obj-calls': 2, + 'no-octal': 2, + 'no-octal-escape': 2, + 'no-path-concat': 2, + 'no-proto': 2, + 'no-redeclare': 2, + 'no-regex-spaces': 2, + 'no-return-assign': [2, 'except-parens'], + 'no-self-assign': 2, + 'no-self-compare': 2, + 'no-sequences': 2, + 'no-shadow-restricted-names': 2, + 'no-spaced-func': 2, + 'no-sparse-arrays': 2, + 'no-this-before-super': 2, + 'no-throw-literal': 2, + 'no-trailing-spaces': 2, + 'no-undef': 2, + 'no-undef-init': 2, + 'no-unexpected-multiline': 2, + 'no-unmodified-loop-condition': 2, + 'no-unneeded-ternary': [2, { + 'defaultAssignment': false + }], + 'no-unreachable': 2, + 'no-unsafe-finally': 2, + 'no-unused-vars': [2, { + 'vars': 'all', + 'args': 'none' + }], + 'no-useless-call': 2, + 'no-useless-computed-key': 2, + 'no-useless-constructor': 2, + 'no-useless-escape': 0, + 'no-whitespace-before-property': 2, + 'no-with': 2, + 'one-var': [2, { + 'initialized': 'never' + }], + 'operator-linebreak': [2, 'after', { + 'overrides': { + '?': 'before', + ':': 'before' + } + }], + 'padded-blocks': [2, 'never'], + 'quotes': [2, 'single', { + 'avoidEscape': true, + 'allowTemplateLiterals': true + }], + 'semi': [2, 'never'], + 'semi-spacing': [2, { + 'before': false, + 'after': true + }], + 'space-before-blocks': [2, 'always'], + 'space-before-function-paren': [2, 'never'], + 'space-in-parens': [2, 'never'], + 'space-infix-ops': 2, + 'space-unary-ops': [2, { + 'words': true, + 'nonwords': false + }], + 'spaced-comment': [2, 'always', { + 'markers': ['global', 'globals', 'eslint', 'eslint-disable', '*package', '!', ','] + }], + 'template-curly-spacing': [2, 'never'], + 'use-isnan': 2, + 'valid-typeof': 2, + 'wrap-iife': [2, 'any'], + 'yield-star-spacing': [2, 'both'], + 'yoda': [2, 'never'], + 'prefer-const': 2, + 'no-debugger': process.env.NODE_ENV === 'production' ? 2 : 0, + 'object-curly-spacing': [2, 'always', { + objectsInObjects: false + }], + 'array-bracket-spacing': [2, 'never'] + } +} diff --git a/admin/.travis.yml b/admin/.travis.yml new file mode 100644 index 00000000..f4be7a08 --- /dev/null +++ b/admin/.travis.yml @@ -0,0 +1,5 @@ +language: node_js +node_js: 10 +script: npm run test +notifications: + email: false diff --git a/admin/LICENSE b/admin/LICENSE new file mode 100644 index 00000000..61515750 --- /dev/null +++ b/admin/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2017-present PanJiaChen + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/admin/README.ZBKJ.md b/admin/README.ZBKJ.md new file mode 100644 index 00000000..ec1a6599 --- /dev/null +++ b/admin/README.ZBKJ.md @@ -0,0 +1,15 @@ +公用组件 +无限极分类组件 src/components/Category +使用范围:菜单,文章等各种分类配置数据 + +表单生成组件 +https://github.com/JakHuang/form-generator + +json渲染表单以及是否需要编辑数据回填的功能以下为例 +示例:src/views/maintain/devconfig/combineEdit.vue + + + +注意:设置单选按钮的值时需要带上单引号,要不渲染待编辑数据时不会自动选中 \ No newline at end of file diff --git a/admin/README.es.md b/admin/README.es.md new file mode 100644 index 00000000..396556f5 --- /dev/null +++ b/admin/README.es.md @@ -0,0 +1,217 @@ +

+ +

+ +

+ + vue + + + element-ui + + + Estado de Construcción + + + Licencia + + + Liberación Github + + + Gitter + + + Donación + +

+ +Español | [English](./README.md) | [简体中文](./README.zh-CN.md) | [日本語](./README.ja.md) + +## Introducción + +[vue-element-admin](https://panjiachen.github.io/vue-element-admin) es una interfáz de administración preparada para producción. Está basada en [vue](https://github.com/vuejs/vue) y usa [element-ui](https://github.com/ElemeFE/element) como conjunto de herramientas de interfáz de usuario. + +Vue Element Admin es una solución práctica basada en la nueva plataforma de desarrollo de vue, construida con soporte a i18 para el manejo de múltiples lenguajes, plantillas estándares para aplicaciones de negocio y un conjunto de asombrosas características. Esta herramienta ayuda a construir largas y complejas Aplicacones de una sola página (SPA). Creo que lo que necesites hacer, este proyecto te ayudará. + +- [Vista Prévia de la Aplicación](https://panjiachen.github.io/vue-element-admin) + +- [Documentación](https://panjiachen.github.io/vue-element-admin-site/) + +- [Canal de Gitter](https://gitter.im/vue-element-admin/discuss) + +- [Para Donaciones](https://panjiachen.github.io/vue-element-admin-site/donate/) + +- [Enlace de Wiki](https://github.com/PanJiaChen/vue-element-admin/wiki) + +- [Canal de Gitee](https://panjiachen.gitee.io/vue-element-admin/) + +- Plantilla base recomendada para usar: [vue-admin-template](https://github.com/PanJiaChen/vue-admin-template) +- Aplicación de Escritorio: [electron-vue-admin](https://github.com/PanJiaChen/electron-vue-admin) +- Plantilla de Typescript: [vue-typescript-admin-template](https://github.com/Armour/vue-typescript-admin-template) (Créditos: [@Armour](https://github.com/Armour)) +- [awesome-project](https://github.com/PanJiaChen/vue-element-admin/issues/2312) + +**Después de la versión `v4.1.0+`, la rama por defecto master no tendrá soporte para i18n. Por favor use [i18n](https://github.com/PanJiaChen/vue-element-admin/tree/i18n), los cambios serán incluidos en la rama master** + +**la versión actual es `v4.0+` construida con `vue-cli`. Si encuentra algún problema, por favor coloque un [issue](https://github.com/PanJiaChen/vue-element-admin/issues/new). Si desea usar la versión anterior, puede cambiar de rama a [tag/3.11.0](https://github.com/PanJiaChen/vue-element-admin/tree/tag/3.11.0), no relacionado con `vue-cli`** + +**Este proyecto no está soportado para versiones muy viejas de navegadores (e.g. IE).** + +## Preparación + +Necesita instalar [node](https://nodejs.org/) y [git](https://git-scm.com/) localmente. El proyecto es basado en [ES2015+](https://es6.ruanyifeng.com/), [vue](https://cn.vuejs.org/index.html), [vuex](https://vuex.vuejs.org/zh-cn/), [vue-router](https://router.vuejs.org/zh-cn/), [vue-cli](https://github.com/vuejs/vue-cli) , [axios](https://github.com/axios/axios) and [element-ui](https://github.com/ElemeFE/element), toda la solicitud de datos simulada se realiza a través de [Mock.js](https://github.com/nuysoft/Mock). +Entendiendo y aprendiendo esto pudiera ayudarle con su proyecto. + +

+ +

+ +## Patrocinantes + +Se un patrocinante y pon tu logo en nuestro README on GitHub con un enlace directo a tu sitio web. [[Se un Patrocinante]](https://www.patreon.com/panjiachen) + +

Plantilla de Dashboard de administración hecha con Vue, React y Angular.

+ +## Características + +``` +- Iniciar / Cerrar Sesión + +- Permisos de Authentication + - Página de Permisos + - Directivas de permisos + - Página de configuración de permisos + - Autenticación por dos pasos + +- Construcción Multi-entorno + - dev sit stage producción + +- Características Globales + - I18n + - Temas dinámicos + - Dynamic sidebar (soporte a rutas multi-nivel) + - Barra de rutas dinámica + - Tags-view (Tab page Support right-click operation) + - Svg Sprite + - Datos de simulación con Mock + - Pantalla completa + - Responsive Sidebar + +- Editor + - Editor de Texto Enriquecido + - Editor Markdown + - Editor JSON + +- Excel + - Exportación a Excel + - Carga de Excel + - Visualización de Excel + - Exportación como zip + +- Tabla + - Tabla Dinámica + - Tabla con Arrastrar y Soltar + - Tabla de edición en línea + +- Páginas de Error + - 401 + - 404 + +- Componentes + - Carga de Avatar + - Botón para subir al inicio + - Arrastrar y Soltar (Diaglogo) + - Arrastrar y Soltar (Seleccionar) + - Arrastrar y Soltar (Kanban) + - Arrastrar y Soltar (Lista) + - Panel de división + - Componente para soltar archivos + - Adhesión de objetos + - Contador hasta + +- Ejemplo Avanzado +- Registro de Errores +- Tablero de indicadores +- Página de Guías +- ECharts (Gráficos) +- Portapapeles +- Convertidor de Markdown a html +``` + +## Iniciando + +```bash +# clone el proyecto +git clone https://github.com/PanJiaChen/vue-element-admin.git + +# vaya al directorio clonado +cd vue-element-admin + +# instale las dependencias +npm install + +# corra el proyecto como desarrollador +npm run dev +``` + +Automáticamente se abrirá el siguiente enlace en su navegador http://localhost:9527 + +## Construcción + +```bash +# Construcción para entornos de prueba +npm run build:stage + +# Construcción para entornos de producción +npm run build:prod +``` + +## Avanzado + +```bash +# Vista previa con efectos de entorno +npm run preview + +# Vista previa con efectos + análisis de recursos estáticos +npm run preview -- --report + +# Chequeo de formato de código +npm run lint + +# Chequeo de formato de código y auto-corrección +npm run lint -- --fix +``` + +Vaya a [Documentación](https://panjiachen.github.io/vue-element-admin-site/guide/essentials/deploy.html) para mayor información + +## Registro de Cambios + +Los cambios detallados por cada liberación se encuentran en [notas de liberación](https://github.com/PanJiaChen/vue-element-admin/releases). + +## Demostración en línea + +[Vista Prévia de la Aplicación](https://panjiachen.github.io/vue-element-admin) + +## Donación + +Si este proyecto es de mucha ayuda para ti, puedes comprarle al autor un vaso de jugo :tropical_drink: + +![Donar](https://wpimg.wallstcn.com/bd273f0d-83a0-4ef2-92e1-9ac8ed3746b9.png) + +[dona por Paypal](https://www.paypal.me/panfree23) + +[Comprame un Café](https://www.buymeacoffee.com/Pan) + +## Navegadores Soportados + +Navegadores modernos e Internet Explorer 10+. + +| [IE / Edge](https://godban.github.io/browsers-support-badges/)
IE / Edge | [Firefox](https://godban.github.io/browsers-support-badges/)
Firefox | [Chrome](https://godban.github.io/browsers-support-badges/)
Chrome | [Safari](https://godban.github.io/browsers-support-badges/)
Safari | +| --------- | --------- | --------- | --------- | +| IE10, IE11, Edge| últimas 2 versiones| últimas 2 versiones| últimas 2 versiones + +## Licencia + +[MIT](https://github.com/PanJiaChen/vue-element-admin/blob/master/LICENSE) + +Copyright (c) 2017-presente PanJiaChen diff --git a/admin/README.ja.md b/admin/README.ja.md new file mode 100644 index 00000000..0c49685b --- /dev/null +++ b/admin/README.ja.md @@ -0,0 +1,213 @@ +

+ +

+ +

+ + vue + + + element-ui + + + Build Status + + + license + + + GitHub release + + + gitter + + + donate + +

+ +日本語 | [English](./README.md) | [简体中文](./README.zh-CN.md) | [Spanish](./README.es.md) + +## 概要 + +[vue-element-admin](https://panjiachen.github.io/vue-element-admin) は管理画面のフロントエンドのインタフェースで、[vue](https://github.com/vuejs/vue) と [element-ui](https://github.com/ElemeFE/element)を使っています。i18nの多言語対応、可変ルート、権限、典型的なビジネスアプリテンプレートであり、豊富なコンポーネントを提供しています。素早くビジネス用の管理画面の現型を構築に役立ちます。 + +- [デモページ](https://panjiachen.github.io/vue-element-admin) + +- [ドキュメント](https://panjiachen.github.io/vue-element-admin-site/) + +- [Gitter](https://gitter.im/vue-element-admin/discuss) + +- [Donate](https://panjiachen.gitee.io/vue-element-admin-site/zh/donate) + +- [Wiki](https://github.com/PanJiaChen/vue-element-admin/wiki) + +- おすすめシンプルテンプレート: [vue-admin-template](https://github.com/PanJiaChen/vue-admin-template) +- デスクトップバージョン: [electron-vue-admin](https://github.com/PanJiaChen/electron-vue-admin) +- Typescriptバージョン: [vue-typescript-admin-template](https://github.com/Armour/vue-typescript-admin-template) (感謝: [@Armour](https://github.com/Armour)) +- [awesome-project](https://github.com/PanJiaChen/vue-element-admin/issues/2312) + +**バージョン`v4.1.0+`以降について、デフォルトのmasterブランチではi18nをサポートしていません。masterブランチと共にアップデートされる[i18n Branch](https://github.com/PanJiaChen/vue-element-admin/tree/i18n)を使用してください。 ** + +**現在のバージョン `v4.0+` は `vue-cli` で構築していて、バグ報告は[issue](https://github.com/PanJiaChen/vue-element-admin/issues/new)のissueでお願いします。旧バージョン[tag/3.11.0](https://github.com/PanJiaChen/vue-element-admin/tree/tag/3.11.0)もあります。こちらは`vue-cli`に依存しないです。** + +**低いバージョンのブラウザはサーポートしないです(例えば ie),必要があれば polyfill を追加してください。 [詳細はこちら](https://github.com/PanJiaChen/vue-element-admin/wiki#babel-polyfill)** + +## 前準備 + +ローカル環境に [node](http://nodejs.org/) と [git](https://git-scm.com/)のインストールが必要です。[ES2015+](http://es6.ruanyifeng.com/)、[vue](https://cn.vuejs.org/index.html)、[vuex](https://vuex.vuejs.org/zh-cn/)、[vue-router](https://router.vuejs.org/zh-cn/) 、[vue-cli](https://github.com/vuejs/vue-cli) 、[axios](https://github.com/axios/axios) と [element-ui](https://github.com/ElemeFE/element)で開発しています。Requestは[Mock.js](https://github.com/nuysoft/Mock)のモックデータを使っています。 + +**バグ修正や新規機能追加のissue と pull requestは大歓迎です。** + +

+ +

+ +## Sponsors + +Become a sponsor and get your logo on our README on GitHub with a link to your site. [[Become a sponsor]](https://www.patreon.com/panjiachen) + +

Admin Dashboard Templates made with Vue, React and Angular.

+ +## 機能一覧 + +``` +- ログイン / ログアウト + +- Auth認証 + - ページ権限 + - 権限パーミッション + - 権限設定 + - 外部IDでログイン + +- 複数環境デプロイ + - dev sit stage prod + +- 共通機能 + - 多言語切替 + - テーマ切替 + - サイトメニュー(ルートから生成) + - パンくずリストナビゲーション + - タブナビゲーション + - Svg Sprite アイコン + - ローカル/バックエンド モック データ + - Screenfull + +- WYSIWYG + - TinyMCE + - Markdown + - JSON + +- Excel + - エクスポート + - インポート + - リード + - Zip + +- テーブル + - ダイナミックテーブル + - ドラッグアンドドロップテーブル + - インラインエディットテーブル + +- エラーページ + - 401 + - 404 + +- コンポーネント + - アバターアップロード + - トップに戻る + - ドラッグダイアログ + - ドラッグ選択 + - ドラッグKanban + - ドラッグリスト + - ペインの分割 + - Dropzone + - スティッキー + - CountTo + +- 高度なサンプル +- エラーログ +- ダッシュボード +- ガイドページ +- ECharts +- クリップボード +- Markdown to html +``` + +## Getting started + +```bash +# clone the project +git clone https://github.com/PanJiaChen/vue-element-admin.git + +# enter the project directory +cd vue-element-admin + +# install dependency +npm install + +# develop +npm run dev +``` + +http://localhost:9527 が自動的に開きます。 + +## Build + +```bash +# build for test environment +npm run build:stage + +# build for production environment +npm run build:prod +``` + +## Advanced + +```bash +# preview the release environment effect +npm run preview + +# preview the release environment effect + static resource analysis +npm run preview -- --report + +# code format check +npm run lint + +# code format check and auto fix +npm run lint -- --fix +``` + +詳細は [Documentation](https://panjiachen.github.io/vue-element-admin-site/guide/essentials/deploy.html) を参照してください。 + +## Changelog + +各リリースの詳細は [release notes](https://github.com/PanJiaChen/vue-element-admin/releases) にあります。 + +## Online Demo + +[Preview](https://panjiachen.github.io/vue-element-admin) + +## Donate + +If you find this project useful, you can buy author a glass of juice :tropical_drink: + +![donate](https://wpimg.wallstcn.com/bd273f0d-83a0-4ef2-92e1-9ac8ed3746b9.png) + +[Paypal Me](https://www.paypal.me/panfree23) + +[Buy me a coffee](https://www.buymeacoffee.com/Pan) + +## Browsers support + +Modern browsers and Internet Explorer 10+. + +| [IE / Edge](https://godban.github.io/browsers-support-badges/)
IE / Edge | [Firefox](https://godban.github.io/browsers-support-badges/)
Firefox | [Chrome](https://godban.github.io/browsers-support-badges/)
Chrome | [Safari](https://godban.github.io/browsers-support-badges/)
Safari | +| --------- | --------- | --------- | --------- | +| IE10, IE11, Edge| last 2 versions| last 2 versions| last 2 versions + +## License + +[MIT](https://github.com/PanJiaChen/vue-element-admin/blob/master/LICENSE) + +Copyright (c) 2017-present PanJiaChen diff --git a/admin/README.md b/admin/README.md new file mode 100644 index 00000000..a6a10447 --- /dev/null +++ b/admin/README.md @@ -0,0 +1,217 @@ +

+ +

+ +

+ + vue + + + element-ui + + + Build Status + + + license + + + GitHub release + + + gitter + + + donate + +

+ +English | [简体中文](./README.zh-CN.md) | [日本語](./README.ja.md) | [Spanish](./README.es.md) + +## Introduction + +[vue-element-admin](https://panjiachen.github.io/vue-element-admin) is a production-ready front-end solution for admin interfaces. It is based on [vue](https://github.com/vuejs/vue) and uses the UI Toolkit [element-ui](https://github.com/ElemeFE/element). + +[vue-element-admin](https://panjiachen.github.io/vue-element-admin) is based on the newest development stack of vue and it has a built-in i18n solution, typical templates for enterprise applications, and lots of awesome features. It helps you build large and complex Single-Page Applications. I believe whatever your needs are, this project will help you. + +- [Preview](https://panjiachen.github.io/vue-element-admin) + +- [Documentation](https://panjiachen.github.io/vue-element-admin-site/) + +- [Gitter](https://gitter.im/vue-element-admin/discuss) + +- [Donate](https://panjiachen.github.io/vue-element-admin-site/donate/) + +- [Wiki](https://github.com/PanJiaChen/vue-element-admin/wiki) + +- [Gitee](https://panjiachen.gitee.io/vue-element-admin/) 国内用户可访问该地址在线预览 + +- Base template recommends using: [vue-admin-template](https://github.com/PanJiaChen/vue-admin-template) +- Desktop: [electron-vue-admin](https://github.com/PanJiaChen/electron-vue-admin) +- Typescript: [vue-typescript-admin-template](https://github.com/Armour/vue-typescript-admin-template) (Credits: [@Armour](https://github.com/Armour)) +- [awesome-project](https://github.com/PanJiaChen/vue-element-admin/issues/2312) + +**After the `v4.1.0+` version, the default master branch will not support i18n. Please use [i18n Branch](https://github.com/PanJiaChen/vue-element-admin/tree/i18n), it will keep up with the master update** + +**The current version is `v4.0+` build on `vue-cli`. If you find a problem, please put [issue](https://github.com/PanJiaChen/vue-element-admin/issues/new). If you want to use the old version , you can switch branch to [tag/3.11.0](https://github.com/PanJiaChen/vue-element-admin/tree/tag/3.11.0), it does not rely on `vue-cli`** + +**This project does not support low version browsers (e.g. IE). Please add polyfill by yourself.** + +## Preparation + +You need to install [node](https://nodejs.org/) and [git](https://git-scm.com/) locally. The project is based on [ES2015+](https://es6.ruanyifeng.com/), [vue](https://cn.vuejs.org/index.html), [vuex](https://vuex.vuejs.org/zh-cn/), [vue-router](https://router.vuejs.org/zh-cn/), [vue-cli](https://github.com/vuejs/vue-cli) , [axios](https://github.com/axios/axios) and [element-ui](https://github.com/ElemeFE/element), all request data is simulated using [Mock.js](https://github.com/nuysoft/Mock). +Understanding and learning this knowledge in advance will greatly help the use of this project. + +

+ +

+ +## Sponsors + +Become a sponsor and get your logo on our README on GitHub with a link to your site. [[Become a sponsor]](https://www.patreon.com/panjiachen) + +

Admin Dashboard Templates made with Vue, React and Angular.

+ +## Features + +``` +- Login / Logout + +- Permission Authentication + - Page permission + - Directive permission + - Permission configuration page + - Two-step login + +- Multi-environment build + - dev sit stage prod + +- Global Features + - I18n + - Multiple dynamic themes + - Dynamic sidebar (supports multi-level routing) + - Dynamic breadcrumb + - Tags-view (Tab page Support right-click operation) + - Svg Sprite + - Mock data + - Screenfull + - Responsive Sidebar + +- Editor + - Rich Text Editor + - Markdown Editor + - JSON Editor + +- Excel + - Export Excel + - Upload Excel + - Visualization Excel + - Export zip + +- Table + - Dynamic Table + - Drag And Drop Table + - Inline Edit Table + +- Error Page + - 401 + - 404 + +- Components + - Avatar Upload + - Back To Top + - Drag Dialog + - Drag Select + - Drag Kanban + - Drag List + - SplitPane + - Dropzone + - Sticky + - CountTo + +- Advanced Example +- Error Log +- Dashboard +- Guide Page +- ECharts +- Clipboard +- Markdown to html +``` + +## Getting started + +```bash +# clone the project +git clone https://github.com/PanJiaChen/vue-element-admin.git + +# enter the project directory +cd vue-element-admin + +# install dependency +npm install + +# develop +npm run dev +``` + +This will automatically open http://localhost:9527 + +## Build + +```bash +# build for test environment +npm run build:stage + +# build for production environment +npm run build:prod +``` + +## Advanced + +```bash +# preview the release environment effect +npm run preview + +# preview the release environment effect + static resource analysis +npm run preview -- --report + +# code format check +npm run lint + +# code format check and auto fix +npm run lint -- --fix +``` + +Refer to [Documentation](https://panjiachen.github.io/vue-element-admin-site/guide/essentials/deploy.html) for more information + +## Changelog + +Detailed changes for each release are documented in the [release notes](https://github.com/PanJiaChen/vue-element-admin/releases). + +## Online Demo + +[Preview](https://panjiachen.github.io/vue-element-admin) + +## Donate + +If you find this project useful, you can buy author a glass of juice :tropical_drink: + +![donate](https://wpimg.wallstcn.com/bd273f0d-83a0-4ef2-92e1-9ac8ed3746b9.png) + +[Paypal Me](https://www.paypal.me/panfree23) + +[Buy me a coffee](https://www.buymeacoffee.com/Pan) + +## Browsers support + +Modern browsers and Internet Explorer 10+. + +| [IE / Edge](https://godban.github.io/browsers-support-badges/)
IE / Edge | [Firefox](https://godban.github.io/browsers-support-badges/)
Firefox | [Chrome](https://godban.github.io/browsers-support-badges/)
Chrome | [Safari](https://godban.github.io/browsers-support-badges/)
Safari | +| --------- | --------- | --------- | --------- | +| IE10, IE11, Edge| last 2 versions| last 2 versions| last 2 versions + +## License + +[MIT](https://github.com/PanJiaChen/vue-element-admin/blob/master/LICENSE) + +Copyright (c) 2017-present PanJiaChen diff --git a/admin/README.zh-CN.md b/admin/README.zh-CN.md new file mode 100644 index 00000000..3df8b8ea --- /dev/null +++ b/admin/README.zh-CN.md @@ -0,0 +1,240 @@ +

+ +

+ +

+ + vue + + + element-ui + + + Build Status + + + license + + + GitHub release + + + gitter + + + donate + +

+ +简体中文 | [English](./README.md) | [日本語](./README.ja.md) | [Spanish](./README.es.md) + +## 简介 + +[vue-element-admin](https://panjiachen.github.io/vue-element-admin) 是一个后台前端解决方案,它基于 [vue](https://github.com/vuejs/vue) 和 [element-ui](https://github.com/ElemeFE/element)实现。它使用了最新的前端技术栈,内置了 i18n 国际化解决方案,动态路由,权限验证,提炼了典型的业务模型,提供了丰富的功能组件,它可以帮助你快速搭建企业级中后台产品原型。相信不管你的需求是什么,本项目都能帮助到你。 + +- [在线预览](https://panjiachen.github.io/vue-element-admin) + +- [使用文档](https://panjiachen.github.io/vue-element-admin-site/zh/) + +- [Gitter 讨论组](https://gitter.im/vue-element-admin/discuss) + +- [Donate](https://panjiachen.gitee.io/vue-element-admin-site/zh/donate) + +- [Wiki](https://github.com/PanJiaChen/vue-element-admin/wiki) + +- [Gitee](https://panjiachen.gitee.io/vue-element-admin/) 在线预览(国内用户可访问该地址) + +- [国内访问文档](https://panjiachen.gitee.io/vue-element-admin-site/zh/) 文档(方便没翻墙的用户查看) + +- 基础模板建议使用: [vue-admin-template](https://github.com/PanJiaChen/vue-admin-template) +- 桌面端: [electron-vue-admin](https://github.com/PanJiaChen/electron-vue-admin) +- Typescript 版: [vue-typescript-admin-template](https://github.com/Armour/vue-typescript-admin-template) (鸣谢: [@Armour](https://github.com/Armour)) +- [awesome-project](https://github.com/PanJiaChen/vue-element-admin/issues/2312) + +**`v4.1.0+`版本之后默认 master 分支将不支持国际化,有需要的请使用[i18n](https://github.com/PanJiaChen/vue-element-admin/tree/i18n)分支,它会和 master 保持同步更新** + +**该项目不支持低版本浏览器(如 ie),有需求请自行添加 polyfill [详情](https://github.com/PanJiaChen/vue-element-admin/wiki#babel-polyfill)** + +**目前版本为 `v4.0+` 基于 `vue-cli` 进行构建,若发现问题,欢迎提[issue](https://github.com/PanJiaChen/vue-element-admin/issues/new)。若你想使用旧版本,可以切换分支到[tag/3.11.0](https://github.com/PanJiaChen/vue-element-admin/tree/tag/3.11.0),它不依赖 `vue-cli`** + +群主 **[圈子](https://jianshiapp.com/circles/1209)** 群主会经常分享一些技术相关的东西,或者加入 [qq 群](https://github.com/PanJiaChen/vue-element-admin/issues/602) 或者关注 [微博](https://weibo.com/u/3423485724?is_all=1) + +## 前序准备 + +你需要在本地安装 [node](http://nodejs.org/) 和 [git](https://git-scm.com/)。本项目技术栈基于 [ES2015+](http://es6.ruanyifeng.com/)、[vue](https://cn.vuejs.org/index.html)、[vuex](https://vuex.vuejs.org/zh-cn/)、[vue-router](https://router.vuejs.org/zh-cn/) 、[vue-cli](https://github.com/vuejs/vue-cli) 、[axios](https://github.com/axios/axios) 和 [element-ui](https://github.com/ElemeFE/element),所有的请求数据都使用[Mock.js](https://github.com/nuysoft/Mock)进行模拟,提前了解和学习这些知识会对使用本项目有很大的帮助。 + +同时配套了系列教程文章,如何从零构建后一个完整的后台项目,建议大家先看完这些文章再来实践本项目 + +- [手摸手,带你用 vue 撸后台 系列一(基础篇)](https://juejin.im/post/59097cd7a22b9d0065fb61d2) +- [手摸手,带你用 vue 撸后台 系列二(登录权限篇)](https://juejin.im/post/591aa14f570c35006961acac) +- [手摸手,带你用 vue 撸后台 系列三 (实战篇)](https://juejin.im/post/593121aa0ce4630057f70d35) +- [手摸手,带你用 vue 撸后台 系列四(vueAdmin 一个极简的后台基础模板)](https://juejin.im/post/595b4d776fb9a06bbe7dba56) +- [手摸手,带你用vue撸后台 系列五(v4.0新版本)](https://juejin.im/post/5c92ff94f265da6128275a85) +- [手摸手,带你封装一个 vue component](https://segmentfault.com/a/1190000009090836) +- [手摸手,带你优雅的使用 icon](https://juejin.im/post/59bb864b5188257e7a427c09) +- [手摸手,带你用合理的姿势使用 webpack4(上)](https://juejin.im/post/5b56909a518825195f499806) +- [手摸手,带你用合理的姿势使用 webpack4(下)](https://juejin.im/post/5b5d6d6f6fb9a04fea58aabc) + +**如有问题请先看上述使用文档和文章,若不能满足,欢迎 issue 和 pr** + +

+ +

+ +## Sponsors + +Become a sponsor and get your logo on our README on GitHub with a link to your site. [[Become a sponsor]](https://www.patreon.com/panjiachen) + +

Admin Dashboard Templates made with Vue, React and Angular.

+ +## 功能 + +``` +- 登录 / 注销 + +- 权限验证 + - 页面权限 + - 指令权限 + - 权限配置 + - 二步登录 + +- 多环境发布 + - dev sit stage prod + +- 全局功能 + - 国际化多语言 + - 多种动态换肤 + - 动态侧边栏(支持多级路由嵌套) + - 动态面包屑 + - 快捷导航(标签页) + - Svg Sprite 图标 + - 本地/后端 mock 数据 + - Screenfull全屏 + - 自适应收缩侧边栏 + +- 编辑器 + - 富文本 + - Markdown + - JSON 等多格式 + +- Excel + - 导出excel + - 导入excel + - 前端可视化excel + - 导出zip + +- 表格 + - 动态表格 + - 拖拽表格 + - 内联编辑 + +- 错误页面 + - 401 + - 404 + +- 組件 + - 头像上传 + - 返回顶部 + - 拖拽Dialog + - 拖拽Select + - 拖拽看板 + - 列表拖拽 + - SplitPane + - Dropzone + - Sticky + - CountTo + +- 综合实例 +- 错误日志 +- Dashboard +- 引导页 +- ECharts 图表 +- Clipboard(剪贴复制) +- Markdown2html +``` + +## 开发 + +```bash +# 克隆项目 +git clone https://github.com/PanJiaChen/vue-element-admin.git + +# 进入项目目录 +cd vue-element-admin + +# 安装依赖 +npm install + +# 建议不要直接使用 cnpm 安装依赖,会有各种诡异的 bug。可以通过如下操作解决 npm 下载速度慢的问题 +npm install --registry=https://registry.npm.taobao.org + +# 启动服务 +npm run dev +``` + +浏览器访问 http://localhost:9527 + +## 发布 + +```bash +# 构建测试环境 +npm run build:stage + +# 构建生产环境 +npm run build:prod +``` + +## 其它 + +```bash +# 预览发布环境效果 +npm run preview + +# 预览发布环境效果 + 静态资源分析 +npm run preview -- --report + +# 代码格式检查 +npm run lint + +# 代码格式检查并自动修复 +npm run lint -- --fix +``` + +更多信息请参考 [使用文档](https://panjiachen.github.io/vue-element-admin-site/zh/) + +## Changelog + +Detailed changes for each release are documented in the [release notes](https://github.com/PanJiaChen/vue-element-admin/releases). + +## Online Demo + +[在线 Demo](https://panjiachen.github.io/vue-element-admin) + +## Donate + +如果你觉得这个项目帮助到了你,你可以帮作者买一杯果汁表示鼓励 :tropical_drink: +![donate](https://panjiachen.github.io/donate/donation.png) + +[更多捐赠方式](https://panjiachen.gitee.io/vue-element-admin-site/zh/donate) + +[Paypal Me](https://www.paypal.me/panfree23) + +[Buy me a coffee](https://www.buymeacoffee.com/Pan) + +## 购买贴纸 + +你也可以通过 购买[官方授权的贴纸](https://smallsticker.com/product/vue-element-admin) 的方式来支持 vue-element-admin - 每售出一张贴纸,本项目将获得 2 元的捐赠。 + +## Browsers support + +Modern browsers and Internet Explorer 10+. + +| [IE / Edge](https://godban.github.io/browsers-support-badges/)
IE / Edge | [Firefox](https://godban.github.io/browsers-support-badges/)
Firefox | [Chrome](https://godban.github.io/browsers-support-badges/)
Chrome | [Safari](https://godban.github.io/browsers-support-badges/)
Safari | +| --------- | --------- | --------- | --------- | +| IE10, IE11, Edge| last 2 versions| last 2 versions| last 2 versions + +## License + +[MIT](https://github.com/PanJiaChen/vue-element-admin/blob/master/LICENSE) + +Copyright (c) 2017-present PanJiaChen diff --git a/admin/babel.config.js b/admin/babel.config.js new file mode 100644 index 00000000..ba179669 --- /dev/null +++ b/admin/babel.config.js @@ -0,0 +1,5 @@ +module.exports = { + presets: [ + '@vue/app' + ] +} diff --git a/admin/build/index.js b/admin/build/index.js new file mode 100644 index 00000000..0c57de2a --- /dev/null +++ b/admin/build/index.js @@ -0,0 +1,35 @@ +const { run } = require('runjs') +const chalk = require('chalk') +const config = require('../vue.config.js') +const rawArgv = process.argv.slice(2) +const args = rawArgv.join(' ') + +if (process.env.npm_config_preview || rawArgv.includes('--preview')) { + const report = rawArgv.includes('--report') + + run(`vue-cli-service build ${args}`) + + const port = 9526 + const publicPath = config.publicPath + + var connect = require('connect') + var serveStatic = require('serve-static') + const app = connect() + + app.use( + publicPath, + serveStatic('./dist', { + index: ['index.html', '/'] + }) + ) + + app.listen(port, function () { + console.log(chalk.green(`> Preview at http://localhost:${port}${publicPath}`)) + if (report) { + console.log(chalk.green(`> Report at http://localhost:${port}${publicPath}report.html`)) + } + + }) +} else { + run(`vue-cli-service build ${args}`) +} diff --git a/admin/jest.config.js b/admin/jest.config.js new file mode 100644 index 00000000..143cdc86 --- /dev/null +++ b/admin/jest.config.js @@ -0,0 +1,24 @@ +module.exports = { + moduleFileExtensions: ['js', 'jsx', 'json', 'vue'], + transform: { + '^.+\\.vue$': 'vue-jest', + '.+\\.(css|styl|less|sass|scss|svg|png|jpg|ttf|woff|woff2)$': + 'jest-transform-stub', + '^.+\\.jsx?$': 'babel-jest' + }, + moduleNameMapper: { + '^@/(.*)$': '/src/$1' + }, + snapshotSerializers: ['jest-serializer-vue'], + testMatch: [ + '**/tests/unit/**/*.spec.(js|jsx|ts|tsx)|**/__tests__/*.(js|jsx|ts|tsx)' + ], + collectCoverageFrom: ['src/utils/**/*.{js,vue}', '!src/utils/auth.js', '!src/utils/request.js', 'src/components/**/*.{js,vue}'], + coverageDirectory: '/tests/unit/coverage', + // 'collectCoverage': true, + 'coverageReporters': [ + 'lcov', + 'text-summary' + ], + testURL: 'http://localhost/' +} diff --git a/admin/jsconfig.json b/admin/jsconfig.json new file mode 100644 index 00000000..958df046 --- /dev/null +++ b/admin/jsconfig.json @@ -0,0 +1,9 @@ +{ + "compilerOptions": { + "baseUrl": "./", + "paths": { + "@/*": ["src/*"] + } + }, + "exclude": ["node_modules", "dist"] +} \ No newline at end of file diff --git a/admin/mock/article.js b/admin/mock/article.js new file mode 100644 index 00000000..50218ae4 --- /dev/null +++ b/admin/mock/article.js @@ -0,0 +1,116 @@ +import Mock from 'mockjs' + +const List = [] +const count = 100 + +const baseContent = '

I am testing data, I am testing data.

' +const image_uri = 'https://wpimg.wallstcn.com/e4558086-631c-425c-9430-56ffb46e70b3' + +for (let i = 0; i < count; i++) { + List.push(Mock.mock({ + id: '@increment', + timestamp: +Mock.Random.date('T'), + author: '@first', + reviewer: '@first', + title: '@title(5, 10)', + content_short: 'mock data', + content: baseContent, + forecast: '@float(0, 100, 2, 2)', + importance: '@integer(1, 3)', + 'type|1': ['CN', 'US', 'JP', 'EU'], + 'status|1': ['published', 'draft'], + display_time: '@datetime', + comment_disabled: true, + pageviews: '@integer(300, 5000)', + image_uri, + platforms: ['a-platform'] + })) +} + +export default [ + { + url: '/vue-element-admin/article/list', + type: 'get', + response: config => { + const { importance, type, title, page = 1, limit = 20, sort } = config.query + + let mockList = List.filter(item => { + if (importance && item.importance !== +importance) return false + if (type && item.type !== type) return false + if (title && item.title.indexOf(title) < 0) return false + return true + }) + + if (sort === '-id') { + mockList = mockList.reverse() + } + + const pageList = mockList.filter((item, index) => index < limit * page && index >= limit * (page - 1)) + + return { + code: 20000, + data: { + total: mockList.length, + items: pageList + } + } + } + }, + + { + url: '/vue-element-admin/article/detail', + type: 'get', + response: config => { + const { id } = config.query + for (const article of List) { + if (article.id === +id) { + return { + code: 20000, + data: article + } + } + } + } + }, + + { + url: '/vue-element-admin/article/pv', + type: 'get', + response: _ => { + return { + code: 20000, + data: { + pvData: [ + { key: 'PC', pv: 1024 }, + { key: 'mobile', pv: 1024 }, + { key: 'ios', pv: 1024 }, + { key: 'android', pv: 1024 } + ] + } + } + } + }, + + { + url: '/vue-element-admin/article/create', + type: 'post', + response: _ => { + return { + code: 20000, + data: 'success' + } + } + }, + + { + url: '/vue-element-admin/article/update', + type: 'post', + response: _ => { + return { + code: 20000, + data: 'success' + } + } + } +] + diff --git a/admin/mock/index.js b/admin/mock/index.js new file mode 100644 index 00000000..b71880cb --- /dev/null +++ b/admin/mock/index.js @@ -0,0 +1,57 @@ +import Mock from 'mockjs' +import { param2Obj } from '../src/utils' + +import user from './user' +import role from './role' +import article from './article' +import search from './remote-search' + +const mocks = [ + ...user, + ...role, + ...article, + ...search +] + +// for front mock +// please use it cautiously, it will redefine XMLHttpRequest, +// which will cause many of your third-party libraries to be invalidated(like progress event). +export function mockXHR() { + // mock patch + // https://github.com/nuysoft/Mock/issues/300 + // Mock.XHR.prototype.proxy_send = Mock.XHR.prototype.send + // Mock.XHR.prototype.send = function() { + // if (this.custom.xhr) { + // this.custom.xhr.withCredentials = this.withCredentials || false + // + // if (this.responseType) { + // this.custom.xhr.responseType = this.responseType + // } + // } + // this.proxy_send(...arguments) + // } + // + // function XHR2ExpressReqWrap(respond) { + // return function(options) { + // let result = null + // if (respond instanceof Function) { + // const { body, type, url } = options + // // https://expressjs.com/en/4x/api.html#req + // result = respond({ + // method: type, + // body: JSON.parse(body), + // query: param2Obj(url) + // }) + // } else { + // result = respond + // } + // return Mock.mock(result) + // } + // } + // + // for (const i of mocks) { + // Mock.mock(new RegExp(i.url), i.type || 'get', XHR2ExpressReqWrap(i.response)) + // } +} + +export default mocks diff --git a/admin/mock/mock-server.js b/admin/mock/mock-server.js new file mode 100644 index 00000000..806fdacc --- /dev/null +++ b/admin/mock/mock-server.js @@ -0,0 +1,84 @@ +const chokidar = require('chokidar') +const bodyParser = require('body-parser') +const chalk = require('chalk') +const path = require('path') +const Mock = require('mockjs') + +const mockDir = path.join(process.cwd(), 'mock') + +function registerRoutes(app) { + let mockLastIndex + const { default: mocks } = require('./index.js') + const mocksForServer = mocks.map(route => { + return responseFake(route.url, route.type, route.response) + }) + for (const mock of mocksForServer) { + app[mock.type](mock.url, mock.response) + mockLastIndex = app._router.stack.length + } + const mockRoutesLength = Object.keys(mocksForServer).length + return { + mockRoutesLength: mockRoutesLength, + mockStartIndex: mockLastIndex - mockRoutesLength + } +} + +function unregisterRoutes() { + Object.keys(require.cache).forEach(i => { + if (i.includes(mockDir)) { + delete require.cache[require.resolve(i)] + } + }) +} + +// for mock server +const responseFake = (url, type, respond) => { + return { + url: new RegExp(`${process.env.VUE_APP_BASE_API}${url}`), + type: type || 'get', + response(req, res) { + console.log('request invoke:' + req.path) + res.json(Mock.mock(respond instanceof Function ? respond(req, res) : respond)) + } + } +} + +module.exports = app => { + // es6 polyfill + require('@babel/register') + + // parse app.body + // https://expressjs.com/en/4x/api.html#req.body + app.use(bodyParser.json()) + app.use(bodyParser.urlencoded({ + extended: true + })) + + const mockRoutes = registerRoutes(app) + var mockRoutesLength = mockRoutes.mockRoutesLength + var mockStartIndex = mockRoutes.mockStartIndex + + // watch files, hot reload mock server + chokidar.watch(mockDir, { + ignored: /mock-server/, + ignoreInitial: true + }).on('all', (event, path) => { + if (event === 'change' || event === 'add') { + try { + // remove mock routes stack + app._router.stack.splice(mockStartIndex, mockRoutesLength) + + // clear routes cache + unregisterRoutes() + + const mockRoutes = registerRoutes(app) + mockRoutesLength = mockRoutes.mockRoutesLength + mockStartIndex = mockRoutes.mockStartIndex + + console.log(chalk.magentaBright(`\n > Mock Server hot reload success! changed ${path}`)) + } catch (error) { + console.log(chalk.redBright(error)) + } + } + }) +} diff --git a/admin/mock/remote-search.js b/admin/mock/remote-search.js new file mode 100644 index 00000000..60809cb8 --- /dev/null +++ b/admin/mock/remote-search.js @@ -0,0 +1,51 @@ +import Mock from 'mockjs' + +const NameList = [] +const count = 100 + +for (let i = 0; i < count; i++) { + NameList.push(Mock.mock({ + name: '@first' + })) +} +NameList.push({ name: 'mock-Pan' }) + +export default [ + // username search + { + url: '/vue-element-admin/search/user', + type: 'get', + response: config => { + const { name } = config.query + const mockNameList = NameList.filter(item => { + const lowerCaseName = item.name.toLowerCase() + return !(name && lowerCaseName.indexOf(name.toLowerCase()) < 0) + }) + return { + code: 20000, + data: { items: mockNameList } + } + } + }, + + // transaction list + { + url: '/vue-element-admin/transaction/list', + type: 'get', + response: _ => { + return { + code: 20000, + data: { + total: 20, + 'items|20': [{ + order_no: '@guid()', + timestamp: +Mock.Random.date('T'), + username: '@name()', + price: '@float(1000, 15000, 0, 2)', + 'status|1': ['success', 'pending'] + }] + } + } + } + } +] diff --git a/admin/mock/role/index.js b/admin/mock/role/index.js new file mode 100644 index 00000000..d957493b --- /dev/null +++ b/admin/mock/role/index.js @@ -0,0 +1,98 @@ +import Mock from 'mockjs' +import { deepClone } from '../../src/utils/index.js' +import { asyncRoutes, constantRoutes } from './routes.js' + +const routes = deepClone([...constantRoutes, ...asyncRoutes]) + +const roles = [ + { + key: 'admin', + name: 'admin', + description: 'Super Administrator. Have access to view all pages.', + routes: routes + }, + { + key: 'editor', + name: 'editor', + description: 'Normal Editor. Can see all pages except permission page', + routes: routes.filter(i => i.path !== '/permission')// just a mock + }, + { + key: 'visitor', + name: 'visitor', + description: 'Just a visitor. Can only see the home page and the document page', + routes: [{ + path: '', + redirect: 'dashboard', + children: [ + { + path: 'dashboard', + name: 'Dashboard', + meta: { title: 'dashboard', icon: 'dashboard' } + } + ] + }] + } +] + +export default [ + // mock get all routes form server + { + url: '/vue-element-admin/routes', + type: 'get', + response: _ => { + return { + code: 20000, + data: routes + } + } + }, + + // mock get all roles form server + { + url: '/vue-element-admin/roles', + type: 'get', + response: _ => { + return { + code: 20000, + data: roles + } + } + }, + + // add role + { + url: '/vue-element-admin/role', + type: 'post', + response: { + code: 20000, + data: { + key: Mock.mock('@integer(300, 5000)') + } + } + }, + + // update role + { + url: '/vue-element-admin/role/[A-Za-z0-9]', + type: 'put', + response: { + code: 20000, + data: { + status: 'success' + } + } + }, + + // delete role + { + url: '/vue-element-admin/role/[A-Za-z0-9]', + type: 'delete', + response: { + code: 20000, + data: { + status: 'success' + } + } + } +] diff --git a/admin/mock/role/routes.js b/admin/mock/role/routes.js new file mode 100644 index 00000000..92208096 --- /dev/null +++ b/admin/mock/role/routes.js @@ -0,0 +1,525 @@ +// Just a mock data + +export const constantRoutes = [ + { + path: '/redirect', + component: 'layout/Layout', + hidden: true, + children: [ + { + path: '/redirect/:path*', + component: 'views/redirect/index' + } + ] + }, + { + path: '/login', + component: 'views/login/index', + hidden: true + }, + { + path: '/auth-redirect', + component: 'views/login/auth-redirect', + hidden: true + }, + { + path: '/404', + component: 'views/error-page/404', + hidden: true + }, + { + path: '/401', + component: 'views/error-page/401', + hidden: true + }, + { + path: '', + component: 'layout/Layout', + redirect: 'dashboard', + children: [ + { + path: 'dashboard', + component: 'views/dashboard/index', + name: 'Dashboard', + meta: { title: 'Dashboard', icon: 'dashboard', affix: true } + } + ] + }, + { + path: '/documentation', + component: 'layout/Layout', + children: [ + { + path: 'index', + component: 'views/documentation/index', + name: 'Documentation', + meta: { title: 'Documentation', icon: 'documentation', affix: true } + } + ] + }, + { + path: '/guide', + component: 'layout/Layout', + redirect: '/guide/index', + children: [ + { + path: 'index', + component: 'views/guide/index', + name: 'Guide', + meta: { title: 'Guide', icon: 'guide', noCache: true } + } + ] + } +] + +export const asyncRoutes = [ + { + path: '/permission', + component: 'layout/Layout', + redirect: '/permission/index', + alwaysShow: true, + meta: { + title: 'Permission', + icon: 'lock', + roles: ['admin', 'editor'] + }, + children: [ + { + path: 'page', + component: 'views/permission/page', + name: 'PagePermission', + meta: { + title: 'Page Permission', + roles: ['admin'] + } + }, + { + path: 'directive', + component: 'views/permission/directive', + name: 'DirectivePermission', + meta: { + title: 'Directive Permission' + } + }, + { + path: 'role', + component: 'views/permission/role', + name: 'RolePermission', + meta: { + title: 'Role Permission', + roles: ['admin'] + } + } + ] + }, + + { + path: '/icon', + component: 'layout/Layout', + children: [ + { + path: 'index', + component: 'views/icons/index', + name: 'Icons', + meta: { title: 'Icons', icon: 'icon', noCache: true } + } + ] + }, + + { + path: '/components', + component: 'layout/Layout', + redirect: 'noRedirect', + name: 'ComponentDemo', + meta: { + title: 'Components', + icon: 'component' + }, + children: [ + { + path: 'tinymce', + component: 'views/components-demo/tinymce', + name: 'TinymceDemo', + meta: { title: 'Tinymce' } + }, + { + path: 'markdown', + component: 'views/components-demo/markdown', + name: 'MarkdownDemo', + meta: { title: 'Markdown' } + }, + { + path: 'json-editor', + component: 'views/components-demo/json-editor', + name: 'JsonEditorDemo', + meta: { title: 'Json Editor' } + }, + { + path: 'split-pane', + component: 'views/components-demo/split-pane', + name: 'SplitpaneDemo', + meta: { title: 'SplitPane' } + }, + { + path: 'avatar-upload', + component: 'views/components-demo/avatar-upload', + name: 'AvatarUploadDemo', + meta: { title: 'Avatar upload' } + }, + { + path: 'dropzone', + component: 'views/components-demo/dropzone', + name: 'DropzoneDemo', + meta: { title: 'Dropzone' } + }, + { + path: 'sticky', + component: 'views/components-demo/sticky', + name: 'StickyDemo', + meta: { title: 'Sticky' } + }, + { + path: 'count-to', + component: 'views/components-demo/count-to', + name: 'CountToDemo', + meta: { title: 'Count To' } + }, + { + path: 'mixin', + component: 'views/components-demo/mixin', + name: 'ComponentMixinDemo', + meta: { title: 'componentMixin' } + }, + { + path: 'back-to-top', + component: 'views/components-demo/back-to-top', + name: 'BackToTopDemo', + meta: { title: 'Back To Top' } + }, + { + path: 'drag-dialog', + component: 'views/components-demo/drag-dialog', + name: 'DragDialogDemo', + meta: { title: 'Drag Dialog' } + }, + { + path: 'drag-select', + component: 'views/components-demo/drag-select', + name: 'DragSelectDemo', + meta: { title: 'Drag Select' } + }, + { + path: 'dnd-list', + component: 'views/components-demo/dnd-list', + name: 'DndListDemo', + meta: { title: 'Dnd List' } + }, + { + path: 'drag-kanban', + component: 'views/components-demo/drag-kanban', + name: 'DragKanbanDemo', + meta: { title: 'Drag Kanban' } + } + ] + }, + { + path: '/charts', + component: 'layout/Layout', + redirect: 'noRedirect', + name: 'Charts', + meta: { + title: 'Charts', + icon: 'chart' + }, + children: [ + { + path: 'keyboard', + component: 'views/charts/keyboard', + name: 'KeyboardChart', + meta: { title: 'Keyboard Chart', noCache: true } + }, + { + path: 'line', + component: 'views/charts/line', + name: 'LineChart', + meta: { title: 'Line Chart', noCache: true } + }, + { + path: 'mixchart', + component: 'views/charts/mixChart', + name: 'MixChart', + meta: { title: 'Mix Chart', noCache: true } + } + ] + }, + { + path: '/nested', + component: 'layout/Layout', + redirect: '/nested/menu1/menu1-1', + name: 'Nested', + meta: { + title: 'Nested', + icon: 'nested' + }, + children: [ + { + path: 'menu1', + component: 'views/nested/menu1/index', + name: 'Menu1', + meta: { title: 'Menu1' }, + redirect: '/nested/menu1/menu1-1', + children: [ + { + path: 'menu1-1', + component: 'views/nested/menu1/menu1-1', + name: 'Menu1-1', + meta: { title: 'Menu1-1' } + }, + { + path: 'menu1-2', + component: 'views/nested/menu1/menu1-2', + name: 'Menu1-2', + redirect: '/nested/menu1/menu1-2/menu1-2-1', + meta: { title: 'Menu1-2' }, + children: [ + { + path: 'menu1-2-1', + component: 'views/nested/menu1/menu1-2/menu1-2-1', + name: 'Menu1-2-1', + meta: { title: 'Menu1-2-1' } + }, + { + path: 'menu1-2-2', + component: 'views/nested/menu1/menu1-2/menu1-2-2', + name: 'Menu1-2-2', + meta: { title: 'Menu1-2-2' } + } + ] + }, + { + path: 'menu1-3', + component: 'views/nested/menu1/menu1-3', + name: 'Menu1-3', + meta: { title: 'Menu1-3' } + } + ] + }, + { + path: 'menu2', + name: 'Menu2', + component: 'views/nested/menu2/index', + meta: { title: 'Menu2' } + } + ] + }, + + { + path: '/example', + component: 'layout/Layout', + redirect: '/example/list', + name: 'Example', + meta: { + title: 'Example', + icon: 'example' + }, + children: [ + { + path: 'create', + component: 'views/example/create', + name: 'CreateArticle', + meta: { title: 'Create Article', icon: 'edit' } + }, + { + path: 'edit/:id(\\d+)', + component: 'views/example/edit', + name: 'EditArticle', + meta: { title: 'Edit Article', noCache: true }, + hidden: true + }, + { + path: 'list', + component: 'views/example/list', + name: 'ArticleList', + meta: { title: 'Article List', icon: 'list' } + } + ] + }, + + { + path: '/tab', + component: 'layout/Layout', + children: [ + { + path: 'index', + component: 'views/tab/index', + name: 'Tab', + meta: { title: 'Tab', icon: 'tab' } + } + ] + }, + + { + path: '/error', + component: 'layout/Layout', + redirect: 'noRedirect', + name: 'ErrorPages', + meta: { + title: 'Error Pages', + icon: '404' + }, + children: [ + { + path: '401', + component: 'views/error-page/401', + name: 'Page401', + meta: { title: 'Page 401', noCache: true } + }, + { + path: '404', + component: 'views/error-page/404', + name: 'Page404', + meta: { title: 'Page 404', noCache: true } + } + ] + }, + + { + path: '/error-log', + component: 'layout/Layout', + redirect: 'noRedirect', + children: [ + { + path: 'log', + component: 'views/error-log/index', + name: 'ErrorLog', + meta: { title: 'Error Log', icon: 'bug' } + } + ] + }, + + { + path: '/excel', + component: 'layout/Layout', + redirect: '/excel/export-excel', + name: 'Excel', + meta: { + title: 'Excel', + icon: 'excel' + }, + children: [ + { + path: 'export-excel', + component: 'views/excel/export-excel', + name: 'ExportExcel', + meta: { title: 'Export Excel' } + }, + { + path: 'export-selected-excel', + component: 'views/excel/select-excel', + name: 'SelectExcel', + meta: { title: 'Select Excel' } + }, + { + path: 'export-merge-header', + component: 'views/excel/merge-header', + name: 'MergeHeader', + meta: { title: 'Merge Header' } + }, + { + path: 'upload-excel', + component: 'views/excel/upload-excel', + name: 'UploadExcel', + meta: { title: 'upload Excel' } + } + ] + }, + + { + path: '/zip', + component: 'layout/Layout', + redirect: '/zip/download', + alwaysShow: true, + meta: { title: 'Zip', icon: 'zip' }, + children: [ + { + path: 'download', + component: 'views/zip/index', + name: 'ExportZip', + meta: { title: 'Export Zip' } + } + ] + }, + + { + path: '/pdf', + component: 'layout/Layout', + redirect: '/pdf/index', + children: [ + { + path: 'index', + component: 'views/pdf/index', + name: 'PDF', + meta: { title: 'PDF', icon: 'pdf' } + } + ] + }, + { + path: '/pdf/download', + component: 'views/pdf/download', + hidden: true + }, + + { + path: '/theme', + component: 'layout/Layout', + redirect: 'noRedirect', + children: [ + { + path: 'index', + component: 'views/theme/index', + name: 'Theme', + meta: { title: 'Theme', icon: 'theme' } + } + ] + }, + + { + path: '/clipboard', + component: 'layout/Layout', + redirect: 'noRedirect', + children: [ + { + path: 'index', + component: 'views/clipboard/index', + name: 'ClipboardDemo', + meta: { title: 'Clipboard Demo', icon: 'clipboard' } + } + ] + }, + + { + path: '/i18n', + component: 'layout/Layout', + children: [ + { + path: 'index', + component: 'views/i18n-demo/index', + name: 'I18n', + meta: { title: 'I18n', icon: 'international' } + } + ] + }, + + { + path: 'external-link', + component: 'layout/Layout', + children: [ + { + path: 'https://github.com/PanJiaChen/vue-element-admin', + meta: { title: 'External Link', icon: 'link' } + } + ] + }, + + { path: '*', redirect: '/404', hidden: true } +] diff --git a/admin/mock/user.js b/admin/mock/user.js new file mode 100644 index 00000000..8d33d3fd --- /dev/null +++ b/admin/mock/user.js @@ -0,0 +1,84 @@ + +const tokens = { + admin: { + token: 'admin-token' + }, + editor: { + token: 'editor-token' + } +} + +const users = { + 'admin-token': { + roles: ['admin'], + introduction: 'I am a super administrator', + avatar: 'https://wpimg.wallstcn.com/f778738c-e4f8-4870-b634-56703b4acafe.gif', + name: 'Super Admin' + }, + 'editor-token': { + roles: ['editor'], + introduction: 'I am an editor', + avatar: 'https://wpimg.wallstcn.com/f778738c-e4f8-4870-b634-56703b4acafe.gif', + name: 'Normal Editor' + } +} + +export default [ + // user login + { + url: '/vue-element-admin/user/login', + type: 'post', + response: config => { + const { username } = config.body + const token = tokens[username] + console.log('token:', token) + // mock error + if (!token) { + return { + code: 60204, + message: 'Account and password are incorrect.' + } + } + + return { + code: 20000, + data: token + } + } + }, + + // get user info + { + url: '/vue-element-admin/user/info\.*', + type: 'get', + response: config => { + const { token } = config.query + const info = users[token] + + // mock error + if (!info) { + return { + code: 50008, + message: 'Login failed, unable to get user details.' + } + } + + return { + code: 20000, + data: info + } + } + }, + + // user logout + { + url: '/vue-element-admin/user/logout', + type: 'post', + response: _ => { + return { + code: 20000, + data: 'success' + } + } + } +] diff --git a/admin/package-lock.json b/admin/package-lock.json new file mode 100644 index 00000000..7b8ecb04 --- /dev/null +++ b/admin/package-lock.json @@ -0,0 +1,18618 @@ +{ + "name": "vue-element-admin", + "version": "4.2.1", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@babel/code-frame": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.1.tgz", + "integrity": "sha512-IGhtTmpjGbYzcEDOw7DcQtbQSXcG9ftmAXtWTu9V936vDye4xjjekktFAtgZsWpzTj/X01jocB46mTywm/4SZw==", + "dev": true, + "requires": { + "@babel/highlight": "^7.10.1" + } + }, + "@babel/core": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.0.0.tgz", + "integrity": "sha512-nrvxS5u6QUN5gLl1GEakIcmOeoUHT1/gQtdMRq18WFURJ5osn4ppJLVSseMQo4zVWKJfBTF4muIYijXUnKlRLQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/generator": "^7.0.0", + "@babel/helpers": "^7.0.0", + "@babel/parser": "^7.0.0", + "@babel/template": "^7.0.0", + "@babel/traverse": "^7.0.0", + "@babel/types": "^7.0.0", + "convert-source-map": "^1.1.0", + "debug": "^3.1.0", + "json5": "^0.5.0", + "lodash": "^4.17.10", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "@babel/generator": { + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.10.2.tgz", + "integrity": "sha512-AxfBNHNu99DTMvlUPlt1h2+Hn7knPpH5ayJ8OqDWSeLld+Fi2AYBTC/IejWDM9Edcii4UzZRCsbUt0WlSDsDsA==", + "dev": true, + "requires": { + "@babel/types": "^7.10.2", + "jsesc": "^2.5.1", + "lodash": "^4.17.13", + "source-map": "^0.5.0" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.1.tgz", + "integrity": "sha512-ewp3rvJEwLaHgyWGe4wQssC2vjks3E80WiUe2BpMb0KhreTjMROCbxXcEovTrbeGVdQct5VjQfrv9EgC+xMzCw==", + "dev": true, + "requires": { + "@babel/types": "^7.10.1" + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.1.tgz", + "integrity": "sha512-cQpVq48EkYxUU0xozpGCLla3wlkdRRqLWu1ksFMXA9CM5KQmyyRpSEsYXbao7JUkOw/tAaYKCaYyZq6HOFYtyw==", + "dev": true, + "requires": { + "@babel/helper-explode-assignable-expression": "^7.10.1", + "@babel/types": "^7.10.1" + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.10.2.tgz", + "integrity": "sha512-5C/QhkGFh1vqcziq1vAL6SI9ymzUp8BCYjFpvYVhWP4DlATIb3u5q3iUd35mvlyGs8fO7hckkW7i0tmH+5+bvQ==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.10.1", + "@babel/helper-member-expression-to-functions": "^7.10.1", + "@babel/helper-optimise-call-expression": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/helper-replace-supers": "^7.10.1", + "@babel/helper-split-export-declaration": "^7.10.1" + } + }, + "@babel/helper-create-regexp-features-plugin": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.10.1.tgz", + "integrity": "sha512-Rx4rHS0pVuJn5pJOqaqcZR4XSgeF9G/pO/79t+4r7380tXFJdzImFnxMU19f83wjSrmKHq6myrM10pFHTGzkUA==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.1", + "@babel/helper-regex": "^7.10.1", + "regexpu-core": "^4.7.0" + } + }, + "@babel/helper-define-map": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.10.1.tgz", + "integrity": "sha512-+5odWpX+OnvkD0Zmq7panrMuAGQBu6aPUgvMzuMGo4R+jUOvealEj2hiqI6WhxgKrTpFoFj0+VdsuA8KDxHBDg==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.10.1", + "@babel/types": "^7.10.1", + "lodash": "^4.17.13" + } + }, + "@babel/helper-explode-assignable-expression": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.10.1.tgz", + "integrity": "sha512-vcUJ3cDjLjvkKzt6rHrl767FeE7pMEYfPanq5L16GRtrXIoznc0HykNW2aEYkcnP76P0isoqJ34dDMFZwzEpJg==", + "dev": true, + "requires": { + "@babel/traverse": "^7.10.1", + "@babel/types": "^7.10.1" + } + }, + "@babel/helper-function-name": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.1.tgz", + "integrity": "sha512-fcpumwhs3YyZ/ttd5Rz0xn0TpIwVkN7X0V38B9TWNfVF42KEkhkAAuPCQ3oXmtTRtiPJrmZ0TrfS0GKF0eMaRQ==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.10.1", + "@babel/template": "^7.10.1", + "@babel/types": "^7.10.1" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.1.tgz", + "integrity": "sha512-F5qdXkYGOQUb0hpRaPoetF9AnsXknKjWMZ+wmsIRsp5ge5sFh4c3h1eH2pRTTuy9KKAA2+TTYomGXAtEL2fQEw==", + "dev": true, + "requires": { + "@babel/types": "^7.10.1" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.1.tgz", + "integrity": "sha512-vLm5srkU8rI6X3+aQ1rQJyfjvCBLXP8cAGeuw04zeAM2ItKb1e7pmVmLyHb4sDaAYnLL13RHOZPLEtcGZ5xvjg==", + "dev": true, + "requires": { + "@babel/types": "^7.10.1" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.10.1.tgz", + "integrity": "sha512-u7XLXeM2n50gb6PWJ9hoO5oO7JFPaZtrh35t8RqKLT1jFKj9IWeD1zrcrYp1q1qiZTdEarfDWfTIP8nGsu0h5g==", + "dev": true, + "requires": { + "@babel/types": "^7.10.1" + } + }, + "@babel/helper-module-imports": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.10.1.tgz", + "integrity": "sha512-SFxgwYmZ3HZPyZwJRiVNLRHWuW2OgE5k2nrVs6D9Iv4PPnXVffuEHy83Sfx/l4SqF+5kyJXjAyUmrG7tNm+qVg==", + "dev": true, + "requires": { + "@babel/types": "^7.10.1" + } + }, + "@babel/helper-module-transforms": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.10.1.tgz", + "integrity": "sha512-RLHRCAzyJe7Q7sF4oy2cB+kRnU4wDZY/H2xJFGof+M+SJEGhZsb+GFj5j1AD8NiSaVBJ+Pf0/WObiXu/zxWpFg==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.10.1", + "@babel/helper-replace-supers": "^7.10.1", + "@babel/helper-simple-access": "^7.10.1", + "@babel/helper-split-export-declaration": "^7.10.1", + "@babel/template": "^7.10.1", + "@babel/types": "^7.10.1", + "lodash": "^4.17.13" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.1.tgz", + "integrity": "sha512-a0DjNS1prnBsoKx83dP2falChcs7p3i8VMzdrSbfLhuQra/2ENC4sbri34dz/rWmDADsmF1q5GbfaXydh0Jbjg==", + "dev": true, + "requires": { + "@babel/types": "^7.10.1" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz", + "integrity": "sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA==", + "dev": true + }, + "@babel/helper-regex": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.10.1.tgz", + "integrity": "sha512-7isHr19RsIJWWLLFn21ubFt223PjQyg1HY7CZEMRr820HttHPpVvrsIN3bUOo44DEfFV4kBXO7Abbn9KTUZV7g==", + "dev": true, + "requires": { + "lodash": "^4.17.13" + } + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.10.1.tgz", + "integrity": "sha512-RfX1P8HqsfgmJ6CwaXGKMAqbYdlleqglvVtht0HGPMSsy2V6MqLlOJVF/0Qyb/m2ZCi2z3q3+s6Pv7R/dQuZ6A==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.1", + "@babel/helper-wrap-function": "^7.10.1", + "@babel/template": "^7.10.1", + "@babel/traverse": "^7.10.1", + "@babel/types": "^7.10.1" + } + }, + "@babel/helper-replace-supers": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.10.1.tgz", + "integrity": "sha512-SOwJzEfpuQwInzzQJGjGaiG578UYmyi2Xw668klPWV5n07B73S0a9btjLk/52Mlcxa+5AdIYqws1KyXRfMoB7A==", + "dev": true, + "requires": { + "@babel/helper-member-expression-to-functions": "^7.10.1", + "@babel/helper-optimise-call-expression": "^7.10.1", + "@babel/traverse": "^7.10.1", + "@babel/types": "^7.10.1" + } + }, + "@babel/helper-simple-access": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.10.1.tgz", + "integrity": "sha512-VSWpWzRzn9VtgMJBIWTZ+GP107kZdQ4YplJlCmIrjoLVSi/0upixezHCDG8kpPVTBJpKfxTH01wDhh+jS2zKbw==", + "dev": true, + "requires": { + "@babel/template": "^7.10.1", + "@babel/types": "^7.10.1" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.10.1.tgz", + "integrity": "sha512-UQ1LVBPrYdbchNhLwj6fetj46BcFwfS4NllJo/1aJsT+1dLTEnXJL0qHqtY7gPzF8S2fXBJamf1biAXV3X077g==", + "dev": true, + "requires": { + "@babel/types": "^7.10.1" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.1.tgz", + "integrity": "sha512-5vW/JXLALhczRCWP0PnFDMCJAchlBvM7f4uk/jXritBnIa6E1KmqmtrS3yn1LAnxFBypQ3eneLuXjsnfQsgILw==", + "dev": true + }, + "@babel/helper-wrap-function": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.10.1.tgz", + "integrity": "sha512-C0MzRGteVDn+H32/ZgbAv5r56f2o1fZSA/rj/TYo8JEJNHg+9BdSmKBUND0shxWRztWhjlT2cvHYuynpPsVJwQ==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.10.1", + "@babel/template": "^7.10.1", + "@babel/traverse": "^7.10.1", + "@babel/types": "^7.10.1" + } + }, + "@babel/helpers": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.10.1.tgz", + "integrity": "sha512-muQNHF+IdU6wGgkaJyhhEmI54MOZBKsFfsXFhboz1ybwJ1Kl7IHlbm2a++4jwrmY5UYsgitt5lfqo1wMFcHmyw==", + "dev": true, + "requires": { + "@babel/template": "^7.10.1", + "@babel/traverse": "^7.10.1", + "@babel/types": "^7.10.1" + } + }, + "@babel/highlight": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.1.tgz", + "integrity": "sha512-8rMof+gVP8mxYZApLF/JgNDAkdKa+aJt3ZYxF8z6+j/hpeXL7iMsKCPHa2jNMHu/qqBwzQF4OHNoYi8dMA/rYg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.1", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.10.2.tgz", + "integrity": "sha512-PApSXlNMJyB4JiGVhCOlzKIif+TKFTvu0aQAhnTvfP/z3vVSN6ZypH5bfUNwFXXjRQtUEBNFd2PtmCmG2Py3qQ==" + }, + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.10.1.tgz", + "integrity": "sha512-vzZE12ZTdB336POZjmpblWfNNRpMSua45EYnRigE2XsZxcXcIyly2ixnTJasJE4Zq3U7t2d8rRF7XRUuzHxbOw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/helper-remap-async-to-generator": "^7.10.1", + "@babel/plugin-syntax-async-generators": "^7.8.0" + } + }, + "@babel/plugin-proposal-class-properties": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.10.1.tgz", + "integrity": "sha512-sqdGWgoXlnOdgMXU+9MbhzwFRgxVLeiGBqTrnuS7LC2IBU31wSsESbTUreT2O418obpfPdGUR2GbEufZF1bpqw==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-proposal-decorators": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.10.1.tgz", + "integrity": "sha512-xBfteh352MTke2U1NpclzMDmAmCdQ2fBZjhZQQfGTjXw6qcRYMkt528sA1U8o0ThDCSeuETXIj5bOGdxN+5gkw==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/plugin-syntax-decorators": "^7.10.1" + } + }, + "@babel/plugin-proposal-json-strings": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.10.1.tgz", + "integrity": "sha512-m8r5BmV+ZLpWPtMY2mOKN7wre6HIO4gfIiV+eOmsnZABNenrt/kzYBwrh+KOfgumSWpnlGs5F70J8afYMSJMBg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/plugin-syntax-json-strings": "^7.8.0" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.10.1.tgz", + "integrity": "sha512-Z+Qri55KiQkHh7Fc4BW6o+QBuTagbOp9txE+4U1i79u9oWlf2npkiDx+Rf3iK3lbcHBuNy9UOkwuR5wOMH3LIQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-transform-parameters": "^7.10.1" + } + }, + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.10.1.tgz", + "integrity": "sha512-VqExgeE62YBqI3ogkGoOJp1R6u12DFZjqwJhqtKc2o5m1YTUuUWnos7bZQFBhwkxIFpWYJ7uB75U7VAPPiKETA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.0" + } + }, + "@babel/plugin-proposal-unicode-property-regex": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.10.1.tgz", + "integrity": "sha512-JjfngYRvwmPwmnbRZyNiPFI8zxCZb8euzbCG/LxyKdeTb59tVciKo9GK9bi6JYKInk1H11Dq9j/zRqIH4KigfQ==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-decorators": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.10.1.tgz", + "integrity": "sha512-a9OAbQhKOwSle1Vr0NJu/ISg1sPfdEkfRKWpgPuzhnWWzForou2gIeUIIwjAMHRekhhpJ7eulZlYs0H14Cbi+g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-jsx": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.10.1.tgz", + "integrity": "sha512-+OxyOArpVFXQeXKLO9o+r2I4dIoVoy6+Uu0vKELrlweDM3QJADZj+Z+5ERansZqIZBcLj42vHnDI8Rz9BnRIuQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.10.1.tgz", + "integrity": "sha512-6AZHgFJKP3DJX0eCNJj01RpytUa3SOGawIxweHkNX2L6PYikOZmoh5B0d7hIHaIgveMjX990IAa/xK7jRTN8OA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.10.1.tgz", + "integrity": "sha512-XCgYjJ8TY2slj6SReBUyamJn3k2JLUIiiR5b6t1mNCMSvv7yx+jJpaewakikp0uWFQSF7ChPPoe3dHmXLpISkg==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/helper-remap-async-to-generator": "^7.10.1" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.10.1.tgz", + "integrity": "sha512-B7K15Xp8lv0sOJrdVAoukKlxP9N59HS48V1J3U/JGj+Ad+MHq+am6xJVs85AgXrQn4LV8vaYFOB+pr/yIuzW8Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.10.1.tgz", + "integrity": "sha512-8bpWG6TtF5akdhIm/uWTyjHqENpy13Fx8chg7pFH875aNLwX8JxIxqm08gmAT+Whe6AOmaTeLPe7dpLbXt+xUw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1", + "lodash": "^4.17.13" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.10.1.tgz", + "integrity": "sha512-P9V0YIh+ln/B3RStPoXpEQ/CoAxQIhRSUn7aXqQ+FZJ2u8+oCtjIXR3+X0vsSD8zv+mb56K7wZW1XiDTDGiDRQ==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.1", + "@babel/helper-define-map": "^7.10.1", + "@babel/helper-function-name": "^7.10.1", + "@babel/helper-optimise-call-expression": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/helper-replace-supers": "^7.10.1", + "@babel/helper-split-export-declaration": "^7.10.1", + "globals": "^11.1.0" + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.10.1.tgz", + "integrity": "sha512-mqSrGjp3IefMsXIenBfGcPXxJxweQe2hEIwMQvjtiDQ9b1IBvDUjkAtV/HMXX47/vXf14qDNedXsIiNd1FmkaQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.10.1.tgz", + "integrity": "sha512-V/nUc4yGWG71OhaTH705pU8ZSdM6c1KmmLP8ys59oOYbT7RpMYAR3MsVOt6OHL0WzG7BlTU076va9fjJyYzJMA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.10.1.tgz", + "integrity": "sha512-19VIMsD1dp02RvduFUmfzj8uknaO3uiHHF0s3E1OHnVsNj8oge8EQ5RzHRbJjGSetRnkEuBYO7TG1M5kKjGLOA==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.10.1.tgz", + "integrity": "sha512-wIEpkX4QvX8Mo9W6XF3EdGttrIPZWozHfEaDTU0WJD/TDnXMvdDh30mzUl/9qWhnf7naicYartcEfUghTCSNpA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.10.1.tgz", + "integrity": "sha512-lr/przdAbpEA2BUzRvjXdEDLrArGRRPwbaF9rvayuHRvdQ7lUTTkZnhZrJ4LE2jvgMRFF4f0YuPQ20vhiPYxtA==", + "dev": true, + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.10.1.tgz", + "integrity": "sha512-US8KCuxfQcn0LwSCMWMma8M2R5mAjJGsmoCBVwlMygvmDUMkTCykc84IqN1M7t+agSfOmLYTInLCHJM+RUoz+w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.10.1.tgz", + "integrity": "sha512-//bsKsKFBJfGd65qSNNh1exBy5Y9gD9ZN+DvrJ8f7HXr4avE5POW6zB7Rj6VnqHV33+0vXWUwJT0wSHubiAQkw==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.10.1.tgz", + "integrity": "sha512-qi0+5qgevz1NHLZroObRm5A+8JJtibb7vdcPQF1KQE12+Y/xxl8coJ+TpPW9iRq+Mhw/NKLjm+5SHtAHCC7lAw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.10.1.tgz", + "integrity": "sha512-31+hnWSFRI4/ACFr1qkboBbrTxoBIzj7qA69qlq8HY8p7+YCzkCT6/TvQ1a4B0z27VeWtAeJd6pr5G04dc1iHw==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.10.1.tgz", + "integrity": "sha512-AQG4fc3KOah0vdITwt7Gi6hD9BtQP/8bhem7OjbaMoRNCH5Djx42O2vYMfau7QnAzQCa+RJnhJBmFFMGpQEzrg==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/helper-simple-access": "^7.10.1", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.10.1.tgz", + "integrity": "sha512-ewNKcj1TQZDL3YnO85qh9zo1YF1CHgmSTlRQgHqe63oTrMI85cthKtZjAiZSsSNjPQ5NCaYo5QkbYqEw1ZBgZA==", + "dev": true, + "requires": { + "@babel/helper-hoist-variables": "^7.10.1", + "@babel/helper-module-transforms": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.10.1.tgz", + "integrity": "sha512-EIuiRNMd6GB6ulcYlETnYYfgv4AxqrswghmBRQbWLHZxN4s7mupxzglnHqk9ZiUpDI4eRWewedJJNj67PWOXKA==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.8.3.tgz", + "integrity": "sha512-f+tF/8UVPU86TrCb06JoPWIdDpTNSGGcAtaD9mLP0aYGA0OS0j7j7DHJR0GTFrUZPUU6loZhbsVZgTh0N+Qdnw==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.8.3" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.10.1.tgz", + "integrity": "sha512-MBlzPc1nJvbmO9rPr1fQwXOM2iGut+JC92ku6PbiJMMK7SnQc1rytgpopveE3Evn47gzvGYeCdgfCDbZo0ecUw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.10.1.tgz", + "integrity": "sha512-WnnStUDN5GL+wGQrJylrnnVlFhFmeArINIR9gjhSeYyvroGhBrSAXYg/RHsnfzmsa+onJrTJrEClPzgNmmQ4Gw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/helper-replace-supers": "^7.10.1" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.10.1.tgz", + "integrity": "sha512-tJ1T0n6g4dXMsL45YsSzzSDZCxiHXAQp/qHrucOq5gEHncTA3xDxnd5+sZcoQp+N1ZbieAaB8r/VUCG0gqseOg==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.10.1.tgz", + "integrity": "sha512-B3+Y2prScgJ2Bh/2l9LJxKbb8C8kRfsG4AdPT+n7ixBHIxJaIG8bi8tgjxUMege1+WqSJ+7gu1YeoMVO3gPWzw==", + "dev": true, + "requires": { + "regenerator-transform": "^0.14.2" + } + }, + "@babel/plugin-transform-runtime": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.10.1.tgz", + "integrity": "sha512-4w2tcglDVEwXJ5qxsY++DgWQdNJcCCsPxfT34wCUwIf2E7dI7pMpH8JczkMBbgBTNzBX62SZlNJ9H+De6Zebaw==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1", + "resolve": "^1.8.1", + "semver": "^5.5.1" + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.10.1.tgz", + "integrity": "sha512-AR0E/lZMfLstScFwztApGeyTHJ5u3JUKMjneqRItWeEqDdHWZwAOKycvQNCasCK/3r5YXsuNG25funcJDu7Y2g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.10.1.tgz", + "integrity": "sha512-8wTPym6edIrClW8FI2IoaePB91ETOtg36dOkj3bYcNe7aDMN2FXEoUa+WrmPc4xa1u2PQK46fUX2aCb+zo9rfw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.10.1.tgz", + "integrity": "sha512-j17ojftKjrL7ufX8ajKvwRilwqTok4q+BjkknmQw9VNHnItTyMP5anPFzxFJdCQs7clLcWpCV3ma+6qZWLnGMA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/helper-regex": "^7.10.1" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.10.1.tgz", + "integrity": "sha512-t7B/3MQf5M1T9hPCRG28DNGZUuxAuDqLYS03rJrIk2prj/UV7Z6FOneijhQhnv/Xa039vidXeVbvjK2SK5f7Gg==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.10.1.tgz", + "integrity": "sha512-qX8KZcmbvA23zDi+lk9s6hC1FM7jgLHYIjuLgULgc8QtYnmB3tAVIYkNoKRQ75qWBeyzcoMoK8ZQmogGtC/w0g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.10.1.tgz", + "integrity": "sha512-Y/2a2W299k0VIUdbqYm9X2qS6fE0CUBhhiPpimK6byy7OJ/kORLlIX+J6UrjgNu5awvs62k+6RSslxhcvVw2Tw==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/preset-env": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.3.4.tgz", + "integrity": "sha512-2mwqfYMK8weA0g0uBKOt4FE3iEodiHy9/CW0b+nWXcbL+pGzLx8ESYc+j9IIxr6LTDHWKgPm71i9smo02bw+gA==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-async-generator-functions": "^7.2.0", + "@babel/plugin-proposal-json-strings": "^7.2.0", + "@babel/plugin-proposal-object-rest-spread": "^7.3.4", + "@babel/plugin-proposal-optional-catch-binding": "^7.2.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.2.0", + "@babel/plugin-syntax-async-generators": "^7.2.0", + "@babel/plugin-syntax-json-strings": "^7.2.0", + "@babel/plugin-syntax-object-rest-spread": "^7.2.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.2.0", + "@babel/plugin-transform-arrow-functions": "^7.2.0", + "@babel/plugin-transform-async-to-generator": "^7.3.4", + "@babel/plugin-transform-block-scoped-functions": "^7.2.0", + "@babel/plugin-transform-block-scoping": "^7.3.4", + "@babel/plugin-transform-classes": "^7.3.4", + "@babel/plugin-transform-computed-properties": "^7.2.0", + "@babel/plugin-transform-destructuring": "^7.2.0", + "@babel/plugin-transform-dotall-regex": "^7.2.0", + "@babel/plugin-transform-duplicate-keys": "^7.2.0", + "@babel/plugin-transform-exponentiation-operator": "^7.2.0", + "@babel/plugin-transform-for-of": "^7.2.0", + "@babel/plugin-transform-function-name": "^7.2.0", + "@babel/plugin-transform-literals": "^7.2.0", + "@babel/plugin-transform-modules-amd": "^7.2.0", + "@babel/plugin-transform-modules-commonjs": "^7.2.0", + "@babel/plugin-transform-modules-systemjs": "^7.3.4", + "@babel/plugin-transform-modules-umd": "^7.2.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.3.0", + "@babel/plugin-transform-new-target": "^7.0.0", + "@babel/plugin-transform-object-super": "^7.2.0", + "@babel/plugin-transform-parameters": "^7.2.0", + "@babel/plugin-transform-regenerator": "^7.3.4", + "@babel/plugin-transform-shorthand-properties": "^7.2.0", + "@babel/plugin-transform-spread": "^7.2.0", + "@babel/plugin-transform-sticky-regex": "^7.2.0", + "@babel/plugin-transform-template-literals": "^7.2.0", + "@babel/plugin-transform-typeof-symbol": "^7.2.0", + "@babel/plugin-transform-unicode-regex": "^7.2.0", + "browserslist": "^4.3.4", + "invariant": "^2.2.2", + "js-levenshtein": "^1.1.3", + "semver": "^5.3.0" + } + }, + "@babel/register": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.0.0.tgz", + "integrity": "sha512-f/+CRmaCe7rVEvcvPvxeA8j5aJhHC3aJie7YuqcMDhUOuyWLA7J/aNrTaHIzoWPEhpHA54mec4Mm8fv8KBlv3g==", + "dev": true, + "requires": { + "core-js": "^2.5.7", + "find-cache-dir": "^1.0.0", + "home-or-tmp": "^3.0.0", + "lodash": "^4.17.10", + "mkdirp": "^0.5.1", + "pirates": "^4.0.0", + "source-map-support": "^0.5.9" + } + }, + "@babel/runtime": { + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.10.2.tgz", + "integrity": "sha512-6sF3uQw2ivImfVIl62RZ7MXhO2tap69WeWK57vAaimT6AZbE4FbqjdEJIN1UqoD6wI6B+1n9UiagafH1sxjOtg==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.4" + }, + "dependencies": { + "regenerator-runtime": { + "version": "0.13.5", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz", + "integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==", + "dev": true + } + } + }, + "@babel/runtime-corejs2": { + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs2/-/runtime-corejs2-7.10.2.tgz", + "integrity": "sha512-ZLwsFnNm3WpIARU1aLFtufjMHsmEnc8TjtrfAjmbgMbeoyR+LuQoyESoNdTfeDhL6IdY12SpeycXMgSgl8XGXA==", + "dev": true, + "requires": { + "core-js": "^2.6.5", + "regenerator-runtime": "^0.13.4" + }, + "dependencies": { + "regenerator-runtime": { + "version": "0.13.5", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz", + "integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==", + "dev": true + } + } + }, + "@babel/template": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.1.tgz", + "integrity": "sha512-OQDg6SqvFSsc9A0ej6SKINWrpJiNonRIniYondK2ViKhB06i3c0s+76XUft71iqBEe9S1OKsHwPAjfHnuvnCig==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.1", + "@babel/parser": "^7.10.1", + "@babel/types": "^7.10.1" + } + }, + "@babel/traverse": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.10.1.tgz", + "integrity": "sha512-C/cTuXeKt85K+p08jN6vMDz8vSV0vZcI0wmQ36o6mjbuo++kPMdpOYw23W2XH04dbRt9/nMEfA4W3eR21CD+TQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.1", + "@babel/generator": "^7.10.1", + "@babel/helper-function-name": "^7.10.1", + "@babel/helper-split-export-declaration": "^7.10.1", + "@babel/parser": "^7.10.1", + "@babel/types": "^7.10.1", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.13" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "@babel/types": { + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.2.tgz", + "integrity": "sha512-AD3AwWBSz0AWF0AkCN9VPiWrvldXq+/e3cHa4J89vo4ymjz1XwrBFFVZmkJTsQIPNk+ZVomPSXUJqq8yyjZsng==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.1", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + }, + "@hapi/address": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@hapi/address/-/address-2.1.4.tgz", + "integrity": "sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ==", + "dev": true + }, + "@hapi/bourne": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@hapi/bourne/-/bourne-1.3.2.tgz", + "integrity": "sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA==", + "dev": true + }, + "@hapi/hoek": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-8.5.1.tgz", + "integrity": "sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow==", + "dev": true + }, + "@hapi/joi": { + "version": "15.1.1", + "resolved": "https://registry.npmjs.org/@hapi/joi/-/joi-15.1.1.tgz", + "integrity": "sha512-entf8ZMOK8sc+8YfeOlM8pCfg3b5+WZIKBfUaaJT8UsjAAPjartzxIYm3TIbjvA4u+u++KbcXD38k682nVHDAQ==", + "dev": true, + "requires": { + "@hapi/address": "2.x.x", + "@hapi/bourne": "1.x.x", + "@hapi/hoek": "8.x.x", + "@hapi/topo": "3.x.x" + } + }, + "@hapi/topo": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-3.1.6.tgz", + "integrity": "sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ==", + "dev": true, + "requires": { + "@hapi/hoek": "^8.3.0" + } + }, + "@intervolga/optimize-cssnano-plugin": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@intervolga/optimize-cssnano-plugin/-/optimize-cssnano-plugin-1.0.6.tgz", + "integrity": "sha512-zN69TnSr0viRSU6cEDIcuPcP67QcpQ6uHACg58FiN9PDrU6SLyGW3MR4tiISbYxy1kDWAVPwD+XwQTWE5cigAA==", + "dev": true, + "requires": { + "cssnano": "^4.0.0", + "cssnano-preset-default": "^4.0.0", + "postcss": "^7.0.0" + } + }, + "@mrmlnc/readdir-enhanced": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", + "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==", + "dev": true, + "requires": { + "call-me-maybe": "^1.0.1", + "glob-to-regexp": "^0.3.0" + } + }, + "@nodelib/fs.stat": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz", + "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==", + "dev": true + }, + "@samverschueren/stream-to-observable": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.0.tgz", + "integrity": "sha512-MI4Xx6LHs4Webyvi6EbspgyAb4D2Q2VtnCQ1blOJcoLS6mVa8lNN2rkIy1CVxfTUpoyIbCTkXES1rLXztFD1lg==", + "dev": true, + "requires": { + "any-observable": "^0.3.0" + } + }, + "@soda/friendly-errors-webpack-plugin": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@soda/friendly-errors-webpack-plugin/-/friendly-errors-webpack-plugin-1.7.1.tgz", + "integrity": "sha512-cWKrGaFX+rfbMrAxVv56DzhPNqOJPZuNIS2HGMELtgGzb+vsMzyig9mml5gZ/hr2BGtSLV+dP2LUEuAL8aG2mQ==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "error-stack-parser": "^2.0.0", + "string-width": "^2.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "@types/codemirror": { + "version": "0.0.71", + "resolved": "https://registry.npmjs.org/@types/codemirror/-/codemirror-0.0.71.tgz", + "integrity": "sha512-b2oEEnno1LIGKMR7uBEsr40al1UijF1HEpRn0+Yf1xOLl24iQgB7DBpZVMM7y54G5wCNoclDrRO65E6KHPNO2w==", + "requires": { + "@types/tern": "*" + } + }, + "@types/estree": { + "version": "0.0.44", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.44.tgz", + "integrity": "sha512-iaIVzr+w2ZJ5HkidlZ3EJM8VTZb2MJLCjw3V+505yVts0gRC4UMvjw0d1HPtGqI/HQC/KdsYtayfzl+AXY2R8g==" + }, + "@types/glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-VgNIkxK+j7Nz5P7jvUZlRvhuPSmsEfS03b0alKcq5V/STUKAa3Plemsn5mrQUO7am6OErJ4rhGEGJbACclrtRA==", + "dev": true, + "requires": { + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "@types/jquery": { + "version": "3.3.38", + "resolved": "https://registry.npmjs.org/@types/jquery/-/jquery-3.3.38.tgz", + "integrity": "sha512-nkDvmx7x/6kDM5guu/YpXkGZ/Xj/IwGiLDdKM99YA5Vag7pjGyTJ8BNUh/6hxEn/sEu5DKtyRgnONJ7EmOoKrA==", + "requires": { + "@types/sizzle": "*" + } + }, + "@types/json-schema": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.5.tgz", + "integrity": "sha512-7+2BITlgjgDhH0vvwZU/HZJVyk+2XUlvxXe8dFMedNX/aMkaOq++rMAFXc0tM7ij15QaWlbdQASBR9dihi+bDQ==", + "dev": true + }, + "@types/linkify-it": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-2.1.0.tgz", + "integrity": "sha512-Q7DYAOi9O/+cLLhdaSvKdaumWyHbm7HAk/bFwwyTuU0arR5yyCeW5GOoqt4tJTpDRxhpx9Q8kQL6vMpuw9hDSw==" + }, + "@types/markdown-it": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-0.0.7.tgz", + "integrity": "sha512-WyL6pa76ollQFQNEaLVa41ZUUvDvPY+qAUmlsphnrpL6I9p1m868b26FyeoOmo7X3/Ta/S9WKXcEYXUSHnxoVQ==", + "requires": { + "@types/linkify-it": "*" + } + }, + "@types/minimatch": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", + "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==", + "dev": true + }, + "@types/node": { + "version": "14.0.13", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.0.13.tgz", + "integrity": "sha512-rouEWBImiRaSJsVA+ITTFM6ZxibuAlTuNOCyxVbwreu6k6+ujs7DfnU9o+PShFhET78pMBl3eH+AGSI5eOTkPA==", + "dev": true + }, + "@types/q": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.4.tgz", + "integrity": "sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug==", + "dev": true + }, + "@types/sizzle": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.2.tgz", + "integrity": "sha512-7EJYyKTL7tFR8+gDbB6Wwz/arpGa0Mywk1TJbNzKzHtzbwVmY4HR9WqS5VV7dsBUKQmPNr192jHr/VpBluj/hg==" + }, + "@types/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-FKjsOVbC6B7bdSB5CuzyHCkK69I=", + "dev": true + }, + "@types/strip-json-comments": { + "version": "0.0.30", + "resolved": "https://registry.npmjs.org/@types/strip-json-comments/-/strip-json-comments-0.0.30.tgz", + "integrity": "sha512-7NQmHra/JILCd1QqpSzl8+mJRc8ZHz3uDm8YV1Ks9IhK0epEiTw8aIErbvH9PI+6XbqhyIQy3462nEsn7UVzjQ==", + "dev": true + }, + "@types/tern": { + "version": "0.23.3", + "resolved": "https://registry.npmjs.org/@types/tern/-/tern-0.23.3.tgz", + "integrity": "sha512-imDtS4TAoTcXk0g7u4kkWqedB3E4qpjXzCpD2LU5M5NAXHzCDsypyvXSaG7mM8DKYkCRa7tFp4tS/lp/Wo7Q3w==", + "requires": { + "@types/estree": "*" + } + }, + "@vue/babel-helper-vue-jsx-merge-props": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@vue/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-1.0.0.tgz", + "integrity": "sha512-6tyf5Cqm4m6v7buITuwS+jHzPlIPxbFzEhXR5JGZpbrvOcp1hiQKckd305/3C7C36wFekNTQSxAtgeM0j0yoUw==", + "dev": true + }, + "@vue/babel-plugin-transform-vue-jsx": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@vue/babel-plugin-transform-vue-jsx/-/babel-plugin-transform-vue-jsx-1.1.2.tgz", + "integrity": "sha512-YfdaoSMvD1nj7+DsrwfTvTnhDXI7bsuh+Y5qWwvQXlD24uLgnsoww3qbiZvWf/EoviZMrvqkqN4CBw0W3BWUTQ==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/plugin-syntax-jsx": "^7.2.0", + "@vue/babel-helper-vue-jsx-merge-props": "^1.0.0", + "html-tags": "^2.0.0", + "lodash.kebabcase": "^4.1.1", + "svg-tags": "^1.0.0" + } + }, + "@vue/babel-preset-app": { + "version": "3.12.1", + "resolved": "https://registry.npmjs.org/@vue/babel-preset-app/-/babel-preset-app-3.12.1.tgz", + "integrity": "sha512-Zjy5jQaikV1Pz+ri0YgXFS7q4/5wCxB5tRkDOEIt5+4105u0Feb/pvH20nVL6nx9GyXrECFfcm7Yxr/z++OaPQ==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/plugin-proposal-class-properties": "^7.0.0", + "@babel/plugin-proposal-decorators": "^7.1.0", + "@babel/plugin-syntax-dynamic-import": "^7.0.0", + "@babel/plugin-syntax-jsx": "^7.0.0", + "@babel/plugin-transform-runtime": "^7.4.0", + "@babel/preset-env": "^7.0.0 < 7.4.0", + "@babel/runtime": "^7.0.0", + "@babel/runtime-corejs2": "^7.2.0", + "@vue/babel-preset-jsx": "^1.0.0", + "babel-plugin-dynamic-import-node": "^2.2.0", + "babel-plugin-module-resolver": "3.2.0", + "core-js": "^2.6.5" + } + }, + "@vue/babel-preset-jsx": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@vue/babel-preset-jsx/-/babel-preset-jsx-1.1.2.tgz", + "integrity": "sha512-zDpVnFpeC9YXmvGIDSsKNdL7qCG2rA3gjywLYHPCKDT10erjxF4U+6ay9X6TW5fl4GsDlJp9bVfAVQAAVzxxvQ==", + "dev": true, + "requires": { + "@vue/babel-helper-vue-jsx-merge-props": "^1.0.0", + "@vue/babel-plugin-transform-vue-jsx": "^1.1.2", + "@vue/babel-sugar-functional-vue": "^1.1.2", + "@vue/babel-sugar-inject-h": "^1.1.2", + "@vue/babel-sugar-v-model": "^1.1.2", + "@vue/babel-sugar-v-on": "^1.1.2" + } + }, + "@vue/babel-sugar-functional-vue": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@vue/babel-sugar-functional-vue/-/babel-sugar-functional-vue-1.1.2.tgz", + "integrity": "sha512-YhmdJQSVEFF5ETJXzrMpj0nkCXEa39TvVxJTuVjzvP2rgKhdMmQzlJuMv/HpadhZaRVMCCF3AEjjJcK5q/cYzQ==", + "dev": true, + "requires": { + "@babel/plugin-syntax-jsx": "^7.2.0" + } + }, + "@vue/babel-sugar-inject-h": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@vue/babel-sugar-inject-h/-/babel-sugar-inject-h-1.1.2.tgz", + "integrity": "sha512-VRSENdTvD5htpnVp7i7DNuChR5rVMcORdXjvv5HVvpdKHzDZAYiLSD+GhnhxLm3/dMuk8pSzV+k28ECkiN5m8w==", + "dev": true, + "requires": { + "@babel/plugin-syntax-jsx": "^7.2.0" + } + }, + "@vue/babel-sugar-v-model": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@vue/babel-sugar-v-model/-/babel-sugar-v-model-1.1.2.tgz", + "integrity": "sha512-vLXPvNq8vDtt0u9LqFdpGM9W9IWDmCmCyJXuozlq4F4UYVleXJ2Fa+3JsnTZNJcG+pLjjfnEGHci2339Kj5sGg==", + "dev": true, + "requires": { + "@babel/plugin-syntax-jsx": "^7.2.0", + "@vue/babel-helper-vue-jsx-merge-props": "^1.0.0", + "@vue/babel-plugin-transform-vue-jsx": "^1.1.2", + "camelcase": "^5.0.0", + "html-tags": "^2.0.0", + "svg-tags": "^1.0.0" + }, + "dependencies": { + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + } + } + }, + "@vue/babel-sugar-v-on": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@vue/babel-sugar-v-on/-/babel-sugar-v-on-1.1.2.tgz", + "integrity": "sha512-T8ZCwC8Jp2uRtcZ88YwZtZXe7eQrJcfRq0uTFy6ShbwYJyz5qWskRFoVsdTi9o0WEhmQXxhQUewodOSCUPVmsQ==", + "dev": true, + "requires": { + "@babel/plugin-syntax-jsx": "^7.2.0", + "@vue/babel-plugin-transform-vue-jsx": "^1.1.2", + "camelcase": "^5.0.0" + }, + "dependencies": { + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + } + } + }, + "@vue/cli-overlay": { + "version": "3.12.1", + "resolved": "https://registry.npmjs.org/@vue/cli-overlay/-/cli-overlay-3.12.1.tgz", + "integrity": "sha512-Bym92EN+lj+cNRN2ozbYyH+V8DMXWGbCDUk+hiJ4EYDBZfBkZKvalk1/mOBFwyxiopnnbOEBAAhL/UuMQ1xARg==", + "dev": true + }, + "@vue/cli-plugin-babel": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/@vue/cli-plugin-babel/-/cli-plugin-babel-3.5.3.tgz", + "integrity": "sha512-N0EJV+AdY5QnpGXECbv3kEpBjcKZSKy7bRkOOxpvIVHOtNYMdp0TXI5ibfuCAs53CAufcuJwm1CqeQA8uELv1w==", + "dev": true, + "requires": { + "@babel/core": "^7.0.0", + "@vue/babel-preset-app": "^3.5.3", + "@vue/cli-shared-utils": "^3.5.1", + "babel-loader": "^8.0.5", + "webpack": ">=4 < 4.29" + } + }, + "@vue/cli-plugin-eslint": { + "version": "3.12.1", + "resolved": "https://registry.npmjs.org/@vue/cli-plugin-eslint/-/cli-plugin-eslint-3.12.1.tgz", + "integrity": "sha512-tVTZlEZsy3sQbO4LLWFK11yzlWwqVAqaM+IY+BeWHITBzEJKh2KmouG+x6x/reXiU3qROsMJ4Ej3Hs8buSMWyQ==", + "dev": true, + "requires": { + "@vue/cli-shared-utils": "^3.12.1", + "babel-eslint": "^10.0.1", + "eslint": "^4.19.1", + "eslint-loader": "^2.1.2", + "eslint-plugin-vue": "^4.7.1", + "globby": "^9.2.0", + "webpack": "^4.0.0", + "yorkie": "^2.0.0" + }, + "dependencies": { + "ajv": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", + "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "dev": true, + "optional": true, + "requires": { + "co": "^4.6.0", + "fast-deep-equal": "^1.0.0", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.3.0" + } + }, + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true, + "optional": true + }, + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "dev": true, + "optional": true, + "requires": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "eslint": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.19.1.tgz", + "integrity": "sha512-bT3/1x1EbZB7phzYu7vCr1v3ONuzDtX8WjuM9c0iYxe+cq+pwcKEoQjl7zd3RpC6YOLgnSy3cTN58M2jcoPDIQ==", + "dev": true, + "optional": true, + "requires": { + "ajv": "^5.3.0", + "babel-code-frame": "^6.22.0", + "chalk": "^2.1.0", + "concat-stream": "^1.6.0", + "cross-spawn": "^5.1.0", + "debug": "^3.1.0", + "doctrine": "^2.1.0", + "eslint-scope": "^3.7.1", + "eslint-visitor-keys": "^1.0.0", + "espree": "^3.5.4", + "esquery": "^1.0.0", + "esutils": "^2.0.2", + "file-entry-cache": "^2.0.0", + "functional-red-black-tree": "^1.0.1", + "glob": "^7.1.2", + "globals": "^11.0.1", + "ignore": "^3.3.3", + "imurmurhash": "^0.1.4", + "inquirer": "^3.0.6", + "is-resolvable": "^1.0.0", + "js-yaml": "^3.9.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.3.0", + "lodash": "^4.17.4", + "minimatch": "^3.0.2", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "optionator": "^0.8.2", + "path-is-inside": "^1.0.2", + "pluralize": "^7.0.0", + "progress": "^2.0.0", + "regexpp": "^1.0.1", + "require-uncached": "^1.0.3", + "semver": "^5.3.0", + "strip-ansi": "^4.0.0", + "strip-json-comments": "~2.0.1", + "table": "4.0.2", + "text-table": "~0.2.0" + } + }, + "eslint-plugin-vue": { + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-4.7.1.tgz", + "integrity": "sha512-esETKhVMI7Vdli70Wt4bvAwnZBJeM0pxVX9Yb0wWKxdCJc2EADalVYK/q2FzMw8oKN0wPMdqVCKS8kmR89recA==", + "dev": true, + "optional": true, + "requires": { + "vue-eslint-parser": "^2.0.3" + } + }, + "eslint-scope": { + "version": "3.7.3", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.3.tgz", + "integrity": "sha512-W+B0SvF4gamyCTmUc+uITPY0989iXVfKvhwtmJocTaYoc/3khEHmEmvfY/Gn9HA9VV75jrQECsHizkNw1b68FA==", + "dev": true, + "optional": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "fast-deep-equal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", + "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", + "dev": true, + "optional": true + }, + "json-schema-traverse": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", + "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", + "dev": true, + "optional": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "optional": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "@vue/cli-plugin-unit-jest": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/@vue/cli-plugin-unit-jest/-/cli-plugin-unit-jest-3.5.3.tgz", + "integrity": "sha512-6GRN3dhFXF8FTqvAylHA8fh+ii5+KoKPPz972j18V/MedYgm39qVSkDWD2sLKOueTX5SSVqk3QKyF6gy+Uhp7Q==", + "dev": true, + "requires": { + "@vue/cli-shared-utils": "^3.5.1", + "babel-jest": "^23.6.0", + "babel-plugin-transform-es2015-modules-commonjs": "^6.26.2", + "jest": "^23.6.0", + "jest-serializer-vue": "^2.0.2", + "jest-transform-stub": "^2.0.0", + "vue-jest": "^3.0.3" + } + }, + "@vue/cli-service": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/@vue/cli-service/-/cli-service-3.5.3.tgz", + "integrity": "sha512-28MDRVZe+yebtiSJHfYS6fOvPN1P8DX4BIsDp4rLqZxc7l8yoG6pBWyv9ENT4WO9gAXRGzEsKcJ5qLtXLvQeYQ==", + "dev": true, + "requires": { + "@intervolga/optimize-cssnano-plugin": "^1.0.5", + "@soda/friendly-errors-webpack-plugin": "^1.7.1", + "@vue/cli-overlay": "^3.5.1", + "@vue/cli-shared-utils": "^3.5.1", + "@vue/component-compiler-utils": "^2.6.0", + "@vue/preload-webpack-plugin": "^1.1.0", + "@vue/web-component-wrapper": "^1.2.0", + "acorn": "^6.1.0", + "acorn-walk": "^6.1.1", + "address": "^1.0.3", + "autoprefixer": "^9.4.8", + "cache-loader": "^2.0.1", + "case-sensitive-paths-webpack-plugin": "^2.2.0", + "chalk": "^2.4.2", + "clipboardy": "^1.2.3", + "cliui": "^4.1.0", + "copy-webpack-plugin": "^4.6.0", + "css-loader": "^1.0.1", + "cssnano": "^4.1.10", + "debug": "^4.1.1", + "dotenv": "^6.2.0", + "dotenv-expand": "^4.2.0", + "escape-string-regexp": "^1.0.5", + "file-loader": "^3.0.1", + "fs-extra": "^7.0.1", + "globby": "^9.0.0", + "hash-sum": "^1.0.2", + "html-webpack-plugin": "^3.2.0", + "launch-editor-middleware": "^2.2.1", + "lodash.defaultsdeep": "^4.6.0", + "lodash.mapvalues": "^4.6.0", + "lodash.transform": "^4.6.0", + "mini-css-extract-plugin": "^0.5.0", + "minimist": "^1.2.0", + "ora": "^3.1.0", + "portfinder": "^1.0.20", + "postcss-loader": "^3.0.0", + "read-pkg": "^4.0.1", + "semver": "^5.6.0", + "slash": "^2.0.0", + "source-map-url": "^0.4.0", + "ssri": "^6.0.1", + "string.prototype.padend": "^3.0.0", + "terser-webpack-plugin": "^1.2.2", + "thread-loader": "^2.1.2", + "url-loader": "^1.1.2", + "vue-loader": "^15.6.4", + "webpack": ">=4 < 4.29", + "webpack-bundle-analyzer": "^3.0.4", + "webpack-chain": "^4.11.0", + "webpack-dev-server": "^3.2.0", + "webpack-merge": "^4.2.1", + "yorkie": "^2.0.0" + }, + "dependencies": { + "acorn": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", + "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==", + "dev": true + }, + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "cliui": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "dev": true, + "requires": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" + } + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + }, + "read-pkg": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-4.0.1.tgz", + "integrity": "sha1-ljYlN48+HE1IyFhytabsfV0JMjc=", + "dev": true, + "requires": { + "normalize-package-data": "^2.3.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0" + } + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + } + } + }, + "@vue/cli-shared-utils": { + "version": "3.12.1", + "resolved": "https://registry.npmjs.org/@vue/cli-shared-utils/-/cli-shared-utils-3.12.1.tgz", + "integrity": "sha512-jFblzRFjutGwu5utOKdVlPlsbA1lBUNNQlAThzNqej+JtTKJjnvjlhjKX0Gq0oOny5FjKWhoyfQ74p9h1qE6JQ==", + "dev": true, + "requires": { + "@hapi/joi": "^15.0.1", + "chalk": "^2.4.1", + "execa": "^1.0.0", + "launch-editor": "^2.2.1", + "lru-cache": "^5.1.1", + "node-ipc": "^9.1.1", + "open": "^6.3.0", + "ora": "^3.4.0", + "request": "^2.87.0", + "request-promise-native": "^1.0.7", + "semver": "^6.0.0", + "string.prototype.padstart": "^3.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + } + } + }, + "@vue/component-compiler-utils": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@vue/component-compiler-utils/-/component-compiler-utils-2.6.0.tgz", + "integrity": "sha512-IHjxt7LsOFYc0DkTncB7OXJL7UzwOLPPQCfEUNyxL2qt+tF12THV+EO33O1G2Uk4feMSWua3iD39Itszx0f0bw==", + "dev": true, + "requires": { + "consolidate": "^0.15.1", + "hash-sum": "^1.0.2", + "lru-cache": "^4.1.2", + "merge-source-map": "^1.1.0", + "postcss": "^7.0.14", + "postcss-selector-parser": "^5.0.0", + "prettier": "1.16.3", + "source-map": "~0.6.1", + "vue-template-es2015-compiler": "^1.9.0" + }, + "dependencies": { + "cssesc": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", + "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==", + "dev": true + }, + "postcss-selector-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", + "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==", + "dev": true, + "requires": { + "cssesc": "^2.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "@vue/preload-webpack-plugin": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@vue/preload-webpack-plugin/-/preload-webpack-plugin-1.1.1.tgz", + "integrity": "sha512-8VCoJeeH8tCkzhkpfOkt+abALQkS11OIHhte5MBzYaKMTqK0A3ZAKEUVAffsOklhEv7t0yrQt696Opnu9oAx+w==", + "dev": true + }, + "@vue/test-utils": { + "version": "1.0.0-beta.29", + "resolved": "https://registry.npmjs.org/@vue/test-utils/-/test-utils-1.0.0-beta.29.tgz", + "integrity": "sha512-yX4sxEIHh4M9yAbLA/ikpEnGKMNBCnoX98xE1RwxfhQVcn0MaXNSj1Qmac+ZydTj6VBSEVukchBogXBTwc+9iA==", + "dev": true, + "requires": { + "dom-event-types": "^1.0.0", + "lodash": "^4.17.4" + } + }, + "@vue/web-component-wrapper": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@vue/web-component-wrapper/-/web-component-wrapper-1.2.0.tgz", + "integrity": "sha512-Xn/+vdm9CjuC9p3Ae+lTClNutrVhsXpzxvoTXXtoys6kVRX9FkueSUAqSWAyZntmVLlR4DosBV4pH8y5Z/HbUw==", + "dev": true + }, + "@webassemblyjs/ast": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.7.11.tgz", + "integrity": "sha512-ZEzy4vjvTzScC+SH8RBssQUawpaInUdMTYwYYLh54/s8TuT0gBLuyUnppKsVyZEi876VmmStKsUs28UxPgdvrA==", + "dev": true, + "requires": { + "@webassemblyjs/helper-module-context": "1.7.11", + "@webassemblyjs/helper-wasm-bytecode": "1.7.11", + "@webassemblyjs/wast-parser": "1.7.11" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.7.11.tgz", + "integrity": "sha512-zY8dSNyYcgzNRNT666/zOoAyImshm3ycKdoLsyDw/Bwo6+/uktb7p4xyApuef1dwEBo/U/SYQzbGBvV+nru2Xg==", + "dev": true + }, + "@webassemblyjs/helper-api-error": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.7.11.tgz", + "integrity": "sha512-7r1qXLmiglC+wPNkGuXCvkmalyEstKVwcueZRP2GNC2PAvxbLYwLLPr14rcdJaE4UtHxQKfFkuDFuv91ipqvXg==", + "dev": true + }, + "@webassemblyjs/helper-buffer": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.7.11.tgz", + "integrity": "sha512-MynuervdylPPh3ix+mKZloTcL06P8tenNH3sx6s0qE8SLR6DdwnfgA7Hc9NSYeob2jrW5Vql6GVlsQzKQCa13w==", + "dev": true + }, + "@webassemblyjs/helper-code-frame": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.7.11.tgz", + "integrity": "sha512-T8ESC9KMXFTXA5urJcyor5cn6qWeZ4/zLPyWeEXZ03hj/x9weSokGNkVCdnhSabKGYWxElSdgJ+sFa9G/RdHNw==", + "dev": true, + "requires": { + "@webassemblyjs/wast-printer": "1.7.11" + } + }, + "@webassemblyjs/helper-fsm": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.7.11.tgz", + "integrity": "sha512-nsAQWNP1+8Z6tkzdYlXT0kxfa2Z1tRTARd8wYnc/e3Zv3VydVVnaeePgqUzFrpkGUyhUUxOl5ML7f1NuT+gC0A==", + "dev": true + }, + "@webassemblyjs/helper-module-context": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.7.11.tgz", + "integrity": "sha512-JxfD5DX8Ygq4PvXDucq0M+sbUFA7BJAv/GGl9ITovqE+idGX+J3QSzJYz+LwQmL7fC3Rs+utvWoJxDb6pmC0qg==", + "dev": true + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.7.11.tgz", + "integrity": "sha512-cMXeVS9rhoXsI9LLL4tJxBgVD/KMOKXuFqYb5oCJ/opScWpkCMEz9EJtkonaNcnLv2R3K5jIeS4TRj/drde1JQ==", + "dev": true + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.7.11.tgz", + "integrity": "sha512-8ZRY5iZbZdtNFE5UFunB8mmBEAbSI3guwbrsCl4fWdfRiAcvqQpeqd5KHhSWLL5wuxo53zcaGZDBU64qgn4I4Q==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.7.11", + "@webassemblyjs/helper-buffer": "1.7.11", + "@webassemblyjs/helper-wasm-bytecode": "1.7.11", + "@webassemblyjs/wasm-gen": "1.7.11" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.7.11.tgz", + "integrity": "sha512-Mmqx/cS68K1tSrvRLtaV/Lp3NZWzXtOHUW2IvDvl2sihAwJh4ACE0eL6A8FvMyDG9abes3saB6dMimLOs+HMoQ==", + "dev": true, + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.7.11.tgz", + "integrity": "sha512-vuGmgZjjp3zjcerQg+JA+tGOncOnJLWVkt8Aze5eWQLwTQGNgVLcyOTqgSCxWTR4J42ijHbBxnuRaL1Rv7XMdw==", + "dev": true, + "requires": { + "@xtuc/long": "4.2.1" + } + }, + "@webassemblyjs/utf8": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.7.11.tgz", + "integrity": "sha512-C6GFkc7aErQIAH+BMrIdVSmW+6HSe20wg57HEC1uqJP8E/xpMjXqQUxkQw07MhNDSDcGpxI9G5JSNOQCqJk4sA==", + "dev": true + }, + "@webassemblyjs/wasm-edit": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.7.11.tgz", + "integrity": "sha512-FUd97guNGsCZQgeTPKdgxJhBXkUbMTY6hFPf2Y4OedXd48H97J+sOY2Ltaq6WGVpIH8o/TGOVNiVz/SbpEMJGg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.7.11", + "@webassemblyjs/helper-buffer": "1.7.11", + "@webassemblyjs/helper-wasm-bytecode": "1.7.11", + "@webassemblyjs/helper-wasm-section": "1.7.11", + "@webassemblyjs/wasm-gen": "1.7.11", + "@webassemblyjs/wasm-opt": "1.7.11", + "@webassemblyjs/wasm-parser": "1.7.11", + "@webassemblyjs/wast-printer": "1.7.11" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.7.11.tgz", + "integrity": "sha512-U/KDYp7fgAZX5KPfq4NOupK/BmhDc5Kjy2GIqstMhvvdJRcER/kUsMThpWeRP8BMn4LXaKhSTggIJPOeYHwISA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.7.11", + "@webassemblyjs/helper-wasm-bytecode": "1.7.11", + "@webassemblyjs/ieee754": "1.7.11", + "@webassemblyjs/leb128": "1.7.11", + "@webassemblyjs/utf8": "1.7.11" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.7.11.tgz", + "integrity": "sha512-XynkOwQyiRidh0GLua7SkeHvAPXQV/RxsUeERILmAInZegApOUAIJfRuPYe2F7RcjOC9tW3Cb9juPvAC/sCqvg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.7.11", + "@webassemblyjs/helper-buffer": "1.7.11", + "@webassemblyjs/wasm-gen": "1.7.11", + "@webassemblyjs/wasm-parser": "1.7.11" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.7.11.tgz", + "integrity": "sha512-6lmXRTrrZjYD8Ng8xRyvyXQJYUQKYSXhJqXOBLw24rdiXsHAOlvw5PhesjdcaMadU/pyPQOJ5dHreMjBxwnQKg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.7.11", + "@webassemblyjs/helper-api-error": "1.7.11", + "@webassemblyjs/helper-wasm-bytecode": "1.7.11", + "@webassemblyjs/ieee754": "1.7.11", + "@webassemblyjs/leb128": "1.7.11", + "@webassemblyjs/utf8": "1.7.11" + } + }, + "@webassemblyjs/wast-parser": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.7.11.tgz", + "integrity": "sha512-lEyVCg2np15tS+dm7+JJTNhNWq9yTZvi3qEhAIIOaofcYlUp0UR5/tVqOwa/gXYr3gjwSZqw+/lS9dscyLelbQ==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.7.11", + "@webassemblyjs/floating-point-hex-parser": "1.7.11", + "@webassemblyjs/helper-api-error": "1.7.11", + "@webassemblyjs/helper-code-frame": "1.7.11", + "@webassemblyjs/helper-fsm": "1.7.11", + "@xtuc/long": "4.2.1" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.7.11.tgz", + "integrity": "sha512-m5vkAsuJ32QpkdkDOUPGSltrg8Cuk3KBx4YrmAGQwCZPRdUHXxG4phIOuuycLemHFr74sWL9Wthqss4fzdzSwg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.7.11", + "@webassemblyjs/wast-parser": "1.7.11", + "@xtuc/long": "4.2.1" + } + }, + "@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "@xtuc/long": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.1.tgz", + "integrity": "sha512-FZdkNBDqBRHKQ2MEbSC17xnPFOhZxeJ2YGSfr2BKf3sujG49Qe3bB+rGCwQfIaA7WHnGeGkSijX4FuBCdrzW/g==", + "dev": true + }, + "JSV": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/JSV/-/JSV-4.0.2.tgz", + "integrity": "sha1-0Hf2glVx+CEy+d/67Vh7QCn+/1c=" + }, + "abab": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.3.tgz", + "integrity": "sha512-tsFzPpcttalNjFBCFMqsKYQcWxxen1pgJR56by//QwvJc4/OUS3kPOOttx2tSIfjsylB0pYu7f5D3K1RCxUnUg==", + "dev": true + }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" + }, + "accepts": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "dev": true, + "requires": { + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + } + }, + "acorn": { + "version": "5.7.4", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz", + "integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==", + "dev": true + }, + "acorn-dynamic-import": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-3.0.0.tgz", + "integrity": "sha512-zVWV8Z8lislJoOKKqdNMOB+s6+XV5WERty8MnKBeFgwA+19XJjJHs2RP5dzM57FftIs+jQnRToLiWazKr6sSWg==", + "dev": true, + "requires": { + "acorn": "^5.0.0" + } + }, + "acorn-globals": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.4.tgz", + "integrity": "sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==", + "dev": true, + "requires": { + "acorn": "^6.0.1", + "acorn-walk": "^6.0.1" + }, + "dependencies": { + "acorn": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", + "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==", + "dev": true + } + } + }, + "acorn-jsx": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", + "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", + "dev": true, + "optional": true, + "requires": { + "acorn": "^3.0.4" + }, + "dependencies": { + "acorn": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", + "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", + "dev": true, + "optional": true + } + } + }, + "acorn-walk": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.2.0.tgz", + "integrity": "sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==", + "dev": true + }, + "address": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/address/-/address-1.1.2.tgz", + "integrity": "sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA==", + "dev": true + }, + "adler-32": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/adler-32/-/adler-32-1.2.0.tgz", + "integrity": "sha1-aj5r8KY5ALoVZSgIyxXGgT0aXyU=", + "requires": { + "exit-on-epipe": "~1.0.1", + "printj": "~1.1.0" + } + }, + "ajv": { + "version": "6.12.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.2.tgz", + "integrity": "sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ==", + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-errors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", + "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", + "dev": true + }, + "ajv-keywords": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.1.tgz", + "integrity": "sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ==", + "dev": true + }, + "alphanum-sort": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", + "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=", + "dev": true + }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=" + }, + "ansi-colors": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz", + "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==", + "dev": true + }, + "ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "dev": true + }, + "ansi-html": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", + "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=", + "dev": true + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "ansi-styles": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.0.0.tgz", + "integrity": "sha1-yxAt8cVvUSPquLZ817mAJ6AnkXg=" + }, + "any-observable": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/any-observable/-/any-observable-0.3.0.tgz", + "integrity": "sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog==", + "dev": true + }, + "anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "dev": true, + "optional": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "append-transform": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-0.4.0.tgz", + "integrity": "sha1-126/jKlNJ24keja61EpLdKthGZE=", + "dev": true, + "requires": { + "default-require-extensions": "^1.0.0" + } + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" + }, + "arch": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/arch/-/arch-2.1.2.tgz", + "integrity": "sha512-NTBIIbAfkJeIletyABbVtdPgeKfDafR+1mZV/AyyfC1UkVkp9iUjV+wwmqtUgphHYajbI86jejBJp5e+jkGTiQ==", + "dev": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", + "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true + }, + "array-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", + "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=", + "dev": true + }, + "array-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", + "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=", + "dev": true + }, + "array-find-index": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=" + }, + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", + "dev": true + }, + "array-slice": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", + "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==", + "dev": true + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true, + "requires": { + "array-uniq": "^1.0.1" + } + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "asn1.js": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", + "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } + } + }, + "assert": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", + "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", + "dev": true, + "requires": { + "object-assign": "^4.1.1", + "util": "0.10.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", + "dev": true + }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "dev": true, + "requires": { + "inherits": "2.0.1" + } + } + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true + }, + "astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "dev": true + }, + "async": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", + "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "dev": true, + "requires": { + "lodash": "^4.17.14" + } + }, + "async-each": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", + "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", + "dev": true + }, + "async-foreach": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz", + "integrity": "sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI=" + }, + "async-limiter": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", + "dev": true + }, + "async-validator": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/async-validator/-/async-validator-1.8.5.tgz", + "integrity": "sha512-tXBM+1m056MAX0E8TL2iCjg8WvSyXu0Zc8LNtYqrVeyoL3+esHRZ4SieE9fKQyyU09uONjnMEjrNBMqT0mbvmA==", + "requires": { + "babel-runtime": "6.x" + } + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true + }, + "autoprefixer": { + "version": "9.8.0", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.0.tgz", + "integrity": "sha512-D96ZiIHXbDmU02dBaemyAg53ez+6F5yZmapmgKcjm35yEe1uVDYI8hGW3VYoGRaG290ZFf91YxHrR518vC0u/A==", + "dev": true, + "requires": { + "browserslist": "^4.12.0", + "caniuse-lite": "^1.0.30001061", + "chalk": "^2.4.2", + "normalize-range": "^0.1.2", + "num2fraction": "^1.2.2", + "postcss": "^7.0.30", + "postcss-value-parser": "^4.1.0" + } + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" + }, + "aws4": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.10.0.tgz", + "integrity": "sha512-3YDiu347mtVtjpyV3u5kVqQLP242c06zwDOgpeRnybmXlYYsLbtTrUBUm8i8srONt+FWobl5aibnU1030PeeuA==" + }, + "axios": { + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.18.1.tgz", + "integrity": "sha512-0BfJq4NSfQXd+SkFdrvFbG7addhYSBA2mQwISr46pD6E5iqkWg02RAs8vyTT/j0RTnoYmeXauBuSv1qKwR179g==", + "requires": { + "follow-redirects": "1.5.10", + "is-buffer": "^2.0.2" + } + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "babel-core": { + "version": "7.0.0-bridge.0", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-7.0.0-bridge.0.tgz", + "integrity": "sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==", + "dev": true + }, + "babel-eslint": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.0.1.tgz", + "integrity": "sha512-z7OT1iNV+TjOwHNLLyJk+HN+YVWX+CLE6fPD2SymJZOZQBs+QIexFjhm4keGTm8MW9xr4EC9Q0PbaLB24V5GoQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.0.0", + "@babel/traverse": "^7.0.0", + "@babel/types": "^7.0.0", + "eslint-scope": "3.7.1", + "eslint-visitor-keys": "^1.0.0" + }, + "dependencies": { + "eslint-scope": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.1.tgz", + "integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + } + } + }, + "babel-generator": { + "version": "6.26.1", + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", + "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", + "dev": true, + "requires": { + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "detect-indent": "^4.0.0", + "jsesc": "^1.3.0", + "lodash": "^4.17.4", + "source-map": "^0.5.7", + "trim-right": "^1.0.1" + }, + "dependencies": { + "jsesc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "babel-helper-vue-jsx-merge-props": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-2.0.3.tgz", + "integrity": "sha512-gsLiKK7Qrb7zYJNgiXKpXblxbV5ffSwR0f5whkPAaBAR4fhi6bwRZxX9wBlIc5M/v8CCkXUbXZL4N/nSE97cqg==" + }, + "babel-helpers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", + "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-jest": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-23.6.0.tgz", + "integrity": "sha512-lqKGG6LYXYu+DQh/slrQ8nxXQkEkhugdXsU6St7GmhVS7Ilc/22ArwqXNJrf0QaOBjZB0360qZMwXqDYQHXaew==", + "dev": true, + "requires": { + "babel-plugin-istanbul": "^4.1.6", + "babel-preset-jest": "^23.2.0" + } + }, + "babel-loader": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.1.0.tgz", + "integrity": "sha512-7q7nC1tYOrqvUrN3LQK4GwSk/TQorZSOlO9C+RZDZpODgyN4ZlCqE5q9cDsyWOliN+aU9B4JX01xK9eJXowJLw==", + "dev": true, + "requires": { + "find-cache-dir": "^2.1.0", + "loader-utils": "^1.4.0", + "mkdirp": "^0.5.3", + "pify": "^4.0.1", + "schema-utils": "^2.6.5" + }, + "dependencies": { + "find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + } + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "requires": { + "find-up": "^3.0.0" + } + } + } + }, + "babel-messages": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "dev": true, + "requires": { + "object.assign": "^4.1.0" + } + }, + "babel-plugin-istanbul": { + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.6.tgz", + "integrity": "sha512-PWP9FQ1AhZhS01T/4qLSKoHGY/xvkZdVBGlKM/HuxxS3+sC66HhTNR7+MpbO/so/cz/wY94MeSWJuP1hXIPfwQ==", + "dev": true, + "requires": { + "babel-plugin-syntax-object-rest-spread": "^6.13.0", + "find-up": "^2.1.0", + "istanbul-lib-instrument": "^1.10.1", + "test-exclude": "^4.2.1" + }, + "dependencies": { + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + } + } + }, + "babel-plugin-jest-hoist": { + "version": "23.2.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-23.2.0.tgz", + "integrity": "sha1-5h+uBaHKiAGq3uV6bWa4zvr0QWc=", + "dev": true + }, + "babel-plugin-module-resolver": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/babel-plugin-module-resolver/-/babel-plugin-module-resolver-3.2.0.tgz", + "integrity": "sha512-tjR0GvSndzPew/Iayf4uICWZqjBwnlMWjSx6brryfQ81F9rxBVqwDJtFCV8oOs0+vJeefK9TmdZtkIFdFe1UnA==", + "dev": true, + "requires": { + "find-babel-config": "^1.1.0", + "glob": "^7.1.2", + "pkg-up": "^2.0.0", + "reselect": "^3.0.1", + "resolve": "^1.4.0" + } + }, + "babel-plugin-syntax-object-rest-spread": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", + "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=", + "dev": true + }, + "babel-plugin-transform-es2015-modules-commonjs": { + "version": "6.26.2", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz", + "integrity": "sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q==", + "dev": true, + "requires": { + "babel-plugin-transform-strict-mode": "^6.24.1", + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-types": "^6.26.0" + } + }, + "babel-plugin-transform-strict-mode": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", + "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-preset-jest": { + "version": "23.2.0", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-23.2.0.tgz", + "integrity": "sha1-jsegOhOPABoaj7HoETZSvxpV2kY=", + "dev": true, + "requires": { + "babel-plugin-jest-hoist": "^23.2.0", + "babel-plugin-syntax-object-rest-spread": "^6.13.0" + } + }, + "babel-register": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", + "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", + "dev": true, + "requires": { + "babel-core": "^6.26.0", + "babel-runtime": "^6.26.0", + "core-js": "^2.5.0", + "home-or-tmp": "^2.0.0", + "lodash": "^4.17.4", + "mkdirp": "^0.5.1", + "source-map-support": "^0.4.15" + }, + "dependencies": { + "babel-core": { + "version": "6.26.3", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz", + "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==", + "dev": true, + "requires": { + "babel-code-frame": "^6.26.0", + "babel-generator": "^6.26.0", + "babel-helpers": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-register": "^6.26.0", + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "convert-source-map": "^1.5.1", + "debug": "^2.6.9", + "json5": "^0.5.1", + "lodash": "^4.17.4", + "minimatch": "^3.0.4", + "path-is-absolute": "^1.0.1", + "private": "^0.1.8", + "slash": "^1.0.0", + "source-map": "^0.5.7" + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "home-or-tmp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", + "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", + "dev": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.1" + } + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "source-map-support": { + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", + "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", + "dev": true, + "requires": { + "source-map": "^0.5.6" + } + } + } + }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "requires": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + } + }, + "babel-template": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", + "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "lodash": "^4.17.4" + } + }, + "babel-traverse": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", + "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", + "dev": true, + "requires": { + "babel-code-frame": "^6.26.0", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "debug": "^2.6.8", + "globals": "^9.18.0", + "invariant": "^2.2.2", + "lodash": "^4.17.4" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "globals": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", + "dev": true + } + } + }, + "babel-types": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "esutils": "^2.0.2", + "lodash": "^4.17.4", + "to-fast-properties": "^1.0.3" + }, + "dependencies": { + "to-fast-properties": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", + "dev": true + } + } + }, + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "base64-js": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", + "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==", + "dev": true + }, + "batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "bfj": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/bfj/-/bfj-6.1.2.tgz", + "integrity": "sha512-BmBJa4Lip6BPRINSZ0BPEIfB1wUY/9rwbwvIHQA1KjX9om29B6id0wnWXq7m3bn5JrUVjeOTnVuhPT1FiHwPGw==", + "dev": true, + "requires": { + "bluebird": "^3.5.5", + "check-types": "^8.0.3", + "hoopy": "^0.1.4", + "tryer": "^1.0.1" + } + }, + "big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true + }, + "binary-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.0.0.tgz", + "integrity": "sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow==", + "dev": true, + "optional": true + }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dev": true, + "optional": true, + "requires": { + "file-uri-to-path": "1.0.0" + } + }, + "block-stream": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", + "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", + "requires": { + "inherits": "~2.0.0" + } + }, + "bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true + }, + "bn.js": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.1.2.tgz", + "integrity": "sha512-40rZaf3bUNKTVYu9sIeeEGOg7g14Yvnj9kH7b50EiwX0Q7A6umbvfI5tvHaOERH0XigqKkfLkFQxzb4e6CIXnA==", + "dev": true + }, + "body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", + "dev": true, + "requires": { + "bytes": "3.1.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.7.0", + "raw-body": "2.4.0", + "type-is": "~1.6.17" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", + "dev": true + } + } + }, + "bonjour": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", + "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", + "dev": true, + "requires": { + "array-flatten": "^2.1.0", + "deep-equal": "^1.0.1", + "dns-equal": "^1.0.0", + "dns-txt": "^2.0.2", + "multicast-dns": "^6.0.1", + "multicast-dns-service-types": "^1.1.0" + }, + "dependencies": { + "array-flatten": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", + "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", + "dev": true + } + } + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", + "dev": true + }, + "browser-process-hrtime": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", + "dev": true + }, + "browser-resolve": { + "version": "1.11.3", + "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.3.tgz", + "integrity": "sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==", + "dev": true, + "requires": { + "resolve": "1.1.7" + }, + "dependencies": { + "resolve": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", + "dev": true + } + } + }, + "browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dev": true, + "requires": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "dev": true, + "requires": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "browserify-rsa": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "randombytes": "^2.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } + } + }, + "browserify-sign": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.0.tgz", + "integrity": "sha512-hEZC1KEeYuoHRqhGhTy6gWrpJA3ZDjFWv0DE61643ZnOXAKJb3u7yWcrU0mMc9SwAqK1n7myPGndkp0dFG7NFA==", + "dev": true, + "requires": { + "bn.js": "^5.1.1", + "browserify-rsa": "^4.0.1", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.2", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.5", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } + } + }, + "browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "dev": true, + "requires": { + "pako": "~1.0.5" + } + }, + "browserslist": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.12.0.tgz", + "integrity": "sha512-UH2GkcEDSI0k/lRkuDSzFl9ZZ87skSy9w2XAn1MsZnL+4c4rqbBd3e82UWHbYDpztABrPBhZsTEeuxVfHppqDg==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001043", + "electron-to-chromium": "^1.3.413", + "node-releases": "^1.1.53", + "pkg-up": "^2.0.0" + } + }, + "bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, + "requires": { + "node-int64": "^0.4.0" + } + }, + "buffer": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", + "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", + "dev": true, + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "buffer-alloc": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", + "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", + "dev": true, + "requires": { + "buffer-alloc-unsafe": "^1.1.0", + "buffer-fill": "^1.0.0" + } + }, + "buffer-alloc-unsafe": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", + "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==", + "dev": true + }, + "buffer-fill": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", + "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=", + "dev": true + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "dev": true + }, + "buffer-indexof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", + "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", + "dev": true + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", + "dev": true + }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", + "dev": true + }, + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", + "dev": true + }, + "cacache": { + "version": "12.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", + "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", + "dev": true, + "requires": { + "bluebird": "^3.5.5", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.4", + "graceful-fs": "^4.1.15", + "infer-owner": "^1.0.3", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.3", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + } + } + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, + "cache-loader": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/cache-loader/-/cache-loader-2.0.1.tgz", + "integrity": "sha512-V99T3FOynmGx26Zom+JrVBytLBsmUCzVG2/4NnUKgvXN4bEV42R1ERl1IyiH/cvFIDA1Ytq2lPZ9tXDSahcQpQ==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "mkdirp": "^0.5.1", + "neo-async": "^2.6.0", + "normalize-path": "^3.0.0", + "schema-utils": "^1.0.0" + }, + "dependencies": { + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + } + } + }, + "call-me-maybe": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", + "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=", + "dev": true + }, + "caller-callsite": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", + "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", + "dev": true, + "requires": { + "callsites": "^2.0.0" + }, + "dependencies": { + "callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", + "dev": true + } + } + }, + "caller-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", + "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", + "dev": true, + "optional": true, + "requires": { + "callsites": "^0.2.0" + } + }, + "callsites": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", + "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=", + "dev": true, + "optional": true + }, + "camel-case": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", + "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=", + "dev": true, + "requires": { + "no-case": "^2.2.0", + "upper-case": "^1.1.1" + } + }, + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=" + }, + "camelcase-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", + "requires": { + "camelcase": "^2.0.0", + "map-obj": "^1.0.0" + } + }, + "caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "caniuse-lite": { + "version": "1.0.30001083", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001083.tgz", + "integrity": "sha512-CnYJ27awX4h7yj5glfK7r1TOI13LBytpLzEgfj0s4mY75/F8pnQcYjL+oVpmS38FB59+vU0gscQ9D8tc+lIXvA==", + "dev": true + }, + "capture-exit": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-1.2.0.tgz", + "integrity": "sha1-HF/MSJ/QqwDU8ax64QcuMXP7q28=", + "dev": true, + "requires": { + "rsvp": "^3.3.3" + } + }, + "case-sensitive-paths-webpack-plugin": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.3.0.tgz", + "integrity": "sha512-/4YgnZS8y1UXXmC02xD5rRrBEu6T5ub+mQHLNRj0fzTRbgdBYhsNo2V5EqwgqrExjxsjtF/OpAKAMkKsxbD5XQ==", + "dev": true + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" + }, + "cfb": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/cfb/-/cfb-1.1.4.tgz", + "integrity": "sha512-rwFkl3aFO3f+ljR27YINwC0x8vPjyiEVbYbrTCKzspEf7Q++3THdfHVgJYNUbxNcupJECrLX+L40Mjm9hm/Bgw==", + "requires": { + "adler-32": "~1.2.0", + "commander": "^2.16.0", + "crc-32": "~1.2.0", + "printj": "~1.1.2" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "change-case": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/change-case/-/change-case-3.1.0.tgz", + "integrity": "sha512-2AZp7uJZbYEzRPsFoa+ijKdvp9zsrnnt6+yFokfwEpeJm0xuJDVoxiRCAaTzyJND8GJkofo2IcKWaUZ/OECVzw==", + "dev": true, + "requires": { + "camel-case": "^3.0.0", + "constant-case": "^2.0.0", + "dot-case": "^2.1.0", + "header-case": "^1.0.0", + "is-lower-case": "^1.1.0", + "is-upper-case": "^1.1.0", + "lower-case": "^1.1.1", + "lower-case-first": "^1.0.0", + "no-case": "^2.3.2", + "param-case": "^2.1.0", + "pascal-case": "^2.0.0", + "path-case": "^2.1.0", + "sentence-case": "^2.1.0", + "snake-case": "^2.1.0", + "swap-case": "^1.1.0", + "title-case": "^2.1.0", + "upper-case": "^1.1.1", + "upper-case-first": "^1.1.0" + } + }, + "chardet": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", + "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=", + "dev": true, + "optional": true + }, + "check-types": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/check-types/-/check-types-8.0.3.tgz", + "integrity": "sha512-YpeKZngUmG65rLudJ4taU7VLkOCTMhNl/u4ctNC56LQS/zJTyNH0Lrtwm1tfTsbLlwvlfsA2d1c8vCf/Kh2KwQ==", + "dev": true + }, + "chokidar": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.5.tgz", + "integrity": "sha512-i0TprVWp+Kj4WRPtInjexJ8Q+BqTE909VpH8xVhXrJkoc5QC8VO9TryGOqTr+2hljzc1sC62t22h5tZePodM/A==", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + }, + "dependencies": { + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true + }, + "fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "dev": true, + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + } + } + }, + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true + }, + "chrome-trace-event": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz", + "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "ci-info": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.6.0.tgz", + "integrity": "sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==", + "dev": true + }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "circular-json": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", + "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", + "dev": true, + "optional": true + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "clean-css": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.3.tgz", + "integrity": "sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA==", + "dev": true, + "requires": { + "source-map": "~0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "dev": true, + "requires": { + "restore-cursor": "^2.0.0" + } + }, + "cli-spinners": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.3.0.tgz", + "integrity": "sha512-Xs2Hf2nzrvJMFKimOR7YR0QwZ8fc0u98kdtwN1eNAZzNQgH3vK2pXzff6GJtKh7S5hoJ87ECiAiZFS2fb5Ii2w==", + "dev": true + }, + "cli-truncate": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-0.2.1.tgz", + "integrity": "sha1-nxXPuwcFAFNpIWxiasfQWrkN1XQ=", + "dev": true, + "requires": { + "slice-ansi": "0.0.4", + "string-width": "^1.0.1" + }, + "dependencies": { + "slice-ansi": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", + "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=", + "dev": true + } + } + }, + "cli-width": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", + "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==", + "dev": true + }, + "clipboard": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.4.tgz", + "integrity": "sha512-Vw26VSLRpJfBofiVaFb/I8PVfdI1OxKcYShe6fm0sP/DtmiWQNCjhM/okTvdCo0G+lMMm1rMYbk4IK4x1X+kgQ==", + "requires": { + "good-listener": "^1.2.2", + "select": "^1.1.2", + "tiny-emitter": "^2.0.0" + } + }, + "clipboardy": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-1.2.3.tgz", + "integrity": "sha512-2WNImOvCRe6r63Gk9pShfkwXsVtKCroMAevIbiae021mS850UkWPbevxsBz3tnvjZIEGvlwaqCPsw+4ulzNgJA==", + "dev": true, + "requires": { + "arch": "^2.1.0", + "execa": "^0.8.0" + }, + "dependencies": { + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "dev": true, + "requires": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "execa": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.8.0.tgz", + "integrity": "sha1-2NdrvBtVIX7RkP1t1J08d07PyNo=", + "dev": true, + "requires": { + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + } + } + }, + "cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "requires": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", + "dev": true + }, + "clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + } + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true + }, + "coa": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", + "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", + "dev": true, + "requires": { + "@types/q": "^1.5.1", + "chalk": "^2.4.1", + "q": "^1.1.2" + } + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" + }, + "codemirror": { + "version": "5.45.0", + "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.45.0.tgz", + "integrity": "sha512-c19j644usCE8gQaXa0jqn2B/HN9MnB2u6qPIrrhrMkB+QAP42y8G4QnTwuwbVSoUS1jEl7JU9HZMGhCDL0nsAw==" + }, + "codepage": { + "version": "1.14.0", + "resolved": "https://registry.npmjs.org/codepage/-/codepage-1.14.0.tgz", + "integrity": "sha1-jL4lSBMjVZ19MHVxsP/5HnodL5k=", + "requires": { + "commander": "~2.14.1", + "exit-on-epipe": "~1.0.1" + }, + "dependencies": { + "commander": { + "version": "2.14.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.14.1.tgz", + "integrity": "sha512-+YR16o3rK53SmWHU3rEM3tPAh2rwb1yPcQX5irVn7mb0gXbwuCCrnkbV5+PBfETdfg1vui07nM6PCG1zndcjQw==" + } + } + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true, + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/color/-/color-3.1.2.tgz", + "integrity": "sha512-vXTJhHebByxZn3lDvDJYw4lR5+uB3vuoHsuYA5AKuxRVn5wzzIfQKGLBmgdVRHKTJYeK5rvJcHnrd0Li49CFpg==", + "dev": true, + "requires": { + "color-convert": "^1.9.1", + "color-string": "^1.5.2" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "color-string": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.3.tgz", + "integrity": "sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw==", + "dev": true, + "requires": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "2.17.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", + "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==" + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, + "component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", + "dev": true + }, + "compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dev": true, + "requires": { + "mime-db": ">= 1.43.0 < 2" + } + }, + "compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dev": true, + "requires": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "dependencies": { + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "condense-newlines": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/condense-newlines/-/condense-newlines-0.2.1.tgz", + "integrity": "sha1-PemFVTE5R10yUCyDsC9gaE0kxV8=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-whitespace": "^0.3.0", + "kind-of": "^3.0.2" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "config-chain": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.12.tgz", + "integrity": "sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA==", + "dev": true, + "requires": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, + "connect": { + "version": "3.6.6", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.6.tgz", + "integrity": "sha1-Ce/2xVr3I24TcTWnJXSFi2eG9SQ=", + "dev": true, + "requires": { + "debug": "2.6.9", + "finalhandler": "1.1.0", + "parseurl": "~1.3.2", + "utils-merge": "1.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "finalhandler": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz", + "integrity": "sha1-zgtoVbRYU+eRsvzGgARtiCU91/U=", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.1", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.2", + "statuses": "~1.3.1", + "unpipe": "~1.0.0" + } + }, + "statuses": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", + "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=", + "dev": true + } + } + }, + "connect-history-api-fallback": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", + "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", + "dev": true + }, + "console-browserify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", + "dev": true + }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" + }, + "consolidate": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/consolidate/-/consolidate-0.15.1.tgz", + "integrity": "sha512-DW46nrsMJgy9kqAbPt5rKaCr7uFtpo4mSUvLHIUbJEjm0vo+aY5QLwBUq3FK4tRnJr/X0Psc0C4jf/h+HtXSMw==", + "dev": true, + "requires": { + "bluebird": "^3.1.1" + } + }, + "constant-case": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/constant-case/-/constant-case-2.0.0.tgz", + "integrity": "sha1-QXV2TTidP6nI7NKRhu1gBSQ7akY=", + "dev": true, + "requires": { + "snake-case": "^2.1.0", + "upper-case": "^1.1.1" + } + }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", + "dev": true + }, + "content-disposition": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "dev": true, + "requires": { + "safe-buffer": "5.1.2" + } + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "dev": true + }, + "convert-source-map": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", + "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "cookie": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==", + "dev": true + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", + "dev": true + }, + "copy-concurrently": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", + "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", + "dev": true, + "requires": { + "aproba": "^1.1.1", + "fs-write-stream-atomic": "^1.0.8", + "iferr": "^0.1.5", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.0" + } + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true + }, + "copy-webpack-plugin": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-4.6.0.tgz", + "integrity": "sha512-Y+SQCF+0NoWQryez2zXn5J5knmr9z/9qSQt7fbL78u83rxmigOy8X5+BFn8CFSuX+nKT8gpYwJX68ekqtQt6ZA==", + "dev": true, + "requires": { + "cacache": "^10.0.4", + "find-cache-dir": "^1.0.0", + "globby": "^7.1.1", + "is-glob": "^4.0.0", + "loader-utils": "^1.1.0", + "minimatch": "^3.0.4", + "p-limit": "^1.0.0", + "serialize-javascript": "^1.4.0" + }, + "dependencies": { + "cacache": { + "version": "10.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-10.0.4.tgz", + "integrity": "sha512-Dph0MzuH+rTQzGPNT9fAnrPmMmjKfST6trxJeK7NQuHRaVw24VzPRWTmg9MpcwOVQZO0E1FBICUlFeNaKPIfHA==", + "dev": true, + "requires": { + "bluebird": "^3.5.1", + "chownr": "^1.0.1", + "glob": "^7.1.2", + "graceful-fs": "^4.1.11", + "lru-cache": "^4.1.1", + "mississippi": "^2.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.2", + "ssri": "^5.2.4", + "unique-filename": "^1.1.0", + "y18n": "^4.0.0" + } + }, + "globby": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz", + "integrity": "sha1-+yzP+UAfhgCUXfral0QMypcrhoA=", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "dir-glob": "^2.0.0", + "glob": "^7.1.2", + "ignore": "^3.3.5", + "pify": "^3.0.0", + "slash": "^1.0.0" + } + }, + "mississippi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-2.0.0.tgz", + "integrity": "sha512-zHo8v+otD1J10j/tC+VNoGK9keCuByhKovAvdn74dmxJl9+mWHnx6EMsDN4lgRoMI/eYo2nchAxniIbUPb5onw==", + "dev": true, + "requires": { + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^2.0.1", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" + } + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + }, + "pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "serialize-javascript": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.9.1.tgz", + "integrity": "sha512-0Vb/54WJ6k5v8sSWN09S0ora+Hnr+cX40r9F170nT+mSkaxltoE/7R3OrIdBSUv1OoiobH1QoWQbCnAO+e8J1A==", + "dev": true + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "dev": true + }, + "ssri": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-5.3.0.tgz", + "integrity": "sha512-XRSIPqLij52MtgoQavH/x/dU1qVKtWUAAZeOHsR9c2Ddi4XerFy3mc1alf+dLJKl9EUIm/Ht+EowFkTUOA6GAQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.1" + } + } + } + }, + "core-js": { + "version": "2.6.11", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.11.tgz", + "integrity": "sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==" + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "cosmiconfig": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", + "dev": true, + "requires": { + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" + }, + "dependencies": { + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + } + } + }, + "crc-32": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.0.tgz", + "integrity": "sha512-1uBwHxF+Y/4yF5G48fwnKq6QsIXheor3ZLPT80yGBV1oEUwpPojlEhQbWKVw1VwcTQyMGHK1/XMmTjmlsmTTGA==", + "requires": { + "exit-on-epipe": "~1.0.1", + "printj": "~1.1.0" + } + }, + "create-ecdh": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", + "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "elliptic": "^6.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } + } + }, + "create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "cross-spawn": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz", + "integrity": "sha1-ElYDfsufDF9549bvE14wdwGEuYI=", + "requires": { + "lru-cache": "^4.0.1", + "which": "^1.2.9" + } + }, + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "dev": true, + "requires": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + } + }, + "css": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/css/-/css-2.2.4.tgz", + "integrity": "sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "source-map": "^0.6.1", + "source-map-resolve": "^0.5.2", + "urix": "^0.1.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "css-color-names": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", + "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=", + "dev": true + }, + "css-declaration-sorter": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz", + "integrity": "sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==", + "dev": true, + "requires": { + "postcss": "^7.0.1", + "timsort": "^0.3.0" + } + }, + "css-loader": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-1.0.1.tgz", + "integrity": "sha512-+ZHAZm/yqvJ2kDtPne3uX0C+Vr3Zn5jFn2N4HywtS5ujwvsVkyg0VArEXpl3BgczDA8anieki1FIzhchX4yrDw==", + "dev": true, + "requires": { + "babel-code-frame": "^6.26.0", + "css-selector-tokenizer": "^0.7.0", + "icss-utils": "^2.1.0", + "loader-utils": "^1.0.2", + "lodash": "^4.17.11", + "postcss": "^6.0.23", + "postcss-modules-extract-imports": "^1.2.0", + "postcss-modules-local-by-default": "^1.2.0", + "postcss-modules-scope": "^1.1.0", + "postcss-modules-values": "^1.3.0", + "postcss-value-parser": "^3.3.0", + "source-list-map": "^2.0.0" + }, + "dependencies": { + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + } + }, + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "css-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", + "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", + "dev": true, + "requires": { + "boolbase": "^1.0.0", + "css-what": "^3.2.1", + "domutils": "^1.7.0", + "nth-check": "^1.0.2" + } + }, + "css-select-base-adapter": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", + "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==", + "dev": true + }, + "css-selector-tokenizer": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.2.tgz", + "integrity": "sha512-yj856NGuAymN6r8bn8/Jl46pR+OC3eEvAhfGYDUe7YPtTPAYrSSw4oAniZ9Y8T5B92hjhwTBLUen0/vKPxf6pw==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "fastparse": "^1.1.2", + "regexpu-core": "^4.6.0" + } + }, + "css-tree": { + "version": "1.0.0-alpha.28", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.28.tgz", + "integrity": "sha512-joNNW1gCp3qFFzj4St6zk+Wh/NBv0vM5YbEreZk0SD4S23S+1xBKb6cLDg2uj4P4k/GUMlIm6cKIDqIG+vdt0w==", + "dev": true, + "requires": { + "mdn-data": "~1.1.0", + "source-map": "^0.5.3" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "css-url-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/css-url-regex/-/css-url-regex-1.1.0.tgz", + "integrity": "sha1-g4NCMMyfdMRX3lnuvRVD/uuDt+w=", + "dev": true + }, + "css-what": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.3.0.tgz", + "integrity": "sha512-pv9JPyatiPaQ6pf4OvD/dbfm0o5LviWmwxNWzblYf/1u9QZd0ihV+PMwy5jdQWQ3349kZmKEx9WXuSka2dM4cg==", + "dev": true + }, + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true + }, + "cssnano": { + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.10.tgz", + "integrity": "sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ==", + "dev": true, + "requires": { + "cosmiconfig": "^5.0.0", + "cssnano-preset-default": "^4.0.7", + "is-resolvable": "^1.0.0", + "postcss": "^7.0.0" + } + }, + "cssnano-preset-default": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz", + "integrity": "sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA==", + "dev": true, + "requires": { + "css-declaration-sorter": "^4.0.1", + "cssnano-util-raw-cache": "^4.0.1", + "postcss": "^7.0.0", + "postcss-calc": "^7.0.1", + "postcss-colormin": "^4.0.3", + "postcss-convert-values": "^4.0.1", + "postcss-discard-comments": "^4.0.2", + "postcss-discard-duplicates": "^4.0.2", + "postcss-discard-empty": "^4.0.1", + "postcss-discard-overridden": "^4.0.1", + "postcss-merge-longhand": "^4.0.11", + "postcss-merge-rules": "^4.0.3", + "postcss-minify-font-values": "^4.0.2", + "postcss-minify-gradients": "^4.0.2", + "postcss-minify-params": "^4.0.2", + "postcss-minify-selectors": "^4.0.2", + "postcss-normalize-charset": "^4.0.1", + "postcss-normalize-display-values": "^4.0.2", + "postcss-normalize-positions": "^4.0.2", + "postcss-normalize-repeat-style": "^4.0.2", + "postcss-normalize-string": "^4.0.2", + "postcss-normalize-timing-functions": "^4.0.2", + "postcss-normalize-unicode": "^4.0.1", + "postcss-normalize-url": "^4.0.1", + "postcss-normalize-whitespace": "^4.0.2", + "postcss-ordered-values": "^4.1.2", + "postcss-reduce-initial": "^4.0.3", + "postcss-reduce-transforms": "^4.0.2", + "postcss-svgo": "^4.0.2", + "postcss-unique-selectors": "^4.0.1" + } + }, + "cssnano-util-get-arguments": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz", + "integrity": "sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8=", + "dev": true + }, + "cssnano-util-get-match": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz", + "integrity": "sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0=", + "dev": true + }, + "cssnano-util-raw-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz", + "integrity": "sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "cssnano-util-same-parent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz", + "integrity": "sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==", + "dev": true + }, + "csso": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/csso/-/csso-3.5.1.tgz", + "integrity": "sha512-vrqULLffYU1Q2tLdJvaCYbONStnfkfimRxXNaGjxMldI0C7JPBC4rB1RyjhfdZ4m1frm8pM9uRPKH3d2knZ8gg==", + "dev": true, + "requires": { + "css-tree": "1.0.0-alpha.29" + }, + "dependencies": { + "css-tree": { + "version": "1.0.0-alpha.29", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.29.tgz", + "integrity": "sha512-sRNb1XydwkW9IOci6iB2xmy8IGCj6r/fr+JWitvJ2JxQRPzN3T4AGGVWCMlVmVwM1gtgALJRmGIlWv5ppnGGkg==", + "dev": true, + "requires": { + "mdn-data": "~1.1.0", + "source-map": "^0.5.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true + }, + "cssstyle": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.4.0.tgz", + "integrity": "sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA==", + "dev": true, + "requires": { + "cssom": "0.3.x" + } + }, + "currently-unhandled": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "requires": { + "array-find-index": "^1.0.1" + } + }, + "cyclist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", + "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=", + "dev": true + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "requires": { + "assert-plus": "^1.0.0" + } + }, + "data-urls": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", + "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", + "dev": true, + "requires": { + "abab": "^2.0.0", + "whatwg-mimetype": "^2.2.0", + "whatwg-url": "^7.0.0" + }, + "dependencies": { + "whatwg-url": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "dev": true, + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + } + } + }, + "date-fns": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.30.1.tgz", + "integrity": "sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw==", + "dev": true + }, + "de-indent": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", + "integrity": "sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0=", + "dev": true + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "requires": { + "ms": "2.0.0" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true + }, + "dedent": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=", + "dev": true + }, + "deep-equal": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", + "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", + "dev": true, + "requires": { + "is-arguments": "^1.0.4", + "is-date-object": "^1.0.1", + "is-regex": "^1.0.4", + "object-is": "^1.0.1", + "object-keys": "^1.1.1", + "regexp.prototype.flags": "^1.2.0" + } + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, + "deepmerge": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-1.5.2.tgz", + "integrity": "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==" + }, + "default-gateway": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz", + "integrity": "sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==", + "dev": true, + "requires": { + "execa": "^1.0.0", + "ip-regex": "^2.1.0" + }, + "dependencies": { + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + } + } + }, + "default-require-extensions": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-1.0.0.tgz", + "integrity": "sha1-836hXT4T/9m0N9M+GnW1+5eHTLg=", + "dev": true, + "requires": { + "strip-bom": "^2.0.0" + } + }, + "defaults": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", + "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", + "dev": true, + "requires": { + "clone": "^1.0.2" + } + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "requires": { + "object-keys": "^1.0.12" + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "del": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz", + "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==", + "dev": true, + "requires": { + "@types/glob": "^7.1.1", + "globby": "^6.1.0", + "is-path-cwd": "^2.0.0", + "is-path-in-cwd": "^2.0.0", + "p-map": "^2.0.0", + "pify": "^4.0.1", + "rimraf": "^2.6.3" + }, + "dependencies": { + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + } + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + }, + "delegate": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz", + "integrity": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==" + }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true + }, + "des.js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", + "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "dev": true + }, + "detect-file": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", + "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", + "dev": true + }, + "detect-indent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", + "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", + "dev": true, + "requires": { + "repeating": "^2.0.0" + } + }, + "detect-newline": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz", + "integrity": "sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I=", + "dev": true + }, + "detect-node": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.4.tgz", + "integrity": "sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==", + "dev": true + }, + "diff": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "dev": true + }, + "diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } + } + }, + "dir-glob": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz", + "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==", + "dev": true, + "requires": { + "path-type": "^3.0.0" + }, + "dependencies": { + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "requires": { + "pify": "^3.0.0" + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, + "dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=", + "dev": true + }, + "dns-packet": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.1.tgz", + "integrity": "sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg==", + "dev": true, + "requires": { + "ip": "^1.1.0", + "safe-buffer": "^5.0.1" + } + }, + "dns-txt": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", + "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", + "dev": true, + "requires": { + "buffer-indexof": "^1.0.0" + } + }, + "doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "optional": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "dom-converter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", + "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", + "dev": true, + "requires": { + "utila": "~0.4" + } + }, + "dom-event-types": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dom-event-types/-/dom-event-types-1.0.0.tgz", + "integrity": "sha512-2G2Vwi2zXTHBGqXHsJ4+ak/iP0N8Ar+G8a7LiD2oup5o4sQWytwqqrZu/O6hIMV0KMID2PL69OhpshLO0n7UJQ==", + "dev": true + }, + "dom-serializer": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", + "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "entities": "^2.0.0" + }, + "dependencies": { + "domelementtype": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.0.1.tgz", + "integrity": "sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ==", + "dev": true + }, + "entities": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.3.tgz", + "integrity": "sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ==", + "dev": true + } + } + }, + "domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", + "dev": true + }, + "domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", + "dev": true + }, + "domexception": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", + "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", + "dev": true, + "requires": { + "webidl-conversions": "^4.0.2" + } + }, + "domhandler": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", + "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", + "dev": true, + "requires": { + "domelementtype": "1" + } + }, + "domready": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/domready/-/domready-1.0.8.tgz", + "integrity": "sha1-kfJS5Ze2Wvd+dFriTdAYXV4m1Yw=", + "dev": true + }, + "domutils": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", + "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "dev": true, + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "dot-case": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-2.1.1.tgz", + "integrity": "sha1-NNzzf1Co6TwrO8qLt/uRVcfaO+4=", + "dev": true, + "requires": { + "no-case": "^2.2.0" + } + }, + "dot-prop": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.2.0.tgz", + "integrity": "sha512-uEUyaDKoSQ1M4Oq8l45hSE26SnTxL6snNnqvK/VWx5wJhmff5z0FUVJDKDanor/6w3kzE3i7XZOk+7wC0EXr1A==", + "dev": true, + "requires": { + "is-obj": "^2.0.0" + } + }, + "dotenv": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-6.2.0.tgz", + "integrity": "sha512-HygQCKUBSFl8wKQZBSemMywRWcEDNidvNbjGVyZu3nbZ8qq9ubiPoGLMdRDpfSrpkkm9BXYFkpKxxFX38o/76w==", + "dev": true + }, + "dotenv-expand": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-4.2.0.tgz", + "integrity": "sha1-3vHxyl1gWdJKdm5YeULCEQbOEnU=", + "dev": true + }, + "driver.js": { + "version": "0.9.5", + "resolved": "https://registry.npmjs.org/driver.js/-/driver.js-0.9.5.tgz", + "integrity": "sha512-QIMRsXR+/HdN792vYdZziC2shtHuLMV/oVTsqExOP4YmKjR7wwY4l3n80SebhUcn7z8dG4aTXIhDUGQCOczPyw==" + }, + "dropzone": { + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/dropzone/-/dropzone-5.5.1.tgz", + "integrity": "sha512-3VduRWLxx9hbVr42QieQN25mx/I61/mRdUSuxAmDGdDqZIN8qtP7tcKMa3KfpJjuGjOJGYYUzzeq6eGDnkzesA==" + }, + "duplexer": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", + "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=", + "dev": true + }, + "duplexify": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "dev": true, + "requires": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, + "easy-stack": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/easy-stack/-/easy-stack-1.0.0.tgz", + "integrity": "sha1-EskbMIWjfwuqM26UhurEv5Tj54g=", + "dev": true + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "echarts": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/echarts/-/echarts-4.2.1.tgz", + "integrity": "sha512-pw4xScRPsLegD/cqEcoXRKeA2SD4+s+Kyo0Na166NamOWhzNl2yI5RZ2rE97tBlAopNmhyMeBVpAeD5qb+ee1A==", + "requires": { + "zrender": "4.0.7" + } + }, + "editorconfig": { + "version": "0.15.3", + "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-0.15.3.tgz", + "integrity": "sha512-M9wIMFx96vq0R4F+gRpY3o2exzb8hEj/n9S8unZtHSvYjibBp/iMufSzvmOcV/laG0ZtuTVGtiJggPOSW2r93g==", + "dev": true, + "requires": { + "commander": "^2.19.0", + "lru-cache": "^4.1.5", + "semver": "^5.6.0", + "sigmund": "^1.0.1" + }, + "dependencies": { + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + } + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "dev": true + }, + "ejs": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.7.4.tgz", + "integrity": "sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==", + "dev": true + }, + "electron-to-chromium": { + "version": "1.3.473", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.473.tgz", + "integrity": "sha512-smevlzzMNz3vMz6OLeeCq5HRWEj2AcgccNPYnAx4Usx0IOciq9DU36RJcICcS09hXoY7t7deRfVYKD14IrGb9A==", + "dev": true + }, + "elegant-spinner": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/elegant-spinner/-/elegant-spinner-1.0.1.tgz", + "integrity": "sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4=", + "dev": true + }, + "element-ui": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/element-ui/-/element-ui-2.13.0.tgz", + "integrity": "sha512-KYsHWsBXYbLELS8cdfvgJTOMSUby3UEjvsPV1V1VmgJ/DdkOAS4z3MiOrPxrT9w2Cc5lZ4eVSQiGhYFR5NVChw==", + "requires": { + "async-validator": "~1.8.1", + "babel-helper-vue-jsx-merge-props": "^2.0.0", + "deepmerge": "^1.2.0", + "normalize-wheel": "^1.0.1", + "resize-observer-polyfill": "^1.5.0", + "throttle-debounce": "^1.0.1" + }, + "dependencies": { + "throttle-debounce": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/throttle-debounce/-/throttle-debounce-1.1.0.tgz", + "integrity": "sha512-XH8UiPCQcWNuk2LYePibW/4qL97+ZQ1AN3FNXwZRBNPPowo/NRU5fAlDCSNBJIYCKbioZfuYtMhG4quqoJhVzg==" + } + } + }, + "elliptic": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.2.tgz", + "integrity": "sha512-f4x70okzZbIQl/NSRLkI/+tteV/9WqL98zx+SQ69KbXxmVrmjwsNUPn/gYJJ0sHvEak24cZgHIPegRePAtA/xw==", + "dev": true, + "requires": { + "bn.js": "^4.4.0", + "brorand": "^1.0.1", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } + } + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" + }, + "emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "dev": true + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "enhanced-resolve": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.1.tgz", + "integrity": "sha512-98p2zE+rL7/g/DzMHMTF4zZlCgeVdJ7yr6xzEpJRYwFYrGi9ANdn5DnJURg6RpBkyk60XYDnWIv51VfIhfNGuA==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.5.0", + "tapable": "^1.0.0" + }, + "dependencies": { + "memory-fs": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", + "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + } + } + }, + "entities": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==" + }, + "errno": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", + "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", + "dev": true, + "requires": { + "prr": "~1.0.1" + } + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "error-stack-parser": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.0.6.tgz", + "integrity": "sha512-d51brTeqC+BHlwF0BhPtcYgF5nlzf9ZZ0ZIUQNZpc9ZB9qw5IJ2diTrBY9jlCJkTLITYPjmiX6OWCwH+fuyNgQ==", + "dev": true, + "requires": { + "stackframe": "^1.1.1" + } + }, + "es-abstract": { + "version": "1.17.6", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz", + "integrity": "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.0", + "is-regex": "^1.1.0", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + }, + "escodegen": { + "version": "1.14.2", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.2.tgz", + "integrity": "sha512-InuOIiKk8wwuOFg6x9BQXbzjrQhtyXh46K9bqVTPzSo2FnyMBaYGBMC6PhQy7yxxil9vIedFBweQBMK74/7o8A==", + "dev": true, + "requires": { + "esprima": "^4.0.1", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true + } + } + }, + "eslint": { + "version": "5.15.3", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.15.3.tgz", + "integrity": "sha512-vMGi0PjCHSokZxE0NLp2VneGw5sio7SSiDNgIUn2tC0XkWJRNOIoHIg3CliLVfXnJsiHxGAYrkw0PieAu8+KYQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "ajv": "^6.9.1", + "chalk": "^2.1.0", + "cross-spawn": "^6.0.5", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "eslint-scope": "^4.0.3", + "eslint-utils": "^1.3.1", + "eslint-visitor-keys": "^1.0.0", + "espree": "^5.0.1", + "esquery": "^1.0.1", + "esutils": "^2.0.2", + "file-entry-cache": "^5.0.1", + "functional-red-black-tree": "^1.0.1", + "glob": "^7.1.2", + "globals": "^11.7.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "inquirer": "^6.2.2", + "js-yaml": "^3.12.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.3.0", + "lodash": "^4.17.11", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "optionator": "^0.8.2", + "path-is-inside": "^1.0.2", + "progress": "^2.0.0", + "regexpp": "^2.0.1", + "semver": "^5.5.1", + "strip-ansi": "^4.0.0", + "strip-json-comments": "^2.0.1", + "table": "^5.2.3", + "text-table": "^0.2.0" + }, + "dependencies": { + "acorn": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", + "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==", + "dev": true + }, + "acorn-jsx": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.2.0.tgz", + "integrity": "sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ==", + "dev": true + }, + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "espree": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-5.0.1.tgz", + "integrity": "sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A==", + "dev": true, + "requires": { + "acorn": "^6.0.7", + "acorn-jsx": "^5.0.0", + "eslint-visitor-keys": "^1.0.0" + } + }, + "external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, + "requires": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + } + }, + "file-entry-cache": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", + "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", + "dev": true, + "requires": { + "flat-cache": "^2.0.1" + } + }, + "flat-cache": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", + "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", + "dev": true, + "requires": { + "flatted": "^2.0.0", + "rimraf": "2.6.3", + "write": "1.0.3" + } + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + }, + "import-fresh": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", + "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "inquirer": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz", + "integrity": "sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==", + "dev": true, + "requires": { + "ansi-escapes": "^3.2.0", + "chalk": "^2.4.2", + "cli-cursor": "^2.1.0", + "cli-width": "^2.0.0", + "external-editor": "^3.0.3", + "figures": "^2.0.0", + "lodash": "^4.17.12", + "mute-stream": "0.0.7", + "run-async": "^2.2.0", + "rxjs": "^6.4.0", + "string-width": "^2.1.0", + "strip-ansi": "^5.1.0", + "through": "^2.3.6" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "regexpp": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", + "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", + "dev": true + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + }, + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "slice-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", + "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "astral-regex": "^1.0.0", + "is-fullwidth-code-point": "^2.0.0" + } + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "table": { + "version": "5.4.6", + "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", + "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", + "dev": true, + "requires": { + "ajv": "^6.10.2", + "lodash": "^4.17.14", + "slice-ansi": "^2.1.0", + "string-width": "^3.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "write": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", + "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", + "dev": true, + "requires": { + "mkdirp": "^0.5.1" + } + } + } + }, + "eslint-loader": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/eslint-loader/-/eslint-loader-2.2.1.tgz", + "integrity": "sha512-RLgV9hoCVsMLvOxCuNjdqOrUqIj9oJg8hF44vzJaYqsAHuY9G2YAeN3joQ9nxP0p5Th9iFSIpKo+SD8KISxXRg==", + "dev": true, + "requires": { + "loader-fs-cache": "^1.0.0", + "loader-utils": "^1.0.2", + "object-assign": "^4.0.1", + "object-hash": "^1.1.4", + "rimraf": "^2.6.1" + } + }, + "eslint-plugin-vue": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-5.2.2.tgz", + "integrity": "sha512-CtGWH7IB0DA6BZOwcV9w9q3Ri6Yuo8qMjx05SmOGJ6X6E0Yo3y9E/gQ5tuNxg2dEt30tRnBoFTbvtmW9iEoyHA==", + "dev": true, + "requires": { + "vue-eslint-parser": "^5.0.0" + }, + "dependencies": { + "acorn": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", + "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==", + "dev": true + }, + "acorn-jsx": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.2.0.tgz", + "integrity": "sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ==", + "dev": true + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "espree": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-4.1.0.tgz", + "integrity": "sha512-I5BycZW6FCVIub93TeVY1s7vjhP9CY6cXCznIRfiig7nRviKZYdRnj/sHEWC6A7WE9RDWOFq9+7OsWSYz8qv2w==", + "dev": true, + "requires": { + "acorn": "^6.0.2", + "acorn-jsx": "^5.0.0", + "eslint-visitor-keys": "^1.0.0" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "vue-eslint-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-5.0.0.tgz", + "integrity": "sha512-JlHVZwBBTNVvzmifwjpZYn0oPWH2SgWv5dojlZBsrhablDu95VFD+hriB1rQGwbD+bms6g+rAFhQHk6+NyiS6g==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "eslint-scope": "^4.0.0", + "eslint-visitor-keys": "^1.0.0", + "espree": "^4.1.0", + "esquery": "^1.0.1", + "lodash": "^4.17.11" + } + } + } + }, + "eslint-plugin-vuefix": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-vuefix/-/eslint-plugin-vuefix-0.2.1.tgz", + "integrity": "sha512-Vokt8sJ+Tg6fjDb77jiRy/HTTLfRqErkDW7d3HD75NQo2OevpuuDFwd+4ZBX6ntKMFTTSaFKEi/KA0xMSrrF7g==", + "dev": true, + "requires": { + "parse5": "^2.1.5" + }, + "dependencies": { + "parse5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-2.2.3.tgz", + "integrity": "sha1-DE/EHBAAxea5PUiwP4CDg3g06fY=", + "dev": true + } + } + }, + "eslint-scope": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", + "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "eslint-utils": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", + "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + } + }, + "eslint-visitor-keys": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.2.0.tgz", + "integrity": "sha512-WFb4ihckKil6hu3Dp798xdzSfddwKKU3+nGniKF6HfeW6OLd2OUDEPP7TcHtB5+QXOKg2s6B2DaMPE1Nn/kxKQ==", + "dev": true + }, + "espree": { + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.4.tgz", + "integrity": "sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A==", + "dev": true, + "optional": true, + "requires": { + "acorn": "^5.5.0", + "acorn-jsx": "^3.0.0" + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "esquery": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.3.1.tgz", + "integrity": "sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==", + "dev": true, + "requires": { + "estraverse": "^5.1.0" + }, + "dependencies": { + "estraverse": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.1.0.tgz", + "integrity": "sha512-FyohXK+R0vE+y1nHLoBM7ZTyqRpqAlhdZHCWIWEviFLiGB8b04H6bQs8G+XTthacvT8VuwvteiP7RJSxMs8UEw==", + "dev": true + } + } + }, + "esrecurse": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", + "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "dev": true, + "requires": { + "estraverse": "^4.1.0" + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "dev": true + }, + "eve": { + "version": "git://github.com/adobe-webplatform/eve.git#eef80ed8d188423c2272746fb8ae5cc8dad84cb1", + "from": "git://github.com/adobe-webplatform/eve.git#eef80ed" + }, + "event-pubsub": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/event-pubsub/-/event-pubsub-4.3.0.tgz", + "integrity": "sha512-z7IyloorXvKbFx9Bpie2+vMJKKx1fH1EN5yiTfp8CiLOTptSYy1g8H4yDpGlEdshL1PBiFtBHepF2cNsqeEeFQ==", + "dev": true + }, + "eventemitter3": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.4.tgz", + "integrity": "sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ==", + "dev": true + }, + "events": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.1.0.tgz", + "integrity": "sha512-Rv+u8MLHNOdMjTAFeT3nCjHn2aGlx435FP/sDHNaRhDEMwyI/aB22Kj2qIN8R0cw3z28psEQLYwxVKLsKrMgWg==", + "dev": true + }, + "eventsource": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.0.7.tgz", + "integrity": "sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ==", + "dev": true, + "requires": { + "original": "^1.0.0" + } + }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, + "requires": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "exec-sh": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.2.2.tgz", + "integrity": "sha512-FIUCJz1RbuS0FKTdaAafAByGS0CPvU3R0MeHxgtl+djzCc//F8HakL8GzmVNZanasTbTAY/3DRFA0KpVqj/eAw==", + "dev": true, + "requires": { + "merge": "^1.2.0" + } + }, + "execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "requires": { + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "requires": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + } + } + }, + "exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "dev": true + }, + "exit-on-epipe": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/exit-on-epipe/-/exit-on-epipe-1.0.1.tgz", + "integrity": "sha512-h2z5mrROTxce56S+pnvAV890uu7ls7f1kEvVGJbw1OlFH3/mlJ5bkXu0KRyW94v37zzHPiUd55iLn3DA7TjWpw==" + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "expand-range": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "dev": true, + "requires": { + "fill-range": "^2.1.0" + }, + "dependencies": { + "fill-range": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz", + "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==", + "dev": true, + "requires": { + "is-number": "^2.1.0", + "isobject": "^2.0.0", + "randomatic": "^3.0.0", + "repeat-element": "^1.1.2", + "repeat-string": "^1.5.2" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-number": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", + "dev": true, + "requires": { + "homedir-polyfill": "^1.0.1" + } + }, + "expect": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-23.6.0.tgz", + "integrity": "sha512-dgSoOHgmtn/aDGRVFWclQyPDKl2CQRq0hmIEoUAuQs/2rn2NcvCWcSCovm6BLeuB/7EZuLGu2QfnR+qRt5OM4w==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "jest-diff": "^23.6.0", + "jest-get-type": "^22.1.0", + "jest-matcher-utils": "^23.6.0", + "jest-message-util": "^23.4.0", + "jest-regex-util": "^23.3.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + } + } + }, + "express": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", + "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", + "dev": true, + "requires": { + "accepts": "~1.3.7", + "array-flatten": "1.1.1", + "body-parser": "1.19.0", + "content-disposition": "0.5.3", + "content-type": "~1.0.4", + "cookie": "0.4.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.1.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.5", + "qs": "6.7.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.1.2", + "send": "0.17.1", + "serve-static": "1.14.1", + "setprototypeof": "1.1.1", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", + "dev": true + }, + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", + "dev": true + } + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "external-editor": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz", + "integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==", + "dev": true, + "optional": true, + "requires": { + "chardet": "^0.4.0", + "iconv-lite": "^0.4.17", + "tmp": "^0.0.33" + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "extract-from-css": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/extract-from-css/-/extract-from-css-0.4.4.tgz", + "integrity": "sha1-HqffLnx8brmSL6COitrqSG9vj5I=", + "dev": true, + "requires": { + "css": "^2.1.0" + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "fast-glob": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz", + "integrity": "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==", + "dev": true, + "requires": { + "@mrmlnc/readdir-enhanced": "^2.2.1", + "@nodelib/fs.stat": "^1.1.2", + "glob-parent": "^3.1.0", + "is-glob": "^4.0.0", + "merge2": "^1.2.3", + "micromatch": "^3.1.10" + }, + "dependencies": { + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + } + } + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "fastparse": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz", + "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==", + "dev": true + }, + "faye-websocket": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", + "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", + "dev": true, + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "fb-watchman": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz", + "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==", + "dev": true, + "requires": { + "bser": "2.1.1" + } + }, + "figgy-pudding": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", + "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==", + "dev": true + }, + "figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "file-entry-cache": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", + "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", + "dev": true, + "optional": true, + "requires": { + "flat-cache": "^1.2.1", + "object-assign": "^4.0.1" + } + }, + "file-loader": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-3.0.1.tgz", + "integrity": "sha512-4sNIOXgtH/9WZq4NvlfU3Opn5ynUsqBwSLyM+I7UOwdGigTBYfVVQEwe/msZNX/j4pCJTIM14Fsw66Svo1oVrw==", + "dev": true, + "requires": { + "loader-utils": "^1.0.2", + "schema-utils": "^1.0.0" + }, + "dependencies": { + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + } + } + }, + "file-saver": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/file-saver/-/file-saver-2.0.1.tgz", + "integrity": "sha512-dCB3K7/BvAcUmtmh1DzFdv0eXSVJ9IAFt1mw3XZfAexodNRoE29l3xB2EX4wH2q8m/UTzwzEPq/ArYk98kUkBQ==" + }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true, + "optional": true + }, + "filename-regex": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", + "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", + "dev": true + }, + "fileset": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/fileset/-/fileset-2.0.3.tgz", + "integrity": "sha1-jnVIqW08wjJ+5eZ0FocjozO7oqA=", + "dev": true, + "requires": { + "glob": "^7.0.3", + "minimatch": "^3.0.3" + } + }, + "filesize": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.6.1.tgz", + "integrity": "sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg==", + "dev": true + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "find-babel-config": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/find-babel-config/-/find-babel-config-1.2.0.tgz", + "integrity": "sha512-jB2CHJeqy6a820ssiqwrKMeyC6nNdmrcgkKWJWmpoxpE8RKciYJXCcXRq1h2AzCo5I5BJeN2tkGEO3hLTuePRA==", + "dev": true, + "requires": { + "json5": "^0.5.1", + "path-exists": "^3.0.0" + }, + "dependencies": { + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + } + } + }, + "find-cache-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz", + "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^1.0.0", + "pkg-dir": "^2.0.0" + } + }, + "find-parent-dir": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/find-parent-dir/-/find-parent-dir-0.3.0.tgz", + "integrity": "sha1-M8RLQpqysvBkYpnF+fcY83b/jVQ=", + "dev": true + }, + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "findup-sync": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz", + "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=", + "dev": true, + "requires": { + "detect-file": "^1.0.0", + "is-glob": "^3.1.0", + "micromatch": "^3.0.4", + "resolve-dir": "^1.0.1" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "fined": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fined/-/fined-1.2.0.tgz", + "integrity": "sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==", + "dev": true, + "requires": { + "expand-tilde": "^2.0.2", + "is-plain-object": "^2.0.3", + "object.defaults": "^1.1.0", + "object.pick": "^1.2.0", + "parse-filepath": "^1.0.1" + } + }, + "flagged-respawn": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz", + "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==", + "dev": true + }, + "flat-cache": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.4.tgz", + "integrity": "sha512-VwyB3Lkgacfik2vhqR4uv2rvebqmDvFu4jlN/C1RzWoJEo8I7z4Q404oiqYCkq41mni8EzQnm95emU9seckwtg==", + "dev": true, + "optional": true, + "requires": { + "circular-json": "^0.3.1", + "graceful-fs": "^4.1.2", + "rimraf": "~2.6.2", + "write": "^0.2.1" + }, + "dependencies": { + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "optional": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "flatted": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", + "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", + "dev": true + }, + "flush-write-stream": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", + "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" + } + }, + "fn-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fn-name/-/fn-name-2.0.1.tgz", + "integrity": "sha1-UhTXU3pNBqSjAcDMJi/rhBiAAuc=", + "dev": true + }, + "follow-redirects": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz", + "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==", + "requires": { + "debug": "=3.1.0" + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "for-own": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "dev": true, + "requires": { + "for-in": "^1.0.1" + } + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" + }, + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", + "dev": true + }, + "frac": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/frac/-/frac-1.1.2.tgz", + "integrity": "sha512-w/XBfkibaTl3YDqASwfDUqkna4Z2p9cFSr1aHDt0WoMTECnRfBOv2WArlZILlqgWlmdIlALXGpM2AOhEk5W3IA==" + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "requires": { + "map-cache": "^0.2.2" + } + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "dev": true + }, + "from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + } + }, + "fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "fs-write-stream-atomic": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", + "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "iferr": "^0.1.5", + "imurmurhash": "^0.1.4", + "readable-stream": "1 || 2" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "fsevents": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", + "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", + "dev": true, + "optional": true + }, + "fstream": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", + "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", + "requires": { + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" + } + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, + "fuse.js": { + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/fuse.js/-/fuse.js-3.4.4.tgz", + "integrity": "sha512-pyLQo/1oR5Ywf+a/tY8z4JygnIglmRxVUOiyFAbd11o9keUDpUJSMGRWJngcnkURj30kDHPmhoKY8ChJiz3EpQ==" + }, + "g-status": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/g-status/-/g-status-2.0.2.tgz", + "integrity": "sha512-kQoE9qH+T1AHKgSSD0Hkv98bobE90ILQcXAF4wvGgsr7uFqNvwmh8j+Lq3l0RVt3E3HjSbv2B9biEGcEtpHLCA==", + "dev": true, + "requires": { + "arrify": "^1.0.1", + "matcher": "^1.0.0", + "simple-git": "^1.85.0" + } + }, + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + }, + "dependencies": { + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "gaze": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz", + "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==", + "requires": { + "globule": "^1.0.0" + } + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" + }, + "get-own-enumerable-property-symbols": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", + "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==", + "dev": true + }, + "get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=" + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "requires": { + "assert-plus": "^1.0.0" + } + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-base": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "dev": true, + "requires": { + "glob-parent": "^2.0.0", + "is-glob": "^2.0.0" + }, + "dependencies": { + "glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "dev": true, + "requires": { + "is-glob": "^2.0.0" + } + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + } + } + }, + "glob-parent": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "dev": true, + "optional": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "glob-to-regexp": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", + "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=", + "dev": true + }, + "global-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "dev": true, + "requires": { + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" + } + }, + "global-prefix": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", + "dev": true, + "requires": { + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" + } + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + }, + "globby": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-9.2.0.tgz", + "integrity": "sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg==", + "dev": true, + "requires": { + "@types/glob": "^7.1.1", + "array-union": "^1.0.2", + "dir-glob": "^2.2.2", + "fast-glob": "^2.2.6", + "glob": "^7.1.3", + "ignore": "^4.0.3", + "pify": "^4.0.1", + "slash": "^2.0.0" + }, + "dependencies": { + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + } + } + }, + "globule": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/globule/-/globule-1.3.2.tgz", + "integrity": "sha512-7IDTQTIu2xzXkT+6mlluidnWo+BypnbSoEVVQCGfzqnl5Ik8d3e1d4wycb8Rj9tWW+Z39uPWsdlquqiqPCd/pA==", + "requires": { + "glob": "~7.1.1", + "lodash": "~4.17.10", + "minimatch": "~3.0.2" + } + }, + "good-listener": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz", + "integrity": "sha1-1TswzfkxPf+33JoNR3CWqm0UXFA=", + "requires": { + "delegate": "^3.1.2" + } + }, + "graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==" + }, + "growly": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", + "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=", + "dev": true + }, + "gzip-size": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-5.1.1.tgz", + "integrity": "sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA==", + "dev": true, + "requires": { + "duplexer": "^0.1.1", + "pify": "^4.0.1" + }, + "dependencies": { + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + } + } + }, + "handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", + "dev": true + }, + "handlebars": { + "version": "4.7.6", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.6.tgz", + "integrity": "sha512-1f2BACcBfiwAfStCKZNrUCgqNZkGsAT7UM3kkYtXuLo0KnaVfjKOyf7PRzB6++aK9STyT1Pd2ZCPe3EGOXleXA==", + "dev": true, + "requires": { + "minimist": "^1.2.5", + "neo-async": "^2.6.0", + "source-map": "^0.6.1", + "uglify-js": "^3.1.4", + "wordwrap": "^1.0.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" + }, + "har-validator": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", + "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "requires": { + "ajv": "^6.5.5", + "har-schema": "^2.0.0" + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "has-color": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/has-color/-/has-color-0.1.7.tgz", + "integrity": "sha1-ZxRKUmDDT8PMpnfQQdr1L+e3iy8=" + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true + }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dev": true, + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "dev": true, + "requires": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } + } + }, + "hash-sum": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz", + "integrity": "sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=", + "dev": true + }, + "hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true + }, + "header-case": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/header-case/-/header-case-1.0.1.tgz", + "integrity": "sha1-lTWXMZfBRLCWE81l0xfvGZY70C0=", + "dev": true, + "requires": { + "no-case": "^2.2.0", + "upper-case": "^1.1.3" + } + }, + "hex-color-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz", + "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==", + "dev": true + }, + "highlight.js": { + "version": "9.18.1", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.18.1.tgz", + "integrity": "sha512-OrVKYz70LHsnCgmbXctv/bfuvntIKDz177h0Co37DQ5jamGZLVmoCVMtjMtNZY3X9DrCcKfklHPNeA0uPZhSJg==" + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "dev": true, + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "home-or-tmp": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-3.0.0.tgz", + "integrity": "sha1-V6j+JM8zzdUkhgoVgh3cJchmcfs=", + "dev": true + }, + "homedir-polyfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", + "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", + "dev": true, + "requires": { + "parse-passwd": "^1.0.0" + } + }, + "hoopy": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/hoopy/-/hoopy-0.1.4.tgz", + "integrity": "sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ==", + "dev": true + }, + "hosted-git-info": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", + "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==" + }, + "hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "hsl-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz", + "integrity": "sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4=", + "dev": true + }, + "hsla-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz", + "integrity": "sha1-wc56MWjIxmFAM6S194d/OyJfnDg=", + "dev": true + }, + "html-comment-regex": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.2.tgz", + "integrity": "sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==", + "dev": true + }, + "html-encoding-sniffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", + "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", + "dev": true, + "requires": { + "whatwg-encoding": "^1.0.1" + } + }, + "html-entities": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.3.1.tgz", + "integrity": "sha512-rhE/4Z3hIhzHAUKbW8jVcCyuT5oJCXXqhN/6mXXVCpzTmvJnoH2HL/bt3EZ6p55jbFJBeAe1ZNpL5BugLujxNA==", + "dev": true + }, + "html-minifier": { + "version": "3.5.21", + "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.21.tgz", + "integrity": "sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA==", + "dev": true, + "requires": { + "camel-case": "3.0.x", + "clean-css": "4.2.x", + "commander": "2.17.x", + "he": "1.2.x", + "param-case": "2.1.x", + "relateurl": "0.2.x", + "uglify-js": "3.4.x" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "uglify-js": { + "version": "3.4.10", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.10.tgz", + "integrity": "sha512-Y2VsbPVs0FIshJztycsO2SfPk7/KAF/T72qzv9u5EpQ4kB2hQoHlhNQTsNyy6ul7lQtqJN/AoWeS23OzEiEFxw==", + "dev": true, + "requires": { + "commander": "~2.19.0", + "source-map": "~0.6.1" + }, + "dependencies": { + "commander": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", + "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==", + "dev": true + } + } + } + } + }, + "html-tags": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-2.0.0.tgz", + "integrity": "sha1-ELMKOGCF9Dzt41PMj6fLDe7qZos=", + "dev": true + }, + "html-webpack-plugin": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz", + "integrity": "sha1-sBq71yOsqqeze2r0SS69oD2d03s=", + "dev": true, + "requires": { + "html-minifier": "^3.2.3", + "loader-utils": "^0.2.16", + "lodash": "^4.17.3", + "pretty-error": "^2.0.2", + "tapable": "^1.0.0", + "toposort": "^1.0.0", + "util.promisify": "1.0.0" + }, + "dependencies": { + "big.js": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", + "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", + "dev": true + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "dev": true + }, + "loader-utils": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", + "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", + "dev": true, + "requires": { + "big.js": "^3.1.3", + "emojis-list": "^2.0.0", + "json5": "^0.5.0", + "object-assign": "^4.0.1" + } + }, + "util.promisify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz", + "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "object.getownpropertydescriptors": "^2.0.3" + } + } + } + }, + "htmlparser2": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", + "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", + "dev": true, + "requires": { + "domelementtype": "^1.3.1", + "domhandler": "^2.3.0", + "domutils": "^1.5.1", + "entities": "^1.1.1", + "inherits": "^2.0.1", + "readable-stream": "^3.1.1" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=", + "dev": true + }, + "http-errors": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + } + } + }, + "http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dev": true, + "requires": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + } + }, + "http-proxy-middleware": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz", + "integrity": "sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==", + "dev": true, + "requires": { + "http-proxy": "^1.17.0", + "is-glob": "^4.0.0", + "lodash": "^4.17.11", + "micromatch": "^3.1.10" + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", + "dev": true + }, + "husky": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/husky/-/husky-1.3.1.tgz", + "integrity": "sha512-86U6sVVVf4b5NYSZ0yvv88dRgBSSXXmHaiq5pP4KDj5JVzdwKgBjEtUPOm8hcoytezFwbU+7gotXNhpHdystlg==", + "dev": true, + "requires": { + "cosmiconfig": "^5.0.7", + "execa": "^1.0.0", + "find-up": "^3.0.0", + "get-stdin": "^6.0.0", + "is-ci": "^2.0.0", + "pkg-dir": "^3.0.0", + "please-upgrade-node": "^3.1.1", + "read-pkg": "^4.0.1", + "run-node": "^1.0.0", + "slash": "^2.0.0" + }, + "dependencies": { + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "get-stdin": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", + "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==", + "dev": true + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dev": true, + "requires": { + "ci-info": "^2.0.0" + } + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "requires": { + "find-up": "^3.0.0" + } + }, + "read-pkg": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-4.0.1.tgz", + "integrity": "sha1-ljYlN48+HE1IyFhytabsfV0JMjc=", + "dev": true, + "requires": { + "normalize-package-data": "^2.3.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0" + } + } + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "icss-replace-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", + "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=", + "dev": true + }, + "icss-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-2.1.0.tgz", + "integrity": "sha1-g/Cg7DeL8yRheLbCrZE28TWxyWI=", + "dev": true, + "requires": { + "postcss": "^6.0.1" + }, + "dependencies": { + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "ieee754": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", + "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==", + "dev": true + }, + "iferr": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", + "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", + "dev": true + }, + "ignore": { + "version": "3.3.10", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", + "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", + "dev": true + }, + "image-size": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", + "integrity": "sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=", + "dev": true + }, + "immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=" + }, + "import-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz", + "integrity": "sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk=", + "dev": true, + "requires": { + "import-from": "^2.1.0" + } + }, + "import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", + "dev": true, + "requires": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + }, + "dependencies": { + "caller-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", + "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", + "dev": true, + "requires": { + "caller-callsite": "^2.0.0" + } + }, + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true + } + } + }, + "import-from": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-from/-/import-from-2.1.0.tgz", + "integrity": "sha1-M1238qev/VOqpHHUuAId7ja387E=", + "dev": true, + "requires": { + "resolve-from": "^3.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true + } + } + }, + "import-local": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-1.0.0.tgz", + "integrity": "sha512-vAaZHieK9qjGo58agRBg+bhHX3hoTZU/Oa3GESWLz7t1U62fk63aHuDJJEteXoDeTCcPmUT+z38gkHPZkkmpmQ==", + "dev": true, + "requires": { + "pkg-dir": "^2.0.0", + "resolve-cwd": "^2.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "in-publish": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.1.tgz", + "integrity": "sha512-oDM0kUSNFC31ShNxHKUyfZKy8ZeXZBWMjMdZHKLOk13uvT27VTL/QzRGfRUcevJhpkZAvlhPYuXkF7eNWrtyxQ==" + }, + "indent-string": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "requires": { + "repeating": "^2.0.0" + } + }, + "indexes-of": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", + "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", + "dev": true + }, + "infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "dev": true + }, + "inquirer": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz", + "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==", + "dev": true, + "optional": true, + "requires": { + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.0", + "cli-cursor": "^2.1.0", + "cli-width": "^2.0.0", + "external-editor": "^2.0.4", + "figures": "^2.0.0", + "lodash": "^4.3.0", + "mute-stream": "0.0.7", + "run-async": "^2.2.0", + "rx-lite": "^4.0.8", + "rx-lite-aggregates": "^4.0.8", + "string-width": "^2.1.0", + "strip-ansi": "^4.0.0", + "through": "^2.3.6" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true, + "optional": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "optional": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "optional": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "internal-ip": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz", + "integrity": "sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==", + "dev": true, + "requires": { + "default-gateway": "^4.2.0", + "ipaddr.js": "^1.9.0" + } + }, + "interpret": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", + "dev": true + }, + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dev": true, + "requires": { + "loose-envify": "^1.0.0" + } + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=" + }, + "ip": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", + "dev": true + }, + "ip-regex": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", + "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=", + "dev": true + }, + "ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "dev": true + }, + "is-absolute": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", + "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", + "dev": true, + "requires": { + "is-relative": "^1.0.0", + "is-windows": "^1.0.1" + } + }, + "is-absolute-url": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", + "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=", + "dev": true + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-arguments": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", + "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==", + "dev": true + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "optional": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-buffer": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz", + "integrity": "sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A==" + }, + "is-callable": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.0.tgz", + "integrity": "sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==", + "dev": true + }, + "is-ci": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.2.1.tgz", + "integrity": "sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==", + "dev": true, + "requires": { + "ci-info": "^1.5.0" + } + }, + "is-color-stop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz", + "integrity": "sha1-z/9HGu5N1cnhWFmPvhKWe1za00U=", + "dev": true, + "requires": { + "css-color-names": "^0.0.4", + "hex-color-regex": "^1.1.0", + "hsl-regex": "^1.0.0", + "hsla-regex": "^1.0.0", + "rgb-regex": "^1.0.1", + "rgba-regex": "^1.0.0" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-date-object": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", + "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", + "dev": true + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "is-directory": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", + "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", + "dev": true + }, + "is-dotfile": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", + "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", + "dev": true + }, + "is-equal-shallow": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", + "dev": true, + "requires": { + "is-primitive": "^2.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-finite": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz", + "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==" + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "is-generator-fn": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-1.0.0.tgz", + "integrity": "sha1-lp1J4bszKfa7fwkIm+JleLLd1Go=", + "dev": true + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-lower-case": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/is-lower-case/-/is-lower-case-1.1.3.tgz", + "integrity": "sha1-fhR75HaNxGbbO/shzGCzHmrWk5M=", + "dev": true, + "requires": { + "lower-case": "^1.1.0" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "dev": true + }, + "is-observable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-observable/-/is-observable-1.1.0.tgz", + "integrity": "sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA==", + "dev": true, + "requires": { + "symbol-observable": "^1.1.0" + } + }, + "is-path-cwd": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", + "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", + "dev": true + }, + "is-path-in-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz", + "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==", + "dev": true, + "requires": { + "is-path-inside": "^2.1.0" + } + }, + "is-path-inside": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz", + "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==", + "dev": true, + "requires": { + "path-is-inside": "^1.0.2" + } + }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", + "dev": true + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-posix-bracket": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", + "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", + "dev": true + }, + "is-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", + "dev": true + }, + "is-promise": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", + "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==", + "dev": true + }, + "is-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.0.tgz", + "integrity": "sha512-iI97M8KTWID2la5uYXlkbSDQIg4F6o1sYboZKKTDpnDQMLtUL86zxhgDet3Q2SriaYsyGqZ6Mn2SjbRKeLHdqw==", + "dev": true, + "requires": { + "has-symbols": "^1.0.1" + } + }, + "is-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", + "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=", + "dev": true + }, + "is-relative": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", + "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", + "dev": true, + "requires": { + "is-unc-path": "^1.0.0" + } + }, + "is-resolvable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", + "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", + "dev": true + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + }, + "is-svg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-3.0.0.tgz", + "integrity": "sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ==", + "dev": true, + "requires": { + "html-comment-regex": "^1.1.0" + } + }, + "is-symbol": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.1" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + }, + "is-unc-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", + "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", + "dev": true, + "requires": { + "unc-path-regex": "^0.1.2" + } + }, + "is-upper-case": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-upper-case/-/is-upper-case-1.1.2.tgz", + "integrity": "sha1-jQsfp+eTOh5YSDYA7H2WYcuvdW8=", + "dev": true, + "requires": { + "upper-case": "^1.1.0" + } + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=" + }, + "is-whitespace": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/is-whitespace/-/is-whitespace-0.3.0.tgz", + "integrity": "sha1-Fjnssb4DauxppUy7QBz77XEUq38=", + "dev": true + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "isbinaryfile": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-3.0.3.tgz", + "integrity": "sha512-8cJBL5tTd2OS0dM4jz07wQd5g0dCCqIhUxPIGtZfa5L6hWlvV5MHTITy/DBAsF+Oe2LS1X3krBUhNwaGUWpWxw==", + "dev": true, + "requires": { + "buffer-alloc": "^1.2.0" + } + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + }, + "istanbul-api": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/istanbul-api/-/istanbul-api-1.3.7.tgz", + "integrity": "sha512-4/ApBnMVeEPG3EkSzcw25wDe4N66wxwn+KKn6b47vyek8Xb3NBAcg4xfuQbS7BqcZuTX4wxfD5lVagdggR3gyA==", + "dev": true, + "requires": { + "async": "^2.1.4", + "fileset": "^2.0.2", + "istanbul-lib-coverage": "^1.2.1", + "istanbul-lib-hook": "^1.2.2", + "istanbul-lib-instrument": "^1.10.2", + "istanbul-lib-report": "^1.1.5", + "istanbul-lib-source-maps": "^1.2.6", + "istanbul-reports": "^1.5.1", + "js-yaml": "^3.7.0", + "mkdirp": "^0.5.1", + "once": "^1.4.0" + } + }, + "istanbul-lib-coverage": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.1.tgz", + "integrity": "sha512-PzITeunAgyGbtY1ibVIUiV679EFChHjoMNRibEIobvmrCRaIgwLxNucOSimtNWUhEib/oO7QY2imD75JVgCJWQ==", + "dev": true + }, + "istanbul-lib-hook": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-1.2.2.tgz", + "integrity": "sha512-/Jmq7Y1VeHnZEQ3TL10VHyb564mn6VrQXHchON9Jf/AEcmQ3ZIiyD1BVzNOKTZf/G3gE+kiGK6SmpF9y3qGPLw==", + "dev": true, + "requires": { + "append-transform": "^0.4.0" + } + }, + "istanbul-lib-instrument": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.10.2.tgz", + "integrity": "sha512-aWHxfxDqvh/ZlxR8BBaEPVSWDPUkGD63VjGQn3jcw8jCp7sHEMKcrj4xfJn/ABzdMEHiQNyvDQhqm5o8+SQg7A==", + "dev": true, + "requires": { + "babel-generator": "^6.18.0", + "babel-template": "^6.16.0", + "babel-traverse": "^6.18.0", + "babel-types": "^6.18.0", + "babylon": "^6.18.0", + "istanbul-lib-coverage": "^1.2.1", + "semver": "^5.3.0" + } + }, + "istanbul-lib-report": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-1.1.5.tgz", + "integrity": "sha512-UsYfRMoi6QO/doUshYNqcKJqVmFe9w51GZz8BS3WB0lYxAllQYklka2wP9+dGZeHYaWIdcXUx8JGdbqaoXRXzw==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "^1.2.1", + "mkdirp": "^0.5.1", + "path-parse": "^1.0.5", + "supports-color": "^3.1.2" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "istanbul-lib-source-maps": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.6.tgz", + "integrity": "sha512-TtbsY5GIHgbMsMiRw35YBHGpZ1DVFEO19vxxeiDMYaeOFOCzfnYVxvl6pOUIZR4dtPhAGpSMup8OyF8ubsaqEg==", + "dev": true, + "requires": { + "debug": "^3.1.0", + "istanbul-lib-coverage": "^1.2.1", + "mkdirp": "^0.5.1", + "rimraf": "^2.6.1", + "source-map": "^0.5.3" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "istanbul-reports": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.5.1.tgz", + "integrity": "sha512-+cfoZ0UXzWjhAdzosCPP3AN8vvef8XDkWtTfgaN+7L3YTpNYITnCaEkceo5SEYy644VkHka/P1FvkWvrG/rrJw==", + "dev": true, + "requires": { + "handlebars": "^4.0.3" + } + }, + "javascript-stringify": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/javascript-stringify/-/javascript-stringify-1.6.0.tgz", + "integrity": "sha1-FC0RHzpuPa6PSpr9d9RYVbWpzOM=", + "dev": true + }, + "jest": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-23.6.0.tgz", + "integrity": "sha512-lWzcd+HSiqeuxyhG+EnZds6iO3Y3ZEnMrfZq/OTGvF/C+Z4fPMCdhWTGSAiO2Oym9rbEXfwddHhh6jqrTF3+Lw==", + "dev": true, + "requires": { + "import-local": "^1.0.0", + "jest-cli": "^23.6.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "dev": true, + "requires": { + "arr-flatten": "^1.0.1" + } + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "dev": true, + "requires": { + "expand-range": "^1.8.1", + "preserve": "^0.2.0", + "repeat-element": "^1.1.2" + } + }, + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + }, + "cliui": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "dev": true, + "requires": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" + } + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "dev": true, + "requires": { + "is-posix-bracket": "^0.1.0" + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "dev": true + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "invert-kv": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", + "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", + "dev": true + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "jest-cli": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-23.6.0.tgz", + "integrity": "sha512-hgeD1zRUp1E1zsiyOXjEn4LzRLWdJBV//ukAHGlx6s5mfCNJTbhbHjgxnDUXA8fsKWN/HqFFF6X5XcCwC/IvYQ==", + "dev": true, + "requires": { + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "glob": "^7.1.2", + "graceful-fs": "^4.1.11", + "import-local": "^1.0.0", + "is-ci": "^1.0.10", + "istanbul-api": "^1.3.1", + "istanbul-lib-coverage": "^1.2.0", + "istanbul-lib-instrument": "^1.10.1", + "istanbul-lib-source-maps": "^1.2.4", + "jest-changed-files": "^23.4.2", + "jest-config": "^23.6.0", + "jest-environment-jsdom": "^23.4.0", + "jest-get-type": "^22.1.0", + "jest-haste-map": "^23.6.0", + "jest-message-util": "^23.4.0", + "jest-regex-util": "^23.3.0", + "jest-resolve-dependencies": "^23.6.0", + "jest-runner": "^23.6.0", + "jest-runtime": "^23.6.0", + "jest-snapshot": "^23.6.0", + "jest-util": "^23.4.0", + "jest-validate": "^23.6.0", + "jest-watcher": "^23.4.0", + "jest-worker": "^23.2.0", + "micromatch": "^2.3.11", + "node-notifier": "^5.2.1", + "prompts": "^0.1.9", + "realpath-native": "^1.0.0", + "rimraf": "^2.5.4", + "slash": "^1.0.0", + "string-length": "^2.0.0", + "strip-ansi": "^4.0.0", + "which": "^1.2.12", + "yargs": "^11.0.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + }, + "lcid": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", + "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "dev": true, + "requires": { + "invert-kv": "^2.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "mem": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", + "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", + "dev": true, + "requires": { + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^2.0.0", + "p-is-promise": "^2.0.0" + } + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "dev": true, + "requires": { + "arr-diff": "^2.0.0", + "array-unique": "^0.2.1", + "braces": "^1.8.2", + "expand-brackets": "^0.1.4", + "extglob": "^0.3.1", + "filename-regex": "^2.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.1", + "kind-of": "^3.0.2", + "normalize-path": "^2.0.1", + "object.omit": "^2.0.0", + "parse-glob": "^3.0.4", + "regex-cache": "^0.4.2" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + }, + "os-locale": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", + "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", + "dev": true, + "requires": { + "execa": "^1.0.0", + "lcid": "^2.0.0", + "mem": "^4.0.0" + } + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "dev": true + }, + "yargs": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-11.1.1.tgz", + "integrity": "sha512-PRU7gJrJaXv3q3yQZ/+/X6KBswZiaQ+zOmdprZcouPYtQgvNU35i+68M4b1ZHLZtYFT5QObFLV+ZkmJYcwKdiw==", + "dev": true, + "requires": { + "cliui": "^4.0.0", + "decamelize": "^1.1.1", + "find-up": "^2.1.0", + "get-caller-file": "^1.0.1", + "os-locale": "^3.1.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^9.0.2" + } + }, + "yargs-parser": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz", + "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=", + "dev": true, + "requires": { + "camelcase": "^4.1.0" + } + } + } + }, + "jest-changed-files": { + "version": "23.4.2", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-23.4.2.tgz", + "integrity": "sha512-EyNhTAUWEfwnK0Is/09LxoqNDOn7mU7S3EHskG52djOFS/z+IT0jT3h3Ql61+dklcG7bJJitIWEMB4Sp1piHmA==", + "dev": true, + "requires": { + "throat": "^4.0.0" + } + }, + "jest-config": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-23.6.0.tgz", + "integrity": "sha512-i8V7z9BeDXab1+VNo78WM0AtWpBRXJLnkT+lyT+Slx/cbP5sZJ0+NDuLcmBE5hXAoK0aUp7vI+MOxR+R4d8SRQ==", + "dev": true, + "requires": { + "babel-core": "^6.0.0", + "babel-jest": "^23.6.0", + "chalk": "^2.0.1", + "glob": "^7.1.1", + "jest-environment-jsdom": "^23.4.0", + "jest-environment-node": "^23.4.0", + "jest-get-type": "^22.1.0", + "jest-jasmine2": "^23.6.0", + "jest-regex-util": "^23.3.0", + "jest-resolve": "^23.6.0", + "jest-util": "^23.4.0", + "jest-validate": "^23.6.0", + "micromatch": "^2.3.11", + "pretty-format": "^23.6.0" + }, + "dependencies": { + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "dev": true, + "requires": { + "arr-flatten": "^1.0.1" + } + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true + }, + "babel-core": { + "version": "6.26.3", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz", + "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==", + "dev": true, + "requires": { + "babel-code-frame": "^6.26.0", + "babel-generator": "^6.26.0", + "babel-helpers": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-register": "^6.26.0", + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "convert-source-map": "^1.5.1", + "debug": "^2.6.9", + "json5": "^0.5.1", + "lodash": "^4.17.4", + "minimatch": "^3.0.4", + "path-is-absolute": "^1.0.1", + "private": "^0.1.8", + "slash": "^1.0.0", + "source-map": "^0.5.7" + } + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "dev": true, + "requires": { + "expand-range": "^1.8.1", + "preserve": "^0.2.0", + "repeat-element": "^1.1.2" + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "dev": true, + "requires": { + "is-posix-bracket": "^0.1.0" + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "dev": true, + "requires": { + "arr-diff": "^2.0.0", + "array-unique": "^0.2.1", + "braces": "^1.8.2", + "expand-brackets": "^0.1.4", + "extglob": "^0.3.1", + "filename-regex": "^2.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.1", + "kind-of": "^3.0.2", + "normalize-path": "^2.0.1", + "object.omit": "^2.0.0", + "parse-glob": "^3.0.4", + "regex-cache": "^0.4.2" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "jest-diff": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-23.6.0.tgz", + "integrity": "sha512-Gz9l5Ov+X3aL5L37IT+8hoCUsof1CVYBb2QEkOupK64XyRR3h+uRpYIm97K7sY8diFxowR8pIGEdyfMKTixo3g==", + "dev": true, + "requires": { + "chalk": "^2.0.1", + "diff": "^3.2.0", + "jest-get-type": "^22.1.0", + "pretty-format": "^23.6.0" + } + }, + "jest-docblock": { + "version": "23.2.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-23.2.0.tgz", + "integrity": "sha1-8IXh8YVI2Z/dabICB+b9VdkTg6c=", + "dev": true, + "requires": { + "detect-newline": "^2.1.0" + } + }, + "jest-each": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-23.6.0.tgz", + "integrity": "sha512-x7V6M/WGJo6/kLoissORuvLIeAoyo2YqLOoCDkohgJ4XOXSqOtyvr8FbInlAWS77ojBsZrafbozWoKVRdtxFCg==", + "dev": true, + "requires": { + "chalk": "^2.0.1", + "pretty-format": "^23.6.0" + } + }, + "jest-environment-jsdom": { + "version": "23.4.0", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-23.4.0.tgz", + "integrity": "sha1-BWp5UrP+pROsYqFAosNox52eYCM=", + "dev": true, + "requires": { + "jest-mock": "^23.2.0", + "jest-util": "^23.4.0", + "jsdom": "^11.5.1" + } + }, + "jest-environment-node": { + "version": "23.4.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-23.4.0.tgz", + "integrity": "sha1-V+gO0IQd6jAxZ8zozXlSHeuv3hA=", + "dev": true, + "requires": { + "jest-mock": "^23.2.0", + "jest-util": "^23.4.0" + } + }, + "jest-get-type": { + "version": "22.4.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-22.4.3.tgz", + "integrity": "sha512-/jsz0Y+V29w1chdXVygEKSz2nBoHoYqNShPe+QgxSNjAuP1i8+k4LbQNrfoliKej0P45sivkSCh7yiD6ubHS3w==", + "dev": true + }, + "jest-haste-map": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-23.6.0.tgz", + "integrity": "sha512-uyNhMyl6dr6HaXGHp8VF7cK6KpC6G9z9LiMNsst+rJIZ8l7wY0tk8qwjPmEghczojZ2/ZhtEdIabZ0OQRJSGGg==", + "dev": true, + "requires": { + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.1.11", + "invariant": "^2.2.4", + "jest-docblock": "^23.2.0", + "jest-serializer": "^23.0.1", + "jest-worker": "^23.2.0", + "micromatch": "^2.3.11", + "sane": "^2.0.0" + }, + "dependencies": { + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "dev": true, + "requires": { + "arr-flatten": "^1.0.1" + } + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "dev": true, + "requires": { + "expand-range": "^1.8.1", + "preserve": "^0.2.0", + "repeat-element": "^1.1.2" + } + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "dev": true, + "requires": { + "is-posix-bracket": "^0.1.0" + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "dev": true, + "requires": { + "arr-diff": "^2.0.0", + "array-unique": "^0.2.1", + "braces": "^1.8.2", + "expand-brackets": "^0.1.4", + "extglob": "^0.3.1", + "filename-regex": "^2.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.1", + "kind-of": "^3.0.2", + "normalize-path": "^2.0.1", + "object.omit": "^2.0.0", + "parse-glob": "^3.0.4", + "regex-cache": "^0.4.2" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "jest-jasmine2": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-23.6.0.tgz", + "integrity": "sha512-pe2Ytgs1nyCs8IvsEJRiRTPC0eVYd8L/dXJGU08GFuBwZ4sYH/lmFDdOL3ZmvJR8QKqV9MFuwlsAi/EWkFUbsQ==", + "dev": true, + "requires": { + "babel-traverse": "^6.0.0", + "chalk": "^2.0.1", + "co": "^4.6.0", + "expect": "^23.6.0", + "is-generator-fn": "^1.0.0", + "jest-diff": "^23.6.0", + "jest-each": "^23.6.0", + "jest-matcher-utils": "^23.6.0", + "jest-message-util": "^23.4.0", + "jest-snapshot": "^23.6.0", + "jest-util": "^23.4.0", + "pretty-format": "^23.6.0" + } + }, + "jest-leak-detector": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-23.6.0.tgz", + "integrity": "sha512-f/8zA04rsl1Nzj10HIyEsXvYlMpMPcy0QkQilVZDFOaPbv2ur71X5u2+C4ZQJGyV/xvVXtCCZ3wQ99IgQxftCg==", + "dev": true, + "requires": { + "pretty-format": "^23.6.0" + } + }, + "jest-matcher-utils": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-23.6.0.tgz", + "integrity": "sha512-rosyCHQfBcol4NsckTn01cdelzWLU9Cq7aaigDf8VwwpIRvWE/9zLgX2bON+FkEW69/0UuYslUe22SOdEf2nog==", + "dev": true, + "requires": { + "chalk": "^2.0.1", + "jest-get-type": "^22.1.0", + "pretty-format": "^23.6.0" + } + }, + "jest-message-util": { + "version": "23.4.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-23.4.0.tgz", + "integrity": "sha1-F2EMUJQjSVCNAaPR4L2iwHkIap8=", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0-beta.35", + "chalk": "^2.0.1", + "micromatch": "^2.3.11", + "slash": "^1.0.0", + "stack-utils": "^1.0.1" + }, + "dependencies": { + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "dev": true, + "requires": { + "arr-flatten": "^1.0.1" + } + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "dev": true, + "requires": { + "expand-range": "^1.8.1", + "preserve": "^0.2.0", + "repeat-element": "^1.1.2" + } + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "dev": true, + "requires": { + "is-posix-bracket": "^0.1.0" + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "dev": true, + "requires": { + "arr-diff": "^2.0.0", + "array-unique": "^0.2.1", + "braces": "^1.8.2", + "expand-brackets": "^0.1.4", + "extglob": "^0.3.1", + "filename-regex": "^2.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.1", + "kind-of": "^3.0.2", + "normalize-path": "^2.0.1", + "object.omit": "^2.0.0", + "parse-glob": "^3.0.4", + "regex-cache": "^0.4.2" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "dev": true + } + } + }, + "jest-mock": { + "version": "23.2.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-23.2.0.tgz", + "integrity": "sha1-rRxg8p6HGdR8JuETgJi20YsmETQ=", + "dev": true + }, + "jest-regex-util": { + "version": "23.3.0", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-23.3.0.tgz", + "integrity": "sha1-X4ZylUfCeFxAAs6qj4Sf6MpHG8U=", + "dev": true + }, + "jest-resolve": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-23.6.0.tgz", + "integrity": "sha512-XyoRxNtO7YGpQDmtQCmZjum1MljDqUCob7XlZ6jy9gsMugHdN2hY4+Acz9Qvjz2mSsOnPSH7skBmDYCHXVZqkA==", + "dev": true, + "requires": { + "browser-resolve": "^1.11.3", + "chalk": "^2.0.1", + "realpath-native": "^1.0.0" + } + }, + "jest-resolve-dependencies": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-23.6.0.tgz", + "integrity": "sha512-EkQWkFWjGKwRtRyIwRwI6rtPAEyPWlUC2MpzHissYnzJeHcyCn1Hc8j7Nn1xUVrS5C6W5+ZL37XTem4D4pLZdA==", + "dev": true, + "requires": { + "jest-regex-util": "^23.3.0", + "jest-snapshot": "^23.6.0" + } + }, + "jest-runner": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-23.6.0.tgz", + "integrity": "sha512-kw0+uj710dzSJKU6ygri851CObtCD9cN8aNkg8jWJf4ewFyEa6kwmiH/r/M1Ec5IL/6VFa0wnAk6w+gzUtjJzA==", + "dev": true, + "requires": { + "exit": "^0.1.2", + "graceful-fs": "^4.1.11", + "jest-config": "^23.6.0", + "jest-docblock": "^23.2.0", + "jest-haste-map": "^23.6.0", + "jest-jasmine2": "^23.6.0", + "jest-leak-detector": "^23.6.0", + "jest-message-util": "^23.4.0", + "jest-runtime": "^23.6.0", + "jest-util": "^23.4.0", + "jest-worker": "^23.2.0", + "source-map-support": "^0.5.6", + "throat": "^4.0.0" + } + }, + "jest-runtime": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-23.6.0.tgz", + "integrity": "sha512-ycnLTNPT2Gv+TRhnAYAQ0B3SryEXhhRj1kA6hBPSeZaNQkJ7GbZsxOLUkwg6YmvWGdX3BB3PYKFLDQCAE1zNOw==", + "dev": true, + "requires": { + "babel-core": "^6.0.0", + "babel-plugin-istanbul": "^4.1.6", + "chalk": "^2.0.1", + "convert-source-map": "^1.4.0", + "exit": "^0.1.2", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.1.11", + "jest-config": "^23.6.0", + "jest-haste-map": "^23.6.0", + "jest-message-util": "^23.4.0", + "jest-regex-util": "^23.3.0", + "jest-resolve": "^23.6.0", + "jest-snapshot": "^23.6.0", + "jest-util": "^23.4.0", + "jest-validate": "^23.6.0", + "micromatch": "^2.3.11", + "realpath-native": "^1.0.0", + "slash": "^1.0.0", + "strip-bom": "3.0.0", + "write-file-atomic": "^2.1.0", + "yargs": "^11.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "dev": true, + "requires": { + "arr-flatten": "^1.0.1" + } + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true + }, + "babel-core": { + "version": "6.26.3", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz", + "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==", + "dev": true, + "requires": { + "babel-code-frame": "^6.26.0", + "babel-generator": "^6.26.0", + "babel-helpers": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-register": "^6.26.0", + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "convert-source-map": "^1.5.1", + "debug": "^2.6.9", + "json5": "^0.5.1", + "lodash": "^4.17.4", + "minimatch": "^3.0.4", + "path-is-absolute": "^1.0.1", + "private": "^0.1.8", + "slash": "^1.0.0", + "source-map": "^0.5.7" + } + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "dev": true, + "requires": { + "expand-range": "^1.8.1", + "preserve": "^0.2.0", + "repeat-element": "^1.1.2" + } + }, + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + }, + "cliui": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "dev": true, + "requires": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" + } + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "dev": true, + "requires": { + "is-posix-bracket": "^0.1.0" + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "dev": true + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "invert-kv": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", + "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", + "dev": true + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + }, + "lcid": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", + "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "dev": true, + "requires": { + "invert-kv": "^2.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "mem": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", + "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", + "dev": true, + "requires": { + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^2.0.0", + "p-is-promise": "^2.0.0" + } + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "dev": true, + "requires": { + "arr-diff": "^2.0.0", + "array-unique": "^0.2.1", + "braces": "^1.8.2", + "expand-brackets": "^0.1.4", + "extglob": "^0.3.1", + "filename-regex": "^2.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.1", + "kind-of": "^3.0.2", + "normalize-path": "^2.0.1", + "object.omit": "^2.0.0", + "parse-glob": "^3.0.4", + "regex-cache": "^0.4.2" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + }, + "os-locale": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", + "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", + "dev": true, + "requires": { + "execa": "^1.0.0", + "lcid": "^2.0.0", + "mem": "^4.0.0" + } + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "dev": true + }, + "yargs": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-11.1.1.tgz", + "integrity": "sha512-PRU7gJrJaXv3q3yQZ/+/X6KBswZiaQ+zOmdprZcouPYtQgvNU35i+68M4b1ZHLZtYFT5QObFLV+ZkmJYcwKdiw==", + "dev": true, + "requires": { + "cliui": "^4.0.0", + "decamelize": "^1.1.1", + "find-up": "^2.1.0", + "get-caller-file": "^1.0.1", + "os-locale": "^3.1.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^9.0.2" + } + }, + "yargs-parser": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz", + "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=", + "dev": true, + "requires": { + "camelcase": "^4.1.0" + } + } + } + }, + "jest-serializer": { + "version": "23.0.1", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-23.0.1.tgz", + "integrity": "sha1-o3dq6zEekP6D+rnlM+hRAr0WQWU=", + "dev": true + }, + "jest-serializer-vue": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/jest-serializer-vue/-/jest-serializer-vue-2.0.2.tgz", + "integrity": "sha1-sjjvKGNX7GtIBCG9RxRQUJh9WbM=", + "dev": true, + "requires": { + "pretty": "2.0.0" + } + }, + "jest-snapshot": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-23.6.0.tgz", + "integrity": "sha512-tM7/Bprftun6Cvj2Awh/ikS7zV3pVwjRYU2qNYS51VZHgaAMBs5l4o/69AiDHhQrj5+LA2Lq4VIvK7zYk/bswg==", + "dev": true, + "requires": { + "babel-types": "^6.0.0", + "chalk": "^2.0.1", + "jest-diff": "^23.6.0", + "jest-matcher-utils": "^23.6.0", + "jest-message-util": "^23.4.0", + "jest-resolve": "^23.6.0", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "pretty-format": "^23.6.0", + "semver": "^5.5.0" + } + }, + "jest-transform-stub": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/jest-transform-stub/-/jest-transform-stub-2.0.0.tgz", + "integrity": "sha512-lspHaCRx/mBbnm3h4uMMS3R5aZzMwyNpNIJLXj4cEsV0mIUtS4IjYJLSoyjRCtnxb6RIGJ4NL2quZzfIeNhbkg==", + "dev": true + }, + "jest-util": { + "version": "23.4.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-23.4.0.tgz", + "integrity": "sha1-TQY8uSe68KI4Mf9hvsLLv0l5NWE=", + "dev": true, + "requires": { + "callsites": "^2.0.0", + "chalk": "^2.0.1", + "graceful-fs": "^4.1.11", + "is-ci": "^1.0.10", + "jest-message-util": "^23.4.0", + "mkdirp": "^0.5.1", + "slash": "^1.0.0", + "source-map": "^0.6.0" + }, + "dependencies": { + "callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", + "dev": true + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "jest-validate": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-23.6.0.tgz", + "integrity": "sha512-OFKapYxe72yz7agrDAWi8v2WL8GIfVqcbKRCLbRG9PAxtzF9b1SEDdTpytNDN12z2fJynoBwpMpvj2R39plI2A==", + "dev": true, + "requires": { + "chalk": "^2.0.1", + "jest-get-type": "^22.1.0", + "leven": "^2.1.0", + "pretty-format": "^23.6.0" + } + }, + "jest-watcher": { + "version": "23.4.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-23.4.0.tgz", + "integrity": "sha1-0uKM50+NrWxq/JIrksq+9u0FyRw=", + "dev": true, + "requires": { + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.1", + "string-length": "^2.0.0" + } + }, + "jest-worker": { + "version": "23.2.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-23.2.0.tgz", + "integrity": "sha1-+vcGqNo2+uYOsmlXJX+ntdjqArk=", + "dev": true, + "requires": { + "merge-stream": "^1.0.1" + } + }, + "jquery": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.5.1.tgz", + "integrity": "sha512-XwIBPqcMn57FxfT+Go5pzySnm4KWkT1Tv7gjrpT1srtf8Weynl6R273VJ5GjkRb51IzMp5nbaPjJXMWeju2MKg==" + }, + "js-base64": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.5.2.tgz", + "integrity": "sha512-Vg8czh0Q7sFBSUMWWArX/miJeBWYBPpdU/3M/DKSaekLMqrqVPaedp+5mZhie/r0lgrcaYBfwXatEew6gwgiQQ==" + }, + "js-beautify": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.11.0.tgz", + "integrity": "sha512-a26B+Cx7USQGSWnz9YxgJNMmML/QG2nqIaL7VVYPCXbqiKz8PN0waSNvroMtvAK6tY7g/wPdNWGEP+JTNIBr6A==", + "dev": true, + "requires": { + "config-chain": "^1.1.12", + "editorconfig": "^0.15.3", + "glob": "^7.1.3", + "mkdirp": "~1.0.3", + "nopt": "^4.0.3" + }, + "dependencies": { + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + }, + "nopt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz", + "integrity": "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==", + "dev": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + } + } + }, + "js-cookie": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-2.2.0.tgz", + "integrity": "sha1-Gywnmm7s44ChIWi5JIUmWzWx7/s=" + }, + "js-levenshtein": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.6.tgz", + "integrity": "sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==", + "dev": true + }, + "js-message": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/js-message/-/js-message-1.0.5.tgz", + "integrity": "sha1-IwDSSxrwjondCVvBpMnJz8uJLRU=", + "dev": true + }, + "js-queue": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/js-queue/-/js-queue-2.0.0.tgz", + "integrity": "sha1-NiITz4YPRo8BJfxslqvBdCUx+Ug=", + "dev": true, + "requires": { + "easy-stack": "^1.0.0" + } + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "js-yaml": { + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz", + "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" + }, + "jsdom": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-11.12.0.tgz", + "integrity": "sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw==", + "dev": true, + "requires": { + "abab": "^2.0.0", + "acorn": "^5.5.3", + "acorn-globals": "^4.1.0", + "array-equal": "^1.0.0", + "cssom": ">= 0.3.2 < 0.4.0", + "cssstyle": "^1.0.0", + "data-urls": "^1.0.0", + "domexception": "^1.0.1", + "escodegen": "^1.9.1", + "html-encoding-sniffer": "^1.0.2", + "left-pad": "^1.3.0", + "nwsapi": "^2.0.7", + "parse5": "4.0.0", + "pn": "^1.1.0", + "request": "^2.87.0", + "request-promise-native": "^1.0.5", + "sax": "^1.2.4", + "symbol-tree": "^3.2.2", + "tough-cookie": "^2.3.4", + "w3c-hr-time": "^1.0.1", + "webidl-conversions": "^4.0.2", + "whatwg-encoding": "^1.0.3", + "whatwg-mimetype": "^2.1.0", + "whatwg-url": "^6.4.1", + "ws": "^5.2.0", + "xml-name-validator": "^3.0.0" + } + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + }, + "json3": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.3.tgz", + "integrity": "sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA==", + "dev": true + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "dev": true + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "jsonlint": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/jsonlint/-/jsonlint-1.6.3.tgz", + "integrity": "sha512-jMVTMzP+7gU/IyC6hvKyWpUU8tmTkK5b3BPNuMI9U8Sit+YAWLlZwB6Y6YrdCxfg2kNz05p3XY3Bmm4m26Nv3A==", + "requires": { + "JSV": "^4.0.x", + "nomnom": "^1.5.x" + } + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "jszip": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.2.1.tgz", + "integrity": "sha512-iCMBbo4eE5rb1VCpm5qXOAaUiRKRUKiItn8ah2YQQx9qymmSAY98eyQfioChEYcVQLh0zxJ3wS4A0mh90AVPvw==", + "requires": { + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "set-immediate-shim": "~1.0.1" + } + }, + "killable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz", + "integrity": "sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==", + "dev": true + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + }, + "kleur": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-2.0.2.tgz", + "integrity": "sha512-77XF9iTllATmG9lSlIv0qdQ2BQ/h9t0bJllHlbvsQ0zUWfU7Yi0S8L5JXzPZgkefIiajLmBJJ4BsMJmqcf7oxQ==", + "dev": true + }, + "launch-editor": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.2.1.tgz", + "integrity": "sha512-On+V7K2uZK6wK7x691ycSUbLD/FyKKelArkbaAMSSJU8JmqmhwN2+mnJDNINuJWSrh2L0kDk+ZQtbC/gOWUwLw==", + "dev": true, + "requires": { + "chalk": "^2.3.0", + "shell-quote": "^1.6.1" + } + }, + "launch-editor-middleware": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/launch-editor-middleware/-/launch-editor-middleware-2.2.1.tgz", + "integrity": "sha512-s0UO2/gEGiCgei3/2UN3SMuUj1phjQN8lcpnvgLSz26fAzNWPQ6Nf/kF5IFClnfU2ehp6LrmKdMU/beveO+2jg==", + "dev": true, + "requires": { + "launch-editor": "^2.2.1" + } + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "requires": { + "invert-kv": "^1.0.0" + } + }, + "left-pad": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/left-pad/-/left-pad-1.3.0.tgz", + "integrity": "sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA==", + "dev": true + }, + "leven": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz", + "integrity": "sha1-wuep93IJTe6dNCAq6KzORoeHVYA=", + "dev": true + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "lie": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", + "requires": { + "immediate": "~3.0.5" + } + }, + "liftoff": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-2.5.0.tgz", + "integrity": "sha1-IAkpG7Mc6oYbvxCnwVooyvdcMew=", + "dev": true, + "requires": { + "extend": "^3.0.0", + "findup-sync": "^2.0.0", + "fined": "^1.0.1", + "flagged-respawn": "^1.0.0", + "is-plain-object": "^2.0.4", + "object.map": "^1.0.0", + "rechoir": "^0.6.2", + "resolve": "^1.1.7" + } + }, + "linkify-it": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-2.2.0.tgz", + "integrity": "sha512-GnAl/knGn+i1U/wjBz3akz2stz+HrHLsxMwHQGofCDfPvlf+gDKN58UtfmUquTY4/MXeE2x7k19KQmeoZi94Iw==", + "requires": { + "uc.micro": "^1.0.1" + } + }, + "lint-staged": { + "version": "8.1.5", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-8.1.5.tgz", + "integrity": "sha512-e5ZavfnSLcBJE1BTzRTqw6ly8OkqVyO3GL2M6teSmTBYQ/2BuueD5GIt2RPsP31u/vjKdexUyDCxSyK75q4BDA==", + "dev": true, + "requires": { + "chalk": "^2.3.1", + "commander": "^2.14.1", + "cosmiconfig": "^5.0.2", + "debug": "^3.1.0", + "dedent": "^0.7.0", + "del": "^3.0.0", + "execa": "^1.0.0", + "find-parent-dir": "^0.3.0", + "g-status": "^2.0.2", + "is-glob": "^4.0.0", + "is-windows": "^1.0.2", + "listr": "^0.14.2", + "listr-update-renderer": "^0.5.0", + "lodash": "^4.17.11", + "log-symbols": "^2.2.0", + "micromatch": "^3.1.8", + "npm-which": "^3.0.1", + "p-map": "^1.1.1", + "path-is-inside": "^1.0.2", + "pify": "^3.0.0", + "please-upgrade-node": "^3.0.2", + "staged-git-files": "1.1.2", + "string-argv": "^0.0.2", + "stringify-object": "^3.2.2", + "yup": "^0.26.10" + }, + "dependencies": { + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "del": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/del/-/del-3.0.0.tgz", + "integrity": "sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU=", + "dev": true, + "requires": { + "globby": "^6.1.0", + "is-path-cwd": "^1.0.0", + "is-path-in-cwd": "^1.0.0", + "p-map": "^1.1.1", + "pify": "^3.0.0", + "rimraf": "^2.2.8" + } + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "is-path-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", + "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", + "dev": true + }, + "is-path-in-cwd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz", + "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==", + "dev": true, + "requires": { + "is-path-inside": "^1.0.0" + } + }, + "is-path-inside": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", + "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", + "dev": true, + "requires": { + "path-is-inside": "^1.0.1" + } + }, + "p-map": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz", + "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==", + "dev": true + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, + "listr": { + "version": "0.14.3", + "resolved": "https://registry.npmjs.org/listr/-/listr-0.14.3.tgz", + "integrity": "sha512-RmAl7su35BFd/xoMamRjpIE4j3v+L28o8CT5YhAXQJm1fD+1l9ngXY8JAQRJ+tFK2i5njvi0iRUKV09vPwA0iA==", + "dev": true, + "requires": { + "@samverschueren/stream-to-observable": "^0.3.0", + "is-observable": "^1.1.0", + "is-promise": "^2.1.0", + "is-stream": "^1.1.0", + "listr-silent-renderer": "^1.1.1", + "listr-update-renderer": "^0.5.0", + "listr-verbose-renderer": "^0.5.0", + "p-map": "^2.0.0", + "rxjs": "^6.3.3" + } + }, + "listr-silent-renderer": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz", + "integrity": "sha1-kktaN1cVN3C/Go4/v3S4u/P5JC4=", + "dev": true + }, + "listr-update-renderer": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/listr-update-renderer/-/listr-update-renderer-0.5.0.tgz", + "integrity": "sha512-tKRsZpKz8GSGqoI/+caPmfrypiaq+OQCbd+CovEC24uk1h952lVj5sC7SqyFUm+OaJ5HN/a1YLt5cit2FMNsFA==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "cli-truncate": "^0.2.1", + "elegant-spinner": "^1.0.1", + "figures": "^1.7.0", + "indent-string": "^3.0.0", + "log-symbols": "^1.0.2", + "log-update": "^2.3.0", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "figures": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", + "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5", + "object-assign": "^4.1.0" + } + }, + "indent-string": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", + "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", + "dev": true + }, + "log-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", + "integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=", + "dev": true, + "requires": { + "chalk": "^1.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "listr-verbose-renderer": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/listr-verbose-renderer/-/listr-verbose-renderer-0.5.0.tgz", + "integrity": "sha512-04PDPqSlsqIOaaaGZ+41vq5FejI9auqTInicFRndCBgE3bXG8D6W1I+mWhk+1nqbHmyhla/6BUrd5OSiHwKRXw==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "cli-cursor": "^2.1.0", + "date-fns": "^1.27.2", + "figures": "^2.0.0" + } + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + } + }, + "loader-fs-cache": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/loader-fs-cache/-/loader-fs-cache-1.0.3.tgz", + "integrity": "sha512-ldcgZpjNJj71n+2Mf6yetz+c9bM4xpKtNds4LbqXzU/PTdeAX0g3ytnU1AJMEcTk2Lex4Smpe3Q/eCTsvUBxbA==", + "dev": true, + "requires": { + "find-cache-dir": "^0.1.1", + "mkdirp": "^0.5.1" + }, + "dependencies": { + "find-cache-dir": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-0.1.1.tgz", + "integrity": "sha1-yN765XyKUqinhPnjHFfHQumToLk=", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "mkdirp": "^0.5.1", + "pkg-dir": "^1.0.0" + } + }, + "pkg-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", + "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", + "dev": true, + "requires": { + "find-up": "^1.0.0" + } + } + } + }, + "loader-runner": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", + "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==", + "dev": true + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + } + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "dependencies": { + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + } + } + }, + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" + }, + "lodash.defaultsdeep": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/lodash.defaultsdeep/-/lodash.defaultsdeep-4.6.1.tgz", + "integrity": "sha512-3j8wdDzYuWO3lM3Reg03MuQR957t287Rpcxp1njpEa8oDrikb+FwGdW3n+FELh/A6qib6yPit0j/pv9G/yeAqA==", + "dev": true + }, + "lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=", + "dev": true + }, + "lodash.kebabcase": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz", + "integrity": "sha1-hImxyw0p/4gZXM7KRI/21swpXDY=", + "dev": true + }, + "lodash.mapvalues": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz", + "integrity": "sha1-G6+lAF3p3W9PJmaMMMo3IwzJaJw=", + "dev": true + }, + "lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", + "dev": true + }, + "lodash.padend": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/lodash.padend/-/lodash.padend-4.6.1.tgz", + "integrity": "sha1-U8y6BH0G4VjTEfRdpiX05J5vFm4=", + "dev": true + }, + "lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", + "dev": true + }, + "lodash.transform": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.transform/-/lodash.transform-4.6.0.tgz", + "integrity": "sha1-EjBkIvYzJK7YSD0/ODMrX2cFR6A=", + "dev": true + }, + "lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", + "dev": true + }, + "log-symbols": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", + "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", + "dev": true, + "requires": { + "chalk": "^2.0.1" + } + }, + "log-update": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-2.3.0.tgz", + "integrity": "sha1-iDKP19HOeTiykoN0bwsbwSayRwg=", + "dev": true, + "requires": { + "ansi-escapes": "^3.0.0", + "cli-cursor": "^2.0.0", + "wrap-ansi": "^3.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "wrap-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-3.0.1.tgz", + "integrity": "sha1-KIoE2H7aXChuBg3+jxNc6NAH+Lo=", + "dev": true, + "requires": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0" + } + } + } + }, + "loglevel": { + "version": "1.6.8", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.8.tgz", + "integrity": "sha512-bsU7+gc9AJ2SqpzxwU3+1fedl8zAntbtC5XYlt3s2j1hJcn2PsXSmgN8TaLG/J1/2mod4+cE/3vNL70/c1RNCA==", + "dev": true + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dev": true, + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "loud-rejection": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", + "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "requires": { + "currently-unhandled": "^0.4.1", + "signal-exit": "^3.0.0" + } + }, + "lower-case": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", + "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=", + "dev": true + }, + "lower-case-first": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/lower-case-first/-/lower-case-first-1.0.2.tgz", + "integrity": "sha1-5dp8JvKacHO+AtUrrJmA5ZIq36E=", + "dev": true, + "requires": { + "lower-case": "^1.1.2" + } + }, + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "make-dir": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", + "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "dev": true, + "requires": { + "pify": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, + "make-iterator": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz", + "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==", + "dev": true, + "requires": { + "kind-of": "^6.0.2" + } + }, + "makeerror": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", + "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=", + "dev": true, + "requires": { + "tmpl": "1.0.x" + } + }, + "map-age-cleaner": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", + "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "dev": true, + "requires": { + "p-defer": "^1.0.0" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true + }, + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=" + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "requires": { + "object-visit": "^1.0.0" + } + }, + "markdown-it": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-8.4.2.tgz", + "integrity": "sha512-GcRz3AWTqSUphY3vsUqQSFMbgR38a4Lh3GWlHRh/7MRwz8mcu9n2IO7HOh+bXHrR9kOPDl5RNCaEsrneb+xhHQ==", + "requires": { + "argparse": "^1.0.7", + "entities": "~1.1.1", + "linkify-it": "^2.0.0", + "mdurl": "^1.0.1", + "uc.micro": "^1.0.5" + } + }, + "matcher": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/matcher/-/matcher-1.1.1.tgz", + "integrity": "sha512-+BmqxWIubKTRKNWx/ahnCkk3mG8m7OturVlqq6HiojGJTd5hVYbgZm6WzcYPCoB+KBT4Vd6R7WSRG2OADNaCjg==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.4" + } + }, + "math-random": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.4.tgz", + "integrity": "sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A==", + "dev": true + }, + "md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "mdn-data": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-1.1.4.tgz", + "integrity": "sha512-FSYbp3lyKjyj3E7fMl6rYvUdX0FBXaluGqlFoYESWQlyUTq8R+wp0rkFxoYFqZlHCvsUXGjyJmLQSnXToYhOSA==", + "dev": true + }, + "mdurl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", + "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=" + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "dev": true + }, + "mem": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", + "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "meow": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", + "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "requires": { + "camelcase-keys": "^2.0.0", + "decamelize": "^1.1.2", + "loud-rejection": "^1.0.0", + "map-obj": "^1.0.1", + "minimist": "^1.1.3", + "normalize-package-data": "^2.3.4", + "object-assign": "^4.0.1", + "read-pkg-up": "^1.0.1", + "redent": "^1.0.0", + "trim-newlines": "^1.0.0" + } + }, + "merge": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/merge/-/merge-1.2.1.tgz", + "integrity": "sha512-VjFo4P5Whtj4vsLzsYBu5ayHhoHJ0UqNm7ibvShmbmoz7tGi0vXaoJbGdB+GmDMLUdg8DpQXEIeVDAe8MaABvQ==", + "dev": true + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", + "dev": true + }, + "merge-options": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-options/-/merge-options-1.0.1.tgz", + "integrity": "sha512-iuPV41VWKWBIOpBsjoxjDZw8/GbSfZ2mk7N1453bwMrfzdrIk7EzBd+8UVR6rkw67th7xnk9Dytl3J+lHPdxvg==", + "dev": true, + "requires": { + "is-plain-obj": "^1.1" + } + }, + "merge-source-map": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz", + "integrity": "sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==", + "dev": true, + "requires": { + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "merge-stream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-1.0.1.tgz", + "integrity": "sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=", + "dev": true, + "requires": { + "readable-stream": "^2.0.1" + } + }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "dev": true + }, + "microargs": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/microargs/-/microargs-1.1.2.tgz", + "integrity": "sha512-fUrX9ozzzUX6JlDoNXmUM5i4B0uBF5xPznZ0Y/izM9wOtAaTf44V2vUCRgGBLUq/SeGIcDgfnEZDVoT92HId0g==", + "dev": true + }, + "microcli": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/microcli/-/microcli-1.3.3.tgz", + "integrity": "sha512-1isRaEBpfRC8vJMJymKknAH8CdPFABuWPVc18rlRWHOCcHLYEkJxcoH7FNkX7AuTGrB4Uf1ve6B0s/FfwzGWKg==", + "dev": true, + "requires": { + "lodash": "4.17.11", + "microargs": "1.1.2" + }, + "dependencies": { + "lodash": { + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", + "dev": true + } + } + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } + } + }, + "mime": { + "version": "2.4.6", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.6.tgz", + "integrity": "sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA==", + "dev": true + }, + "mime-db": { + "version": "1.44.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", + "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==" + }, + "mime-types": { + "version": "2.1.27", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", + "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", + "requires": { + "mime-db": "1.44.0" + } + }, + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==" + }, + "mini-css-extract-plugin": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.5.0.tgz", + "integrity": "sha512-IuaLjruM0vMKhUUT51fQdQzBYTX49dLj8w68ALEAe2A4iYNpIC4eMac67mt3NzycvjOlf07/kYxJDc0RTl1Wqw==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "schema-utils": "^1.0.0", + "webpack-sources": "^1.1.0" + }, + "dependencies": { + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + } + } + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + }, + "mississippi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", + "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", + "dev": true, + "requires": { + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^3.0.0", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" + } + }, + "mitt": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/mitt/-/mitt-1.1.2.tgz", + "integrity": "sha1-OA5hSA1qYVtmDwertg1R4KTkvtY=", + "dev": true + }, + "mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "dev": true, + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "requires": { + "minimist": "^1.2.5" + } + }, + "mockjs": { + "version": "1.0.1-beta3", + "resolved": "https://registry.npmjs.org/mockjs/-/mockjs-1.0.1-beta3.tgz", + "integrity": "sha1-0jTzwnJWOXVk8slVFC6JGQlTcgk=", + "dev": true, + "requires": { + "commander": "*" + } + }, + "monaco-editor": { + "version": "0.20.0", + "resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.20.0.tgz", + "integrity": "sha512-hkvf4EtPJRMQlPC3UbMoRs0vTAFAYdzFQ+gpMb8A+9znae1c43q8Mab9iVsgTcg/4PNiLGGn3SlDIa8uvK1FIQ==" + }, + "monaco-editor-webpack-plugin": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/monaco-editor-webpack-plugin/-/monaco-editor-webpack-plugin-1.9.0.tgz", + "integrity": "sha512-tOiiToc94E1sb50BgZ8q8WK/bxus77SRrwCqIpAB5er3cpX78SULbEBY4YPOB8kDolOzKRt30WIHG/D6gz69Ww==", + "dev": true, + "requires": { + "loader-utils": "^1.2.3" + } + }, + "move-concurrently": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", + "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", + "dev": true, + "requires": { + "aproba": "^1.1.1", + "copy-concurrently": "^1.0.0", + "fs-write-stream-atomic": "^1.0.8", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.3" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "multicast-dns": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", + "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", + "dev": true, + "requires": { + "dns-packet": "^1.3.1", + "thunky": "^1.0.2" + } + }, + "multicast-dns-service-types": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", + "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=", + "dev": true + }, + "mute-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", + "dev": true + }, + "nan": { + "version": "2.14.1", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.1.tgz", + "integrity": "sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw==" + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + } + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "negotiator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", + "dev": true + }, + "neo-async": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", + "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==", + "dev": true + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "no-case": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", + "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", + "dev": true, + "requires": { + "lower-case": "^1.1.1" + } + }, + "node-cache": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/node-cache/-/node-cache-4.2.1.tgz", + "integrity": "sha512-BOb67bWg2dTyax5kdef5WfU3X8xu4wPg+zHzkvls0Q/QpYycIFRLEEIdAx9Wma43DxG6Qzn4illdZoYseKWa4A==", + "dev": true, + "requires": { + "clone": "2.x", + "lodash": "^4.17.15" + }, + "dependencies": { + "clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", + "dev": true + } + } + }, + "node-forge": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.9.0.tgz", + "integrity": "sha512-7ASaDa3pD+lJ3WvXFsxekJQelBKRpne+GOVbLbtHYdd7pFspyeuJHnWfLplGf3SwKGbfs/aYl5V/JCIaHVUKKQ==", + "dev": true + }, + "node-gyp": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.8.0.tgz", + "integrity": "sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA==", + "requires": { + "fstream": "^1.0.0", + "glob": "^7.0.3", + "graceful-fs": "^4.1.2", + "mkdirp": "^0.5.0", + "nopt": "2 || 3", + "npmlog": "0 || 1 || 2 || 3 || 4", + "osenv": "0", + "request": "^2.87.0", + "rimraf": "2", + "semver": "~5.3.0", + "tar": "^2.0.0", + "which": "1" + }, + "dependencies": { + "semver": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=" + } + } + }, + "node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", + "dev": true + }, + "node-ipc": { + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/node-ipc/-/node-ipc-9.1.1.tgz", + "integrity": "sha512-FAyICv0sIRJxVp3GW5fzgaf9jwwRQxAKDJlmNFUL5hOy+W4X/I5AypyHoq0DXXbo9o/gt79gj++4cMr4jVWE/w==", + "dev": true, + "requires": { + "event-pubsub": "4.3.0", + "js-message": "1.0.5", + "js-queue": "2.0.0" + } + }, + "node-libs-browser": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", + "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", + "dev": true, + "requires": { + "assert": "^1.1.1", + "browserify-zlib": "^0.2.0", + "buffer": "^4.3.0", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.11.0", + "domain-browser": "^1.1.1", + "events": "^3.0.0", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", + "path-browserify": "0.0.1", + "process": "^0.11.10", + "punycode": "^1.2.4", + "querystring-es3": "^0.2.0", + "readable-stream": "^2.3.3", + "stream-browserify": "^2.0.1", + "stream-http": "^2.7.2", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", + "tty-browserify": "0.0.0", + "url": "^0.11.0", + "util": "^0.11.0", + "vm-browserify": "^1.0.1" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + } + } + }, + "node-modules-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz", + "integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=", + "dev": true + }, + "node-notifier": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.4.3.tgz", + "integrity": "sha512-M4UBGcs4jeOK9CjTsYwkvH6/MzuUmGCyTW+kCY7uO+1ZVr0+FHGdPdIf5CCLqAaxnRrWidyoQlNkMIIVwbKB8Q==", + "dev": true, + "requires": { + "growly": "^1.3.0", + "is-wsl": "^1.1.0", + "semver": "^5.5.0", + "shellwords": "^0.1.1", + "which": "^1.3.0" + } + }, + "node-plop": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/node-plop/-/node-plop-0.18.0.tgz", + "integrity": "sha512-in7Cg3wJ/1a1NFvCoqxEuEDZDs3op8A7PghGgwmujsS93o9dZWk0HpZ8wGg4pKw2JB2KBo8xwUMOtEwBUr0sIA==", + "dev": true, + "requires": { + "change-case": "^3.0.1", + "co": "^4.6.0", + "core-js": "^2.4.1", + "del": "^3.0.0", + "globby": "^8.0.0", + "handlebars": "^4.1.0", + "inquirer": "^6.0.0", + "isbinaryfile": "^3.0.2", + "lodash.get": "^4.4.2", + "mkdirp": "^0.5.1", + "pify": "^4.0.0", + "resolve": "^1.2.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, + "del": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/del/-/del-3.0.0.tgz", + "integrity": "sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU=", + "dev": true, + "requires": { + "globby": "^6.1.0", + "is-path-cwd": "^1.0.0", + "is-path-in-cwd": "^1.0.0", + "p-map": "^1.1.1", + "pify": "^3.0.0", + "rimraf": "^2.2.8" + }, + "dependencies": { + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, + "dir-glob": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.0.0.tgz", + "integrity": "sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag==", + "dev": true, + "requires": { + "arrify": "^1.0.1", + "path-type": "^3.0.0" + } + }, + "external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, + "requires": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + } + }, + "globby": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-8.0.2.tgz", + "integrity": "sha512-yTzMmKygLp8RUpG1Ymu2VXPSJQZjNAZPD4ywgYEaG7e4tBJeUQBO8OpXrf1RCNcEs5alsoJYPAMiIHP0cmeC7w==", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "dir-glob": "2.0.0", + "fast-glob": "^2.0.2", + "glob": "^7.1.2", + "ignore": "^3.3.5", + "pify": "^3.0.0", + "slash": "^1.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, + "inquirer": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz", + "integrity": "sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==", + "dev": true, + "requires": { + "ansi-escapes": "^3.2.0", + "chalk": "^2.4.2", + "cli-cursor": "^2.1.0", + "cli-width": "^2.0.0", + "external-editor": "^3.0.3", + "figures": "^2.0.0", + "lodash": "^4.17.12", + "mute-stream": "0.0.7", + "run-async": "^2.2.0", + "rxjs": "^6.4.0", + "string-width": "^2.1.0", + "strip-ansi": "^5.1.0", + "through": "^2.3.6" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "is-path-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", + "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", + "dev": true + }, + "is-path-in-cwd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz", + "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==", + "dev": true, + "requires": { + "is-path-inside": "^1.0.0" + } + }, + "is-path-inside": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", + "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", + "dev": true, + "requires": { + "path-is-inside": "^1.0.1" + } + }, + "p-map": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz", + "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==", + "dev": true + }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "requires": { + "pify": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + } + } + } + } + }, + "node-releases": { + "version": "1.1.58", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.58.tgz", + "integrity": "sha512-NxBudgVKiRh/2aPWMgPR7bPTX0VPmGx5QBwCtdHitnqFE5/O8DeBXuIMH1nwNnw/aMo6AjOrpsHzfY3UbUJ7yg==", + "dev": true + }, + "node-sass": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.14.1.tgz", + "integrity": "sha512-sjCuOlvGyCJS40R8BscF5vhVlQjNN069NtQ1gSxyK1u9iqvn6tf7O1R4GNowVZfiZUCRt5MmMs1xd+4V/7Yr0g==", + "requires": { + "async-foreach": "^0.1.3", + "chalk": "^1.1.1", + "cross-spawn": "^3.0.0", + "gaze": "^1.0.0", + "get-stdin": "^4.0.1", + "glob": "^7.0.3", + "in-publish": "^2.0.0", + "lodash": "^4.17.15", + "meow": "^3.7.0", + "mkdirp": "^0.5.1", + "nan": "^2.13.2", + "node-gyp": "^3.8.0", + "npmlog": "^4.0.0", + "request": "^2.88.0", + "sass-graph": "2.2.5", + "stdout-stream": "^1.4.0", + "true-case-path": "^1.0.2" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "nomnom": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/nomnom/-/nomnom-1.8.1.tgz", + "integrity": "sha1-IVH3Ikcrp55Qp2/BJbuMjy5Nwqc=", + "requires": { + "chalk": "~0.4.0", + "underscore": "~1.6.0" + }, + "dependencies": { + "chalk": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.4.0.tgz", + "integrity": "sha1-UZmj3c0MHv4jvAjBsCewYXbgxk8=", + "requires": { + "ansi-styles": "~1.0.0", + "has-color": "~0.1.0", + "strip-ansi": "~0.1.0" + } + } + } + }, + "nopt": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", + "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", + "requires": { + "abbrev": "1" + } + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", + "dev": true + }, + "normalize-url": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz", + "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==", + "dev": true + }, + "normalize-wheel": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/normalize-wheel/-/normalize-wheel-1.0.1.tgz", + "integrity": "sha1-rsiGr/2wRQcNhWRH32Ls+GFG7EU=" + }, + "normalize.css": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/normalize.css/-/normalize.css-7.0.0.tgz", + "integrity": "sha1-q/sd2CRwZ04DIrU86xqvQSk45L8=" + }, + "npm-path": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/npm-path/-/npm-path-2.0.4.tgz", + "integrity": "sha512-IFsj0R9C7ZdR5cP+ET342q77uSRdtWOlWpih5eC+lu29tIDbNEgDbzgVJ5UFvYHWhxDZ5TFkJafFioO0pPQjCw==", + "dev": true, + "requires": { + "which": "^1.2.10" + } + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "requires": { + "path-key": "^2.0.0" + } + }, + "npm-which": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/npm-which/-/npm-which-3.0.1.tgz", + "integrity": "sha1-kiXybsOihcIJyuZ8OxGmtKtxQKo=", + "dev": true, + "requires": { + "commander": "^2.9.0", + "npm-path": "^2.0.2", + "which": "^1.2.10" + } + }, + "npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "nprogress": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/nprogress/-/nprogress-0.2.0.tgz", + "integrity": "sha1-y480xTIT2JVyP8urkH6UIq28r7E=" + }, + "nth-check": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", + "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", + "dev": true, + "requires": { + "boolbase": "~1.0.0" + } + }, + "num2fraction": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", + "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", + "dev": true + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + }, + "nwsapi": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", + "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==", + "dev": true + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "object-hash": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-1.3.1.tgz", + "integrity": "sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA==", + "dev": true + }, + "object-inspect": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", + "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", + "dev": true + }, + "object-is": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.2.tgz", + "integrity": "sha512-5lHCz+0uufF6wZ7CRFWJN3hp8Jqblpgve06U5CMQ3f//6iDjPr2PEo9MWCjEssDsa+UZEL4PkFpr+BMop6aKzQ==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, + "requires": { + "isobject": "^3.0.0" + } + }, + "object.assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" + } + }, + "object.defaults": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", + "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=", + "dev": true, + "requires": { + "array-each": "^1.0.1", + "array-slice": "^1.0.0", + "for-own": "^1.0.0", + "isobject": "^3.0.0" + }, + "dependencies": { + "for-own": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", + "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", + "dev": true, + "requires": { + "for-in": "^1.0.1" + } + } + } + }, + "object.getownpropertydescriptors": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz", + "integrity": "sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + } + }, + "object.map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz", + "integrity": "sha1-z4Plncj8wK1fQlDh94s7gb2AHTc=", + "dev": true, + "requires": { + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" + }, + "dependencies": { + "for-own": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", + "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", + "dev": true, + "requires": { + "for-in": "^1.0.1" + } + } + } + }, + "object.omit": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", + "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", + "dev": true, + "requires": { + "for-own": "^0.1.4", + "is-extendable": "^0.1.1" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "object.values": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.1.tgz", + "integrity": "sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "function-bind": "^1.1.1", + "has": "^1.0.3" + } + }, + "obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "dev": true + }, + "omelette": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/omelette/-/omelette-0.4.5.tgz", + "integrity": "sha512-b0k9uqwF60u15KmVkneVw96VYRtZu2QCbXUQ26SgdyVUgMBzctzIfhNPKAWl4oqJEKpe52CzBYSS+HIKtiK8sw==", + "dev": true + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "dev": true, + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "open": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-6.4.0.tgz", + "integrity": "sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==", + "dev": true, + "requires": { + "is-wsl": "^1.1.0" + } + }, + "opener": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.1.tgz", + "integrity": "sha512-goYSy5c2UXE4Ra1xixabeVh1guIX/ZV/YokJksb6q2lubWu6UbvPQ20p542/sFIll1nl8JnCyK9oBaOcCWXwvA==", + "dev": true + }, + "opn": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", + "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==", + "dev": true, + "requires": { + "is-wsl": "^1.1.0" + } + }, + "optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + } + }, + "ora": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-3.4.0.tgz", + "integrity": "sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "cli-cursor": "^2.1.0", + "cli-spinners": "^2.0.0", + "log-symbols": "^2.2.0", + "strip-ansi": "^5.2.0", + "wcwidth": "^1.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "original": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz", + "integrity": "sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==", + "dev": true, + "requires": { + "url-parse": "^1.4.3" + } + }, + "os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", + "dev": true + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" + }, + "os-locale": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", + "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", + "requires": { + "execa": "^0.7.0", + "lcid": "^1.0.0", + "mem": "^1.1.0" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" + }, + "osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "p-defer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", + "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", + "dev": true + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" + }, + "p-is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", + "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", + "dev": true + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-map": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", + "dev": true + }, + "p-retry": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-3.0.1.tgz", + "integrity": "sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w==", + "dev": true, + "requires": { + "retry": "^0.12.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + }, + "pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" + }, + "parallel-transform": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz", + "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==", + "dev": true, + "requires": { + "cyclist": "^1.0.1", + "inherits": "^2.0.3", + "readable-stream": "^2.1.5" + } + }, + "param-case": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", + "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=", + "dev": true, + "requires": { + "no-case": "^2.2.0" + } + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + }, + "dependencies": { + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + } + } + }, + "parse-asn1": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.5.tgz", + "integrity": "sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ==", + "dev": true, + "requires": { + "asn1.js": "^4.0.0", + "browserify-aes": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" + } + }, + "parse-filepath": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", + "integrity": "sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=", + "dev": true, + "requires": { + "is-absolute": "^1.0.0", + "map-cache": "^0.2.0", + "path-root": "^0.1.1" + } + }, + "parse-glob": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", + "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", + "dev": true, + "requires": { + "glob-base": "^0.3.0", + "is-dotfile": "^1.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.0" + }, + "dependencies": { + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + } + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "requires": { + "error-ex": "^1.2.0" + } + }, + "parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", + "dev": true + }, + "parse5": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz", + "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==", + "dev": true + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true + }, + "pascal-case": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-2.0.1.tgz", + "integrity": "sha1-LVeNNFX2YNpl7KGO+VtODekSdh4=", + "dev": true, + "requires": { + "camel-case": "^3.0.0", + "upper-case-first": "^1.1.0" + } + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true + }, + "path-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", + "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", + "dev": true + }, + "path-case": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/path-case/-/path-case-2.1.1.tgz", + "integrity": "sha1-lLgDfDctP+KQbkZbtF4l0ibo7qU=", + "dev": true, + "requires": { + "no-case": "^2.2.0" + } + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "dev": true + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "requires": { + "pinkie-promise": "^2.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" + }, + "path-root": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", + "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=", + "dev": true, + "requires": { + "path-root-regex": "^0.1.0" + } + }, + "path-root-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", + "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=", + "dev": true + }, + "path-to-regexp": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-2.4.0.tgz", + "integrity": "sha512-G6zHoVqC6GGTQkZwF4lkuEyMbVOjoBKAEybQUypI1WTkqinCOrq2x6U2+phkJ1XsEMTy4LjtwPI7HW+NVrRR2w==" + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "pbkdf2": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.1.tgz", + "integrity": "sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg==", + "dev": true, + "requires": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" + }, + "picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "dev": true, + "optional": true + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "requires": { + "pinkie": "^2.0.0" + } + }, + "pirates": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz", + "integrity": "sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==", + "dev": true, + "requires": { + "node-modules-regexp": "^1.0.0" + } + }, + "pkg-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", + "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "dev": true, + "requires": { + "find-up": "^2.1.0" + }, + "dependencies": { + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + } + } + }, + "pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-2.0.0.tgz", + "integrity": "sha1-yBmscoBZpGHKscOImivjxJoATX8=", + "dev": true, + "requires": { + "find-up": "^2.1.0" + }, + "dependencies": { + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + } + } + }, + "plantuml-encoder": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/plantuml-encoder/-/plantuml-encoder-1.4.0.tgz", + "integrity": "sha512-sxMwpDw/ySY1WB2CE3+IdMuEcWibJ72DDOsXLkSmEaSzwEUaYBT6DWgOfBiHGCux4q433X6+OEFWjlVqp7gL6g==" + }, + "please-upgrade-node": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz", + "integrity": "sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==", + "dev": true, + "requires": { + "semver-compare": "^1.0.0" + } + }, + "plop": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/plop/-/plop-2.3.0.tgz", + "integrity": "sha512-CfTMYmfeCwlipzVcDWI6edxRwdZx47d8BRL3VSv5g+BB8JcLXaSzATkU0flG/aIVl4cxe1Y0rGkrtPjpDm7ySQ==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "interpret": "^1.2.0", + "liftoff": "^2.5.0", + "minimist": "^1.2.0", + "node-plop": "~0.18.0", + "ora": "^3.0.0", + "v8flags": "^2.0.10" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "pluralize": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz", + "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", + "dev": true, + "optional": true + }, + "pn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", + "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==", + "dev": true + }, + "portfinder": { + "version": "1.0.26", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.26.tgz", + "integrity": "sha512-Xi7mKxJHHMI3rIUrnm/jjUgwhbYMkp/XKEcZX3aG4BrumLpq3nmoQMX+ClYnDZnZ/New7IatC1no5RX0zo1vXQ==", + "dev": true, + "requires": { + "async": "^2.6.2", + "debug": "^3.1.1", + "mkdirp": "^0.5.1" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true + }, + "postcss": { + "version": "7.0.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz", + "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss-calc": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.2.tgz", + "integrity": "sha512-rofZFHUg6ZIrvRwPeFktv06GdbDYLcGqh9EwiMutZg+a0oePCCw1zHOEiji6LCpyRcjTREtPASuUqeAvYlEVvQ==", + "dev": true, + "requires": { + "postcss": "^7.0.27", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.0.2" + } + }, + "postcss-colormin": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-4.0.3.tgz", + "integrity": "sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "color": "^3.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-convert-values": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz", + "integrity": "sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==", + "dev": true, + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-discard-comments": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz", + "integrity": "sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-discard-duplicates": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz", + "integrity": "sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-discard-empty": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz", + "integrity": "sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-discard-overridden": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz", + "integrity": "sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-load-config": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-2.1.0.tgz", + "integrity": "sha512-4pV3JJVPLd5+RueiVVB+gFOAa7GWc25XQcMp86Zexzke69mKf6Nx9LRcQywdz7yZI9n1udOxmLuAwTBypypF8Q==", + "dev": true, + "requires": { + "cosmiconfig": "^5.0.0", + "import-cwd": "^2.0.0" + } + }, + "postcss-loader": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-3.0.0.tgz", + "integrity": "sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "postcss": "^7.0.0", + "postcss-load-config": "^2.0.0", + "schema-utils": "^1.0.0" + }, + "dependencies": { + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + } + } + }, + "postcss-merge-longhand": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz", + "integrity": "sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==", + "dev": true, + "requires": { + "css-color-names": "0.0.4", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "stylehacks": "^4.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-merge-rules": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz", + "integrity": "sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "caniuse-api": "^3.0.0", + "cssnano-util-same-parent": "^4.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0", + "vendors": "^1.0.0" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", + "dev": true, + "requires": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "postcss-minify-font-values": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz", + "integrity": "sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==", + "dev": true, + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-minify-gradients": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz", + "integrity": "sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "is-color-stop": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-minify-params": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz", + "integrity": "sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.0", + "browserslist": "^4.0.0", + "cssnano-util-get-arguments": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "uniqs": "^2.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-minify-selectors": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz", + "integrity": "sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", + "dev": true, + "requires": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "postcss-modules-extract-imports": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.2.1.tgz", + "integrity": "sha512-6jt9XZwUhwmRUhb/CkyJY020PYaPJsCyt3UjbaWo6XEbH/94Hmv6MP7fG2C5NDU/BcHzyGYxNtHvM+LTf9HrYw==", + "dev": true, + "requires": { + "postcss": "^6.0.1" + }, + "dependencies": { + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss-modules-local-by-default": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz", + "integrity": "sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk=", + "dev": true, + "requires": { + "css-selector-tokenizer": "^0.7.0", + "postcss": "^6.0.1" + }, + "dependencies": { + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss-modules-scope": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz", + "integrity": "sha1-1upkmUx5+XtipytCb75gVqGUu5A=", + "dev": true, + "requires": { + "css-selector-tokenizer": "^0.7.0", + "postcss": "^6.0.1" + }, + "dependencies": { + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss-modules-values": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz", + "integrity": "sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA=", + "dev": true, + "requires": { + "icss-replace-symbols": "^1.1.0", + "postcss": "^6.0.1" + }, + "dependencies": { + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss-normalize-charset": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz", + "integrity": "sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-normalize-display-values": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz", + "integrity": "sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==", + "dev": true, + "requires": { + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-normalize-positions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz", + "integrity": "sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-normalize-repeat-style": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz", + "integrity": "sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-normalize-string": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz", + "integrity": "sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==", + "dev": true, + "requires": { + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-normalize-timing-functions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz", + "integrity": "sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==", + "dev": true, + "requires": { + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-normalize-unicode": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz", + "integrity": "sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-normalize-url": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz", + "integrity": "sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==", + "dev": true, + "requires": { + "is-absolute-url": "^2.0.0", + "normalize-url": "^3.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-normalize-whitespace": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz", + "integrity": "sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==", + "dev": true, + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-ordered-values": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz", + "integrity": "sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-prefix-selector": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/postcss-prefix-selector/-/postcss-prefix-selector-1.7.2.tgz", + "integrity": "sha512-ddmzjWNmGs7E/nyolJ021/Gk6oBLRQLyyXKGV4Mu+Y0gquo+XlXSDP0/Y2J8C/cad/GLyftf2H0XtuDFQZxN3w==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-reduce-initial": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz", + "integrity": "sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "caniuse-api": "^3.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0" + } + }, + "postcss-reduce-transforms": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz", + "integrity": "sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==", + "dev": true, + "requires": { + "cssnano-util-get-match": "^4.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-selector-parser": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz", + "integrity": "sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + }, + "postcss-svgo": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.2.tgz", + "integrity": "sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw==", + "dev": true, + "requires": { + "is-svg": "^3.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "svgo": "^1.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-unique-selectors": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz", + "integrity": "sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.0", + "postcss": "^7.0.0", + "uniqs": "^2.0.0" + } + }, + "postcss-value-parser": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz", + "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==", + "dev": true + }, + "posthtml": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/posthtml/-/posthtml-0.9.2.tgz", + "integrity": "sha1-9MBtufZ7Yf0XxOJW5+PZUVv3Jv0=", + "dev": true, + "requires": { + "posthtml-parser": "^0.2.0", + "posthtml-render": "^1.0.5" + } + }, + "posthtml-parser": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/posthtml-parser/-/posthtml-parser-0.2.1.tgz", + "integrity": "sha1-NdUw3jhnQMK6JP8usvrznM3ycd0=", + "dev": true, + "requires": { + "htmlparser2": "^3.8.3", + "isobject": "^2.1.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "posthtml-rename-id": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/posthtml-rename-id/-/posthtml-rename-id-1.0.12.tgz", + "integrity": "sha512-UKXf9OF/no8WZo9edRzvuMenb6AD5hDLzIepJW+a4oJT+T/Lx7vfMYWT4aWlGNQh0WMhnUx1ipN9OkZ9q+ddEw==", + "dev": true, + "requires": { + "escape-string-regexp": "1.0.5" + } + }, + "posthtml-render": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/posthtml-render/-/posthtml-render-1.2.2.tgz", + "integrity": "sha512-MbIXTWwAfJ9qET6Zl29UNwJcDJEEz9Zkr5oDhiujitJa7YBJwEpbkX2cmuklCDxubTMoRWpid3q8DrSyGnUUzQ==", + "dev": true + }, + "posthtml-svg-mode": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/posthtml-svg-mode/-/posthtml-svg-mode-1.0.3.tgz", + "integrity": "sha512-hEqw9NHZ9YgJ2/0G7CECOeuLQKZi8HjWLkBaSVtOWjygQ9ZD8P7tqeowYs7WrFdKsWEKG7o+IlsPY8jrr0CJpQ==", + "dev": true, + "requires": { + "merge-options": "1.0.1", + "posthtml": "^0.9.2", + "posthtml-parser": "^0.2.1", + "posthtml-render": "^1.0.6" + } + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true + }, + "preserve": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", + "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", + "dev": true + }, + "prettier": { + "version": "1.16.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.16.3.tgz", + "integrity": "sha512-kn/GU6SMRYPxUakNXhpP0EedT/KmaPzr0H5lIsDogrykbaxOpOfAFfk5XA7DZrJyMAv1wlMV3CPcZruGXVVUZw==", + "dev": true + }, + "pretty": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pretty/-/pretty-2.0.0.tgz", + "integrity": "sha1-rbx5YLe7/iiaVX3F9zdhmiINBqU=", + "dev": true, + "requires": { + "condense-newlines": "^0.2.1", + "extend-shallow": "^2.0.1", + "js-beautify": "^1.6.12" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "pretty-error": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.1.tgz", + "integrity": "sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM=", + "dev": true, + "requires": { + "renderkid": "^2.0.1", + "utila": "~0.4" + } + }, + "pretty-format": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-23.6.0.tgz", + "integrity": "sha512-zf9NV1NSlDLDjycnwm6hpFATCGl/K1lt0R/GdkAK2O5LN/rwJoB+Mh93gGJjut4YbmecbfgLWVGSTCr0Ewvvbw==", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0", + "ansi-styles": "^3.2.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + } + } + }, + "printj": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/printj/-/printj-1.1.2.tgz", + "integrity": "sha512-zA2SmoLaxZyArQTOPj5LXecR+RagfPSU5Kw1qP+jkWeNlrq+eJZyY2oS68SU1Z/7/myXM4lo9716laOFAVStCQ==" + }, + "private": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", + "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", + "dev": true + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true + }, + "promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", + "dev": true + }, + "prompts": { + "version": "0.1.14", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-0.1.14.tgz", + "integrity": "sha512-rxkyiE9YH6zAz/rZpywySLKkpaj0NMVyNw1qhsubdbjjSgcayjTShDreZGlFMcGSu5sab3bAKPfFk78PB90+8w==", + "dev": true, + "requires": { + "kleur": "^2.0.1", + "sisteransi": "^0.1.1" + } + }, + "property-expr": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/property-expr/-/property-expr-1.5.1.tgz", + "integrity": "sha512-CGuc0VUTGthpJXL36ydB6jnbyOf/rAHFvmVrJlH+Rg0DqqLFQGAP6hIaxD/G0OAmBJPhXDHuEJigrp0e0wFV6g==", + "dev": true + }, + "proto-list": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=", + "dev": true + }, + "proxy-addr": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", + "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", + "dev": true, + "requires": { + "forwarded": "~0.1.2", + "ipaddr.js": "1.9.1" + } + }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", + "dev": true + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" + }, + "psl": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" + }, + "public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } + } + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "dev": true, + "requires": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + }, + "dependencies": { + "pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + } + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + }, + "q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", + "dev": true + }, + "qs": { + "version": "6.9.4", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.4.tgz", + "integrity": "sha512-A1kFqHekCTM7cz0udomYUoYNWjBebHm/5wzU/XqrBRBNWectVH0QIiN+NEcZ0Dte5hvzHwbr8+XQmguPhJ6WdQ==" + }, + "query-string": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", + "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=", + "dev": true, + "requires": { + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + } + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "dev": true + }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", + "dev": true + }, + "querystringify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.1.1.tgz", + "integrity": "sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA==", + "dev": true + }, + "randomatic": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.1.1.tgz", + "integrity": "sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw==", + "dev": true, + "requires": { + "is-number": "^4.0.0", + "kind-of": "^6.0.0", + "math-random": "^1.0.1" + }, + "dependencies": { + "is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "dev": true + } + } + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "dev": true, + "requires": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true + }, + "raphael": { + "version": "git+https://github.com/nhn/raphael.git#78a6ed3ec269f33b6457b0ec66f8c3d1f2ed70e0", + "from": "git+https://github.com/nhn/raphael.git#2.2.0-c", + "requires": { + "eve": "git://github.com/adobe-webplatform/eve.git#eef80ed" + } + }, + "raw-body": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", + "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", + "dev": true, + "requires": { + "bytes": "3.1.0", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + }, + "raw-loader": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-0.5.1.tgz", + "integrity": "sha1-DD0L6u2KAclm2Xh793goElKpeao=" + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "requires": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "requires": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + } + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "readdirp": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.4.0.tgz", + "integrity": "sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ==", + "dev": true, + "optional": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "realpath-native": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/realpath-native/-/realpath-native-1.1.0.tgz", + "integrity": "sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA==", + "dev": true, + "requires": { + "util.promisify": "^1.0.0" + } + }, + "rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "dev": true, + "requires": { + "resolve": "^1.1.6" + } + }, + "redent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", + "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", + "requires": { + "indent-string": "^2.1.0", + "strip-indent": "^1.0.1" + } + }, + "regenerate": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.1.tgz", + "integrity": "sha512-j2+C8+NtXQgEKWk49MMP5P/u2GhnahTtVkRIHr5R5lVRlbKvmQ+oS+A5aLKWp2ma5VkT8sh6v+v4hbH0YHR66A==", + "dev": true + }, + "regenerate-unicode-properties": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", + "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", + "dev": true, + "requires": { + "regenerate": "^1.4.0" + } + }, + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" + }, + "regenerator-transform": { + "version": "0.14.4", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.4.tgz", + "integrity": "sha512-EaJaKPBI9GvKpvUz2mz4fhx7WPgvwRLY9v3hlNHWmAuJHI13T4nwKnNvm5RWJzEdnI5g5UwtOww+S8IdoUC2bw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.8.4", + "private": "^0.1.8" + } + }, + "regex-cache": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", + "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", + "dev": true, + "requires": { + "is-equal-shallow": "^0.1.3" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, + "regexp.prototype.flags": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz", + "integrity": "sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + } + }, + "regexpp": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-1.1.0.tgz", + "integrity": "sha512-LOPw8FpgdQF9etWMaAfG/WRthIdXJGYp4mJ2Jgn/2lpkbod9jPn0t9UqN7AxBOKNfzRbYyVfgc7Vk4t/MpnXgw==", + "dev": true, + "optional": true + }, + "regexpu-core": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.0.tgz", + "integrity": "sha512-TQ4KXRnIn6tz6tjnrXEkD/sshygKH/j5KzK86X8MkeHyZ8qst/LZ89j3X4/8HEIfHANTFIP/AbXakeRhWIl5YQ==", + "dev": true, + "requires": { + "regenerate": "^1.4.0", + "regenerate-unicode-properties": "^8.2.0", + "regjsgen": "^0.5.1", + "regjsparser": "^0.6.4", + "unicode-match-property-ecmascript": "^1.0.4", + "unicode-match-property-value-ecmascript": "^1.2.0" + } + }, + "regjsgen": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", + "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", + "dev": true + }, + "regjsparser": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.4.tgz", + "integrity": "sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw==", + "dev": true, + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + } + } + }, + "relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", + "dev": true + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "renderkid": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.3.tgz", + "integrity": "sha512-z8CLQp7EZBPCwCnncgf9C4XAi3WR0dv+uWu/PjIyhhAb5d6IJ/QZqlHFprHeKT+59//V6BNUsLbvN8+2LarxGA==", + "dev": true, + "requires": { + "css-select": "^1.1.0", + "dom-converter": "^0.2", + "htmlparser2": "^3.3.0", + "strip-ansi": "^3.0.0", + "utila": "^0.4.0" + }, + "dependencies": { + "css-select": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", + "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", + "dev": true, + "requires": { + "boolbase": "~1.0.0", + "css-what": "2.1", + "domutils": "1.5.1", + "nth-check": "~1.0.1" + } + }, + "css-what": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz", + "integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==", + "dev": true + }, + "domutils": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", + "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", + "dev": true, + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "repeat-element": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", + "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "requires": { + "is-finite": "^1.0.0" + } + }, + "request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "dependencies": { + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" + } + } + }, + "request-promise-core": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.3.tgz", + "integrity": "sha512-QIs2+ArIGQVp5ZYbWD5ZLCY29D5CfWizP8eWnm8FoGD1TX61veauETVQbrV60662V0oFBkrDOuaBI8XgtuyYAQ==", + "dev": true, + "requires": { + "lodash": "^4.17.15" + } + }, + "request-promise-native": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.8.tgz", + "integrity": "sha512-dapwLGqkHtwL5AEbfenuzjTYg35Jd6KPytsC2/TLkVMz8rm+tNt72MGUWT1RP/aYawMpN6HqbNGBQaRcBtjQMQ==", + "dev": true, + "requires": { + "request-promise-core": "1.1.3", + "stealthy-require": "^1.1.1", + "tough-cookie": "^2.3.3" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" + }, + "require-uncached": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", + "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", + "dev": true, + "optional": true, + "requires": { + "caller-path": "^0.1.0", + "resolve-from": "^1.0.0" + } + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", + "dev": true + }, + "reselect": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/reselect/-/reselect-3.0.1.tgz", + "integrity": "sha1-79qpjqdFEyTQkrKyFjpqHXqaIUc=", + "dev": true + }, + "resize-observer-polyfill": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz", + "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==" + }, + "resolve": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", + "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "requires": { + "path-parse": "^1.0.6" + } + }, + "resolve-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", + "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", + "dev": true, + "requires": { + "resolve-from": "^3.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true + } + } + }, + "resolve-dir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", + "dev": true, + "requires": { + "expand-tilde": "^2.0.0", + "global-modules": "^1.0.0" + } + }, + "resolve-from": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", + "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=", + "dev": true, + "optional": true + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true + }, + "restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "dev": true, + "requires": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + } + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true + }, + "retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", + "dev": true + }, + "rgb-regex": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz", + "integrity": "sha1-wODWiC3w4jviVKR16O3UGRX+rrE=", + "dev": true + }, + "rgba-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz", + "integrity": "sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=", + "dev": true + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "requires": { + "glob": "^7.1.3" + } + }, + "ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "rsvp": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-3.6.2.tgz", + "integrity": "sha512-OfWGQTb9vnwRjwtA2QwpG2ICclHC3pgXZO5xt8H2EfgDquO0qVdSb5T88L4qJVAEugbS56pAuV4XZM58UX8ulw==", + "dev": true + }, + "run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "dev": true + }, + "run-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/run-node/-/run-node-1.0.0.tgz", + "integrity": "sha512-kc120TBlQ3mih1LSzdAJXo4xn/GWS2ec0l3S+syHDXP9uRr0JAT8Qd3mdMuyjqCzeZktgP3try92cEgf9Nks8A==", + "dev": true + }, + "run-queue": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", + "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", + "dev": true, + "requires": { + "aproba": "^1.1.1" + } + }, + "runjs": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/runjs/-/runjs-4.4.2.tgz", + "integrity": "sha512-/DB54HRJnxfGA/a9QLZMyAn8H84SMt8oVGF7Vz+OS4BMCve312DXNRpy6Z8yohLuoMctoalXQtvmpd2ChQYD4Q==", + "dev": true, + "requires": { + "chalk": "2.3.0", + "lodash.padend": "4.6.1", + "microcli": "1.3.3", + "omelette": "0.4.5" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", + "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", + "dev": true, + "requires": { + "ansi-styles": "^3.1.0", + "escape-string-regexp": "^1.0.5", + "supports-color": "^4.0.0" + } + }, + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", + "dev": true + }, + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "dev": true, + "requires": { + "has-flag": "^2.0.0" + } + } + } + }, + "rx-lite": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz", + "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=", + "dev": true, + "optional": true + }, + "rx-lite-aggregates": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz", + "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=", + "dev": true, + "optional": true, + "requires": { + "rx-lite": "*" + } + }, + "rxjs": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.5.tgz", + "integrity": "sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, + "requires": { + "ret": "~0.1.10" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "sane": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/sane/-/sane-2.5.2.tgz", + "integrity": "sha1-tNwYYcIbQn6SlQej51HiosuKs/o=", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "capture-exit": "^1.2.0", + "exec-sh": "^0.2.0", + "fb-watchman": "^2.0.0", + "fsevents": "^1.2.3", + "micromatch": "^3.1.4", + "minimist": "^1.1.1", + "walker": "~1.0.5", + "watch": "~0.18.0" + }, + "dependencies": { + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "dev": true, + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "sass-graph": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.5.tgz", + "integrity": "sha512-VFWDAHOe6mRuT4mZRd4eKE+d8Uedrk6Xnh7Sh9b4NGufQLQjOrvf/MQoOdx+0s92L89FeyUUNfU597j/3uNpag==", + "requires": { + "glob": "^7.0.0", + "lodash": "^4.0.0", + "scss-tokenizer": "^0.2.3", + "yargs": "^13.3.2" + } + }, + "sass-loader": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-7.3.1.tgz", + "integrity": "sha512-tuU7+zm0pTCynKYHpdqaPpe+MMTQ76I9TPZ7i4/5dZsigE350shQWe5EZNl5dBidM49TPET75tNqRbcsUZWeNA==", + "dev": true, + "requires": { + "clone-deep": "^4.0.1", + "loader-utils": "^1.0.1", + "neo-async": "^2.5.0", + "pify": "^4.0.1", + "semver": "^6.3.0" + }, + "dependencies": { + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + }, + "schema-utils": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz", + "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.4", + "ajv": "^6.12.2", + "ajv-keywords": "^3.4.1" + } + }, + "screenfull": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/screenfull/-/screenfull-4.2.0.tgz", + "integrity": "sha512-qpyI9XbwuMJElWRP5vTgxkFAl4k7HpyhIqBFOZEwX9QBXn0MAuRSpn7LOc6/4CeSwoz61oBu1VPV+2fbIWC+5Q==" + }, + "script-ext-html-webpack-plugin": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/script-ext-html-webpack-plugin/-/script-ext-html-webpack-plugin-2.1.3.tgz", + "integrity": "sha512-a/gqxJFw2IAs8LK/ZFBKv1YoeFysbntdiLBVdNfgHgMKWW1mMcRGY6Hm3aihSaY9tqqhcaXuQJ4nn19loNbkuQ==", + "dev": true, + "requires": { + "debug": "^4.1.0" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "script-loader": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/script-loader/-/script-loader-0.7.2.tgz", + "integrity": "sha512-UMNLEvgOAQuzK8ji8qIscM3GIrRCWN6MmMXGD4SD5l6cSycgGsCo0tX5xRnfQcoghqct0tjHjcykgI1PyBE2aA==", + "requires": { + "raw-loader": "~0.5.1" + } + }, + "scss-tokenizer": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz", + "integrity": "sha1-jrBtualyMzOCTT9VMGQRSYR85dE=", + "requires": { + "js-base64": "^2.1.8", + "source-map": "^0.4.2" + } + }, + "select": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/select/-/select-1.1.2.tgz", + "integrity": "sha1-DnNQrN7ICxEIUoeG7B1EGNEbOW0=" + }, + "select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", + "dev": true + }, + "selfsigned": { + "version": "1.10.7", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.7.tgz", + "integrity": "sha512-8M3wBCzeWIJnQfl43IKwOmC4H/RAp50S8DF60znzjW5GVqTcSe2vWclt7hmYVPkKPlHWOu5EaWOMZ2Y6W8ZXTA==", + "dev": true, + "requires": { + "node-forge": "0.9.0" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + }, + "semver-compare": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", + "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=", + "dev": true + }, + "send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "dev": true, + "requires": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.7.2", + "mime": "1.6.0", + "ms": "2.1.1", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + } + } + }, + "sentence-case": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/sentence-case/-/sentence-case-2.1.1.tgz", + "integrity": "sha1-H24t2jnBaL+S0T+G1KkYkz9mftQ=", + "dev": true, + "requires": { + "no-case": "^2.2.0", + "upper-case-first": "^1.1.2" + } + }, + "serialize-javascript": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-3.1.0.tgz", + "integrity": "sha512-JIJT1DGiWmIKhzRsG91aS6Ze4sFUrYbltlkg2onR5OrnNM02Kl/hnY/T4FN2omvyeBbQmMJv+K4cPOpGzOTFBg==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + }, + "serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", + "dev": true, + "requires": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + } + } + }, + "serve-static": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", + "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", + "dev": true, + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.1" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + }, + "set-immediate-shim": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", + "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=" + }, + "set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", + "dev": true + }, + "setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", + "dev": true + }, + "sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "requires": { + "kind-of": "^6.0.2" + } + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" + }, + "shell-quote": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.2.tgz", + "integrity": "sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg==", + "dev": true + }, + "shellwords": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", + "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", + "dev": true + }, + "showdown": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/showdown/-/showdown-1.9.0.tgz", + "integrity": "sha512-x7xDCRIaOlicbC57nMhGfKamu+ghwsdVkHMttyn+DelwzuHOx4OHCVL/UW/2QOLH7BxfCcCCVVUix3boKXJKXQ==", + "requires": { + "yargs": "^10.0.3" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + }, + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" + }, + "cliui": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "requires": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "requires": { + "locate-path": "^2.0.0" + } + }, + "get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==" + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=" + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=" + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=" + }, + "yargs": { + "version": "10.1.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-10.1.2.tgz", + "integrity": "sha512-ivSoxqBGYOqQVruxD35+EyCFDYNEFL/Uo6FcOnz+9xZdZzK0Zzw4r4KhbrME1Oo2gOggwJod2MnsdamSG7H9ig==", + "requires": { + "cliui": "^4.0.0", + "decamelize": "^1.1.1", + "find-up": "^2.1.0", + "get-caller-file": "^1.0.1", + "os-locale": "^2.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^8.1.0" + } + }, + "yargs-parser": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-8.1.0.tgz", + "integrity": "sha512-yP+6QqN8BmrgW2ggLtTbdrOyBNSI7zBa4IykmiV5R1wl1JWNxQvWhMfMdmzIYtKU7oP3OOInY/tl2ov3BDjnJQ==", + "requires": { + "camelcase": "^4.1.0" + } + } + } + }, + "sigmund": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", + "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=", + "dev": true + }, + "signal-exit": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==" + }, + "simple-git": { + "version": "1.132.0", + "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-1.132.0.tgz", + "integrity": "sha512-xauHm1YqCTom1sC9eOjfq3/9RKiUA9iPnxBbrY2DdL8l4ADMu0jjM5l5lphQP5YWNqAL2aXC/OeuQ76vHtW5fg==", + "dev": true, + "requires": { + "debug": "^4.0.1" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", + "dev": true, + "requires": { + "is-arrayish": "^0.3.1" + }, + "dependencies": { + "is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", + "dev": true + } + } + }, + "sisteransi": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-0.1.1.tgz", + "integrity": "sha512-PmGOd02bM9YO5ifxpw36nrNMBTptEtfRl4qUYl9SndkolplkrZZOW7PGHjrZL53QvMVj9nQ+TKqUnRsw4tJa4g==", + "dev": true + }, + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true + }, + "slice-ansi": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz", + "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==", + "dev": true, + "optional": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true, + "optional": true + } + } + }, + "snake-case": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-2.1.0.tgz", + "integrity": "sha1-Qb2xtz8w7GagTU4srRt2OH1NbZ8=", + "dev": true, + "requires": { + "no-case": "^2.2.0" + } + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "requires": { + "kind-of": "^3.2.0" + }, + "dependencies": { + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "sockjs": { + "version": "0.3.20", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.20.tgz", + "integrity": "sha512-SpmVOVpdq0DJc0qArhF3E5xsxvaiqGNb73XfgBpK1y3UD5gs8DSo8aCTsuT5pX8rssdc2NDIzANwP9eCAiSdTA==", + "dev": true, + "requires": { + "faye-websocket": "^0.10.0", + "uuid": "^3.4.0", + "websocket-driver": "0.6.5" + } + }, + "sockjs-client": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.4.0.tgz", + "integrity": "sha512-5zaLyO8/nri5cua0VtOrFXBPK1jbL4+1cebT/mmKA1E1ZXOvJrII75bPu0l0k843G/+iAbhEqzyKr0w/eCCj7g==", + "dev": true, + "requires": { + "debug": "^3.2.5", + "eventsource": "^1.0.7", + "faye-websocket": "~0.11.1", + "inherits": "^2.0.3", + "json3": "^3.3.2", + "url-parse": "^1.4.3" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "faye-websocket": { + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz", + "integrity": "sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==", + "dev": true, + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "sortablejs": { + "version": "1.8.4", + "resolved": "https://registry.npmjs.org/sortablejs/-/sortablejs-1.8.4.tgz", + "integrity": "sha512-Brqnzelu1AhFuc0Fn3N/qFex1tlIiuQIUsfu2J8luJ4cRgXYkWrByxa+y5mWEBlj8A0YoABukflIJwvHyrwJ6Q==" + }, + "source-list-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", + "dev": true + }, + "source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "requires": { + "amdefine": ">=0.0.4" + } + }, + "source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "dev": true, + "requires": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-support": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "dev": true + }, + "spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==" + }, + "spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", + "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==" + }, + "spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.0" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + }, + "squire-rte": { + "version": "github:sohee-lee7/Squire#b1e0e1031fa18912d233c204cbe7c7fae4a42621", + "from": "github:sohee-lee7/Squire#b1e0e1031fa18912d233c204cbe7c7fae4a42621" + }, + "ssf": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/ssf/-/ssf-0.10.3.tgz", + "integrity": "sha512-pRuUdW0WwyB2doSqqjWyzwCD6PkfxpHAHdZp39K3dp/Hq7f+xfMwNAWIi16DyrRg4gg9c/RvLYkJTSawTPTm1w==", + "requires": { + "frac": "~1.1.2" + } + }, + "sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, + "ssri": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", + "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1" + } + }, + "stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", + "dev": true + }, + "stack-utils": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.2.tgz", + "integrity": "sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA==", + "dev": true + }, + "stackframe": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.2.0.tgz", + "integrity": "sha512-GrdeshiRmS1YLMYgzF16olf2jJ/IzxXY9lhKOskuVziubpTYcYqyOwYeJKzQkwy7uN0fYSsbsC4RQaXf9LCrYA==", + "dev": true + }, + "staged-git-files": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/staged-git-files/-/staged-git-files-1.1.2.tgz", + "integrity": "sha512-0Eyrk6uXW6tg9PYkhi/V/J4zHp33aNyi2hOCmhFLqLTIhbgqWn5jlSzI+IU0VqrZq6+DbHcabQl/WP6P3BG0QA==", + "dev": true + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "dev": true + }, + "stdout-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.1.tgz", + "integrity": "sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA==", + "requires": { + "readable-stream": "^2.0.1" + } + }, + "stealthy-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", + "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", + "dev": true + }, + "stream-browserify": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", + "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", + "dev": true, + "requires": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + } + }, + "stream-each": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", + "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "stream-shift": "^1.0.0" + } + }, + "stream-http": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", + "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", + "dev": true, + "requires": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + } + }, + "stream-shift": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", + "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", + "dev": true + }, + "strict-uri-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", + "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=", + "dev": true + }, + "string-argv": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.0.2.tgz", + "integrity": "sha1-2sMECGkMIfPDYwo/86BYd73L1zY=", + "dev": true + }, + "string-length": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-2.0.0.tgz", + "integrity": "sha1-1A27aGo6zpYMHP/KVivyxF+DY+0=", + "dev": true, + "requires": { + "astral-regex": "^1.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + }, + "dependencies": { + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "string.prototype.padend": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.0.tgz", + "integrity": "sha512-3aIv8Ffdp8EZj8iLwREGpQaUZiPyrWrpzMBHvkiSW/bK/EGve9np07Vwy7IJ5waydpGXzQZu/F8Oze2/IWkBaA==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + } + }, + "string.prototype.padstart": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string.prototype.padstart/-/string.prototype.padstart-3.1.0.tgz", + "integrity": "sha512-envqZvUp2JItI+OeQ5UAh1ihbAV5G/2bixTojvlIa090GGqF+NQRxbWb2nv9fTGrZABv6+pE6jXoAZhhS2k4Hw==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + } + }, + "string.prototype.trimend": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", + "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "string.prototype.trimstart": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz", + "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "stringify-object": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", + "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", + "dev": true, + "requires": { + "get-own-enumerable-property-symbols": "^3.0.0", + "is-obj": "^1.0.1", + "is-regexp": "^1.0.0" + }, + "dependencies": { + "is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", + "dev": true + } + } + }, + "strip-ansi": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.1.1.tgz", + "integrity": "sha1-OeipjQRNFQZgq+SmgIrPcLt7yZE=" + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "requires": { + "is-utf8": "^0.2.0" + } + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" + }, + "strip-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", + "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", + "requires": { + "get-stdin": "^4.0.1" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true + }, + "stylehacks": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz", + "integrity": "sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", + "dev": true, + "requires": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + }, + "svg-baker": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/svg-baker/-/svg-baker-1.7.0.tgz", + "integrity": "sha512-nibslMbkXOIkqKVrfcncwha45f97fGuAOn1G99YwnwTj8kF9YiM6XexPcUso97NxOm6GsP0SIvYVIosBis1xLg==", + "dev": true, + "requires": { + "bluebird": "^3.5.0", + "clone": "^2.1.1", + "he": "^1.1.1", + "image-size": "^0.5.1", + "loader-utils": "^1.1.0", + "merge-options": "1.0.1", + "micromatch": "3.1.0", + "postcss": "^5.2.17", + "postcss-prefix-selector": "^1.6.0", + "posthtml-rename-id": "^1.0", + "posthtml-svg-mode": "^1.0.3", + "query-string": "^4.3.2", + "traverse": "^0.6.6" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", + "dev": true + }, + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + }, + "dependencies": { + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + } + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + }, + "dependencies": { + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + } + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + } + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + }, + "micromatch": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.0.tgz", + "integrity": "sha512-3StSelAE+hnRvMs8IdVW7Uhk8CVed5tp+kLLGlBP6WiRAXS21GPGu/Nat4WNPXj2Eoc24B02SaeoyozPMfj0/g==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.2.2", + "define-property": "^1.0.0", + "extend-shallow": "^2.0.1", + "extglob": "^2.0.2", + "fragment-cache": "^0.2.1", + "kind-of": "^5.0.2", + "nanomatch": "^1.2.1", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + } + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "svg-baker-runtime": { + "version": "1.4.7", + "resolved": "https://registry.npmjs.org/svg-baker-runtime/-/svg-baker-runtime-1.4.7.tgz", + "integrity": "sha512-Zorfwwj5+lWjk/oxwSMsRdS2sPQQdTmmsvaSpzU+i9ZWi3zugHLt6VckWfnswphQP0LmOel3nggpF5nETbt6xw==", + "dev": true, + "requires": { + "deepmerge": "1.3.2", + "mitt": "1.1.2", + "svg-baker": "^1.7.0" + }, + "dependencies": { + "deepmerge": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-1.3.2.tgz", + "integrity": "sha1-FmNpFinU2/42T6EqKk8KqGqjoFA=", + "dev": true + } + } + }, + "svg-sprite-loader": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/svg-sprite-loader/-/svg-sprite-loader-4.1.3.tgz", + "integrity": "sha512-lOLDSJoyriYnOeGYc7nhxTDYj2vfdBVKpxIS/XK70//kA3VB55H89T1lct2OEClY4w5kQLZJAvDGQ41g3YTogQ==", + "dev": true, + "requires": { + "bluebird": "^3.5.0", + "deepmerge": "1.3.2", + "domready": "1.0.8", + "escape-string-regexp": "1.0.5", + "html-webpack-plugin": "^3.2.0", + "loader-utils": "^1.1.0", + "svg-baker": "^1.4.0", + "svg-baker-runtime": "^1.4.0", + "url-slug": "2.0.0" + }, + "dependencies": { + "deepmerge": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-1.3.2.tgz", + "integrity": "sha1-FmNpFinU2/42T6EqKk8KqGqjoFA=", + "dev": true + } + } + }, + "svg-tags": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz", + "integrity": "sha1-WPcc7jvVGbWdSyqEO2x95krAR2Q=", + "dev": true + }, + "svgo": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.2.0.tgz", + "integrity": "sha512-xBfxJxfk4UeVN8asec9jNxHiv3UAMv/ujwBWGYvQhhMb2u3YTGKkiybPcLFDLq7GLLWE9wa73e0/m8L5nTzQbw==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "coa": "^2.0.2", + "css-select": "^2.0.0", + "css-select-base-adapter": "^0.1.1", + "css-tree": "1.0.0-alpha.28", + "css-url-regex": "^1.1.0", + "csso": "^3.5.1", + "js-yaml": "^3.12.0", + "mkdirp": "~0.5.1", + "object.values": "^1.1.0", + "sax": "~1.2.4", + "stable": "^0.1.8", + "unquote": "~1.1.1", + "util.promisify": "~1.0.0" + } + }, + "swap-case": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/swap-case/-/swap-case-1.1.2.tgz", + "integrity": "sha1-w5IDpFhzhfrTyFCgvRvK+ggZdOM=", + "dev": true, + "requires": { + "lower-case": "^1.1.1", + "upper-case": "^1.1.1" + } + }, + "symbol-observable": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", + "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==", + "dev": true + }, + "symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true + }, + "synchronous-promise": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/synchronous-promise/-/synchronous-promise-2.0.13.tgz", + "integrity": "sha512-R9N6uDkVsghHePKh1TEqbnLddO2IY25OcsksyFp/qBe7XYd0PVbKEWxhcdMhpLzE1I6skj5l4aEZ3CRxcbArlA==", + "dev": true + }, + "table": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/table/-/table-4.0.2.tgz", + "integrity": "sha512-UUkEAPdSGxtRpiV9ozJ5cMTtYiqz7Ni1OGqLXRCynrvzdtR1p+cfOWe2RJLwvUG8hNanaSRjecIqwOjqeatDsA==", + "dev": true, + "optional": true, + "requires": { + "ajv": "^5.2.3", + "ajv-keywords": "^2.1.0", + "chalk": "^2.1.0", + "lodash": "^4.17.4", + "slice-ansi": "1.0.0", + "string-width": "^2.1.1" + }, + "dependencies": { + "ajv": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", + "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "dev": true, + "optional": true, + "requires": { + "co": "^4.6.0", + "fast-deep-equal": "^1.0.0", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.3.0" + } + }, + "ajv-keywords": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-2.1.1.tgz", + "integrity": "sha1-YXmX/F9gV2iUxDX5QNgZ4TW4B2I=", + "dev": true, + "optional": true + }, + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true, + "optional": true + }, + "fast-deep-equal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", + "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true, + "optional": true + }, + "json-schema-traverse": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", + "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", + "dev": true, + "optional": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "optional": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "optional": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "tapable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", + "dev": true + }, + "tar": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.2.tgz", + "integrity": "sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA==", + "requires": { + "block-stream": "*", + "fstream": "^1.0.12", + "inherits": "2" + } + }, + "terser": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.7.0.tgz", + "integrity": "sha512-Lfb0RiZcjRDXCC3OSHJpEkxJ9Qeqs6mp2v4jf2MHfy8vGERmVDuvjXdd/EnP5Deme5F2yBRBymKmKHCBg2echw==", + "dev": true, + "requires": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + }, + "dependencies": { + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "terser-webpack-plugin": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.4.tgz", + "integrity": "sha512-U4mACBHIegmfoEe5fdongHESNJWqsGU+W0S/9+BmYGVQDw1+c2Ow05TpMhxjPK1sRb7cuYq1BPl1e5YHJMTCqA==", + "dev": true, + "requires": { + "cacache": "^12.0.2", + "find-cache-dir": "^2.1.0", + "is-wsl": "^1.1.0", + "schema-utils": "^1.0.0", + "serialize-javascript": "^3.1.0", + "source-map": "^0.6.1", + "terser": "^4.1.2", + "webpack-sources": "^1.4.0", + "worker-farm": "^1.7.0" + }, + "dependencies": { + "find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + } + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "requires": { + "find-up": "^3.0.0" + } + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "test-exclude": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-4.2.3.tgz", + "integrity": "sha512-SYbXgY64PT+4GAL2ocI3HwPa4Q4TBKm0cwAVeKOt/Aoc0gSpNRjJX8w0pA1LMKZ3LBmd8pYBqApFNQLII9kavA==", + "dev": true, + "requires": { + "arrify": "^1.0.1", + "micromatch": "^2.3.11", + "object-assign": "^4.1.0", + "read-pkg-up": "^1.0.1", + "require-main-filename": "^1.0.1" + }, + "dependencies": { + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "dev": true, + "requires": { + "arr-flatten": "^1.0.1" + } + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "dev": true, + "requires": { + "expand-range": "^1.8.1", + "preserve": "^0.2.0", + "repeat-element": "^1.1.2" + } + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "dev": true, + "requires": { + "is-posix-bracket": "^0.1.0" + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "dev": true, + "requires": { + "arr-diff": "^2.0.0", + "array-unique": "^0.2.1", + "braces": "^1.8.2", + "expand-brackets": "^0.1.4", + "extglob": "^0.3.1", + "filename-regex": "^2.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.1", + "kind-of": "^3.0.2", + "normalize-path": "^2.0.1", + "object.omit": "^2.0.0", + "parse-glob": "^3.0.4", + "regex-cache": "^0.4.2" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true + } + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "thread-loader": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/thread-loader/-/thread-loader-2.1.3.tgz", + "integrity": "sha512-wNrVKH2Lcf8ZrWxDF/khdlLlsTMczdcwPA9VEK4c2exlEPynYWxi9op3nPTo5lAnDIkE0rQEB3VBP+4Zncc9Hg==", + "dev": true, + "requires": { + "loader-runner": "^2.3.1", + "loader-utils": "^1.1.0", + "neo-async": "^2.6.0" + } + }, + "throat": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/throat/-/throat-4.1.0.tgz", + "integrity": "sha1-iQN8vJLFarGJJua6TLsgDhVnKmo=", + "dev": true + }, + "throttle-debounce": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/throttle-debounce/-/throttle-debounce-2.2.1.tgz", + "integrity": "sha512-i9hAVld1f+woAiyNGqWelpDD5W1tpMroL3NofTz9xzwq6acWBlO2dC8k5EFSZepU6oOINtV5Q3aSPoRg7o4+fA==" + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", + "dev": true + }, + "timers-browserify": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.11.tgz", + "integrity": "sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ==", + "dev": true, + "requires": { + "setimmediate": "^1.0.4" + } + }, + "timsort": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", + "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", + "dev": true + }, + "tiny-emitter": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz", + "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==" + }, + "title-case": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/title-case/-/title-case-2.1.1.tgz", + "integrity": "sha1-PhJyFtpY0rxb7PE3q5Ha46fNj6o=", + "dev": true, + "requires": { + "no-case": "^2.2.0", + "upper-case": "^1.0.3" + } + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.2" + } + }, + "tmpl": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz", + "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=", + "dev": true + }, + "to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", + "dev": true + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + }, + "to-mark": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/to-mark/-/to-mark-1.1.9.tgz", + "integrity": "sha512-qHVnIhvwJbIIqOjuJgH2JlOmV/wPSSAY0QOQ47xQb9VPCzhV0Nd23+bBD4K/mzDGJA5lckZMfkgLScYvqKnPpg==" + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", + "dev": true + }, + "toposort": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/toposort/-/toposort-1.0.7.tgz", + "integrity": "sha1-LmhELZ9k7HILjMieZEOsbKqVACk=", + "dev": true + }, + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + }, + "tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "traverse": { + "version": "0.6.6", + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.6.tgz", + "integrity": "sha1-y99WD9e5r2MlAv7UD5GMFX6pcTc=", + "dev": true + }, + "trim-newlines": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", + "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=" + }, + "trim-right": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", + "dev": true + }, + "true-case-path": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-1.0.3.tgz", + "integrity": "sha512-m6s2OdQe5wgpFMC+pAJ+q9djG82O2jcHPOI6RNg1yy9rCYR+WD6Nbpl32fDpfC56nirdRy+opFa/Vk7HYhqaew==", + "requires": { + "glob": "^7.1.2" + } + }, + "tryer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tryer/-/tryer-1.0.1.tgz", + "integrity": "sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==", + "dev": true + }, + "tsconfig": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/tsconfig/-/tsconfig-7.0.0.tgz", + "integrity": "sha512-vZXmzPrL+EmC4T/4rVlT2jNVMWCi/O4DIiSj3UHg1OE5kCKbk4mfrXc6dZksLgRM/TZlKnousKH9bbTazUWRRw==", + "dev": true, + "requires": { + "@types/strip-bom": "^3.0.0", + "@types/strip-json-comments": "0.0.30", + "strip-bom": "^3.0.0", + "strip-json-comments": "^2.0.0" + }, + "dependencies": { + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + } + } + }, + "tslib": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", + "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==", + "dev": true + }, + "tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", + "dev": true + }, + "tui-chart": { + "version": "3.11.2", + "resolved": "https://registry.npmjs.org/tui-chart/-/tui-chart-3.11.2.tgz", + "integrity": "sha512-DUJIutBG/tOdvJnGCo1PcBhFyGBWsY8VIMdXe3WRtGXynMwOcC5cojYpULf3qFJ4Jj1Riv3/kbF6Ygmi+BpjCw==", + "requires": { + "core-js": "^3.6.4", + "raphael": "git+https://github.com/nhn/raphael.git#2.2.0-c", + "tui-code-snippet": "^2.3.1" + }, + "dependencies": { + "core-js": { + "version": "3.6.5", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.5.tgz", + "integrity": "sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA==" + }, + "tui-code-snippet": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/tui-code-snippet/-/tui-code-snippet-2.3.2.tgz", + "integrity": "sha512-6jGbM/m7A2L59lJSripwMVp87awrWgJXezlLV8GuAha3s0k01E4+MndoU5WlXd4dauVRgzHhKguTVslx/jMehw==" + } + } + }, + "tui-code-snippet": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/tui-code-snippet/-/tui-code-snippet-1.5.2.tgz", + "integrity": "sha512-6UqTlQaaC1KLcmC0HAoq5dtl1G4Fib+R+NC7pmaV7kiIlZ7JqKhUmnOoGRcreAyzd81UTK/vCvhrw9QJskpCFQ==" + }, + "tui-color-picker": { + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/tui-color-picker/-/tui-color-picker-2.2.6.tgz", + "integrity": "sha512-+GBTUFGOkDaFiyYt/4IJTKA68Oj7fC9lU+RHs56luyFHYSO3gWuvsZntxAvFFeCGiZFFhu9XQQaZ0rVS5TUOmA==", + "requires": { + "tui-code-snippet": "^2.2.0" + }, + "dependencies": { + "tui-code-snippet": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/tui-code-snippet/-/tui-code-snippet-2.3.2.tgz", + "integrity": "sha512-6jGbM/m7A2L59lJSripwMVp87awrWgJXezlLV8GuAha3s0k01E4+MndoU5WlXd4dauVRgzHhKguTVslx/jMehw==" + } + } + }, + "tui-editor": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/tui-editor/-/tui-editor-1.3.3.tgz", + "integrity": "sha512-AKck+bPC+4ZOeD7rNLeKvLF3zLITlU0QLxVesT0o66R1X7YowIKbWeBlVvSqcWv2eB/ZGJ9Qi6/1lFU2yYOuVA==", + "requires": { + "@types/codemirror": "0.0.71", + "@types/jquery": "^3.3.29", + "@types/markdown-it": "0.0.7", + "codemirror": "^5.33.0", + "highlight.js": "^9.12.0", + "jquery": "^3.3.1", + "markdown-it": "^8.4.0", + "plantuml-encoder": "^1.2.5", + "resize-observer-polyfill": "^1.5.0", + "squire-rte": "github:sohee-lee7/Squire#b1e0e1031fa18912d233c204cbe7c7fae4a42621", + "to-mark": "^1.1.4", + "tui-chart": "^3.0.1", + "tui-code-snippet": "^1.5.0", + "tui-color-picker": "^2.2.1" + } + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2" + } + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "uc.micro": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", + "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==" + }, + "uglify-js": { + "version": "3.9.4", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.9.4.tgz", + "integrity": "sha512-8RZBJq5smLOa7KslsNsVcSH+KOXf1uDU8yqLeNuVKwmT0T3FA0ZoXlinQfRad7SDcbZZRZE4ov+2v71EnxNyCA==", + "dev": true, + "optional": true, + "requires": { + "commander": "~2.20.3" + }, + "dependencies": { + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true, + "optional": true + } + } + }, + "unc-path-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", + "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=", + "dev": true + }, + "underscore": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz", + "integrity": "sha1-izixDKze9jM3uLJOT/htRa6lKag=" + }, + "unicode-canonical-property-names-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", + "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", + "dev": true + }, + "unicode-match-property-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", + "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", + "dev": true, + "requires": { + "unicode-canonical-property-names-ecmascript": "^1.0.4", + "unicode-property-aliases-ecmascript": "^1.0.4" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", + "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==", + "dev": true + }, + "unicode-property-aliases-ecmascript": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", + "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==", + "dev": true + }, + "unidecode": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/unidecode/-/unidecode-0.1.8.tgz", + "integrity": "sha1-77swFTi8RSRqmsjFWdcvAVMFBT4=", + "dev": true + }, + "union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + } + }, + "uniq": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", + "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", + "dev": true + }, + "uniqs": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", + "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=", + "dev": true + }, + "unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "dev": true, + "requires": { + "unique-slug": "^2.0.0" + } + }, + "unique-slug": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4" + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "dev": true + }, + "unquote": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", + "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=", + "dev": true + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dev": true, + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true + } + } + }, + "upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "dev": true + }, + "upper-case": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", + "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=", + "dev": true + }, + "upper-case-first": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/upper-case-first/-/upper-case-first-1.1.2.tgz", + "integrity": "sha1-XXm+3P8UQZUY/S7bCgUHybaFkRU=", + "dev": true, + "requires": { + "upper-case": "^1.1.1" + } + }, + "uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "requires": { + "punycode": "^2.1.0" + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true + }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "dev": true, + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", + "dev": true + } + } + }, + "url-loader": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-1.1.2.tgz", + "integrity": "sha512-dXHkKmw8FhPqu8asTc1puBfe3TehOCo2+RmOOev5suNCIYBcT626kxiWg1NBVkwc4rO8BGa7gP70W7VXuqHrjg==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "mime": "^2.0.3", + "schema-utils": "^1.0.0" + }, + "dependencies": { + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + } + } + }, + "url-parse": { + "version": "1.4.7", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.7.tgz", + "integrity": "sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg==", + "dev": true, + "requires": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "url-slug": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/url-slug/-/url-slug-2.0.0.tgz", + "integrity": "sha1-p4nVrtSZXA2VrzM3etHVxo1NcCc=", + "dev": true, + "requires": { + "unidecode": "0.1.8" + } + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true + }, + "user-home": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz", + "integrity": "sha1-K1viOjK2Onyd640PKNSFcko98ZA=", + "dev": true + }, + "util": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", + "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", + "dev": true, + "requires": { + "inherits": "2.0.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + } + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "util.promisify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz", + "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.2", + "has-symbols": "^1.0.1", + "object.getownpropertydescriptors": "^2.1.0" + } + }, + "utila": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=", + "dev": true + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "dev": true + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" + }, + "v8flags": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-2.1.1.tgz", + "integrity": "sha1-qrGh+jDUX4jdMhFIh1rALAtV5bQ=", + "dev": true, + "requires": { + "user-home": "^1.1.1" + } + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "dev": true + }, + "vendors": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz", + "integrity": "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==", + "dev": true + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "vm-browserify": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", + "dev": true + }, + "vue": { + "version": "2.6.10", + "resolved": "https://registry.npmjs.org/vue/-/vue-2.6.10.tgz", + "integrity": "sha512-ImThpeNU9HbdZL3utgMCq0oiMzAkt1mcgy3/E6zWC/G6AaQoeuFdsl9nDhTDU3X1R6FK7nsIUuRACVcjI+A2GQ==" + }, + "vue-count-to": { + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/vue-count-to/-/vue-count-to-1.0.13.tgz", + "integrity": "sha512-6R4OVBVNtQTlcbXu6SJ8ENR35M2/CdWt3Jmv57jOUM+1ojiFmjVGvZPH8DfHpMDSA+ITs+EW5V6qthADxeyYOQ==" + }, + "vue-eslint-parser": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-2.0.3.tgz", + "integrity": "sha512-ZezcU71Owm84xVF6gfurBQUGg8WQ+WZGxgDEQu1IHFBZNx7BFZg3L1yHxrCBNNwbwFtE1GuvfJKMtb6Xuwc/Bw==", + "dev": true, + "optional": true, + "requires": { + "debug": "^3.1.0", + "eslint-scope": "^3.7.1", + "eslint-visitor-keys": "^1.0.0", + "espree": "^3.5.2", + "esquery": "^1.0.0", + "lodash": "^4.17.4" + }, + "dependencies": { + "eslint-scope": { + "version": "3.7.3", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.3.tgz", + "integrity": "sha512-W+B0SvF4gamyCTmUc+uITPY0989iXVfKvhwtmJocTaYoc/3khEHmEmvfY/Gn9HA9VV75jrQECsHizkNw1b68FA==", + "dev": true, + "optional": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + } + } + }, + "vue-hot-reload-api": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/vue-hot-reload-api/-/vue-hot-reload-api-2.3.4.tgz", + "integrity": "sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog==", + "dev": true + }, + "vue-jest": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/vue-jest/-/vue-jest-3.0.5.tgz", + "integrity": "sha512-xWDxde91pDqYBGDlODENZ3ezPgw+IQFoVDtf+5Awlg466w3KvMSqWzs8PxcTeTr+wmAHi0j+a+Lm3R7aUJa1jA==", + "dev": true, + "requires": { + "babel-plugin-transform-es2015-modules-commonjs": "^6.26.0", + "chalk": "^2.1.0", + "extract-from-css": "^0.4.4", + "find-babel-config": "^1.1.0", + "js-beautify": "^1.6.14", + "node-cache": "^4.1.1", + "object-assign": "^4.1.1", + "source-map": "^0.5.6", + "tsconfig": "^7.0.0", + "vue-template-es2015-compiler": "^1.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "vue-lazyload": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/vue-lazyload/-/vue-lazyload-1.3.3.tgz", + "integrity": "sha512-uHnq0FTEeNmqnbBC2aRKlmtd9LofMZ6Q3mWvgfLa+i9vhxU8fDK+nGs9c1iVT85axSua/AUnMttIq3xPaU9G3A==", + "dev": true + }, + "vue-loader": { + "version": "15.9.2", + "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-15.9.2.tgz", + "integrity": "sha512-oXBubaY//CYEISBlHX+c2YPJbmOH68xXPXjFv4MAgPqQvUsnjrBAjCJi8HXZ/r/yfn0tPL5VZj1Zcp8mJPI8VA==", + "dev": true, + "requires": { + "@vue/component-compiler-utils": "^3.1.0", + "hash-sum": "^1.0.2", + "loader-utils": "^1.1.0", + "vue-hot-reload-api": "^2.3.0", + "vue-style-loader": "^4.1.0" + }, + "dependencies": { + "@vue/component-compiler-utils": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@vue/component-compiler-utils/-/component-compiler-utils-3.1.2.tgz", + "integrity": "sha512-QLq9z8m79mCinpaEeSURhnNCN6djxpHw0lpP/bodMlt5kALfONpryMthvnrQOlTcIKoF+VoPi+lPHUYeDFPXug==", + "dev": true, + "requires": { + "consolidate": "^0.15.1", + "hash-sum": "^1.0.2", + "lru-cache": "^4.1.2", + "merge-source-map": "^1.1.0", + "postcss": "^7.0.14", + "postcss-selector-parser": "^6.0.2", + "prettier": "^1.18.2", + "source-map": "~0.6.1", + "vue-template-es2015-compiler": "^1.9.0" + } + }, + "prettier": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.19.1.tgz", + "integrity": "sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==", + "dev": true, + "optional": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "vue-router": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-3.0.2.tgz", + "integrity": "sha512-opKtsxjp9eOcFWdp6xLQPLmRGgfM932Tl56U9chYTnoWqKxQ8M20N7AkdEbM5beUh6wICoFGYugAX9vQjyJLFg==" + }, + "vue-splitpane": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/vue-splitpane/-/vue-splitpane-1.0.4.tgz", + "integrity": "sha512-aSLmwNyqWCtn4q/JlEXa/UB9/zP1SLODfmMJof+qitL91Rz6g13cJKGmNEHJtBp6ivsk6p74fGfXUJUB3Izuig==" + }, + "vue-style-loader": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/vue-style-loader/-/vue-style-loader-4.1.2.tgz", + "integrity": "sha512-0ip8ge6Gzz/Bk0iHovU9XAUQaFt/G2B61bnWa2tCcqqdgfHs1lF9xXorFbE55Gmy92okFT+8bfmySuUOu13vxQ==", + "dev": true, + "requires": { + "hash-sum": "^1.0.2", + "loader-utils": "^1.0.2" + } + }, + "vue-template-compiler": { + "version": "2.6.10", + "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.6.10.tgz", + "integrity": "sha512-jVZkw4/I/HT5ZMvRnhv78okGusqe0+qH2A0Em0Cp8aq78+NK9TII263CDVz2QXZsIT+yyV/gZc/j/vlwa+Epyg==", + "dev": true, + "requires": { + "de-indent": "^1.0.2", + "he": "^1.1.0" + } + }, + "vue-template-es2015-compiler": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz", + "integrity": "sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==", + "dev": true + }, + "vue-ueditor-wrap": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/vue-ueditor-wrap/-/vue-ueditor-wrap-2.4.3.tgz", + "integrity": "sha512-7oMUQ1f+m5k0SWE1ndVQ4RY8JI7LX5T6DO3uDvfZqefrp1hzL5VUE1eEhtxS9PbdNIx9QuOatbNW9yAGp8NxLw==" + }, + "vuedraggable": { + "version": "2.23.2", + "resolved": "https://registry.npmjs.org/vuedraggable/-/vuedraggable-2.23.2.tgz", + "integrity": "sha512-PgHCjUpxEAEZJq36ys49HfQmXglattf/7ofOzUrW2/rRdG7tu6fK84ir14t1jYv4kdXewTEa2ieKEAhhEMdwkQ==", + "requires": { + "sortablejs": "^1.10.1" + }, + "dependencies": { + "sortablejs": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/sortablejs/-/sortablejs-1.10.2.tgz", + "integrity": "sha512-YkPGufevysvfwn5rfdlGyrGjt7/CRHwvRPogD/lC+TnvcN29jDpCifKP+rBqf+LRldfXSTh+0CGLcSg0VIxq3A==" + } + } + }, + "vuex": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/vuex/-/vuex-3.1.0.tgz", + "integrity": "sha512-mdHeHT/7u4BncpUZMlxNaIdcN/HIt1GsGG5LKByArvYG/v6DvHcOxvDCts+7SRdCoIRGllK8IMZvQtQXLppDYg==" + }, + "w3c-hr-time": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", + "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "dev": true, + "requires": { + "browser-process-hrtime": "^1.0.0" + } + }, + "walker": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz", + "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=", + "dev": true, + "requires": { + "makeerror": "1.0.x" + } + }, + "watch": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/watch/-/watch-0.18.0.tgz", + "integrity": "sha1-KAlUdsbffJDJYxOJkMClQj60uYY=", + "dev": true, + "requires": { + "exec-sh": "^0.2.0", + "minimist": "^1.2.0" + } + }, + "watchpack": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.2.tgz", + "integrity": "sha512-ymVbbQP40MFTp+cNMvpyBpBtygHnPzPkHqoIwRRj/0B8KhqQwV8LaKjtbaxF2lK4vl8zN9wCxS46IFCU5K4W0g==", + "dev": true, + "requires": { + "chokidar": "^3.4.0", + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0", + "watchpack-chokidar2": "^2.0.0" + }, + "dependencies": { + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "optional": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "chokidar": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.0.tgz", + "integrity": "sha512-aXAaho2VJtisB/1fg1+3nlLJqGOuewTzQpd/Tz0yTg2R0e4IGtshYvtjowyEumcBv2z+y4+kc75Mz7j5xJskcQ==", + "dev": true, + "optional": true, + "requires": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.1.2", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.4.0" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "optional": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "optional": true + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "optional": true, + "requires": { + "is-number": "^7.0.0" + } + } + } + }, + "watchpack-chokidar2": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.0.tgz", + "integrity": "sha512-9TyfOyN/zLUbA288wZ8IsMZ+6cbzvsNyEzSBp6e/zkifi6xxbl8SmQ/CxQq32k8NNqrdVEVUVSEf56L4rQ/ZxA==", + "dev": true, + "optional": true, + "requires": { + "chokidar": "^2.1.8" + }, + "dependencies": { + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "optional": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "optional": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true, + "optional": true + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "dev": true, + "optional": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + }, + "fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "dev": true, + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "optional": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "optional": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "optional": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "optional": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + } + } + }, + "wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dev": true, + "requires": { + "minimalistic-assert": "^1.0.0" + } + }, + "wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", + "dev": true, + "requires": { + "defaults": "^1.0.3" + } + }, + "webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "dev": true + }, + "webpack": { + "version": "4.28.4", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.28.4.tgz", + "integrity": "sha512-NxjD61WsK/a3JIdwWjtIpimmvE6UrRi3yG54/74Hk9rwNj5FPkA4DJCf1z4ByDWLkvZhTZE+P3C/eh6UD5lDcw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.7.11", + "@webassemblyjs/helper-module-context": "1.7.11", + "@webassemblyjs/wasm-edit": "1.7.11", + "@webassemblyjs/wasm-parser": "1.7.11", + "acorn": "^5.6.2", + "acorn-dynamic-import": "^3.0.0", + "ajv": "^6.1.0", + "ajv-keywords": "^3.1.0", + "chrome-trace-event": "^1.0.0", + "enhanced-resolve": "^4.1.0", + "eslint-scope": "^4.0.0", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^2.3.0", + "loader-utils": "^1.1.0", + "memory-fs": "~0.4.1", + "micromatch": "^3.1.8", + "mkdirp": "~0.5.0", + "neo-async": "^2.5.0", + "node-libs-browser": "^2.0.0", + "schema-utils": "^0.4.4", + "tapable": "^1.1.0", + "terser-webpack-plugin": "^1.1.0", + "watchpack": "^1.5.0", + "webpack-sources": "^1.3.0" + }, + "dependencies": { + "schema-utils": { + "version": "0.4.7", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.7.tgz", + "integrity": "sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-keywords": "^3.1.0" + } + } + } + }, + "webpack-bundle-analyzer": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-3.8.0.tgz", + "integrity": "sha512-PODQhAYVEourCcOuU+NiYI7WdR8QyELZGgPvB1y2tjbUpbmcQOt5Q7jEK+ttd5se0KSBKD9SXHCEozS++Wllmw==", + "dev": true, + "requires": { + "acorn": "^7.1.1", + "acorn-walk": "^7.1.1", + "bfj": "^6.1.1", + "chalk": "^2.4.1", + "commander": "^2.18.0", + "ejs": "^2.6.1", + "express": "^4.16.3", + "filesize": "^3.6.1", + "gzip-size": "^5.0.0", + "lodash": "^4.17.15", + "mkdirp": "^0.5.1", + "opener": "^1.5.1", + "ws": "^6.0.0" + }, + "dependencies": { + "acorn": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.3.1.tgz", + "integrity": "sha512-tLc0wSnatxAQHVHUapaHdz72pi9KUyHjq5KyHjGg9Y8Ifdc79pTh2XvI6I1/chZbnM7QtNKzh66ooDogPZSleA==", + "dev": true + }, + "acorn-walk": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.1.1.tgz", + "integrity": "sha512-wdlPY2tm/9XBr7QkKlq0WQVgiuGTX6YWPyRyBviSoScBuLfTVQhvwg6wJ369GJ/1nPfTLMfnrFIfjqVg6d+jQQ==", + "dev": true + }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "ws": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", + "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0" + } + } + } + }, + "webpack-chain": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/webpack-chain/-/webpack-chain-4.12.1.tgz", + "integrity": "sha512-BCfKo2YkDe2ByqkEWe1Rw+zko4LsyS75LVr29C6xIrxAg9JHJ4pl8kaIZ396SUSNp6b4815dRZPSTAS8LlURRQ==", + "dev": true, + "requires": { + "deepmerge": "^1.5.2", + "javascript-stringify": "^1.6.0" + } + }, + "webpack-dev-middleware": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.2.tgz", + "integrity": "sha512-1xC42LxbYoqLNAhV6YzTYacicgMZQTqRd27Sim9wn5hJrX3I5nxYy1SxSd4+gjUFsz1dQFj+yEe6zEVmSkeJjw==", + "dev": true, + "requires": { + "memory-fs": "^0.4.1", + "mime": "^2.4.4", + "mkdirp": "^0.5.1", + "range-parser": "^1.2.1", + "webpack-log": "^2.0.0" + } + }, + "webpack-dev-server": { + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.11.0.tgz", + "integrity": "sha512-PUxZ+oSTxogFQgkTtFndEtJIPNmml7ExwufBZ9L2/Xyyd5PnOL5UreWe5ZT7IU25DSdykL9p1MLQzmLh2ljSeg==", + "dev": true, + "requires": { + "ansi-html": "0.0.7", + "bonjour": "^3.5.0", + "chokidar": "^2.1.8", + "compression": "^1.7.4", + "connect-history-api-fallback": "^1.6.0", + "debug": "^4.1.1", + "del": "^4.1.1", + "express": "^4.17.1", + "html-entities": "^1.3.1", + "http-proxy-middleware": "0.19.1", + "import-local": "^2.0.0", + "internal-ip": "^4.3.0", + "ip": "^1.1.5", + "is-absolute-url": "^3.0.3", + "killable": "^1.0.1", + "loglevel": "^1.6.8", + "opn": "^5.5.0", + "p-retry": "^3.0.1", + "portfinder": "^1.0.26", + "schema-utils": "^1.0.0", + "selfsigned": "^1.10.7", + "semver": "^6.3.0", + "serve-index": "^1.9.1", + "sockjs": "0.3.20", + "sockjs-client": "1.4.0", + "spdy": "^4.0.2", + "strip-ansi": "^3.0.1", + "supports-color": "^6.1.0", + "url": "^0.11.0", + "webpack-dev-middleware": "^3.7.2", + "webpack-log": "^2.0.0", + "ws": "^6.2.1", + "yargs": "^13.3.2" + }, + "dependencies": { + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "dev": true, + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "import-local": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", + "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", + "dev": true, + "requires": { + "pkg-dir": "^3.0.0", + "resolve-cwd": "^2.0.0" + } + }, + "is-absolute-url": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz", + "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==", + "dev": true + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "requires": { + "find-up": "^3.0.0" + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "ws": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", + "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0" + } + } + } + }, + "webpack-log": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz", + "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==", + "dev": true, + "requires": { + "ansi-colors": "^3.0.0", + "uuid": "^3.3.2" + } + }, + "webpack-merge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.2.2.tgz", + "integrity": "sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g==", + "dev": true, + "requires": { + "lodash": "^4.17.15" + } + }, + "webpack-sources": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "dev": true, + "requires": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "websocket-driver": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.6.5.tgz", + "integrity": "sha1-XLJVbOuF9Dc8bYI4qmkchFThOjY=", + "dev": true, + "requires": { + "websocket-extensions": ">=0.1.1" + } + }, + "websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "dev": true + }, + "whatwg-encoding": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "dev": true, + "requires": { + "iconv-lite": "0.4.24" + } + }, + "whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", + "dev": true + }, + "whatwg-url": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.5.0.tgz", + "integrity": "sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ==", + "dev": true, + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "requires": { + "isexe": "^2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" + }, + "wide-align": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "dev": true + }, + "worker-farm": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", + "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==", + "dev": true, + "requires": { + "errno": "~0.1.7" + } + }, + "wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "requires": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "write": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", + "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", + "dev": true, + "optional": true, + "requires": { + "mkdirp": "^0.5.1" + } + }, + "write-file-atomic": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", + "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" + } + }, + "ws": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.2.tgz", + "integrity": "sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0" + } + }, + "xlsx": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/xlsx/-/xlsx-0.14.1.tgz", + "integrity": "sha512-7hjB5YuyJo1fuuzXQjwuxD8LSUzE4Rxu5ToC3fB5JSunZxGjLcgKg69bEFG9GYoxeVDx5GL0k1dUodlvaQNRQw==", + "requires": { + "adler-32": "~1.2.0", + "cfb": "^1.1.0", + "codepage": "~1.14.0", + "commander": "~2.17.1", + "crc-32": "~1.2.0", + "exit-on-epipe": "~1.0.1", + "ssf": "~0.10.2" + } + }, + "xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", + "dev": true + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true + }, + "y18n": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==" + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" + }, + "yargs": { + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "requires": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.2" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "requires": { + "locate-path": "^3.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "yargs-parser": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "dependencies": { + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" + } + } + }, + "yorkie": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yorkie/-/yorkie-2.0.0.tgz", + "integrity": "sha512-jcKpkthap6x63MB4TxwCyuIGkV0oYP/YRyuQU5UO0Yz/E/ZAu+653/uov+phdmO54n6BcvFRyyt0RRrWdN2mpw==", + "dev": true, + "requires": { + "execa": "^0.8.0", + "is-ci": "^1.0.10", + "normalize-path": "^1.0.0", + "strip-indent": "^2.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "dev": true, + "requires": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "execa": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.8.0.tgz", + "integrity": "sha1-2NdrvBtVIX7RkP1t1J08d07PyNo=", + "dev": true, + "requires": { + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "normalize-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-1.0.0.tgz", + "integrity": "sha1-MtDkcvkf80VwHBWoMRAY07CpA3k=", + "dev": true + }, + "strip-indent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz", + "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=", + "dev": true + } + } + }, + "yup": { + "version": "0.26.10", + "resolved": "https://registry.npmjs.org/yup/-/yup-0.26.10.tgz", + "integrity": "sha512-keuNEbNSnsOTOuGCt3UJW69jDE3O4P+UHAakO7vSeFMnjaitcmlbij/a3oNb9g1Y1KvSKH/7O1R2PQ4m4TRylw==", + "dev": true, + "requires": { + "@babel/runtime": "7.0.0", + "fn-name": "~2.0.1", + "lodash": "^4.17.10", + "property-expr": "^1.5.0", + "synchronous-promise": "^2.0.5", + "toposort": "^2.0.2" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.0.0.tgz", + "integrity": "sha512-7hGhzlcmg01CvH1EHdSPVXYX1aJ8KCEyz6I9xYIi/asDtzBPMyMhVibhM/K6g/5qnKBwjZtp10bNZIEFTRW1MA==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.12.0" + } + }, + "regenerator-runtime": { + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz", + "integrity": "sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg==", + "dev": true + }, + "toposort": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/toposort/-/toposort-2.0.2.tgz", + "integrity": "sha1-riF2gXXRVZ1IvvNUILL0li8JwzA=", + "dev": true + } + } + }, + "zrender": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/zrender/-/zrender-4.0.7.tgz", + "integrity": "sha512-TNloHe0ums6zxbHfnaCryM61J4IWDajZwNq6dHk9vfWhhysO/OeFvvR0drBs/nbXha2YxSzfQj2FiCd6RVBe+Q==" + } + } +} diff --git a/admin/package.json b/admin/package.json new file mode 100644 index 00000000..e6952682 --- /dev/null +++ b/admin/package.json @@ -0,0 +1,123 @@ +{ + "name": "vue-element-admin", + "version": "4.2.1", + "description": "A magical vue admin. An out-of-box UI solution for enterprise applications. Newest development stack of vue. Lots of awesome features", + "author": "Pan ", + "license": "MIT", + "scripts": { + "dev": "vue-cli-service serve", + "build:prod": "vue-cli-service build", + "build:stage": "vue-cli-service build --mode staging", + "preview": "node build/index.js --preview", + "lint": "eslint --fix --ext .js,.vue src", + "test:unit": "jest --clearCache && vue-cli-service test:unit", + "test:ci": "npm run lint && npm run test:unit", + "svgo": "svgo -f src/icons/svg --config=src/icons/svgo.yml", + "new": "plop" + }, + "husky": { + "hooks": { + "pre-commit": "lint-staged" + } + }, + "lint-staged": { + "src/**/*.{js,vue}": [ + "eslint --fix", + "git add" + ] + }, + "keywords": [ + "vue", + "admin", + "dashboard", + "element-ui", + "boilerplate", + "admin-template", + "management-system" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/PanJiaChen/vue-element-admin.git" + }, + "bugs": { + "url": "https://github.com/PanJiaChen/vue-element-admin/issues" + }, + "dependencies": { + "@babel/parser": "^7.9.6", + "axios": "0.18.1", + "clipboard": "2.0.4", + "codemirror": "5.45.0", + "core-js": "^2.6.11", + "driver.js": "0.9.5", + "dropzone": "5.5.1", + "echarts": "4.2.1", + "element-ui": "2.13.0", + "file-saver": "2.0.1", + "fuse.js": "3.4.4", + "js-cookie": "2.2.0", + "jsonlint": "1.6.3", + "jszip": "3.2.1", + "node-sass": "^4.13.1", + "monaco-editor": "^0.20.0", + "normalize.css": "7.0.0", + "nprogress": "0.2.0", + "path-to-regexp": "2.4.0", + "qs": "^6.9.4", + "screenfull": "4.2.0", + "script-loader": "0.7.2", + "showdown": "1.9.0", + "sortablejs": "1.8.4", + "throttle-debounce": "^2.1.0", + "tui-editor": "1.3.3", + "vue": "2.6.10", + "vue-awesome-swiper": "^3.1.3", + "vue-count-to": "1.0.13", + "vue-router": "3.0.2", + "vue-splitpane": "1.0.4", + "vue-ueditor-wrap": "^2.4.1", + "vuedraggable": "^2.20.0", + "vuex": "3.1.0", + "xlsx": "0.14.1" + }, + "devDependencies": { + "@babel/core": "7.0.0", + "@babel/register": "7.0.0", + "@vue/cli-plugin-babel": "3.5.3", + "@vue/cli-plugin-eslint": "^3.9.1", + "@vue/cli-plugin-unit-jest": "3.5.3", + "@vue/cli-service": "3.5.3", + "@vue/test-utils": "1.0.0-beta.29", + "autoprefixer": "^9.5.1", + "babel-core": "7.0.0-bridge.0", + "babel-eslint": "10.0.1", + "babel-jest": "23.6.0", + "chalk": "2.4.2", + "chokidar": "2.1.5", + "connect": "3.6.6", + "eslint": "5.15.3", + "eslint-plugin-vue": "5.2.2", + "eslint-plugin-vuefix": "^0.2.1", + "html-webpack-plugin": "3.2.0", + "husky": "1.3.1", + "lint-staged": "8.1.5", + "mockjs": "1.0.1-beta3", + "monaco-editor-webpack-plugin": "^1.9.0", + "plop": "2.3.0", + "runjs": "^4.3.2", + "sass-loader": "^7.3.1", + "script-ext-html-webpack-plugin": "2.1.3", + "serve-static": "^1.13.2", + "svg-sprite-loader": "4.1.3", + "svgo": "1.2.0", + "vue-lazyload": "^1.3.3", + "vue-template-compiler": "2.6.10" + }, + "engines": { + "node": ">=8.9", + "npm": ">= 3.0.0" + }, + "browserslist": [ + "> 1%", + "last 2 versions" + ] +} diff --git a/admin/plop-templates/component/index.hbs b/admin/plop-templates/component/index.hbs new file mode 100644 index 00000000..76610552 --- /dev/null +++ b/admin/plop-templates/component/index.hbs @@ -0,0 +1,26 @@ +{{#if template}} + +{{/if}} + +{{#if script}} + +{{/if}} + +{{#if style}} + +{{/if}} diff --git a/admin/plop-templates/component/prompt.js b/admin/plop-templates/component/prompt.js new file mode 100644 index 00000000..9f346ed6 --- /dev/null +++ b/admin/plop-templates/component/prompt.js @@ -0,0 +1,55 @@ +const { notEmpty } = require('../utils.js') + +module.exports = { + description: 'generate vue component', + prompts: [{ + type: 'input', + name: 'name', + message: 'component name please', + validate: notEmpty('name') + }, + { + type: 'checkbox', + name: 'blocks', + message: 'Blocks:', + choices: [{ + name: '', + value: 'template', + checked: true + }, + { + name: ' +{{/if}} + +{{#if style}} + +{{/if}} diff --git a/admin/plop-templates/view/prompt.js b/admin/plop-templates/view/prompt.js new file mode 100644 index 00000000..10e00d56 --- /dev/null +++ b/admin/plop-templates/view/prompt.js @@ -0,0 +1,55 @@ +const { notEmpty } = require('../utils.js') + +module.exports = { + description: 'generate a view', + prompts: [{ + type: 'input', + name: 'name', + message: 'view name please', + validate: notEmpty('name') + }, + { + type: 'checkbox', + name: 'blocks', + message: 'Blocks:', + choices: [{ + name: '', + value: 'template', + checked: true + }, + { + name: ' + + + \ No newline at end of file diff --git a/admin/public/UEditor/dialogs/attachment/attachment.css b/admin/public/UEditor/dialogs/attachment/attachment.css new file mode 100644 index 00000000..548b4284 --- /dev/null +++ b/admin/public/UEditor/dialogs/attachment/attachment.css @@ -0,0 +1,681 @@ +@charset "utf-8"; +/* dialog样式 */ +.wrapper { + zoom: 1; + width: 630px; + *width: 626px; + height: 380px; + margin: 0 auto; + padding: 10px; + position: relative; + font-family: sans-serif; +} + +/*tab样式框大小*/ +.tabhead { + float:left; +} +.tabbody { + width: 100%; + height: 346px; + position: relative; + clear: both; +} + +.tabbody .panel { + position: absolute; + width: 0; + height: 0; + background: #fff; + overflow: hidden; + display: none; +} + +.tabbody .panel.focus { + width: 100%; + height: 346px; + display: block; +} + +/* 上传附件 */ +.tabbody #upload.panel { + width: 0; + height: 0; + overflow: hidden; + position: absolute !important; + clip: rect(1px, 1px, 1px, 1px); + background: #fff; + display: block; +} + +.tabbody #upload.panel.focus { + width: 100%; + height: 346px; + display: block; + clip: auto; +} + +#upload .queueList { + margin: 0; + width: 100%; + height: 100%; + position: absolute; + overflow: hidden; +} + +#upload p { + margin: 0; +} + +.element-invisible { + width: 0 !important; + height: 0 !important; + border: 0; + padding: 0; + margin: 0; + overflow: hidden; + position: absolute !important; + clip: rect(1px, 1px, 1px, 1px); +} + +#upload .placeholder { + margin: 10px; + border: 2px dashed #e6e6e6; + *border: 0px dashed #e6e6e6; + height: 172px; + padding-top: 150px; + text-align: center; + background: url(./images/image.png) center 70px no-repeat; + color: #cccccc; + font-size: 18px; + position: relative; + top:0; + *top: 10px; +} + +#upload .placeholder .webuploader-pick { + font-size: 18px; + background: #00b7ee; + border-radius: 3px; + line-height: 44px; + padding: 0 30px; + *width: 120px; + color: #fff; + display: inline-block; + margin: 0 auto 20px auto; + cursor: pointer; + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1); +} + +#upload .placeholder .webuploader-pick-hover { + background: #00a2d4; +} + + +#filePickerContainer { + text-align: center; +} + +#upload .placeholder .flashTip { + color: #666666; + font-size: 12px; + position: absolute; + width: 100%; + text-align: center; + bottom: 20px; +} + +#upload .placeholder .flashTip a { + color: #0785d1; + text-decoration: none; +} + +#upload .placeholder .flashTip a:hover { + text-decoration: underline; +} + +#upload .placeholder.webuploader-dnd-over { + border-color: #999999; +} + +#upload .filelist { + list-style: none; + margin: 0; + padding: 0; + overflow-x: hidden; + overflow-y: auto; + position: relative; + height: 300px; +} + +#upload .filelist:after { + content: ''; + display: block; + width: 0; + height: 0; + overflow: hidden; + clear: both; +} + +#upload .filelist li { + width: 113px; + height: 113px; + background: url(./images/bg.png); + text-align: center; + margin: 9px 0 0 9px; + *margin: 6px 0 0 6px; + position: relative; + display: block; + float: left; + overflow: hidden; + font-size: 12px; +} + +#upload .filelist li p.log { + position: relative; + top: -45px; +} + +#upload .filelist li p.title { + position: absolute; + top: 0; + left: 0; + width: 100%; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + top: 5px; + text-indent: 5px; + text-align: left; +} + +#upload .filelist li p.progress { + position: absolute; + width: 100%; + bottom: 0; + left: 0; + height: 8px; + overflow: hidden; + z-index: 50; + margin: 0; + border-radius: 0; + background: none; + -webkit-box-shadow: 0 0 0; +} + +#upload .filelist li p.progress span { + display: none; + overflow: hidden; + width: 0; + height: 100%; + background: #1483d8 url(./images/progress.png) repeat-x; + + -webit-transition: width 200ms linear; + -moz-transition: width 200ms linear; + -o-transition: width 200ms linear; + -ms-transition: width 200ms linear; + transition: width 200ms linear; + + -webkit-animation: progressmove 2s linear infinite; + -moz-animation: progressmove 2s linear infinite; + -o-animation: progressmove 2s linear infinite; + -ms-animation: progressmove 2s linear infinite; + animation: progressmove 2s linear infinite; + + -webkit-transform: translateZ(0); +} + +@-webkit-keyframes progressmove { + 0% { + background-position: 0 0; + } + 100% { + background-position: 17px 0; + } +} + +@-moz-keyframes progressmove { + 0% { + background-position: 0 0; + } + 100% { + background-position: 17px 0; + } +} + +@keyframes progressmove { + 0% { + background-position: 0 0; + } + 100% { + background-position: 17px 0; + } +} + +#upload .filelist li p.imgWrap { + position: relative; + z-index: 2; + line-height: 113px; + vertical-align: middle; + overflow: hidden; + width: 113px; + height: 113px; + + -webkit-transform-origin: 50% 50%; + -moz-transform-origin: 50% 50%; + -o-transform-origin: 50% 50%; + -ms-transform-origin: 50% 50%; + transform-origin: 50% 50%; + + -webit-transition: 200ms ease-out; + -moz-transition: 200ms ease-out; + -o-transition: 200ms ease-out; + -ms-transition: 200ms ease-out; + transition: 200ms ease-out; +} +#upload .filelist li p.imgWrap.notimage { + margin-top: 0; + width: 111px; + height: 111px; + border: 1px #eeeeee solid; +} +#upload .filelist li p.imgWrap.notimage i.file-preview { + margin-top: 15px; +} + +#upload .filelist li img { + width: 100%; +} + +#upload .filelist li p.error { + background: #f43838; + color: #fff; + position: absolute; + bottom: 0; + left: 0; + height: 28px; + line-height: 28px; + width: 100%; + z-index: 100; + display:none; +} + +#upload .filelist li .success { + display: block; + position: absolute; + left: 0; + bottom: 0; + height: 40px; + width: 100%; + z-index: 200; + background: url(./images/success.png) no-repeat right bottom; + background-image: url(./images/success.gif) \9; +} + +#upload .filelist li.filePickerBlock { + width: 113px; + height: 113px; + background: url(./images/image.png) no-repeat center 12px; + border: 1px solid #eeeeee; + border-radius: 0; +} +#upload .filelist li.filePickerBlock div.webuploader-pick { + width: 100%; + height: 100%; + margin: 0; + padding: 0; + opacity: 0; + background: none; + font-size: 0; +} + +#upload .filelist div.file-panel { + position: absolute; + height: 0; + filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#80000000', endColorstr='#80000000') \0; + background: rgba(0, 0, 0, 0.5); + width: 100%; + top: 0; + left: 0; + overflow: hidden; + z-index: 300; +} + +#upload .filelist div.file-panel span { + width: 24px; + height: 24px; + display: inline; + float: right; + text-indent: -9999px; + overflow: hidden; + background: url(./images/icons.png) no-repeat; + background: url(./images/icons.gif) no-repeat \9; + margin: 5px 1px 1px; + cursor: pointer; + -webkit-tap-highlight-color: rgba(0,0,0,0); + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +#upload .filelist div.file-panel span.rotateLeft { + display:none; + background-position: 0 -24px; +} + +#upload .filelist div.file-panel span.rotateLeft:hover { + background-position: 0 0; +} + +#upload .filelist div.file-panel span.rotateRight { + display:none; + background-position: -24px -24px; +} + +#upload .filelist div.file-panel span.rotateRight:hover { + background-position: -24px 0; +} + +#upload .filelist div.file-panel span.cancel { + background-position: -48px -24px; +} + +#upload .filelist div.file-panel span.cancel:hover { + background-position: -48px 0; +} + +#upload .statusBar { + height: 45px; + border-bottom: 1px solid #dadada; + margin: 0 10px; + padding: 0; + line-height: 45px; + vertical-align: middle; + position: relative; +} + +#upload .statusBar .progress { + border: 1px solid #1483d8; + width: 198px; + background: #fff; + height: 18px; + position: absolute; + top: 12px; + display: none; + text-align: center; + line-height: 18px; + color: #6dbfff; + margin: 0 10px 0 0; +} +#upload .statusBar .progress span.percentage { + width: 0; + height: 100%; + left: 0; + top: 0; + background: #1483d8; + position: absolute; +} +#upload .statusBar .progress span.text { + position: relative; + z-index: 10; +} + +#upload .statusBar .info { + display: inline-block; + font-size: 14px; + color: #666666; +} + +#upload .statusBar .btns { + position: absolute; + top: 7px; + right: 0; + line-height: 30px; +} + +#filePickerBtn { + display: inline-block; + float: left; +} +#upload .statusBar .btns .webuploader-pick, +#upload .statusBar .btns .uploadBtn, +#upload .statusBar .btns .uploadBtn.state-uploading, +#upload .statusBar .btns .uploadBtn.state-paused { + background: #ffffff; + border: 1px solid #cfcfcf; + color: #565656; + padding: 0 18px; + display: inline-block; + border-radius: 3px; + margin-left: 10px; + cursor: pointer; + font-size: 14px; + float: left; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +#upload .statusBar .btns .webuploader-pick-hover, +#upload .statusBar .btns .uploadBtn:hover, +#upload .statusBar .btns .uploadBtn.state-uploading:hover, +#upload .statusBar .btns .uploadBtn.state-paused:hover { + background: #f0f0f0; +} + +#upload .statusBar .btns .uploadBtn, +#upload .statusBar .btns .uploadBtn.state-paused{ + background: #00b7ee; + color: #fff; + border-color: transparent; +} +#upload .statusBar .btns .uploadBtn:hover, +#upload .statusBar .btns .uploadBtn.state-paused:hover{ + background: #00a2d4; +} + +#upload .statusBar .btns .uploadBtn.disabled { + pointer-events: none; + filter:alpha(opacity=60); + -moz-opacity:0.6; + -khtml-opacity: 0.6; + opacity: 0.6; +} + + + +/* 图片管理样式 */ +#online { + width: 100%; + height: 336px; + padding: 10px 0 0 0; +} +#online #fileList{ + width: 100%; + height: 100%; + overflow-x: hidden; + overflow-y: auto; + position: relative; +} +#online ul { + display: block; + list-style: none; + margin: 0; + padding: 0; +} +#online li { + float: left; + display: block; + list-style: none; + padding: 0; + width: 113px; + height: 113px; + margin: 0 0 9px 9px; + *margin: 0 0 6px 6px; + background-color: #eee; + overflow: hidden; + cursor: pointer; + position: relative; +} +#online li.clearFloat { + float: none; + clear: both; + display: block; + width:0; + height:0; + margin: 0; + padding: 0; +} +#online li img { + cursor: pointer; +} +#online li div.file-wrapper { + cursor: pointer; + position: absolute; + display: block; + width: 111px; + height: 111px; + border: 1px solid #eee; + background: url("./images/bg.png") repeat; +} +#online li div span.file-title{ + display: block; + padding: 0 3px; + margin: 3px 0 0 0; + font-size: 12px; + height: 13px; + color: #555555; + text-align: center; + width: 107px; + white-space: nowrap; + word-break: break-all; + overflow: hidden; + text-overflow: ellipsis; +} +#online li .icon { + cursor: pointer; + width: 113px; + height: 113px; + position: absolute; + top: 0; + left: 0; + z-index: 2; + border: 0; + background-repeat: no-repeat; +} +#online li .icon:hover { + width: 107px; + height: 107px; + border: 3px solid #1094fa; +} +#online li.selected .icon { + background-image: url(images/success.png); + background-image: url(images/success.gif) \9; + background-position: 75px 75px; +} +#online li.selected .icon:hover { + width: 107px; + height: 107px; + border: 3px solid #1094fa; + background-position: 72px 72px; +} + + +/* 在线文件的文件预览图标 */ +i.file-preview { + display: block; + margin: 10px auto; + width: 70px; + height: 70px; + background-image: url("./images/file-icons.png"); + background-image: url("./images/file-icons.gif") \9; + background-position: -140px center; + background-repeat: no-repeat; +} +i.file-preview.file-type-dir{ + background-position: 0 center; +} +i.file-preview.file-type-file{ + background-position: -140px center; +} +i.file-preview.file-type-filelist{ + background-position: -210px center; +} +i.file-preview.file-type-zip, +i.file-preview.file-type-rar, +i.file-preview.file-type-7z, +i.file-preview.file-type-tar, +i.file-preview.file-type-gz, +i.file-preview.file-type-bz2{ + background-position: -280px center; +} +i.file-preview.file-type-xls, +i.file-preview.file-type-xlsx{ + background-position: -350px center; +} +i.file-preview.file-type-doc, +i.file-preview.file-type-docx{ + background-position: -420px center; +} +i.file-preview.file-type-ppt, +i.file-preview.file-type-pptx{ + background-position: -490px center; +} +i.file-preview.file-type-vsd{ + background-position: -560px center; +} +i.file-preview.file-type-pdf{ + background-position: -630px center; +} +i.file-preview.file-type-txt, +i.file-preview.file-type-md, +i.file-preview.file-type-json, +i.file-preview.file-type-htm, +i.file-preview.file-type-xml, +i.file-preview.file-type-html, +i.file-preview.file-type-js, +i.file-preview.file-type-css, +i.file-preview.file-type-php, +i.file-preview.file-type-jsp, +i.file-preview.file-type-asp{ + background-position: -700px center; +} +i.file-preview.file-type-apk{ + background-position: -770px center; +} +i.file-preview.file-type-exe{ + background-position: -840px center; +} +i.file-preview.file-type-ipa{ + background-position: -910px center; +} +i.file-preview.file-type-mp4, +i.file-preview.file-type-swf, +i.file-preview.file-type-mkv, +i.file-preview.file-type-avi, +i.file-preview.file-type-flv, +i.file-preview.file-type-mov, +i.file-preview.file-type-mpg, +i.file-preview.file-type-mpeg, +i.file-preview.file-type-ogv, +i.file-preview.file-type-webm, +i.file-preview.file-type-rm, +i.file-preview.file-type-rmvb{ + background-position: -980px center; +} +i.file-preview.file-type-ogg, +i.file-preview.file-type-wav, +i.file-preview.file-type-wmv, +i.file-preview.file-type-mid, +i.file-preview.file-type-mp3{ + background-position: -1050px center; +} +i.file-preview.file-type-jpg, +i.file-preview.file-type-jpeg, +i.file-preview.file-type-gif, +i.file-preview.file-type-bmp, +i.file-preview.file-type-png, +i.file-preview.file-type-psd{ + background-position: -140px center; +} \ No newline at end of file diff --git a/admin/public/UEditor/dialogs/attachment/attachment.html b/admin/public/UEditor/dialogs/attachment/attachment.html new file mode 100644 index 00000000..2ae92820 --- /dev/null +++ b/admin/public/UEditor/dialogs/attachment/attachment.html @@ -0,0 +1,60 @@ + + + + + ueditor图片对话框 + + + + + + + + + + + + + + +
+
+ + +
+
+ +
+
+
+
+ 0% + +
+
+
+
+
+
+
+
+
+
+
+
    +
  • +
+
+
+ + +
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/admin/public/UEditor/dialogs/attachment/attachment.js b/admin/public/UEditor/dialogs/attachment/attachment.js new file mode 100644 index 00000000..bb2557f4 --- /dev/null +++ b/admin/public/UEditor/dialogs/attachment/attachment.js @@ -0,0 +1,760 @@ +/** + * User: Jinqn + * Date: 14-04-08 + * Time: 下午16:34 + * 上传图片对话框逻辑代码,包括tab: 远程图片/上传图片/在线图片/搜索图片 + */ + +(function () { + + var uploadFile, + onlineFile; + + window.onload = function () { + initTabs(); + initButtons(); + }; + + /* 初始化tab标签 */ + function initTabs() { + var tabs = $G('tabhead').children; + for (var i = 0; i < tabs.length; i++) { + domUtils.on(tabs[i], "click", function (e) { + var target = e.target || e.srcElement; + setTabFocus(target.getAttribute('data-content-id')); + }); + } + + setTabFocus('upload'); + } + + /* 初始化tabbody */ + function setTabFocus(id) { + if(!id) return; + var i, bodyId, tabs = $G('tabhead').children; + for (i = 0; i < tabs.length; i++) { + bodyId = tabs[i].getAttribute('data-content-id') + if (bodyId == id) { + domUtils.addClass(tabs[i], 'focus'); + domUtils.addClass($G(bodyId), 'focus'); + } else { + domUtils.removeClasses(tabs[i], 'focus'); + domUtils.removeClasses($G(bodyId), 'focus'); + } + } + switch (id) { + case 'upload': + uploadFile = uploadFile || new UploadFile('queueList'); + break; + case 'online': + onlineFile = onlineFile || new OnlineFile('fileList'); + break; + } + } + + /* 初始化onok事件 */ + function initButtons() { + + dialog.onok = function () { + var list = [], id, tabs = $G('tabhead').children; + for (var i = 0; i < tabs.length; i++) { + if (domUtils.hasClass(tabs[i], 'focus')) { + id = tabs[i].getAttribute('data-content-id'); + break; + } + } + + switch (id) { + case 'upload': + list = uploadFile.getInsertList(); + var count = uploadFile.getQueueCount(); + if (count) { + $('.info', '#queueList').html('' + '还有2个未上传文件'.replace(/[\d]/, count) + ''); + return false; + } + break; + case 'online': + list = onlineFile.getInsertList(); + break; + } + + editor.execCommand('insertfile', list); + }; + } + + + /* 上传附件 */ + function UploadFile(target) { + this.$wrap = target.constructor == String ? $('#' + target) : $(target); + this.init(); + } + UploadFile.prototype = { + init: function () { + this.fileList = []; + this.initContainer(); + this.initUploader(); + }, + initContainer: function () { + this.$queue = this.$wrap.find('.filelist'); + }, + /* 初始化容器 */ + initUploader: function () { + var _this = this, + $ = jQuery, // just in case. Make sure it's not an other libaray. + $wrap = _this.$wrap, + // 图片容器 + $queue = $wrap.find('.filelist'), + // 状态栏,包括进度和控制按钮 + $statusBar = $wrap.find('.statusBar'), + // 文件总体选择信息。 + $info = $statusBar.find('.info'), + // 上传按钮 + $upload = $wrap.find('.uploadBtn'), + // 上传按钮 + $filePickerBtn = $wrap.find('.filePickerBtn'), + // 上传按钮 + $filePickerBlock = $wrap.find('.filePickerBlock'), + // 没选择文件之前的内容。 + $placeHolder = $wrap.find('.placeholder'), + // 总体进度条 + $progress = $statusBar.find('.progress').hide(), + // 添加的文件数量 + fileCount = 0, + // 添加的文件总大小 + fileSize = 0, + // 优化retina, 在retina下这个值是2 + ratio = window.devicePixelRatio || 1, + // 缩略图大小 + thumbnailWidth = 113 * ratio, + thumbnailHeight = 113 * ratio, + // 可能有pedding, ready, uploading, confirm, done. + state = '', + // 所有文件的进度信息,key为file id + percentages = {}, + supportTransition = (function () { + var s = document.createElement('p').style, + r = 'transition' in s || + 'WebkitTransition' in s || + 'MozTransition' in s || + 'msTransition' in s || + 'OTransition' in s; + s = null; + return r; + })(), + // WebUploader实例 + uploader, + actionUrl = editor.getActionUrl(editor.getOpt('fileActionName')), + fileMaxSize = editor.getOpt('fileMaxSize'), + acceptExtensions = (editor.getOpt('fileAllowFiles') || []).join('').replace(/\./g, ',').replace(/^[,]/, '');; + + if (!WebUploader.Uploader.support()) { + $('#filePickerReady').after($('
').html(lang.errorNotSupport)).hide(); + return; + } else if (!editor.getOpt('fileActionName')) { + $('#filePickerReady').after($('
').html(lang.errorLoadConfig)).hide(); + return; + } + + uploader = _this.uploader = WebUploader.create({ + pick: { + id: '#filePickerReady', + label: lang.uploadSelectFile + }, + swf: '../../third-party/webuploader/Uploader.swf', + server: actionUrl, + fileVal: editor.getOpt('fileFieldName'), + duplicate: true, + fileSingleSizeLimit: fileMaxSize, + compress: false + }); + uploader.addButton({ + id: '#filePickerBlock' + }); + uploader.addButton({ + id: '#filePickerBtn', + label: lang.uploadAddFile + }); + + setState('pedding'); + + // 当有文件添加进来时执行,负责view的创建 + function addFile(file) { + var $li = $('
  • ' + + '

    ' + file.name + '

    ' + + '

    ' + + '

    ' + + '
  • '), + + $btns = $('
    ' + + '' + lang.uploadDelete + '' + + '' + lang.uploadTurnRight + '' + + '' + lang.uploadTurnLeft + '
    ').appendTo($li), + $prgress = $li.find('p.progress span'), + $wrap = $li.find('p.imgWrap'), + $info = $('

    ').hide().appendTo($li), + + showError = function (code) { + switch (code) { + case 'exceed_size': + text = lang.errorExceedSize; + break; + case 'interrupt': + text = lang.errorInterrupt; + break; + case 'http': + text = lang.errorHttp; + break; + case 'not_allow_type': + text = lang.errorFileType; + break; + default: + text = lang.errorUploadRetry; + break; + } + $info.text(text).show(); + }; + + if (file.getStatus() === 'invalid') { + showError(file.statusText); + } else { + $wrap.text(lang.uploadPreview); + if ('|png|jpg|jpeg|bmp|gif|'.indexOf('|'+file.ext.toLowerCase()+'|') == -1) { + $wrap.empty().addClass('notimage').append('' + + '' + file.name + ''); + } else { + if (browser.ie && browser.version <= 7) { + $wrap.text(lang.uploadNoPreview); + } else { + uploader.makeThumb(file, function (error, src) { + if (error || !src) { + $wrap.text(lang.uploadNoPreview); + } else { + var $img = $(''); + $wrap.empty().append($img); + $img.on('error', function () { + $wrap.text(lang.uploadNoPreview); + }); + } + }, thumbnailWidth, thumbnailHeight); + } + } + percentages[ file.id ] = [ file.size, 0 ]; + file.rotation = 0; + + /* 检查文件格式 */ + if (!file.ext || acceptExtensions.indexOf(file.ext.toLowerCase()) == -1) { + showError('not_allow_type'); + uploader.removeFile(file); + } + } + + file.on('statuschange', function (cur, prev) { + if (prev === 'progress') { + $prgress.hide().width(0); + } else if (prev === 'queued') { + $li.off('mouseenter mouseleave'); + $btns.remove(); + } + // 成功 + if (cur === 'error' || cur === 'invalid') { + showError(file.statusText); + percentages[ file.id ][ 1 ] = 1; + } else if (cur === 'interrupt') { + showError('interrupt'); + } else if (cur === 'queued') { + percentages[ file.id ][ 1 ] = 0; + } else if (cur === 'progress') { + $info.hide(); + $prgress.css('display', 'block'); + } else if (cur === 'complete') { + } + + $li.removeClass('state-' + prev).addClass('state-' + cur); + }); + + $li.on('mouseenter', function () { + $btns.stop().animate({height: 30}); + }); + $li.on('mouseleave', function () { + $btns.stop().animate({height: 0}); + }); + + $btns.on('click', 'span', function () { + var index = $(this).index(), + deg; + + switch (index) { + case 0: + uploader.removeFile(file); + return; + case 1: + file.rotation += 90; + break; + case 2: + file.rotation -= 90; + break; + } + + if (supportTransition) { + deg = 'rotate(' + file.rotation + 'deg)'; + $wrap.css({ + '-webkit-transform': deg, + '-mos-transform': deg, + '-o-transform': deg, + 'transform': deg + }); + } else { + $wrap.css('filter', 'progid:DXImageTransform.Microsoft.BasicImage(rotation=' + (~~((file.rotation / 90) % 4 + 4) % 4) + ')'); + } + + }); + + $li.insertBefore($filePickerBlock); + } + + // 负责view的销毁 + function removeFile(file) { + var $li = $('#' + file.id); + delete percentages[ file.id ]; + updateTotalProgress(); + $li.off().find('.file-panel').off().end().remove(); + } + + function updateTotalProgress() { + var loaded = 0, + total = 0, + spans = $progress.children(), + percent; + + $.each(percentages, function (k, v) { + total += v[ 0 ]; + loaded += v[ 0 ] * v[ 1 ]; + }); + + percent = total ? loaded / total : 0; + + spans.eq(0).text(Math.round(percent * 100) + '%'); + spans.eq(1).css('width', Math.round(percent * 100) + '%'); + updateStatus(); + } + + function setState(val, files) { + + if (val != state) { + + var stats = uploader.getStats(); + + $upload.removeClass('state-' + state); + $upload.addClass('state-' + val); + + switch (val) { + + /* 未选择文件 */ + case 'pedding': + $queue.addClass('element-invisible'); + $statusBar.addClass('element-invisible'); + $placeHolder.removeClass('element-invisible'); + $progress.hide(); $info.hide(); + uploader.refresh(); + break; + + /* 可以开始上传 */ + case 'ready': + $placeHolder.addClass('element-invisible'); + $queue.removeClass('element-invisible'); + $statusBar.removeClass('element-invisible'); + $progress.hide(); $info.show(); + $upload.text(lang.uploadStart); + uploader.refresh(); + break; + + /* 上传中 */ + case 'uploading': + $progress.show(); $info.hide(); + $upload.text(lang.uploadPause); + break; + + /* 暂停上传 */ + case 'paused': + $progress.show(); $info.hide(); + $upload.text(lang.uploadContinue); + break; + + case 'confirm': + $progress.show(); $info.hide(); + $upload.text(lang.uploadStart); + + stats = uploader.getStats(); + if (stats.successNum && !stats.uploadFailNum) { + setState('finish'); + return; + } + break; + + case 'finish': + $progress.hide(); $info.show(); + if (stats.uploadFailNum) { + $upload.text(lang.uploadRetry); + } else { + $upload.text(lang.uploadStart); + } + break; + } + + state = val; + updateStatus(); + + } + + if (!_this.getQueueCount()) { + $upload.addClass('disabled') + } else { + $upload.removeClass('disabled') + } + + } + + function updateStatus() { + var text = '', stats; + + if (state === 'ready') { + text = lang.updateStatusReady.replace('_', fileCount).replace('_KB', WebUploader.formatSize(fileSize)); + } else if (state === 'confirm') { + stats = uploader.getStats(); + if (stats.uploadFailNum) { + text = lang.updateStatusConfirm.replace('_', stats.successNum).replace('_', stats.successNum); + } + } else { + stats = uploader.getStats(); + text = lang.updateStatusFinish.replace('_', fileCount). + replace('_KB', WebUploader.formatSize(fileSize)). + replace('_', stats.successNum); + + if (stats.uploadFailNum) { + text += lang.updateStatusError.replace('_', stats.uploadFailNum); + } + } + + $info.html(text); + } + + uploader.on('fileQueued', function (file) { + fileCount++; + fileSize += file.size; + + if (fileCount === 1) { + $placeHolder.addClass('element-invisible'); + $statusBar.show(); + } + + addFile(file); + }); + + uploader.on('fileDequeued', function (file) { + fileCount--; + fileSize -= file.size; + + removeFile(file); + updateTotalProgress(); + }); + + uploader.on('filesQueued', function (file) { + if (!uploader.isInProgress() && (state == 'pedding' || state == 'finish' || state == 'confirm' || state == 'ready')) { + setState('ready'); + } + updateTotalProgress(); + }); + + uploader.on('all', function (type, files) { + switch (type) { + case 'uploadFinished': + setState('confirm', files); + break; + case 'startUpload': + /* 添加额外的GET参数 */ + var params = utils.serializeParam(editor.queryCommandValue('serverparam')) || '', + url = utils.formatUrl(actionUrl + (actionUrl.indexOf('?') == -1 ? '?':'&') + 'encode=utf-8&' + params); + uploader.option('server', url); + setState('uploading', files); + break; + case 'stopUpload': + setState('paused', files); + break; + } + }); + + uploader.on('uploadBeforeSend', function (file, data, header) { + //这里可以通过data对象添加POST参数 + header['X_Requested_With'] = 'XMLHttpRequest'; + // HaoChuan9421 + if(editor.options.headers && Object.prototype.toString.apply(editor.options.headers) === "[object Object]"){ + for(var key in editor.options.headers){ + header[key] = editor.options.headers[key] + } + } + }); + + uploader.on('uploadProgress', function (file, percentage) { + var $li = $('#' + file.id), + $percent = $li.find('.progress span'); + + $percent.css('width', percentage * 100 + '%'); + percentages[ file.id ][ 1 ] = percentage; + updateTotalProgress(); + }); + + uploader.on('uploadSuccess', function (file, ret) { + var $file = $('#' + file.id); + try { + var responseText = (ret._raw || ret), + json = utils.str2json(responseText); + if (json.state == 'SUCCESS') { + _this.fileList.push(json); + $file.append(''); + } else { + $file.find('.error').text(json.state).show(); + } + } catch (e) { + $file.find('.error').text(lang.errorServerUpload).show(); + } + }); + + uploader.on('uploadError', function (file, code) { + }); + uploader.on('error', function (code, file) { + if (code == 'Q_TYPE_DENIED' || code == 'F_EXCEED_SIZE') { + addFile(file); + } + }); + uploader.on('uploadComplete', function (file, ret) { + }); + + $upload.on('click', function () { + if ($(this).hasClass('disabled')) { + return false; + } + + if (state === 'ready') { + uploader.upload(); + } else if (state === 'paused') { + uploader.upload(); + } else if (state === 'uploading') { + uploader.stop(); + } + }); + + $upload.addClass('state-' + state); + updateTotalProgress(); + }, + getQueueCount: function () { + var file, i, status, readyFile = 0, files = this.uploader.getFiles(); + for (i = 0; file = files[i++]; ) { + status = file.getStatus(); + if (status == 'queued' || status == 'uploading' || status == 'progress') readyFile++; + } + return readyFile; + }, + getInsertList: function () { + var i, link, data, list = [], + prefix = editor.getOpt('fileUrlPrefix'); + for (i = 0; i < this.fileList.length; i++) { + data = this.fileList[i]; + link = data.url; + list.push({ + title: data.original || link.substr(link.lastIndexOf('/') + 1), + url: prefix + link + }); + } + return list; + } + }; + + + /* 在线附件 */ + function OnlineFile(target) { + this.container = utils.isString(target) ? document.getElementById(target) : target; + this.init(); + } + OnlineFile.prototype = { + init: function () { + this.initContainer(); + this.initEvents(); + this.initData(); + }, + /* 初始化容器 */ + initContainer: function () { + this.container.innerHTML = ''; + this.list = document.createElement('ul'); + this.clearFloat = document.createElement('li'); + + domUtils.addClass(this.list, 'list'); + domUtils.addClass(this.clearFloat, 'clearFloat'); + + this.list.appendChild(this.clearFloat); + this.container.appendChild(this.list); + }, + /* 初始化滚动事件,滚动到地步自动拉取数据 */ + initEvents: function () { + var _this = this; + + /* 滚动拉取图片 */ + domUtils.on($G('fileList'), 'scroll', function(e){ + var panel = this; + if (panel.scrollHeight - (panel.offsetHeight + panel.scrollTop) < 10) { + _this.getFileData(); + } + }); + /* 选中图片 */ + domUtils.on(this.list, 'click', function (e) { + var target = e.target || e.srcElement, + li = target.parentNode; + + if (li.tagName.toLowerCase() == 'li') { + if (domUtils.hasClass(li, 'selected')) { + domUtils.removeClasses(li, 'selected'); + } else { + domUtils.addClass(li, 'selected'); + } + } + }); + }, + /* 初始化第一次的数据 */ + initData: function () { + + /* 拉取数据需要使用的值 */ + this.state = 0; + this.listSize = editor.getOpt('fileManagerListSize'); + this.listIndex = 0; + this.listEnd = false; + + /* 第一次拉取数据 */ + this.getFileData(); + }, + /* 向后台拉取图片列表数据 */ + getFileData: function () { + var _this = this; + + if(!_this.listEnd && !this.isLoadingData) { + this.isLoadingData = true; + ajax.request(editor.getActionUrl(editor.getOpt('fileManagerActionName')), { + timeout: 100000, + data: utils.extend({ + start: this.listIndex, + size: this.listSize + }, editor.queryCommandValue('serverparam')), + method: 'get', + onsuccess: function (r) { + try { + var json = eval('(' + r.responseText + ')'); + if (json.state == 'SUCCESS') { + _this.pushData(json.list); + _this.listIndex = parseInt(json.start) + parseInt(json.list.length); + if(_this.listIndex >= json.total) { + _this.listEnd = true; + } + _this.isLoadingData = false; + } + } catch (e) { + if(r.responseText.indexOf('ue_separate_ue') != -1) { + var list = r.responseText.split(r.responseText); + _this.pushData(list); + _this.listIndex = parseInt(list.length); + _this.listEnd = true; + _this.isLoadingData = false; + } + } + }, + onerror: function () { + _this.isLoadingData = false; + } + }); + } + }, + /* 添加图片到列表界面上 */ + pushData: function (list) { + var i, item, img, filetype, preview, icon, _this = this, + urlPrefix = editor.getOpt('fileManagerUrlPrefix'); + for (i = 0; i < list.length; i++) { + if(list[i] && list[i].url) { + item = document.createElement('li'); + icon = document.createElement('span'); + filetype = list[i].url.substr(list[i].url.lastIndexOf('.') + 1); + + if ( "png|jpg|jpeg|gif|bmp".indexOf(filetype) != -1 ) { + preview = document.createElement('img'); + domUtils.on(preview, 'load', (function(image){ + return function(){ + _this.scale(image, image.parentNode.offsetWidth, image.parentNode.offsetHeight); + }; + })(preview)); + preview.width = 113; + preview.setAttribute('src', urlPrefix + list[i].url + (list[i].url.indexOf('?') == -1 ? '?noCache=':'&noCache=') + (+new Date()).toString(36) ); + } else { + var ic = document.createElement('i'), + textSpan = document.createElement('span'); + textSpan.innerHTML = list[i].url.substr(list[i].url.lastIndexOf('/') + 1); + preview = document.createElement('div'); + preview.appendChild(ic); + preview.appendChild(textSpan); + domUtils.addClass(preview, 'file-wrapper'); + domUtils.addClass(textSpan, 'file-title'); + domUtils.addClass(ic, 'file-type-' + filetype); + domUtils.addClass(ic, 'file-preview'); + } + domUtils.addClass(icon, 'icon'); + item.setAttribute('data-url', urlPrefix + list[i].url); + if (list[i].original) { + item.setAttribute('data-title', list[i].original); + } + + item.appendChild(preview); + item.appendChild(icon); + this.list.insertBefore(item, this.clearFloat); + } + } + }, + /* 改变图片大小 */ + scale: function (img, w, h, type) { + var ow = img.width, + oh = img.height; + + if (type == 'justify') { + if (ow >= oh) { + img.width = w; + img.height = h * oh / ow; + img.style.marginLeft = '-' + parseInt((img.width - w) / 2) + 'px'; + } else { + img.width = w * ow / oh; + img.height = h; + img.style.marginTop = '-' + parseInt((img.height - h) / 2) + 'px'; + } + } else { + if (ow >= oh) { + img.width = w * ow / oh; + img.height = h; + img.style.marginLeft = '-' + parseInt((img.width - w) / 2) + 'px'; + } else { + img.width = w; + img.height = h * oh / ow; + img.style.marginTop = '-' + parseInt((img.height - h) / 2) + 'px'; + } + } + }, + getInsertList: function () { + var i, lis = this.list.children, list = []; + for (i = 0; i < lis.length; i++) { + if (domUtils.hasClass(lis[i], 'selected')) { + var url = lis[i].getAttribute('data-url'); + var title = lis[i].getAttribute('data-title') || url.substr(url.lastIndexOf('/') + 1); + list.push({ + title: title, + url: url + }); + } + } + return list; + } + }; + + +})(); \ No newline at end of file diff --git a/admin/public/UEditor/dialogs/attachment/fileTypeImages/icon_chm.gif b/admin/public/UEditor/dialogs/attachment/fileTypeImages/icon_chm.gif new file mode 100644 index 0000000000000000000000000000000000000000..9ca4fb6a23c7ed528374426575c3e7f67730cfb7 GIT binary patch literal 923 zcmcJOy=xR;49270U`4Q~ICz36hzbru@Ut$0C6w

    O|E|nVb+VhLPxFEtyI^j`FqLyNd0EWpleq^){o+_2ylTHaqGF zO<^H5(sh%@qktPU&w(pp9-3Gs((CnPZEbBZ81Rip*?#=*AAA0G)`@(VL$#^?6S8qi z-Vg0MaQMyXC!K9~zh3K)&rGar-!b{?e)rh3&E1`oQ)AtaFLu8>vh-!*#^>7|90SDQAhmyv(gsfKv~ literal 0 HcmV?d00001 diff --git a/admin/public/UEditor/dialogs/attachment/fileTypeImages/icon_default.png b/admin/public/UEditor/dialogs/attachment/fileTypeImages/icon_default.png new file mode 100644 index 0000000000000000000000000000000000000000..50ac1cb1654c147225f6c99f98fa820d8b1d47d3 GIT binary patch literal 841 zcmV-P1GfB$P)co5FHFQKPb3$yKB3yz3uJ2{(i*w{Y&32Y&5pHX#fNS%^lB?7Jx7e!!R@$ zW0V*MWri^ri!cCJuK&9D^Ig~)02-}VrVlRsat{^*C5gDx3qnV6$+=~+!PF21FkmZ@ z8b~H%=~Nv3aQ@;fylx>sluRWqyg8GMN5*##@7VOdNHQ%N3Cf&vJG&}(BO_ z0GI~5dh^d~zu)gPH#)1!5T+sR()iww-#)pz`cI)Sn%1`>N($3(G-m*$wuS~`$(U{O z3G;I( z%j~rr>P1P%W??GsP=NTpKmX&MwYt}DZ~eRS;O_04GsmW;j~~@ibUGeLsHM{BJj|YC8%N`o7<+Z@C+_!oGc#1Cx`LO0hUGI$B7llhKIN?RNhM@52iI TG@H!B00000NkvXXu0mjfSaX$T literal 0 HcmV?d00001 diff --git a/admin/public/UEditor/dialogs/attachment/fileTypeImages/icon_doc.gif b/admin/public/UEditor/dialogs/attachment/fileTypeImages/icon_doc.gif new file mode 100644 index 0000000000000000000000000000000000000000..206fede4ee7495c3d4fa8dbbb76425e23566e9cc GIT binary patch literal 1012 zcmW+#T};hk7=Mn8YGYk-BW7+*XP!uF(_J6BXv?Neo2k~53o+@FE|ATt^)Y4hQe0@P zSYMk?afGon-bF^G(&-43w{{O_}gnhA@5fnj7M8-aCj50=y zVPnWvS{tp57Ngl{vQ4FpQbvhUY!um9(MFUJF~Ua3uCg|)42xklOh7WE4Jkunhz+3t zHlTrpWlWRhu}^6&TC>(YQGFd~m#uKGjDYE`Ri%LWZD&tI*hU=i4-s$()c}KNsKh9AfEd_-1{T@mY#TKmi;xWx{y>Y0S(uP3>_P>aLM((F zku(B;E{r2+xJ8u612VCVIG_oJ;Sj0;2GQ7rEa(6+umMf>M0Of&)Odu8AxQWGEh;Aa zaoAj)d)uaSLL0Ml6+7z$ZBuu$v#U-V_6Uwci{yy5H*s`WUt=M+p zn)~SevRiXicW3`B{d+b3x9iEs+fRYf&nr{kgLA)De=Y{eT~yySb+dP(rDxFpb)})X z_j>E&!pg?wKmecq_T{xM7^R)ifIlLFD0GNA!!9O99O)|$T@5?_qRt;vFf&kn_)FW? z_`GnRYjoh$4o~IE$IRoKH*V=YJ>#wBrOt`{dF~IT+>(|Pf8s;e(6dXaz8IS9e|j*t z=3Q*=kAlHxo(+-b@~2-GW_ZFWttoKza)`U8q34AEw<{?<%ICf3>%N_l-tOzE_U8}Q z7oYS!sEM2(ic1;U<#{}~=FT^Xy5lXG?+$z3UwdQvQQ7pP6mQ9-w=|Y>&o0$8Wu0G{ isn`^mx;yvvmFWdDjr#c zLa{?BIQR=Hso)@-gFi5$h(?e?1}9O3!1?a`KX}6zj=OvJ-n-BDNC6L6Km!tBLTo}4 zi^J?j?#VEBbr*N!T4rW$>LzYT7A&f{s;jsnNwHVVMP0-N6NB+4N|K{}~ZKoJoX!9fm} zBM(~o#KEm(O)!!sOVVPE zi-}EWVsRKLD07CIi5XHK*D_Nz6;q^KvS3lvL`*>SB*k8X8pJ?(^n)}xO*^QcB&d+A z2}aUn$yV~Ua!;X@Eadx`Qv~8*!H*R z1Jb}XTM)URaq3M_BZ+<>;dB>fia`oDqncq{}&s`b$QtO-@+w}C? z;Nq!~gPU6~Dz(9{-TvCj!(Htg`{x(uCg+CR6V+R1T7A<43$vfP-MtrguipE)w!F3Z LqusxL9gh72jO~@^ literal 0 HcmV?d00001 diff --git a/admin/public/UEditor/dialogs/attachment/fileTypeImages/icon_mp3.gif b/admin/public/UEditor/dialogs/attachment/fileTypeImages/icon_mp3.gif new file mode 100644 index 0000000000000000000000000000000000000000..b351a1f2a294cd0f8e145e20c2c455a38cad2001 GIT binary patch literal 986 zcmW+#OGuPa6h7I6wK1usMoI`3X2DsMWI-EEY2_v@7Zr3CQ7Q#xDA5CHkz|Fbmn^6$ zdu+7Vn5dzZIN3$9%xdyg;HxyPQD@YdxqbJ)yTdu>d!7H!$V}gndN`J1DL`cG)5a)c z#27Y)Y^Al)%4ji~jV9Yv+9+j|7{x}BofU0F84)9FgzPG7!^*H2X2S#|L)wrsB!<`! z3Sa{oSXjn1Sswe8)}l3QO_mmwQd)^ttQA=mXo}JzT38ENQJ7_=Sv0d|f<~-rQkp~) zYXU1&0}P^}60*<(F|Yv*EG&~XWNSQ8ij^Yk545O6l&})AcA)}I7R9WX;2xqdt4I{F zBG^M7kcn-?0sjyIhfobLh=xjxLI;R}4QODIP0qGaFXe8ekBOO~`@{5Ca>~WKU$L(MF9&xEO+jKhUCL zvLA=d)w#EAIw!O-J6Ex@PS7@WCp)|9#9@!%IJ8KPXnPY!hXr<^@j2j12oIh>6$*ux zmKHCUe`={p) zzwLH7IG43C5ubkIf@>L!QZh8)kBB8&*+5TM#qX_8Xe$_MO>#wd-P&_}=vih>^_H5o zg)25>S3JtEd6gfXvF(myC5ih_CjpcNI+~ z1pOIXrw&{QB)mA-kn*SH)JW$*yOgGMLYik+JFZE literal 0 HcmV?d00001 diff --git a/admin/public/UEditor/dialogs/attachment/fileTypeImages/icon_mv.gif b/admin/public/UEditor/dialogs/attachment/fileTypeImages/icon_mv.gif new file mode 100644 index 0000000000000000000000000000000000000000..26019b099d96b382a549fa383bd81315cd6d295c GIT binary patch literal 1001 zcmW+#TS!$=5S_p%q=$ihRGNrTSo%=|Wl4e&+5@B?2{ojLOjtg`N-j#~hfj#Gq+|;c z1QiB~BHGowB$g7jg(4^`Me}B48Di?a>h-!?`^?{*nOU>entf7Fq$C_VA4Xy1Co(p) zG0GS*hK(VcX>GJJT8w6+$rhD1N*N_au~B4uMH^8@#0VQ9JIdOyGAxGKFagPsHlz%R zAvS~r*nkEWhS5!Sj}4`@Xw6!aU5iX9twbx?{nprb}BStkT zO`?f4VJlbz45Yylv{1uhU;`Rh7$z&o<_J-Wl_IMTYmtd4VI^ecf(42!idiv1JxHNf zktkwCkOx0N6VtE*`auE;!5Uy74VGvH4=e^Ypn*l!Ia@}KU=gxLLLb&5V-_a(3b|l` zq7VzgM>q`wzzgj#8fsxB`~Xc%!wztQU?>D@fPpk7K?^*v7}$U&dm`J7GI9jrVlWc= zuofAUeH_+T=iavHoY30rT*dY}MqAe%@9d~!hdqL$&>}gc?M)mW7TAHtbHJ5g9yDRq z>S{0;TyY}M*Vot6)8lr#T`pI4`I8-K72A??<5Dl2EUe#KI(V?&yF0V`db_uxXX^Rz z{QI%#(Z9>f%S*wPz|x|BVSa9Ic6KEYSoHh-KA&&Fe)u^#IX*TvFficpcse>dT3TA_ z>guYhs_^uqmqOM+D8+#T{)jN5^@G%z>rH7pmwaOa4-`fm zE=u|sx$)W6D9^QNYQOk2Ei$$y(D*5)bJOYc8&k)--#thlPjXH4*Z#?Ajc?BX_V%)O z-Hhrk`u?>s=KkG>N6UP#n-Uv}+Y;`Tt<9{xw0UQ5$-=Lp($B3;TPuST`-(SY?4K+P X4d%*-doJfz=*#Bpp_0z7a!ULUk{Ai+ literal 0 HcmV?d00001 diff --git a/admin/public/UEditor/dialogs/attachment/fileTypeImages/icon_pdf.gif b/admin/public/UEditor/dialogs/attachment/fileTypeImages/icon_pdf.gif new file mode 100644 index 0000000000000000000000000000000000000000..bbb65c837dea9a6c28d6209ca1b1140a37988423 GIT binary patch literal 996 zcmW+#OGuPa6h47kZE6CejXiWDMGNUrrnSm4q(vaKDU@n)7n&%QMHv`Ts}dJNaY1Jm z1%)xttY%cue2lg@;j0pL1`5YVHoj^e%{0#KyZ>4JhjY$%zVAEtzgSgyy6lFFT$Cg- zHpCchj53CeA)AR9(MFUJHbSmT8mbqSu|M|C@L*ViDFS?Nuiguuo7lr0!NGr zX(1)VLf8t{00U{T1TECC7}$UY7KX_RvN=L&&03SyhqcI*(u%brD;F$KWTlxk6V!tg zdNnCctO@eq2WVm%c0fN!Kp|KI45Yylt>A&hzy>t1$U0}s$Pug*StFqjYmqT4Cin`u zV1c3{Rs;3ry4U%$;nF- zrBbn2EEn{ief)z6-Jp;EBfd`ky_8jVeTK&hz2O8aFtv^S73*9B2zWtF;HMPE?f}2k=uA(oM PSLc_Xzst?bp)>yhr3M#0 literal 0 HcmV?d00001 diff --git a/admin/public/UEditor/dialogs/attachment/fileTypeImages/icon_ppt.gif b/admin/public/UEditor/dialogs/attachment/fileTypeImages/icon_ppt.gif new file mode 100644 index 0000000000000000000000000000000000000000..ccb26fbebdff5521eab7418d22e99fbae6c1d08c GIT binary patch literal 1001 zcmW+#TS$~q5FViig{X~sv5e>~C`M52PqY*C`39biRR&OdL%%zX2G-<*@4v2#=EF&o(^Or%XH zt)_scWI{;6Qjn1g7AUfi%#sP} zK?=Q+gd~;(dGG@?F%3JQA0(gc0k$hWT1#y8Q>U^EiJ(_cNaAO=Ed9XQ}e*ob1A$rqR0<`46gx0%!XIm#cEx9b24x9#1v-6J4L2;{%(Yx0E;vP_|dsDD=Bqr6K zlHm7+$8t;U2TSW-{OnCS>CRfYv7yHk`q$jys&5*5AI!X%Ro!^Ls4C>TvM3?g5=?S; dtLf~)4_`YgyED9bxo14v@(;Dvr3@ER+J8}<4t)Rs literal 0 HcmV?d00001 diff --git a/admin/public/UEditor/dialogs/attachment/fileTypeImages/icon_psd.gif b/admin/public/UEditor/dialogs/attachment/fileTypeImages/icon_psd.gif new file mode 100644 index 0000000000000000000000000000000000000000..2e8743a2705b98b9c546c28c97fe724dd4668b16 GIT binary patch literal 1009 zcmW+#T}V|y5FX8kBEk#Si<*%J5ovK9!7{1n!IT1pEV7cg5JRb%rl^$FgQNr{MG-7& zA`xU1A_`tmEGaW%)l9|mH^r2+ydDOkN^7H)(PA_kO}44DQOYPWij5*WE82)MB1YH<*;Uqtm0>Z=h6zZ9v>|0k46z{; zzy>t1u#9Q4JoYKAMQhfYEG;Ufv=XgYE3zuk6s1M9uokkSFw07_XlBg>jab#BG>InG z1Xid97(_!QWT6LQU;`RhSSD-8)_9^6D@E2HXiU9wr2Ei%NyMkpF_J&`0YLK7n!ypd%%@ko>=}l@3A-fW=Hs`+liI4{u!_R zJ@o-MCR`=o!|wiwC~n{V@aK+;)v;~|ifp4t6BC)6X zNY-$)^uNy?@fJ-lrA;-xIvblk5|a^9wr8sK+EnAE)Y`6)xT`ZQ_lBpVDtf99_0~L{ z=}wQmmDtrA(ebGEQ;{!hVQw(_Nqo)eoe7sa%4^;g4K8%`{k=aLSLzy1U$>H7*_tKo z?hDH)jF-g$H!2(mEu+l^ml1h9)R3{_R zN+{4&BvL7dheA~CWs)UwOqF5B!RW`y}SP8Q*0ZGURX(1)VLMVU@ zXkcL((`0$<)5a)c*ch_3sI)d(8O=tMRe`3`Mk%A%D6*n3%i6Fq%!UaXv1&*gQij+N zSfLtV5Dk@(g&v534QOCtnXDmO<0-9KYqI`8i%Kc2SSzx2p#n`-nprc!Jw#zvlhVYR zU=MjfCbkg={6hpBLN&l38Y(dg9Uulapn*j;Ion2!$4Ze668=DoidiusSJ;ILG!?NT z`cdZNvdhFbs!K4KRqtCS*Yeh=C1gvL~|BXrsm>Tns_NA81iA z*^k5K>fGBlofF!aovYYcCup0xlbv04;;=_>99kqtw7rR=!vZ_d_#AL0ga=QcT3T8< z<=R-i>3I9ihKoM2lSwUuoqZ$2BQrmK#>X8XzYq$FpIcabGw!|J+&@0~jgD6Rn*IHD zYU*J_gIA>EUC-4U*8(b%5;IQ(N3L1D-lx5b+S*z!r;vBaQ?%dj<&*o3m6bEy-Cgzd z%gf7Nuh;E%eU|NsNa*$rtBcF| zyk*2Qx4ovf+`S`nruXcsh=cR3xoPb?(_#u%q!dP%WtCUfMD^y5?XF6Her}@Ud*@JN zR#JAj$JM;zL)wdit+9jteY2rawR5d!2K?9E8$Mq`ciulptVrE=A*%YMZ*gr`TuJ|{ z(z2$eFL}wMSGG+Dq$lSUuPlpR9NA3ywWC9IrH}KT<}duqn4ccJzBi_D;`Bu5K&ybF0xCVru0xy zLa>Ldm34nuFN?9hw?M?7)Rv5bKzH}sb=_Uxp7)#Ed^7XR^E~r@SFc?;bGE0MnyE}= zT^MWCTCtX`C6^gvjanntur=h0YOJbNvC3A-^@_2gR>TThAvem#vRW3)Y?**$$yicL zVu>vw0XCq4g<*7)+v7rw5o6dGa%+*P8Wp2#lpG5bMU99NHbRaRdRYyNVKz+Qh*3jo zNDQ$dYz1q8fizfx7HU`wY(N7G!{h|H93iT#N=_fvA`?+z6>@UH0!0>ORwk$iDfB9d z5-UL-`~Xc%!w%>N2`B_>fPpkvq7^)_7}$UY7CGl!899PQ$QcQJSc{BVnBXhqf(42~ zECe6nGz zR(E#l^?I#Vt4>c($K&x>EH*eeSSXZoxnJ}13)SlO_I9OSt5&wk<&sy(Z+eA7F`uuY zP^nb5w(z-JDwRCXD;765Hda?wve|4VlS!x3sZ=VNOePYEXf!%8F%gMG!r^c*7{t>* zQrW!=Lg@rJ;E!k~Y8)rqpWD-SyM1VBq23t_FUFtz{Mx?sD0C|jZ2C9Sbm)4^Oz+y? z)NEU5?fiq>-2Lw#Pj*iB{YZA*d>J~N?LXc*G#V&$2YN3)-Dis(c-P&AvG|vcl}Pm7 ha8EkcUOioGJ2wXc!R{Rj722e<$L literal 0 HcmV?d00001 diff --git a/admin/public/UEditor/dialogs/attachment/fileTypeImages/icon_xls.gif b/admin/public/UEditor/dialogs/attachment/fileTypeImages/icon_xls.gif new file mode 100644 index 0000000000000000000000000000000000000000..e86c1c6631b34ecd605b655baf3d7b1ae643d014 GIT binary patch literal 1005 zcmW+#Sx8n<5S~OS9}KaFd{U%W$zY07N%BQgM2kWK39;Zvw5XMcSs{ptw3ukd!DvAW zOUSa^MRP$(k0NGD>TjW9qHS6!zy3LW=bpD=X1;Cijg5;r5T52w{na(1=w-+K@8DhQJEd z0E1|#ge>$x3~WFH3(I5;*&0u2&03T72U=80X~kNRwF?z!veL|&3GN{ZvznA9)&zUV z12VCVIN%>5;1H?-2GLN7QRo0MumKG$vdP&tYCKkoY>@B=T2#!63Aw^9RG_Jd6(L6? zjR2qv;|LmV5he0~Ol%_#Xo6ulgld36G&Ug%IzS9;K$AU@okklq9^qmL68=DoiphQ) zHdp7~w&|SE#_U|h&N@Nc)Sc|?suPDjg5%I4Iil@N932+efyU>6D&6#&)VjN>|V zv-8~R>nCf{GTvkb-3s1$HZb}{bVgT3@w?(fB~dl5>apdK*}q@9UF`{1qs)Bgsw~gR z=r5V~h#Q}Nh}(M$j8Z5x;E(Vp+SX66eUHZ;aWxlg`{dh`oKe|bG})HBk$k7J>&nXF znW?~}na0bDp}hrOKKbvIaHygA>osR74c^g{8LV9&?8bPWVl?=6FUHC(Dw~C1%a`M-0X^ zUTDZ(=qbF}x@WkhBY(X3Lqp?a*Tv5PRVfK4D#P2o2A&MKE9$~CZ}>dh(HH(8{nF#G b^xlfyQ$tzRM+;I8wp1>Sze?TeO_BcrMy(F| literal 0 HcmV?d00001 diff --git a/admin/public/UEditor/dialogs/attachment/images/alignicon.gif b/admin/public/UEditor/dialogs/attachment/images/alignicon.gif new file mode 100644 index 0000000000000000000000000000000000000000..005a5ac65a3ddc9cdac037abdb5fe92267155a0d GIT binary patch literal 1051 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 literal 0 HcmV?d00001 diff --git a/admin/public/UEditor/dialogs/attachment/images/file-icons.png b/admin/public/UEditor/dialogs/attachment/images/file-icons.png new file mode 100644 index 0000000000000000000000000000000000000000..3ff82c8c488f53a7aff67fbe39742e3321183eca GIT binary patch literal 44070 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

    *vGSxI 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 literal 0 HcmV?d00001 diff --git a/admin/public/UEditor/dialogs/attachment/images/icons.gif b/admin/public/UEditor/dialogs/attachment/images/icons.gif new file mode 100644 index 0000000000000000000000000000000000000000..78459dea7b12ccbeec81d19ecdab22b1658e93b4 GIT binary patch literal 453 zcmZ?wbhEHbbY#$A*vtR||Ns9FJNP^N(4UCIf1{56|NHmvpFe+o|NadW2g{=nia%Kx z85lSjbU>mYGZarn*x(aH@fLZq!wgUiaA+%BrQuMGlI(3v}$4ket=c%G-JG_a6@d zUMtW1Dv_dMk(#;&JDULU);6IIt*+RD80Beh(v#{r8-@JE7rOMyrKZ@`PM+5- zK4PEn@UifH&1a7opNKNDvAy~H((Lt@PiCLrh`sqL^yyzFM}*_N9gV+*y1bvCcd{tw zP+atQ`ojjtR_?nOH&4iCw(0v^v}@~SfpwBi-JHA%0-p_?kEd#ga=ENn_|&M5?L?$c z!i1+jT>6R+ul!uQ+^$n$Hm~o7%Nb0wJ#GK7NE~>4aE?#6+>{R=oUZeJnouMg`B^J) rUi3;Xl^IQMkE|4#X6EZ{`gBG$ultcLuMHMNRKNMR>qv$%6N5DXx{1lO literal 0 HcmV?d00001 diff --git a/admin/public/UEditor/dialogs/attachment/images/icons.png b/admin/public/UEditor/dialogs/attachment/images/icons.png new file mode 100644 index 0000000000000000000000000000000000000000..12e4700163ac87fa38ae3d92a2c39d0fb4690fed GIT binary patch literal 2678 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 literal 0 HcmV?d00001 diff --git a/admin/public/UEditor/dialogs/attachment/images/progress.png b/admin/public/UEditor/dialogs/attachment/images/progress.png new file mode 100644 index 0000000000000000000000000000000000000000..717c4865c90a959c6a0e9ad1af9c777d900a2e9c GIT binary patch literal 1269 zcmeAS@N?(olHy`uVBq!ia0vp^f8U}fi7AzZCsS=07??9MLn2Bde0{8v^Kf6`()~Xj@TAnpKdC8`Lf!&sHg;q@=(~U%$M( zT(8_%FTW^V-_X+15@d#vkuFe$ZgFK^Nn(X=Ua>OF1ees}t-3#_`hBq$Z(46Le)Ln;eW^@CE2 z^Gl18f$@>14ATq@JNy=b6armi>cVAJd5X6R;MWawh(V&G(G=xXffXz1o@ zX=ZL{;B08&Z0-!x>zP+vl9-pA3bQv8XfIT+GhV$`&PAz-CHX}m`T04p6cCV+Uy@&( zkzb(T9Bihb;hUJ8nFkWk1Vs?Uzb>gonPsUdZbkXI3g8g7%EaOV0~10%hv-cqC)D(T zj?o7t52WM*69T3|5EGvGfgE`DNzDW1nId53*cQ_-&cMK^?CIhdQgN$ga=rIq1A(^5 zYKwg&`wo`WvF`u>{iFU|`!+wz>b#B?t8F4hxRm$~lz-tTH#6E8xZnKlv%`YRwvA{oKseqmK8(Gfx|> z#)dT+Zy!CGH{+89Q&m{rC!PyyIjq?Y9m+ziHPqr6qxfF`+2Qt=-KQ=fE8_j%1#Y2} z>NffN)P;AQIhrE)QQzeqbFS^A8(M1XGuQqTO<=fcH+M~2lzlL$Ao6teb6Mw<&;$U? C61Fb@ literal 0 HcmV?d00001 diff --git a/admin/public/UEditor/dialogs/attachment/images/success.gif b/admin/public/UEditor/dialogs/attachment/images/success.gif new file mode 100644 index 0000000000000000000000000000000000000000..8d4f3112b9d1df2147ed3b67d9736163dedd11e1 GIT binary patch literal 445 zcmZ?wbhEHb)L_tHxXJ(m|NsC0{`>#WKmY&!`~ULm|4%>v3rzVXIOUh{)L$ageu+>2 zB{Acd%*pZwE#>TlQSztb-KopJH+%!_|l-~7Ag*59?a z{_c7B@6_{ur(gU#_wwKE_y6vG`1j=VzZYNsfBgCX$DjXizW@L859r4KV8@~pia%Kx z85k@WbU+dyKQXY~a+p)#p(E9QVoA}-BeJtDJbfs+R&065YSGzOop#2q7tzUUTK@E- z1Qpqe*fm*b*T-Fam_8!ZPiJg?eRTb9ku+5;xVnw>Wr$>Ce}(b zvq{bgY~#~oR8Cparp&0%zbdUw!o*Z6ds70hP&$teqekA&7*16-748@%Mnl0vSqU6+ zOpICr!NSHY@7SLk+rBLP3&#jWP!Xxbb jiN%_{Rv%uKKTTNF#>acL^G5)OtDBg<-IWs>91PX~W`xy? literal 0 HcmV?d00001 diff --git a/admin/public/UEditor/dialogs/attachment/images/success.png b/admin/public/UEditor/dialogs/attachment/images/success.png new file mode 100644 index 0000000000000000000000000000000000000000..94f968dc8fd3c7ca8f6cb599d006ef3f23b62c7d GIT binary patch literal 1621 zcmeAS@N?(olHy`uVBq!ia0vp^8X(NU1|)m_?Z^dEk|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+m{l@EB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxSU1_g&``n5OwZ87 z)XdCKN5ROz&`93^h|F{iO{`4Ktc=VRpg;*|TTx1yRgjAt)Gi>;Rw<*Tq`*pFzr4I$ zuiRKKzbIYb(9+TpWQLKEE>MMTab;dfVufyAu`f(~1RD^r68eAMwS&*t9 zlvO-#?>2=9ZF3nBND}m`vLFhHXsTY(OatnYqyQCInmZhe+73JqDfIV%MiQ6rPIL(9V zO~LIJBb<8mfsWA!MJ-ZP!-Rn82gHOYTp$OY^i%VI>AeV;u(vXbonl~MI_~M>7*cWT z%njcRVMh`65C6~Q2yI{K`NBQQh9heAinXE1(JfB=Ul%M;Ke#x6g%L8^f5l4Te zj&BcK1znDIyZS2~eC7F3K+}tVTa$=u*HTU0W4>0#`+Qf%|GkyBERBs#$Y}P@k7@U2 zd#*XsYr~WGeCA1uSK>2HTD)g9mP}Xrpg$+`K&8dx2JS~bjCx(hj5}1;-8qn2_>|?> zp{d+2q{I0hbQS!U-jOut`kSEi+IhQJGmBl4O%se*W?OGKZ0Mp?XmGnRgezL^8vCJ4 z#-ek9(R&%4!h+;oXA~Mtbyie=u#0PDiI#!iX`%2?^@kRL8ma*r6?+*}W4e|_8~J&& z+-+*Ub3{dDcAIF|!MTDz0#78qKYeaeVU$wDOOs3cR=e5FZ*O2e-6xc{Uu=$;!s>*M z>nZ|V>zUp8-oE6^wXjV+_UOvuE&SORr`;3hnBKu~e3rzlY@NRjD|5Ui2t>^@Ve7jy z)2vT>u1vesjJgG`f;l_n`FmbR~b^~{VzXB}7CdU_pt>lO9l=E;X#4<2bZu32r~J^e^%TSISQ_Qm$= z7d{rOo2%^RUGseJkpn9(MWszUQdl(i&RN5PBgZ0d#S7ZipShU3W`>Nsy6C#pCD*KW zyxHW%b?m|pr;dF;L$saa#oaeO`u=>jkXTjl9*cLEvOD!Jdr4ooKJW9gY7?D{e?uM^ z`_}E4`0yR0boA=9>3>WXzUH{&pDfpZ;_2xb=j*pKsk#WyD%J#5t{1#azeB z4SJq8H2*dJVX$xugZHVh{7U`u4@oM|quz5j-hRJi{qwh1k5uNqu`W>3HJG&Y^R}6R z$Gq-HPue$sd${oT*XKO8zN>Oe_%K^bZNm3^-vf7@5X# + + + + + + + +

    +
    + + +
    +
    +
    +
    + +
    +
    + + +
    +
    +
    + : +
    +
    +
    +
    +
    + +
    +
    + : +
    +
    + :x:px  y:px +
    +
    +
    + +
    +
    +
    +
    +
    +
    + + + diff --git a/admin/public/UEditor/dialogs/background/background.js b/admin/public/UEditor/dialogs/background/background.js new file mode 100644 index 00000000..9a4a1315 --- /dev/null +++ b/admin/public/UEditor/dialogs/background/background.js @@ -0,0 +1,376 @@ +(function () { + + var onlineImage, + backupStyle = editor.queryCommandValue('background'); + + window.onload = function () { + initTabs(); + initColorSelector(); + }; + + /* 初始化tab标签 */ + function initTabs(){ + var tabs = $G('tabHeads').children; + for (var i = 0; i < tabs.length; i++) { + domUtils.on(tabs[i], "click", function (e) { + var target = e.target || e.srcElement; + for (var j = 0; j < tabs.length; j++) { + if(tabs[j] == target){ + tabs[j].className = "focus"; + var contentId = tabs[j].getAttribute('data-content-id'); + $G(contentId).style.display = "block"; + if(contentId == 'imgManager') { + initImagePanel(); + } + }else { + tabs[j].className = ""; + $G(tabs[j].getAttribute('data-content-id')).style.display = "none"; + } + } + }); + } + } + + /* 初始化颜色设置 */ + function initColorSelector () { + var obj = editor.queryCommandValue('background'); + if (obj) { + var color = obj['background-color'], + repeat = obj['background-repeat'] || 'repeat', + image = obj['background-image'] || '', + position = obj['background-position'] || 'center center', + pos = position.split(' '), + x = parseInt(pos[0]) || 0, + y = parseInt(pos[1]) || 0; + + if(repeat == 'no-repeat' && (x || y)) repeat = 'self'; + + image = image.match(/url[\s]*\(([^\)]*)\)/); + image = image ? image[1]:''; + updateFormState('colored', color, image, repeat, x, y); + } else { + updateFormState(); + } + + var updateHandler = function () { + updateFormState(); + updateBackground(); + } + domUtils.on($G('nocolorRadio'), 'click', updateBackground); + domUtils.on($G('coloredRadio'), 'click', updateHandler); + domUtils.on($G('url'), 'keyup', function(){ + if($G('url').value && $G('alignment').style.display == "none") { + utils.each($G('repeatType').children, function(item){ + item.selected = ('repeat' == item.getAttribute('value') ? 'selected':false); + }); + } + updateHandler(); + }); + domUtils.on($G('repeatType'), 'change', updateHandler); + domUtils.on($G('x'), 'keyup', updateBackground); + domUtils.on($G('y'), 'keyup', updateBackground); + + initColorPicker(); + } + + /* 初始化颜色选择器 */ + function initColorPicker() { + var me = editor, + cp = $G("colorPicker"); + + /* 生成颜色选择器ui对象 */ + var popup = new UE.ui.Popup({ + content: new UE.ui.ColorPicker({ + noColorText: me.getLang("clearColor"), + editor: me, + onpickcolor: function (t, color) { + updateFormState('colored', color); + updateBackground(); + UE.ui.Popup.postHide(); + }, + onpicknocolor: function (t, color) { + updateFormState('colored', 'transparent'); + updateBackground(); + UE.ui.Popup.postHide(); + } + }), + editor: me, + onhide: function () { + } + }); + + /* 设置颜色选择器 */ + domUtils.on(cp, "click", function () { + popup.showAnchor(this); + }); + domUtils.on(document, 'mousedown', function (evt) { + var el = evt.target || evt.srcElement; + UE.ui.Popup.postHide(el); + }); + domUtils.on(window, 'scroll', function () { + UE.ui.Popup.postHide(); + }); + } + + /* 初始化在线图片列表 */ + function initImagePanel() { + onlineImage = onlineImage || new OnlineImage('imageList'); + } + + /* 更新背景色设置面板 */ + function updateFormState (radio, color, url, align, x, y) { + var nocolorRadio = $G('nocolorRadio'), + coloredRadio = $G('coloredRadio'); + + if(radio) { + nocolorRadio.checked = (radio == 'colored' ? false:'checked'); + coloredRadio.checked = (radio == 'colored' ? 'checked':false); + } + if(color) { + domUtils.setStyle($G("colorPicker"), "background-color", color); + } + + if(url && /^\//.test(url)) { + var a = document.createElement('a'); + a.href = url; + browser.ie && (a.href = a.href); + url = browser.ie ? a.href:(a.protocol + '//' + a.host + a.pathname + a.search + a.hash); + } + + if(url || url === '') { + $G('url').value = url; + } + if(align) { + utils.each($G('repeatType').children, function(item){ + item.selected = (align == item.getAttribute('value') ? 'selected':false); + }); + } + if(x || y) { + $G('x').value = parseInt(x) || 0; + $G('y').value = parseInt(y) || 0; + } + + $G('alignment').style.display = coloredRadio.checked && $G('url').value ? '':'none'; + $G('custom').style.display = coloredRadio.checked && $G('url').value && $G('repeatType').value == 'self' ? '':'none'; + } + + /* 更新背景颜色 */ + function updateBackground () { + if ($G('coloredRadio').checked) { + var color = domUtils.getStyle($G("colorPicker"), "background-color"), + bgimg = $G("url").value, + align = $G("repeatType").value, + backgroundObj = { + "background-repeat": "no-repeat", + "background-position": "center center" + }; + + if (color) backgroundObj["background-color"] = color; + if (bgimg) backgroundObj["background-image"] = 'url(' + bgimg + ')'; + if (align == 'self') { + backgroundObj["background-position"] = $G("x").value + "px " + $G("y").value + "px"; + } else if (align == 'repeat-x' || align == 'repeat-y' || align == 'repeat') { + backgroundObj["background-repeat"] = align; + } + + editor.execCommand('background', backgroundObj); + } else { + editor.execCommand('background', null); + } + } + + + /* 在线图片 */ + function OnlineImage(target) { + this.container = utils.isString(target) ? document.getElementById(target) : target; + this.init(); + } + OnlineImage.prototype = { + init: function () { + this.reset(); + this.initEvents(); + }, + /* 初始化容器 */ + initContainer: function () { + this.container.innerHTML = ''; + this.list = document.createElement('ul'); + this.clearFloat = document.createElement('li'); + + domUtils.addClass(this.list, 'list'); + domUtils.addClass(this.clearFloat, 'clearFloat'); + + this.list.id = 'imageListUl'; + this.list.appendChild(this.clearFloat); + this.container.appendChild(this.list); + }, + /* 初始化滚动事件,滚动到地步自动拉取数据 */ + initEvents: function () { + var _this = this; + + /* 滚动拉取图片 */ + domUtils.on($G('imageList'), 'scroll', function(e){ + var panel = this; + if (panel.scrollHeight - (panel.offsetHeight + panel.scrollTop) < 10) { + _this.getImageData(); + } + }); + /* 选中图片 */ + domUtils.on(this.container, 'click', function (e) { + var target = e.target || e.srcElement, + li = target.parentNode, + nodes = $G('imageListUl').childNodes; + + if (li.tagName.toLowerCase() == 'li') { + updateFormState('nocolor', null, ''); + for (var i = 0, node; node = nodes[i++];) { + if (node == li && !domUtils.hasClass(node, 'selected')) { + domUtils.addClass(node, 'selected'); + updateFormState('colored', null, li.firstChild.getAttribute("_src"), 'repeat'); + } else { + domUtils.removeClasses(node, 'selected'); + } + } + updateBackground(); + } + }); + }, + /* 初始化第一次的数据 */ + initData: function () { + + /* 拉取数据需要使用的值 */ + this.state = 0; + this.listSize = editor.getOpt('imageManagerListSize'); + this.listIndex = 0; + this.listEnd = false; + + /* 第一次拉取数据 */ + this.getImageData(); + }, + /* 重置界面 */ + reset: function() { + this.initContainer(); + this.initData(); + }, + /* 向后台拉取图片列表数据 */ + getImageData: function () { + var _this = this; + + if(!_this.listEnd && !this.isLoadingData) { + this.isLoadingData = true; + var url = editor.getActionUrl(editor.getOpt('imageManagerActionName')), + isJsonp = utils.isCrossDomainUrl(url); + ajax.request(url, { + 'timeout': 100000, + 'dataType': isJsonp ? 'jsonp':'', + 'data': utils.extend({ + start: this.listIndex, + size: this.listSize + }, editor.queryCommandValue('serverparam')), + 'method': 'get', + 'onsuccess': function (r) { + try { + var json = isJsonp ? r:eval('(' + r.responseText + ')'); + if (json.state == 'SUCCESS') { + _this.pushData(json.list); + _this.listIndex = parseInt(json.start) + parseInt(json.list.length); + if(_this.listIndex >= json.total) { + _this.listEnd = true; + } + _this.isLoadingData = false; + } + } catch (e) { + if(r.responseText.indexOf('ue_separate_ue') != -1) { + var list = r.responseText.split(r.responseText); + _this.pushData(list); + _this.listIndex = parseInt(list.length); + _this.listEnd = true; + _this.isLoadingData = false; + } + } + }, + 'onerror': function () { + _this.isLoadingData = false; + } + }); + } + }, + /* 添加图片到列表界面上 */ + pushData: function (list) { + var i, item, img, icon, _this = this, + urlPrefix = editor.getOpt('imageManagerUrlPrefix'); + for (i = 0; i < list.length; i++) { + if(list[i] && list[i].url) { + item = document.createElement('li'); + img = document.createElement('img'); + icon = document.createElement('span'); + + domUtils.on(img, 'load', (function(image){ + return function(){ + _this.scale(image, image.parentNode.offsetWidth, image.parentNode.offsetHeight); + } + })(img)); + img.width = 113; + img.setAttribute('src', urlPrefix + list[i].url + (list[i].url.indexOf('?') == -1 ? '?noCache=':'&noCache=') + (+new Date()).toString(36) ); + img.setAttribute('_src', urlPrefix + list[i].url); + domUtils.addClass(icon, 'icon'); + + item.appendChild(img); + item.appendChild(icon); + this.list.insertBefore(item, this.clearFloat); + } + } + }, + /* 改变图片大小 */ + scale: function (img, w, h, type) { + var ow = img.width, + oh = img.height; + + if (type == 'justify') { + if (ow >= oh) { + img.width = w; + img.height = h * oh / ow; + img.style.marginLeft = '-' + parseInt((img.width - w) / 2) + 'px'; + } else { + img.width = w * ow / oh; + img.height = h; + img.style.marginTop = '-' + parseInt((img.height - h) / 2) + 'px'; + } + } else { + if (ow >= oh) { + img.width = w * ow / oh; + img.height = h; + img.style.marginLeft = '-' + parseInt((img.width - w) / 2) + 'px'; + } else { + img.width = w; + img.height = h * oh / ow; + img.style.marginTop = '-' + parseInt((img.height - h) / 2) + 'px'; + } + } + }, + getInsertList: function () { + var i, lis = this.list.children, list = [], align = getAlign(); + for (i = 0; i < lis.length; i++) { + if (domUtils.hasClass(lis[i], 'selected')) { + var img = lis[i].firstChild, + src = img.getAttribute('_src'); + list.push({ + src: src, + _src: src, + floatStyle: align + }); + } + + } + return list; + } + }; + + dialog.onok = function () { + updateBackground(); + editor.fireEvent('saveScene'); + }; + dialog.oncancel = function () { + editor.execCommand('background', backupStyle); + }; + +})(); \ No newline at end of file diff --git a/admin/public/UEditor/dialogs/background/images/bg.png b/admin/public/UEditor/dialogs/background/images/bg.png new file mode 100644 index 0000000000000000000000000000000000000000..580be0a01dff4c70c72f78a3f40186660ee8eee0 GIT binary patch literal 2810 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'+ this.point.name +': '+ ( Math.round( this.point.percentage*100 ) / 100 ) +' %'; + } + } + } + } + } +]; diff --git a/admin/public/UEditor/dialogs/charts/charts.css b/admin/public/UEditor/dialogs/charts/charts.css new file mode 100644 index 00000000..ac3c7645 --- /dev/null +++ b/admin/public/UEditor/dialogs/charts/charts.css @@ -0,0 +1,165 @@ +html, body { + width: 100%; + height: 100%; + margin: 0; + padding: 0; + overflow-x: hidden; +} + +.main { + width: 100%; + overflow: hidden; +} + +.table-view { + height: 100%; + float: left; + margin: 20px; + width: 40%; +} + +.table-view .table-container { + width: 100%; + margin-bottom: 50px; + overflow: scroll; +} + +.table-view th { + padding: 5px 10px; + background-color: #F7F7F7; +} + +.table-view td { + width: 50px; + text-align: center; + padding:0; +} + +.table-container input { + width: 40px; + padding: 5px; + border: none; + outline: none; +} + +.table-view caption { + font-size: 18px; + text-align: left; +} + +.charts-view { + /*margin-left: 49%!important;*/ + width: 50%; + margin-left: 49%; + height: 400px; +} + +.charts-container { + border-left: 1px solid #c3c3c3; +} + +.charts-format fieldset { + padding-left: 20px; + margin-bottom: 50px; +} + +.charts-format legend { + padding-left: 10px; + padding-right: 10px; +} + +.format-item-container { + padding: 20px; +} + +.format-item-container label { + display: block; + margin: 10px 0; +} + +.charts-format .data-item { + border: 1px solid black; + outline: none; + padding: 2px 3px; +} + +/* 图表类型 */ + +.charts-type { + margin-top: 50px; + height: 300px; +} + +.scroll-view { + border: 1px solid #c3c3c3; + border-left: none; + border-right: none; + overflow: hidden; +} + +.scroll-container { + margin: 20px; + width: 100%; + overflow: hidden; +} + +.scroll-bed { + width: 10000px; + _margin-top: 20px; + -webkit-transition: margin-left .5s ease; + -moz-transition: margin-left .5s ease; + transition: margin-left .5s ease; +} + +.view-box { + display: inline-block; + *display: inline; + *zoom: 1; + margin-right: 20px; + border: 2px solid white; + line-height: 0; + overflow: hidden; + cursor: pointer; +} + +.view-box img { + border: 1px solid #cecece; +} + +.view-box.selected { + border-color: #7274A7; +} + +.button-container { + margin-bottom: 20px; + text-align: center; +} + +.button-container a { + display: inline-block; + width: 100px; + height: 25px; + line-height: 25px; + border: 1px solid #c2ccd1; + margin-right: 30px; + text-decoration: none; + color: black; + -webkit-border-radius: 2px; + -moz-border-radius: 2px; + border-radius: 2px; +} + +.button-container a:HOVER { + background: #fcfcfc; +} + +.button-container a:ACTIVE { + border-top-color: #c2ccd1; + box-shadow:inset 0 5px 4px -4px rgba(49, 49, 64, 0.1); +} + +.edui-charts-not-data { + height: 100px; + line-height: 100px; + text-align: center; +} \ No newline at end of file diff --git a/admin/public/UEditor/dialogs/charts/charts.html b/admin/public/UEditor/dialogs/charts/charts.html new file mode 100644 index 00000000..70e23149 --- /dev/null +++ b/admin/public/UEditor/dialogs/charts/charts.html @@ -0,0 +1,89 @@ + + + + chart + + + + + +
    +
    +

    +
    +

    +
    +
    +
    + +
    + + +
    +
    +
    +
    + +
    + + + + +
    +
    +
    + +
    + +

    +
    +
    +
    + +
    + +

    +
    +
    +
    +
    +
    +
    +
    +
    +

    +
    +
    +
    +
    +
    + + +
    +
    +
    +
    +
    + + + + + + \ No newline at end of file diff --git a/admin/public/UEditor/dialogs/charts/charts.js b/admin/public/UEditor/dialogs/charts/charts.js new file mode 100644 index 00000000..37344fd1 --- /dev/null +++ b/admin/public/UEditor/dialogs/charts/charts.js @@ -0,0 +1,519 @@ +/* + * 图片转换对话框脚本 + **/ + +var tableData = [], + //编辑器页面table + editorTable = null, + chartsConfig = window.typeConfig, + resizeTimer = null, + //初始默认图表类型 + currentChartType = 0; + +window.onload = function () { + + editorTable = domUtils.findParentByTagName( editor.selection.getRange().startContainer, 'table', true); + + //未找到表格, 显示错误页面 + if ( !editorTable ) { + document.body.innerHTML = "
    未找到数据
    "; + return; + } + + //初始化图表类型选择 + initChartsTypeView(); + renderTable( editorTable ); + initEvent(); + initUserConfig( editorTable.getAttribute( "data-chart" ) ); + $( "#scrollBed .view-box:eq("+ currentChartType +")" ).trigger( "click" ); + updateViewType( currentChartType ); + + dialog.addListener( "resize", function () { + + if ( resizeTimer != null ) { + window.clearTimeout( resizeTimer ); + } + + resizeTimer = window.setTimeout( function () { + + resizeTimer = null; + + renderCharts(); + + }, 500 ); + + } ); + +}; + +function initChartsTypeView () { + + var contents = []; + + for ( var i = 0, len = chartsConfig.length; i
    ' ); + + } + + $( "#scrollBed" ).html( contents.join( "" ) ); + +} + +//渲染table, 以便用户修改数据 +function renderTable ( table ) { + + var tableHtml = []; + + //构造数据 + for ( var i = 0, row; row = table.rows[ i ]; i++ ) { + + tableData[ i ] = []; + tableHtml[ i ] = []; + + for ( var j = 0, cell; cell = row.cells[ j ]; j++ ) { + + var value = getCellValue( cell ); + + if ( i > 0 && j > 0 ) { + value = +value; + } + + if ( i === 0 || j === 0 ) { + tableHtml[ i ].push( ''+ value +'' ); + } else { + tableHtml[ i ].push( '' ); + } + + tableData[ i ][ j ] = value; + + } + + tableHtml[ i ] = tableHtml[ i ].join( "" ); + + } + + //draw 表格 + $( "#tableContainer" ).html( ''+ tableHtml.join( "" ) +'
    ' ); + +} + +/* + * 根据表格已有的图表属性初始化当前图表属性 + */ +function initUserConfig ( config ) { + + var parsedConfig = {}; + + if ( !config ) { + return; + } + + config = config.split( ";" ); + + $.each( config, function ( index, item ) { + + item = item.split( ":" ); + parsedConfig[ item[ 0 ] ] = item[ 1 ]; + + } ); + + setUserConfig( parsedConfig ); + +} + +function initEvent () { + + var cacheValue = null, + //图表类型数 + typeViewCount = chartsConfig.length- 1, + $chartsTypeViewBox = $( '#scrollBed .view-box' ); + + $( ".charts-format" ).delegate( ".format-ctrl", "change", function () { + + renderCharts(); + + } ) + + $( ".table-view" ).delegate( ".data-item", "focus", function () { + + cacheValue = this.value; + + } ).delegate( ".data-item", "blur", function () { + + if ( this.value !== cacheValue ) { + renderCharts(); + } + + cacheValue = null; + + } ); + + $( "#buttonContainer" ).delegate( "a", "click", function (e) { + + e.preventDefault(); + + if ( this.getAttribute( "data-title" ) === 'prev' ) { + + if ( currentChartType > 0 ) { + currentChartType--; + updateViewType( currentChartType ); + } + + } else { + + if ( currentChartType < typeViewCount ) { + currentChartType++; + updateViewType( currentChartType ); + } + + } + + } ); + + //图表类型变化 + $( '#scrollBed' ).delegate( ".view-box", "click", function (e) { + + var index = $( this ).attr( "data-chart-type" ); + $chartsTypeViewBox.removeClass( "selected" ); + $( $chartsTypeViewBox[ index ] ).addClass( "selected" ); + + currentChartType = index | 0; + + //饼图, 禁用部分配置 + if ( currentChartType === chartsConfig.length - 1 ) { + + disableNotPieConfig(); + + //启用完整配置 + } else { + + enableNotPieConfig(); + + } + + renderCharts(); + + } ); + +} + +function renderCharts () { + + var data = collectData(); + + $('#chartsContainer').highcharts( $.extend( {}, chartsConfig[ currentChartType ], { + + credits: { + enabled: false + }, + exporting: { + enabled: false + }, + title: { + text: data.title, + x: -20 //center + }, + subtitle: { + text: data.subTitle, + x: -20 + }, + xAxis: { + title: { + text: data.xTitle + }, + categories: data.categories + }, + yAxis: { + title: { + text: data.yTitle + }, + plotLines: [{ + value: 0, + width: 1, + color: '#808080' + }] + }, + tooltip: { + enabled: true, + valueSuffix: data.suffix + }, + legend: { + layout: 'vertical', + align: 'right', + verticalAlign: 'middle', + borderWidth: 1 + }, + series: data.series + + } )); + +} + +function updateViewType ( index ) { + + $( "#scrollBed" ).css( 'marginLeft', -index*324+'px' ); + +} + +function collectData () { + + var form = document.forms[ 'data-form' ], + data = null; + + if ( currentChartType !== chartsConfig.length - 1 ) { + + data = getSeriesAndCategories(); + $.extend( data, getUserConfig() ); + + //饼图数据格式 + } else { + data = getSeriesForPieChart(); + data.title = form[ 'title' ].value; + data.suffix = form[ 'unit' ].value; + } + + return data; + +} + +/** + * 获取用户配置信息 + */ +function getUserConfig () { + + var form = document.forms[ 'data-form' ], + info = { + title: form[ 'title' ].value, + subTitle: form[ 'sub-title' ].value, + xTitle: form[ 'x-title' ].value, + yTitle: form[ 'y-title' ].value, + suffix: form[ 'unit' ].value, + //数据对齐方式 + tableDataFormat: getTableDataFormat (), + //饼图提示文字 + tip: $( "#tipInput" ).val() + }; + + return info; + +} + +function setUserConfig ( config ) { + + var form = document.forms[ 'data-form' ]; + + config.title && ( form[ 'title' ].value = config.title ); + config.subTitle && ( form[ 'sub-title' ].value = config.subTitle ); + config.xTitle && ( form[ 'x-title' ].value = config.xTitle ); + config.yTitle && ( form[ 'y-title' ].value = config.yTitle ); + config.suffix && ( form[ 'unit' ].value = config.suffix ); + config.dataFormat == "-1" && ( form[ 'charts-format' ][ 1 ].checked = true ); + config.tip && ( form[ 'tip' ].value = config.tip ); + currentChartType = config.chartType || 0; + +} + +function getSeriesAndCategories () { + + var form = document.forms[ 'data-form' ], + series = [], + categories = [], + tmp = [], + tableData = getTableData(); + + //反转数据 + if ( getTableDataFormat() === "-1" ) { + + for ( var i = 0, len = tableData.length; i < len; i++ ) { + + for ( var j = 0, jlen = tableData[ i ].length; j < jlen; j++ ) { + + if ( !tmp[ j ] ) { + tmp[ j ] = []; + } + + tmp[ j ][ i ] = tableData[ i ][ j ]; + + } + + } + + tableData = tmp; + + } + + categories = tableData[0].slice( 1 ); + + for ( var i = 1, data; data = tableData[ i ]; i++ ) { + + series.push( { + name: data[ 0 ], + data: data.slice( 1 ) + } ); + + } + + return { + series: series, + categories: categories + }; + +} + +/* + * 获取数据源数据对齐方式 + */ +function getTableDataFormat () { + + var form = document.forms[ 'data-form' ], + items = form['charts-format']; + + return items[ 0 ].checked ? items[ 0 ].value : items[ 1 ].value; + +} + +/* + * 禁用非饼图类型的配置项 + */ +function disableNotPieConfig() { + + updateConfigItem( 'disable' ); + +} + +/* + * 启用非饼图类型的配置项 + */ +function enableNotPieConfig() { + + updateConfigItem( 'enable' ); + +} + +function updateConfigItem ( value ) { + + var table = $( "#showTable" )[ 0 ], + isDisable = value === 'disable' ? true : false; + + //table中的input处理 + for ( var i = 2 , row; row = table.rows[ i ]; i++ ) { + + for ( var j = 1, cell; cell = row.cells[ j ]; j++ ) { + + $( "input", cell ).attr( "disabled", isDisable ); + + } + + } + + //其他项处理 + $( "input.not-pie-item" ).attr( "disabled", isDisable ); + $( "#tipInput" ).attr( "disabled", !isDisable ) + +} + +/* + * 获取饼图数据 + * 饼图的数据只取第一行的 + **/ +function getSeriesForPieChart () { + + var series = { + type: 'pie', + name: $("#tipInput").val(), + data: [] + }, + tableData = getTableData(); + + + for ( var j = 1, jlen = tableData[ 0 ].length; j < jlen; j++ ) { + + var title = tableData[ 0 ][ j ], + val = tableData[ 1 ][ j ]; + + series.data.push( [ title, val ] ); + + } + + return { + series: [ series ] + }; + +} + +function getTableData () { + + var table = document.getElementById( "showTable" ), + xCount = table.rows[0].cells.length - 1, + values = getTableInputValue(); + + for ( var i = 0, value; value = values[ i ]; i++ ) { + + tableData[ Math.floor( i / xCount ) + 1 ][ i % xCount + 1 ] = values[ i ]; + + } + + return tableData; + +} + +function getTableInputValue () { + + var table = document.getElementById( "showTable" ), + inputs = table.getElementsByTagName( "input" ), + values = []; + + for ( var i = 0, input; input = inputs[ i ]; i++ ) { + values.push( input.value | 0 ); + } + + return values; + +} + +function getCellValue ( cell ) { + + var value = utils.trim( ( cell.innerText || cell.textContent || '' ) ); + + return value.replace( new RegExp( UE.dom.domUtils.fillChar, 'g' ), '' ).replace( /^\s+|\s+$/g, '' ); + +} + + +//dialog确认事件 +dialog.onok = function () { + + //收集信息 + var form = document.forms[ 'data-form' ], + info = getUserConfig(); + + //添加图表类型 + info.chartType = currentChartType; + + //同步表格数据到编辑器 + syncTableData(); + + //执行图表命令 + editor.execCommand( 'charts', info ); + +}; + +/* + * 同步图表编辑视图的表格数据到编辑器里的原始表格 + */ +function syncTableData () { + + var tableData = getTableData(); + + for ( var i = 1, row; row = editorTable.rows[ i ]; i++ ) { + + for ( var j = 1, cell; cell = row.cells[ j ]; j++ ) { + + cell.innerHTML = tableData[ i ] [ j ]; + + } + + } + +} \ No newline at end of file diff --git a/admin/public/UEditor/dialogs/charts/images/charts0.png b/admin/public/UEditor/dialogs/charts/images/charts0.png new file mode 100644 index 0000000000000000000000000000000000000000..9485e5ed8f83888e782eafae6f7505c79671a985 GIT binary patch literal 25306 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 literal 0 HcmV?d00001 diff --git a/admin/public/UEditor/dialogs/charts/images/charts2.png b/admin/public/UEditor/dialogs/charts/images/charts2.png new file mode 100644 index 0000000000000000000000000000000000000000..7c91a39ffac43e0867bec1df89b73e10e0b28c43 GIT binary patch literal 23016 zcma%j1yCJ9*X1Kf2u^SaP9V5@fQP$7aCdhJuEB!4ySoPn5Zv88xI^&ZJ1^hATYqis zR{cdmL%*4x?t5>ad+zBe!W87hkrD6_Kp+sZq=bkP2m}oU0zu`#zX5u@^PWh62F_4g zTmHPd0 z;$$Qolp!hTJ*W?vLN+W&bUN;%fR)T}+{Z|IY1g2hEWseE&ljej^HXcK+ha{E*c{>O z7wvj~EgEU!+Z0s>I_*#6*{JkH?4AcurVW3}BYv?ATKxpap>mNFb{M3kbmh%kuLHLV^K$pW*S~f#w07 z1r2Df$&E>X=0H5cn8dXIjS%qrq>kk~ro3UIQMw@W>k^;?q?zjxSE~M22m~3Xic+Le z6ZOF#=+7Zm9TA6I(2n3j0yGEWgJ7VUjE?!wr=^w6U}6g&@@lr}?K;`^7JvbFk?r zsj8ULNImBfAGOCRve#zjz4DtRXuOh$#>)YzeczP@{_eVSNmgAFA46=5TdmF4D}CRQd)n?2vw>0j2DL72$Vgb zOQ9+~hlOY54KtN}Xu)pmq)Ozc!xu{wsI&6QtK&`Pn~kH<616j3@}}XlSekH8B&V|o zZ~By^7~Gt9692_F-%{<6E0KR>PF%}`!o|0p-Xcb|U%}{O(X^S@6tl|1q`=Q3j314t z)x)e0+075RWyHQy4o!RYaIlYe=hb{5bVWMsl}_K+?PvkrJ61C2n^38nThYgGn&()R z=Y8o@0n2h3d6kxCHlH~I$#cn@3(uZ>1Ut5WRN9%w6{Wf|JcEVzp$^-!fBc@W0M+wzg$Iu#4$ zbu1{PX%-cBIXgRWI!3AJOP*PEZ*4AaFJ9l|mvxqu5!d%KGkWZ3Mk#O9CuqvKmwCq^ zs}xQvvweHu?@P=o@8=_U|DznoG3g3R7^fS=pvzgL=Z5c$ zB^m1@&n4Y7jtJ&%86TsbM_rergL&xKx74!pEVsZ0c#{~&H|6=@HEY=;+fp5?_4vY$ zQMtdf&cSCM`O7bJD1}lZg|jw#YTku6d{YN+kJvM>PS?17J(_af%=RZQk$!ESXnY>| z6$k^TW3xY=Nvl>>;q7}ZBCLBVa8uR{HSZAgjh45Y$N9Hiz>(dWlAimaS*3l@bf*Ww zU%cvB`BQ<2VrN`w9@G4ee#@_?>>aH1F9CX{8D)0(wZphae=!$|Z<%LH8hATMH~hx_ zRzP{=<;oS)(1|F1f>m3VaPi*2Cd@q%l*%qVS$)bI5NKQ+=FFPb%aityKl-w3GJmvxhDz)EH6j$P@vy}@@!znzrTyKo?fz_<=Vs*R z^1x+51Iug3A!%L@j&Ye1=2sd~m{9eBawc-A@N?wZ84)l)rXL9wE1|lqX`(sAPsP%5EMm+FhHhnFCqsgY6u-UrR*3bQI`=z=b7$>D&%e>plULy{TD zJOSnOt!4*~u6yp9Fv#x<0TEGFdb-u!Cs58Dk@xi!57AsbUP(tYG-Qe}d)+{jL+qjq zcX=oH_?QnFIjL-9uN#3G9tx5TlZ5{(2B#Y4qqdFfn@)HTs)-Pv`tIb`Jf+!)qP3EO|U4htARo-ZOXP@)@ z=NSo91E1jQ@h*T4^S3m_F#jWuc0YhYpc~KM{%?O0yhSCl?so;569H7h@8N4~VT}G~ z)X#swq{DRk93VCrK9m_UA%WzJa(O3l#Vo?MiFmk!bS=4c$b`k^>qA54jmF>`Ub zPw?F}c+!mo19q&@7VUz?Fqn*=KD@?x?dvV|@r?p0pNgJPtJ2Ss zT@vILAr1N=xWnS(la=OkTD^M&^uq%Wr{jS)rAscQ&CQXmsMdrVO{bexC}0S$toac9 zMt&_Zi^ftON%e?Ux{?SA^XYWs<@9PoKwiY-grR*mFyIr{`=VI(=5t(+4R4)QI2A~^ zPr9$e;Ek#IJ-sVEU?|(fH(-||Rn5Ml@r>#2KawnQP8##geO!L4(ICGBrIt2T-XOpx zOq2LEIlYfd_qf0dGb#X!9%qNX~z_8c|pLb|) z6TB1ds*{SjxS}lwg;lG>zwD9(%hVqz|Bc=_p;KyiBS_ot4o38SDE9RL#v&wATM?M* zfeMA7rFvAIViD7;=*P850H2o&ozqI=%jsUi(Oqs8+7>#zAG17;O07A{^N;7|qu-TB zREKCHLXh>y?eB~h;;YoT=3dt`R@zY+X1Jw*gc|tTBCFl=&S#faZ^*PBFsS!{-JKVR z?B6ZQ%h%hoA@@{$!*Ka|)b%~t>zbv7{Tp7w5s5Z5r`o$Dr;W4zxumUMl}cxo<@sEG z|AIO?L^)6jNL}HB1NosON>C8JY$bYUYno{!8Q?0pN}YbV5_Fl=+;~mp?5MeVDw0i~ zuh3xS;#xdIcL`FVY4p51`{)7|=rB4E=HdjZ4NX)ic>KZ|xCWHyx1#>1E4JelNP9pmfF>D_4*bpx{%rv7+zH$L5?euccl<$2q^b-Pwq6n88#1@G?)u1--A8w<3b!Z{vZDIioW;`5$c5&t3D&!tw9Qakefq-S~ zPmP*9Yn2rIEAfwZc1v$z=bQLW znlW`3oveerT-N{aK4WTzKJ5~p zE8L91e5D^P)ENZ=NHLexqjVCgUFH85HF>VzI&03C!aelW{TLY=8;fPnmk1! zXNTEyh&Pz8b05Xh+@6vEP6g!Swp{2|{(rvKK_Z-V5r!o811WWAkN-evD=JS;@;`je z8EL44ZVhpff?IC1QkzQR^Sq^N)mrif@Y4gACx@U=nMFY{jXF{!@fHSTp1d|;cj5at zi1jW;~r(+6)UY&N;|r1R2RU))kJw>Wz)W#Z7!v02oW zej@mq-1%v>>bW%HmYNqs?LpflWD51;M`tjnq?t+1a{O2ppJ& zQq3c0Pg@a;57~urb&sDf2gyyMe|sOSX&u(WGIspkB9H#OWfI$cilgUM`;e}1>uT_M z{WNbofoP-iHE;X+stVcVWU+Q=XlQC`N`gXZ8+zqklyQiO)K9Zbj*@Tno1afcZ*Sf-EY-4$j)n&+?9gPuJS+ zc9Zoe$@pAxZ0>*Cw+(DBHQ7Ap|Ik%8GVnkIo;0_gjC$tz2C{ zL%%6P83voM%1(*x5P=Rpz2t1GT0ON-BpOcUwNJd9iVj>fEqFgXD78gv{gP%aY@bWK z_7c91L^=2s({Y*)gc#B0O(+xyTq;6#@du~+KTl@Ban-fCTQjTYPSBjd;BVM z71h}Y`QXow*5~-l7P#we-f#RtJ|sY7n`2f$tr1OfJ?1|p zKVOQMv}VuxdjHMa#w6^d^$44UTJwi2>}W@xN;Hwc*OHo7{1#`If$z(swdPVtvZ|ih zgc9*?XZeywfs|+&s}UMc4lg!f6!5d<1es{k%x4wXw2JI|TCrIJSW;)O8_U1NCE8s0 zH~ncQbAboCxFB5~2~CHXvLUL92i^=`>f7V%S)!oaEKJedsN?x;STxAdb$xNq%bLY&YAy54*j`LbL3~cj?vf$akuk^ zM4R{&s06|<*^qd0+Tj1W(Fky3+dl!14Fq(eKstXp67qZfwR_pK15Baw&+|#U;sOs- z%^f%N-T0Gha1c71<0H?1PXXM63EcCmuHx|w{k*>r_1yfZe%9^j$ZCJK15TcPLdoN% zN~+lt8n}?~pN*cT3eHlLB6eYNq;QCB25)5f*sI#q?=E;JgAsAE+_%CG4=sSzGFIHd zf)tALCY=s@coEohQ5^pK?xIn{Exgy>s-6MUqY(4|1n2>9F~Eo1UWnc(Bnts}pF=IR zKR7&|mbg}lRy>TIDn(ppj%CJur69UA=&Ql-8oZ0c=X2P2@H|j)4S~b;xc5Lv!$D@Y zoj4w$n#Nw9;P`XJWPd@*tvv1>zWUmQUcXf;tN9$&p;Yt+ce@Bc9X>+#3%!zSQN>CB z(VBpCn!{DHdeY4Gwy%DDy+q=D8%ICju)BYi3O2PYhl$ybvhr0U=o^2DoY_MX%v@ke-tE#sgKSzuKPF?Zu}E1Erp$VGS>k% zR4AQ{pv96p8cQx7^?~~`pZNLUv98g1P!PiE_tNNgzOGJ}#G;m|eb4++c)dS^IU!<|8DrV;@wypqRg(QDEK~{A zrX5iCA1EI>KiuzUQ{~mu`ZS{XAtWGW>RgnIP{b!Mjx`u~O&UWyF#i;YosMxJ>wtAw*2Sl3Go_WAb}%V zRqks`=p%OQFqxG!qIJ@kO*5%_6RrY85-yn1c{ZHlt&7*u;*Po&)Tzv51HnzgNh2Jzn3(HMbBU(it{HCd4F>1q%ra3vWE_akfWH;JiV*E-o@Ane_qXn57iqMT!M> z`~h@*DRD!I-d@qXc!Mf|G>*M< zF@bu+W*?SB3>4s))*+Vn)`S#DuC+oSC3vs`3WUx35e0!@BK|2IlU8VcX$Z#OkNTqO|jGySWX4Enp1~u2HE}Cob{F zGhe9Ec|pB9S(+&!2hzoz5Ga7hSx*4X5t!ItQjnmxrgJ+JaKvH?1_iXT7ZR70ylbuH zn*wMmO&U6&eZHu`gLytzojvKmkf_Jm>JUQ)Ou>W(9hf1$nLN$L{PF`}IXHav{0hyc zB${+^?SHxvD?cECoC7vDH(Od-T%+G;k|vMv-K{#+*Vo(HJKH{o3?Vgoig@q%r%$6+ zjWu~>St0@Ldm(Z+KL}5s^zypL1+rML{9AUsz z$`B0*lnJPJX~@qIq;UWqg!k`3X>Xw5HS^7?0Ra=Vb|41AZ-CujYaL;pg@ ztX~RFon3(Kgav>e=b${$ETFWB9sno^GRFlb)edKtgX(i6>C37x6#@c*3eo&>=w#*FfeX1I z87W5;m_a^-4uEM%K!U{(66RL~7!4)psvG#Y1>wK8W&T@)$YV|b?0*kQ2aD{ zk|0CG8W3_IXm({ZS>P^mKMG@tGmCc}ni+mU1{UPkzu4w>&N}f~7#_@52IK?&mk75r zK+e_K*5HTKvpG;%UYC+EIYdReYs#2@p$7yLgs;A@GsP>+8T}Aq>$mH1IYfo}feQ?b z5Iz&{KQ%`D+Q%Ew4wD>rE2bHLQ$261>1ijHS&=I&;HFAD)is7ZQ;S~lwbQ&xabTA zuu^BJdAF17QkH7E7q0|ffA$Gm!D&N;jiXppu-N3w1wj4?fxb!e8cXv^R9=YV=yN);6f|z|l&K7a zSWz0V;?3T;R($nAsd5v%Oz~R9r4)bOSiU7U#7XLJU~=~7rxnM!PBRBh zKL3>Z#{p-7eMC@eHL_?m-z%6YO<|KYV%`@Z5#CY$hzTj7{nFf_LL+m8Ku6d!W)-D9 z9(%IsZ{n#3=Dm6LRo_9vfer<#B%PufKR(3bh+VW_WO(QYT*O{ zf(#y8IihJfSB_l@!mdz$RftvtW(PjgKl;Ibflypk_yK)_MqFAXTk~Jcd@WTu8qs^X zoXQtR_v2A{3Shqv&*HI&=g$11@i7edu-Fx1Aq6p-#ASf=0CER#6|$Mx=unU07W_MA ztcjuzl5eJpiT+)M1XTiE>u7xPgWW;G#8e4o%p}23lENWPZSCI_pW?1*00a_8t;}E5W!m>FnNwX^s=}042_WPQbO}KtUJLGdIotFGEw_xR^w5>V-i z0Cj~upl`{)PaX{m{J>ji@~5_rh~5Jut>63;6;e#8%XyUG4+?{ksYehJA z;oqa=$y!0WSupZy=D6w^KKsE#RENfFg^QY5%)dKfZPfh zTcV>QS6}<*!8qcSXchDX*+qkDy5hDjIctPWwJ`A4Z*+Pw+$1>S-+IL_d1`?_cu@`P<($q zGCAtM!VwaG2cG+$iUBV^WOw%6$BN@2?JocvI_YMXE3=@*A%np2UXQ$Pd!ntaeeS1eOco>hWv&{B&XN%cnF@OI2nUizjOtE3<`uh6h zIIe=~CK zF))_CP%+7Zw(-XROLO;>ynd!@X+h{hIjX#RqF|4utlh{q|L*MP-Shbiki-rB#fiNe zqQqSk2uo@UGauGbKz_E)o87^z0GZ}?+PglSS+Z`b$&4gHwMB~}a*~su3P57B%|?l` z#lIQMJENqO_M2^aogr)>2w zSCuoJb7Q4r)9w2`b&U|{64NloVQT~hmQo3!_{Uuq;K&C1(`+ek0h2o@&;iDrQ#8>k zSeSsiA@ACM)8$ShPK{DNt}Yn;efhjPJXnPp^wqYP7f|0%ZFD~MTeE1j_DHZ@`@5}4iCko)G%CUjKaS}={<8DFu7wmjJS7m`K(v!J z|69vPlJ_0A_fh-Z+T~OEeuUv9aO3);Eooi?fY0d=py7GrC@;;8ht6v&OZX)fPdp;W z1iO!f5d=%mx*MvF4OPMk*~tyaj`9(;t|liz++S1T7aXnSiauyblNqrUz z*`A^Dy;){-UOA!ut<(nEl+ZyE#bb0s4f5logop^=8%Vk4XQH8WR(kKoOeac7`BTnp zcf8;vK{)M5Zw3#lgf6gw`?Y^mPCk?0d%2B|hlhuQW4_6N9(7&<2Bgk1>&XMPzr}Lf z3P2j~p|RYANuptIvZ)4V+&d)WpDRfwaC9SW^ckCsPy4U)9S-z}M?kt@7i=#Uu8Bvl z#qclfp<&H*75TiaGZcYsbLYPsGrW8~BEYcbb6a}X>_vwRNv#U#j`I8ZmBuG7PDe~s z4Eu|%X|9e^@0s&ZXORIk)`!~3io)Qv=!-f$tdD}1E6m8Ka`)l=6$jW3+$mkC6x^4_ zsHbaxVZW2*n&v%|#*=4MoQNb>aPr*>{jilc(?Btxfiwt{4mLFork2#)eUS;qqOfu8 z?1CK%NFmoz&OC%+B9=?_nrC5E`~Gu-d^Q-JT%8Tk8B*NT#YKhQM;Hk_Dl64p71G>m zV~JFz!gZt)2rMv?UEgwI(Pz*Kbm&8M#H9n@kfOsYlTcJZtsu1c*EDs1fUm`x59#2W zJzJP`2hz|aV#iHpv3$o@3x-o9)RgnZpD+2Hx8;S8ba9^FI4&pQ@Yhuqfk;y-wd$W` z#^bF@HH}+JAYVMbvDhmnHJ-LtSZJyqb+IK4`dCXkgtoI56Oa!r#ze9-CsLs!E8-sm zFBXJV0PbxhYr>oEV$v|M3FboE1FK8tpLgs4=gK+9&(WPv%j*jkWKTH_d7m?%hIZrC zOgrwYeeXEU4_n@9(zDVVQjM09FOQ8Coixy5MPSRj2Y-D1aOV3h|&D35RzWB>r zuU0=K{sCCMJ{U<1xiY1}v``}+4>K2DgA_f~oYs1RD&4E2wtKk&dyF&UZO(PC#1i`a z%`nd!z}n8u=U%UG1-LflkOdB8Rp4oPEcpIBZ$FyxKYq<6+{qg6brtHDONplHc66YOhL?@kzOB9c$jQkFEon$yS`uFG7+i`~Z)jMk-4wurOGzuz1)sVpLn7l} zbF1pmfMpHt(3l-_`?yVYer+2v8XLoYvi1_Jw_5iU_)ms)ZZ@Kt&}lwne83aHTJ^c@ zu7!%F1i~!Ok^o;Vo!K{h72#3E|`KUbiM@-fIyni43=S52S^hYd+S_f3{NwFbC}RXMV5K z{lbtkz6JQnlNr@#2)ttT4j-HIS?OZEE0Kq5%k~A$Q9cAsd0=cvt-a9O@V?Ny#B;(9 zhfP2ZWjH8Q|!Hm)t4j^M|B8Yq(_xzIPZsJlKp z9w`cnvVF>TG|`2@2*%3rc7Cj{y`5LXv+s<&Y_4?Q&>5c5J6$r#X1fNnr#iA!Nfxv* zKVVj9+EuS*!3QlNuvhfqE<@;7TAo5*i}T_1`v5ujjPE4DVq8ozrlI89x|5}sF~1%{ z`d70<7v+n|S5)kSH%Gry$XDsIzhC{MPp*eLOXeUcM;Kp=p^2*;X1#nmSr$!!f@>{F zM1;08e;w1s%-*Cp<{RWSLk?sLK=#WK?nte$=Fr+zI*ptTXK_?m=|ZSEPiKR?8U2BE3<~ZCCUfUreKko*VIxC* zRZ5KH`29DhM1&2c1W@tQg@txBpeEF*NupD=Rx~s%Bb1(`n8(Lmhs7ez7d{{1Xc-64Tz-pHw z)`!9K+j-iqp{6K|Wq>BGuv&NCSb`0Io4{V?G?I|Rn4N4tt-4&23m8Mi%4oY~riY(Oy-$LFh z0pqwIop-pMoCIeGlPa&ayF3r@KjgNest$yysT_#k!V)4xDVU2cWnQclQPo;SEWV?4 z4N}Ii2%)SCF7#fG@qwxR$gTh9PY!y*@=$56A~#pj+kTcnBTIW3`p;BWv5Z5bz2O$i z+Pmv;k*(t9eF9IzT`R9^A+q(yrPdFH*;zk6KR3QU z>iOgi3*&oksY2@^I+LUG8psjNJK>3-Xx9eEhl_YEUy@MWjugw|)CN1%psE z(5Th@u5eJMYP8|p5?5!xoAheAeE-GZe0_lbY11{@qy-2Jo@KX==DUz$3&%gY=QvRY zqD9|`|31bu+POcZiu=5D&1bm7dRsnx$KowBDken#UYJ?IqWLv0nRGFZhs2_@oufGmp0-mTv50;ev~}k57!e> znH{DlbPwgX9)Ft7pMKkAKX0x}p<4e9Q=1guTdymMI$D(cSTU3k?R;<`B#qL z&J?;Z?=V7WmtuI86l&DrK?wpfhl%7amepK%qvgf3{`!4#Bo>t(>f-HiJXQAnnOhql z9Dqd){tF4hSKi!gzH!{>ST6e%<|3GH_IX~jQKgss*071gej5ZLIpfAAeb2ao$m^SbF&=_?0Bot@hy zK2o!aZU*B749YkdM|Ny4ND&A47?+6XEW4d93UoN{j0Rp@Ykui}aKk_^rWz~FXK~f0 zWsi^Mm*p9XfR3XdA`cY%rO$bcQW4Wre*LTL={m`ReUm$vV~Ju{i6uQjcS|w8OD3s~ zI@XEHP(h+RW_sSboB2By4g+qLw8%FlJ_Q7zA}tB)l-s6HQikVL5yp{=^-@Mr^l1(M zv=JzyGMj0ny~s)A=}q?Yw-DO);lkKOdh&&3&UuOSV-?ZkKynlyjYEr1@DKiUJ@b+n ztBsdj_F%}zis+Yfe>V*!2^AQU|INhQ=D14{UB^UxAfpRnFD0_tW)%k6D^bE!St%^U zooSZ%t?#melIWGfy{6U-TdkxE$lP*+F2a^wBAZUl>#aAFx!obaWZ#eeu%&O%_)H|= z^W;vG7%rCYw&tS7hHtZ5pZtwLlS@t2duW@iaC1+L7iDfKHr~hcRfUcjW6hKxFo}?O zER#@&8FxvYB^gS=zqR4~Xv$2Fr54>M@LCu-fr{5eI^{_(|Ao3!Hp;w=`$BG$8dyHC#`}D z$StP#RdmlD)xKZZ@t_y$mCUS|`}%E9%f94ZhwEs1#CD6Oyn;z+ z?>D{?Ap;E5u7m5BMF)ccYEG*9nQw$MEg~Kau3JyN1j%Mkp0*lohF1@B7K8;JT0RIk zIk;K|mIH}!$dTdxsup&^S$`DNUL1!gcceFPy$-g+CiRWv_^jX-Hno+;-x3-O$a?mV znu=1635C{tA>Grb!5B0~#LCRsrgK`~-(|N_>dHY22o183BG+RFUPHSfejUoDdt`5X z3#@Wx#jdmc(bsoh^kU+PfOwDirETN6F_M7u%U691d55*lqMB*uv1%v@dL&NJjRN;@ zUof9|3(!QaCJc@_G6>p!`|d|ML=k`Zy?kh{Kpo9Ng$IMxDY^LlI+QID!3RC=IEAFG zj}0%F3}AF*>C@F8puXQJ;Zd!@hzib)@d7A%ycj<$%Do>MjhA`f7hVcdrDM8E?d{39 z^-Gy?r<3(zQlhYiI5s6ptbID-ikfTKIIKdmn@JVXZc5-XgupJ+D3503!(*-i)N-iPJA;X@ zqJ+a^8ZGa}Ke{k5gi2~^;x1{AyDrV0Smv@(vxKq5s{Q&gwOVic2}3*fgBDfOv0!0? zfdutO<cL7dYB}WE2UNfY<&A$)D@^k)_8hjKhQ;ET{e|dUUF!hBb*d><|}U zr0&T?GGx4IfmPdQ>+#oa0sX(n6)WUOdZ|x`W3D||NFQ8@c`uI#!0$h z)&g^ba^!o%v17Z59Wj6#^0J|;J3U=Tk7x61?*8WN9{Xjng$^*TQYE zAHl=IIpP|3iYXZ%+%+vjp)3_YQqW+(#OorBPEDpLt&nWJcG)3ZxH7?i+%=m+ETWNCJ(I`9&Sn5Av_KcfPzIY=wO#bFa6k z8>ZY5PT5r!5|lMK$7Awfy?b}cmqH`n1|CMpId?571-6tM_KCIcLXQwbgCm%&hR4FR zecnj#6pgL2tw=V-Qy^0gb;}efF(4KOj})kzb9iB>ca)h+`>@(>2(80@$}_UmFQ{G- zZYP@@Ol6%aR}&x4NL_1fw5A?(xunuv0^llqHREtx;}FxVo+7k+)L`0QgePST%d}cZ z3NLZl8O?7Q0k0%%>*B8&Kr{r>Jrshz#86C&#LqbCtzKonoOa^kmehMr`c`4wV{cty zJ_MBdD;C-FW1`>VTZLk0-N-h&F82K&osAg|F4z6q_vq_-Ja1+8W-3vt#dtt=fcJu?FHJPmS^YTXR6T5V@JU0> zV1eBsO0iiG&N8p_aUIo{rCCG7yO!j~W#1yby!U?U#(kw8BTf6?_(*}_$?1g++H$Vp z(dMZgfeZoU@RCAhx&GhF{x;_uKDUn!Ei^q}LQl}cVVk|dVq%)Cpo5Pm%SR_O{WhI6 zqu(mO_O!Hg!z7K4rL?3p#b-#zkjTPGvZmKNMLBA?JBZgx?#SvZ_9TB`3yKLqmMkKn z=E7$WpsY1Cto*;4sZ>+|5{ zJ#d{pD7&K-I?>i_KOJ98P!($tq?VE{z?9^!+^SLc?It|ryMDo1U_cdx?)~{hyYp7^ z-uP7DtAQk{F{ilePbPnpouUH1ftH{qk57;CzW5W4w z6v8o>#!_*;xjCUIxD~0ud+FG4u;eVbMPT)}dEB%Wf#@hfE+pOlHD{4m)9GX53X}}2 z4&)~k=(cs2#{6Fhbf1>|>bK$<|u*_*`PG+1#In1?O6YiT?k3Kt1 zvXLq)g0*6D*$TX_EzZOvGUeI6BHPKueqEOQdh*CfG{S9pF0bpE(LplYN796mkdD#v zqh`B1tG*6nS+wOeFsPKdUx08HxlZ_(YJ&g6p>YI zOD6MaiKazh2^exr_y{mtJSwN|Fi`Mz_h0&GQZYm(+MaCQY&u#D_eVNwo9+ei;Ym?_ z%0v_SoZ})=`dh|pHY^xQR9lF2wEhQs5S2hD;RGpri7ICKb> zfCHAHY!6P4&FBor2t6pOYOKF_5qa8bnm%p*9Amv6-z38!y7VJ9D?ar{4OL)jkjzK* z_sBIUW~T~d+()Ao^`{cS78T!3bnu9Zf<;N9fe>W*{F577n7V|D6qI z7_i^RZZCd4@Gi4c_?`6)e@sNTP0C;^MdHTGWyy%ps!cX0c}5h_n~fG2QOnMh)ks55 z1`>LMV8Ae@i=~eb;|6XVMJ+WoE?S_XFmGCDVt%1uE)+VvqP<^*1SPHkEwKX^+NOSi zM_*wJ)mxj6&X_-~S{&3Y4yjr3OFu?sVOS(nW$HefgZH<`YgjRwPHSx5S~56f5)gjW zqlzJx668Y#!0oK__2rf6hvNk2>*m2|iEx+SVB}GGEIn`JX5%RlKKQKxl`swMDiXIv zZrw>ia5^cc4UbdzSj}*4CZ!20Eh#;vp+O8=-BQMOYg%8p!tbU5-A{ZcOU3KifAq*o zEl2fDs}Tpvw^EcOwrUlnThbclt0?opTpP~T$i`PXT=zNof#|wFd`RfjC`nnIrlmih ziF``UQArDoBa;$!bo~^I+hk+MV#Tc%@(I&F}Jhu{`_qAh%(xF-8K3b@>`B(&nTK_-O!c<4Awbf6!z$lrpSr(09#z(pF`n ztAL_HbFgb55FbRavWi6{BL&Sd@=*aMPmMqP;anXOCn;wpBH<`fZcj!yY)md^ZNz}1 zajPmIotfVG`D(R^#VJ_SGY@mt696gO$J^7DX1iv)v^7tPsBd~Dz@bkXpFDXpeEryh zy$PqVoY)T_QcjG2rXjaz%w(a{jMyfvR=Cy&q#`L>ky*qrIkse+(u@hQQk#wm#ZRVT zN|QcW?JKl|(J1QmFaFf5neNqGTCOo>>h7vR68Xdwb2DCEN5&H)&}I464q=v(k9NkP z`j-*cLf{ZZaXltBrU{``0okEUZz{ryYp;Xm)eOrHS9)=g=B3JH7*GrKFKOn)TY?X?EeW_giI$79h@9lBbS)N+tUIP}ZrRE|v~ZsqOYEjJGSQiK3B|EFE>&z> zjumKpqC9;j&uyR%O0lcaxjfIi70!DF=@gs;Rbz7DjkH06(~}gT1(dOJ#q942!z4e+rVW;F zF@0U*kSPe$CR5C{R;~+He=jYl6juNXn?9u&fmN?YV)%uDpol3D6TTJ?%@mxn`5kWu z91}_6dA}z%tWod^cN9A^nQI3~9+5KMPQF#by4jAD4D~anw#!l<7hOM*aSih@5k@cH z{@50==G~f~Er6ZW1qd|y_iXRY6#@R2*z1qaRRWfG>iFLqY1L~TVQJ?XYROI!TqS9z z8EW5GNYEN4HyED6e<{$hLu}*5^R&4M9Qcy_;r0QFl!1txR0Eg7m?POqyD$|KW1p5& zh?$kZIp2C4OVskd%1n3%=O?;zzNQg8J`o49pk}>mBjyQ@rj!9}Fct+Zg-k?6s14kj zPy(~}W&7U`ZF1&X}tj;j0TRxR<~5^3x(asmk>uBr zW*;wYR`28cZQ|XDL$?=kGE!rwbQtxvdw7;?(VsO!%cPZi@lr4SUSdN6K@IPD%np%i z4J$+0EzZ9go|`X!oF7e7Mb9J-22n z&lxBwyLv|hhOTd(u)C#}9z^aXe<_wd-SO0;S;I5yl^HP3O9(<$w~JZK%TzR~p|h9( zvaw%94pX4@w|diSPmh-|VrbY{qMCVNtoLjlZ<(0i7Tao;~FM z0#I35Z%l-m&vj%I68P-@HYedVD~KCSgHspR=44A(H(251mFsl~2<4r83*noSxxy3t zk0(R*c4MRCYo05zH0ctZjdn~vSqo>FM(65J7t;IBu2hDb&qY+Sniv*cY4`oFA~F?M zuc4CV-LLD=uwU<3YRODZKR%%jy&4H}qF5b%*H6|!G^}nF9u*l~_M~IA%6kg?+&j8# zavJB_^zz_T$hdQ&e9jqtN=jz>Ug`ZiNHKcNkXqzvr1Qgy zgU5E8`F5lYa~>eAYpV@O>;C-15>m+8TSa1cyCuOdO!pl#O`Wx#WPGA!ha49D>${!^ zq;*CGL5fcTnG~Tx^TR6#&)qmed%jnQ)dvpS!h#|~1#$1v!gaqsG=auU%@o)rKc%(g&bLd5x5LSXzt;>+CMZE35ayeFg!cKaqrkzhc{k zJcZ=_+4M>w(fdon5h^9WY_Rd#P_tKipywm|cUk|k4_(nm%sh+KSu#=tlO>$7W73NU zJ?Z1OZ!+`Rq2w9Wk?72La8|PG6==07c2np=aTc{~5>oHsBqhI*1_>%5Sj5ygPESsg zkZRyxE%oVBmmUZk)EKyn>sw%YtG@;*CL+Ozj-PU#&N%JgqFS#nwSN7uTXS6AYc9^y zA(L<2WuaVHsMPJS=rYteq`G5Shh%`jfi)qHm!zRpR9`etT1j7tTp4-)!H5RXPc3!y zG+3PKJQ7MLVo7I;^?&bRjKD~E_n`>6My;qGSrqhXST(&wRN^vp9DMC{3mE4&{HR(nx zlDTaQ(1xaSy!KLF74RwcXCya;NhR^EQz}mkEqn)LvfUpW2XD`Po_7w;ZPr_M5b&&A z_mm@&O|`{;G)-PL;tf!8<2dU$VsWFiMcEU&vb`f4K`WZau9q}^pWbUo*^xy$4OYY-2hCw*>!oaP-kt=<+^ho z&@19xdtn)AGym}@dV9I`Q zU^DkT$YQ5Ld&MxcIbEr8H*c0m1)^Af;*8s31oz=6U&fz))>o%U{X@7GH; z-^r)h3D2s$EPmo^`OwvEnEx0?B_L7vqv3L;=&r(@6}_&{X_tEr5<8~CU5JWK^oV4w zCb>&bk5^xPo5y5LaE^g!$|nH`*=uh-`bb5%LtH;1IORsJ0K5?SI_pt$QIz(pqr4LG zZ$Tsz$1@IfYO|h(LvPy)k<@Lgi}FO`eSJm-6>VZsqK1BswjHU%%$@L3N8f|k!qJeF z6f8xV8!vmzY_&K`ID(Z$^2%pdLl!?f=em)E`?IPbfaW(OZxklnnyQHmI|dZN+W`Vl zNN!DrWK&|;7l^l?$6?aOoQ6utQ7ssrJAacPUWAoXxf1%!Ot*)ds}P-hJsxq}Deh~H zHeF{9QR37i#5#@c^);hLHmQN ziB*CmEF&D=A01ti*5bN?&E%go+xQw9X5HQwHHJ%HB(Ab!=yGcIdiNp0|NQhnLp0o~ z@i9ni-12Y9o%dS4bB;NE$o!k1=4&SEuU=D9IdnU*D)twP4V2Di7#xebw^QJXQ0zvc z&W|s93s-MNP&y1aoy=vIo^Q>O4O7zL?#nPvB}J5eyODi#wnf;TGCe2Ryq7_IZMJ@! z*LVd}mX4~yfRSg>XUr>v5w77(kl`flVlf*vV>zve#|gDcHpfEs&sDWoG=58bLBRtJ zsJ&Ha?tkK{a2Mklj-NcI+jX=SObNykSDA{h>?HPeVdpNU98P{k&AhC`Aq4s1rCXBc zJ-$wvPMe0K(PSLYFa9K*3*(x853g>NrunU&J}d6sPW%L{o8qXq87$3{{^LCp%M~eT zUIOp!CRcAhpM}2K&JVy9KB+FU1ghEKd7K1i^H??sGVeROM8^hDJ$nQMajTSt4u#g~P z!U-u#=bbOB;Z2@M644>yg+h)AB8K~7Fkl+BmuDZ}DY7RfsS;OMhzIQwL_Al8C5yni zH!Z1zzb)m2W3Q~WC%PJYdmsJ!^5i?dXL;f`rh6Kr1ef!}uLwd)k!PW9T zxRz-a8Sp*EraShlfta_M>lm?9@5EAYYy#K(RLX^t*_ns^e(&L|b#|8-dxE)cZEmE9$!=N%UCDSg1U9j9 zQBlVmDgGdS%*T7HT2~;uw%yR7CS4!?n|07eK~4)&^A0_%HC;GCZx<@-Uer%xC14<; z9cpt^fQoXMLs%rfyID@rn%ZqCy2;4%ysKqqZfk4KSjcN&d+S6r#!cq@cp9HEeZD+t zl^I#pvU~sQzPCitM3JkIgnMmkHUESjLt*y2*Vl)P4L|&6kzr543p#(=2wl=-j#DEP z7D>60i{2fnZH3{XcNx$;4%!qwT)z3J_nWHHHk^ZnS$k-yX~5j%86>2)n8^d+>2m5ZZqZRj5CIxatsTuNQavKJ z5Y!t!r(AN#13zOwtUN4t$dFX_(+gS!WOB$;9q(k7rYRL1^+F??x;2Nfzx7gOyMia} z~!Bf>k_5P)~>^|6(NXNZmdhGH6Txq?Ek|i>MnxM#-eXasw zgPst}W!`sbPrwl_FM*5NJ(gGcpZXtS>N@zoul42x`;O<4DZqcu=SVD(lInPS78HPQ zEziC(`Hjleh23c~Qr4yZoSucGY+I&_T87|1MldOBalNfur0tA0J`4DUbPsONk&(qi z6VeEOHSbP3ySUg@@aVz>Gm}3I@o*KDD5NK!GSk6KWPCen-<(RG=f&-x-d=Xo5=y#? zADl3vO|EX?us?zvFiGGSNS}ahnAQ53EW5a=H-Lyhzi?SA!beV}fMyf!PSDQC~!Rloy zfna6U=^*-WQS_w|&pwfWMnO9}{vJ{)$RT*V?W*C*4t1Sc$*;Idv=E{4rpW5H7Aeoe z6=$RTCkxVC7g}6T6F9b#lpzf4GI4mDyZvt}bP-ocx1^~?7&@+l#SqH5f8x>V7-7;} zWHLeItWibygpswbgGx6Ot*1t|oi;4HSR*4=39qjEw#B)y^4V>v0L6QFxlj$TL8u%_ zcf-_JGH&GUF#V?P{^a^10&7Oe4_5;w8opMH#E0U zQt%z$GB!Ftn3>(?7{es>`%W4ug3SdCp?mhEDhBiNRY>U7)i$H+>)1ikrHsek zW9=KW3B$+ct@lP{n=N+0{tdb?+@MdH&6jb=3rC zU3zYPeRPqn(Na}A-d3TZ%gS{Cr87E;f~;qH|pQdhH4Y}8yOgcZW1tc+VJV>>W+>BLh$PyA17Ms zZ}s~J2Xr$Y;}w*FQ90 zwD!7a}P91isWc*1htc=%Ol8Y@9D;2Wyh9} zi?ag)0vx7m?~svM>!rtOWXtF72MkXocB3)M=GlThm|ce>nu)c~z}9#XfgUpU7aF5z z_nekn#!`1ENzky?ahAc2P8H2pSsYQ_QWWn%d(Re#VVK{MpxR~em1tdfU-^uVUrN4- zytRC+RCRW}va+&4s3~`nqda2!!3dHtaJR#0Rztnh`tk@OEYDB1b$V9ABk3zqV&$N>gt-EvH_PK22Rjyl=W# z=lFersfbv@8y|yV+o@l@fqYjN@lNgwn0ClK;4TJRT9FnR24~y^-QFud||R7GA^~dQa{M=o9amFp8U2>jS@M_NT@vu$o{@vHAg@{jgGba zr=Tk5Lb|Mo&es{tK;ZgL@?SWqKp@a2$v`Jyg!Pe`{cnLANE-TA0}t{HVgfYuK;sjj z_ysgU<;n(}$~l+hfRm{L29Uple#8LN{{L@$@X5sS2FB;~OQ82}37vqa8ThZMsXjhF zuM`vlf3j^jgV>^*jLUkL_YpFYbi#SaN^-FMoz|3FQPD9m;(#E0Y)tR<>-RD&*m;oL zR4_D4j%{#i>bvb2U;aq96jQnIlH3pKE*D@=Tl{mB zx^^4BV#&rgnctPl`hF$X)KH;K3~i-)J<{81RO#$ToGr4TJy1c2&s=A=RjG#$Ez#rB z&uzz$!SrE#w8<3AQuThmnYc{nUu~(W%TCRD4emBm=Bd_d>6eD;H-#u-xQwbq1};OV znENB3Ah6o#QsUJBP}Q=mN0<6 z#^g4m35>_E$Yc+38PRnlp;7;7DwqFtbXjqNV8Lut9*b%jvkXtF}65 zAFiuMUX>tWk;<4Pxb1ejWQs!Rws}~%tYd7ChobwgJ@7BJtBe&DJSUd&^9OZCaiyk} zENCTwiDXm$T1XD=cyE>I=}Nszdzj&uZcMa)h0UzL(y5fWgySJ(k-Z2tiJ>p_%C#tR zi!#jq;BXMy88y z|2iw>?l>*@aG4;sMM^*tOZXf+++cxrvZaiEc0m>@vHjLkWWNt%QTMZ+UoesF*G1{t zi8*}~wvUH|O^%!h#=ose>`iqLS*eb|S`OXq?m2;WBVO}X7^ znvNPvMx05@SqZ49zC#^6)zXc{P0N}-Y$}Sd>1-FRd~pQ3|9NIhfQf!X^u9N+;9PnW zyCO*Ccp6kCk6|#DD%SK=7dpDnMvY0Ux-Wx`om7?hc7pfVlx%n2n8oA>+aE4I2>PO(tZbYE_0C4r~%IxSx4}d_1dp^zg<8KrL*@N@u3MKQ?+^PU@ zZGt2iDwG_l-6KU=4gtUN4qb~pgruO#so9z^`#c1?_PczHsP!CB^tY?-cX6NMmL(3TYwKUVI4%3(C z(V2KMz#;c9$9i5&@GA z{s$yESwGw-?kc3P7_RjXXe%lGg1FfKLGQz#0z&~oIKb-?gn{nw40WP7d#>2c;=Wrj zp-Dq^SX3JHW@guS)U2+1eDj89flvUPZljJl5C7U2yUGPwk)L_Wo7{N{Yz=Y|Y2GQoV>F4eeYyB7+4Z6l3$iK+WFX`8`102Y@`um^3nO*x z;3l}ueFfkSnB1h5c{`CJPv+1j`2RAFetyD$bxe33OiiTQ_I^QyK1K?Q0;fE?#@E9imT%u}9 zH}85SEsbiwIMbiZ{S!O!68o_8jGjcH274H?5kpJG`naCjsx|xu@#H7g50a{qrae`s zxh;%*zFN@I8u9B|(fs5cKHbJQ8?#t1X2$j$XtQ3Vp+6!dZPfA)_q z@FOC>iry6FvBZP^!jQC7m|p_5*HhgsHRX{gjG zU~jlTA0=2p9xS%4+i7>g%KCg7JrkF}ndQkDpikoJl2(i7SSs9h zZjHZN7{XiUwfCX4{BltF-lWhgs#+pC+B)U<^eR5vbIlJwxM*MQ^-ty}3xZl=j zya>v8=IjQnGazT1Q-+L6yy2=l11~S-6+RinP+27|m~h`#?TIFxsEBK-x;=Z7!17nM z>P7{={7qO$Ws1#I)q*^I!AI>N#ei`a(Qz%+zdmzu2b{+{e z2$uY8Q$c8Sqv-uUP;PXJv-oECsw$AK4xHK)^K8TSXG$Nn7kcMfrk8I+Wzav_1`!cWED@>Z3OWVf^p7}a_hP*T-TJW+#}t`uQ3EA4asY&k(6!+?U75aT~w{3+IJf9|yH!BrELeV57RZMuZFeR=_;`vCv?1e4#- z?QT)Z_niVsl=7vw3*jr+*1S)5GQIi4_{&O4;` zwB};^;)wLPbvWE3Hf{i2DO=22obkEY$32V_zM15&Z!v|3y^xD*xc|F50euH2TDzOK zGDBvQ{q_j&AUdY+!XD~*`}9jYQKPPrrl*@x5eZjM`hG;J&e1=md|hA?*cqB+x_7y* zynLwQ?6vS(gJ6TX#Xzp;K%7Bb=uNk+>M*~1*&h{n6M`&|-|?Z(k$EBv7os#>2rY?< zs6meNf1IQxZR$=EP`if!lyHLS-+*+tfj|5T6lUQ|!Bmf&dTdeJ=PZh67`nwt-}MRcP} zqgP4Sl^IcrJh5}JRTe!ALq07Mld_cI%Bl*W3m!ZIR=*{_;8&Ap$z$!1u$Fpu z+|o8j0FGH+aHCTne;m14^~C3cn}y_V5u*8rEblJRd0teQKlJCC{7#PmhRGY&xK6tm zY|g8}>vrDvnm1b7>Bi3j!=Q`J^$a4YeCz8|J+@qVoArrK`$C;jl8siK9stMN7ZaFP z-rafsqf%ot=UQCm2dh({#ME*v&<1_Jwr3h~O@dXMGoATVi9~(U13=7gYO1&C7mKeL z)!1{QacB_$#H1%yxP}j7=oXys1G{Q^{wM=A9|0O5p64W|6Hyhm1?w#xwqNzm80x!2 z3ohhdg7G$0_pN0DfW9ZkCpG$8lnJ@&lf%?DBT-2sD6|#H2Hg8w_W~I*DOSh0-UbN0 zJ~5hG{q~)Z5iMBipWUeMDw7hL+x;<!4Ho-HcukY8I^v6U070v% zo;A95_6g}4KuWhDub#jF+=*XYDz204PECb0`1*?*ag7bLH~GB%4x2*CulbwnGDdj; zT-9z;U{{%}kl2muBWG=VIcOi%#yz9~LoJ2_^x`lUKrr~<+|u>(Nf7g7J9W-|$X(d_ z?3pwBl&w0`Mr_t0V>ivr%oJHRe>^;-SOui+i2#X7B9YjacOSws?Cp!Hs;Vp1Yg*l> zguid}o0>K{b|g!eRa8{e)Q|~^%uFF)CY;M_YHBJ56V6?P*nH-?l+>Hs7v*#kab1Hf;Oy(IbuG;<8HfFhPGpPSi zF#NPXWi5sK%&&us>l#YyQq4U5P{4G1rUt+{9b;zZi*7kxx80Zte^|OU+flbWpJPy9 zGCDYT1HEd+H>2u_YgpYB896N*7Xq>yCnhG6r9JUf0v@~Tb5qTc2NTQzUI*l@m63{W z_Zx57;4sX2h$HSB1YVt9DjUaYWrc)ucuxBVU<}jrQhiocBjg7yp}{65nj3B zw?7y_Ze~tdX|kGVt#nl$xE*g#i@CRxQ|Fg;8*nhvIgNWAB-HtM_HGoiKsrgMQ#zVf z1f!nymcDj1qThczc{0vg=4Y%Eo-1RV*E?zFZsqgpO|9rafMYKp|CA;X?l=JsUpAx3 zP(HFq0_~5-cYK1|#aZcquh2NY-pIv=8S*f~YkvKVDifQ7MoBG6l>%XI&DB*+%!^1)CBCq#tP;ht8X;(*?;G2dEiuGe_Skl_5e zH3*aS)^I+34>P#4b2c|O--x7E-Y?^m=JQC*r#3U}e%P^J0fb zceet(MOFsgKYqQ<$t!t(Mjx%cAwK-4jnesN*PY(aCguFwc zOdpVE14#W&C_m5TxP!^=fPK@0?z+8bRgwHu0f-drf`b)q`&v>Ru_L6&lDR3Qr2_+- zwzB-%y~EoMY!B)RDlfENVO6R6DuE1%VMJb;TTWYF!Y?TsyP2Z3VIs$qvW;@eme2baMB1m;kEBz_$7dS__ zX;)13`x!1CaQ4ak50vD=T#AOH?}}`|UDvh-mR=!`3mk&Yuhy~MEB8OtEWEeHZTIgu z_yui8cG{rtSan5Af4SKveV0Lw3GDu;Bew?#p>v2nD?90RXo~0>R?{{dU!v<;Joz}x zG-}JCqpJh|VJ+}|jdOzGOX9tE)!e|aD@DeYbU^7i=yX4Ix8yEeYt??@tu*Z;z%De5 zou6D|LTQsL67wQy92X4BG9AM{d*!J!rw9Ot!DX1Wf4nL?uUqk?n!=otzWadVUgT+R@|QBlTF)oTaakYb$pu{d9a~tm z6_dWM9{)nH=CNamB2<{#OY9iBpwI1F`4l2|ZRxzX;jNUtK)C~aL3(qY*Jg33?X1Y2 zHGpF*cwstYO>;i`Jw7Mux8JZOXvaE;mcP}>+PDEb#b54Z{@K+G=%hE;zbmE3Rm-Z% z$2}A^>?mDOV25iEnqkPgY2H}n{$^qk@`_G|Y_dJz@tGZG3DllL@noC+kEfe|&fL+%5`AuDZAIzLgp$N?EV>N-Y&%#cI-rSBoTx zC${^&|2`PCGR*Av4e1gJad%tQ7M@32Zg)%5;HEM(3u-{k2cts1nsfJtat8^NGJTS? zr=wKzHB=)tM9cgiii$3?F+!x(>3%NHW2z~ly}fl|+?TK!~wy{=;wCEoHB_z`qwVvbnoZ5HNoyWoT?n&VPR! zqTM$lStkuNph@KAwX4{Cdmg-4w>_G?_bQx=~V49Q6JoI;^aCR!kfp@L#Npv#X=&+|x&z9@gn74e?8fjoWpjULEob`OUhD z3N$oz=#lan1C@U%lI-yD^)C}Yqf_>+y7fzRo3*TpASv%qNds`4kVOBBwK3Gm3FS0E zhX&3x*78A_)%012735s9VtIE^{acczZ|p5sdK3kPV0#O64jQM66`B zQ`sS)4p&GfNv$O7YbvafH``X+l%a+DZh7U+0)t@AfNcaGa$xn)jvz<#Orscos3c=> zenIJS_IC;r)uOTtrAg-m&?!W%^{u;A+9m(g^8cFOe3fn*qrtTrzX}vz;eR=1Birb% z9QD0fgu;f@vDpt}siC#-H84HfTLZ&Ffk-~2} zkhFr4ESW?}^MC;PwX!rXYdO?&5Yrh}RCqg`Sy_HYRyp!*fBL1mI3{q?u9lns4oT9; zz_DI)i3S1YyPV~9J~Ncij>_x?)_2Y%=E4XM+qYoWDhYPa35Z7@RX$6p$cS{NRAM{GqEP~#rI2rhD^W&y$%U`2)a+tHFN7Xj5_ z?v>r_C4=<|z^&hbfEf~04ejLYnZBi#Z=s`JZ3^+9;j*A4`p-Bq?cn5vOsp#=laZn9 z=cIr@xm*R>X6tUZK0qGy%CPpmA90(%5_t_(Uw;@8)mh@A*STN&!a(dgT23b=qo8sZ zO0nd_uhYU^D=xypYOb%G&VHM8ZSBnB0V!@fGW7BBqln_7W^o@3)@w3!aB7>@2q4w2 zZo#HeXOkE}=4Wd=0BN0^#C-DZ zmWqXM;r2i~JvAn(FFw#+>n?%-K85Al%MreRSy{1ba{SygT5ZiLF1n_*$cHx++hc)* zI^Bogz+F9Cx;ItN6n1Zt9-TIhJ}03qLsHtMAgRxTn4Xp$B=4yar@~T(e=0rT;DcRN<6{95jfRHFt+pJV?Q|HM7G$ZBd*BvB z0X3Mn5X$9BV+8KujCX^o!O0Z*cUA2F?9tw(%e@pqr)wx`KwzqA{Z%jGYEuMA zDogXfYT^Ic3IyEEwVX5lsiHN ztqsiDNEOOm)=hBi{84{MLmv7JK`1J``OPjK3i-ez zlCbG^`Y>CbS4Y6EzzAc^rQe=I_)5${&cZ4d;eh(Iojl=J3?Klm8G0>~TgugcR(&Xo zBSaofDrDpaT4)ixSCQfacL4ql9N?Xl2g_ z+jwt?r8FXfdCx2Rrn$h6LiG!)V7IhxORI!*n}kGV7lGpFhY6jM@j(#X^;+X5pOjBV zuIYVSbg`M$obD_ujToTXP43{WZo^3d}&PxQ{XB4@3gbgGPaB8h|i= zccU{@jUdd8vfqh$45ijkGShnB{ro8QcSJ&jwO)_-=eFbQ;L~j;OLMe&nwf~(PJ7p# zEcn>v3Fv8duZ5;THi=ut>7L z1=5uNW3%KxJIJ-n?uXr1du$-|oswThl^48Ihm^*GKD7P9-vViaf7vOq%bBC@Gne3C zqJyw=#QhvRQJ*W6TVd>G>AqPyk3hb2XZoWK-S``yv{L%UQa%SpZf6yi~=P;ww(VDX!Xolg`dR>|&Ym2Ma&Jz@eo2-{r1h*cjW$)XT8=Vr@DLdwD zJh_tF5Sc9fX>M{Hmkeo*lm`El&qnOY*FziM&d8QN*K4P@uYzid#0wepNqtTg)I_i#dZm}jZ}|R zy?$S*br=<#1%q=5ZOa_mUl`id6YRJ!ALgMoQ-D~r2+?{_@$#N)t21Z5b#|sN@2FHB zFPyl}o~xtiscm5(a>@8s3oL0bs*lS|AwG(M?S@_pU}8>eyRmStbD5 zQoG^09Q#?|gWGB*LTAP1fhav|1V>+#{L!4Le{II<1woZ4aLf6z%)k1`-)-CFCNKc_ z;r_#v{NXM`0a2KB$SpX&r~J!ylQmaCMKz?qfSI|x7iED|u-T-%(PPp1Om}8HAK(aq? z-vZzampnxu1ZnkD`@Vw4#Y8^rUE;pd8`T9l2RL^)=l^{V^xuZ{v<>3XJ8FP3cxn5~ zRBJnulasUZDZnhh(aM4@(H-B8N)_9}O_-swfHn1tZ(I;Z%=}06ARfS+yV*RK!`~k6 PFatGZEv0+~v#0+BCDM7e literal 0 HcmV?d00001 diff --git a/admin/public/UEditor/dialogs/charts/images/charts4.png b/admin/public/UEditor/dialogs/charts/images/charts4.png new file mode 100644 index 0000000000000000000000000000000000000000..742006adc9cee3c07b1a390da6991a84d1da99d6 GIT binary patch literal 8344 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 literal 0 HcmV?d00001 diff --git a/admin/public/UEditor/dialogs/charts/images/charts5.png b/admin/public/UEditor/dialogs/charts/images/charts5.png new file mode 100644 index 0000000000000000000000000000000000000000..c49a29609d8e8f9bdf101e91021d40c1cb3d4175 GIT binary patch literal 47084 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'*4h4^s0#X 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 g*Z&=uhxp + + + + + + + + + +
    +
    + + + + + + + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    + + + + \ No newline at end of file diff --git a/admin/public/UEditor/dialogs/emotion/emotion.js b/admin/public/UEditor/dialogs/emotion/emotion.js new file mode 100644 index 00000000..6e158a91 --- /dev/null +++ b/admin/public/UEditor/dialogs/emotion/emotion.js @@ -0,0 +1,186 @@ +window.onload = function () { + editor.setOpt({ + emotionLocalization:false + }); + + emotion.SmileyPath = editor.options.emotionLocalization === true ? 'images/' : "http://img.baidu.com/hi/"; + emotion.SmileyBox = createTabList( emotion.tabNum ); + emotion.tabExist = createArr( emotion.tabNum ); + + initImgName(); + initEvtHandler( "tabHeads" ); +}; + +function initImgName() { + for ( var pro in emotion.SmilmgName ) { + var tempName = emotion.SmilmgName[pro], + tempBox = emotion.SmileyBox[pro], + tempStr = ""; + + if ( tempBox.length ) return; + for ( var i = 1; i <= tempName[1]; i++ ) { + tempStr = tempName[0]; + if ( i < 10 ) tempStr = tempStr + '0'; + tempStr = tempStr + i + '.gif'; + tempBox.push( tempStr ); + } + } +} + +function initEvtHandler( conId ) { + var tabHeads = $G( conId ); + for ( var i = 0, j = 0; i < tabHeads.childNodes.length; i++ ) { + var tabObj = tabHeads.childNodes[i]; + if ( tabObj.nodeType == 1 ) { + domUtils.on( tabObj, "click", (function ( index ) { + return function () { + switchTab( index ); + }; + })( j ) ); + j++; + } + } + switchTab( 0 ); + $G( "tabIconReview" ).style.display = 'none'; +} + +function InsertSmiley( url, evt ) { + var obj = { + src:editor.options.emotionLocalization ? editor.options.UEDITOR_HOME_URL + "dialogs/emotion/" + url : url + }; + obj._src = obj.src; + editor.execCommand( 'insertimage', obj ); + if ( !evt.ctrlKey ) { + dialog.popup.hide(); + } +} + +function switchTab( index ) { + + autoHeight( index ); + if ( emotion.tabExist[index] == 0 ) { + emotion.tabExist[index] = 1; + createTab( 'tab' + index ); + } + //获取呈现元素句柄数组 + var tabHeads = $G( "tabHeads" ).getElementsByTagName( "span" ), + tabBodys = $G( "tabBodys" ).getElementsByTagName( "div" ), + i = 0, L = tabHeads.length; + //隐藏所有呈现元素 + for ( ; i < L; i++ ) { + tabHeads[i].className = ""; + tabBodys[i].style.display = "none"; + } + //显示对应呈现元素 + tabHeads[index].className = "focus"; + tabBodys[index].style.display = "block"; +} + +function autoHeight( index ) { + var iframe = dialog.getDom( "iframe" ), + parent = iframe.parentNode.parentNode; + switch ( index ) { + case 0: + iframe.style.height = "380px"; + parent.style.height = "392px"; + break; + case 1: + iframe.style.height = "220px"; + parent.style.height = "232px"; + break; + case 2: + iframe.style.height = "260px"; + parent.style.height = "272px"; + break; + case 3: + iframe.style.height = "300px"; + parent.style.height = "312px"; + break; + case 4: + iframe.style.height = "140px"; + parent.style.height = "152px"; + break; + case 5: + iframe.style.height = "260px"; + parent.style.height = "272px"; + break; + case 6: + iframe.style.height = "230px"; + parent.style.height = "242px"; + break; + default: + + } +} + + +function createTab( tabName ) { + var faceVersion = "?v=1.1", //版本号 + tab = $G( tabName ), //获取将要生成的Div句柄 + imagePath = emotion.SmileyPath + emotion.imageFolders[tabName], //获取显示表情和预览表情的路径 + positionLine = 11 / 2, //中间数 + iWidth = iHeight = 35, //图片长宽 + iColWidth = 3, //表格剩余空间的显示比例 + tableCss = emotion.imageCss[tabName], + cssOffset = emotion.imageCssOffset[tabName], + textHTML = [''], + i = 0, imgNum = emotion.SmileyBox[tabName].length, imgColNum = 11, faceImage, + sUrl, realUrl, posflag, offset, infor; + + for ( ; i < imgNum; ) { + textHTML.push( '' ); + for ( var j = 0; j < imgColNum; j++, i++ ) { + faceImage = emotion.SmileyBox[tabName][i]; + if ( faceImage ) { + sUrl = imagePath + faceImage + faceVersion; + realUrl = imagePath + faceImage; + posflag = j < positionLine ? 0 : 1; + offset = cssOffset * i * (-1) - 1; + infor = emotion.SmileyInfor[tabName][i]; + + textHTML.push( '' ); + } + textHTML.push( '' ); + } + textHTML.push( '
    ' ); + textHTML.push( '' ); + textHTML.push( '' ); + textHTML.push( '' ); + } else { + textHTML.push( '' ); + } + textHTML.push( '
    ' ); + textHTML = textHTML.join( "" ); + tab.innerHTML = textHTML; +} + +function over( td, srcPath, posFlag ) { + td.style.backgroundColor = "#ACCD3C"; + $G( 'faceReview' ).style.backgroundImage = "url(" + srcPath + ")"; + if ( posFlag == 1 ) $G( "tabIconReview" ).className = "show"; + $G( "tabIconReview" ).style.display = 'block'; +} + +function out( td ) { + td.style.backgroundColor = "transparent"; + var tabIconRevew = $G( "tabIconReview" ); + tabIconRevew.className = ""; + tabIconRevew.style.display = 'none'; +} + +function createTabList( tabNum ) { + var obj = {}; + for ( var i = 0; i < tabNum; i++ ) { + obj["tab" + i] = []; + } + return obj; +} + +function createArr( tabNum ) { + var arr = []; + for ( var i = 0; i < tabNum; i++ ) { + arr[i] = 0; + } + return arr; +} + diff --git a/admin/public/UEditor/dialogs/emotion/images/0.gif b/admin/public/UEditor/dialogs/emotion/images/0.gif new file mode 100644 index 0000000000000000000000000000000000000000..6964168b947afc2cf76780a85f43d4f77c257b77 GIT binary patch literal 43 qcmZ?wbhEHbWMp7uXkcLY4+e@qSs2-Y0y+#p0Fq%~V)9{Rum%7ZDGCMv literal 0 HcmV?d00001 diff --git a/admin/public/UEditor/dialogs/emotion/images/bface.gif b/admin/public/UEditor/dialogs/emotion/images/bface.gif new file mode 100644 index 0000000000000000000000000000000000000000..14fe618ab58a9d46fee90074386b5581d47b92c9 GIT binary patch literal 27167 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 literal 0 HcmV?d00001 diff --git a/admin/public/UEditor/dialogs/emotion/images/cface.gif b/admin/public/UEditor/dialogs/emotion/images/cface.gif new file mode 100644 index 0000000000000000000000000000000000000000..bff947f5216a49d8cd7fdd8d4e825808b3d14f6e GIT binary patch literal 8603 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 literal 0 HcmV?d00001 diff --git a/admin/public/UEditor/dialogs/emotion/images/fface.gif b/admin/public/UEditor/dialogs/emotion/images/fface.gif new file mode 100644 index 0000000000000000000000000000000000000000..0d8a6afeb1cb2cc40c5d76f90630d8a9c1323ffe GIT binary patch literal 18479 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 Z1*(9jYzjdPQwkU=rV+{lAZZd106V&Waa;fZ literal 0 HcmV?d00001 diff --git a/admin/public/UEditor/dialogs/emotion/images/jxface2.gif b/admin/public/UEditor/dialogs/emotion/images/jxface2.gif new file mode 100644 index 0000000000000000000000000000000000000000..a959c90f7eb17adc455982b040244fd583eed888 GIT binary patch literal 40706 zcmW)ncRUr2_y6y{mwR!!cE-K-cFk<}+T+T#ciE#TBFV^Iwz5M>W=7Gq%Bt?QvWg@m z6;jcgB9!L+eZIf*IDeh?QIMUgJc1z$R8ZQ|Kfb_r_e{Z9w5lq*XQcc z9jVL6+Z7d@0e-Xx^soxJ!g&+_IKmeR_|x)cG)v5|>2%*>(b9OMU6b@q|En{{Mc>Fd zmAqBv=v4OHAng6n6B89pNx4*7QZPUF^6&SRMFNih3@mB5qAAnw?U?%>hx72^!5P}kmX;QMmWJ{1@n2Fw;g#Vtu4MMN(f#!H zXB|_tz)fkBO&l>)6C=DtUUmnTxRQsRw8{4rwUKskKS!E-V3Yyezf=Q#gm%1l#kzM{%aVio9lmP6|zV{ z1>aIGIoEb=%4a$p@b5!lSs=M}SM$_elk9Q7Pd`3|-f`NRs_Yo;XG}(LcK#b)n`mro zc=hFtX1?5;H*e0de0q9%6fTQ6HAO7|U>CR{?Y22qj_J`i2Al)bFf* z%b&fIpP%>d!Fx0s&A40oHE-%GXT_*Sd2V;IxFfr8y!=A<*=c$|4u|{jZRFn({oDOu z#lT}ad9r9O{_DX;*uC7&U-eFzj_4dp{K1_Vu`H_*4oEL+fHy*QC6WZWL|i`n(4p{rUnS@N2ks{X2mo*ZYX7H%|I-8j!2$f`lCWd0 zvV0`lMg5P?;n>>$E)UW-3x-P+LCQwaoA`QjV=E)8jn#r|i*#|G^Zs^wa2wvPaGw1i zRzZ`c|2z}bx~8PnFkb`9*h_IWC$h}5OD{c%@NR2JY+qGNn#aMVyArt$KLv>b&D^dC z3vE&?F;Kv^JG`a$R>JLKw!=nNx#hDQ&gj%jE?s+kXuubtR5(7Hy|`URc$!jY>Ab7MVNQ;8V&Gr&(FwV2RfwG{=fYoxhVN(QR05?( z?8A)q?$mD3!vWocD)5;OTjRS1;l}^2=+6ob{5j;a?pn!wg?HWzd!kWI6kJFR=CQJ( z{M;$N8pRux08KXfxhmodidzj3OFXzwrZ)?@JECT}KAut+&;2y(tZudegrgVgZV{Zf z>lQU~)i->v!UBS5Tn=TxsmuT7wM#6e&>kK{CsS%|;A`~*`b95+4NH_YZ^MTZc18)e zi9Pdro)uzofLn3h7ZOJCL2Q_!gH?ik#C7Du_n&U1{A-yr&sJ#NtjpJ5Zmx}-yY|VO zE)|MxkVJGi`dT%VTusmDbgzcbBp5oP(r64{F|QVWef%Q&>E}*h6I=nXsecH5%kzg^-JTi#qgd&_tt%giqOt#R5{gEGDy*K*`I}~d zM3FT!<=1Zsy}t_GF*E2?@%s>y_W>hfmu9U3bj|ijqU777R4(R{-Em*3NbUz?QvAA( zMg|#Nd0SfvtCkKPDmPDzdtFCc-kyn$O;+#1i`^qC+)ikOZ%qeB!v_#+2Jqj{Pn%ki z=_mbA1535K7FvKRPn03}*DM`VJ{XhqW2eVaT|8s*G|2)zfL41(l!yj+mr5gW>0`>^ z@!a#~_4siakxLdv-$&cytqZ}!2r#q}%2w<>O9)sBM4>DwJo-3!X~A)b@)4@)ZtN-G zA0Xh5Vh>Lu@GOXb2=-TT81LSSnpwg=;#?=Nd6b-dxwT)wT&@*izufVJ6a|U≶_= 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 literal 0 HcmV?d00001 diff --git a/admin/public/UEditor/dialogs/emotion/images/neweditor-tab-bg.png b/admin/public/UEditor/dialogs/emotion/images/neweditor-tab-bg.png new file mode 100644 index 0000000000000000000000000000000000000000..8f398b0958cdc5136a23b9745becc23a833aa325 GIT binary patch literal 216 zcmeAS@N?(olHy`uVBq!ia0vp^96&72!3HGF`uUCmDVAa<&kznEsNqQI0P;BtJR*x3 z7^L@rFypT63w8qqANLt@XPdKI8X22WQ%mvv4FO#q2N BK}7%n literal 0 HcmV?d00001 diff --git a/admin/public/UEditor/dialogs/emotion/images/tface.gif b/admin/public/UEditor/dialogs/emotion/images/tface.gif new file mode 100644 index 0000000000000000000000000000000000000000..1354f54b961211fb0253ccbd27a81da5dab5a639 GIT binary patch literal 19805 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
    Q#B)e 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℞!!p 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 Yl`jGz%R9~u(Lcw{+`;~ZL;$@14{R%g2><{9 literal 0 HcmV?d00001 diff --git a/admin/public/UEditor/dialogs/gmap/gmap.html b/admin/public/UEditor/dialogs/gmap/gmap.html new file mode 100644 index 00000000..c4cbfe69 --- /dev/null +++ b/admin/public/UEditor/dialogs/gmap/gmap.html @@ -0,0 +1,89 @@ + + + + + + + + + + +
    + + + + + + +
    +
    +
    + + + \ No newline at end of file diff --git a/admin/public/UEditor/dialogs/help/help.css b/admin/public/UEditor/dialogs/help/help.css new file mode 100644 index 00000000..4478475f --- /dev/null +++ b/admin/public/UEditor/dialogs/help/help.css @@ -0,0 +1,7 @@ +.wrapper{width: 370px;margin: 10px auto;zoom: 1;} +.tabbody{height: 360px;} +.tabbody .panel{width:100%;height: 360px;position: absolute;background: #fff;} +.tabbody .panel h1{font-size:26px;margin: 5px 0 0 5px;} +.tabbody .panel p{font-size:12px;margin: 5px 0 0 5px;} +.tabbody table{width:90%;line-height: 20px;margin: 5px 0 0 5px;;} +.tabbody table thead{font-weight: bold;line-height: 25px;} \ No newline at end of file diff --git a/admin/public/UEditor/dialogs/help/help.html b/admin/public/UEditor/dialogs/help/help.html new file mode 100644 index 00000000..9e50060e --- /dev/null +++ b/admin/public/UEditor/dialogs/help/help.html @@ -0,0 +1,82 @@ + + + + 帮助 + + + + + +
    +
    + + +
    +
    +
    +

    UEditor

    +

    +

    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ctrl+b
    ctrl+c
    ctrl+x
    ctrl+v
    ctrl+y
    ctrl+z
    ctrl+i
    ctrl+u
    ctrl+a
    shift+enter
    alt+z
    +
    +
    +
    + + + \ No newline at end of file diff --git a/admin/public/UEditor/dialogs/help/help.js b/admin/public/UEditor/dialogs/help/help.js new file mode 100644 index 00000000..9a2272e3 --- /dev/null +++ b/admin/public/UEditor/dialogs/help/help.js @@ -0,0 +1,56 @@ +/** + * Created with JetBrains PhpStorm. + * User: xuheng + * Date: 12-9-26 + * Time: 下午1:06 + * To change this template use File | Settings | File Templates. + */ +/** + * tab点击处理事件 + * @param tabHeads + * @param tabBodys + * @param obj + */ +function clickHandler( tabHeads,tabBodys,obj ) { + //head样式更改 + for ( var k = 0, len = tabHeads.length; k < len; k++ ) { + tabHeads[k].className = ""; + } + obj.className = "focus"; + //body显隐 + var tabSrc = obj.getAttribute( "tabSrc" ); + for ( var j = 0, length = tabBodys.length; j < length; j++ ) { + var body = tabBodys[j], + id = body.getAttribute( "id" ); + body.onclick = function(){ + this.style.zoom = 1; + }; + if ( id != tabSrc ) { + body.style.zIndex = 1; + } else { + body.style.zIndex = 200; + } + } + +} + +/** + * TAB切换 + * @param tabParentId tab的父节点ID或者对象本身 + */ +function switchTab( tabParentId ) { + var tabElements = $G( tabParentId ).children, + tabHeads = tabElements[0].children, + tabBodys = tabElements[1].children; + + for ( var i = 0, length = tabHeads.length; i < length; i++ ) { + var head = tabHeads[i]; + if ( head.className === "focus" )clickHandler(tabHeads,tabBodys, head ); + head.onclick = function () { + clickHandler(tabHeads,tabBodys,this); + } + } +} +switchTab("helptab"); + +document.getElementById('version').innerHTML = parent.UE.version; \ No newline at end of file diff --git a/admin/public/UEditor/dialogs/insertframe/insertframe.html b/admin/public/UEditor/dialogs/insertframe/insertframe.html new file mode 100644 index 00000000..7f1f3e9a --- /dev/null +++ b/admin/public/UEditor/dialogs/insertframe/insertframe.html @@ -0,0 +1,98 @@ + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + +
    + + +
    px
    px
    + +
    +
    + + + \ No newline at end of file diff --git a/admin/public/UEditor/dialogs/internal.js b/admin/public/UEditor/dialogs/internal.js new file mode 100644 index 00000000..434fde2f --- /dev/null +++ b/admin/public/UEditor/dialogs/internal.js @@ -0,0 +1,80 @@ +(function () { + /* eslint-disable */ + if (window.frameElement.id) { + let parent = window.parent, + + dialog = parent.$EDITORUI[window.frameElement.id.replace(/_iframe$/, '')], + + editor = dialog.editor, + + UE = parent.UE, + + domUtils = UE.dom.domUtils, + + utils = UE.utils, + + browser = UE.browser, + /* eslint-disable */ + ajax = UE.ajax, + + $G = function (id) { + return document.getElementById(id) + }, + $focus = function (node) { + setTimeout(function () { + if (browser.ie) { + var r = node.createTextRange(); + r.collapse(false); + r.select(); + } else { + node.focus() + } + }, 0) + }; + window.nowEditor = {editor: editor, dialog: dialog}; + utils.loadFile(document, { + href: editor.options.themePath + editor.options.theme + '/dialogbase.css?cache=' + Math.random(), + tag: 'link', + type: 'text/css', + rel: 'stylesheet' + }); + var lang = editor.getLang(dialog.className.split('-')[2]); + if (lang) { + domUtils.on(window, 'load', function () { + var langImgPath = editor.options.langPath + editor.options.lang + '/images/'; + // 针对静态资源 + for (var i in lang['static']) { + var dom = $G(i); + if (!dom) continue; + let tagName = dom.tagName, + content = lang['static'][i]; + if (content.src) { + // clone + content = utils.extend({}, content, false); + content.src = langImgPath + content.src; + } + if (content.style) { + content = utils.extend({}, content, false); + content.style = content.style.replace(/url\s*\(/g, 'url(' + langImgPath) + } + switch (tagName.toLowerCase()) { + case 'var': + dom.parentNode.replaceChild(document.createTextNode(content), dom); + break; + case 'select': + var ops = dom.options; + for (var j = 0, oj; oj = ops[j];) { + oj.innerHTML = content.options[j++]; + } + for (var p in content) { + p != 'options' && dom.setAttribute(p, content[p]); + } + break; + default : + domUtils.setAttributes(dom, content); + } + } + }); + } + } +})(); diff --git a/admin/public/UEditor/dialogs/link/link.html b/admin/public/UEditor/dialogs/link/link.html new file mode 100644 index 00000000..55ab4d1e --- /dev/null +++ b/admin/public/UEditor/dialogs/link/link.html @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + + + diff --git a/admin/public/UEditor/dialogs/map/map.html b/admin/public/UEditor/dialogs/map/map.html new file mode 100644 index 00000000..e763b8eb --- /dev/null +++ b/admin/public/UEditor/dialogs/map/map.html @@ -0,0 +1,135 @@ + + + + + + + + + + +
    + + + + + + + + + +
    ::
    +
    + +
    + + + + + diff --git a/admin/public/UEditor/dialogs/map/show.html b/admin/public/UEditor/dialogs/map/show.html new file mode 100644 index 00000000..329cfebf --- /dev/null +++ b/admin/public/UEditor/dialogs/map/show.html @@ -0,0 +1,118 @@ + + + + + + + 百度地图API自定义地图 + + + + + + + +
    + + + \ No newline at end of file diff --git a/admin/public/UEditor/dialogs/music/music.css b/admin/public/UEditor/dialogs/music/music.css new file mode 100644 index 00000000..8fb7a94c --- /dev/null +++ b/admin/public/UEditor/dialogs/music/music.css @@ -0,0 +1,30 @@ +.wrapper{margin: 5px 10px;} + +.searchBar{height:30px;padding:7px 0 3px;text-align:center;} +.searchBtn{font-size:13px;height:24px;} + +.resultBar{width:460px;margin:5px auto;border: 1px solid #CCC;border-radius: 5px;box-shadow: 2px 2px 5px #D3D6DA;overflow: hidden;} + +.listPanel{overflow: hidden;} +.panelon{display:block;} +.paneloff{display:none} + +.page{width:220px;margin:20px auto;overflow: hidden;} +.pageon{float:right;width:24px;line-height:24px;height:24px;margin-right: 5px;background: none;border: none;color: #000;font-weight: bold;text-align:center} +.pageoff{float:right;width:24px;line-height:24px;height:24px;cursor:pointer;background-color: #fff; + border: 1px solid #E7ECF0;color: #2D64B3;margin-right: 5px;text-decoration: none;text-align:center;} + +.m-box{width:460px;} +.m-m{float: left;line-height: 20px;height: 20px;} +.m-h{height:24px;line-height:24px;padding-left: 46px;background-color:#FAFAFA;border-bottom: 1px solid #DAD8D8;font-weight: bold;font-size: 12px;color: #333;} +.m-l{float:left;width:40px; } +.m-t{float:left;width:140px;} +.m-s{float:left;width:110px;} +.m-z{float:left;width:100px;} +.m-try-t{float: left;width: 60px;;} + +.m-try{float:left;width:20px;height:20px;background:url('http://static.tieba.baidu.com/tb/editor/images/try_music.gif') no-repeat ;} +.m-trying{float:left;width:20px;height:20px;background:url('http://static.tieba.baidu.com/tb/editor/images/stop_music.gif') no-repeat ;} + +.loading{width:95px;height:7px;font-size:7px;margin:60px auto;background:url(http://static.tieba.baidu.com/tb/editor/images/loading.gif) no-repeat} +.empty{width:300px;height:40px;padding:2px;margin:50px auto;line-height:40px; color:#006699;text-align:center;} \ No newline at end of file diff --git a/admin/public/UEditor/dialogs/music/music.html b/admin/public/UEditor/dialogs/music/music.html new file mode 100644 index 00000000..e7ef04f3 --- /dev/null +++ b/admin/public/UEditor/dialogs/music/music.html @@ -0,0 +1,32 @@ + + + + + 插入音乐 + + + + +
    + +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/admin/public/UEditor/dialogs/music/music.js b/admin/public/UEditor/dialogs/music/music.js new file mode 100644 index 00000000..1c538bf6 --- /dev/null +++ b/admin/public/UEditor/dialogs/music/music.js @@ -0,0 +1,192 @@ +function Music() { + this.init(); +} +(function () { + var pages = [], + panels = [], + selectedItem = null; + Music.prototype = { + total:70, + pageSize:10, + dataUrl:"http://tingapi.ting.baidu.com/v1/restserver/ting?method=baidu.ting.search.common", + playerUrl:"http://box.baidu.com/widget/flash/bdspacesong.swf", + + init:function () { + var me = this; + domUtils.on($G("J_searchName"), "keyup", function (event) { + var e = window.event || event; + if (e.keyCode == 13) { + me.dosearch(); + } + }); + domUtils.on($G("J_searchBtn"), "click", function () { + me.dosearch(); + }); + }, + callback:function (data) { + var me = this; + me.data = data.song_list; + setTimeout(function () { + $G('J_resultBar').innerHTML = me._renderTemplate(data.song_list); + }, 300); + }, + dosearch:function () { + var me = this; + selectedItem = null; + var key = $G('J_searchName').value; + if (utils.trim(key) == "")return false; + key = encodeURIComponent(key); + me._sent(key); + }, + doselect:function (i) { + var me = this; + if (typeof i == 'object') { + selectedItem = i; + } else if (typeof i == 'number') { + selectedItem = me.data[i]; + } + }, + onpageclick:function (id) { + var me = this; + for (var i = 0; i < pages.length; i++) { + $G(pages[i]).className = 'pageoff'; + $G(panels[i]).className = 'paneloff'; + } + $G('page' + id).className = 'pageon'; + $G('panel' + id).className = 'panelon'; + }, + listenTest:function (elem) { + var me = this, + view = $G('J_preview'), + is_play_action = (elem.className == 'm-try'), + old_trying = me._getTryingElem(); + + if (old_trying) { + old_trying.className = 'm-try'; + view.innerHTML = ''; + } + if (is_play_action) { + elem.className = 'm-trying'; + view.innerHTML = me._buildMusicHtml(me._getUrl(true)); + } + }, + _sent:function (param) { + var me = this; + $G('J_resultBar').innerHTML = '
    '; + + utils.loadFile(document, { + src:me.dataUrl + '&query=' + param + '&page_size=' + me.total + '&callback=music.callback&.r=' + Math.random(), + tag:"script", + type:"text/javascript", + defer:"defer" + }); + }, + _removeHtml:function (str) { + var reg = /<\s*\/?\s*[^>]*\s*>/gi; + return str.replace(reg, ""); + }, + _getUrl:function (isTryListen) { + var me = this; + var param = 'from=tiebasongwidget&url=&name=' + encodeURIComponent(me._removeHtml(selectedItem.title)) + '&artist=' + + encodeURIComponent(me._removeHtml(selectedItem.author)) + '&extra=' + + encodeURIComponent(me._removeHtml(selectedItem.album_title)) + + '&autoPlay='+isTryListen+'' + '&loop=true'; + return me.playerUrl + "?" + param; + }, + _getTryingElem:function () { + var s = $G('J_listPanel').getElementsByTagName('span'); + + for (var i = 0; i < s.length; i++) { + if (s[i].className == 'm-trying') + return s[i]; + } + return null; + }, + _buildMusicHtml:function (playerUrl) { + var html = ' 12) + return s.substring(0, 5) + '...'; + if (!s) s = " "; + return s; + }, + _rebuildData:function (data) { + var me = this, + newData = [], + d = me.pageSize, + itembox; + for (var i = 0; i < data.length; i++) { + if ((i + d) % d == 0) { + itembox = []; + newData.push(itembox) + } + itembox.push(data[i]); + } + return newData; + }, + _renderTemplate:function (data) { + var me = this; + if (data.length == 0)return '
    ' + lang.emptyTxt + '
    '; + data = me._rebuildData(data); + var s = [], p = [], t = []; + s.push('
    ' + }, + postRender: function (){ + var box = this.getDom(); + for (var i=0; i
    '); + p.push('
    '); + for (var i = 0, tmpList; tmpList = data[i++];) { + panels.push('panel' + i); + pages.push('page' + i); + if (i == 1) { + s.push('
    '); + if (data.length != 1) { + t.push('
    ' + (i ) + '
    '); + } + } else { + s.push('
    '); + t.push('
    ' + (i ) + '
    '); + } + s.push('
    '); + s.push('
    ' + lang.chapter + '' + lang.singer + + '' + lang.special + '' + lang.listenTest + '
    '); + for (var j = 0, tmpObj; tmpObj = tmpList[j++];) { + s.push(''); + } + s.push('
    '); + s.push('
    '); + } + t.reverse(); + p.push(t.join('')); + s.push('
    '); + p.push('
    '); + return s.join('') + p.join(''); + }, + exec:function () { + var me = this; + if (selectedItem == null) return; + $G('J_preview').innerHTML = ""; + editor.execCommand('music', { + url:me._getUrl(false), + width:400, + height:95 + }); + } + }; +})(); + + + diff --git a/admin/public/UEditor/dialogs/preview/preview.html b/admin/public/UEditor/dialogs/preview/preview.html new file mode 100644 index 00000000..f6b433bc --- /dev/null +++ b/admin/public/UEditor/dialogs/preview/preview.html @@ -0,0 +1,40 @@ + + + + + + + + + + +
    + +
    + + + \ No newline at end of file diff --git a/admin/public/UEditor/dialogs/scrawl/images/addimg.png b/admin/public/UEditor/dialogs/scrawl/images/addimg.png new file mode 100644 index 0000000000000000000000000000000000000000..03a87135bab65fa2633156789ed0f4a906d6c48b GIT binary patch literal 628 zcmV-)0*n2LP)LlfO?CQ4q&JZ};uuDR(Ob))OTXC`@eBz!@zF z+HgV%Hu^952Y4l=g(2n$i9ae63lhXcqYyM9#DWA|@b(rsk9+f;1wl+yj4;&{^Z8EZ zJ2T2T$4NrJSzdPEvg}xJM?R0MBtb zF(d!&V7bvXOyyt%V+_VxCMVl|G4K0L2`GSu4nDMoTw7VvC?4}634OnCk@;@JLnc3FEH3Q_>)m5edixGKIt7FkHcF4 O0000LlRapYQ51%sn|z5A!;eU>8r+{HJr7$}yPjp=Xw4K1Ua#f7iuXvM4a5!@5mnb6Jy5;4f zq^GClVK^)=CMV^$zAd#p)X9w(bjvTJaV6W6Y< zHElN4Fd9h58CQpMwnbCF0&&|nt--a91jfSjz&XY;RG1F=2?rH8AKl0($O&qx#;_=`eAIGPkrEiZ*t@m5rL2F^2%$?h~iba07-RvG6!+$Z#-hF)* z*wUa-u1NavBOIv|-+OxK963tx@)g|sy&J-7BIJt|`BL~qAQEA|QlZmXAv_UdV92*A z3}9Ln#}*y)LEQe`d0jImLzJL!8vd uXg6z^rfGozG)+U(G#m~GPN$P@*OZ@vE+GjWfY&Ji0000Px#1ZP1_K>z@;j|==^1poj5AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBUzf=NU{R5(w?lReA9Q5c8MckvC3CRr4rWH3k}lHF)Du^B`%h=dG6 zguL4*gWaS^NGOSZ`kg^f{XGLc^_;r8yYF+Z`@GZ<;@`(&vA|?9`3kyXJRalQL01fi zLp&Z2WV6|iphH*mdOh6lcNB}ox0FgHl*{E8%(<2hUD0m0al73R4u_FWr%|m|U({+f zG#U+byIr{(BXid2&=t*Q6W8k%I-L%By=@ zm&*kzl?rOL8d|Lu!C(;4XcW0z4*h-~yWI|l!$HRBbc(@XARW4*QmNo{I>BPGNUT;X zoK7cPE*HFBFG8UZX0sXA>ow-{IbyLG;_u=hIe}(G|5Z=0000LlRs}0K@i1%ySKhz{O1fJ$i!Hn&_fERK@ibd zbP=ieOf+<);v-NHQBXy)C?X|I5W=L1LJA~<17{zJ<9KG5!k{1wk%*@njpn`4doyD~ z2uu@pDm37>c6P$IEISwYQmKSH==W(ZE}o0v_2wonsNzFl`^D^kf$u!}LQutt_h<;j zar~DygE3(2IEO&+5CUiji1#=ZK||o}yDIhi33JuKDcl%rWQp=QqMSoVf(}M_9S>Cz zoT{SUv$l2tmn+e19`WG*;h4Z$Tz-aRexA6TaMJJ5+ucP5L)3dz6(_2Uyk~!Jk0eQW z^|DCs>qV~3L9K47-Y79!zJ;+$TrLymKV!r*@*Yt=mC$IUKuQ!vbUH=4-H3MEa`k$j zhnMqIZzgp1JzK3F1=nNY_D=~Sf_Tr$%FJ)(9slx>D9Y%(@ACbV<1iJj6ctqv?-3E) zNCY1O8yiQHJFtexf@?2R{@BJ?i!}ygEd8hVIIh)jS(Xvyay))=@XwvUSz2QG?!rX< zd8>shILEWq)iaM~SSaveeSM-{Y&0;#;gB>(^b literal 0 HcmV?d00001 diff --git a/admin/public/UEditor/dialogs/scrawl/images/empty.png b/admin/public/UEditor/dialogs/scrawl/images/empty.png new file mode 100644 index 0000000000000000000000000000000000000000..0375196257ac3c859373b3ebebbabe6f16105587 GIT binary patch literal 519 zcmV+i0{H!jP)Ll09-0Q4oZ`x4R&OpbGFo(29U6rOK6a3v&a7 z_DM+WM6pqhRKi!#4G@N6DKtGpus^URVFFJ&)8BN@dnqD#NM-jmudlA&{11>?2dmYJ zq9_;)28>1{cDr5ttSY|V-7%R=l6xQ-X2x_n?EuB!wC#2qd7hIOIeC_oWf>_YHk(bz zMaX$Q9;cHIE-o(@kBWl9lL2S1&UiW;@}sKQ@Am+B1TJ9`@6XQ{M-IY$At_veyCZkh z2#A0HNw}-$pgZDtT-F2Ob2F>OW^-Ac+hlWdQI_N05jzL&!X;$ZZFh;o!GLIH95bB; zNW$DPvl`UcHyv6%9(DgT!0PRm7pMi8VTV70h}zld2%+{!9YE@DjHv&@KO#8t7UG=) zNe~cC4#|6f?iJh}mm_H@6X8y{FD13$rOa5b*F8Xr2vSNfffuvc>}^?=9}+-HBod@% zcfjrE+jln~Z$1J0i1=~@0GiDNLcJQPqF|2002ov JPDHLkV1nZ!(%Jw3 literal 0 HcmV?d00001 diff --git a/admin/public/UEditor/dialogs/scrawl/images/emptyH.png b/admin/public/UEditor/dialogs/scrawl/images/emptyH.png new file mode 100644 index 0000000000000000000000000000000000000000..838ca723119499465f29e881a745f4d8a051e22c GIT binary patch literal 657 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!WQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2v2cMyUXw5Z8P6?!9~W&Mteod+EB17cYi1ZuhR-c=YJe)QJao zoqKZj)+^_N)hDk%kM7vxU%SOIZ)HU5u5H`4rB6P*;n@A6IVa_d+Vkc6Z`Cb3f9%S$swHPL zrX0?laV)ZJmtD^C)Jcaf-hX@G%JYPteGa)RpT7ON{^-5+yDx<|?_9t8V%D^yUKQ)t z9lf{e;O)TrtuBRYf*Q8PcI>guUcUO!os-vJoWJvW)22-q?!7sF_4&EmuM_+BN4D;= z&slDtz2el37q(f;)*ZQN z=N^Z=m4&lU_*8HD|Np=0=2?Njpo}XC@(TuXX$KfKp3qYR+O*iy#WAGfR#Jy6Gf%)R z4qpdHXJJo=hVYQC!~KV2MYI-VrJh`QUQ;LM&1;6x#M9b~#Ma7WK4-jqNPV%W#5&yr zqHMw)6OH>XB&SZ@(#H8io2zq2%cn~1gDgj6o15p{xKW{#z;wrkO(^fonRSm08Z|^C z74@VuOY>$h1UKwir)j@Gk;A27;=wb==bbzq+_Gcd9- Y9E)+P-Fqc+HPE>Xp00i_>zopr0P;w4-2eap literal 0 HcmV?d00001 diff --git a/admin/public/UEditor/dialogs/scrawl/images/eraser.png b/admin/public/UEditor/dialogs/scrawl/images/eraser.png new file mode 100644 index 0000000000000000000000000000000000000000..63e87cecb90ed3ac0e4acbc257c6dddae5311e09 GIT binary patch literal 43271 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
    h>dGcdSlWeEFl}k2MrUUS^bR;=$@vE@GsDa9 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 literal 0 HcmV?d00001 diff --git a/admin/public/UEditor/dialogs/scrawl/images/redoH.png b/admin/public/UEditor/dialogs/scrawl/images/redoH.png new file mode 100644 index 0000000000000000000000000000000000000000..d9f33d38a3d11ce10447830ce409a0890ecad264 GIT binary patch literal 536 zcmV+z0_XjSP)LlRro!K@`S+vst67f)FhPH9;i)IZy=QifsP%Q^7=yx~FIm{DVqJh#8yN2on55 zK6niC-hAJD?=d5!lvD$)D)w6iOxq2aw)?eGO}w=Q({?4W2uyj7_3$nS0b08|CV^$s zcEc4Nn6?`Q=790%;vf4s`J3kd?(rXB%yX=pvVdv3pMkYfEM|mb9T>VsU5&ud zHR{zG?2nRrWd3EgfMHFMKLD%wc#k35+Fxy@XQ-Rrp?E*AqO06&F51~7BhBb9F%{CA zdmJPWQouxT{!<~+LW6%qD0@z^RN@x6tuTZA%{2bb;RZ0`Io4$$5UD%$(J!*|z&Fpa za?fuyZTGrH*P6~!{%Io9+`*3VLY0+{d|s}SVM0@>uRpF)fd0F8hF zgjKx=6b8R6tZy&P{3zz{+r)RSrIc5o-hmLJL6K@zgnPx#1ZP1_K>z@;j|==^1poj5AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBUzF-b&0R5(wyQ*Ba%Fc9qxdXyf4gZLw&GE-Zj!G1tU_|R6xf-Mzw ztkqtHqs45L76*QWA2RbM@MiON_wCZ@{O7ZK+oR9deF10dJg3G9@~FqDz{krMf6sUA zM9%t%Ge#w-z&79UR#oU%de6AjwTpqy2_YI|tk+7Q3^s=6YMHYnLz^_O1&3i+?2mwN&7$-;U#S!Q9m{<3SMoh?w@E00BVyxZ+RCwFLF4JWG!G zOmY$;RtOYQz#3aQ*W5#AiVywHJM`%L@4v^Nzsx*vCin1#lEeQmy!?Oq z<)3F?{!hO2^5n}ed515YeEH$t2cY2pvoHVmpTDyB(*MfC{~Hedzw_aD z|6#-Q0^JY(AHHp1XAM(|igs|-_4sV4KK0;p@m*h1S8U_x=m<-jvZ+JR;{IBr4+&>f zSEaF?oUyAYF85cQWPSYh#i0ycQ4jWf_nW(8?Ylo51`N|SiTvgEn+*yn22WQ%mvv4F FO#t{IsF?r& literal 0 HcmV?d00001 diff --git a/admin/public/UEditor/dialogs/scrawl/images/size.png b/admin/public/UEditor/dialogs/scrawl/images/size.png new file mode 100644 index 0000000000000000000000000000000000000000..8366845059c94089aef92aa3aeeee79e242732eb GIT binary patch literal 775 zcmeAS@N?(olHy`uVBq!ia0vp^Iv_R&Gmw0`s%8O@k}PqJC<)F_D=AMbN@Z|N$xljE z@XSq2PYp^@^W{ zcO82EKXB&y{MKgq%sz{fI)==3d^r;&6MFPw(_IV71M|xGvv%v3_j2X!dGPP#L^Pja~hhtj9%m4qMKL2y%^Z&`q z=WTfUnlHCkByWLuLg&Z-{~5B^aHX`VrcW0wpCeN?gQ0YF|Ek^0Wm|o-iywUa@%aCL z)%2NBbM`Q#t<@@?!;!p&H+$mBlaI^_YB&B#>#{8s<9mu2JY zGd5l4N$XHbnR5BlcfNx4cmMupDBR$-Y>#a9e1@#m@BaT>^X!XNW-&wBx||KyZ~Xty zRkTzmtwcMm#U?#ZF@LgB=2WKq4bg@9JjHY3ON;;i|F13o-WwPzN)S72Y1Qc%6 zcJYYNXcAOgEAc9NiWcu<*Ig$*&7M7NgR1o_Dx<9^s3W?&d{SwZWC%AQ=Vq^CQZBv#02ZVBfRNMNWq`8qHxO6)(-0}P(7 KelF{r5}E+VpO-NJ literal 0 HcmV?d00001 diff --git a/admin/public/UEditor/dialogs/scrawl/images/undo.png b/admin/public/UEditor/dialogs/scrawl/images/undo.png new file mode 100644 index 0000000000000000000000000000000000000000..084c7cc73f4058c8084e5ea3ab4e51fd105b7991 GIT binary patch literal 444 zcmV;t0YmPx#1ZP1_K>z@;j|==^1poj5AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBUzI!Q!9R5(v#U>KAjGc&U&EiH|oEXQSKWlhM*$@yPcSjb6|0imIx zY(ULRYin!&1L^-HX$ETG0XlnEb#?Xs>C>nGudAyA8-k93YSsZ=r-))WP>}=>pQ);< z`afyXB(MQ<=FIuOaN)xL%ayrnkSp|9?S2!GDaj0*gvQ(FlretOfvW z6$E0%n3$MFK-vn3oq^aBh<%|nh;Lrlg%pxVI0RlGdnYDm%@o%7K^0FfxN6OiJOCi zi#RxuqoSN#Tot)WQew-+VO#$I2f6IQORU!0vXfFu4udr_4m%hxc|CaQ+tc&%`}Y0* zp6?@=rpaH1_@`<>2#kh5+8+kyfa~8Vm_`&Qf&1?$uoEc2lIZmeVHg0~PYAMri0Se6 zisfa<1zrI21FQgkJAn`w4d(-ql&7Fh^q1h21YD9xhMb<=^2_=%c1k>YpaK0r=t;rC zt=CtVDk}a`Zc&w=rjAAzFb_055%guKXWR05;yaef&C8{>rA7h90VLo8XqA)a5z{mR zl$UZFi*u7y-#5(Rpt#aUb$tcVwXHUL6R&`FK~-0c!y{7ZV&N?eU3VYvo=oj*?jtLb z0%Y5tQ3JY+q#F9ffd-5m?iOx)5tafl#kIoD<11{3}kbno$;nIA;p5?+| zPj_N{G3Qm3Edm$dw4eYE%Yq5$7Rj9jP5AfU_y|@8ao4ld0UH1S002ovPDHLkV1l6! B+-3j( literal 0 HcmV?d00001 diff --git a/admin/public/UEditor/dialogs/scrawl/scrawl.css b/admin/public/UEditor/dialogs/scrawl/scrawl.css new file mode 100644 index 00000000..b18430dc --- /dev/null +++ b/admin/public/UEditor/dialogs/scrawl/scrawl.css @@ -0,0 +1,72 @@ +/*common +*/ +body{margin: 0;} +table{width:100%;} +table td{padding:2px 4px;vertical-align: middle;} +a{text-decoration: none;} +em{font-style: normal;} +.border_style1{border: 1px solid #ccc;border-radius: 5px;box-shadow:2px 2px 5px #d3d6da;} +/*module +*/ +.main{margin: 8px;overflow: hidden;} + +.hot{float:left;height:335px;} +.drawBoard{position: relative; cursor: crosshair;} +.brushBorad{position: absolute;left:0;top:0;z-index: 998;} +.picBoard{border: none;text-align: center;line-height: 300px;cursor: default;} +.operateBar{margin-top:10px;font-size:12px;text-align: center;} +.operateBar span{margin-left: 10px;} + +.drawToolbar{float:right;width:110px;height:300px;overflow: hidden;} +.colorBar{margin-top:10px;font-size: 12px;text-align: center;} +.colorBar a{display:block;width: 10px;height: 10px;border:1px solid #1006F1;border-radius: 3px; box-shadow:2px 2px 5px #d3d6da;opacity: 0.3} +.sectionBar{margin-top:15px;font-size: 12px;text-align: center;} +.sectionBar a{display:inline-block;width:10px;height:12px;color: #888;text-indent: -999px;opacity: 0.3} +.size1{background: url('images/size.png') 1px center no-repeat ;} +.size2{background: url('images/size.png') -10px center no-repeat;} +.size3{background: url('images/size.png') -22px center no-repeat;} +.size4{background: url('images/size.png') -35px center no-repeat;} + +.addImgH{position: relative;} +.addImgH_form{position: absolute;left: 18px;top: -1px;width: 75px;height: 21px;opacity: 0;cursor: pointer;} +.addImgH_form input{width: 100%;} +/*scrawl遮罩层 +*/ +.maskLayerNull{display: none;} +.maskLayer{position: absolute;top:0;left:0;width: 100%; height: 100%;opacity: 0.7; + background-color: #fff;text-align:center;font-weight:bold;line-height:300px;z-index: 1000;} +/*btn state +*/ +.previousStepH .icon{display: inline-block;width:16px;height:16px;background-image: url('images/undoH.png');cursor: pointer;} +.previousStepH .text{color:#888;cursor:pointer;} +.previousStep .icon{display: inline-block;width:16px;height:16px;background-image: url('images/undo.png');cursor:default;} +.previousStep .text{color:#ccc;cursor:default;} + +.nextStepH .icon{display: inline-block;width:16px;height:16px;background-image: url('images/redoH.png');cursor: pointer;} +.nextStepH .text{color:#888;cursor:pointer;} +.nextStep .icon{display: inline-block;width:16px;height:16px;background-image: url('images/redo.png');cursor:default;} +.nextStep .text{color:#ccc;cursor:default;} + +.clearBoardH .icon{display: inline-block;width:16px;height:16px;background-image: url('images/emptyH.png');cursor: pointer;} +.clearBoardH .text{color:#888;cursor:pointer;} +.clearBoard .icon{display: inline-block;width:16px;height:16px;background-image: url('images/empty.png');cursor:default;} +.clearBoard .text{color:#ccc;cursor:default;} + +.scaleBoardH .icon{display: inline-block;width:16px;height:16px;background-image: url('images/scaleH.png');cursor: pointer;} +.scaleBoardH .text{color:#888;cursor:pointer;} +.scaleBoard .icon{display: inline-block;width:16px;height:16px;background-image: url('images/scale.png');cursor:default;} +.scaleBoard .text{color:#ccc;cursor:default;} + +.removeImgH .icon{display: inline-block;width:16px;height:16px;background-image: url('images/delimgH.png');cursor: pointer;} +.removeImgH .text{color:#888;cursor:pointer;} +.removeImg .icon{display: inline-block;width:16px;height:16px;background-image: url('images/delimg.png');cursor:default;} +.removeImg .text{color:#ccc;cursor:default;} + +.addImgH .icon{vertical-align:top;display: inline-block;width:16px;height:16px;background-image: url('images/addimg.png')} +.addImgH .text{color:#888;cursor:pointer;} +/*icon +*/ +.brushIcon{display: inline-block;width:16px;height:16px;background-image: url('images/brush.png')} +.eraserIcon{display: inline-block;width:16px;height:16px;background-image: url('images/eraser.png')} + + diff --git a/admin/public/UEditor/dialogs/scrawl/scrawl.html b/admin/public/UEditor/dialogs/scrawl/scrawl.html new file mode 100644 index 00000000..9371abd7 --- /dev/null +++ b/admin/public/UEditor/dialogs/scrawl/scrawl.html @@ -0,0 +1,95 @@ + + + + + + + + + + +
    +
    +
    + +
    +
    +
    + + + + + + + + + + + + + + + + +
    +
    +
    +
    +
    + + 1 + 3 + 5 + 7 +
    +
    + + 1 + 3 + 5 + 7 +
    +
    +
    + + +
    + +
    + +
    +
    +
    + + + + +
    +
    +
    +
    + + + + + \ No newline at end of file diff --git a/admin/public/UEditor/dialogs/scrawl/scrawl.js b/admin/public/UEditor/dialogs/scrawl/scrawl.js new file mode 100644 index 00000000..3167ba7b --- /dev/null +++ b/admin/public/UEditor/dialogs/scrawl/scrawl.js @@ -0,0 +1,671 @@ +/** + * Created with JetBrains PhpStorm. + * User: xuheng + * Date: 12-5-22 + * Time: 上午11:38 + * To change this template use File | Settings | File Templates. + */ +var scrawl = function (options) { + options && this.initOptions(options); +}; +(function () { + var canvas = $G("J_brushBoard"), + context = canvas.getContext('2d'), + drawStep = [], //undo redo存储 + drawStepIndex = 0; //undo redo指针 + + scrawl.prototype = { + isScrawl:false, //是否涂鸦 + brushWidth:-1, //画笔粗细 + brushColor:"", //画笔颜色 + + initOptions:function (options) { + var me = this; + me.originalState(options);//初始页面状态 + me._buildToolbarColor(options.colorList);//动态生成颜色选择集合 + + me._addBoardListener(options.saveNum);//添加画板处理 + me._addOPerateListener(options.saveNum);//添加undo redo clearBoard处理 + me._addColorBarListener();//添加颜色选择处理 + me._addBrushBarListener();//添加画笔大小处理 + me._addEraserBarListener();//添加橡皮大小处理 + me._addAddImgListener();//添加增添背景图片处理 + me._addRemoveImgListenter();//删除背景图片处理 + me._addScalePicListenter();//添加缩放处理 + me._addClearSelectionListenter();//添加清楚选中状态处理 + + me._originalColorSelect(options.drawBrushColor);//初始化颜色选中 + me._originalBrushSelect(options.drawBrushSize);//初始化画笔选中 + me._clearSelection();//清楚选中状态 + }, + + originalState:function (options) { + var me = this; + + me.brushWidth = options.drawBrushSize;//同步画笔粗细 + me.brushColor = options.drawBrushColor;//同步画笔颜色 + + context.lineWidth = me.brushWidth;//初始画笔大小 + context.strokeStyle = me.brushColor;//初始画笔颜色 + context.fillStyle = "transparent";//初始画布背景颜色 + context.lineCap = "round";//去除锯齿 + context.fill(); + }, + _buildToolbarColor:function (colorList) { + var tmp = null, arr = []; + arr.push(""); + for (var i = 0, color; color = colorList[i++];) { + if ((i - 1) % 5 == 0) { + if (i != 1) { + arr.push(""); + } + arr.push(""); + } + tmp = '#' + color; + arr.push(""); + } + arr.push("
    "); + $G("J_colorBar").innerHTML = arr.join(""); + }, + + _addBoardListener:function (saveNum) { + var me = this, + margin = 0, + startX = -1, + startY = -1, + isMouseDown = false, + isMouseMove = false, + isMouseUp = false, + buttonPress = 0, button, flag = ''; + + margin = parseInt(domUtils.getComputedStyle($G("J_wrap"), "margin-left")); + drawStep.push(context.getImageData(0, 0, context.canvas.width, context.canvas.height)); + drawStepIndex += 1; + + domUtils.on(canvas, ["mousedown", "mousemove", "mouseup", "mouseout"], function (e) { + button = browser.webkit ? e.which : buttonPress; + switch (e.type) { + case 'mousedown': + buttonPress = 1; + flag = 1; + isMouseDown = true; + isMouseUp = false; + isMouseMove = false; + me.isScrawl = true; + startX = e.clientX - margin;//10为外边距总和 + startY = e.clientY - margin; + context.beginPath(); + break; + case 'mousemove' : + if (!flag && button == 0) { + return; + } + if (!flag && button) { + startX = e.clientX - margin;//10为外边距总和 + startY = e.clientY - margin; + context.beginPath(); + flag = 1; + } + if (isMouseUp || !isMouseDown) { + return; + } + var endX = e.clientX - margin, + endY = e.clientY - margin; + + context.moveTo(startX, startY); + context.lineTo(endX, endY); + context.stroke(); + startX = endX; + startY = endY; + isMouseMove = true; + break; + case 'mouseup': + buttonPress = 0; + if (!isMouseDown)return; + if (!isMouseMove) { + context.arc(startX, startY, context.lineWidth, 0, Math.PI * 2, false); + context.fillStyle = context.strokeStyle; + context.fill(); + } + context.closePath(); + me._saveOPerate(saveNum); + isMouseDown = false; + isMouseMove = false; + isMouseUp = true; + startX = -1; + startY = -1; + break; + case 'mouseout': + flag = ''; + buttonPress = 0; + if (button == 1) return; + context.closePath(); + break; + } + }); + }, + _addOPerateListener:function (saveNum) { + var me = this; + domUtils.on($G("J_previousStep"), "click", function () { + if (drawStepIndex > 1) { + drawStepIndex -= 1; + context.clearRect(0, 0, context.canvas.width, context.canvas.height); + context.putImageData(drawStep[drawStepIndex - 1], 0, 0); + me.btn2Highlight("J_nextStep"); + drawStepIndex == 1 && me.btn2disable("J_previousStep"); + } + }); + domUtils.on($G("J_nextStep"), "click", function () { + if (drawStepIndex > 0 && drawStepIndex < drawStep.length) { + context.clearRect(0, 0, context.canvas.width, context.canvas.height); + context.putImageData(drawStep[drawStepIndex], 0, 0); + drawStepIndex += 1; + me.btn2Highlight("J_previousStep"); + drawStepIndex == drawStep.length && me.btn2disable("J_nextStep"); + } + }); + domUtils.on($G("J_clearBoard"), "click", function () { + context.clearRect(0, 0, context.canvas.width, context.canvas.height); + drawStep = []; + me._saveOPerate(saveNum); + drawStepIndex = 1; + me.isScrawl = false; + me.btn2disable("J_previousStep"); + me.btn2disable("J_nextStep"); + me.btn2disable("J_clearBoard"); + }); + }, + _addColorBarListener:function () { + var me = this; + domUtils.on($G("J_colorBar"), "click", function (e) { + var target = me.getTarget(e), + color = target.title; + if (!!color) { + me._addColorSelect(target); + + me.brushColor = color; + context.globalCompositeOperation = "source-over"; + context.lineWidth = me.brushWidth; + context.strokeStyle = color; + } + }); + }, + _addBrushBarListener:function () { + var me = this; + domUtils.on($G("J_brushBar"), "click", function (e) { + var target = me.getTarget(e), + size = browser.ie ? target.innerText : target.text; + if (!!size) { + me._addBESelect(target); + + context.globalCompositeOperation = "source-over"; + context.lineWidth = parseInt(size); + context.strokeStyle = me.brushColor; + me.brushWidth = context.lineWidth; + } + }); + }, + _addEraserBarListener:function () { + var me = this; + domUtils.on($G("J_eraserBar"), "click", function (e) { + var target = me.getTarget(e), + size = browser.ie ? target.innerText : target.text; + if (!!size) { + me._addBESelect(target); + + context.lineWidth = parseInt(size); + context.globalCompositeOperation = "destination-out"; + context.strokeStyle = "#FFF"; + } + }); + }, + _addAddImgListener:function () { + var file = $G("J_imgTxt"); + if (!window.FileReader) { + $G("J_addImg").style.display = 'none'; + $G("J_removeImg").style.display = 'none'; + $G("J_sacleBoard").style.display = 'none'; + } + domUtils.on(file, "change", function (e) { + var frm = file.parentNode; + addMaskLayer(lang.backgroundUploading); + + var target = e.target || e.srcElement, + reader = new FileReader(); + reader.onload = function(evt){ + var target = evt.target || evt.srcElement; + ue_callback(target.result, 'SUCCESS'); + }; + reader.readAsDataURL(target.files[0]); + frm.reset(); + }); + }, + _addRemoveImgListenter:function () { + var me = this; + domUtils.on($G("J_removeImg"), "click", function () { + $G("J_picBoard").innerHTML = ""; + me.btn2disable("J_removeImg"); + me.btn2disable("J_sacleBoard"); + }); + }, + _addScalePicListenter:function () { + domUtils.on($G("J_sacleBoard"), "click", function () { + var picBoard = $G("J_picBoard"), + scaleCon = $G("J_scaleCon"), + img = picBoard.children[0]; + + if (img) { + if (!scaleCon) { + picBoard.style.cssText = "position:relative;z-index:1;"+picBoard.style.cssText; + img.style.cssText = "position: absolute;top:" + (canvas.height - img.height) / 2 + "px;left:" + (canvas.width - img.width) / 2 + "px;"; + var scale = new ScaleBoy(); + picBoard.appendChild(scale.init()); + scale.startScale(img); + } else { + if (scaleCon.style.visibility == "visible") { + scaleCon.style.visibility = "hidden"; + picBoard.style.position = ""; + picBoard.style.zIndex = ""; + } else { + scaleCon.style.visibility = "visible"; + picBoard.style.cssText += "position:relative;z-index:1"; + } + } + } + }); + }, + _addClearSelectionListenter:function () { + var doc = document; + domUtils.on(doc, 'mousemove', function (e) { + if (browser.ie && browser.version < 11) + doc.selection.clear(); + else + window.getSelection().removeAllRanges(); + }); + }, + _clearSelection:function () { + var list = ["J_operateBar", "J_colorBar", "J_brushBar", "J_eraserBar", "J_picBoard"]; + for (var i = 0, group; group = list[i++];) { + domUtils.unSelectable($G(group)); + } + }, + + _saveOPerate:function (saveNum) { + var me = this; + if (drawStep.length <= saveNum) { + if(drawStepIndex"); + } + scale.innerHTML = arr.join(""); + return scale; + } + + var rect = [ + //[left, top, width, height] + [1, 1, -1, -1], + [0, 1, 0, -1], + [0, 1, 1, -1], + [1, 0, -1, 0], + [0, 0, 1, 0], + [1, 0, -1, 1], + [0, 0, 0, 1], + [0, 0, 1, 1] + ]; + ScaleBoy.prototype = { + init:function () { + _appendStyle(); + var me = this, + scale = me.dom = _getDom(); + + me.scaleMousemove.fp = me; + domUtils.on(scale, 'mousedown', function (e) { + var target = e.target || e.srcElement; + me.start = {x:e.clientX, y:e.clientY}; + if (target.className.indexOf('hand') != -1) { + me.dir = target.className.replace('hand', ''); + } + domUtils.on(document.body, 'mousemove', me.scaleMousemove); + e.stopPropagation ? e.stopPropagation() : e.cancelBubble = true; + }); + domUtils.on(document.body, 'mouseup', function (e) { + if (me.start) { + domUtils.un(document.body, 'mousemove', me.scaleMousemove); + if (me.moved) { + me.updateScaledElement({position:{x:scale.style.left, y:scale.style.top}, size:{w:scale.style.width, h:scale.style.height}}); + } + delete me.start; + delete me.moved; + delete me.dir; + } + }); + return scale; + }, + startScale:function (objElement) { + var me = this, Idom = me.dom; + + Idom.style.cssText = 'visibility:visible;top:' + objElement.style.top + ';left:' + objElement.style.left + ';width:' + objElement.offsetWidth + 'px;height:' + objElement.offsetHeight + 'px;'; + me.scalingElement = objElement; + }, + updateScaledElement:function (objStyle) { + var cur = this.scalingElement, + pos = objStyle.position, + size = objStyle.size; + if (pos) { + typeof pos.x != 'undefined' && (cur.style.left = pos.x); + typeof pos.y != 'undefined' && (cur.style.top = pos.y); + } + if (size) { + size.w && (cur.style.width = size.w); + size.h && (cur.style.height = size.h); + } + }, + updateStyleByDir:function (dir, offset) { + var me = this, + dom = me.dom, tmp; + + rect['def'] = [1, 1, 0, 0]; + if (rect[dir][0] != 0) { + tmp = parseInt(dom.style.left) + offset.x; + dom.style.left = me._validScaledProp('left', tmp) + 'px'; + } + if (rect[dir][1] != 0) { + tmp = parseInt(dom.style.top) + offset.y; + dom.style.top = me._validScaledProp('top', tmp) + 'px'; + } + if (rect[dir][2] != 0) { + tmp = dom.clientWidth + rect[dir][2] * offset.x; + dom.style.width = me._validScaledProp('width', tmp) + 'px'; + } + if (rect[dir][3] != 0) { + tmp = dom.clientHeight + rect[dir][3] * offset.y; + dom.style.height = me._validScaledProp('height', tmp) + 'px'; + } + if (dir === 'def') { + me.updateScaledElement({position:{x:dom.style.left, y:dom.style.top}}); + } + }, + scaleMousemove:function (e) { + var me = arguments.callee.fp, + start = me.start, + dir = me.dir || 'def', + offset = {x:e.clientX - start.x, y:e.clientY - start.y}; + + me.updateStyleByDir(dir, offset); + arguments.callee.fp.start = {x:e.clientX, y:e.clientY}; + arguments.callee.fp.moved = 1; + }, + _validScaledProp:function (prop, value) { + var ele = this.dom, + wrap = $G("J_picBoard"); + + value = isNaN(value) ? 0 : value; + switch (prop) { + case 'left': + return value < 0 ? 0 : (value + ele.clientWidth) > wrap.clientWidth ? wrap.clientWidth - ele.clientWidth : value; + case 'top': + return value < 0 ? 0 : (value + ele.clientHeight) > wrap.clientHeight ? wrap.clientHeight - ele.clientHeight : value; + case 'width': + return value <= 0 ? 1 : (value + ele.offsetLeft) > wrap.clientWidth ? wrap.clientWidth - ele.offsetLeft : value; + case 'height': + return value <= 0 ? 1 : (value + ele.offsetTop) > wrap.clientHeight ? wrap.clientHeight - ele.offsetTop : value; + } + } + }; +})(); + +//后台回调 +function ue_callback(url, state) { + var doc = document, + picBorard = $G("J_picBoard"), + img = doc.createElement("img"); + + //图片缩放 + function scale(img, max, oWidth, oHeight) { + var width = 0, height = 0, percent, ow = img.width || oWidth, oh = img.height || oHeight; + if (ow > max || oh > max) { + if (ow >= oh) { + if (width = ow - max) { + percent = (width / ow).toFixed(2); + img.height = oh - oh * percent; + img.width = max; + } + } else { + if (height = oh - max) { + percent = (height / oh).toFixed(2); + img.width = ow - ow * percent; + img.height = max; + } + } + } + } + + //移除遮罩层 + removeMaskLayer(); + //状态响应 + if (state == "SUCCESS") { + picBorard.innerHTML = ""; + img.onload = function () { + scale(this, 300); + picBorard.appendChild(img); + + var obj = new scrawl(); + obj.btn2Highlight("J_removeImg"); + //trace 2457 + obj.btn2Highlight("J_sacleBoard"); + }; + img.src = url; + } else { + alert(state); + } +} +//去掉遮罩层 +function removeMaskLayer() { + var maskLayer = $G("J_maskLayer"); + maskLayer.className = "maskLayerNull"; + maskLayer.innerHTML = ""; + dialog.buttons[0].setDisabled(false); +} +//添加遮罩层 +function addMaskLayer(html) { + var maskLayer = $G("J_maskLayer"); + dialog.buttons[0].setDisabled(true); + maskLayer.className = "maskLayer"; + maskLayer.innerHTML = html; +} +//执行确认按钮方法 +function exec(scrawlObj) { + if (scrawlObj.isScrawl) { + addMaskLayer(lang.scrawlUpLoading); + var base64 = scrawlObj.getCanvasData(); + if (!!base64) { + var options = { + timeout:100000, + onsuccess:function (xhr) { + if (!scrawlObj.isCancelScrawl) { + var responseObj; + responseObj = eval("(" + xhr.responseText + ")"); + if (responseObj.state == "SUCCESS") { + var imgObj = {}, + url = editor.options.scrawlUrlPrefix + responseObj.url; + imgObj.src = url; + imgObj._src = url; + imgObj.alt = responseObj.original || ''; + imgObj.title = responseObj.title || ''; + editor.execCommand("insertImage", imgObj); + dialog.close(); + } else { + alert(responseObj.state); + } + + } + }, + onerror:function () { + alert(lang.imageError); + dialog.close(); + } + }; + options[editor.getOpt('scrawlFieldName')] = base64; + + var actionUrl = editor.getActionUrl(editor.getOpt('scrawlActionName')), + params = utils.serializeParam(editor.queryCommandValue('serverparam')) || '', + url = utils.formatUrl(actionUrl + (actionUrl.indexOf('?') == -1 ? '?':'&') + params); + ajax.request(url, options); + } + } else { + addMaskLayer(lang.noScarwl + "   "); + } +} + diff --git a/admin/public/UEditor/dialogs/searchreplace/searchreplace.html b/admin/public/UEditor/dialogs/searchreplace/searchreplace.html new file mode 100644 index 00000000..b91f1901 --- /dev/null +++ b/admin/public/UEditor/dialogs/searchreplace/searchreplace.html @@ -0,0 +1,102 @@ + + + + + + + + + +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + +
    :
    + +
    + + +
    +   +
    + +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    :
    :
    + +
    + + + + +
    +   +
    + +
    +
    +
    +
    + + + \ No newline at end of file diff --git a/admin/public/UEditor/dialogs/searchreplace/searchreplace.js b/admin/public/UEditor/dialogs/searchreplace/searchreplace.js new file mode 100644 index 00000000..1b528573 --- /dev/null +++ b/admin/public/UEditor/dialogs/searchreplace/searchreplace.js @@ -0,0 +1,164 @@ +/** + * Created with JetBrains PhpStorm. + * User: xuheng + * Date: 12-9-26 + * Time: 下午12:29 + * To change this template use File | Settings | File Templates. + */ + +//清空上次查选的痕迹 +editor.firstForSR = 0; +editor.currentRangeForSR = null; +//给tab注册切换事件 +/** + * tab点击处理事件 + * @param tabHeads + * @param tabBodys + * @param obj + */ +function clickHandler( tabHeads,tabBodys,obj ) { + //head样式更改 + for ( var k = 0, len = tabHeads.length; k < len; k++ ) { + tabHeads[k].className = ""; + } + obj.className = "focus"; + //body显隐 + var tabSrc = obj.getAttribute( "tabSrc" ); + for ( var j = 0, length = tabBodys.length; j < length; j++ ) { + var body = tabBodys[j], + id = body.getAttribute( "id" ); + if ( id != tabSrc ) { + body.style.zIndex = 1; + } else { + body.style.zIndex = 200; + } + } + +} + +/** + * TAB切换 + * @param tabParentId tab的父节点ID或者对象本身 + */ +function switchTab( tabParentId ) { + var tabElements = $G( tabParentId ).children, + tabHeads = tabElements[0].children, + tabBodys = tabElements[1].children; + + for ( var i = 0, length = tabHeads.length; i < length; i++ ) { + var head = tabHeads[i]; + if ( head.className === "focus" )clickHandler(tabHeads,tabBodys, head ); + head.onclick = function () { + clickHandler(tabHeads,tabBodys,this); + } + } +} +$G('searchtab').onmousedown = function(){ + $G('search-msg').innerHTML = ''; + $G('replace-msg').innerHTML = '' +} +//是否区分大小写 +function getMatchCase(id) { + return $G(id).checked ? true : false; +} +//查找 +$G("nextFindBtn").onclick = function (txt, dir, mcase) { + var findtxt = $G("findtxt").value, obj; + if (!findtxt) { + return false; + } + obj = { + searchStr:findtxt, + dir:1, + casesensitive:getMatchCase("matchCase") + }; + if (!frCommond(obj)) { + var bk = editor.selection.getRange().createBookmark(); + $G('search-msg').innerHTML = lang.getEnd; + editor.selection.getRange().moveToBookmark(bk).select(); + + + } +}; +$G("nextReplaceBtn").onclick = function (txt, dir, mcase) { + var findtxt = $G("findtxt1").value, obj; + if (!findtxt) { + return false; + } + obj = { + searchStr:findtxt, + dir:1, + casesensitive:getMatchCase("matchCase1") + }; + frCommond(obj); +}; +$G("preFindBtn").onclick = function (txt, dir, mcase) { + var findtxt = $G("findtxt").value, obj; + if (!findtxt) { + return false; + } + obj = { + searchStr:findtxt, + dir:-1, + casesensitive:getMatchCase("matchCase") + }; + if (!frCommond(obj)) { + $G('search-msg').innerHTML = lang.getStart; + } +}; +$G("preReplaceBtn").onclick = function (txt, dir, mcase) { + var findtxt = $G("findtxt1").value, obj; + if (!findtxt) { + return false; + } + obj = { + searchStr:findtxt, + dir:-1, + casesensitive:getMatchCase("matchCase1") + }; + frCommond(obj); +}; +//替换 +$G("repalceBtn").onclick = function () { + var findtxt = $G("findtxt1").value.replace(/^\s|\s$/g, ""), obj, + replacetxt = $G("replacetxt").value.replace(/^\s|\s$/g, ""); + if (!findtxt) { + return false; + } + if (findtxt == replacetxt || (!getMatchCase("matchCase1") && findtxt.toLowerCase() == replacetxt.toLowerCase())) { + return false; + } + obj = { + searchStr:findtxt, + dir:1, + casesensitive:getMatchCase("matchCase1"), + replaceStr:replacetxt + }; + frCommond(obj); +}; +//全部替换 +$G("repalceAllBtn").onclick = function () { + var findtxt = $G("findtxt1").value.replace(/^\s|\s$/g, ""), obj, + replacetxt = $G("replacetxt").value.replace(/^\s|\s$/g, ""); + if (!findtxt) { + return false; + } + if (findtxt == replacetxt || (!getMatchCase("matchCase1") && findtxt.toLowerCase() == replacetxt.toLowerCase())) { + return false; + } + obj = { + searchStr:findtxt, + casesensitive:getMatchCase("matchCase1"), + replaceStr:replacetxt, + all:true + }; + var num = frCommond(obj); + if (num) { + $G('replace-msg').innerHTML = lang.countMsg.replace("{#count}", num); + } +}; +//执行 +var frCommond = function (obj) { + return editor.execCommand("searchreplace", obj); +}; +switchTab("searchtab"); \ No newline at end of file diff --git a/admin/public/UEditor/dialogs/snapscreen/snapscreen.html b/admin/public/UEditor/dialogs/snapscreen/snapscreen.html new file mode 100644 index 00000000..cf8209ee --- /dev/null +++ b/admin/public/UEditor/dialogs/snapscreen/snapscreen.html @@ -0,0 +1,58 @@ + + + + + + + + + +
    +

    +
    +
    +
    +
    +
    +
    + + \ No newline at end of file diff --git a/admin/public/UEditor/dialogs/spechars/spechars.html b/admin/public/UEditor/dialogs/spechars/spechars.html new file mode 100644 index 00000000..0b5c416f --- /dev/null +++ b/admin/public/UEditor/dialogs/spechars/spechars.html @@ -0,0 +1,21 @@ + + + + + + + + + +
    +
    +
    + + + \ No newline at end of file diff --git a/admin/public/UEditor/dialogs/spechars/spechars.js b/admin/public/UEditor/dialogs/spechars/spechars.js new file mode 100644 index 00000000..f4c155e1 --- /dev/null +++ b/admin/public/UEditor/dialogs/spechars/spechars.js @@ -0,0 +1,57 @@ +/** + * Created with JetBrains PhpStorm. + * User: xuheng + * Date: 12-9-26 + * Time: 下午1:09 + * To change this template use File | Settings | File Templates. + */ +var charsContent = [ + { name:"tsfh", title:lang.tsfh, content:toArray("、,。,·,ˉ,ˇ,¨,〃,々,—,~,‖,…,‘,’,“,”,〔,〕,〈,〉,《,》,「,」,『,』,〖,〗,【,】,±,×,÷,∶,∧,∨,∑,∏,∪,∩,∈,∷,√,⊥,∥,∠,⌒,⊙,∫,∮,≡,≌,≈,∽,∝,≠,≮,≯,≤,≥,∞,∵,∴,♂,♀,°,′,″,℃,$,¤,¢,£,‰,§,№,☆,★,○,●,◎,◇,◆,□,■,△,▲,※,→,←,↑,↓,〓,〡,〢,〣,〤,〥,〦,〧,〨,〩,㊣,㎎,㎏,㎜,㎝,㎞,㎡,㏄,㏎,㏑,㏒,㏕,︰,¬,¦,℡,ˊ,ˋ,˙,–,―,‥,‵,℅,℉,↖,↗,↘,↙,∕,∟,∣,≒,≦,≧,⊿,═,║,╒,╓,╔,╕,╖,╗,╘,╙,╚,╛,╜,╝,╞,╟,╠,╡,╢,╣,╤,╥,╦,╧,╨,╩,╪,╫,╬,╭,╮,╯,╰,╱,╲,╳,▁,▂,▃,▄,▅,▆,▇,�,█,▉,▊,▋,▌,▍,▎,▏,▓,▔,▕,▼,▽,◢,◣,◤,◥,☉,⊕,〒,〝,〞")}, + { name:"lmsz", title:lang.lmsz, content:toArray("ⅰ,ⅱ,ⅲ,ⅳ,ⅴ,ⅵ,ⅶ,ⅷ,ⅸ,ⅹ,Ⅰ,Ⅱ,Ⅲ,Ⅳ,Ⅴ,Ⅵ,Ⅶ,Ⅷ,Ⅸ,Ⅹ,Ⅺ,Ⅻ")}, + { name:"szfh", title:lang.szfh, content:toArray("⒈,⒉,⒊,⒋,⒌,⒍,⒎,⒏,⒐,⒑,⒒,⒓,⒔,⒕,⒖,⒗,⒘,⒙,⒚,⒛,⑴,⑵,⑶,⑷,⑸,⑹,⑺,⑻,⑼,⑽,⑾,⑿,⒀,⒁,⒂,⒃,⒄,⒅,⒆,⒇,①,②,③,④,⑤,⑥,⑦,⑧,⑨,⑩,㈠,㈡,㈢,㈣,㈤,㈥,㈦,㈧,㈨,㈩")}, + { name:"rwfh", title:lang.rwfh, content:toArray("ぁ,あ,ぃ,い,ぅ,う,ぇ,え,ぉ,お,か,が,き,ぎ,く,ぐ,け,げ,こ,ご,さ,ざ,し,じ,す,ず,せ,ぜ,そ,ぞ,た,だ,ち,ぢ,っ,つ,づ,て,で,と,ど,な,に,ぬ,ね,の,は,ば,ぱ,ひ,び,ぴ,ふ,ぶ,ぷ,へ,べ,ぺ,ほ,ぼ,ぽ,ま,み,む,め,も,ゃ,や,ゅ,ゆ,ょ,よ,ら,り,る,れ,ろ,ゎ,わ,ゐ,ゑ,を,ん,ァ,ア,ィ,イ,ゥ,ウ,ェ,エ,ォ,オ,カ,ガ,キ,ギ,ク,グ,ケ,ゲ,コ,ゴ,サ,ザ,シ,ジ,ス,ズ,セ,ゼ,ソ,ゾ,タ,ダ,チ,ヂ,ッ,ツ,ヅ,テ,デ,ト,ド,ナ,ニ,ヌ,ネ,ノ,ハ,バ,パ,ヒ,ビ,ピ,フ,ブ,プ,ヘ,ベ,ペ,ホ,ボ,ポ,マ,ミ,ム,メ,モ,ャ,ヤ,ュ,ユ,ョ,ヨ,ラ,リ,ル,レ,ロ,ヮ,ワ,ヰ,ヱ,ヲ,ン,ヴ,ヵ,ヶ")}, + { name:"xlzm", title:lang.xlzm, content:toArray("Α,Β,Γ,Δ,Ε,Ζ,Η,Θ,Ι,Κ,Λ,Μ,Ν,Ξ,Ο,Π,Ρ,Σ,Τ,Υ,Φ,Χ,Ψ,Ω,α,β,γ,δ,ε,ζ,η,θ,ι,κ,λ,μ,ν,ξ,ο,π,ρ,σ,τ,υ,φ,χ,ψ,ω")}, + { name:"ewzm", title:lang.ewzm, content:toArray("А,Б,В,Г,Д,Е,Ё,Ж,З,И,Й,К,Л,М,Н,О,П,Р,С,Т,У,Ф,Х,Ц,Ч,Ш,Щ,Ъ,Ы,Ь,Э,Ю,Я,а,б,в,г,д,е,ё,ж,з,и,й,к,л,м,н,о,п,р,с,т,у,ф,х,ц,ч,ш,щ,ъ,ы,ь,э,ю,я")}, + { name:"pyzm", title:lang.pyzm, content:toArray("ā,á,ǎ,à,ē,é,ě,è,ī,í,ǐ,ì,ō,ó,ǒ,ò,ū,ú,ǔ,ù,ǖ,ǘ,ǚ,ǜ,ü")}, + { name:"yyyb", title:lang.yyyb, content:toArray("i:,i,e,æ,ʌ,ə:,ə,u:,u,ɔ:,ɔ,a:,ei,ai,ɔi,əu,au,iə,εə,uə,p,t,k,b,d,g,f,s,ʃ,θ,h,v,z,ʒ,ð,tʃ,tr,ts,dʒ,dr,dz,m,n,ŋ,l,r,w,j,")}, + { name:"zyzf", title:lang.zyzf, content:toArray("ㄅ,ㄆ,ㄇ,ㄈ,ㄉ,ㄊ,ㄋ,ㄌ,ㄍ,ㄎ,ㄏ,ㄐ,ㄑ,ㄒ,ㄓ,ㄔ,ㄕ,ㄖ,ㄗ,ㄘ,ㄙ,ㄚ,ㄛ,ㄜ,ㄝ,ㄞ,ㄟ,ㄠ,ㄡ,ㄢ,ㄣ,ㄤ,ㄥ,ㄦ,ㄧ,ㄨ")} +]; +(function createTab(content) { + for (var i = 0, ci; ci = content[i++];) { + var span = document.createElement("span"); + span.setAttribute("tabSrc", ci.name); + span.innerHTML = ci.title; + if (i == 1)span.className = "focus"; + domUtils.on(span, "click", function () { + var tmps = $G("tabHeads").children; + for (var k = 0, sk; sk = tmps[k++];) { + sk.className = ""; + } + tmps = $G("tabBodys").children; + for (var k = 0, sk; sk = tmps[k++];) { + sk.style.display = "none"; + } + this.className = "focus"; + $G(this.getAttribute("tabSrc")).style.display = ""; + }); + $G("tabHeads").appendChild(span); + domUtils.insertAfter(span, document.createTextNode("\n")); + var div = document.createElement("div"); + div.id = ci.name; + div.style.display = (i == 1) ? "" : "none"; + var cons = ci.content; + for (var j = 0, con; con = cons[j++];) { + var charSpan = document.createElement("span"); + charSpan.innerHTML = con; + domUtils.on(charSpan, "click", function () { + editor.execCommand("insertHTML", this.innerHTML); + dialog.close(); + }); + div.appendChild(charSpan); + } + $G("tabBodys").appendChild(div); + } +})(charsContent); +function toArray(str) { + return str.split(","); +} diff --git a/admin/public/UEditor/dialogs/table/dragicon.png b/admin/public/UEditor/dialogs/table/dragicon.png new file mode 100644 index 0000000000000000000000000000000000000000..f26203bf3f0026891fc8374f109724a69eb38b22 GIT binary patch literal 304 zcmV-00nh%4P)p00001b5ch_0Itp) z=>Px#=t)FDR47x8lCciKP#A@KY2U+Oz-BN?3|$yZoaJ-YrY6>w+wB>;0|AN6r2r z_B6y2bQp%1X$_7DP`QFiq0z;_c3wk<3Lh&$^V;p?#e$PywxH71VT^XlHZ=jml#@|NVkRMLVaC0F_%) zcB=vWe$h}nSjAV$|0D + + + + + + + +
    +
    +
    +

    +
      +
    • + +
    • +
    • + +
    • +
    +
      +
    • + +
    • +
    • + +
    • +
    +
    +
    +
    +

    +
      +
    • + +
    • +
    • + +
    • +
    +
    +
    +
    +

    +
      +
    • + + +
    • +
    +
    +
    +
    +
    +
    +

    +
    +
    +
    +
    +
    + + + \ No newline at end of file diff --git a/admin/public/UEditor/dialogs/table/edittable.js b/admin/public/UEditor/dialogs/table/edittable.js new file mode 100644 index 00000000..11dbee7c --- /dev/null +++ b/admin/public/UEditor/dialogs/table/edittable.js @@ -0,0 +1,237 @@ +/** + * Created with JetBrains PhpStorm. + * User: xuheng + * Date: 12-12-19 + * Time: 下午4:55 + * To change this template use File | Settings | File Templates. + */ +(function () { + var title = $G("J_title"), + titleCol = $G("J_titleCol"), + caption = $G("J_caption"), + sorttable = $G("J_sorttable"), + autoSizeContent = $G("J_autoSizeContent"), + autoSizePage = $G("J_autoSizePage"), + tone = $G("J_tone"), + me, + preview = $G("J_preview"); + + var editTable = function () { + me = this; + me.init(); + }; + editTable.prototype = { + init:function () { + var colorPiker = new UE.ui.ColorPicker({ + editor:editor + }), + colorPop = new UE.ui.Popup({ + editor:editor, + content:colorPiker + }); + + title.checked = editor.queryCommandState("inserttitle") == -1; + titleCol.checked = editor.queryCommandState("inserttitlecol") == -1; + caption.checked = editor.queryCommandState("insertcaption") == -1; + sorttable.checked = editor.queryCommandState("enablesort") == 1; + + var enablesortState = editor.queryCommandState("enablesort"), + disablesortState = editor.queryCommandState("disablesort"); + + sorttable.checked = !!(enablesortState < 0 && disablesortState >=0); + sorttable.disabled = !!(enablesortState < 0 && disablesortState < 0); + sorttable.title = enablesortState < 0 && disablesortState < 0 ? lang.errorMsg:''; + + me.createTable(title.checked, titleCol.checked, caption.checked); + me.setAutoSize(); + me.setColor(me.getColor()); + + domUtils.on(title, "click", me.titleHanler); + domUtils.on(titleCol, "click", me.titleColHanler); + domUtils.on(caption, "click", me.captionHanler); + domUtils.on(sorttable, "click", me.sorttableHanler); + domUtils.on(autoSizeContent, "click", me.autoSizeContentHanler); + domUtils.on(autoSizePage, "click", me.autoSizePageHanler); + + domUtils.on(tone, "click", function () { + colorPop.showAnchor(tone); + }); + domUtils.on(document, 'mousedown', function () { + colorPop.hide(); + }); + colorPiker.addListener("pickcolor", function () { + me.setColor(arguments[1]); + colorPop.hide(); + }); + colorPiker.addListener("picknocolor", function () { + me.setColor(""); + colorPop.hide(); + }); + }, + + createTable:function (hasTitle, hasTitleCol, hasCaption) { + var arr = [], + sortSpan = '^'; + arr.push(""); + if (hasCaption) { + arr.push("") + } + if (hasTitle) { + arr.push(""); + if(hasTitleCol) { arr.push(""); } + for (var j = 0; j < 5; j++) { + arr.push(""); + } + arr.push(""); + } + for (var i = 0; i < 6; i++) { + arr.push(""); + if(hasTitleCol) { arr.push("") } + for (var k = 0; k < 5; k++) { + arr.push("") + } + arr.push(""); + } + arr.push("
    " + lang.captionName + "
    " + lang.titleName + "" + lang.titleName + "
    " + lang.titleName + "" + lang.cellsName + "
    "); + preview.innerHTML = arr.join(""); + this.updateSortSpan(); + }, + titleHanler:function () { + var example = $G("J_example"), + frg=document.createDocumentFragment(), + color = domUtils.getComputedStyle(domUtils.getElementsByTagName(example, "td")[0], "border-color"), + colCount = example.rows[0].children.length; + + if (title.checked) { + example.insertRow(0); + for (var i = 0, node; i < colCount; i++) { + node = document.createElement("th"); + node.innerHTML = lang.titleName; + frg.appendChild(node); + } + example.rows[0].appendChild(frg); + + } else { + domUtils.remove(example.rows[0]); + } + me.setColor(color); + me.updateSortSpan(); + }, + titleColHanler:function () { + var example = $G("J_example"), + color = domUtils.getComputedStyle(domUtils.getElementsByTagName(example, "td")[0], "border-color"), + colArr = example.rows, + colCount = colArr.length; + + if (titleCol.checked) { + for (var i = 0, node; i < colCount; i++) { + node = document.createElement("th"); + node.innerHTML = lang.titleName; + colArr[i].insertBefore(node, colArr[i].children[0]); + } + } else { + for (var i = 0; i < colCount; i++) { + domUtils.remove(colArr[i].children[0]); + } + } + me.setColor(color); + me.updateSortSpan(); + }, + captionHanler:function () { + var example = $G("J_example"); + if (caption.checked) { + var row = document.createElement('caption'); + row.innerHTML = lang.captionName; + example.insertBefore(row, example.firstChild); + } else { + domUtils.remove(domUtils.getElementsByTagName(example, 'caption')[0]); + } + }, + sorttableHanler:function(){ + me.updateSortSpan(); + }, + autoSizeContentHanler:function () { + var example = $G("J_example"); + example.removeAttribute("width"); + }, + autoSizePageHanler:function () { + var example = $G("J_example"); + var tds = example.getElementsByTagName(example, "td"); + utils.each(tds, function (td) { + td.removeAttribute("width"); + }); + example.setAttribute('width', '100%'); + }, + updateSortSpan: function(){ + var example = $G("J_example"), + row = example.rows[0]; + + var spans = domUtils.getElementsByTagName(example,"span"); + utils.each(spans,function(span){ + span.parentNode.removeChild(span); + }); + if (sorttable.checked) { + utils.each(row.cells, function(cell, i){ + var span = document.createElement("span"); + span.innerHTML = "^"; + cell.appendChild(span); + }); + } + }, + getColor:function () { + var start = editor.selection.getStart(), color, + cell = domUtils.findParentByTagName(start, ["td", "th", "caption"], true); + color = cell && domUtils.getComputedStyle(cell, "border-color"); + if (!color) color = "#DDDDDD"; + return color; + }, + setColor:function (color) { + var example = $G("J_example"), + arr = domUtils.getElementsByTagName(example, "td").concat( + domUtils.getElementsByTagName(example, "th"), + domUtils.getElementsByTagName(example, "caption") + ); + + tone.value = color; + utils.each(arr, function (node) { + node.style.borderColor = color; + }); + + }, + setAutoSize:function () { + var me = this; + autoSizePage.checked = true; + me.autoSizePageHanler(); + } + }; + + new editTable; + + dialog.onok = function () { + editor.__hasEnterExecCommand = true; + + var checks = { + title:"inserttitle deletetitle", + titleCol:"inserttitlecol deletetitlecol", + caption:"insertcaption deletecaption", + sorttable:"enablesort disablesort" + }; + editor.fireEvent('saveScene'); + for(var i in checks){ + var cmds = checks[i].split(" "), + input = $G("J_" + i); + if(input["checked"]){ + editor.queryCommandState(cmds[0])!=-1 &&editor.execCommand(cmds[0]); + }else{ + editor.queryCommandState(cmds[1])!=-1 &&editor.execCommand(cmds[1]); + } + } + + editor.execCommand("edittable", tone.value); + autoSizeContent.checked ?editor.execCommand('adaptbytext') : ""; + autoSizePage.checked ? editor.execCommand("adaptbywindow") : ""; + editor.fireEvent('saveScene'); + + editor.__hasEnterExecCommand = false; + }; +})(); \ No newline at end of file diff --git a/admin/public/UEditor/dialogs/table/edittd.html b/admin/public/UEditor/dialogs/table/edittd.html new file mode 100644 index 00000000..49a52f71 --- /dev/null +++ b/admin/public/UEditor/dialogs/table/edittd.html @@ -0,0 +1,61 @@ + + + + + + + + +
    + + +
    + + + \ No newline at end of file diff --git a/admin/public/UEditor/dialogs/table/edittip.html b/admin/public/UEditor/dialogs/table/edittip.html new file mode 100644 index 00000000..954f7bb6 --- /dev/null +++ b/admin/public/UEditor/dialogs/table/edittip.html @@ -0,0 +1,33 @@ + + + + 表格删除提示 + + + + +
    +
    + +
    +
    + +
    +
    + + + \ No newline at end of file diff --git a/admin/public/UEditor/dialogs/template/config.js b/admin/public/UEditor/dialogs/template/config.js new file mode 100644 index 00000000..417b8f78 --- /dev/null +++ b/admin/public/UEditor/dialogs/template/config.js @@ -0,0 +1,42 @@ +/** + * Created with JetBrains PhpStorm. + * User: xuheng + * Date: 12-8-8 + * Time: 下午2:00 + * To change this template use File | Settings | File Templates. + */ +var templates = [ + { + "pre":"pre0.png", + 'title':lang.blank, + 'preHtml':'

     欢迎使用UEditor!

    ', + "html":'

    欢迎使用UEditor!

    ' + + }, + { + "pre":"pre1.png", + 'title':lang.blog, + 'preHtml':'

    深入理解Range

    UEditor二次开发

    什么是Range

    对于“插入”选项卡上的库,在设计时都充分考虑了其中的项与文档整体外观的协调性。


    Range能干什么

    在“开始”选项卡上,通过从快速样式库中为所选文本选择一种外观,您可以方便地更改文档中所选文本的格式。

    ', + "html":'

    [键入文档标题]

    [键入文档副标题]

    [标题 1]

    对于“插入”选项卡上的库,在设计时都充分考虑了其中的项与文档整体外观的协调性。 您可以使用这些库来插入表格、页眉、页脚、列表、封面以及其他文档构建基块。 您创建的图片、图表或关系图也将与当前的文档外观协调一致。

    [标题 2]

    在“开始”选项卡上,通过从快速样式库中为所选文本选择一种外观,您可以方便地更改文档中所选文本的格式。 您还可以使用“开始”选项卡上的其他控件来直接设置文本格式。大多数控件都允许您选择是使用当前主题外观,还是使用某种直接指定的格式。

    [标题 3]

    对于“插入”选项卡上的库,在设计时都充分考虑了其中的项与文档整体外观的协调性。 您可以使用这些库来插入表格、页眉、页脚、列表、封面以及其他文档构建基块。 您创建的图片、图表或关系图也将与当前的文档外观协调一致。


    ' + + }, + { + "pre":"pre2.png", + 'title':lang.resume, + 'preHtml':'

    WEB前端开发简历


    联系电话:[键入您的电话]

    电子邮件:[键入您的电子邮件地址]

    家庭住址:[键入您的地址]

    目标职位

    WEB前端研发工程师

    学历

    1. [起止时间] [学校名称] [所学专业] [所获学位]

    工作经验


    ', + "html":'

    [此处键入简历标题]


    【此处插入照片】


    联系电话:[键入您的电话]


    电子邮件:[键入您的电子邮件地址]


    家庭住址:[键入您的地址]


    目标职位

    [此处键入您的期望职位]

    学历

    1. [键入起止时间] [键入学校名称] [键入所学专业] [键入所获学位]

    2. [键入起止时间] [键入学校名称] [键入所学专业] [键入所获学位]

    工作经验

    1. [键入起止时间] [键入公司名称] [键入职位名称]

      1. [键入负责项目] [键入项目简介]

      2. [键入负责项目] [键入项目简介]

    2. [键入起止时间] [键入公司名称] [键入职位名称]

      1. [键入负责项目] [键入项目简介]

    掌握技能

     [这里可以键入您所掌握的技能]

    ' + + }, + { + "pre":"pre3.png", + 'title':lang.richText, + 'preHtml':'

    [此处键入文章标题]

    图文混排方法

    图片居左,文字围绕图片排版

    方法:在文字前面插入图片,设置居左对齐,然后即可在右边输入多行文


    还有没有什么其他的环绕方式呢?这里是居右环绕


    欢迎大家多多尝试,为UEditor提供更多高质量模板!

    ', + "html":'


    [此处键入文章标题]

    图文混排方法

    1. 图片居左,文字围绕图片排版

    方法:在文字前面插入图片,设置居左对齐,然后即可在右边输入多行文本


    2. 图片居右,文字围绕图片排版

    方法:在文字前面插入图片,设置居右对齐,然后即可在左边输入多行文本


    3. 图片居中环绕排版

    方法:亲,这个真心没有办法。。。



    还有没有什么其他的环绕方式呢?这里是居右环绕


    欢迎大家多多尝试,为UEditor提供更多高质量模板!


    占位


    占位


    占位


    占位


    占位



    ' + }, + { + "pre":"pre4.png", + 'title':lang.sciPapers, + 'preHtml':'

    [键入文章标题]

    摘要:这里可以输入很长很长很长很长很长很长很长很长很差的摘要

    标题 1

    这里可以输入很多内容,可以图文混排,可以有列表等。

    标题 2

    1. 列表 1

    2. 列表 2

      1. 多级列表 1

      2. 多级列表 2

    3. 列表 3

    标题 3

    来个文字图文混排的


    ', + 'html':'

    [键入文章标题]

    摘要:这里可以输入很长很长很长很长很长很长很长很长很差的摘要

    标题 1

    这里可以输入很多内容,可以图文混排,可以有列表等。

    标题 2

    来个列表瞅瞅:

    1. 列表 1

    2. 列表 2

      1. 多级列表 1

      2. 多级列表 2

    3. 列表 3

    标题 3

    来个文字图文混排的

    这里可以多行

    右边是图片

    绝对没有问题的,不信你也可以试试看


    ' + } +]; \ No newline at end of file diff --git a/admin/public/UEditor/dialogs/template/images/bg.gif b/admin/public/UEditor/dialogs/template/images/bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..8c1d10ad1933e02086e8a1b3c807c7d1e57d51db GIT binary patch literal 84 zcmZ?wbhEHb6kw2GXkcLY|NsA)GiMZkvM_*v4u}BBFfeKN|6H_V+Po~-c70vN1t=1+A%PQ29uxwx4>qZSNmg$Vo0WSSm;`Hl{Ww|6H_V+Po~-c6&>|-aSW-r_2!NtU#o%$i-Y0&su(f8j@G?~f`NtGer^@M zrYdIdrP)2_bk~ELr2i)^H(PkDy?QdpIbuVC@BX&$s!L5iRYqm|O_N&n@I;(N<+i7f+;9Z? Phk?P<)z4*}Q$iB}^elK+ literal 0 HcmV?d00001 diff --git a/admin/public/UEditor/dialogs/template/images/pre2.png b/admin/public/UEditor/dialogs/template/images/pre2.png new file mode 100644 index 0000000000000000000000000000000000000000..5a55672c1f9c4d41d5b5cf52d76bb2b7e7c6b186 GIT binary patch literal 394 zcmeAS@N?(olHy`uVBq!ia0vp^DM0MT!2~3?K3Qf5q$EpRBT9nv(@M${i&7aJQ}UBi z6+Ckj(^G>|6H_V+Po~;1Ffi(Px;TbZ+h>KHoj_IVWAxIr&Fiabo)3x94Up%M35SEe^0#X9dS;F-9{&3Ljos=IM}2LB&w>e?K^KZ|9tHA z)W~h}eTfo>R&7s^?LYqdE7+t-Dv4L4H{``lKYf(JYIB0^>jrz9Khf>{)o!mlw-~mt za!)h6<9vO9zW09 gTfg@IqFVdQ&MBb@0QJAA?EnA( literal 0 HcmV?d00001 diff --git a/admin/public/UEditor/dialogs/template/images/pre3.png b/admin/public/UEditor/dialogs/template/images/pre3.png new file mode 100644 index 0000000000000000000000000000000000000000..d852d29f13bcf743e15df824901ab568123a5aae GIT binary patch literal 485 zcmVTEH>0M4JV5-1QxJ>b$K`ZPMW6ena#ScoGi+aGE}QBI9b2~7O)VofCVgI z0Sj2@r|V8tRYg%8l35(bVHm0eOOPtd@{r7;D7wSi^O|UT7k&b(?|avE4}m2@pKY0^ zX8{XXz`D@ra0V&khG!6NNY4Tm0v50s9T*)L9q3sISir&!aYH5D@CmFqjy=yiBr_3O zu`P1E)qr;HnlAuCCeD2n8T2!dey#!;npC;SpUiv|xYU?E`rwKTr@$H|hS bPXPu1`Qm#ITgjGb00000NkvXXu0mjf8+_C8 literal 0 HcmV?d00001 diff --git a/admin/public/UEditor/dialogs/template/images/pre4.png b/admin/public/UEditor/dialogs/template/images/pre4.png new file mode 100644 index 0000000000000000000000000000000000000000..0d7bc72ab99fe2c0ed9de1d89fd1c3e82ac3fd43 GIT binary patch literal 393 zcmeAS@N?(olHy`uVBq!ia0vp^DM0MT!2~3?K3Qf5q$EpRBT9nv(@M${i&7aJQ}UBi z6+Ckj(^G>|6H_V+Po~;1FfeL+x;TbZ+5xOQzYV@t-I~V=Oc$U@%9?>h?uf)>*!tD zz9*sh?!vZ&M%HQV5wX`#zTA@g`shVPPoZs!AO#y_jv5_v2~@eKa{lwdV71lh?Z-1u+JRxq;OXk;vd$@?2>^GKp!om* literal 0 HcmV?d00001 diff --git a/admin/public/UEditor/dialogs/template/template.css b/admin/public/UEditor/dialogs/template/template.css new file mode 100644 index 00000000..6c1608df --- /dev/null +++ b/admin/public/UEditor/dialogs/template/template.css @@ -0,0 +1,18 @@ +.wrap{ padding: 5px;font-size: 14px;} +.left{width:425px;float: left;} +.right{width:160px;border: 1px solid #ccc;float: right;padding: 5px;margin-right: 5px;} +.right .pre{height: 332px;overflow-y: auto;} +.right .preitem{border: white 1px solid;margin: 5px 0;padding: 2px 0;} +.right .preitem:hover{background-color: lemonChiffon;cursor: pointer;border: #ccc 1px solid;} +.right .preitem img{display: block;margin: 0 auto;width:100px;} +.clear{clear: both;} +.top{height:26px;line-height: 26px;padding: 5px;} +.bottom{height:320px;width:100%;margin: 0 auto;} +.transparent{ background: url("images/bg.gif") repeat;} +.bottom table tr td{border:1px dashed #ccc;} +#colorPicker{width: 17px;height: 17px;border: 1px solid #CCC;display: inline-block;border-radius: 3px;box-shadow: 2px 2px 5px #D3D6DA;} +.border_style1{padding:2px;border: 1px solid #ccc;border-radius: 5px;box-shadow:2px 2px 5px #d3d6da;} +p{margin: 5px 0} +table{clear:both;margin-bottom:10px;border-collapse:collapse;word-break:break-all;} +li{clear:both} +ol{padding-left:40px; } \ No newline at end of file diff --git a/admin/public/UEditor/dialogs/template/template.html b/admin/public/UEditor/dialogs/template/template.html new file mode 100644 index 00000000..d9903a48 --- /dev/null +++ b/admin/public/UEditor/dialogs/template/template.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    +
    + +
    +
    +
    +
    + +
    +
    +
    +
    + + + + diff --git a/admin/public/UEditor/dialogs/template/template.js b/admin/public/UEditor/dialogs/template/template.js new file mode 100644 index 00000000..80a334b3 --- /dev/null +++ b/admin/public/UEditor/dialogs/template/template.js @@ -0,0 +1,53 @@ +/** + * Created with JetBrains PhpStorm. + * User: xuheng + * Date: 12-8-8 + * Time: 下午2:09 + * To change this template use File | Settings | File Templates. + */ +(function () { + var me = editor, + preview = $G( "preview" ), + preitem = $G( "preitem" ), + tmps = templates, + currentTmp; + var initPre = function () { + var str = ""; + for ( var i = 0, tmp; tmp = tmps[i++]; ) { + str += '
    '; + } + preitem.innerHTML = str; + }; + var pre = function ( n ) { + var tmp = tmps[n - 1]; + currentTmp = tmp; + clearItem(); + domUtils.setStyles( preitem.childNodes[n - 1], { + "background-color":"lemonChiffon", + "border":"#ccc 1px solid" + } ); + preview.innerHTML = tmp.preHtml ? tmp.preHtml : ""; + }; + var clearItem = function () { + var items = preitem.children; + for ( var i = 0, item; item = items[i++]; ) { + domUtils.setStyles( item, { + "background-color":"", + "border":"white 1px solid" + } ); + } + }; + dialog.onok = function () { + if ( !$G( "issave" ).checked ){ + me.execCommand( "cleardoc" ); + } + var obj = { + html:currentTmp && currentTmp.html + }; + me.execCommand( "template", obj ); + }; + initPre(); + window.pre = pre; + pre(2) + +})(); \ No newline at end of file diff --git a/admin/public/UEditor/dialogs/video/images/bg.png b/admin/public/UEditor/dialogs/video/images/bg.png new file mode 100644 index 0000000000000000000000000000000000000000..580be0a01dff4c70c72f78a3f40186660ee8eee0 GIT binary patch literal 2810 zcmVKLZ*U+5Lu!Sk^o_Z5E4Meg@_7P6crJiNL9pw)e1;Xm069{HJUZAPk55R%$-RIA z6-eL&AQ0xu!e<4=008gy@A0LT~suv4>S3ILP<0Bm`DLLvaF4FK%)Nj?Pt*r}7;7Xa9z9H|HZjR63e zC`Tj$K)V27Re@400>HumpsYY5E(E}?0f1SyGDiY{y#)Yvj#!WnKwtoXnL;eg03bL5 z07D)V%>y7z1E4U{zu>7~aD})?0RX_umCct+(lZpemCzb@^6=o|A>zVpu|i=NDG+7} zl4`aK{0#b-!z=TL9Wt0BGO&T{GJWpjryhdijfaIQ&2!o}p04JRKYg3k&Tf zVxhe-O!X z{f;To;xw^bEES6JSc$k$B2CA6xl)ltA<32E66t?3@gJ7`36pmX0IY^jz)rRYwaaY4 ze(nJRiw;=Qb^t(r^DT@T3y}a2XEZW-_W%Hszxj_qD**t_m!#tW0KDiJT&R>6OvVTR z07RgHDzHHZ48atvzz&?j9lXF70$~P3Knx_nJP<+#`N z#-MZ2bTkiLfR>_b(HgWKJ%F~Nr_oF3b#wrIijHG|(J>BYjM-sajE6;FiC7vY#};Gd zST$CUHDeuEH+B^pz@B062qXfFfD`NpUW5?BY=V%GM_5c)L#QR}BeW8_2v-S%gfYS= zB9o|3v?Y2H`NVi)In3rTB8+ej^> zQ=~r95NVuDChL%G$=>7$vVg20myx%S50Foi`^m%Pw-h?Xh~i8Mq9jtJloCocWk2Nv zrJpiFnV_ms&8eQ$2&#xWpIS+6pmtC%Q-`S&GF4Q#^mhymh7E(qNMa}%YZ-ePrx>>xFPTiH1=E+A$W$=bG8>s^ zm=Bn5Rah$aDtr}@$`X}2l~$F0mFKEdRdZE8)p@E5RI61Ft6o-prbbn>P~)iy)E2AN zsU20jsWz_8Qg>31P|s0cqrPALg8E|(vWA65poU1JRAaZs8I2(p#xiB`SVGovRs-uS zYnV-9TeA7=Om+qP8+I>yOjAR1s%ETak!GFdam@h^# z)@rS0t$wXH+Irf)+G6c;?H29p+V6F6oj{!|o%K3xI`?%6x;DB|x`n#ibhIR?(H}Q3Gzd138Ei2)WAMz7W9Vy`X}HnwgyEn!VS)>mv$8&{hQn>w4zwy3R}t;BYlZQm5)6pty=DfLrs+A-|>>;~;Q z_F?uV_HFjh9n2gO9o9Q^JA86v({H5aB!kjoO6 zc9$1ZZKsN-Zl8L~mE{`ly3)1N^`o1+o7}D0ZPeY&J;i;i`%NyJ8_8Y6J?}yE@b_5a zam?eLr<8@mESk|3$_SkmS{wQ>%qC18))9_|&j{ZT zes8AvOzF(F2#DZEY>2oYX&IRp`F#{ADl)1r>QS^)ba8a|EY_^#S^HO&t^Rgqwv=MZThqqEWH8 zxJo>d=ABlR_Bh=;eM9Tw|Ih34~oTE|= zX_mAr*D$vzw@+p(E0Yc6dFE}(8oqt`+R{gE3x4zjX+Sb3_cYE^= zgB=w+-tUy`ytONMS8KgRef4hA?t0j zufM;t32jm~jUGrkaOInTZ`zyfns>EuS}G30LFK_G-==(f<51|K&cocp&EJ`SxAh3? zNO>#LI=^+SEu(FqJ)ynt=!~PC9bO$rzPJB=?=j6w@a-(u02P7 zaQ)#(uUl{HW%tYNS3ItC^iAtK(eKlL`f9+{bJzISE?u8_z3;~C8@FyI-5j_jy7l;W z_U#vU3hqqYU3!mrul&B+{ptt$59)uk{;_4iZQ%G|z+lhASr6|H35TBkl>gI*;nGLU zN7W-nBaM%pA0HbH8olyl&XeJ%vZoWz%6?Y=dFykl=imL}`%BMQ{Mhgd`HRoLu6e2R za__6DuR6yg#~-}Tc|Gx_{H@O0eebyMy5GmWADJlpK>kqk(fVV@r_fLLKIeS?{4e)} z^ZO;zpECde03c&XQcVB=dL;k=fP(-4`Tqa_faw4Lbua(`>RI+y?e7jKeZ#YO-C z04GUAK~#9!Vtn`R9RmY{pr9ZF0|OHS5@7uQ|33o*!~6H|(PaPw01s0L&KT@ZaNKZ(v7^#AYAVokC4Iw}@1(MKIK(XJ;1r-(0i-=0G zA;n(cDgugKnu>^6Kv7gwK;c5(o)bX*KHqo0_ulXQ@qW(@J7;%hc6N4lcFwYA<@e=J zAf34`ZY~fCje=ak50ba3K+bXeFbMMSfM!4tqz0*?#z7cRLV+KIng}T)We5sE8IP8i zqoxh>paBmF0uY)6vIIp&%KD(3x`_`d4YxfAo_8RPzt%vIrOwFHK2#jS!+J%CWnyWB zI1=mVL&f^@MWNzYDMTicNGuYOMWSL!6c){vMIiwZ5N01r(XU(%LHp37@-6mZM$2X} zBS1t|d>KcsI(i&?pUQf?JPj9@g7LtY^ zipoDil(wd(_84uQF=KS}$BY@H4}&rKiYB`MjsW?ekgghJ23cTGI0&ta!sw#pEnwIf z`4to!XsL`s5>OaU7~m*M$||aA>KdBB9lj@`AT(x#r~{#tP#CllT3J;^O&Oy_0YqJl z(v)!|W%~sjJzUgUvWot;+!BYWW(MAuLMT*8@?A$&^X)$G+q$_@n&JM^brw$PzM;;S z56I|7_xzsnK9sGmtc!m3(ZzDd!3`&NUa5cnDeq)e!;7AUVKEzb<)5lZHrm3S(7eb?fwn~Ujsw&DfM1?7&aY{ggD4d=$dF?iRSc6O6ci&UYLfRzB+Z}xj zxKe7jxeBa+ss-)xJ)pz^qflo*x{UX9RE7Us1Iw=}$R9#l7^F{Khz-5&eqXYru7nUn zu{qVAv8a#q&g}NRSy^)EuxIZ~@xTWE!LryPw}4lz;jwdHrJT!O+{swsepShRO>gp; z9?e;|nsV;kyK4ijT)dBV>$rda$)S$7R{5b50=M?K4{eK>qaVjzu=Z2+r=g<@wD6+) zemVU&TfdmeAvRvtGm=H)e#8=1$au847I z?B9K+{N2IblG;JDoTJHYn@j_)#JiZ^sJ&Euw9Sx9E4tW7e^`m%q;m3BM6^%m(2C&g zCv&p%Ks;Y)4@;hDq z9x0Ovd8+fytO~h&`<7`YJA3Hx{B!%>x%Fs{d9BtsDal{s5Mf4S)J(l?^U%4coO1NnEWsovCYs$@{<_)Qa?t5q#kF|z%bq!iwWcRC2XFKwRRZTDY zb}l{on9UgbIk-}O_wf}u^aq=B;7u!UK+Ci=p`fm{H0hV5j-jD?&jAZLbTf8H>B1EA z!dUi=x3R5B_lC-L(@k%^VQ)=n%lTNaDuMlA;JL8*)x6$jjn=`va;PP#->TzEx}_Y- zmqTrYO@mASGI~TTzdkUvaOJ8b!OEWg=KYpU$HNQc5T-MMnz89%-r%f?TXLwAFo><` zw`1>-L-jfRf$|6PE{zjkV=%>r2-!Ngc__h=5Q0=EfyfRAcLZmS;B;Pg2Yn=58lSs= zRrs;0(1vp`4b!Ed4M$1z$P;O2fzZYv5CQBp!xFWTD%_U|!a3plI_4u%S4SWKC`1qN z27!|X5{=;!8quH!E`ojuVPSwG01(7|kWj;z+^pTB7&3xi1mFk{4Z&D{#UL_2gE|C7 zg4q7Ugn0>*e@K%5PiTlO)L_{VJXY}5LC;p?VY`_CEQGwR6f-jsu43E)P>ctzLLkgT z5Nvx*NCt_)C_(^~A!Q+C4RHYlexLng`W6SbhNXO$zGWC8466xOMbQEQc)(tx5+aTk zg-Sg`mVeWkH&+I~%Ml0j1+RU9SQHNGNSenBlYLuvkcoxEbwmyC@Q4vQteT2cz~}O$ z3kCC}poaRcA7z9F(BnW>MJjGi-^f-Cmx!YyzeA~rCH!!{h$o5`f;L*tKCpC81PAKc zoM@SN4o}3BaAdqtfPj4CBYDHj8VY6@15@0D;aKqa-yT0ES|adu4)6tC4NnSe{O>Uy z(s15)7!{5{=F18H4mXC&1MPTmGB>HKugAO)u~+~LR2xBm$E+S9maMcF@WV$eHC8cr z*AX;msT#@)<3tN&pr{_hlgNI+zHkKnJ-cQ|xT9DgmV9GeU4?vyIim#71ez}v!M0YH zi6cFuWm4XVW56^G0dS;$!fJ(xWx%2S39kvJIN~4Kku^9C76xg7jAp+_%8K=-iONH#FZx$*>_j@J_eG zy*pol!}3GzaQ-w8qDQ17FM{v7Qo{3DIp3GNas`(eiet~h&WvNl2_uC(83!9D6o{m( zI6E97oCV4-nt;P1EV31LIOM;3Y=DOs)=@0sVW~D`8?rT*NT*_zPAhP1R|M0 zCR+mzYiYbl#)-2QNvDoTaNQ$|@MS&kAO zM+P=0V1qQ`0AK%k`sM%&)?t{N=LGhPb~yM%%bLivCewXMbQYP$qS35~wk#r1!RjFn z<%h+8!%6}UL-idw{Q8a+_+cnV#`#<3P%bM>ED>^m4f#S&IFGPAk{6D{j!q2=*-wF< zfqE1~4G#~Nn@B3-h`2mACp#P%gAJb_$|Bl3x!Bv&NMxo9-5HF-fk7oXIy%wpiH^=x z2WO{|woYPhH0&uOZ9_p@TL+pw(}Bb!Q(VYMTNgUffka_4iByIylj$(hRyFA z;2C8B5ukGpybSDcBpen&2EfiCh*lsOU^x4ASk|4Q}~@qs1D!|mpSeqwk| z{BWKW#?t6`GK~SUEyzqfSp0Z0g9(oAi#+arb3F?f@1qECGcAceVBr{f)5Cpz!&H=8ih8D|9+Shx-FfGrxKZT zA_Bnx7$mX+k`asoQUIPtQt(jma4QA^!C=8a00uySq1w`j2m}KKWiU(tfngXFU^W;6 zegK&;v;~|1!hKPI5n%}TLIK8wA!rLA(iWJON}>WP41u-)DliPBYzsps&=Wv}he-ov z1{uaPz%&2|CW}g90+}#`+cIt8woF@?hiMD*0RKfG34yRQCL)c=gnMKnGMTU@VBOR4 zU_$Z03Gj4018<9G;(=*MBs__XCsFVuDjrNQU?MT_z#GVb7x)Np5#T*E;7Gs^fXe_+ z_=QHNJ5s@5NKRBIu>72uG)FSkh33F;v2~%)i8T0ifJ9i9D_;ttRQ&J@#)lU*ToUlH zNKj>QxQYeAh2t476gQ0K|6uX|{Q_2qjE&%dWru`05W9#>UvPp?B(tdGk=UhRlZwM+ zu^b7{J{+voe;q>!|C!cOPRzg7`R@bPk97V)y!|ihJZwmA1Vy-I2^1**E-r{jZQ$>0Pa&^Zk=_x}~^hr3ffr{!>sy)YHry*m( zJ;yrdJQt&FC6sjs%xH?w|0r6H6jmt_pTrOz+)yQ7VepiyT-#C1=?JlTXs1>uexd z4TT1`FCd#&ks%3Rrr!)|r}1VM7wt)Xww`P^ElFw1&Rcwgx!D&UuGU_|OQ!^8_^#f# zAvktm9c!kt&haJ5wKIYiSWR2rS-8z5eX7;8G$lP;_WnuUJi9Ut`bx%bmsOj>R#!Y3 zw7MU>y<)!X)rZNqkUqif4`ql~eN;k9d`LVgSXNcub%e)noj_h+lyVfcecILO712+- z%~Xn-w(OYEdTU^LBH4SVS@b&k+?SbafBi^v(NfO(aMB>+QV=m{=^WZC@w?>+tq%RF;@QtwJiYcW@eJ<~3e z&T}m%A5U|OiWr=FLOGxa+vVeGQBzzcz0e{&ZZd81xb)v%FX=k!6zq}t=i$r+<@G$n z=bBr!cRZzJ7d>tZURF{YxO8HQ+41m`O(`_ixn+7jj~2YKYPt3JEX$Yl z3pZvKzNlKdh2U3sR&TTRw)|PfK}VYi@s;;#(M@CH5~kKa_vLi83}v586seal^?rAx z=E>*mKhE@(yQ0UpEx#CC~f_}oI83e!snAh(qjWos~1Pgo?4bawL7iR z>o@s>;gf*6Pr8@OME7F74hLNF_vkd&;(JfvU(a@4;edJ;sn=2N;_jY&M52Cq*Uilk zjyet*ZbYI!r#b-2#2En6&$$@1A(!z~e8cgb#ub)KsS`U!7olVi|q`Uc=k`a^3GKuD`xn zV@NamI5m0O)3*E>kE(LmF)QpDr0@*2J@#Gi79GgILeFs4IjiquW8<=W$fX~gl2sdA zFS~D9rZU^+TyE8Z^95?C=+kYG2&va@j9=S=QDJ5;yaTr$Fr^(U-n~@5vF_ zxp!1-mP3=4JGTe>H-2hy$t>ENVK<{CFKOk@{uMPneIISe7b?4(?DHS)-peg0m_OJT zD>!v}N$t+#Hq7`Q_Ty*GHs}2Zm@k+Kw2a2v(`p-<2A0hKUG}>6_SjWEX^M3Sdt>kG z`txb~ice3LLy{}I1V^`Ymr3$=E%BU`mWDlW@=BSTcSmOX`0g+6Ck7v!PyG0+<%v}b z#79=NT$4lEbGyITpGs)BkoYkz;;*vizg#U^Bz@z{NOi_cAB$;GdArRrjC>Bu+;G1} zFS_GC(Zk&r^(OT}xgax8n4WSscdwI6>Z`kp-6k>`%u2WK%Y9pTJT5AoEZBqB(Ms9i zE3EL{@3@U_cbl*zb^NIc zOU^pK*CZ4@bI+A1Sw55Wg#XHHlclwAS>AYk@15lbH9bpAie7aWQu^k1c%NH3C4KA- zesl9x-XFBgAuh4yC1j~x*w@PA;qI`}yIsc&ky zOALst*kcPFqqJ-5g!wz44ehNnw7{m}Pwkl$ zBRRuV{%xM}RbLaIaW{6JFY!+cWoYK?pD>WaCao%8Y@V2yaqn%g>DWtow!Jx)Y}3f? zt|eJ_xbwH>E%Xbqm~(Y4Pibw-lq!M}^jC*Rk>GP=%1772&jY?UHpVZCcRA7#RLhH* zF?K`5{u77%>Thn3!9r(N1)8N_g(#hFc5B8Y&C$7bPGGWcr=OWqUDcK9;#(UHrDlP= z&XTf4b7*$m3o&W@UM;boIw^{w)lDe^ch`)nvb@}E)BS9+8i0W|>K`XN*VTO(bnnEMKJMxBZjNs% z%Q3x_^z_-I;7#rW$J;Y6dh~j~qgCI#+s{f^wA`ob^I3kkB1EHrKNcIQCuD5)%x^NJ z|J7%^!);mLti%r=-m9+k_YOWazSC{Jbr8)$t6o!T0(8YyVEN=1MsVtWIudyt*FfG zEp{U+TJN;`qN&~C1=V3q=M#-=RtK#;TlKqfuJh)2^sy;(-#<#ujG0};XEf571F?j9f06wAP_$X6|@<$N4ihC$HPn>76T46SnN;IjLrCck<|X z5as6S+H84*a(beB$b zkIJs+%Oe|5bB{cljOH0mM8Dc959x~Yc;`z5R`Q^FgWB|Yb8D1w ze@6D5nd)>X;2S^Kw9r#bCso!xjYd-2vILN7gM$3k2o3Oc+Vr#&zKKB+YGR{bL5lw%1F zZ}V+RmUur@-?Ayio7|b_PRi4JqKa=f$(cA|faoK-w6~0KS9@=3C%3UF_!p@8Y^`8r z&6)bwot6EjmbqVM#=ObubZUuuwBvN8|1Z>ZQ z>#n2n3$1mmg4$-B+LM>qlyHtOe%yMo^3$H2FJqVbTz-8{4i&U}R6p~6GB~TxVyT5k zMTcsyYFK%&9131tS$Ocyr{E2*C!W?>n4R~2)@iS&rJ`82fBeR!ljsF)70*2P?2xqe zKUjS~Q9Sv4`HL34)`G=dv0gpLjMp_JG&YL@pI5Z3l-@jl(UDO9Y*zEN%U$vZ{{gzM Bm*4;Z literal 0 HcmV?d00001 diff --git a/admin/public/UEditor/dialogs/video/images/file-icons.gif b/admin/public/UEditor/dialogs/video/images/file-icons.gif new file mode 100644 index 0000000000000000000000000000000000000000..d8c02c27e242f0584fc6b214f35b4f6d8caec332 GIT binary patch literal 20097 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 literal 0 HcmV?d00001 diff --git a/admin/public/UEditor/dialogs/video/images/file-icons.png b/admin/public/UEditor/dialogs/video/images/file-icons.png new file mode 100644 index 0000000000000000000000000000000000000000..3ff82c8c488f53a7aff67fbe39742e3321183eca GIT binary patch literal 44070 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

    *vGSxI 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 literal 0 HcmV?d00001 diff --git a/admin/public/UEditor/dialogs/video/images/icons.gif b/admin/public/UEditor/dialogs/video/images/icons.gif new file mode 100644 index 0000000000000000000000000000000000000000..78459dea7b12ccbeec81d19ecdab22b1658e93b4 GIT binary patch literal 453 zcmZ?wbhEHbbY#$A*vtR||Ns9FJNP^N(4UCIf1{56|NHmvpFe+o|NadW2g{=nia%Kx z85lSjbU>mYGZarn*x(aH@fLZq!wgUiaA+%BrQuMGlI(3v}$4ket=c%G-JG_a6@d zUMtW1Dv_dMk(#;&JDULU);6IIt*+RD80Beh(v#{r8-@JE7rOMyrKZ@`PM+5- zK4PEn@UifH&1a7opNKNDvAy~H((Lt@PiCLrh`sqL^yyzFM}*_N9gV+*y1bvCcd{tw zP+atQ`ojjtR_?nOH&4iCw(0v^v}@~SfpwBi-JHA%0-p_?kEd#ga=ENn_|&M5?L?$c z!i1+jT>6R+ul!uQ+^$n$Hm~o7%Nb0wJ#GK7NE~>4aE?#6+>{R=oUZeJnouMg`B^J) rUi3;Xl^IQMkE|4#X6EZ{`gBG$ultcLuMHMNRKNMR>qv$%6N5DXx{1lO literal 0 HcmV?d00001 diff --git a/admin/public/UEditor/dialogs/video/images/icons.png b/admin/public/UEditor/dialogs/video/images/icons.png new file mode 100644 index 0000000000000000000000000000000000000000..12e4700163ac87fa38ae3d92a2c39d0fb4690fed GIT binary patch literal 2678 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 literal 0 HcmV?d00001 diff --git a/admin/public/UEditor/dialogs/video/images/left_focus.jpg b/admin/public/UEditor/dialogs/video/images/left_focus.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7886d276dda2e0aecdae22393eac534ed507babf GIT binary patch literal 11423 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 T+mF>-Zi@@LHB9%bmHhD^k7NPf literal 0 HcmV?d00001 diff --git a/admin/public/UEditor/dialogs/video/images/none_focus.jpg b/admin/public/UEditor/dialogs/video/images/none_focus.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7c768dcb47aaa289135afd2bd0e8eb0b6ecb7536 GIT binary patch literal 11546 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 C61Fb@ literal 0 HcmV?d00001 diff --git a/admin/public/UEditor/dialogs/video/images/right_focus.jpg b/admin/public/UEditor/dialogs/video/images/right_focus.jpg new file mode 100644 index 0000000000000000000000000000000000000000..173e10d2d91026c7283566993afb2f3a0267ea40 GIT binary patch literal 11334 zcmeG?3pkWpyWbf1Btl6P<1WnoTJD!zBB9!)(iopH8Z*O;Yl(LE+NG$7bQjf@9b!w; zMO3;XT_~H{rG$iTV$S-$LD~O4|NozJp7T8Cc}}a=`>plf*89HS`>nNREz(EQKOhY+ zcTaZ+BZq-Jz&}XZrtr`$o)-o|K0c5Y1VPG>5@s@l1uYEt2VwLe1+)!8A(-i7?Ffv; z2#*}#AwmE``k+Q*NN8Idw0CaiLGmNA$HDU+r1~`lg3L8WpH88|5ZKT!TqqHW!-XP4 zmjH_4VxAyW7$=5E1R{||B(MlfL(m|QSR^`70bvhgWaCPu5Oi2>OuyM->{#0bVFX1H zgB`I^@q0foGrswOG5g*R5R(ymF}8AJy5*0^)FIJAA|iWAzmFw?Lt@zlsi8gvyZAtI z(r!o{?Lna_h@`X`+5o93D=VugtEs4{X--g`ps6!SO>L5nu9lXLmX@xj8d^pkvd&*2 zX5xei6V)ebsH{yz*>3KCM87$Dr$leak4zHAPT3YKw7t38?oTB|NVDllaRLPpVM3dbU0#4 zuc;zpfRY*YN**wj$Bg)|A=K4!vyZh`qX6QoZdH7q)&CgcEh_P#s2yder7OSUb2 znX&XEvB%_Yz5V|AALa-LH!dD3jvMyW(!kz7zoxM+*}W%sNfC9}d;dAjUruvczAin^ zpE#tIW!e)N(7n1WvbA65xp8z;FlCbzY7#%+IfvL^`(kTj@`Az-)|?t0?l7Xv;Ze90 z`kg9;n(4`j_IBqQhX(W_*0^q4Svy=kD>>q3y^zD*n!h#m%NO>|M6ChR3c~Z*H4Yw^ z>uz4IDSYded3#l1%#PCE>WnTIh_eg=zf@&cnsR5`_LN9!2a|$JmiuUDyJ^3Yx ztF0dw#Rc>y;rky*p~D}|UhmA8*yg-RJm18r7YUQ^w7fL_k~yewRCg|GBTSzsZ|%FVpT`(iHoGeNA2Gv|evExU{}+ z(b?YK*DFtKvMWe)ahYY3wx-8cyt~Hkgi>zYP|4jPt7CGG6O6m82=Y&78WFBxs_0HiRmfXax9mekSzl0RPIhu9&(gt#Q#Pemn4oW8 zS@U)Fz=vSz{b$uu=zs(J*xOckP;F*WQeH!AQS$8MSHr`N^9N0((CxTk`3pv-`Ed@n zy5m}t>xYZ8XfyBd9d-?$?opFMIn$e858rJy7PNYCOCK$gLT^6~cS@oA!S*Km9fs&q zNM#L63ONi<=+;dR8`|AyXIE8f7cmrhU#s(Baf1|EH(;OTeYM_y_)zexkPakLhQAH5zLYOSz{OyieC!gC=V6I*nGpFUVQ?62oizm`ELuh10nw{N%}vbp|Ma#bVG=* zVBwH+l+}^A%>Y;kU2tS^)I+*hCjeyrAYBN|)DVQkUNN9A=<^{z$R;?z-v{)Oh3K#4 zdmJJ&x)6@>ea|q895D{*3S#(t@Icmb#SmePAXGd*B!UBaBXa&62@&*=R}BS%^_njf zaFI4r=D}f-@B7XYVdO|3HN&49K1xU35%YN*SiFcoPYi@HH3{+ zC2q7ZMl=qkD2(QDc>-7v6A5J0+yW5o^HCh=Ph`hPgmYm59L<)%p#T8|CWzn>W>pz8 zf3YoK4LCB4x`BCO9I*4aX57j4CLT=iKo~j z&}UwVP{>CVDvzSaF{^|NqZ6I@Jnm?uCdr)l7)1j~rBFDG9mAJ^rb;XvE%_VvMWg8P z>=Qz`E<(OA`n%w2%Je(W9U}k{$X6&pVyz+(isr{i#PDchAT(7zNTh$js)Yz8Aff&N zKLNbr@V~O7U!Db`3{nGC&fy)}mVITKXd5G&h2)WKsw|-~s1(8v$yWk^1ab5m0mX<#C{v*IH~k+6hq7$3{OWWyoQ$c9w1EtyK9kto)NBm#kfC(!X^f(?2+c>hVFq(@eGMP*~frKZKYygLiI6)v`$J+?R#-kcsVKFC~Cz9}l z0z*V28|+6^$OG zjERg>Jw`@f$EXkpu8+^(3yi+G$jGrF#1gky;Ko0D&thcx$NR%#VN5g!c8djO8jlVp z;e~w*=Q!gK$~e1Va3=Nl10j?#RuRi38fHttrUPtzMib!M&z|p2ln@(6xM5eY546J} zM@%*ZrVWV}NTjhyR2G#wi@;zJ2r^b5VJI&w;X76$0dNP7o<@yh1$h|CmazXNb0~)u zCX9|`gBbE6*<2VOA%eL$!?9PxLib5vWMCc{HN(e;1u}qKG^bjp)3ZI z>cn&=GD&22k{j^D*_}pkCX$&<0)@_CGMz_dU4@(&BvVFZL;nl1vi&og|KHPryipcV z0S0FypMf2Yh%-cyKOxD%kC7qi;BzDp@I(ZT(3kuR`Zw}I0S`oyG$Q8<#)*Ypd0beG zV5u}~5|s`r15~Cp`1q|!bPA{d$DmkK$plb|pbhX0vNefGvnCUW)?^|BRHikR1S**X za6k{804m_6BYi5MgG#25NwXQw6p|BzK_t?d6gMK3?(FWyaB^mnC^V|8JK33mGepvr z<;RPM`9Hbxz^f3Wu^^A5Ecu>78<9a%AplI7AQxy!CIgXWG7ugn1K|O=k3u2}5p7IV8KjV?ZtWXo2Ma3F99zrnM_1e*&mR%^5rH2O_z{605%>{-|3?w{b{YT+z!5+k z_^l5v%#B7a%pJkW0=T``z{+7|#|+3(11RVny6lGf--2@A3U;h~CyCq`%Z(BK-G=na z*d02!be7$rS3@_zQL`Ml0RC1KmE@HnIR#a4UJ5AR@Q{L{yb?fQlt-@3701LB!F9V5 zpiG^jtf{SIZZU1LmaZi@vsM5X+u&+@23+4GXXX9ew?fSAjuS($@x%kSuI6k`u$ggrTl!nQ^xMfros_z)@{aWF zH*5XxeMz@`)cclZCJOPqug{N;UUy^d=4E^LhuRG>>VrE{_iSoDoeWefW8}c!5kQ$% zMpqIVixU^jxk-Cd?xQ}{_xhQHRo5aeCRy&d^-J+l#jW91l~-$Vu|My5{5~>mre7a8^v&GP%a6BcZkreBNMIf)t&6>2h9Gk|T`t^cMcw7+lN*TSm>+5<{v zvH?Lj6`+X)PA?+5N!a>T(88W;>_q&p&h0Zcu5|A&RwOQ&PKr?@^t!rkxfJhWRg_O5 zxY^rXi0d%glxkX6qPpBIE9C1zMS^Ntt`geYOjs0O&WXh#*>9i)_{jGGlu)IsY)FG z;McFJeSz?kv`^mF#kw_Ywbil9JNH=P+G?Teq%YfSx>l6$HmZnyoiV{b&@aj&i}FCl z^X&B{FAMoU|GZ5n-K$>P*wW#1_9e5KD~_)^*V9yWgejkyB&x}Dsa;XH)^hs)pRI2;5wnRnPXOKWn0_=yN(h&0^s+ zi@CW^yI%#Kcs{5vYQ1U@Y^>0-GvBnnx#Yk+xn}G-zh9>8FYQk8dpCP(%&Kh1it}Ep zrZ~B(t~B)Y$lQI-Yo6J%`zDTu7Pn-+ecKY1`b)y1_={CD3&Sb{bcZvFK9`r*7_4p~ z8Jn-rjQ7B-6yrD-gnp^p;-xpuI~a<$9~@CBaPbbl-Nfl}*%lr*Wy$eVsw6=M7Y-pZA+oFj6&fe9I266P|pHp9L+Yw`%ap!%@HR3eO z$lRB?4%)`gX;pWt%HO=oUo+6~`c$s(F<*~qdD)vhIh1B2-M0@1TA#0KuuUxdvikVb z_l>W9$-%uTNS+b)3-6QXpY10L(Tu_(8P)%)yvSfZC#_pQ=h&I2Ee?^ZV>{0@K6$>q zOcZq{Brp%RD0at@rC)Qaho|iuT<$bucl*{4A@5%dr*v1DM;+Sm(!OEEZpq#Gzdnka z6}Kzm{o^TRH{9yxJ-N{55!;kUDWP@xEHfph#FW^*@OXG!Wrb?fhajcoq_D1*LmCOZ zIgRP@HN0Gn4JVl9!r8`Cv=1(yn4X%jVPng3awKbehPo1#{rI&>>0;}18fup-I)iSR z*$?n6yuQRxPnv1T*IG^skzYd>)So%nJ!?vrD`W3UM{>eS-+5U2rl%M6`te5ZSVgnf zTf%d;^yV9Sh!Jl5dm($%4B21`anx(&BgR4+i(E7V}8Bb%y`J#9u{)Np?mikrP@KmR5 zUDs!3X@WH{Zx3dQiXkoT_WiCoDe}Qv_jqo)MM?| zw7RnNV@z=d?eXf5&k|h*}UvDmPGy<>G}87sK1)jU9)H(>8u zsk-_0V%WoTk?*u4ZMIdHq)_Rbhk0Lj-);0^CD|YEo$QI%?sHxeTcgoj*im)mVg8!E z4j*a*&%HEH(~1d73|zxZ{O#nVeA;uKE-XI*)|@p2)M6F*j5O?+2(VM=k=s5fMOYXFl%XP zhV}D!$tlfPV#ofpoo@OEZW^+g-gJ)wu0`U8AZF#t{}C({j{#*@du(M%^Gk(Ud=Uw8})cm={>K-n27zQ znc8ZHp``2E`K{31&6-*PrO%$(zEqj3a#*5!AzM7%zEFHU^~K3)(x%!<;=T7H)Tbt*!j@a^RF5ceZG#hP=RY zY$#W)DqjVk_%bbZkK?%={>#-`w-}|sw>R8AeV_#T&i;eu#Usik$jwmWQ`8@ArMs05AYd!b8eB7Z%je=H-nki=PT@GCR^;4C6 zboPj{CtFzQ%SY044>na+M5Yh74qZ+3emJC1#rm`C&f&qeNAKNhDaRiUgZ!JnVcWgRClBMV5d!$k0kir+5-b?54NS>y|b2{zW2HG@qYmKL(QcC literal 0 HcmV?d00001 diff --git a/admin/public/UEditor/dialogs/video/images/success.gif b/admin/public/UEditor/dialogs/video/images/success.gif new file mode 100644 index 0000000000000000000000000000000000000000..8d4f3112b9d1df2147ed3b67d9736163dedd11e1 GIT binary patch literal 445 zcmZ?wbhEHb)L_tHxXJ(m|NsC0{`>#WKmY&!`~ULm|4%>v3rzVXIOUh{)L$ageu+>2 zB{Acd%*pZwE#>TlQSztb-KopJH+%!_|l-~7Ag*59?a z{_c7B@6_{ur(gU#_wwKE_y6vG`1j=VzZYNsfBgCX$DjXizW@L859r4KV8@~pia%Kx z85k@WbU+dyKQXY~a+p)#p(E9QVoA}-BeJtDJbfs+R&065YSGzOop#2q7tzUUTK@E- z1Qpqe*fm*b*T-Fam_8!ZPiJg?eRTb9ku+5;xVnw>Wr$>Ce}(b zvq{bgY~#~oR8Cparp&0%zbdUw!o*Z6ds70hP&$teqekA&7*16-748@%Mnl0vSqU6+ zOpICr!NSHY@7SLk+rBLP3&#jWP!Xxbb jiN%_{Rv%uKKTTNF#>acL^G5)OtDBg<-IWs>91PX~W`xy? literal 0 HcmV?d00001 diff --git a/admin/public/UEditor/dialogs/video/images/success.png b/admin/public/UEditor/dialogs/video/images/success.png new file mode 100644 index 0000000000000000000000000000000000000000..94f968dc8fd3c7ca8f6cb599d006ef3f23b62c7d GIT binary patch literal 1621 zcmeAS@N?(olHy`uVBq!ia0vp^8X(NU1|)m_?Z^dEk|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+m{l@EB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxSU1_g&``n5OwZ87 z)XdCKN5ROz&`93^h|F{iO{`4Ktc=VRpg;*|TTx1yRgjAt)Gi>;Rw<*Tq`*pFzr4I$ zuiRKKzbIYb(9+TpWQLKEE>MMTab;dfVufyAu`f(~1RD^r68eAMwS&*t9 zlvO-#?>2=9ZF3nBND}m`vLFhHXsTY(OatnYqyQCInmZhe+73JqDfIV%MiQ6rPIL(9V zO~LIJBb<8mfsWA!MJ-ZP!-Rn82gHOYTp$OY^i%VI>AeV;u(vXbonl~MI_~M>7*cWT z%njcRVMh`65C6~Q2yI{K`NBQQh9heAinXE1(JfB=Ul%M;Ke#x6g%L8^f5l4Te zj&BcK1znDIyZS2~eC7F3K+}tVTa$=u*HTU0W4>0#`+Qf%|GkyBERBs#$Y}P@k7@U2 zd#*XsYr~WGeCA1uSK>2HTD)g9mP}Xrpg$+`K&8dx2JS~bjCx(hj5}1;-8qn2_>|?> zp{d+2q{I0hbQS!U-jOut`kSEi+IhQJGmBl4O%se*W?OGKZ0Mp?XmGnRgezL^8vCJ4 z#-ek9(R&%4!h+;oXA~Mtbyie=u#0PDiI#!iX`%2?^@kRL8ma*r6?+*}W4e|_8~J&& z+-+*Ub3{dDcAIF|!MTDz0#78qKYeaeVU$wDOOs3cR=e5FZ*O2e-6xc{Uu=$;!s>*M z>nZ|V>zUp8-oE6^wXjV+_UOvuE&SORr`;3hnBKu~e3rzlY@NRjD|5Ui2t>^@Ve7jy z)2vT>u1vesjJgG`f;l_n`FmbR~b^~{VzXB}7CdU_pt>lO9l=E;X#4<2bZu32r~J^e^%TSISQ_Qm$= z7d{rOo2%^RUGseJkpn9(MWszUQdl(i&RN5PBgZ0d#S7ZipShU3W`>Nsy6C#pCD*KW zyxHW%b?m|pr;dF;L$saa#oaeO`u=>jkXTjl9*cLEvOD!Jdr4ooKJW9gY7?D{e?uM^ z`_}E4`0yR0boA=9>3>WXzUH{&pDfpZ;_2xb=j*pKsk#WyD%J#5t{1#azeB z4SJq8H2*dJVX$xugZHVh{7U`u4@oM|quz5j-hRJi{qwh1k5uNqu`W>3HJG&Y^R}6R z$Gq-HPue$sd${oT*XKO8zN>Oe_%K^bZNm3^-vf7@5X# + + + + + + + + +

    + + + + + + + + + + + + \ No newline at end of file diff --git a/admin/public/UEditor/dialogs/video/video.js b/admin/public/UEditor/dialogs/video/video.js new file mode 100644 index 00000000..61c4a7e0 --- /dev/null +++ b/admin/public/UEditor/dialogs/video/video.js @@ -0,0 +1,797 @@ +/** + * Created by JetBrains PhpStorm. + * User: taoqili + * Date: 12-2-20 + * Time: 上午11:19 + * To change this template use File | Settings | File Templates. + */ + +(function(){ + + var video = {}, + uploadVideoList = [], + isModifyUploadVideo = false, + uploadFile; + + window.onload = function(){ + $focus($G("videoUrl")); + initTabs(); + initVideo(); + initUpload(); + }; + + /* 初始化tab标签 */ + function initTabs(){ + var tabs = $G('tabHeads').children; + for (var i = 0; i < tabs.length; i++) { + domUtils.on(tabs[i], "click", function (e) { + var j, bodyId, target = e.target || e.srcElement; + for (j = 0; j < tabs.length; j++) { + bodyId = tabs[j].getAttribute('data-content-id'); + if(tabs[j] == target){ + domUtils.addClass(tabs[j], 'focus'); + domUtils.addClass($G(bodyId), 'focus'); + }else { + domUtils.removeClasses(tabs[j], 'focus'); + domUtils.removeClasses($G(bodyId), 'focus'); + } + } + }); + } + } + + function initVideo(){ + createAlignButton( ["videoFloat", "upload_alignment"] ); + addUrlChangeListener($G("videoUrl")); + addOkListener(); + + //编辑视频时初始化相关信息 + (function(){ + var img = editor.selection.getRange().getClosedNode(),url; + if(img && img.className){ + var hasFakedClass = (img.className == "edui-faked-video"), + hasUploadClass = img.className.indexOf("edui-upload-video")!=-1; + if(hasFakedClass || hasUploadClass) { + $G("videoUrl").value = url = img.getAttribute("_url"); + $G("videoWidth").value = img.width; + $G("videoHeight").value = img.height; + var align = domUtils.getComputedStyle(img,"float"), + parentAlign = domUtils.getComputedStyle(img.parentNode,"text-align"); + updateAlignButton(parentAlign==="center"?"center":align); + } + if(hasUploadClass) { + isModifyUploadVideo = true; + } + } + createPreviewVideo(url); + })(); + } + + /** + * 监听确认和取消两个按钮事件,用户执行插入或者清空正在播放的视频实例操作 + */ + function addOkListener(){ + dialog.onok = function(){ + $G("preview").innerHTML = ""; + var currentTab = findFocus("tabHeads","tabSrc"); + switch(currentTab){ + case "video": + return insertSingle(); + break; + case "videoSearch": + return insertSearch("searchList"); + break; + case "upload": + return insertUpload(); + break; + } + }; + dialog.oncancel = function(){ + $G("preview").innerHTML = ""; + }; + } + + /** + * 依据传入的align值更新按钮信息 + * @param align + */ + function updateAlignButton( align ) { + var aligns = $G( "videoFloat" ).children; + for ( var i = 0, ci; ci = aligns[i++]; ) { + if ( ci.getAttribute( "name" ) == align ) { + if ( ci.className !="focus" ) { + ci.className = "focus"; + } + } else { + if ( ci.className =="focus" ) { + ci.className = ""; + } + } + } + } + + /** + * 将单个视频信息插入编辑器中 + */ + function insertSingle(){ + var width = $G("videoWidth"), + height = $G("videoHeight"), + url=$G('videoUrl').value, + align = findFocus("videoFloat","name"); + if(!url) return false; + if ( !checkNum( [width, height] ) ) return false; + editor.execCommand('insertvideo', { + url: convert_url(url), + width: width.value, + height: height.value, + align: align + }, isModifyUploadVideo ? 'upload':null); + } + + /** + * 将元素id下的所有代表视频的图片插入编辑器中 + * @param id + */ + function insertSearch(id){ + var imgs = domUtils.getElementsByTagName($G(id),"img"), + videoObjs=[]; + for(var i=0,img; img=imgs[i++];){ + if(img.getAttribute("selected")){ + videoObjs.push({ + url:img.getAttribute("ue_video_url"), + width:420, + height:280, + align:"none" + }); + } + } + editor.execCommand('insertvideo',videoObjs); + } + + /** + * 找到id下具有focus类的节点并返回该节点下的某个属性 + * @param id + * @param returnProperty + */ + function findFocus( id, returnProperty ) { + var tabs = $G( id ).children, + property; + for ( var i = 0, ci; ci = tabs[i++]; ) { + if ( ci.className=="focus" ) { + property = ci.getAttribute( returnProperty ); + break; + } + } + return property; + } + function convert_url(url){ + if ( !url ) return ''; + url = utils.trim(url) + .replace(/v\.youku\.com\/v_show\/id_([\w\-=]+)\.html/i, 'player.youku.com/player.php/sid/$1/v.swf') + .replace(/(www\.)?youtube\.com\/watch\?v=([\w\-]+)/i, "www.youtube.com/v/$2") + .replace(/youtu.be\/(\w+)$/i, "www.youtube.com/v/$1") + .replace(/v\.ku6\.com\/.+\/([\w\.]+)\.html.*$/i, "player.ku6.com/refer/$1/v.swf") + .replace(/www\.56\.com\/u\d+\/v_([\w\-]+)\.html/i, "player.56.com/v_$1.swf") + .replace(/www.56.com\/w\d+\/play_album\-aid\-\d+_vid\-([^.]+)\.html/i, "player.56.com/v_$1.swf") + .replace(/v\.pps\.tv\/play_([\w]+)\.html.*$/i, "player.pps.tv/player/sid/$1/v.swf") + .replace(/www\.letv\.com\/ptv\/vplay\/([\d]+)\.html.*$/i, "i7.imgs.letv.com/player/swfPlayer.swf?id=$1&autoplay=0") + .replace(/www\.tudou\.com\/programs\/view\/([\w\-]+)\/?/i, "www.tudou.com/v/$1") + .replace(/v\.qq\.com\/cover\/[\w]+\/[\w]+\/([\w]+)\.html/i, "static.video.qq.com/TPout.swf?vid=$1") + .replace(/v\.qq\.com\/.+[\?\&]vid=([^&]+).*$/i, "static.video.qq.com/TPout.swf?vid=$1") + .replace(/my\.tv\.sohu\.com\/[\w]+\/[\d]+\/([\d]+)\.shtml.*$/i, "share.vrs.sohu.com/my/v.swf&id=$1"); + + return url; + } + + /** + * 检测传入的所有input框中输入的长宽是否是正数 + * @param nodes input框集合, + */ + function checkNum( nodes ) { + for ( var i = 0, ci; ci = nodes[i++]; ) { + var value = ci.value; + if ( !isNumber( value ) && value) { + alert( lang.numError ); + ci.value = ""; + ci.focus(); + return false; + } + } + return true; + } + + /** + * 数字判断 + * @param value + */ + function isNumber( value ) { + return /(0|^[1-9]\d*$)/.test( value ); + } + + /** + * 创建图片浮动选择按钮 + * @param ids + */ + function createAlignButton( ids ) { + for ( var i = 0, ci; ci = ids[i++]; ) { + var floatContainer = $G( ci ), + nameMaps = {"none":lang['default'], "left":lang.floatLeft, "right":lang.floatRight, "center":lang.block}; + for ( var j in nameMaps ) { + var div = document.createElement( "div" ); + div.setAttribute( "name", j ); + if ( j == "none" ) div.className="focus"; + div.style.cssText = "background:url(images/" + j + "_focus.jpg);"; + div.setAttribute( "title", nameMaps[j] ); + floatContainer.appendChild( div ); + } + switchSelect( ci ); + } + } + + /** + * 选择切换 + * @param selectParentId + */ + function switchSelect( selectParentId ) { + var selects = $G( selectParentId ).children; + for ( var i = 0, ci; ci = selects[i++]; ) { + domUtils.on( ci, "click", function () { + for ( var j = 0, cj; cj = selects[j++]; ) { + cj.className = ""; + cj.removeAttribute && cj.removeAttribute( "class" ); + } + this.className = "focus"; + } ) + } + } + + /** + * 监听url改变事件 + * @param url + */ + function addUrlChangeListener(url){ + if (browser.ie) { + url.onpropertychange = function () { + createPreviewVideo( this.value ); + } + } else { + url.addEventListener( "input", function () { + createPreviewVideo( this.value ); + }, false ); + } + } + + /** + * 根据url生成视频预览 + * @param url + */ + function createPreviewVideo(url){ + if ( !url )return; + + var conUrl = convert_url(url); + + conUrl = utils.unhtmlForUrl(conUrl); + + $G("preview").innerHTML = '
    '+lang.urlError+'
    '+ + '' + + ''; + } + + + /* 插入上传视频 */ + function insertUpload(){ + var videoObjs=[], + uploadDir = editor.getOpt('videoUrlPrefix'), + width = parseInt($G('upload_width').value, 10) || 420, + height = parseInt($G('upload_height').value, 10) || 280, + align = findFocus("upload_alignment","name") || 'none'; + for(var key in uploadVideoList) { + var file = uploadVideoList[key]; + videoObjs.push({ + url: uploadDir + file.url, + width:width, + height:height, + align:align + }); + } + + var count = uploadFile.getQueueCount(); + if (count) { + $('.info', '#queueList').html('' + '还有2个未上传文件'.replace(/[\d]/, count) + ''); + return false; + } else { + editor.execCommand('insertvideo', videoObjs, 'upload'); + } + } + + /*初始化上传标签*/ + function initUpload(){ + uploadFile = new UploadFile('queueList'); + } + + + /* 上传附件 */ + function UploadFile(target) { + this.$wrap = target.constructor == String ? $('#' + target) : $(target); + this.init(); + } + UploadFile.prototype = { + init: function () { + this.fileList = []; + this.initContainer(); + this.initUploader(); + }, + initContainer: function () { + this.$queue = this.$wrap.find('.filelist'); + }, + /* 初始化容器 */ + initUploader: function () { + var _this = this, + $ = jQuery, // just in case. Make sure it's not an other libaray. + $wrap = _this.$wrap, + // 图片容器 + $queue = $wrap.find('.filelist'), + // 状态栏,包括进度和控制按钮 + $statusBar = $wrap.find('.statusBar'), + // 文件总体选择信息。 + $info = $statusBar.find('.info'), + // 上传按钮 + $upload = $wrap.find('.uploadBtn'), + // 上传按钮 + $filePickerBtn = $wrap.find('.filePickerBtn'), + // 上传按钮 + $filePickerBlock = $wrap.find('.filePickerBlock'), + // 没选择文件之前的内容。 + $placeHolder = $wrap.find('.placeholder'), + // 总体进度条 + $progress = $statusBar.find('.progress').hide(), + // 添加的文件数量 + fileCount = 0, + // 添加的文件总大小 + fileSize = 0, + // 优化retina, 在retina下这个值是2 + ratio = window.devicePixelRatio || 1, + // 缩略图大小 + thumbnailWidth = 113 * ratio, + thumbnailHeight = 113 * ratio, + // 可能有pedding, ready, uploading, confirm, done. + state = '', + // 所有文件的进度信息,key为file id + percentages = {}, + supportTransition = (function () { + var s = document.createElement('p').style, + r = 'transition' in s || + 'WebkitTransition' in s || + 'MozTransition' in s || + 'msTransition' in s || + 'OTransition' in s; + s = null; + return r; + })(), + // WebUploader实例 + uploader, + actionUrl = editor.getActionUrl(editor.getOpt('videoActionName')), + fileMaxSize = editor.getOpt('videoMaxSize'), + acceptExtensions = (editor.getOpt('videoAllowFiles') || []).join('').replace(/\./g, ',').replace(/^[,]/, '');; + + if (!WebUploader.Uploader.support()) { + $('#filePickerReady').after($('
    ').html(lang.errorNotSupport)).hide(); + return; + } else if (!editor.getOpt('videoActionName')) { + $('#filePickerReady').after($('
    ').html(lang.errorLoadConfig)).hide(); + return; + } + + uploader = _this.uploader = WebUploader.create({ + pick: { + id: '#filePickerReady', + label: lang.uploadSelectFile + }, + swf: '../../third-party/webuploader/Uploader.swf', + server: actionUrl, + fileVal: editor.getOpt('videoFieldName'), + duplicate: true, + fileSingleSizeLimit: fileMaxSize, + compress: false + }); + uploader.addButton({ + id: '#filePickerBlock' + }); + uploader.addButton({ + id: '#filePickerBtn', + label: lang.uploadAddFile + }); + + setState('pedding'); + + // 当有文件添加进来时执行,负责view的创建 + function addFile(file) { + var $li = $('
  • ' + + '

    ' + file.name + '

    ' + + '

    ' + + '

    ' + + '
  • '), + + $btns = $('
    ' + + '' + lang.uploadDelete + '' + + '' + lang.uploadTurnRight + '' + + '' + lang.uploadTurnLeft + '
    ').appendTo($li), + $prgress = $li.find('p.progress span'), + $wrap = $li.find('p.imgWrap'), + $info = $('

    ').hide().appendTo($li), + + showError = function (code) { + switch (code) { + case 'exceed_size': + text = lang.errorExceedSize; + break; + case 'interrupt': + text = lang.errorInterrupt; + break; + case 'http': + text = lang.errorHttp; + break; + case 'not_allow_type': + text = lang.errorFileType; + break; + default: + text = lang.errorUploadRetry; + break; + } + $info.text(text).show(); + }; + + if (file.getStatus() === 'invalid') { + showError(file.statusText); + } else { + $wrap.text(lang.uploadPreview); + if ('|png|jpg|jpeg|bmp|gif|'.indexOf('|'+file.ext.toLowerCase()+'|') == -1) { + $wrap.empty().addClass('notimage').append('' + + '' + file.name + ''); + } else { + if (browser.ie && browser.version <= 7) { + $wrap.text(lang.uploadNoPreview); + } else { + uploader.makeThumb(file, function (error, src) { + if (error || !src || (/^data:/.test(src) && browser.ie && browser.version <= 7)) { + $wrap.text(lang.uploadNoPreview); + } else { + var $img = $(''); + $wrap.empty().append($img); + $img.on('error', function () { + $wrap.text(lang.uploadNoPreview); + }); + } + }, thumbnailWidth, thumbnailHeight); + } + } + percentages[ file.id ] = [ file.size, 0 ]; + file.rotation = 0; + + /* 检查文件格式 */ + if (!file.ext || acceptExtensions.indexOf(file.ext.toLowerCase()) == -1) { + showError('not_allow_type'); + uploader.removeFile(file); + } + } + + file.on('statuschange', function (cur, prev) { + if (prev === 'progress') { + $prgress.hide().width(0); + } else if (prev === 'queued') { + $li.off('mouseenter mouseleave'); + $btns.remove(); + } + // 成功 + if (cur === 'error' || cur === 'invalid') { + showError(file.statusText); + percentages[ file.id ][ 1 ] = 1; + } else if (cur === 'interrupt') { + showError('interrupt'); + } else if (cur === 'queued') { + percentages[ file.id ][ 1 ] = 0; + } else if (cur === 'progress') { + $info.hide(); + $prgress.css('display', 'block'); + } else if (cur === 'complete') { + } + + $li.removeClass('state-' + prev).addClass('state-' + cur); + }); + + $li.on('mouseenter', function () { + $btns.stop().animate({height: 30}); + }); + $li.on('mouseleave', function () { + $btns.stop().animate({height: 0}); + }); + + $btns.on('click', 'span', function () { + var index = $(this).index(), + deg; + + switch (index) { + case 0: + uploader.removeFile(file); + return; + case 1: + file.rotation += 90; + break; + case 2: + file.rotation -= 90; + break; + } + + if (supportTransition) { + deg = 'rotate(' + file.rotation + 'deg)'; + $wrap.css({ + '-webkit-transform': deg, + '-mos-transform': deg, + '-o-transform': deg, + 'transform': deg + }); + } else { + $wrap.css('filter', 'progid:DXImageTransform.Microsoft.BasicImage(rotation=' + (~~((file.rotation / 90) % 4 + 4) % 4) + ')'); + } + + }); + + $li.insertBefore($filePickerBlock); + } + + // 负责view的销毁 + function removeFile(file) { + var $li = $('#' + file.id); + delete percentages[ file.id ]; + updateTotalProgress(); + $li.off().find('.file-panel').off().end().remove(); + } + + function updateTotalProgress() { + var loaded = 0, + total = 0, + spans = $progress.children(), + percent; + + $.each(percentages, function (k, v) { + total += v[ 0 ]; + loaded += v[ 0 ] * v[ 1 ]; + }); + + percent = total ? loaded / total : 0; + + spans.eq(0).text(Math.round(percent * 100) + '%'); + spans.eq(1).css('width', Math.round(percent * 100) + '%'); + updateStatus(); + } + + function setState(val, files) { + + if (val != state) { + + var stats = uploader.getStats(); + + $upload.removeClass('state-' + state); + $upload.addClass('state-' + val); + + switch (val) { + + /* 未选择文件 */ + case 'pedding': + $queue.addClass('element-invisible'); + $statusBar.addClass('element-invisible'); + $placeHolder.removeClass('element-invisible'); + $progress.hide(); $info.hide(); + uploader.refresh(); + break; + + /* 可以开始上传 */ + case 'ready': + $placeHolder.addClass('element-invisible'); + $queue.removeClass('element-invisible'); + $statusBar.removeClass('element-invisible'); + $progress.hide(); $info.show(); + $upload.text(lang.uploadStart); + uploader.refresh(); + break; + + /* 上传中 */ + case 'uploading': + $progress.show(); $info.hide(); + $upload.text(lang.uploadPause); + break; + + /* 暂停上传 */ + case 'paused': + $progress.show(); $info.hide(); + $upload.text(lang.uploadContinue); + break; + + case 'confirm': + $progress.show(); $info.hide(); + $upload.text(lang.uploadStart); + + stats = uploader.getStats(); + if (stats.successNum && !stats.uploadFailNum) { + setState('finish'); + return; + } + break; + + case 'finish': + $progress.hide(); $info.show(); + if (stats.uploadFailNum) { + $upload.text(lang.uploadRetry); + } else { + $upload.text(lang.uploadStart); + } + break; + } + + state = val; + updateStatus(); + + } + + if (!_this.getQueueCount()) { + $upload.addClass('disabled') + } else { + $upload.removeClass('disabled') + } + + } + + function updateStatus() { + var text = '', stats; + + if (state === 'ready') { + text = lang.updateStatusReady.replace('_', fileCount).replace('_KB', WebUploader.formatSize(fileSize)); + } else if (state === 'confirm') { + stats = uploader.getStats(); + if (stats.uploadFailNum) { + text = lang.updateStatusConfirm.replace('_', stats.successNum).replace('_', stats.successNum); + } + } else { + stats = uploader.getStats(); + text = lang.updateStatusFinish.replace('_', fileCount). + replace('_KB', WebUploader.formatSize(fileSize)). + replace('_', stats.successNum); + + if (stats.uploadFailNum) { + text += lang.updateStatusError.replace('_', stats.uploadFailNum); + } + } + + $info.html(text); + } + + uploader.on('fileQueued', function (file) { + fileCount++; + fileSize += file.size; + + if (fileCount === 1) { + $placeHolder.addClass('element-invisible'); + $statusBar.show(); + } + + addFile(file); + }); + + uploader.on('fileDequeued', function (file) { + fileCount--; + fileSize -= file.size; + + removeFile(file); + updateTotalProgress(); + }); + + uploader.on('filesQueued', function (file) { + if (!uploader.isInProgress() && (state == 'pedding' || state == 'finish' || state == 'confirm' || state == 'ready')) { + setState('ready'); + } + updateTotalProgress(); + }); + + uploader.on('all', function (type, files) { + switch (type) { + case 'uploadFinished': + setState('confirm', files); + break; + case 'startUpload': + /* 添加额外的GET参数 */ + var params = utils.serializeParam(editor.queryCommandValue('serverparam')) || '', + url = utils.formatUrl(actionUrl + (actionUrl.indexOf('?') == -1 ? '?':'&') + 'encode=utf-8&' + params); + uploader.option('server', url); + setState('uploading', files); + break; + case 'stopUpload': + setState('paused', files); + break; + } + }); + + uploader.on('uploadBeforeSend', function (file, data, header) { + //这里可以通过data对象添加POST参数 + header['X_Requested_With'] = 'XMLHttpRequest'; + // HaoChuan9421 + if(editor.options.headers && Object.prototype.toString.apply(editor.options.headers) === "[object Object]"){ + for(var key in editor.options.headers){ + header[key] = editor.options.headers[key] + } + } + }); + + uploader.on('uploadProgress', function (file, percentage) { + var $li = $('#' + file.id), + $percent = $li.find('.progress span'); + + $percent.css('width', percentage * 100 + '%'); + percentages[ file.id ][ 1 ] = percentage; + updateTotalProgress(); + }); + + uploader.on('uploadSuccess', function (file, ret) { + var $file = $('#' + file.id); + try { + var responseText = (ret._raw || ret), + json = utils.str2json(responseText); + if (json.state == 'SUCCESS') { + uploadVideoList.push({ + 'url': json.url, + 'type': json.type, + 'original':json.original + }); + $file.append(''); + } else { + $file.find('.error').text(json.state).show(); + } + } catch (e) { + $file.find('.error').text(lang.errorServerUpload).show(); + } + }); + + uploader.on('uploadError', function (file, code) { + }); + uploader.on('error', function (code, file) { + if (code == 'Q_TYPE_DENIED' || code == 'F_EXCEED_SIZE') { + addFile(file); + } + }); + uploader.on('uploadComplete', function (file, ret) { + }); + + $upload.on('click', function () { + if ($(this).hasClass('disabled')) { + return false; + } + + if (state === 'ready') { + uploader.upload(); + } else if (state === 'paused') { + uploader.upload(); + } else if (state === 'uploading') { + uploader.stop(); + } + }); + + $upload.addClass('state-' + state); + updateTotalProgress(); + }, + getQueueCount: function () { + var file, i, status, readyFile = 0, files = this.uploader.getFiles(); + for (i = 0; file = files[i++]; ) { + status = file.getStatus(); + if (status == 'queued' || status == 'uploading' || status == 'progress') readyFile++; + } + return readyFile; + }, + refresh: function(){ + this.uploader.refresh(); + } + }; + +})(); diff --git a/admin/public/UEditor/dialogs/webapp/webapp.html b/admin/public/UEditor/dialogs/webapp/webapp.html new file mode 100644 index 00000000..16143779 --- /dev/null +++ b/admin/public/UEditor/dialogs/webapp/webapp.html @@ -0,0 +1,53 @@ + + + + + + + + + +
    +
    +
    + + + \ No newline at end of file diff --git a/admin/public/UEditor/dialogs/wordimage/tangram.js b/admin/public/UEditor/dialogs/wordimage/tangram.js new file mode 100644 index 00000000..2ebd8fd3 --- /dev/null +++ b/admin/public/UEditor/dialogs/wordimage/tangram.js @@ -0,0 +1,1495 @@ +// Copyright (c) 2009, Baidu Inc. All rights reserved. +// +// Licensed under the BSD License +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http:// tangram.baidu.com/license.html +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS-IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + /** + * @namespace T Tangram七巧板 + * @name T + * @version 1.6.0 +*/ + +/** + * 声明baidu包 + * @author: allstar, erik, meizz, berg + */ +var T, + baidu = T = baidu || {version: "1.5.0"}; +baidu.guid = "$BAIDU$"; +baidu.$$ = window[baidu.guid] = window[baidu.guid] || {global:{}}; + +/** + * 使用flash资源封装的一些功能 + * @namespace baidu.flash + */ +baidu.flash = baidu.flash || {}; + +/** + * 操作dom的方法 + * @namespace baidu.dom + */ +baidu.dom = baidu.dom || {}; + + +/** + * 从文档中获取指定的DOM元素 + * @name baidu.dom.g + * @function + * @grammar baidu.dom.g(id) + * @param {string|HTMLElement} id 元素的id或DOM元素. + * @shortcut g,T.G + * @meta standard + * @see baidu.dom.q + * + * @return {HTMLElement|null} 获取的元素,查找不到时返回null,如果参数不合法,直接返回参数. + */ +baidu.dom.g = function(id) { + if (!id) return null; + if ('string' == typeof id || id instanceof String) { + return document.getElementById(id); + } else if (id.nodeName && (id.nodeType == 1 || id.nodeType == 9)) { + return id; + } + return null; +}; +baidu.g = baidu.G = baidu.dom.g; + + +/** + * 操作数组的方法 + * @namespace baidu.array + */ + +baidu.array = baidu.array || {}; + + +/** + * 遍历数组中所有元素 + * @name baidu.array.each + * @function + * @grammar baidu.array.each(source, iterator[, thisObject]) + * @param {Array} source 需要遍历的数组 + * @param {Function} iterator 对每个数组元素进行调用的函数,该函数有两个参数,第一个为数组元素,第二个为数组索引值,function (item, index)。 + * @param {Object} [thisObject] 函数调用时的this指针,如果没有此参数,默认是当前遍历的数组 + * @remark + * each方法不支持对Object的遍历,对Object的遍历使用baidu.object.each 。 + * @shortcut each + * @meta standard + * + * @returns {Array} 遍历的数组 + */ + +baidu.each = baidu.array.forEach = baidu.array.each = function (source, iterator, thisObject) { + var returnValue, item, i, len = source.length; + + if ('function' == typeof iterator) { + for (i = 0; i < len; i++) { + item = source[i]; + returnValue = iterator.call(thisObject || source, item, i); + + if (returnValue === false) { + break; + } + } + } + return source; +}; + +/** + * 对语言层面的封装,包括类型判断、模块扩展、继承基类以及对象自定义事件的支持。 + * @namespace baidu.lang + */ +baidu.lang = baidu.lang || {}; + + +/** + * 判断目标参数是否为function或Function实例 + * @name baidu.lang.isFunction + * @function + * @grammar baidu.lang.isFunction(source) + * @param {Any} source 目标参数 + * @version 1.2 + * @see baidu.lang.isString,baidu.lang.isObject,baidu.lang.isNumber,baidu.lang.isArray,baidu.lang.isElement,baidu.lang.isBoolean,baidu.lang.isDate + * @meta standard + * @returns {boolean} 类型判断结果 + */ +baidu.lang.isFunction = function (source) { + return '[object Function]' == Object.prototype.toString.call(source); +}; + +/** + * 判断目标参数是否string类型或String对象 + * @name baidu.lang.isString + * @function + * @grammar baidu.lang.isString(source) + * @param {Any} source 目标参数 + * @shortcut isString + * @meta standard + * @see baidu.lang.isObject,baidu.lang.isNumber,baidu.lang.isArray,baidu.lang.isElement,baidu.lang.isBoolean,baidu.lang.isDate + * + * @returns {boolean} 类型判断结果 + */ +baidu.lang.isString = function (source) { + return '[object String]' == Object.prototype.toString.call(source); +}; +baidu.isString = baidu.lang.isString; + + +/** + * 判断浏览器类型和特性的属性 + * @namespace baidu.browser + */ +baidu.browser = baidu.browser || {}; + + +/** + * 判断是否为opera浏览器 + * @property opera opera版本号 + * @grammar baidu.browser.opera + * @meta standard + * @see baidu.browser.ie,baidu.browser.firefox,baidu.browser.safari,baidu.browser.chrome + * @returns {Number} opera版本号 + */ + +/** + * opera 从10开始不是用opera后面的字符串进行版本的判断 + * 在Browser identification最后添加Version + 数字进行版本标识 + * opera后面的数字保持在9.80不变 + */ +baidu.browser.opera = /opera(\/| )(\d+(\.\d+)?)(.+?(version\/(\d+(\.\d+)?)))?/i.test(navigator.userAgent) ? + ( RegExp["\x246"] || RegExp["\x242"] ) : undefined; + + +/** + * 在目标元素的指定位置插入HTML代码 + * @name baidu.dom.insertHTML + * @function + * @grammar baidu.dom.insertHTML(element, position, html) + * @param {HTMLElement|string} element 目标元素或目标元素的id + * @param {string} position 插入html的位置信息,取值为beforeBegin,afterBegin,beforeEnd,afterEnd + * @param {string} html 要插入的html + * @remark + * + * 对于position参数,大小写不敏感
    + * 参数的意思:beforeBegin<span>afterBegin this is span! beforeEnd</span> afterEnd
    + * 此外,如果使用本函数插入带有script标签的HTML字符串,script标签对应的脚本将不会被执行。 + * + * @shortcut insertHTML + * @meta standard + * + * @returns {HTMLElement} 目标元素 + */ +baidu.dom.insertHTML = function (element, position, html) { + element = baidu.dom.g(element); + var range,begin; + if (element.insertAdjacentHTML && !baidu.browser.opera) { + element.insertAdjacentHTML(position, html); + } else { + range = element.ownerDocument.createRange(); + position = position.toUpperCase(); + if (position == 'AFTERBEGIN' || position == 'BEFOREEND') { + range.selectNodeContents(element); + range.collapse(position == 'AFTERBEGIN'); + } else { + begin = position == 'BEFOREBEGIN'; + range[begin ? 'setStartBefore' : 'setEndAfter'](element); + range.collapse(begin); + } + range.insertNode(range.createContextualFragment(html)); + } + return element; +}; + +baidu.insertHTML = baidu.dom.insertHTML; + +/** + * 操作flash对象的方法,包括创建flash对象、获取flash对象以及判断flash插件的版本号 + * @namespace baidu.swf + */ +baidu.swf = baidu.swf || {}; + + +/** + * 浏览器支持的flash插件版本 + * @property version 浏览器支持的flash插件版本 + * @grammar baidu.swf.version + * @return {String} 版本号 + * @meta standard + */ +baidu.swf.version = (function () { + var n = navigator; + if (n.plugins && n.mimeTypes.length) { + var plugin = n.plugins["Shockwave Flash"]; + if (plugin && plugin.description) { + return plugin.description + .replace(/([a-zA-Z]|\s)+/, "") + .replace(/(\s)+r/, ".") + ".0"; + } + } else if (window.ActiveXObject && !window.opera) { + for (var i = 12; i >= 2; i--) { + try { + var c = new ActiveXObject('ShockwaveFlash.ShockwaveFlash.' + i); + if (c) { + var version = c.GetVariable("$version"); + return version.replace(/WIN/g,'').replace(/,/g,'.'); + } + } catch(e) {} + } + } +})(); + +/** + * 操作字符串的方法 + * @namespace baidu.string + */ +baidu.string = baidu.string || {}; + + +/** + * 对目标字符串进行html编码 + * @name baidu.string.encodeHTML + * @function + * @grammar baidu.string.encodeHTML(source) + * @param {string} source 目标字符串 + * @remark + * 编码字符有5个:&<>"' + * @shortcut encodeHTML + * @meta standard + * @see baidu.string.decodeHTML + * + * @returns {string} html编码后的字符串 + */ +baidu.string.encodeHTML = function (source) { + return String(source) + .replace(/&/g,'&') + .replace(//g,'>') + .replace(/"/g, """) + .replace(/'/g, "'"); +}; + +baidu.encodeHTML = baidu.string.encodeHTML; + +/** + * 创建flash对象的html字符串 + * @name baidu.swf.createHTML + * @function + * @grammar baidu.swf.createHTML(options) + * + * @param {Object} options 创建flash的选项参数 + * @param {string} options.id 要创建的flash的标识 + * @param {string} options.url flash文件的url + * @param {String} options.errorMessage 未安装flash player或flash player版本号过低时的提示 + * @param {string} options.ver 最低需要的flash player版本号 + * @param {string} options.width flash的宽度 + * @param {string} options.height flash的高度 + * @param {string} options.align flash的对齐方式,允许值:middle/left/right/top/bottom + * @param {string} options.base 设置用于解析swf文件中的所有相对路径语句的基本目录或URL + * @param {string} options.bgcolor swf文件的背景色 + * @param {string} options.salign 设置缩放的swf文件在由width和height设置定义的区域内的位置。允许值:l/r/t/b/tl/tr/bl/br + * @param {boolean} options.menu 是否显示右键菜单,允许值:true/false + * @param {boolean} options.loop 播放到最后一帧时是否重新播放,允许值: true/false + * @param {boolean} options.play flash是否在浏览器加载时就开始播放。允许值:true/false + * @param {string} options.quality 设置flash播放的画质,允许值:low/medium/high/autolow/autohigh/best + * @param {string} options.scale 设置flash内容如何缩放来适应设置的宽高。允许值:showall/noborder/exactfit + * @param {string} options.wmode 设置flash的显示模式。允许值:window/opaque/transparent + * @param {string} options.allowscriptaccess 设置flash与页面的通信权限。允许值:always/never/sameDomain + * @param {string} options.allownetworking 设置swf文件中允许使用的网络API。允许值:all/internal/none + * @param {boolean} options.allowfullscreen 是否允许flash全屏。允许值:true/false + * @param {boolean} options.seamlesstabbing 允许设置执行无缝跳格,从而使用户能跳出flash应用程序。该参数只能在安装Flash7及更高版本的Windows中使用。允许值:true/false + * @param {boolean} options.devicefont 设置静态文本对象是否以设备字体呈现。允许值:true/false + * @param {boolean} options.swliveconnect 第一次加载flash时浏览器是否应启动Java。允许值:true/false + * @param {Object} options.vars 要传递给flash的参数,支持JSON或string类型。 + * + * @see baidu.swf.create + * @meta standard + * @returns {string} flash对象的html字符串 + */ +baidu.swf.createHTML = function (options) { + options = options || {}; + var version = baidu.swf.version, + needVersion = options['ver'] || '6.0.0', + vUnit1, vUnit2, i, k, len, item, tmpOpt = {}, + encodeHTML = baidu.string.encodeHTML; + for (k in options) { + tmpOpt[k] = options[k]; + } + options = tmpOpt; + if (version) { + version = version.split('.'); + needVersion = needVersion.split('.'); + for (i = 0; i < 3; i++) { + vUnit1 = parseInt(version[i], 10); + vUnit2 = parseInt(needVersion[i], 10); + if (vUnit2 < vUnit1) { + break; + } else if (vUnit2 > vUnit1) { + return ''; + } + } + } else { + return ''; + } + + var vars = options['vars'], + objProperties = ['classid', 'codebase', 'id', 'width', 'height', 'align']; + options['align'] = options['align'] || 'middle'; + options['classid'] = 'clsid:d27cdb6e-ae6d-11cf-96b8-444553540000'; + options['codebase'] = 'http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0'; + options['movie'] = options['url'] || ''; + delete options['vars']; + delete options['url']; + if ('string' == typeof vars) { + options['flashvars'] = vars; + } else { + var fvars = []; + for (k in vars) { + item = vars[k]; + fvars.push(k + "=" + encodeURIComponent(item)); + } + options['flashvars'] = fvars.join('&'); + } + var str = [''); + var params = { + 'wmode' : 1, + 'scale' : 1, + 'quality' : 1, + 'play' : 1, + 'loop' : 1, + 'menu' : 1, + 'salign' : 1, + 'bgcolor' : 1, + 'base' : 1, + 'allowscriptaccess' : 1, + 'allownetworking' : 1, + 'allowfullscreen' : 1, + 'seamlesstabbing' : 1, + 'devicefont' : 1, + 'swliveconnect' : 1, + 'flashvars' : 1, + 'movie' : 1 + }; + + for (k in options) { + item = options[k]; + k = k.toLowerCase(); + if (params[k] && (item || item === false || item === 0)) { + str.push(''); + } + } + options['src'] = options['movie']; + options['name'] = options['id']; + delete options['id']; + delete options['movie']; + delete options['classid']; + delete options['codebase']; + options['type'] = 'application/x-shockwave-flash'; + options['pluginspage'] = 'http://www.macromedia.com/go/getflashplayer'; + str.push(''); + + return str.join(''); +}; + + +/** + * 在页面中创建一个flash对象 + * @name baidu.swf.create + * @function + * @grammar baidu.swf.create(options[, container]) + * + * @param {Object} options 创建flash的选项参数 + * @param {string} options.id 要创建的flash的标识 + * @param {string} options.url flash文件的url + * @param {String} options.errorMessage 未安装flash player或flash player版本号过低时的提示 + * @param {string} options.ver 最低需要的flash player版本号 + * @param {string} options.width flash的宽度 + * @param {string} options.height flash的高度 + * @param {string} options.align flash的对齐方式,允许值:middle/left/right/top/bottom + * @param {string} options.base 设置用于解析swf文件中的所有相对路径语句的基本目录或URL + * @param {string} options.bgcolor swf文件的背景色 + * @param {string} options.salign 设置缩放的swf文件在由width和height设置定义的区域内的位置。允许值:l/r/t/b/tl/tr/bl/br + * @param {boolean} options.menu 是否显示右键菜单,允许值:true/false + * @param {boolean} options.loop 播放到最后一帧时是否重新播放,允许值: true/false + * @param {boolean} options.play flash是否在浏览器加载时就开始播放。允许值:true/false + * @param {string} options.quality 设置flash播放的画质,允许值:low/medium/high/autolow/autohigh/best + * @param {string} options.scale 设置flash内容如何缩放来适应设置的宽高。允许值:showall/noborder/exactfit + * @param {string} options.wmode 设置flash的显示模式。允许值:window/opaque/transparent + * @param {string} options.allowscriptaccess 设置flash与页面的通信权限。允许值:always/never/sameDomain + * @param {string} options.allownetworking 设置swf文件中允许使用的网络API。允许值:all/internal/none + * @param {boolean} options.allowfullscreen 是否允许flash全屏。允许值:true/false + * @param {boolean} options.seamlesstabbing 允许设置执行无缝跳格,从而使用户能跳出flash应用程序。该参数只能在安装Flash7及更高版本的Windows中使用。允许值:true/false + * @param {boolean} options.devicefont 设置静态文本对象是否以设备字体呈现。允许值:true/false + * @param {boolean} options.swliveconnect 第一次加载flash时浏览器是否应启动Java。允许值:true/false + * @param {Object} options.vars 要传递给flash的参数,支持JSON或string类型。 + * + * @param {HTMLElement|string} [container] flash对象的父容器元素,不传递该参数时在当前代码位置创建flash对象。 + * @meta standard + * @see baidu.swf.createHTML,baidu.swf.getMovie + */ +baidu.swf.create = function (options, target) { + options = options || {}; + var html = baidu.swf.createHTML(options) + || options['errorMessage'] + || ''; + + if (target && 'string' == typeof target) { + target = document.getElementById(target); + } + baidu.dom.insertHTML( target || document.body ,'beforeEnd',html ); +}; +/** + * 判断是否为ie浏览器 + * @name baidu.browser.ie + * @field + * @grammar baidu.browser.ie + * @returns {Number} IE版本号 + */ +baidu.browser.ie = baidu.ie = /msie (\d+\.\d+)/i.test(navigator.userAgent) ? (document.documentMode || + RegExp['\x241']) : undefined; + +/** + * 移除数组中的项 + * @name baidu.array.remove + * @function + * @grammar baidu.array.remove(source, match) + * @param {Array} source 需要移除项的数组 + * @param {Any} match 要移除的项 + * @meta standard + * @see baidu.array.removeAt + * + * @returns {Array} 移除后的数组 + */ +baidu.array.remove = function (source, match) { + var len = source.length; + + while (len--) { + if (len in source && source[len] === match) { + source.splice(len, 1); + } + } + return source; +}; + +/** + * 判断目标参数是否Array对象 + * @name baidu.lang.isArray + * @function + * @grammar baidu.lang.isArray(source) + * @param {Any} source 目标参数 + * @meta standard + * @see baidu.lang.isString,baidu.lang.isObject,baidu.lang.isNumber,baidu.lang.isElement,baidu.lang.isBoolean,baidu.lang.isDate + * + * @returns {boolean} 类型判断结果 + */ +baidu.lang.isArray = function (source) { + return '[object Array]' == Object.prototype.toString.call(source); +}; + + + +/** + * 将一个变量转换成array + * @name baidu.lang.toArray + * @function + * @grammar baidu.lang.toArray(source) + * @param {mix} source 需要转换成array的变量 + * @version 1.3 + * @meta standard + * @returns {array} 转换后的array + */ +baidu.lang.toArray = function (source) { + if (source === null || source === undefined) + return []; + if (baidu.lang.isArray(source)) + return source; + if (typeof source.length !== 'number' || typeof source === 'string' || baidu.lang.isFunction(source)) { + return [source]; + } + if (source.item) { + var l = source.length, array = new Array(l); + while (l--) + array[l] = source[l]; + return array; + } + + return [].slice.call(source); +}; + +/** + * 获得flash对象的实例 + * @name baidu.swf.getMovie + * @function + * @grammar baidu.swf.getMovie(name) + * @param {string} name flash对象的名称 + * @see baidu.swf.create + * @meta standard + * @returns {HTMLElement} flash对象的实例 + */ +baidu.swf.getMovie = function (name) { + var movie = document[name], ret; + return baidu.browser.ie == 9 ? + movie && movie.length ? + (ret = baidu.array.remove(baidu.lang.toArray(movie),function(item){ + return item.tagName.toLowerCase() != "embed"; + })).length == 1 ? ret[0] : ret + : movie + : movie || window[name]; +}; + + +baidu.flash._Base = (function(){ + + var prefix = 'bd__flash__'; + + /** + * 创建一个随机的字符串 + * @private + * @return {String} + */ + function _createString(){ + return prefix + Math.floor(Math.random() * 2147483648).toString(36); + }; + + /** + * 检查flash状态 + * @private + * @param {Object} target flash对象 + * @return {Boolean} + */ + function _checkReady(target){ + if(typeof target !== 'undefined' && typeof target.flashInit !== 'undefined' && target.flashInit()){ + return true; + }else{ + return false; + } + }; + + /** + * 调用之前进行压栈的函数 + * @private + * @param {Array} callQueue 调用队列 + * @param {Object} target flash对象 + * @return {Null} + */ + function _callFn(callQueue, target){ + var result = null; + + callQueue = callQueue.reverse(); + baidu.each(callQueue, function(item){ + result = target.call(item.fnName, item.params); + item.callBack(result); + }); + }; + + /** + * 为传入的匿名函数创建函数名 + * @private + * @param {String|Function} fun 传入的匿名函数或者函数名 + * @return {String} + */ + function _createFunName(fun){ + var name = ''; + + if(baidu.lang.isFunction(fun)){ + name = _createString(); + window[name] = function(){ + fun.apply(window, arguments); + }; + + return name; + }else if(baidu.lang.isString){ + return fun; + } + }; + + /** + * 绘制flash + * @private + * @param {Object} options 创建参数 + * @return {Object} + */ + function _render(options){ + if(!options.id){ + options.id = _createString(); + } + + var container = options.container || ''; + delete(options.container); + + baidu.swf.create(options, container); + + return baidu.swf.getMovie(options.id); + }; + + return function(options, callBack){ + var me = this, + autoRender = (typeof options.autoRender !== 'undefined' ? options.autoRender : true), + createOptions = options.createOptions || {}, + target = null, + isReady = false, + callQueue = [], + timeHandle = null, + callBack = callBack || []; + + /** + * 将flash文件绘制到页面上 + * @public + * @return {Null} + */ + me.render = function(){ + target = _render(createOptions); + + if(callBack.length > 0){ + baidu.each(callBack, function(funName, index){ + callBack[index] = _createFunName(options[funName] || new Function()); + }); + } + me.call('setJSFuncName', [callBack]); + }; + + /** + * 返回flash状态 + * @return {Boolean} + */ + me.isReady = function(){ + return isReady; + }; + + /** + * 调用flash接口的统一入口 + * @param {String} fnName 调用的函数名 + * @param {Array} params 传入的参数组成的数组,若不许要参数,需传入空数组 + * @param {Function} [callBack] 异步调用后将返回值作为参数的调用回调函数,如无返回值,可以不传入此参数 + * @return {Null} + */ + me.call = function(fnName, params, callBack){ + if(!fnName) return null; + callBack = callBack || new Function(); + + var result = null; + + if(isReady){ + result = target.call(fnName, params); + callBack(result); + }else{ + callQueue.push({ + fnName: fnName, + params: params, + callBack: callBack + }); + + (!timeHandle) && (timeHandle = setInterval(_check, 200)); + } + }; + + /** + * 为传入的匿名函数创建函数名 + * @public + * @param {String|Function} fun 传入的匿名函数或者函数名 + * @return {String} + */ + me.createFunName = function(fun){ + return _createFunName(fun); + }; + + /** + * 检查flash是否ready, 并进行调用 + * @private + * @return {Null} + */ + function _check(){ + if(_checkReady(target)){ + clearInterval(timeHandle); + timeHandle = null; + _call(); + + isReady = true; + } + }; + + /** + * 调用之前进行压栈的函数 + * @private + * @return {Null} + */ + function _call(){ + _callFn(callQueue, target); + callQueue = []; + } + + autoRender && me.render(); + }; +})(); + + + +/** + * 创建flash based imageUploader + * @class + * @grammar baidu.flash.imageUploader(options) + * @param {Object} createOptions 创建flash时需要的参数,请参照baidu.swf.create文档 + * @config {Object} vars 创建imageUploader时所需要的参数 + * @config {Number} vars.gridWidth 每一个预览图片所占的宽度,应该为flash寛的整除 + * @config {Number} vars.gridHeight 每一个预览图片所占的高度,应该为flash高的整除 + * @config {Number} vars.picWidth 单张预览图片的宽度 + * @config {Number} vars.picHeight 单张预览图片的高度 + * @config {String} vars.uploadDataFieldName POST请求中图片数据的key,默认值'picdata' + * @config {String} vars.picDescFieldName POST请求中图片描述的key,默认值'picDesc' + * @config {Number} vars.maxSize 文件的最大体积,单位'MB' + * @config {Number} vars.compressSize 上传前如果图片体积超过该值,会先压缩 + * @config {Number} vars.maxNum:32 最大上传多少个文件 + * @config {Number} vars.compressLength 能接受的最大边长,超过该值会等比压缩 + * @config {String} vars.url 上传的url地址 + * @config {Number} vars.mode mode == 0时,是使用滚动条,mode == 1时,拉伸flash, 默认值为0 + * @see baidu.swf.createHTML + * @param {String} backgroundUrl 背景图片路径 + * @param {String} listBacgroundkUrl 布局控件背景 + * @param {String} buttonUrl 按钮图片不背景 + * @param {String|Function} selectFileCallback 选择文件的回调 + * @param {String|Function} exceedFileCallback文件超出限制的最大体积时的回调 + * @param {String|Function} deleteFileCallback 删除文件的回调 + * @param {String|Function} startUploadCallback 开始上传某个文件时的回调 + * @param {String|Function} uploadCompleteCallback 某个文件上传完成的回调 + * @param {String|Function} uploadErrorCallback 某个文件上传失败的回调 + * @param {String|Function} allCompleteCallback 全部上传完成时的回调 + * @param {String|Function} changeFlashHeight 改变Flash的高度,mode==1的时候才有用 + */ +baidu.flash.imageUploader = baidu.flash.imageUploader || function(options){ + + var me = this, + options = options || {}, + _flash = new baidu.flash._Base(options, [ + 'selectFileCallback', + 'exceedFileCallback', + 'deleteFileCallback', + 'startUploadCallback', + 'uploadCompleteCallback', + 'uploadErrorCallback', + 'allCompleteCallback', + 'changeFlashHeight' + ]); + /** + * 开始或回复上传图片 + * @public + * @return {Null} + */ + me.upload = function(){ + _flash.call('upload'); + }; + + /** + * 暂停上传图片 + * @public + * @return {Null} + */ + me.pause = function(){ + _flash.call('pause'); + }; + me.addCustomizedParams = function(index,obj){ + _flash.call('addCustomizedParams',[index,obj]); + } +}; + +/** + * 操作原生对象的方法 + * @namespace baidu.object + */ +baidu.object = baidu.object || {}; + + +/** + * 将源对象的所有属性拷贝到目标对象中 + * @author erik + * @name baidu.object.extend + * @function + * @grammar baidu.object.extend(target, source) + * @param {Object} target 目标对象 + * @param {Object} source 源对象 + * @see baidu.array.merge + * @remark + * +1.目标对象中,与源对象key相同的成员将会被覆盖。
    +2.源对象的prototype成员不会拷贝。 + + * @shortcut extend + * @meta standard + * + * @returns {Object} 目标对象 + */ +baidu.extend = +baidu.object.extend = function (target, source) { + for (var p in source) { + if (source.hasOwnProperty(p)) { + target[p] = source[p]; + } + } + + return target; +}; + + + + + +/** + * 创建flash based fileUploader + * @class + * @grammar baidu.flash.fileUploader(options) + * @param {Object} options + * @config {Object} createOptions 创建flash时需要的参数,请参照baidu.swf.create文档 + * @config {String} createOptions.width + * @config {String} createOptions.height + * @config {Number} maxNum 最大可选文件数 + * @config {Function|String} selectFile + * @config {Function|String} exceedMaxSize + * @config {Function|String} deleteFile + * @config {Function|String} uploadStart + * @config {Function|String} uploadComplete + * @config {Function|String} uploadError + * @config {Function|String} uploadProgress + */ +baidu.flash.fileUploader = baidu.flash.fileUploader || function(options){ + var me = this, + options = options || {}; + + options.createOptions = baidu.extend({ + wmod: 'transparent' + },options.createOptions || {}); + + var _flash = new baidu.flash._Base(options, [ + 'selectFile', + 'exceedMaxSize', + 'deleteFile', + 'uploadStart', + 'uploadComplete', + 'uploadError', + 'uploadProgress' + ]); + + _flash.call('setMaxNum', options.maxNum ? [options.maxNum] : [1]); + + /** + * 设置当鼠标移动到flash上时,是否变成手型 + * @public + * @param {Boolean} isCursor + * @return {Null} + */ + me.setHandCursor = function(isCursor){ + _flash.call('setHandCursor', [isCursor || false]); + }; + + /** + * 设置鼠标相应函数名 + * @param {String|Function} fun + */ + me.setMSFunName = function(fun){ + _flash.call('setMSFunName',[_flash.createFunName(fun)]); + }; + + /** + * 执行上传操作 + * @param {String} url 上传的url + * @param {String} fieldName 上传的表单字段名 + * @param {Object} postData 键值对,上传的POST数据 + * @param {Number|Array|null|-1} [index]上传的文件序列 + * Int值上传该文件 + * Array一次串行上传该序列文件 + * -1/null上传所有文件 + * @return {Null} + */ + me.upload = function(url, fieldName, postData, index){ + + if(typeof url !== 'string' || typeof fieldName !== 'string') return null; + if(typeof index === 'undefined') index = -1; + + _flash.call('upload', [url, fieldName, postData, index]); + }; + + /** + * 取消上传操作 + * @public + * @param {Number|-1} index + */ + me.cancel = function(index){ + if(typeof index === 'undefined') index = -1; + _flash.call('cancel', [index]); + }; + + /** + * 删除文件 + * @public + * @param {Number|Array} [index] 要删除的index,不传则全部删除 + * @param {Function} callBack + * */ + me.deleteFile = function(index, callBack){ + + var callBackAll = function(list){ + callBack && callBack(list); + }; + + if(typeof index === 'undefined'){ + _flash.call('deleteFilesAll', [], callBackAll); + return; + }; + + if(typeof index === 'Number') index = [index]; + index.sort(function(a,b){ + return b-a; + }); + baidu.each(index, function(item){ + _flash.call('deleteFileBy', item, callBackAll); + }); + }; + + /** + * 添加文件类型,支持macType + * @public + * @param {Object|Array[Object]} type {description:String, extention:String} + * @return {Null}; + */ + me.addFileType = function(type){ + var type = type || [[]]; + + if(type instanceof Array) type = [type]; + else type = [[type]]; + _flash.call('addFileTypes', type); + }; + + /** + * 设置文件类型,支持macType + * @public + * @param {Object|Array[Object]} type {description:String, extention:String} + * @return {Null}; + */ + me.setFileType = function(type){ + var type = type || [[]]; + + if(type instanceof Array) type = [type]; + else type = [[type]]; + _flash.call('setFileTypes', type); + }; + + /** + * 设置可选文件的数量限制 + * @public + * @param {Number} num + * @return {Null} + */ + me.setMaxNum = function(num){ + _flash.call('setMaxNum', [num]); + }; + + /** + * 设置可选文件大小限制,以兆M为单位 + * @public + * @param {Number} num,0为无限制 + * @return {Null} + */ + me.setMaxSize = function(num){ + _flash.call('setMaxSize', [num]); + }; + + /** + * @public + */ + me.getFileAll = function(callBack){ + _flash.call('getFileAll', [], callBack); + }; + + /** + * @public + * @param {Number} index + * @param {Function} [callBack] + */ + me.getFileByIndex = function(index, callBack){ + _flash.call('getFileByIndex', [], callBack); + }; + + /** + * @public + * @param {Number} index + * @param {function} [callBack] + */ + me.getStatusByIndex = function(index, callBack){ + _flash.call('getStatusByIndex', [], callBack); + }; +}; + +/** + * 使用动态script标签请求服务器资源,包括由服务器端的回调和浏览器端的回调 + * @namespace baidu.sio + */ +baidu.sio = baidu.sio || {}; + +/** + * + * @param {HTMLElement} src script节点 + * @param {String} url script节点的地址 + * @param {String} [charset] 编码 + */ +baidu.sio._createScriptTag = function(scr, url, charset){ + scr.setAttribute('type', 'text/javascript'); + charset && scr.setAttribute('charset', charset); + scr.setAttribute('src', url); + document.getElementsByTagName('head')[0].appendChild(scr); +}; + +/** + * 删除script的属性,再删除script标签,以解决修复内存泄漏的问题 + * + * @param {HTMLElement} src script节点 + */ +baidu.sio._removeScriptTag = function(scr){ + if (scr.clearAttributes) { + scr.clearAttributes(); + } else { + for (var attr in scr) { + if (scr.hasOwnProperty(attr)) { + delete scr[attr]; + } + } + } + if(scr && scr.parentNode){ + scr.parentNode.removeChild(scr); + } + scr = null; +}; + + +/** + * 通过script标签加载数据,加载完成由浏览器端触发回调 + * @name baidu.sio.callByBrowser + * @function + * @grammar baidu.sio.callByBrowser(url, opt_callback, opt_options) + * @param {string} url 加载数据的url + * @param {Function|string} opt_callback 数据加载结束时调用的函数或函数名 + * @param {Object} opt_options 其他可选项 + * @config {String} [charset] script的字符集 + * @config {Integer} [timeOut] 超时时间,超过这个时间将不再响应本请求,并触发onfailure函数 + * @config {Function} [onfailure] timeOut设定后才生效,到达超时时间时触发本函数 + * @remark + * 1、与callByServer不同,callback参数只支持Function类型,不支持string。 + * 2、如果请求了一个不存在的页面,callback函数在IE/opera下也会被调用,因此使用者需要在onsuccess函数中判断数据是否正确加载。 + * @meta standard + * @see baidu.sio.callByServer + */ +baidu.sio.callByBrowser = function (url, opt_callback, opt_options) { + var scr = document.createElement("SCRIPT"), + scriptLoaded = 0, + options = opt_options || {}, + charset = options['charset'], + callback = opt_callback || function(){}, + timeOut = options['timeOut'] || 0, + timer; + scr.onload = scr.onreadystatechange = function () { + if (scriptLoaded) { + return; + } + + var readyState = scr.readyState; + if ('undefined' == typeof readyState + || readyState == "loaded" + || readyState == "complete") { + scriptLoaded = 1; + try { + callback(); + clearTimeout(timer); + } finally { + scr.onload = scr.onreadystatechange = null; + baidu.sio._removeScriptTag(scr); + } + } + }; + + if( timeOut ){ + timer = setTimeout(function(){ + scr.onload = scr.onreadystatechange = null; + baidu.sio._removeScriptTag(scr); + options.onfailure && options.onfailure(); + }, timeOut); + } + + baidu.sio._createScriptTag(scr, url, charset); +}; + +/** + * 通过script标签加载数据,加载完成由服务器端触发回调 + * @name baidu.sio.callByServer + * @function + * @grammar baidu.sio.callByServer(url, callback[, opt_options]) + * @param {string} url 加载数据的url. + * @param {Function|string} callback 服务器端调用的函数或函数名。如果没有指定本参数,将在URL中寻找options['queryField']做为callback的方法名. + * @param {Object} opt_options 加载数据时的选项. + * @config {string} [charset] script的字符集 + * @config {string} [queryField] 服务器端callback请求字段名,默认为callback + * @config {Integer} [timeOut] 超时时间(单位:ms),超过这个时间将不再响应本请求,并触发onfailure函数 + * @config {Function} [onfailure] timeOut设定后才生效,到达超时时间时触发本函数 + * @remark + * 如果url中已经包含key为“options['queryField']”的query项,将会被替换成callback中参数传递或自动生成的函数名。 + * @meta standard + * @see baidu.sio.callByBrowser + */ +baidu.sio.callByServer = /**@function*/function(url, callback, opt_options) { + var scr = document.createElement('SCRIPT'), + prefix = 'bd__cbs__', + callbackName, + callbackImpl, + options = opt_options || {}, + charset = options['charset'], + queryField = options['queryField'] || 'callback', + timeOut = options['timeOut'] || 0, + timer, + reg = new RegExp('(\\?|&)' + queryField + '=([^&]*)'), + matches; + + if (baidu.lang.isFunction(callback)) { + callbackName = prefix + Math.floor(Math.random() * 2147483648).toString(36); + window[callbackName] = getCallBack(0); + } else if(baidu.lang.isString(callback)){ + callbackName = callback; + } else { + if (matches = reg.exec(url)) { + callbackName = matches[2]; + } + } + + if( timeOut ){ + timer = setTimeout(getCallBack(1), timeOut); + } + url = url.replace(reg, '\x241' + queryField + '=' + callbackName); + + if (url.search(reg) < 0) { + url += (url.indexOf('?') < 0 ? '?' : '&') + queryField + '=' + callbackName; + } + baidu.sio._createScriptTag(scr, url, charset); + + /* + * 返回一个函数,用于立即(挂在window上)或者超时(挂在setTimeout中)时执行 + */ + function getCallBack(onTimeOut){ + /*global callbackName, callback, scr, options;*/ + return function(){ + try { + if( onTimeOut ){ + options.onfailure && options.onfailure(); + }else{ + callback.apply(window, arguments); + clearTimeout(timer); + } + window[callbackName] = null; + delete window[callbackName]; + } catch (exception) { + } finally { + baidu.sio._removeScriptTag(scr); + } + } + } +}; + +/** + * 通过请求一个图片的方式令服务器存储一条日志 + * @function + * @grammar baidu.sio.log(url) + * @param {string} url 要发送的地址. + * @author: int08h,leeight + */ +baidu.sio.log = function(url) { + var img = new Image(), + key = 'tangram_sio_log_' + Math.floor(Math.random() * + 2147483648).toString(36); + window[key] = img; + + img.onload = img.onerror = img.onabort = function() { + img.onload = img.onerror = img.onabort = null; + + window[key] = null; + img = null; + }; + img.src = url; +}; + + + +/* + * Tangram + * Copyright 2009 Baidu Inc. All rights reserved. + * + * path: baidu/json.js + * author: erik + * version: 1.1.0 + * date: 2009/12/02 + */ + + +/** + * 操作json对象的方法 + * @namespace baidu.json + */ +baidu.json = baidu.json || {}; +/* + * Tangram + * Copyright 2009 Baidu Inc. All rights reserved. + * + * path: baidu/json/parse.js + * author: erik, berg + * version: 1.2 + * date: 2009/11/23 + */ + + + +/** + * 将字符串解析成json对象。注:不会自动祛除空格 + * @name baidu.json.parse + * @function + * @grammar baidu.json.parse(data) + * @param {string} source 需要解析的字符串 + * @remark + * 该方法的实现与ecma-262第五版中规定的JSON.parse不同,暂时只支持传入一个参数。后续会进行功能丰富。 + * @meta standard + * @see baidu.json.stringify,baidu.json.decode + * + * @returns {JSON} 解析结果json对象 + */ +baidu.json.parse = function (data) { + //2010/12/09:更新至不使用原生parse,不检测用户输入是否正确 + return (new Function("return (" + data + ")"))(); +}; +/* + * Tangram + * Copyright 2009 Baidu Inc. All rights reserved. + * + * path: baidu/json/decode.js + * author: erik, cat + * version: 1.3.4 + * date: 2010/12/23 + */ + + + +/** + * 将字符串解析成json对象,为过时接口,今后会被baidu.json.parse代替 + * @name baidu.json.decode + * @function + * @grammar baidu.json.decode(source) + * @param {string} source 需要解析的字符串 + * @meta out + * @see baidu.json.encode,baidu.json.parse + * + * @returns {JSON} 解析结果json对象 + */ +baidu.json.decode = baidu.json.parse; +/* + * Tangram + * Copyright 2009 Baidu Inc. All rights reserved. + * + * path: baidu/json/stringify.js + * author: erik + * version: 1.1.0 + * date: 2010/01/11 + */ + + + +/** + * 将json对象序列化 + * @name baidu.json.stringify + * @function + * @grammar baidu.json.stringify(value) + * @param {JSON} value 需要序列化的json对象 + * @remark + * 该方法的实现与ecma-262第五版中规定的JSON.stringify不同,暂时只支持传入一个参数。后续会进行功能丰富。 + * @meta standard + * @see baidu.json.parse,baidu.json.encode + * + * @returns {string} 序列化后的字符串 + */ +baidu.json.stringify = (function () { + /** + * 字符串处理时需要转义的字符表 + * @private + */ + var escapeMap = { + "\b": '\\b', + "\t": '\\t', + "\n": '\\n', + "\f": '\\f', + "\r": '\\r', + '"' : '\\"', + "\\": '\\\\' + }; + + /** + * 字符串序列化 + * @private + */ + function encodeString(source) { + if (/["\\\x00-\x1f]/.test(source)) { + source = source.replace( + /["\\\x00-\x1f]/g, + function (match) { + var c = escapeMap[match]; + if (c) { + return c; + } + c = match.charCodeAt(); + return "\\u00" + + Math.floor(c / 16).toString(16) + + (c % 16).toString(16); + }); + } + return '"' + source + '"'; + } + + /** + * 数组序列化 + * @private + */ + function encodeArray(source) { + var result = ["["], + l = source.length, + preComma, i, item; + + for (i = 0; i < l; i++) { + item = source[i]; + + switch (typeof item) { + case "undefined": + case "function": + case "unknown": + break; + default: + if(preComma) { + result.push(','); + } + result.push(baidu.json.stringify(item)); + preComma = 1; + } + } + result.push("]"); + return result.join(""); + } + + /** + * 处理日期序列化时的补零 + * @private + */ + function pad(source) { + return source < 10 ? '0' + source : source; + } + + /** + * 日期序列化 + * @private + */ + function encodeDate(source){ + return '"' + source.getFullYear() + "-" + + pad(source.getMonth() + 1) + "-" + + pad(source.getDate()) + "T" + + pad(source.getHours()) + ":" + + pad(source.getMinutes()) + ":" + + pad(source.getSeconds()) + '"'; + } + + return function (value) { + switch (typeof value) { + case 'undefined': + return 'undefined'; + + case 'number': + return isFinite(value) ? String(value) : "null"; + + case 'string': + return encodeString(value); + + case 'boolean': + return String(value); + + default: + if (value === null) { + return 'null'; + } else if (value instanceof Array) { + return encodeArray(value); + } else if (value instanceof Date) { + return encodeDate(value); + } else { + var result = ['{'], + encode = baidu.json.stringify, + preComma, + item; + + for (var key in value) { + if (Object.prototype.hasOwnProperty.call(value, key)) { + item = value[key]; + switch (typeof item) { + case 'undefined': + case 'unknown': + case 'function': + break; + default: + if (preComma) { + result.push(','); + } + preComma = 1; + result.push(encode(key) + ':' + encode(item)); + } + } + } + result.push('}'); + return result.join(''); + } + } + }; +})(); +/* + * Tangram + * Copyright 2009 Baidu Inc. All rights reserved. + * + * path: baidu/json/encode.js + * author: erik, cat + * version: 1.3.4 + * date: 2010/12/23 + */ + + + +/** + * 将json对象序列化,为过时接口,今后会被baidu.json.stringify代替 + * @name baidu.json.encode + * @function + * @grammar baidu.json.encode(value) + * @param {JSON} value 需要序列化的json对象 + * @meta out + * @see baidu.json.decode,baidu.json.stringify + * + * @returns {string} 序列化后的字符串 + */ +baidu.json.encode = baidu.json.stringify; diff --git a/admin/public/UEditor/dialogs/wordimage/wordimage.html b/admin/public/UEditor/dialogs/wordimage/wordimage.html new file mode 100644 index 00000000..6cf60674 --- /dev/null +++ b/admin/public/UEditor/dialogs/wordimage/wordimage.html @@ -0,0 +1,111 @@ + + + + + + + + + +
    +
    + +
    +
    +
    +
    +
    + +
    + : +
    +
    +
    + + + + + + \ No newline at end of file diff --git a/admin/public/UEditor/dialogs/wordimage/wordimage.js b/admin/public/UEditor/dialogs/wordimage/wordimage.js new file mode 100644 index 00000000..98f3a226 --- /dev/null +++ b/admin/public/UEditor/dialogs/wordimage/wordimage.js @@ -0,0 +1,157 @@ +/** + * Created by JetBrains PhpStorm. + * User: taoqili + * Date: 12-1-30 + * Time: 下午12:50 + * To change this template use File | Settings | File Templates. + */ + + + +var wordImage = {}; +//(function(){ +var g = baidu.g, + flashObj,flashContainer; + +wordImage.init = function(opt, callbacks) { + showLocalPath("localPath"); + //createCopyButton("clipboard","localPath"); + createFlashUploader(opt, callbacks); + addUploadListener(); + addOkListener(); +}; + +function hideFlash(){ + flashObj = null; + flashContainer.innerHTML = ""; +} +function addOkListener() { + dialog.onok = function() { + if (!imageUrls.length) return; + var urlPrefix = editor.getOpt('imageUrlPrefix'), + images = domUtils.getElementsByTagName(editor.document,"img"); + editor.fireEvent('saveScene'); + for (var i = 0,img; img = images[i++];) { + var src = img.getAttribute("word_img"); + if (!src) continue; + for (var j = 0,url; url = imageUrls[j++];) { + if (src.indexOf(url.original.replace(" ","")) != -1) { + img.src = urlPrefix + url.url; + img.setAttribute("_src", urlPrefix + url.url); //同时修改"_src"属性 + img.setAttribute("title",url.title); + domUtils.removeAttributes(img, ["word_img","style","width","height"]); + editor.fireEvent("selectionchange"); + break; + } + } + } + editor.fireEvent('saveScene'); + hideFlash(); + }; + dialog.oncancel = function(){ + hideFlash(); + } +} + +/** + * 绑定开始上传事件 + */ +function addUploadListener() { + g("upload").onclick = function () { + flashObj.upload(); + this.style.display = "none"; + }; +} + +function showLocalPath(id) { + //单张编辑 + var img = editor.selection.getRange().getClosedNode(); + var images = editor.execCommand('wordimage'); + if(images.length==1 || img && img.tagName == 'IMG'){ + g(id).value = images[0]; + return; + } + var path = images[0]; + var leftSlashIndex = path.lastIndexOf("/")||0, //不同版本的doc和浏览器都可能影响到这个符号,故直接判断两种 + rightSlashIndex = path.lastIndexOf("\\")||0, + separater = leftSlashIndex > rightSlashIndex ? "/":"\\" ; + + path = path.substring(0, path.lastIndexOf(separater)+1); + g(id).value = path; +} + +function createFlashUploader(opt, callbacks) { + //由于lang.flashI18n是静态属性,不可以直接进行修改,否则会影响到后续内容 + var i18n = utils.extend({},lang.flashI18n); + //处理图片资源地址的编码,补全等问题 + for(var i in i18n){ + if(!(i in {"lang":1,"uploadingTF":1,"imageTF":1,"textEncoding":1}) && i18n[i]){ + i18n[i] = encodeURIComponent(editor.options.langPath + editor.options.lang + "/images/" + i18n[i]); + } + } + opt = utils.extend(opt,i18n,false); + var option = { + createOptions:{ + id:'flash', + url:opt.flashUrl, + width:opt.width, + height:opt.height, + errorMessage:lang.flashError, + wmode:browser.safari ? 'transparent' : 'window', + ver:'10.0.0', + vars:opt, + container:opt.container + } + }; + + option = extendProperty(callbacks, option); + flashObj = new baidu.flash.imageUploader(option); + flashContainer = $G(opt.container); +} + +function extendProperty(fromObj, toObj) { + for (var i in fromObj) { + if (!toObj[i]) { + toObj[i] = fromObj[i]; + } + } + return toObj; +} + +//})(); + +function getPasteData(id) { + baidu.g("msg").innerHTML = lang.copySuccess + "
    "; + setTimeout(function() { + baidu.g("msg").innerHTML = ""; + }, 5000); + return baidu.g(id).value; +} + +function createCopyButton(id, dataFrom) { + baidu.swf.create({ + id:"copyFlash", + url:"fClipboard_ueditor.swf", + width:"58", + height:"25", + errorMessage:"", + bgColor:"#CBCBCB", + wmode:"transparent", + ver:"10.0.0", + vars:{ + tid:dataFrom + } + }, id + ); + + var clipboard = baidu.swf.getMovie("copyFlash"); + var clipinterval = setInterval(function() { + if (clipboard && clipboard.flashInit) { + clearInterval(clipinterval); + clipboard.setHandCursor(true); + clipboard.setContentFuncName("getPasteData"); + //clipboard.setMEFuncName("mouseEventHandler"); + } + }, 500); +} +createCopyButton("clipboard", "localPath"); \ No newline at end of file diff --git a/admin/public/UEditor/index.html b/admin/public/UEditor/index.html new file mode 100644 index 00000000..a4164182 --- /dev/null +++ b/admin/public/UEditor/index.html @@ -0,0 +1,175 @@ + + + + 完整demo + + + + + + + + + + +
    +

    完整demo

    + +
    +
    +
    + + + + + + + + + + + +
    +
    + + + + + + + +
    + +
    + + +
    + +
    +
    + + +
    + + + + \ No newline at end of file diff --git a/admin/public/UEditor/lang/en/en.js b/admin/public/UEditor/lang/en/en.js new file mode 100644 index 00000000..9b5af776 --- /dev/null +++ b/admin/public/UEditor/lang/en/en.js @@ -0,0 +1,755 @@ +/** + * Created with JetBrains PhpStorm. + * User: taoqili + * Date: 12-6-12 + * Time: 下午6:57 + * To change this template use File | Settings | File Templates. + */ +UE.I18N['en'] = { + 'labelMap': { + 'anchor': 'Anchor', + 'undo': 'Undo', + 'redo': 'Redo', + 'bold': 'Bold', + 'indent': 'Indent', + 'snapscreen': 'SnapScreen', + 'italic': 'Italic', + 'underline': 'Underline', + 'strikethrough': 'Strikethrough', + 'subscript': 'SubScript', + 'fontborder': 'text border', + 'superscript': 'SuperScript', + 'formatmatch': 'Format Match', + 'source': 'Source', + 'blockquote': 'BlockQuote', + 'pasteplain': 'PastePlain', + 'selectall': 'SelectAll', + 'print': 'Print', + 'preview': 'Preview', + 'horizontal': 'Horizontal', + 'removeformat': 'RemoveFormat', + 'time': 'Time', + 'date': 'Date', + 'unlink': 'Unlink', + 'insertrow': 'InsertRow', + 'insertcol': 'InsertCol', + 'mergeright': 'MergeRight', + 'mergedown': 'MergeDown', + 'deleterow': 'DeleteRow', + 'deletecol': 'DeleteCol', + 'splittorows': 'SplitToRows', + 'insertcode': 'insert code', + 'splittocols': 'SplitToCols', + 'splittocells': 'SplitToCells', + 'deletecaption': 'DeleteCaption', + 'inserttitle': 'InsertTitle', + 'mergecells': 'MergeCells', + 'deletetable': 'DeleteTable', + 'cleardoc': 'Clear', + 'insertparagraphbeforetable': 'InsertParagraphBeforeTable', + 'fontfamily': 'FontFamily', + 'fontsize': 'FontSize', + 'paragraph': 'Paragraph', + 'simpleupload': 'Single Image', + 'insertimage': 'Multi Image', + 'edittable': 'Edit Table', + 'edittd': 'Edit Td', + 'link': 'Link', + 'emotion': 'Emotion', + 'spechars': 'Spechars', + 'searchreplace': 'SearchReplace', + 'map': 'BaiduMap', + 'gmap': 'GoogleMap', + 'insertvideo': 'Video', + 'help': 'Help', + 'justifyleft': 'JustifyLeft', + 'justifyright': 'JustifyRight', + 'justifycenter': 'JustifyCenter', + 'justifyjustify': 'Justify', + 'forecolor': 'FontColor', + 'backcolor': 'BackColor', + 'insertorderedlist': 'OL', + 'insertunorderedlist': 'UL', + 'fullscreen': 'FullScreen', + 'directionalityltr': 'EnterFromLeft', + 'directionalityrtl': 'EnterFromRight', + 'rowspacingtop': 'RowSpacingTop', + 'rowspacingbottom': 'RowSpacingBottom', + 'pagebreak': 'PageBreak', + 'insertframe': 'Iframe', + 'imagenone': 'Default', + 'imageleft': 'ImageLeft', + 'imageright': 'ImageRight', + 'attachment': 'Attachment', + 'imagecenter': 'ImageCenter', + 'wordimage': 'WordImage', + 'lineheight': 'LineHeight', + 'edittip': 'EditTip', + 'customstyle': 'CustomStyle', + 'scrawl': 'Scrawl', + 'autotypeset': 'AutoTypeset', + 'webapp': 'WebAPP', + 'touppercase': 'UpperCase', + 'tolowercase': 'LowerCase', + 'template': 'Template', + 'background': 'Background', + 'inserttable': 'InsertTable', + 'music': 'Music', + 'charts': 'charts', + 'drafts': 'Load from Drafts' + }, + 'insertorderedlist': { + 'num': '1,2,3...', + 'num1': '1),2),3)...', + 'num2': '(1),(2),(3)...', + 'cn': '一,二,三....', + 'cn1': '一),二),三)....', + 'cn2': '(一),(二),(三)....', + 'decimal': '1,2,3...', + 'lower-alpha': 'a,b,c...', + 'lower-roman': 'i,ii,iii...', + 'upper-alpha': 'A,B,C...', + 'upper-roman': 'I,II,III...' + }, + 'insertunorderedlist': { + 'circle': '○ Circle', + 'disc': '● Circle dot', + 'square': '■ Rectangle ', + 'dash': '- Dash', + 'dot': '。dot' + }, + 'paragraph': { 'p': 'Paragraph', 'h1': 'Title 1', 'h2': 'Title 2', 'h3': 'Title 3', 'h4': 'Title 4', 'h5': 'Title 5', 'h6': 'Title 6' }, + 'fontfamily': { + 'songti': 'Sim Sun', + 'kaiti': 'Sim Kai', + 'heiti': 'Sim Hei', + 'lishu': 'Sim Li', + 'yahei': 'Microsoft YaHei', + 'andaleMono': 'Andale Mono', + 'arial': 'Arial', + 'arialBlack': 'Arial Black', + 'comicSansMs': 'Comic Sans MS', + 'impact': 'Impact', + 'timesNewRoman': 'Times New Roman' + }, + 'customstyle': { + 'tc': 'Title center', + 'tl': 'Title left', + 'im': 'Important', + 'hi': 'Highlight' + }, + 'autoupload': { + 'exceedSizeError': 'File Size Exceed', + 'exceedTypeError': 'File Type Not Allow', + 'jsonEncodeError': 'Server Return Format Error', + 'loading': 'loading...', + 'loadError': 'load error', + 'errorLoadConfig': 'Server config not loaded, upload can not work.' + }, + 'simpleupload': { + 'exceedSizeError': 'File Size Exceed', + 'exceedTypeError': 'File Type Not Allow', + 'jsonEncodeError': 'Server Return Format Error', + 'loading': 'loading...', + 'loadError': 'load error', + 'errorLoadConfig': 'Server config not loaded, upload can not work.' + }, + 'elementPathTip': 'Path', + 'wordCountTip': 'Word Count', + 'wordCountMsg': '{#count} characters entered,{#leave} left. ', + 'wordOverFlowMsg': 'The number of characters has exceeded allowable maximum values, the server may refuse to save!', + 'ok': 'OK', + 'cancel': 'Cancel', + 'closeDialog': 'closeDialog', + 'tableDrag': 'You must import the file uiUtils.js before drag! ', + 'autofloatMsg': 'The plugin AutoFloat depends on EditorUI!', + 'loadconfigError': 'Get server config error.', + 'loadconfigFormatError': 'Server config format error.', + 'loadconfigHttpError': 'Get server config http error.', + 'snapScreen_plugin': { + 'browserMsg': 'Only IE supported!', + 'callBackErrorMsg': 'The callback data is wrong,please check the config!', + 'uploadErrorMsg': 'Upload error,please check your server environment! ' + }, + 'insertcode': { + 'as3': 'ActionScript 3', + 'bash': 'Bash/Shell', + 'cpp': 'C/C++', + 'css': 'CSS', + 'cf': 'ColdFusion', + 'c#': 'C#', + 'delphi': 'Delphi', + 'diff': 'Diff', + 'erlang': 'Erlang', + 'groovy': 'Groovy', + 'html': 'HTML', + 'java': 'Java', + 'jfx': 'JavaFX', + 'js': 'JavaScript', + 'pl': 'Perl', + 'php': 'PHP', + 'plain': 'Plain Text', + 'ps': 'PowerShell', + 'python': 'Python', + 'ruby': 'Ruby', + 'scala': 'Scala', + 'sql': 'SQL', + 'vb': 'Visual Basic', + 'xml': 'XML' + }, + 'confirmClear': 'Do you confirm to clear the Document?', + 'contextMenu': { + 'delete': 'Delete', + 'selectall': 'Select all', + 'deletecode': 'Delete Code', + 'cleardoc': 'Clear Document', + 'confirmclear': 'Do you confirm to clear the Document?', + 'unlink': 'Unlink', + 'paragraph': 'Paragraph', + 'edittable': 'Table property', + 'aligncell': 'Align cell', + 'aligntable': 'Table alignment', + 'tableleft': 'Left float', + 'tablecenter': 'Center', + 'tableright': 'Right float', + 'aligntd': 'Cell alignment', + 'edittd': 'Cell property', + 'setbordervisible': 'set table edge visible', + 'table': 'Table', + 'justifyleft': 'Justify Left', + 'justifyright': 'Justify Right', + 'justifycenter': 'Justify Center', + 'justifyjustify': 'Default', + 'deletetable': 'Delete table', + 'insertparagraphbefore': 'InsertedBeforeLine', + 'insertparagraphafter': 'InsertedAfterLine', + 'inserttable': 'Insert table', + 'insertcaption': 'Insert caption', + 'deletecaption': 'Delete Caption', + 'inserttitle': 'Insert Title', + 'deletetitle': 'Delete Title', + 'inserttitlecol': 'Insert Title Col', + 'deletetitlecol': 'Delete Title Col', + 'averageDiseRow': 'AverageDise Row', + 'averageDisCol': 'AverageDis Col', + 'deleterow': 'Delete row', + 'deletecol': 'Delete col', + 'insertrow': 'Insert row', + 'insertcol': 'Insert col', + 'insertrownext': 'Insert Row Next', + 'insertcolnext': 'Insert Col Next', + 'mergeright': 'Merge right', + 'mergeleft': 'Merge left', + 'mergedown': 'Merge down', + 'mergecells': 'Merge cells', + 'splittocells': 'Split to cells', + 'splittocols': 'Split to Cols', + 'splittorows': 'Split to Rows', + 'tablesort': 'Table sorting', + 'enablesort': 'Sorting Enable', + 'disablesort': 'Sorting Disable', + 'reversecurrent': 'Reverse current', + 'orderbyasc': 'Order By ASCII', + 'reversebyasc': 'Reverse By ASCII', + 'orderbynum': 'Order By Num', + 'reversebynum': 'Reverse By Num', + 'borderbk': 'Border shading', + 'setcolor': 'interlaced color', + 'unsetcolor': 'Cancel interlacedcolor', + 'setbackground': 'Background interlaced', + 'unsetbackground': 'Cancel Bk interlaced', + 'redandblue': 'Blue and red', + 'threecolorgradient': 'Three-color gradient', + 'copy': 'Copy(Ctrl + c)', + 'copymsg': "Browser does not support. Please use 'Ctrl + c' instead!", + 'paste': 'Paste(Ctrl + v)', + 'pastemsg': "Browser does not support. Please use 'Ctrl + v' instead!" + }, + 'copymsg': "Browser does not support. Please use 'Ctrl + c' instead!", + 'pastemsg': "Browser does not support. Please use 'Ctrl + v' instead!", + 'anthorMsg': 'Link', + 'clearColor': 'Clear', + 'standardColor': 'Standard color', + 'themeColor': 'Theme color', + 'property': 'Property', + 'default': 'Default', + 'modify': 'Modify', + 'justifyleft': 'Justify Left', + 'justifyright': 'Justify Right', + 'justifycenter': 'Justify Center', + 'justify': 'Default', + 'clear': 'Clear', + 'anchorMsg': 'Anchor', + 'delete': 'Delete', + 'clickToUpload': 'Click to upload', + 'unset': 'Language hasn\'t been set!', + 't_row': 'row', + 't_col': 'col', + 'pasteOpt': 'Paste Option', + 'pasteSourceFormat': 'Keep Source Formatting', + 'tagFormat': 'Keep tag', + 'pasteTextFormat': 'Keep Text only', + 'more': 'More', + 'autoTypeSet': { + 'mergeLine': 'Merge empty line', + 'delLine': 'Del empty line', + 'removeFormat': 'Remove format', + 'indent': 'Indent', + 'alignment': 'Alignment', + 'imageFloat': 'Image float', + 'removeFontsize': 'Remove font size', + 'removeFontFamily': 'Remove fontFamily', + 'removeHtml': 'Remove redundant HTML code', + 'pasteFilter': 'Paste filter', + 'run': 'Done', + 'symbol': 'Symbol Conversion', + 'bdc2sb': 'Full-width to Half-width', + 'tobdc': 'Half-width to Full-width' + }, + + 'background': { + 'static': { + 'lang_background_normal': 'Normal', + 'lang_background_local': 'Online', + 'lang_background_set': 'Background Set', + 'lang_background_none': 'No Background', + 'lang_background_colored': 'Colored Background', + 'lang_background_color': 'Color Set', + 'lang_background_netimg': 'Net-Image', + 'lang_background_align': 'Align Type', + 'lang_background_position': 'Position', + 'repeatType': { 'options': ['Center', 'Repeat-x', 'Repeat-y', 'Tile', 'Custom'] } + }, + 'noUploadImage': 'No pictures has been uploaded!', + 'toggleSelect': 'Change the active state by click!\n Image Size: ' + }, + //= ==============dialog i18N======================= + 'insertimage': { + 'static': { + 'lang_tab_remote': 'Insert', + 'lang_tab_upload': 'Local', + 'lang_tab_online': 'Manager', + 'lang_tab_search': 'Search', + 'lang_input_url': 'Address:', + 'lang_input_size': 'Size:', + 'lang_input_width': 'Width', + 'lang_input_height': 'Height', + 'lang_input_border': 'Border:', + 'lang_input_vhspace': 'Margins:', + 'lang_input_title': 'Title:', + 'lang_input_align': 'Image Float Style:', + 'lang_imgLoading': 'Loading...', + 'lang_start_upload': 'Start Upload', + 'lock': { 'title': 'Lock rate' }, + 'searchType': { 'title': 'ImageType', 'options': ['News', 'Wallpaper', 'emotions', 'photo'] }, + 'searchTxt': { 'value': 'Enter the search keyword!' }, + 'searchBtn': { 'value': 'Search' }, + 'searchReset': { 'value': 'Clear' }, + 'noneAlign': { 'title': 'None Float' }, + 'leftAlign': { 'title': 'Left Float' }, + 'rightAlign': { 'title': 'Right Float' }, + 'centerAlign': { 'title': 'Center In A Line' } + }, + 'uploadSelectFile': 'Select File', + 'uploadAddFile': 'Add File', + 'uploadStart': 'Start Upload', + 'uploadPause': 'Pause Upload', + 'uploadContinue': 'Continue Upload', + 'uploadRetry': 'Retry Upload', + 'uploadDelete': 'Delete', + 'uploadTurnLeft': 'Turn Left', + 'uploadTurnRight': 'Turn Right', + 'uploadPreview': 'Doing Preview', + 'uploadNoPreview': 'Can Not Preview', + 'updateStatusReady': 'Selected _ pictures, total _KB.', + 'updateStatusConfirm': '_ uploaded successfully and _ upload failed', + 'updateStatusFinish': 'Total _ pictures (_KB), _ uploaded successfully', + 'updateStatusError': ' and _ upload failed', + 'errorNotSupport': 'WebUploader does not support the browser you are using. Please upgrade your browser or flash player', + 'errorLoadConfig': 'Server config not loaded, upload can not work.', + 'errorExceedSize': 'File Size Exceed', + 'errorFileType': 'File Type Not Allow', + 'errorInterrupt': 'File Upload Interrupted', + 'errorUploadRetry': 'Upload Error, Please Retry.', + 'errorHttp': 'Http Error', + 'errorServerUpload': 'Server Result Error.', + 'remoteLockError': 'Cannot Lock the Proportion between width and height', + 'numError': 'Please enter the correct Num. e.g 123,400', + 'imageUrlError': 'The image format may be wrong!', + 'imageLoadError': 'Error,please check the network or URL!', + 'searchRemind': 'Enter the search keyword!', + 'searchLoading': 'Image is loading,please wait...', + 'searchRetry': " Sorry,can't find the image,please try again!" + }, + 'attachment': { + 'static': { + 'lang_tab_upload': 'Upload', + 'lang_tab_online': 'Online', + 'lang_start_upload': 'Start upload', + 'lang_drop_remind': 'You can drop files here, a single maximum of 300 files' + }, + 'uploadSelectFile': 'Select File', + 'uploadAddFile': 'Add File', + 'uploadStart': 'Start Upload', + 'uploadPause': 'Pause Upload', + 'uploadContinue': 'Continue Upload', + 'uploadRetry': 'Retry Upload', + 'uploadDelete': 'Delete', + 'uploadTurnLeft': 'Turn Left', + 'uploadTurnRight': 'Turn Right', + 'uploadPreview': 'Doing Preview', + 'updateStatusReady': 'Selected _ files, total _KB.', + 'updateStatusConfirm': '_ uploaded successfully and _ upload failed', + 'updateStatusFinish': 'Total _ files (_KB), _ uploaded successfully', + 'updateStatusError': ' and _ upload failed', + 'errorNotSupport': 'WebUploader does not support the browser you are using. Please upgrade your browser or flash player', + 'errorLoadConfig': 'Server config not loaded, upload can not work.', + 'errorExceedSize': 'File Size Exceed', + 'errorFileType': 'File Type Not Allow', + 'errorInterrupt': 'File Upload Interrupted', + 'errorUploadRetry': 'Upload Error, Please Retry.', + 'errorHttp': 'Http Error', + 'errorServerUpload': 'Server Result Error.' + }, + + 'insertvideo': { + 'static': { + 'lang_tab_insertV': 'Video', + 'lang_tab_searchV': 'Search', + 'lang_tab_uploadV': 'Upload', + 'lang_video_url': ' URL ', + 'lang_video_size': 'Video Size', + 'lang_videoW': 'Width', + 'lang_videoH': 'Height', + 'lang_alignment': 'Alignment', + 'videoSearchTxt': { 'value': 'Enter the search keyword!' }, + 'videoType': { 'options': ['All', 'Hot', 'Entertainment', 'Funny', 'Sports', 'Science', 'variety'] }, + 'videoSearchBtn': { 'value': 'Search in Baidu' }, + 'videoSearchReset': { 'value': 'Clear result' }, + + 'lang_input_fileStatus': ' No file uploaded!', + 'startUpload': { 'style': 'background:url(upload.png) no-repeat;' }, + + 'lang_upload_size': 'Video Size', + 'lang_upload_width': 'Width', + 'lang_upload_height': 'Height', + 'lang_upload_alignment': 'Alignment', + 'lang_format_advice': 'Recommends mp4 format.' + }, + 'numError': 'Please enter the correct Num. e.g 123,400', + 'floatLeft': 'Float left', + 'floatRight': 'Float right', + 'default': 'Default', + 'block': 'Display in block', + 'urlError': 'The video url format may be wrong!', + 'loading': '  The video is loading, please wait…', + 'clickToSelect': 'Click to select', + 'goToSource': 'Visit source video ', + 'noVideo': "    Sorry,can't find the video,please try again!", + + 'browseFiles': 'Open files', + 'uploadSuccess': 'Upload Successful!', + 'delSuccessFile': 'Remove from the success of the queue', + 'delFailSaveFile': 'Remove the save failed file', + 'statusPrompt': ' file(s) uploaded! ', + 'flashVersionError': 'The current Flash version is too low, please update FlashPlayer,then try again!', + 'flashLoadingError': 'The Flash failed loading! Please check the path or network state', + 'fileUploadReady': 'Wait for uploading...', + 'delUploadQueue': 'Remove from the uploading queue ', + 'limitPrompt1': 'Can not choose more than single', + 'limitPrompt2': 'file(s)!Please choose again!', + 'delFailFile': 'Remove failure file', + 'fileSizeLimit': 'File size exceeds the limit!', + 'emptyFile': 'Can not upload an empty file!', + 'fileTypeError': 'File type error!', + 'unknownError': 'Unknown error!', + 'fileUploading': 'Uploading,please wait...', + 'cancelUpload': 'Cancel upload', + 'netError': 'Network error', + 'failUpload': 'Upload failed', + 'serverIOError': 'Server IO error!', + 'noAuthority': 'No Permission!', + 'fileNumLimit': 'Upload limit to the number', + 'failCheck': 'Authentication fails, the upload is skipped!', + 'fileCanceling': 'Cancel, please wait...', + 'stopUploading': 'Upload has stopped...', + + 'uploadSelectFile': 'Select File', + 'uploadAddFile': 'Add File', + 'uploadStart': 'Start Upload', + 'uploadPause': 'Pause Upload', + 'uploadContinue': 'Continue Upload', + 'uploadRetry': 'Retry Upload', + 'uploadDelete': 'Delete', + 'uploadTurnLeft': 'Turn Left', + 'uploadTurnRight': 'Turn Right', + 'uploadPreview': 'Doing Preview', + 'updateStatusReady': 'Selected _ files, total _KB.', + 'updateStatusConfirm': '_ uploaded successfully and _ upload failed', + 'updateStatusFinish': 'Total _ files (_KB), _ uploaded successfully', + 'updateStatusError': ' and _ upload failed', + 'errorNotSupport': 'WebUploader does not support the browser you are using. Please upgrade your browser or flash player', + 'errorLoadConfig': 'Server config not loaded, upload can not work.', + 'errorExceedSize': 'File Size Exceed', + 'errorFileType': 'File Type Not Allow', + 'errorInterrupt': 'File Upload Interrupted', + 'errorUploadRetry': 'Upload Error, Please Retry.', + 'errorHttp': 'Http Error', + 'errorServerUpload': 'Server Result Error.' + }, + 'webapp': { + 'tip1': 'This function provided by Baidu APP,please apply for baidu APPKey webmaster first!', + 'tip2': 'And then open the file ueditor.config.js to set it! ', + 'applyFor': 'APPLY FOR', + 'anthorApi': 'Baidu API' + }, + 'template': { + 'static': { + 'lang_template_bkcolor': 'Background Color', + 'lang_template_clear': 'Keep Content', + 'lang_template_select': 'Select Template' + }, + 'blank': 'Blank', + 'blog': 'Blog', + 'resume': 'Resume', + 'richText': 'Rich Text', + 'scrPapers': 'Scientific Papers' + }, + scrawl: { + 'static': { + 'lang_input_previousStep': 'Previous', + 'lang_input_nextsStep': 'Next', + 'lang_input_clear': 'Clear', + 'lang_input_addPic': 'AddImage', + 'lang_input_ScalePic': 'ScaleImage', + 'lang_input_removePic': 'RemoveImage', + 'J_imgTxt': { title: 'Add background image' } + }, + 'noScarwl': 'No paint, a white paper...', + 'scrawlUpLoading': 'Image is uploading, please wait...', + 'continueBtn': 'Try again', + 'imageError': 'Image failed to load!', + 'backgroundUploading': 'Image is uploading,please wait...' + }, + 'music': { + 'static': { + 'lang_input_tips': 'Input singer/song/album, search you interested in music!', + 'J_searchBtn': { value: 'Search songs' } + }, + 'emptyTxt': 'Not search to the relevant music results, please change a keyword try.', + 'chapter': 'Songs', + 'singer': 'Singer', + 'special': 'Album', + 'listenTest': 'Audition' + }, + anchor: { + 'static': { + 'lang_input_anchorName': 'Anchor Name:' + } + }, + 'charts': { + 'static': { + 'lang_data_source': 'Data source:', + 'lang_chart_format': 'Chart format:', + 'lang_data_align': 'Align', + 'lang_chart_align_same': 'Consistent with the X-axis Y-axis', + 'lang_chart_align_reverse': 'X-axis Y-axis opposite', + 'lang_chart_title': 'Title', + 'lang_chart_main_title': 'main title:', + 'lang_chart_sub_title': 'sub title:', + 'lang_chart_x_title': 'X-axis title:', + 'lang_chart_y_title': 'Y-axis title:', + 'lang_chart_tip': 'Prompt', + 'lang_cahrt_tip_prefix': 'prefix:', + 'lang_cahrt_tip_description': '仅饼图有效, 当鼠标移动到饼图中相应的块上时,提示框内的文字的前缀', + 'lang_chart_data_unit': 'Unit', + 'lang_chart_data_unit_title': 'unit:', + 'lang_chart_data_unit_description': '显示在每个数据点上的数据的单位, 比如: 温度的单位 ℃', + 'lang_chart_type': 'Chart type:', + 'lang_prev_btn': 'Previous', + 'lang_next_btn': 'Next' + } + }, + emotion: { + 'static': { + 'lang_input_choice': 'Choice', + 'lang_input_Tuzki': 'Tuzki', + 'lang_input_lvdouwa': 'LvDouWa', + 'lang_input_BOBO': 'BOBO', + 'lang_input_babyCat': 'BabyCat', + 'lang_input_bubble': 'Bubble', + 'lang_input_youa': 'YouA' + } + }, + gmap: { + 'static': { + 'lang_input_address': 'Address:', + 'lang_input_search': 'Search', + 'address': { value: 'Beijing' } + }, + searchError: 'Unable to locate the address!' + }, + help: { + 'static': { + 'lang_input_about': 'About', + 'lang_input_shortcuts': 'Shortcuts', + 'lang_input_introduction': 'UEditor is developed by Baidu Co.ltd. It is lightweight, customizable , focusing on user experience and etc. , UEditor is based on open source BSD license , allowing free use and redistribution.', + 'lang_Txt_shortcuts': 'Shortcuts', + 'lang_Txt_func': 'Function', + 'lang_Txt_bold': 'Bold', + 'lang_Txt_copy': 'Copy', + 'lang_Txt_cut': 'Cut', + 'lang_Txt_Paste': 'Paste', + 'lang_Txt_undo': 'Undo', + 'lang_Txt_redo': 'Redo', + 'lang_Txt_italic': 'Italic', + 'lang_Txt_underline': 'Underline', + 'lang_Txt_selectAll': 'Select All', + 'lang_Txt_visualEnter': 'Submit', + 'lang_Txt_fullscreen': 'Fullscreen' + } + }, + insertframe: { + 'static': { + 'lang_input_address': 'Address:', + 'lang_input_width': 'Width:', + 'lang_input_height': 'height:', + 'lang_input_isScroll': 'Enable scrollbars:', + 'lang_input_frameborder': 'Show frame border:', + 'lang_input_alignMode': 'Alignment:', + 'align': { title: 'Alignment', options: ['Default', 'Left', 'Right', 'Center'] } + }, + 'enterAddress': 'Please enter an address!' + }, + link: { + 'static': { + 'lang_input_text': 'Text:', + 'lang_input_url': 'URL:', + 'lang_input_title': 'Title:', + 'lang_input_target': 'open in new window:' + }, + 'validLink': 'Supports only effective when a link is selected', + 'httpPrompt': 'The hyperlink you enter should start with "http|https|ftp://"!' + }, + map: { + 'static': { + lang_city: 'City', + lang_address: 'Address', + city: { value: 'Beijing' }, + lang_search: 'Search', + lang_dynamicmap: 'Dynamic map' + }, + cityMsg: 'Please enter the city name!', + errorMsg: "Can't find the place!" + }, + searchreplace: { + 'static': { + lang_tab_search: 'Search', + lang_tab_replace: 'Replace', + lang_search1: 'Search', + lang_search2: 'Search', + lang_replace: 'Replace', + lang_searchReg: 'Support regular expression ,which starts and ends with a slash ,for example "/expression/"', + lang_searchReg1: 'Support regular expression ,which starts and ends with a slash ,for example "/expression/"', + lang_case_sensitive1: 'Case sense', + lang_case_sensitive2: 'Case sense', + nextFindBtn: { value: 'Next' }, + preFindBtn: { value: 'Preview' }, + nextReplaceBtn: { value: 'Next' }, + preReplaceBtn: { value: 'Preview' }, + repalceBtn: { value: 'Replace' }, + repalceAllBtn: { value: 'Replace all' } + }, + getEnd: 'Has the search to the bottom!', + getStart: 'Has the search to the top!', + countMsg: 'Altogether replaced {#count} character(s)!' + }, + snapscreen: { + 'static': { + lang_showMsg: 'You should install the UEditor screenshots program first!', + lang_download: 'Download!', + lang_step1: 'Step1:Download the program and then run it', + lang_step2: 'Step2:After complete install,try to click the button again' + } + }, + spechars: { + 'static': {}, + tsfh: 'Special', + lmsz: 'Roman', + szfh: 'Numeral', + rwfh: 'Japanese', + xlzm: 'The Greek', + ewzm: 'Russian', + pyzm: 'Phonetic', + yyyb: 'English', + zyzf: 'Others' + }, + 'edittable': { + 'static': { + 'lang_tableStyle': 'Table style', + 'lang_insertCaption': 'Add table header row', + 'lang_insertTitle': 'Add table title row', + 'lang_insertTitleCol': 'Add table title col', + 'lang_tableSize': 'Automatically adjust table size', + 'lang_autoSizeContent': 'Adaptive by form text', + 'lang_orderbycontent': 'Table of contents sortable', + 'lang_autoSizePage': 'Page width adaptive', + 'lang_example': 'Example', + 'lang_borderStyle': 'Table Border', + 'lang_color': 'Color:' + }, + captionName: 'Caption', + titleName: 'Title', + cellsName: 'text', + errorMsg: 'There are merged cells, can not sort.' + }, + 'edittip': { + 'static': { + lang_delRow: 'Delete entire row', + lang_delCol: 'Delete entire col' + } + }, + 'edittd': { + 'static': { + lang_tdBkColor: 'Background Color:' + } + }, + 'formula': { + 'static': { + } + }, + wordimage: { + 'static': { + lang_resave: 'The re-save step', + uploadBtn: { src: 'upload.png', alt: 'Upload' }, + clipboard: { style: 'background: url(copy.png) -153px -1px no-repeat;' }, + lang_step: ' 1. Click top button to copy the url and then open the dialog to paste it. 2. Open after choose photos uploaded process.' + }, + fileType: 'Image', + flashError: 'Flash initialization failed!', + netError: 'Network error! Please try again!', + copySuccess: 'URL has been copied!', + + 'flashI18n': { + lang: encodeURI('{"UploadingState":"totalNum: ${a},uploadComplete: ${b}", "BeforeUpload":"waitingNum: ${a}", "ExceedSize":"Size exceed${a}", "ErrorInPreview":"Preview failed", "DefaultDescription":"Description", "LoadingImage":"Loading..."}'), + uploadingTF: encodeURI('{"font":"Arial", "size":12, "color":"0x000", "bold":"true", "italic":"false", "underline":"false"}'), + imageTF: encodeURI('{"font":"Arial", "size":11, "color":"red", "bold":"false", "italic":"false", "underline":"false"}'), + textEncoding: 'utf-8', + addImageSkinURL: 'addImage.png', + allDeleteBtnUpSkinURL: 'allDeleteBtnUpSkin.png', + allDeleteBtnHoverSkinURL: 'allDeleteBtnHoverSkin.png', + rotateLeftBtnEnableSkinURL: 'rotateLeftEnable.png', + rotateLeftBtnDisableSkinURL: 'rotateLeftDisable.png', + rotateRightBtnEnableSkinURL: 'rotateRightEnable.png', + rotateRightBtnDisableSkinURL: 'rotateRightDisable.png', + deleteBtnEnableSkinURL: 'deleteEnable.png', + deleteBtnDisableSkinURL: 'deleteDisable.png', + backgroundURL: '', + listBackgroundURL: '', + buttonURL: 'button.png' + } + }, + 'autosave': { + 'success': 'Local conservation success' + } +}; diff --git a/admin/public/UEditor/lang/en/images/addimage.png b/admin/public/UEditor/lang/en/images/addimage.png new file mode 100644 index 0000000000000000000000000000000000000000..3a2fd17121b9e0d435b2ca082d696c33b9f27b79 GIT binary patch literal 3373 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 ZzyK$sgmq7P@T33$002ovPDHLkV1jUEUt0hG literal 0 HcmV?d00001 diff --git a/admin/public/UEditor/lang/en/images/alldeletebtnupskin.png b/admin/public/UEditor/lang/en/images/alldeletebtnupskin.png new file mode 100644 index 0000000000000000000000000000000000000000..61658ce6f10164478ce293c05f1f0485a8fa1fc4 GIT binary patch literal 743 zcmV?P)0erzw)>{zXkhd zCViG2qouyIq;`tF{_e3*U(2`+Ovl!Y>7`>9!1cI4q4LP9T)`xnSL2dcM0_glBh$(C zJo)V>#zKCNSVCWV0L|~K5!`lrBscPavk)VwX7#rD4B4|eoh`|p<(WZxNwZVjXv8ns zuB86?K6fQI3TE}@*Wxfmw_M?$x9RK|3!I2Ir=W?)F-X;3M}Gt~3mx`->6pM=`)?YBin;;*T6(J=Db+^A#kEl|A)6WC6twgiXViw1(E|vrNhq=Enl)5O zdw^b;!)Q&OXM{b3kS+?3dfUE;;ji9Q=2XQ84sK7--_YoI2bsDJ6(e2C{=Yvbq&+a& z#)czpUIC!JFCrbu?dE34fFx>cEmy-A320qNH3gy!%Axr^EcGOBcm&N{{EtK0XtsxN zhLcnqm?quL)e(Y?#||x0xp3+blty9>aLswdf{Kx@NFS9*01ITx1k+k z#qTE-4^Em#mL?s|f0*EjVbbI7)ZjLM@c9L+^n-dgMWqNq5dlSMfW zNC{19DAGhg@Gixmw2M1CyR&!iez|k+xBKDDGw=K5o%4I<38mi+>%=K$#$Ds8!vcClYJ=>250ez{$K&dCcK`w>u{LO=%?hU`d1f1K8iPqO^|9ul5wM2GVc3(zpn|k4CNY9}6C75} zr}XtHdAo9BDB|NWk2tKP7#`A%Q!ffWi;s97^RRnwF66n_Xe0S!-(l^T)^gbvwx*w& zK*Nw`q+q3lVJL>5IrSl;v#n!pQAQ`6PQ(|m(9~QJymcT90lQ%u8fS$F)NcSJaG0J3 z5X`d)vV74;%&YKBCkW;Ngy5fa&Xfkj4s?R!;RQg)0D{40h}nQ#O5oh%=DGmRO9N-| zdmo1Z2D_UX0s)RGf*g?CBp|@%9-{|5)j?VRg@^h8B@5U+Oxsk!xHOP8w(~FoRds+s zWTCGHGz>u2Dkf4AP=)~KE@9z7@E{Yg8*JKX{BpK}Wf^*$RA#jXUPM(t+>u7wkJ`>o z=8Ocbh{a)L-hW1Hhbr*x;cQtmZUEoeJZ9_)K(z((@91?rn0MM>VrfEy!J&wA=Fik&S*{ zB7S0GX>oDfqz&%q(rp)dh;F$|usgW^Elgvdyz}AByhynG#c)H)-489j+h+NE{f}uM zxK4dcFx;=BKicOX7HTtg#iO9?3s$Ut@p@U0w&e4LV&RV^+eL?tuFTI$?NMmWDuJqN zT9A+=>7t8n6kkonSy29jc`^W-4L;59C1@xxo)L5X0Y_i74-9if0mj4lu^#}J^h9Kk z-8I^sGyv%3hC{1#dAFOnr3h4f%_pat>Gz$LAHYT0THq{jx+@sIo6eGD_u&#zeO3HW zXV`lkenoE;lT3^4YbH%!=I<^vIn5G{;k1;xT{LVif|D^2*M}(Kcp9$E$X&r^ zBTCjd5rKCx>{ddiNlHd?)(?>awnqG$nm13VMmrhQC#iP<`TP4(jfQe5;nh}}?-^a^w~<-FyAQcvc|1T93TEa4M3wL;r>ERi+Gp3%H!oHA0!8EXIwB1o%W0PfgOQ z&{90GY7rMoE;4;3R)6YS8@H>xTr|o^N_dntfepqI5`$<{5n+u*$cy6>PZ+;^fgEBT zG8npHExaOCoULedS~&UL0?EnVGD2|BE7_FiIO4gq>Mo|-@@ zK`+MAsN3O6ZDKF`Chp#WHe?*|H^ga{6z8cT6igKCYOJ?XJhZ77GW>R*_*>8}OBAMW zg*}{M{~|dr$y=akhL>}9@+wJ7PeYX&m0Fb=t~DuFtQTSnn)Dm&_rjTUJ59u$#0}92 z#FN-%n+cogLb^gub4|6K3YikGeBQhUy@0nj3O6!x-dw`unE4dW1T`&x=L>}$AP>C1 z7w#A`pr~pXM5ss%L~f0CB|jexepn~z7c0cYRvkpXOR7uy+=C?ipvLnNgP#qUA6@Nm zS`b=5W6g)73nb~mnGbSSXjz%|~8bWpX=N7*`DtT8CZmWz%yls6QfD#TkPTa@OEqFbwe z!M(#3*YQ*>jZ={-aNf937qlxEx~{#VbtAbcIkZ0X=L1b@#^?#AQho>iuv@Qgva4NC zo5>|sMR7aD&nVk;&t*7SalOuCj#HgCst zSJR@2|Bm0qx!|E4Y<5j{%X$&1azlCJ>PGa`(_Y1=k~#JYw+33f5Ff0T2DRy*rpkKF zmW5d&EW^>Y%fc`>Sdv}&SXEtqKndC93zybct(#95v=%f}X5?q=FZZet>bmNBEL(kY zE=SHH?g<}VISM`+1cew;2$~``TsPeD#NKZ3UBS2U+G-^CuhkRlx{q@4x*WO*_sj1u zHJ1x|c70AP7bGud5R-^knIg}JeHtC0cKPTM*BZtk9vK~J7o{EV8-qGMD3`7jFgS&{ zHLLesFHLVI8!cz4S}AR!1l1~$xu!9xQm1zk zz7;)>ou^+2;mUw@UGxpgBerZu7IGHLuu7?=>6pb>oJ;wKE(^4X^O5K#TYzXhT~G^u z3t9*^s5}@mj&OpWvDh?%ng>7roYbfkB+{;sFSUe!AYPoM+eyncv-dXHF^uG^(ogf)o;n|p;{YVN+@Tnq79qqn77iVR(w8e6|;iGtbB z*1CL;!t!cy#6GNGCvl~7+#8pe3S8oi_UV3`IhFFNxU>y_rQc)7W98$FbdDoaT1ooH zbfz1O6O*qPXD_^3-}$Off~EIKkQyRz2>kQ68m}AO3*Qm@)U}Z>klV=bNac;8=~|bu z-5Y}&ydjNW6+e%V92?08TJPSFY$3MhBOW8}d&YY;WbKOBl9k=GJ@1R<7T$jAofJb9 z2h_q$xH0_u5&j`fq;C^&Y#{KV!s4PGb%IM{`{n4Uf5SJXmN#1J4-&ps5W`$ zQApVw_3%%3_|g2ZYw)biEQ4&DtUX6p$9l_Nt-;aNnc#gx(of7!6gBLFOtz5ku1>Dp zA5KPZ_CLa=Vnf4ZzD+rkp5a24-H5Z-n0>y~v-r;q=^w={t2e3>oi<Svz*gmH^mQ#Jq;59;v40SmW`LUb=Gw!5Yy2k+Kz`)<6oxkT_XhKZVgTulBpsi z`VW(K5||Mu6EYKeq8Ovra?WX~s?KZQJXqN;MD${{>Yu`;lnsofXDd1*gZ4N-NC;*rU0KOd^a|M9gvH+|)1E7`x0GH3> z%k2gLP^ud1=^_IsKaa{mfGiE6N^XHoP1Gs(M1>x_vg4jTHEb96)jQn*i+IJXb( P9go0R-$Jhf?tK5Bgo^WU literal 0 HcmV?d00001 diff --git a/admin/public/UEditor/lang/en/images/button.png b/admin/public/UEditor/lang/en/images/button.png new file mode 100644 index 0000000000000000000000000000000000000000..098874cb1fa85852d77ba9acbb5850c91c341fb7 GIT binary patch literal 4929 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 literal 0 HcmV?d00001 diff --git a/admin/public/UEditor/lang/en/images/deletedisable.png b/admin/public/UEditor/lang/en/images/deletedisable.png new file mode 100644 index 0000000000000000000000000000000000000000..c8ee75094f59f0c1262806fd294d361f30f64f58 GIT binary patch literal 649 zcmV;40(Sk0P)!u-Pc3GOd!YPO+bG=gGoA_gW7h+<&i6W@>CzIUsorkT}tXKy|I-GoR_nf%RY$+yzqrWn_y0c| zycG_I116IRG@DK0sZ-E55u|Ou1fok>7zp9LsHJgReXhe;7C4$VS;)mE^wOWxM5!>w+j7B4b z!(p<+cswRyO2rY#*XuP527_xko|w>=_a0qmu_(~#bP__L5ZG)saJ${)TYOfjR7kAi zYvg9L`EQ38LQ-=rdwc{0EpJ`Z=~U9|_2kw4eh&tN0eJ55 jcWg?)n1^9d$t00000NkvXXu0mjfULPWN literal 0 HcmV?d00001 diff --git a/admin/public/UEditor/lang/en/images/deleteenable.png b/admin/public/UEditor/lang/en/images/deleteenable.png new file mode 100644 index 0000000000000000000000000000000000000000..26acc883567c5d7fde8de3ba052d7754a5b1c539 GIT binary patch literal 664 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 F`FAsl-Jbve literal 0 HcmV?d00001 diff --git a/admin/public/UEditor/lang/en/images/localimage.png b/admin/public/UEditor/lang/en/images/localimage.png new file mode 100644 index 0000000000000000000000000000000000000000..12c8e6aefa8fd16287ac77bbecd7d5b58c3fc837 GIT binary patch literal 3083 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 Z1^`gxH94g;riuUn002ovPDHLkV1oEm+S&jB literal 0 HcmV?d00001 diff --git a/admin/public/UEditor/lang/en/images/music.png b/admin/public/UEditor/lang/en/images/music.png new file mode 100644 index 0000000000000000000000000000000000000000..2f495fe92ffecdce42b74fd57dca2687414711fb GIT binary patch literal 91561 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 LNkvXXu0mjf3l)h% literal 0 HcmV?d00001 diff --git a/admin/public/UEditor/lang/en/images/rotateleftdisable.png b/admin/public/UEditor/lang/en/images/rotateleftdisable.png new file mode 100644 index 0000000000000000000000000000000000000000..741526e0d5e6eb5c30eb0a62c9b1d6d558ed9cdf GIT binary patch literal 719 zcmV;=0xVLm}k=YQ<2%m+GNILKMZ4Wj)Eo{6dA(i=1OgO`#k70DYI-BmRjYes)SkU2cI0GZBR;y4N3I~Hh!d`9*7LUg-fQ!ZA17DgvC%W<{o)0F! zU*`EmuKGZYN~Kcs0v3uoolcs~W&&`zTnccgjDVT|^mshtI#kAIIINifC7$1T{?yd~ z`f398$nzJ^&xXUj%I~;@1tb~>YHqh%0jWR{cz-&b2!6()Y&M(t%#{JqZzlB@o&~uo zRdFYN7<*g3d>y0SFTSsu}||KmrzxrzXV}0f4+Nl`U`wo^<=3%s|h|0ur}Z0m~6a z)9IA5+3a~Uyo=N{O{`Z26ni!(U6x=a31615Uq6I}2cZ-|0a2}1X+EF7+lbqaCbL*9 zVjpaCBO8zeF31Bljb43c1B|5gdMy+K1i&JZ2&owiAH&aRFjxU~zu$k$sq`Wh)qB?* z7JdW}ya?6MP#9CN2390Mab0C5lljw}edEbwzR6l%S5ujn*P2rK!bg5RKf!pHvr45x zq@5Lg56Rlp|dF?<); zZnrB`Ycv`HPI*-K+S{`L4RzyPXZYcl&002ovPDHLkV1lL= BGwT2V literal 0 HcmV?d00001 diff --git a/admin/public/UEditor/lang/en/images/rotateleftenable.png b/admin/public/UEditor/lang/en/images/rotateleftenable.png new file mode 100644 index 0000000000000000000000000000000000000000..e164ddbd62a232f3a89826158c9795f6c082cc89 GIT binary patch literal 952 zcmV;p14sOcP)B{+A~4pJXZ}t_3ogEQ=EtDt@NW=ovC^1YY3D0f#y*iY)MG5<8F z!|f{@kKz7^5#8k3NZf?c9K_t5iFB?APcn|7{XXn#Ybhtak0o(qW)4fuAr!0vET4{< zSc+h47GQ*Qo%FCG#zDtxKn;d}ii3LDciA+S|Xdhl! zB4Tth6pKaVi#F1YAvCEHTFJM^bUHnP0sSYFPoVrcDQm)w^;g8!)bGBFx|JW?%CGA- z&{PEjJ5@v`9|31h11Z`(8l4W74acX!rYt{M#7D#XGmFrJ8p1{(Q)@sv8@F2OUzvR1 zx9$d0kvWXM{tBEwN0$R4YNDW*#-^%Df&-Q6zoW#Uu@ZDmhS%$@-$mxZRD^B@1aSM_ zhL@++3|_o?ixNDPXhWAA>})fj>w5hzGPAR@B4aE>&p+Mbf*>$imMuk5EW2c0000?hzPCHlRk++nh`E3!rKF3htnTQ@ z$gI|MU8lEVHuFTg-PR|Q2`!gP+H5wYX&N~k4)SU74-bY78_Ii7=yw!+~9z)9EC?-%tI1pNtpOgTWwx zYc~hmYPIxUug9z{77N<%_sk-|f_a_y+;xqv4+oe^KHq!n0!Sli2@LjQ?eJI-PQw!5kz2kP;{i1#vW)J3m7@ilvOQx*+0gD21yWM29TG_#>*)V5x3eEte0rs!7XTfq- zNpDVBe^HqJA^?xgte(JHEEaB201ADoR;^a);o$)-i`fNGNCD$l*jUkV&ZOJ#g6-=H z48;P#aDbi7X5{nvH~?d$9K9Fo01LT5x392A!Cv-)3}9cydREAx^dDF>`_*d2002m8 z7y1N?u~>`?4DAa45ev4jw7ek*Sw2XA4L&zdS z9A4&}t`&psbm3W({))<)8k1Mzq-LMgHh4P0I-QOV5C8-H!ohO6T&8$D&Va$Z(UY0s zOeS;lL%|{kl3A%;S#MlC&Amg&cpiN1r-rvC| zuQ1Fer=aUPn>g6re+%A~4HxgfoyFs_jfT}hvT2|~buTAFG7cgsM5)fELnz*RfYsA+ z%+JjZfW5eCXjGl)8+s)4P|lCQu*F>n-SXLP{rpv`@{BNE{IcsI8B@_npSvh)X*hNpW_TLgr2`Ju@0bJqvCruO={o6E(Z3`5{jw@Hv`M-m z=H><1m4WE;;`c%mkz)x|ObZEnAD_J*B%s8ej2PcmwhgRZado>%)jtid7zm=SE zQ*F%`{_{RP6wdfheSj59}E|h^E{{P*E_)R6H^3NW^13gC8C>dV0CgKv@POF4dxfvY6kSFwxaNHki&!>3-Y^~4kn%F>oC=IgN4BfYTUZZWo z4NgH0Fff*Y6!1`OQEtkV%qBhmGZEnCEqwT{hG--_gp%$=?(C?C;zb^jm66PHQ4|^R zkb*cmi1NcmKm&YfVi#crNDyF;_V&?5G literal 0 HcmV?d00001 diff --git a/admin/public/UEditor/lang/en/images/upload.png b/admin/public/UEditor/lang/en/images/upload.png new file mode 100644 index 0000000000000000000000000000000000000000..7bb15b3d6d6799504cf7093a1600bd7ece0d9ef5 GIT binary patch literal 3941 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 literal 0 HcmV?d00001 diff --git a/admin/public/UEditor/lang/zh-cn/images/copy.png b/admin/public/UEditor/lang/zh-cn/images/copy.png new file mode 100644 index 0000000000000000000000000000000000000000..b2536aac72e763b9a872b507462458ecb96990f0 GIT binary patch literal 4319 zcmV<55Fqb~P)X0ssI2mtLes00009a7bBm000XU z000XU0RWnu7ytkYO=&|zP*7-ZbZ>KLZ*U+5Lu!Sk^o_Z5E4Meg@_7P6crJiNL9pw)e1;Xm069{HJUZAPk55R%$-RIA z6-eL&AQ0xu!e<4=008gy@A0LT~suv4>S3ILP<0Bm`DLLvaF4FK%)Nj?Pt*r}7;7Xa9z9H|HZjR63e zC`Tj$K)V27Re@400>HumpsYY5E(E}?0f1SyGDiY{y#)Yvj#!WnKwtoXnL;eg03bL5 z07D)V%>y7z1E4U{zu>7~aD})?0RX_umCct+(lZpemCzb@^6=o|A>zVpu|i=NDG+7} zl4`aK{0#b-!z=TL9Wt0BGO&T{GJWpjryhdijfaIQ&2!o}p04JRKYg3k&Tf zVxhe-O!X z{f;To;xw^bEES6JSc$k$B2CA6xl)ltA<32E66t?3@gJ7`36pmX0IY^jz)rRYwaaY4 ze(nJRiw;=Qb^t(r^DT@T3y}a2XEZW-_W%Hszxj_qD**t_m!#tW0KDiJT&R>6OvVTR z07RgHDzHHZ48atvzz&?j9lXF70$~P3Knx_nJP<+#`N z#-MZ2bTkiLfR>_b(HgWKJ%F~Nr_oF3b#wrIijHG|(J>BYjM-sajE6;FiC7vY#};Gd zST$CUHDeuEH+B^pz@B062qXfFfD`NpUW5?BY=V%GM_5c)L#QR}BeW8_2v-S%gfYS= zB9o|3v?Y2H`NVi)In3rTB8+ej^> zQ=~r95NVuDChL%G$=>7$vVg20myx%S50Foi`^m%Pw-h?Xh~i8Mq9jtJloCocWk2Nv zrJpiFnV_ms&8eQ$2&#xWpIS+6pmtC%Q-`S&GF4Q#^mhymh7E(qNMa}%YZ-ePrx>>xFPTiH1=E+A$W$=bG8>s^ zm=Bn5Rah$aDtr}@$`X}2l~$F0mFKEdRdZE8)p@E5RI61Ft6o-prbbn>P~)iy)E2AN zsU20jsWz_8Qg>31P|s0cqrPALg8E|(vWA65poU1JRAaZs8I2(p#xiB`SVGovRs-uS zYnV-9TeA7=Om+qP8+I>yOjAR1s%ETak!GFdam@h^# z)@rS0t$wXH+Irf)+G6c;?H29p+V6F6oj{!|o%K3xI`?%6x;DB|x`n#ibhIR?(H}Q3Gzd138Ei2)WAMz7W9Vy`X}HnwgyEn!VS)>mv$8&{hQn>w4zwy3R}t;BYlZQm5)6pty=DfLrs+A-|>>;~;Q z_F?uV_HFjh9n2gO9o9Q^JA86v({H5aB!kjoO6 zc9$1ZZKsN-Zl8L~mE{`ly3)1N^`o1+o7}D0ZPeY&J;i;i`%NyJ8_8Y6J?}yE@b_5a zam?eLr<8@mESk|3$_SkmS{wQ>%qC18))9_|&j{ZT zes8AvOzF(F2#DZEY>2oYX&IRp`F#{ADl)1r>QS^)ba8a|EY_^#S^HO&t^Rgqwv=MZThqqEWH8 zxJo>d=ABlR_Bh=;eM9Tw|Ih34~oTE|= zX_mAr*D$vzw@+p(E0Yc6dFE}(8oqt`+R{gE3x4zjX+Sb3_cYE^= zgB=w+-tUy`ytONMS8KgRef4hA?t0j zufM;t32jm~jUGrkaOInTZ`zyfns>EuS}G30LFK_G-==(f<51|K&cocp&EJ`SxAh3? zNO>#LI=^+SEu(FqJ)ynt=!~PC9bO$rzPJB=?=j6w@a-(u02P7 zaQ)#(uUl{HW%tYNS3ItC^iAtK(eKlL`f9+{bJzISE?u8_z3;~C8@FyI-5j_jy7l;W z_U#vU3hqqYU3!mrul&B+{ptt$59)uk{;_4iZQ%G|z+lhASr6|H35TBkl>gI*;nGLU zN7W-nBaM%pA0HbH8olyl&XeJ%vZoWz%6?Y=dFykl=imL}`%BMQ{Mhgd`HRoLu6e2R za__6DuR6yg#~-}Tc|Gx_{H@O0eebyMy5GmWADJlpK>kqk(fVV@r_fLLKIeS?{4e)} z^ZO;zpECde03c&XQcVB=dL;k=fP(-4`Tqa_faw4Lbua(`>RI+y?e7jKeZ#YO-C z1`J6=K~#9!?3}%C(@Y%4&u2F;yu>k4Rm2omLWoYp`~^)}5EB%sg%QYr!q#+xwG2tv zV2ZKfC6P!RwHEezy>`1j7z|`t zo}Qi#?_E5)9}9!g>-7?ege=P}aC)A1__1@Jg9fzC^SsliPsii&Z{NQ4dObx^Bq=N` zF$ZF@g)wfmTAt^fIddiwiGW3RUH3?tnbBw@Nz&P~XQR>R&!0bebmuyFbZ@uYsZ>f3 zgyC=)i9`-ItqfzTDhPt-c`)EmN<~qeo}T{r@gtacjyu-@o$>ke=NXQa(%s!%#{Cho zTL{{SXx>#P19e*wr&5VX_`w*OMz;O#iFk3 zkk)mbr4d4vN~KsV2J#1PvN|cHp69_t0<3?ixbx^f`HDm$;AEoFsN*;Yq0wjrY!!<| zLP&s4UDsc|dZlR^LTGt;IhV`nx*njg(P&Ugv)L>{Xk%kT*Y#{RYnrB_C|g@wgpfe~ zz)jn>S)J^YEtqoLxejg>Fvg?NNEAiab=l$xrBv7TN~My^<^1^xA)h~gh76WvH5v`z z9>V$Cw{P#?zrV1s5HKE!qEJfL*Vk>^Rulyu5kjEsxKUw<|6PLP&UKhBd3}AI5R%K~ z2qCMhtIT7RN+o}u$B!RFdSPKfRaJ!0_V)Jd?Cf~ugb?5!>bZ66maglYo0|wB%d#L( zsZ`Q5P1p6CH*Z29X9ni?{QkpnKSrzz!e75CCX>mvwY5^IWSVBBQrWXtK(vPR^71nH z9Qv!SUcCzDq*AFUiUQE9s#+)%m|c1I?wx6xrfFs}nMR{Q2w7ZQ1o{ob$mMd^uV3f5 zbA`e>q_f#9BMid!IPPm}Yk+$`pMUxCrC}I_LgDu9+kQ_{uh+}vGEi>YHn@4XWV(0n zUa3^FZF_Zfl@P+7&d<+ZxpD=@3g+EI-Qd7iW{wf@ev1q@!CTjAHS147++`y`xm*S- zVi*R)dQUxj_RQaH{9fGOJ^T&0eEIUFOP6F>-ZL}Do$J4{KCWaki4aPs)9G}&R;vY` zs;W9aKaUVvSy}Nz9H=vJX<1f2p9kyW&!g))EP4j&*>iTm%?#J!%vQlLSe8|*)#~+n zwOS>FG@H$pm6bxFuxG(?xePPW8#itQ)?2{6yzrfC|6!NARAGLW`y8`3Zc+_`fH1_8E$PAQ$6 zo6BS}FJ8RJWHL{lJV6LS5!<$bZ%XOIhYuGQ7oR_Wju2`#oBq+@&6_uxrlr$q*igXe z4@rCj@Z?iY2$`Fk!x&4FB5-d;cys> z#VDn%Rx6cCaoo8MsNrxZ%QD7zYiq0D?~9@si^ak_`@CPl-nD2n+U<6~e*HQe4$qxC z7vAf*nVE1+O-(_7-`w1E94C=T_|Fjizh*{~Bv>Ze+1Y`v7>~zY*A4HiDxa!OzWV)s zEEa3G+dDfu-EOzj>4>6u6ui6RI8#$oFqcRq5;HS1Cr+FQ^^Z6H7yyoIf2hEeNX7sF N002ovPDHLkV1nv#UQ7T0 literal 0 HcmV?d00001 diff --git a/admin/public/UEditor/lang/zh-cn/images/localimage.png b/admin/public/UEditor/lang/zh-cn/images/localimage.png new file mode 100644 index 0000000000000000000000000000000000000000..7303c364318b6ac27dc4a8ae6717124d8dafaff9 GIT binary patch literal 6979 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 O0000字数超出最大允许值,服务器可能拒绝保存!', + 'ok':"确认", + 'cancel':"取消", + 'closeDialog':"关闭对话框", + 'tableDrag':"表格拖动必须引入uiUtils.js文件!", + 'autofloatMsg':"工具栏浮动依赖编辑器UI,您首先需要引入UI文件!", + 'loadconfigError': '获取后台配置项请求出错,上传功能将不能正常使用!', + 'loadconfigFormatError': '后台配置项返回格式出错,上传功能将不能正常使用!', + 'loadconfigHttpError': '请求后台配置项http错误,上传功能将不能正常使用!', + 'snapScreen_plugin':{ + 'browserMsg':"仅支持IE浏览器!", + 'callBackErrorMsg':"服务器返回数据有误,请检查配置项之后重试。", + 'uploadErrorMsg':"截图上传失败,请检查服务器端环境! " + }, + 'insertcode':{ + 'as3':'ActionScript 3', + 'bash':'Bash/Shell', + 'cpp':'C/C++', + 'css':'CSS', + 'cf':'ColdFusion', + 'c#':'C#', + 'delphi':'Delphi', + 'diff':'Diff', + 'erlang':'Erlang', + 'groovy':'Groovy', + 'html':'HTML', + 'java':'Java', + 'jfx':'JavaFX', + 'js':'JavaScript', + 'pl':'Perl', + 'php':'PHP', + 'plain':'Plain Text', + 'ps':'PowerShell', + 'python':'Python', + 'ruby':'Ruby', + 'scala':'Scala', + 'sql':'SQL', + 'vb':'Visual Basic', + 'xml':'XML' + }, + 'confirmClear':"确定清空当前文档么?", + 'contextMenu':{ + 'delete':"删除", + 'selectall':"全选", + 'deletecode':"删除代码", + 'cleardoc':"清空文档", + 'confirmclear':"确定清空当前文档么?", + 'unlink':"删除超链接", + 'paragraph':"段落格式", + 'edittable':"表格属性", + 'aligntd':"单元格对齐方式", + 'aligntable':'表格对齐方式', + 'tableleft':'左浮动', + 'tablecenter':'居中显示', + 'tableright':'右浮动', + 'edittd':"单元格属性", + 'setbordervisible':'设置表格边线可见', + 'justifyleft':'左对齐', + 'justifyright':'右对齐', + 'justifycenter':'居中对齐', + 'justifyjustify':'两端对齐', + 'table':"表格", + 'inserttable':'插入表格', + 'deletetable':"删除表格", + 'insertparagraphbefore':"前插入段落", + 'insertparagraphafter':'后插入段落', + 'deleterow':"删除当前行", + 'deletecol':"删除当前列", + 'insertrow':"前插入行", + 'insertcol':"左插入列", + 'insertrownext':'后插入行', + 'insertcolnext':'右插入列', + 'insertcaption':'插入表格名称', + 'deletecaption':'删除表格名称', + 'inserttitle':'插入表格标题行', + 'deletetitle':'删除表格标题行', + 'inserttitlecol':'插入表格标题列', + 'deletetitlecol':'删除表格标题列', + 'averageDiseRow':'平均分布各行', + 'averageDisCol':'平均分布各列', + 'mergeright':"向右合并", + 'mergeleft':"向左合并", + 'mergedown':"向下合并", + 'mergecells':"合并单元格", + 'splittocells':"完全拆分单元格", + 'splittocols':"拆分成列", + 'splittorows':"拆分成行", + 'tablesort':'表格排序', + 'enablesort':'设置表格可排序', + 'disablesort':'取消表格可排序', + 'reversecurrent':'逆序当前', + 'orderbyasc':'按ASCII字符升序', + 'reversebyasc':'按ASCII字符降序', + 'orderbynum':'按数值大小升序', + 'reversebynum':'按数值大小降序', + 'borderbk':'边框底纹', + 'setcolor':'表格隔行变色', + 'unsetcolor':'取消表格隔行变色', + 'setbackground':'选区背景隔行', + 'unsetbackground':'取消选区背景', + 'redandblue':'红蓝相间', + 'threecolorgradient':'三色渐变', + 'copy':"复制(Ctrl + c)", + 'copymsg': "浏览器不支持,请使用 'Ctrl + c'", + 'paste':"粘贴(Ctrl + v)", + 'pastemsg': "浏览器不支持,请使用 'Ctrl + v'" + }, + 'copymsg': "浏览器不支持,请使用 'Ctrl + c'", + 'pastemsg': "浏览器不支持,请使用 'Ctrl + v'", + 'anthorMsg':"链接", + 'clearColor':'清空颜色', + 'standardColor':'标准颜色', + 'themeColor':'主题颜色', + 'property':'属性', + 'default':'默认', + 'modify':'修改', + 'justifyleft':'左对齐', + 'justifyright':'右对齐', + 'justifycenter':'居中', + 'justify':'默认', + 'clear':'清除', + 'anchorMsg':'锚点', + 'delete':'删除', + 'clickToUpload':"点击上传", + 'unset':'尚未设置语言文件', + 't_row':'行', + 't_col':'列', + 'more':'更多', + 'pasteOpt':'粘贴选项', + 'pasteSourceFormat':"保留源格式", + 'tagFormat':'只保留标签', + 'pasteTextFormat':'只保留文本', + 'autoTypeSet':{ + 'mergeLine':"合并空行", + 'delLine':"清除空行", + 'removeFormat':"清除格式", + 'indent':"首行缩进", + 'alignment':"对齐方式", + 'imageFloat':"图片浮动", + 'removeFontsize':"清除字号", + 'removeFontFamily':"清除字体", + 'removeHtml':"清除冗余HTML代码", + 'pasteFilter':"粘贴过滤", + 'run':"执行", + 'symbol':'符号转换', + 'bdc2sb':'全角转半角', + 'tobdc':'半角转全角' + }, + + 'background':{ + 'static':{ + 'lang_background_normal':'背景设置', + 'lang_background_local':'在线图片', + 'lang_background_set':'选项', + 'lang_background_none':'无背景色', + 'lang_background_colored':'有背景色', + 'lang_background_color':'颜色设置', + 'lang_background_netimg':'网络图片', + 'lang_background_align':'对齐方式', + 'lang_background_position':'精确定位', + 'repeatType':{'options':["居中", "横向重复", "纵向重复", "平铺","自定义"]} + + }, + 'noUploadImage':"当前未上传过任何图片!", + 'toggleSelect':"单击可切换选中状态\n原图尺寸: " + }, + //===============dialog i18N======================= + 'insertimage':{ + 'static':{ + 'lang_tab_remote':"插入图片", //节点 + 'lang_tab_upload':"本地上传", + 'lang_tab_online':"在线管理", + 'lang_tab_search':"图片搜索", + 'lang_input_url':"地 址:", + 'lang_input_size':"大 小:", + 'lang_input_width':"宽度", + 'lang_input_height':"高度", + 'lang_input_border':"边 框:", + 'lang_input_vhspace':"边 距:", + 'lang_input_title':"描 述:", + 'lang_input_align':'图片浮动方式:', + 'lang_imgLoading':" 图片加载中……", + 'lang_start_upload':"开始上传", + 'lock':{'title':"锁定宽高比例"}, //属性 + 'searchType':{'title':"图片类型", 'options':["新闻", "壁纸", "表情", "头像"]}, //select的option + 'searchTxt':{'value':"请输入搜索关键词"}, + 'searchBtn':{'value':"百度一下"}, + 'searchReset':{'value':"清空搜索"}, + 'noneAlign':{'title':'无浮动'}, + 'leftAlign':{'title':'左浮动'}, + 'rightAlign':{'title':'右浮动'}, + 'centerAlign':{'title':'居中独占一行'} + }, + 'uploadSelectFile':'点击选择图片', + 'uploadAddFile':'继续添加', + 'uploadStart':'开始上传', + 'uploadPause':'暂停上传', + 'uploadContinue':'继续上传', + 'uploadRetry':'重试上传', + 'uploadDelete':'删除', + 'uploadTurnLeft':'向左旋转', + 'uploadTurnRight':'向右旋转', + 'uploadPreview':'预览中', + 'uploadNoPreview':'不能预览', + 'updateStatusReady': '选中_张图片,共_KB。', + 'updateStatusConfirm': '已成功上传_张照片,_张照片上传失败', + 'updateStatusFinish': '共_张(_KB),_张上传成功', + 'updateStatusError': ',_张上传失败。', + 'errorNotSupport': 'WebUploader 不支持您的浏览器!如果你使用的是IE浏览器,请尝试升级 flash 播放器。', + 'errorLoadConfig': '后端配置项没有正常加载,上传插件不能正常使用!', + 'errorExceedSize':'文件大小超出', + 'errorFileType':'文件格式不允许', + 'errorInterrupt':'文件传输中断', + 'errorUploadRetry':'上传失败,请重试', + 'errorHttp':'http请求错误', + 'errorServerUpload':'服务器返回出错', + 'remoteLockError':"宽高不正确,不能所定比例", + 'numError':"请输入正确的长度或者宽度值!例如:123,400", + 'imageUrlError':"不允许的图片格式或者图片域!", + 'imageLoadError':"图片加载失败!请检查链接地址或网络状态!", + 'searchRemind':"请输入搜索关键词", + 'searchLoading':"图片加载中,请稍后……", + 'searchRetry':" :( ,抱歉,没有找到图片!请重试一次!" + }, + 'attachment':{ + 'static':{ + 'lang_tab_upload': '上传附件', + 'lang_tab_online': '在线附件', + 'lang_start_upload':"开始上传", + 'lang_drop_remind':"可以将文件拖到这里,单次最多可选100个文件" + }, + 'uploadSelectFile':'点击选择文件', + 'uploadAddFile':'继续添加', + 'uploadStart':'开始上传', + 'uploadPause':'暂停上传', + 'uploadContinue':'继续上传', + 'uploadRetry':'重试上传', + 'uploadDelete':'删除', + 'uploadTurnLeft':'向左旋转', + 'uploadTurnRight':'向右旋转', + 'uploadPreview':'预览中', + 'updateStatusReady': '选中_个文件,共_KB。', + 'updateStatusConfirm': '已成功上传_个文件,_个文件上传失败', + 'updateStatusFinish': '共_个(_KB),_个上传成功', + 'updateStatusError': ',_张上传失败。', + 'errorNotSupport': 'WebUploader 不支持您的浏览器!如果你使用的是IE浏览器,请尝试升级 flash 播放器。', + 'errorLoadConfig': '后端配置项没有正常加载,上传插件不能正常使用!', + 'errorExceedSize':'文件大小超出', + 'errorFileType':'文件格式不允许', + 'errorInterrupt':'文件传输中断', + 'errorUploadRetry':'上传失败,请重试', + 'errorHttp':'http请求错误', + 'errorServerUpload':'服务器返回出错' + }, + 'insertvideo':{ + 'static':{ + 'lang_tab_insertV':"插入视频", + 'lang_tab_searchV':"搜索视频", + 'lang_tab_uploadV':"上传视频", + 'lang_video_url':"视频网址", + 'lang_video_size':"视频尺寸", + 'lang_videoW':"宽度", + 'lang_videoH':"高度", + 'lang_alignment':"对齐方式", + 'videoSearchTxt':{'value':"请输入搜索关键字!"}, + 'videoType':{'options':["全部", "热门", "娱乐", "搞笑", "体育", "科技", "综艺"]}, + 'videoSearchBtn':{'value':"百度一下"}, + 'videoSearchReset':{'value':"清空结果"}, + + 'lang_input_fileStatus':' 当前未上传文件', + 'startUpload':{'style':"background:url(upload.png) no-repeat;"}, + + 'lang_upload_size':"视频尺寸", + 'lang_upload_width':"宽度", + 'lang_upload_height':"高度", + 'lang_upload_alignment':"对齐方式", + 'lang_format_advice':"建议使用mp4格式." + + }, + 'numError':"请输入正确的数值,如123,400", + 'floatLeft':"左浮动", + 'floatRight':"右浮动", + '"default"':"默认", + 'block':"独占一行", + 'urlError':"输入的视频地址有误,请检查后再试!", + 'loading':"  视频加载中,请等待……", + 'clickToSelect':"点击选中", + 'goToSource':'访问源视频', + 'noVideo':"    抱歉,找不到对应的视频,请重试!", + + 'browseFiles':'浏览文件', + 'uploadSuccess':'上传成功!', + 'delSuccessFile':'从成功队列中移除', + 'delFailSaveFile':'移除保存失败文件', + 'statusPrompt':' 个文件已上传! ', + 'flashVersionError':'当前Flash版本过低,请更新FlashPlayer后重试!', + 'flashLoadingError':'Flash加载失败!请检查路径或网络状态', + 'fileUploadReady':'等待上传……', + 'delUploadQueue':'从上传队列中移除', + 'limitPrompt1':'单次不能选择超过', + 'limitPrompt2':'个文件!请重新选择!', + 'delFailFile':'移除失败文件', + 'fileSizeLimit':'文件大小超出限制!', + 'emptyFile':'空文件无法上传!', + 'fileTypeError':'文件类型不允许!', + 'unknownError':'未知错误!', + 'fileUploading':'上传中,请等待……', + 'cancelUpload':'取消上传', + 'netError':'网络错误', + 'failUpload':'上传失败!', + 'serverIOError':'服务器IO错误!', + 'noAuthority':'无权限!', + 'fileNumLimit':'上传个数限制', + 'failCheck':'验证失败,本次上传被跳过!', + 'fileCanceling':'取消中,请等待……', + 'stopUploading':'上传已停止……', + + 'uploadSelectFile':'点击选择文件', + 'uploadAddFile':'继续添加', + 'uploadStart':'开始上传', + 'uploadPause':'暂停上传', + 'uploadContinue':'继续上传', + 'uploadRetry':'重试上传', + 'uploadDelete':'删除', + 'uploadTurnLeft':'向左旋转', + 'uploadTurnRight':'向右旋转', + 'uploadPreview':'预览中', + 'updateStatusReady': '选中_个文件,共_KB。', + 'updateStatusConfirm': '成功上传_个,_个失败', + 'updateStatusFinish': '共_个(_KB),_个成功上传', + 'updateStatusError': ',_张上传失败。', + 'errorNotSupport': 'WebUploader 不支持您的浏览器!如果你使用的是IE浏览器,请尝试升级 flash 播放器。', + 'errorLoadConfig': '后端配置项没有正常加载,上传插件不能正常使用!', + 'errorExceedSize':'文件大小超出', + 'errorFileType':'文件格式不允许', + 'errorInterrupt':'文件传输中断', + 'errorUploadRetry':'上传失败,请重试', + 'errorHttp':'http请求错误', + 'errorServerUpload':'服务器返回出错' + }, + 'webapp':{ + 'tip1':"本功能由百度APP提供,如看到此页面,请各位站长首先申请百度APPKey!", + 'tip2':"申请完成之后请至ueditor.config.js中配置获得的appkey! ", + 'applyFor':"点此申请", + 'anthorApi':"百度API" + }, + 'template':{ + 'static':{ + 'lang_template_bkcolor':'背景颜色', + 'lang_template_clear' : '保留原有内容', + 'lang_template_select' : '选择模板' + }, + 'blank':"空白文档", + 'blog':"博客文章", + 'resume':"个人简历", + 'richText':"图文混排", + 'sciPapers':"科技论文" + + + }, + 'scrawl':{ + 'static':{ + 'lang_input_previousStep':"上一步", + 'lang_input_nextsStep':"下一步", + 'lang_input_clear':'清空', + 'lang_input_addPic':'添加背景', + 'lang_input_ScalePic':'缩放背景', + 'lang_input_removePic':'删除背景', + 'J_imgTxt':{title:'添加背景图片'} + }, + 'noScarwl':"尚未作画,白纸一张~", + 'scrawlUpLoading':"涂鸦上传中,别急哦~", + 'continueBtn':"继续", + 'imageError':"糟糕,图片读取失败了!", + 'backgroundUploading':'背景图片上传中,别急哦~' + }, + 'music':{ + 'static':{ + 'lang_input_tips':"输入歌手/歌曲/专辑,搜索您感兴趣的音乐!", + 'J_searchBtn':{value:'搜索歌曲'} + }, + 'emptyTxt':'未搜索到相关音乐结果,请换一个关键词试试。', + 'chapter':'歌曲', + 'singer':'歌手', + 'special':'专辑', + 'listenTest':'试听' + }, + 'anchor':{ + 'static':{ + 'lang_input_anchorName':'锚点名字:' + } + }, + 'charts':{ + 'static':{ + 'lang_data_source':'数据源:', + 'lang_chart_format': '图表格式:', + 'lang_data_align': '数据对齐方式', + 'lang_chart_align_same': '数据源与图表X轴Y轴一致', + 'lang_chart_align_reverse': '数据源与图表X轴Y轴相反', + 'lang_chart_title': '图表标题', + 'lang_chart_main_title': '主标题:', + 'lang_chart_sub_title': '子标题:', + 'lang_chart_x_title': 'X轴标题:', + 'lang_chart_y_title': 'Y轴标题:', + 'lang_chart_tip': '提示文字', + 'lang_cahrt_tip_prefix': '提示文字前缀:', + 'lang_cahrt_tip_description': '仅饼图有效, 当鼠标移动到饼图中相应的块上时,提示框内的文字的前缀', + 'lang_chart_data_unit': '数据单位', + 'lang_chart_data_unit_title': '单位:', + 'lang_chart_data_unit_description': '显示在每个数据点上的数据的单位, 比如: 温度的单位 ℃', + 'lang_chart_type': '图表类型:', + 'lang_prev_btn': '上一个', + 'lang_next_btn': '下一个' + } + }, + 'emotion':{ + 'static':{ + 'lang_input_choice':'精选', + 'lang_input_Tuzki':'兔斯基', + 'lang_input_BOBO':'BOBO', + 'lang_input_lvdouwa':'绿豆蛙', + 'lang_input_babyCat':'baby猫', + 'lang_input_bubble':'泡泡', + 'lang_input_youa':'有啊' + } + }, + 'gmap':{ + 'static':{ + 'lang_input_address':'地址', + 'lang_input_search':'搜索', + 'address':{value:"北京"} + }, + searchError:'无法定位到该地址!' + }, + 'help':{ + 'static':{ + 'lang_input_about':'关于UEditor', + 'lang_input_shortcuts':'快捷键', + 'lang_input_introduction':'UEditor是由百度web前端研发部开发的所见即所得富文本web编辑器,具有轻量,可定制,注重用户体验等特点。开源基于BSD协议,允许自由使用和修改代码。', + 'lang_Txt_shortcuts':'快捷键', + 'lang_Txt_func':'功能', + 'lang_Txt_bold':'给选中字设置为加粗', + 'lang_Txt_copy':'复制选中内容', + 'lang_Txt_cut':'剪切选中内容', + 'lang_Txt_Paste':'粘贴', + 'lang_Txt_undo':'重新执行上次操作', + 'lang_Txt_redo':'撤销上一次操作', + 'lang_Txt_italic':'给选中字设置为斜体', + 'lang_Txt_underline':'给选中字加下划线', + 'lang_Txt_selectAll':'全部选中', + 'lang_Txt_visualEnter':'软回车', + 'lang_Txt_fullscreen':'全屏' + } + }, + 'insertframe':{ + 'static':{ + 'lang_input_address':'地址:', + 'lang_input_width':'宽度:', + 'lang_input_height':'高度:', + 'lang_input_isScroll':'允许滚动条:', + 'lang_input_frameborder':'显示框架边框:', + 'lang_input_alignMode':'对齐方式:', + 'align':{title:"对齐方式", options:["默认", "左对齐", "右对齐", "居中"]} + }, + 'enterAddress':'请输入地址!' + }, + 'link':{ + 'static':{ + 'lang_input_text':'文本内容:', + 'lang_input_url':'链接地址:', + 'lang_input_title':'标题:', + 'lang_input_target':'是否在新窗口打开:' + }, + 'validLink':'只支持选中一个链接时生效', + 'httpPrompt':'您输入的超链接中不包含http等协议名称,默认将为您添加http://前缀' + }, + 'map':{ + 'static':{ + lang_city:"城市", + lang_address:"地址", + city:{value:"北京"}, + lang_search:"搜索", + lang_dynamicmap:"插入动态地图" + }, + cityMsg:"请选择城市", + errorMsg:"抱歉,找不到该位置!" + }, + 'searchreplace':{ + 'static':{ + lang_tab_search:"查找", + lang_tab_replace:"替换", + lang_search1:"查找", + lang_search2:"查找", + lang_replace:"替换", + lang_searchReg:'支持正则表达式,添加前后斜杠标示为正则表达式,例如“/表达式/”', + lang_searchReg1:'支持正则表达式,添加前后斜杠标示为正则表达式,例如“/表达式/”', + lang_case_sensitive1:"区分大小写", + lang_case_sensitive2:"区分大小写", + nextFindBtn:{value:"下一个"}, + preFindBtn:{value:"上一个"}, + nextReplaceBtn:{value:"下一个"}, + preReplaceBtn:{value:"上一个"}, + repalceBtn:{value:"替换"}, + repalceAllBtn:{value:"全部替换"} + }, + getEnd:"已经搜索到文章末尾!", + getStart:"已经搜索到文章头部", + countMsg:"总共替换了{#count}处!" + }, + 'snapscreen':{ + 'static':{ + lang_showMsg:"截图功能需要首先安装UEditor截图插件! ", + lang_download:"点此下载", + lang_step1:"第一步,下载UEditor截图插件并运行安装。", + lang_step2:"第二步,插件安装完成后即可使用,如不生效,请重启浏览器后再试!" + } + }, + 'spechars':{ + 'static':{}, + tsfh:"特殊字符", + lmsz:"罗马字符", + szfh:"数学字符", + rwfh:"日文字符", + xlzm:"希腊字母", + ewzm:"俄文字符", + pyzm:"拼音字母", + yyyb:"英语音标", + zyzf:"其他" + }, + 'edittable':{ + 'static':{ + 'lang_tableStyle':'表格样式', + 'lang_insertCaption':'添加表格名称行', + 'lang_insertTitle':'添加表格标题行', + 'lang_insertTitleCol':'添加表格标题列', + 'lang_orderbycontent':"使表格内容可排序", + 'lang_tableSize':'自动调整表格尺寸', + 'lang_autoSizeContent':'按表格文字自适应', + 'lang_autoSizePage':'按页面宽度自适应', + 'lang_example':'示例', + 'lang_borderStyle':'表格边框', + 'lang_color':'颜色:' + }, + captionName:'表格名称', + titleName:'标题', + cellsName:'内容', + errorMsg:'有合并单元格,不可排序' + }, + 'edittip':{ + 'static':{ + lang_delRow:'删除整行', + lang_delCol:'删除整列' + } + }, + 'edittd':{ + 'static':{ + lang_tdBkColor:'背景颜色:' + } + }, + 'formula':{ + 'static':{ + } + }, + 'wordimage':{ + 'static':{ + lang_resave:"转存步骤", + uploadBtn:{src:"upload.png",alt:"上传"}, + clipboard:{style:"background: url(copy.png) -153px -1px no-repeat;"}, + lang_step:"1、点击顶部复制按钮,将地址复制到剪贴板;2、点击添加照片按钮,在弹出的对话框中使用Ctrl+V粘贴地址;3、点击打开后选择图片上传流程。" + }, + 'fileType':"图片", + 'flashError':"FLASH初始化失败,请检查FLASH插件是否正确安装!", + 'netError':"网络连接错误,请重试!", + 'copySuccess':"图片地址已经复制!", + 'flashI18n':{} //留空默认中文 + }, + 'autosave': { + 'saving':'保存中...', + 'success':'本地保存成功' + } +}; diff --git a/admin/public/UEditor/themes/default/css/ueditor.css b/admin/public/UEditor/themes/default/css/ueditor.css new file mode 100644 index 00000000..519ee205 --- /dev/null +++ b/admin/public/UEditor/themes/default/css/ueditor.css @@ -0,0 +1,1904 @@ +/*基础UI构建 +*/ +/* common layer */ +.edui-default .edui-box { + border: none; + padding: 0; + margin: 0; + overflow: hidden; +} + +.edui-default a.edui-box { + display: block; + text-decoration: none; + color: black; +} + +.edui-default a.edui-box:hover { + text-decoration: none; +} + +.edui-default a.edui-box:active { + text-decoration: none; +} + +.edui-default table.edui-box { + border-collapse: collapse; +} + +.edui-default ul.edui-box { + list-style-type: none; +} + +div.edui-box { + position: relative; + display: -moz-inline-box !important; + display: inline-block !important; + vertical-align: top; +} + +.edui-default .edui-clearfix { + zoom: 1 +} + +.edui-default .edui-clearfix:after { + content: '\20'; + display: block; + clear: both; +} + + * html div.edui-box { + display: inline !important; +} + +*:first-child+html div.edui-box { + display: inline !important; +} + +/* control layout */ +.edui-default .edui-button-body, .edui-splitbutton-body, .edui-menubutton-body, .edui-combox-body { + position: relative; +} + +.edui-default .edui-popup { + position: absolute; + -webkit-user-select: none; + -moz-user-select: none; +} + +.edui-default .edui-popup .edui-shadow { + position: absolute; + z-index: -1; +} + +.edui-default .edui-popup .edui-bordereraser { + position: absolute; + overflow: hidden; +} + +.edui-default .edui-tablepicker .edui-canvas { + position: relative; +} + +.edui-default .edui-tablepicker .edui-canvas .edui-overlay { + position: absolute; +} + +.edui-default .edui-dialog-modalmask, .edui-dialog-dragmask { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; +} + +.edui-default .edui-toolbar { + position: relative; +} + +/* + * default theme + */ +.edui-default .edui-label { + cursor: default; +} + +.edui-default span.edui-clickable { + color: blue; + cursor: pointer; + text-decoration: underline; +} + +.edui-default span.edui-unclickable { + color: gray; + cursor: default; +} +/* 工具栏 */ +.edui-default .edui-toolbar { + cursor: default; + -webkit-user-select: none; + -moz-user-select: none; + padding: 1px; + overflow: hidden; /*全屏下单独一行不占位*/ + zoom: 1; + width:auto; + height:auto; +} + +.edui-default .edui-toolbar .edui-button, +.edui-default .edui-toolbar .edui-splitbutton, +.edui-default .edui-toolbar .edui-menubutton, +.edui-default .edui-toolbar .edui-combox { + margin: 1px; +} +/*UI工具栏、编辑区域、底部*/ +.edui-default .edui-editor { + z-index: 1 !important; + border: 1px solid #d4d4d4; + background-color: white; + position: relative; + overflow: visible; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} +.edui-editor div{ + width:auto; + height:auto; +} +.edui-default .edui-editor-toolbarbox { + position: relative; + zoom: 1; + -webkit-box-shadow:0 1px 4px rgba(204, 204, 204, 0.6); + -moz-box-shadow:0 1px 4px rgba(204, 204, 204, 0.6); + box-shadow:0 1px 4px rgba(204, 204, 204, 0.6); + border-top-left-radius:2px; + border-top-right-radius:2px; +} + +.edui-default .edui-editor-toolbarboxouter { + border-bottom: 1px solid #d4d4d4; + background-color: #fafafa; + background-image: -moz-linear-gradient(top, #ffffff, #f2f2f2); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#f2f2f2)); + background-image: -webkit-linear-gradient(top, #ffffff, #f2f2f2); + background-image: -o-linear-gradient(top, #ffffff, #f2f2f2); + background-image: linear-gradient(to bottom, #ffffff, #f2f2f2); + background-repeat: repeat-x; + /*border: 1px solid #d4d4d4;*/ + -webkit-border-radius: 4px 4px 0 0; + -moz-border-radius: 4px 4px 0 0; + border-radius: 4px 4px 0 0; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff2f2f2', GradientType=0); + *zoom: 1; + -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); + -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); + box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); +} + +.edui-default .edui-editor-toolbarboxinner { + padding: 2px; +} + +.edui-default .edui-editor-iframeholder { + position: relative; + /*for fix ie6 toolbarmsg under iframe bug. relative -> static */ + /*_position: static !important;* +} + +.edui-default .edui-editor-iframeholder textarea { + font-family: consolas, "Courier New", "lucida console", monospace; + font-size: 12px; + line-height: 18px; +} + +.edui-default .edui-editor-bottombar { + /*border-top: 1px solid #ccc;*/ + /*height: 20px;*/ + /*width: 40%;*/ + /*float: left;*/ + /*overflow: hidden;*/ +} + +.edui-default .edui-editor-bottomContainer { + overflow: hidden; +} + +.edui-default .edui-editor-bottomContainer table { + width: 100%; + height: 0; + overflow: hidden; + border-spacing: 0; +} + +.edui-default .edui-editor-bottomContainer td { + white-space: nowrap; + border-top: 1px solid #ccc; + line-height: 20px; + font-size: 12px; + font-family: Arial, Helvetica, Tahoma, Verdana, Sans-Serif; +} + +.edui-default .edui-editor-wordcount { + text-align: right; + margin-right: 5px; + color: #aaa; +} +.edui-default .edui-editor-scale { + width: 12px; +} +.edui-default .edui-editor-scale .edui-editor-icon { + float: right; + width: 100%; + height: 12px; + margin-top: 10px; + background: url(../images/scale.png) no-repeat; + cursor: se-resize; +} +.edui-default .edui-editor-breadcrumb { + margin: 2px 0 0 3px; +} + +.edui-default .edui-editor-breadcrumb span { + cursor: pointer; + text-decoration: underline; + color: blue; +} + +.edui-default .edui-toolbar .edui-for-fullscreen { + float: right; +} + +.edui-default .edui-bubble .edui-popup-content { + border: 1px solid #DCAC6C; + background-color: #fff6d9; + padding: 5px; + font-size: 10pt; + font-family: "宋体"; +} + +.edui-default .edui-bubble .edui-shadow { + /*box-shadow: 1px 1px 3px #818181;*/ + /*-webkit-box-shadow: 2px 2px 3px #818181;*/ + /*-moz-box-shadow: 2px 2px 3px #818181;*/ + /*filter: progid:DXImageTransform.Microsoft.Blur(PixelRadius = '2', MakeShadow = 'true', ShadowOpacity = '0.5');*/ +} + +.edui-default .edui-editor-toolbarmsg { + background-color: #FFF6D9; + border-bottom: 1px solid #ccc; + position: absolute; + bottom: -25px; + left: 0; + z-index: 1009; + width: 99.9%; +} + +.edui-default .edui-editor-toolbarmsg-upload { + font-size: 14px; + color: blue; + width: 100px; + height: 16px; + line-height: 16px; + cursor: pointer; + position: absolute; + top: 5px; + left: 350px; +} + +.edui-default .edui-editor-toolbarmsg-label { + font-size: 12px; + line-height: 16px; + padding: 4px; +} + +.edui-default .edui-editor-toolbarmsg-close { + float: right; + width: 20px; + height: 16px; + line-height: 16px; + cursor: pointer; + color: red; +} +/*可选中菜单按钮*/ +.edui-default .edui-list .edui-bordereraser { + display: none; +} + +.edui-default .edui-listitem { + padding: 1px; + white-space: nowrap; +} + +.edui-default .edui-list .edui-state-hover { + position: relative; + background-color: #fff5d4; + border: 1px solid #dcac6c; + padding: 0; +} + +.edui-default .edui-for-fontfamily .edui-listitem-label { + min-width: 130px; + _width: 120px; + font-size: 12px; + height: 22px; + line-height: 22px; + padding-left: 5px; +} +.edui-default .edui-for-insertcode .edui-listitem-label { + min-width: 120px; + _width: 120px; + font-size: 12px; + height: 22px; + line-height: 22px; + padding-left: 5px; +} +.edui-default .edui-for-underline .edui-listitem-label { + min-width: 120px; + _width: 120px; + padding: 3px 5px; + font-size: 12px; +} + +.edui-default .edui-for-fontsize .edui-listitem-label { + min-width: 120px; + _width: 120px; + padding: 3px 5px; + +} + +.edui-default .edui-for-paragraph .edui-listitem-label { + min-width: 200px; + _width: 200px; + padding: 2px 5px; +} + +.edui-default .edui-for-rowspacingtop .edui-listitem-label, +.edui-default .edui-for-rowspacingbottom .edui-listitem-label { + min-width: 53px; + _width: 53px; + padding: 2px 5px; +} + +.edui-default .edui-for-lineheight .edui-listitem-label { + min-width: 53px; + _width: 53px; + padding: 2px 5px; +} + +.edui-default .edui-for-customstyle .edui-listitem-label { + min-width: 200px; + _width: 200px; + width: 200px !important; + padding: 2px 5px; +} +/* 可选中按钮弹出菜单*/ +.edui-default .edui-menu { + z-index: 3000; +} + +.edui-default .edui-menu .edui-popup-content { + padding: 3px; +} + +.edui-default .edui-menu-body { + _width: 150px; + min-width: 170px; + background: url("../images/sparator_v.png") repeat-y 25px; +} + +.edui-default .edui-menuitem-body { +} + +.edui-default .edui-menuitem { + height: 20px; + cursor: default; + vertical-align: top; +} + +.edui-default .edui-menuitem .edui-icon { + width: 20px !important; + height: 20px !important; + background: url(../images/icons.png) 0 -4000px; + background: url(../images/icons.gif) 0 -4000px\9; +} + +.edui-default .edui-menuitem .edui-label { + font-size: 12px; + line-height: 20px; + height: 20px; + padding-left: 10px; +} + +.edui-default .edui-state-checked .edui-menuitem-body { + background: url("../images/icons-all.gif") no-repeat 6px -205px; +} + +.edui-default .edui-state-disabled .edui-menuitem-label { + color: gray; +} + + +/*不可选中菜单按钮 */ +.edui-default .edui-toolbar .edui-combox-body .edui-button-body { + width: 60px; + font-size: 12px; + height: 20px; + line-height: 20px; + padding-left: 5px; + white-space: nowrap; + margin: 0 3px 0 0; +} + +.edui-default .edui-toolbar .edui-combox-body .edui-arrow { + background: url(../images/icons.png) -741px 0; + _background: url(../images/icons.gif) -741px 0; + height: 20px; + width: 9px; +} + +.edui-default .edui-toolbar .edui-combox .edui-combox-body { + border: 1px solid #CCC; + background-color: white; + border-radius: 2px; + -webkit-border-radius: 2px; + -moz-border-radius: 2px; +} + +.edui-default .edui-toolbar .edui-combox-body .edui-splitborder { + display: none; +} + +.edui-default .edui-toolbar .edui-combox-body .edui-arrow { + border-left: 1px solid #CCC; +} + +.edui-default .edui-toolbar .edui-state-hover .edui-combox-body { + background-color: #fff5d4; + border: 1px solid #dcac6c; +} + +.edui-default .edui-toolbar .edui-state-hover .edui-combox-body .edui-arrow { + border-left: 1px solid #dcac6c; +} + +.edui-default .edui-toolbar .edui-state-checked .edui-combox-body { + background-color: #FFE69F; + border: 1px solid #DCAC6C; +} + +.edui-toolbar .edui-state-checked .edui-combox-body .edui-arrow { + border-left: 1px solid #DCAC6C; +} + +.edui-toolbar .edui-state-disabled .edui-combox-body { + background-color: #F0F0EE; + opacity: 0.3; + filter: alpha(opacity = 30); +} + +.edui-toolbar .edui-state-opened .edui-combox-body { + background-color: white; + border: 1px solid gray; +} +/*普通按钮样式及状态*/ +.edui-default .edui-toolbar .edui-button .edui-icon, +.edui-default .edui-toolbar .edui-menubutton .edui-icon, +.edui-default .edui-toolbar .edui-splitbutton .edui-icon { + height: 20px !important; + width: 20px !important; + background-image: url(http://cdn.oss.9gt.net/prov1.1/1/icons.png); + background-image: url(../images/icons.gif) \9; +} + +.edui-default .edui-toolbar .edui-button .edui-button-wrap { + padding: 1px; + position: relative; +} + +.edui-default .edui-toolbar .edui-button .edui-state-hover .edui-button-wrap { + background-color: #fff5d4; + padding: 0; + border: 1px solid #dcac6c; +} + +.edui-default .edui-toolbar .edui-button .edui-state-checked .edui-button-wrap { + background-color: #ffe69f; + padding: 0; + border: 1px solid #dcac6c; + border-radius: 2px; + -webkit-border-radius: 2px; + -moz-border-radius: 2px; +} + +.edui-default .edui-toolbar .edui-button .edui-state-active .edui-button-wrap { + background-color: #ffffff; + padding: 0; + border: 1px solid gray; +} +.edui-default .edui-toolbar .edui-state-disabled .edui-label { + color: #ccc; +} +.edui-default .edui-toolbar .edui-state-disabled .edui-icon { + opacity: 0.3; + filter: alpha(opacity = 30); +} + +/* toolbar icons */ +.edui-default .edui-for-undo .edui-icon { + background-position: -160px 0; +} + +.edui-default .edui-for-redo .edui-icon { + background-position: -100px 0; +} + +.edui-default .edui-for-bold .edui-icon { + background-position: 0 0; +} + +.edui-default .edui-for-italic .edui-icon { + background-position: -60px 0; +} + +.edui-default .edui-for-fontborder .edui-icon { + background-position:-160px -40px; +} +.edui-default .edui-for-underline .edui-icon { + background-position: -140px 0; +} + +.edui-default .edui-for-strikethrough .edui-icon { + background-position: -120px 0; +} + +.edui-default .edui-for-subscript .edui-icon { + background-position: -600px 0; +} + +.edui-default .edui-for-superscript .edui-icon { + background-position: -620px 0; +} + +.edui-default .edui-for-blockquote .edui-icon { + background-position: -220px 0; +} + +.edui-default .edui-for-forecolor .edui-icon { + background-position: -720px 0; +} + +.edui-default .edui-for-backcolor .edui-icon { + background-position: -760px 0; +} + +.edui-default .edui-for-inserttable .edui-icon { + background-position: -580px -20px; +} + +.edui-default .edui-for-autotypeset .edui-icon { + background-position: -640px -40px; +} + +.edui-default .edui-for-justifyleft .edui-icon { + background-position: -460px 0; +} + +.edui-default .edui-for-justifycenter .edui-icon { + background-position: -420px 0; +} + +.edui-default .edui-for-justifyright .edui-icon { + background-position: -480px 0; +} + +.edui-default .edui-for-justifyjustify .edui-icon { + background-position: -440px 0; +} + +.edui-default .edui-for-insertorderedlist .edui-icon { + background-position: -80px 0; +} + +.edui-default .edui-for-insertunorderedlist .edui-icon { + background-position: -20px 0; +} + +.edui-default .edui-for-lineheight .edui-icon { + background-position: -725px -40px; +} + +.edui-default .edui-for-rowspacingbottom .edui-icon { + background-position: -745px -40px; +} + +.edui-default .edui-for-rowspacingtop .edui-icon { + background-position: -765px -40px; +} + +.edui-default .edui-for-horizontal .edui-icon { + background-position: -360px 0; +} + +.edui-default .edui-for-link .edui-icon { + background-position: -500px 0; +} + +.edui-default .edui-for-code .edui-icon { + background-position: -440px -40px; +} + +.edui-default .edui-for-insertimage .edui-icon { + background-position: -726px -77px; +} + +.edui-default .edui-for-insertframe .edui-icon { + background-position: -240px -40px; +} + +.edui-default .edui-for-emoticon .edui-icon { + background-position: -60px -20px; +} + +.edui-default .edui-for-spechars .edui-icon { + background-position: -240px 0; +} + +.edui-default .edui-for-help .edui-icon { + background-position: -340px 0; +} + +.edui-default .edui-for-print .edui-icon { + background-position: -440px -20px; +} + +.edui-default .edui-for-preview .edui-icon { + background-position: -420px -20px; +} + +.edui-default .edui-for-selectall .edui-icon { + background-position: -400px -20px; +} + +.edui-default .edui-for-searchreplace .edui-icon { + background-position: -520px -20px; +} + +.edui-default .edui-for-map .edui-icon { + background-position: -40px -40px; +} + +.edui-default .edui-for-gmap .edui-icon { + background-position: -260px -40px; +} + +.edui-default .edui-for-insertvideo .edui-icon { + background-position: -320px -20px; +} + +.edui-default .edui-for-time .edui-icon { + background-position: -160px -20px; +} + +.edui-default .edui-for-date .edui-icon { + background-position: -140px -20px; +} + +.edui-default .edui-for-cut .edui-icon { + background-position: -680px 0; +} + +.edui-default .edui-for-copy .edui-icon { + background-position: -700px 0; +} + +.edui-default .edui-for-paste .edui-icon { + background-position: -560px 0; +} + +.edui-default .edui-for-formatmatch .edui-icon { + background-position: -40px 0; +} + +.edui-default .edui-for-pasteplain .edui-icon { + background-position: -360px -20px; +} + +.edui-default .edui-for-directionalityltr .edui-icon { + background-position: -20px -20px; +} + +.edui-default .edui-for-directionalityrtl .edui-icon { + background-position: -40px -20px; +} + +.edui-default .edui-for-source .edui-icon { + background-position: -261px -0px; +} + +.edui-default .edui-for-removeformat .edui-icon { + background-position: -580px 0; +} + +.edui-default .edui-for-unlink .edui-icon { + background-position: -640px 0; +} + +.edui-default .edui-for-touppercase .edui-icon { + background-position: -786px 0; +} + +.edui-default .edui-for-tolowercase .edui-icon { + background-position: -806px 0; +} + +.edui-default .edui-for-insertrow .edui-icon { + background-position: -478px -76px; +} + +.edui-default .edui-for-insertrownext .edui-icon { + background-position: -498px -76px; +} + +.edui-default .edui-for-insertcol .edui-icon { + background-position: -455px -76px; +} + +.edui-default .edui-for-insertcolnext .edui-icon { + background-position: -429px -76px; +} + +.edui-default .edui-for-mergeright .edui-icon { + background-position: -60px -40px; +} + +.edui-default .edui-for-mergedown .edui-icon { + background-position: -80px -40px; +} + +.edui-default .edui-for-splittorows .edui-icon { + background-position: -100px -40px; +} + +.edui-default .edui-for-splittocols .edui-icon { + background-position: -120px -40px; +} + +.edui-default .edui-for-insertparagraphbeforetable .edui-icon { + background-position: -140px -40px; +} + +.edui-default .edui-for-deleterow .edui-icon { + background-position: -660px -20px; +} + +.edui-default .edui-for-deletecol .edui-icon { + background-position: -640px -20px; +} + +.edui-default .edui-for-splittocells .edui-icon { + background-position: -800px -20px; +} + +.edui-default .edui-for-mergecells .edui-icon { + background-position: -760px -20px; +} + +.edui-default .edui-for-deletetable .edui-icon { + background-position: -620px -20px; +} + +.edui-default .edui-for-cleardoc .edui-icon { + background-position: -520px 0; +} + +.edui-default .edui-for-fullscreen .edui-icon { + background-position: -100px -20px; +} + +.edui-default .edui-for-anchor .edui-icon { + background-position: -200px 0; +} + +.edui-default .edui-for-pagebreak .edui-icon { + background-position: -460px -40px; +} + +.edui-default .edui-for-imagenone .edui-icon { + background-position: -480px -40px; +} + +.edui-default .edui-for-imageleft .edui-icon { + background-position: -500px -40px; +} + +.edui-default .edui-for-wordimage .edui-icon { + background-position: -660px -40px; +} + +.edui-default .edui-for-imageright .edui-icon { + background-position: -520px -40px; +} + +.edui-default .edui-for-imagecenter .edui-icon { + background-position: -540px -40px; +} + +.edui-default .edui-for-indent .edui-icon { + background-position: -400px 0; +} + +.edui-default .edui-for-outdent .edui-icon { + background-position: -540px 0; +} + +.edui-default .edui-for-webapp .edui-icon { + background-position: -601px -40px +} + +.edui-default .edui-for-table .edui-icon { + background-position: -580px -20px; +} + +.edui-default .edui-for-edittable .edui-icon { + background-position: -420px -40px; +} + +.edui-default .edui-for-template .edui-icon { + background-position: -339px -40px; +} + +.edui-default .edui-for-delete .edui-icon { + background-position: -360px -40px; +} + +.edui-default .edui-for-attachment .edui-icon { + background-position: -620px -40px; +} + +.edui-default .edui-for-edittd .edui-icon { + background-position: -700px -40px; +} + +.edui-default .edui-for-snapscreen .edui-icon { + background-position: -581px -40px +} + +.edui-default .edui-for-scrawl .edui-icon { + background-position: -801px -41px +} + +.edui-default .edui-for-background .edui-icon { + background-position: -680px -40px; +} + +.edui-default .edui-for-music .edui-icon { + background-position: -18px -40px +} + +.edui-default .edui-for-formula .edui-icon { + background-position: -200px -40px +} + +.edui-default .edui-for-aligntd .edui-icon { + background-position: -236px -76px; +} + +.edui-default .edui-for-insertparagraphtrue .edui-icon { + background-position: -625px -76px; +} + +.edui-default .edui-for-insertparagraph .edui-icon { + background-position: -602px -76px; +} + +.edui-default .edui-for-insertcaption .edui-icon { + background-position: -336px -76px; +} + +.edui-default .edui-for-deletecaption .edui-icon { + background-position: -362px -76px; +} + +.edui-default .edui-for-inserttitle .edui-icon { + background-position: -286px -76px; +} + +.edui-default .edui-for-deletetitle .edui-icon { + background-position: -311px -76px; +} + +.edui-default .edui-for-aligntable .edui-icon { + background-position: -440px 0; +} + +.edui-default .edui-for-tablealignment-left .edui-icon { + background-position: -460px 0; +} + +.edui-default .edui-for-tablealignment-center .edui-icon { + background-position: -420px 0; +} + +.edui-default .edui-for-tablealignment-right .edui-icon { + background-position: -480px 0; +} + +.edui-default .edui-for-drafts .edui-icon { + background-position: -560px 0; +} + +.edui-default .edui-for-charts .edui-icon { + background: url( ../images/charts.png ) no-repeat 2px 3px!important; +} + +.edui-default .edui-for-inserttitlecol .edui-icon { + background-position: -673px -76px; +} + +.edui-default .edui-for-deletetitlecol .edui-icon { + background-position: -698px -76px; +} + +.edui-default .edui-for-simpleupload .edui-icon { + background-position: -380px 0px; +} +/*splitbutton*/ +.edui-default .edui-toolbar .edui-splitbutton-body .edui-arrow, +.edui-default .edui-toolbar .edui-menubutton-body .edui-arrow { + background: url(../images/icons.png) -741px 0; + _background: url(../images/icons.gif) -741px 0; + height: 20px; + width: 9px; +} + +.edui-default .edui-toolbar .edui-splitbutton .edui-splitbutton-body, +.edui-default .edui-toolbar .edui-menubutton .edui-menubutton-body { + padding: 1px; +} + +.edui-default .edui-toolbar .edui-splitborder { + width: 1px; + height: 20px; +} + +.edui-default .edui-toolbar .edui-state-hover .edui-splitborder { + width: 1px; + border-left: 0px solid #dcac6c; +} + +.edui-default .edui-toolbar .edui-state-active .edui-splitborder { + width: 0; + border-left: 1px solid gray; +} + +.edui-default .edui-toolbar .edui-state-opened .edui-splitborder { + width: 1px; + border: 0; +} + +.edui-default .edui-toolbar .edui-splitbutton .edui-state-hover .edui-splitbutton-body, +.edui-default .edui-toolbar .edui-menubutton .edui-state-hover .edui-menubutton-body { + background-color: #fff5d4; + border: 1px solid #dcac6c; + padding: 0; +} + +.edui-default .edui-toolbar .edui-splitbutton .edui-state-checked .edui-splitbutton-body, +.edui-default .edui-toolbar .edui-menubutton .edui-state-checked .edui-menubutton-body { + background-color: #FFE69F; + border: 1px solid #DCAC6C; + padding: 0; +} + +.edui-default .edui-toolbar .edui-splitbutton .edui-state-active .edui-splitbutton-body, +.edui-default .edui-toolbar .edui-menubutton .edui-state-active .edui-menubutton-body { + background-color: #ffffff; + border: 1px solid gray; + padding: 0; +} + +.edui-default .edui-state-disabled .edui-arrow { + opacity: 0.3; + _filter: alpha(opacity = 30); +} + +.edui-default .edui-toolbar .edui-splitbutton .edui-state-opened .edui-splitbutton-body, +.edui-default .edui-toolbar .edui-menubutton .edui-state-opened .edui-menubutton-body { + background-color: white; + border: 1px solid gray; + padding: 0; +} + +.edui-default .edui-for-insertorderedlist .edui-bordereraser, +.edui-default .edui-for-lineheight .edui-bordereraser, +.edui-default .edui-for-rowspacingtop .edui-bordereraser, +.edui-default .edui-for-rowspacingbottom .edui-bordereraser, +.edui-default .edui-for-insertunorderedlist .edui-bordereraser { + background-color: white; +} + +/* 解决嵌套导致的图标问题 */ +.edui-default .edui-for-insertorderedlist .edui-popup-body .edui-icon, +.edui-default .edui-for-lineheight .edui-popup-body .edui-icon, +.edui-default .edui-for-rowspacingtop .edui-popup-body .edui-icon, +.edui-default .edui-for-rowspacingbottom .edui-popup-body .edui-icon, +.edui-default .edui-for-insertunorderedlist .edui-popup-body .edui-icon { + /*background-position: 0 -40px;*/ + background-image: none ; +} + +/* 弹出菜单 */ +.edui-default .edui-popup { + z-index: 3000; + background-color: #ffffff; + width:auto; + height:auto; + +} + +.edui-default .edui-popup .edui-shadow { + left: 0; + top: 0; + width: 100%; + height: 100%; +} + +.edui-default .edui-popup-content { + border:1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.2); + *border-right-width: 2px; + *border-bottom-width: 2px; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + -webkit-box-shadow: 0 3px 4px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0 3px 4px rgba(0, 0, 0, 0.2); + box-shadow: 0 3px 4px rgba(0, 0, 0, 0.2); + -webkit-background-clip: padding-box; + -moz-background-clip: padding; + background-clip: padding-box; + padding: 5px; + background:#ffffff; +} + +.edui-default .edui-popup .edui-bordereraser { + background-color: white; + height: 3px; +} + +.edui-default .edui-menu .edui-bordereraser { + height: 3px; +} + +.edui-default .edui-anchor-topleft .edui-bordereraser { + left: 1px; + top: -2px; +} + +.edui-default .edui-anchor-topright .edui-bordereraser { + right: 1px; + top: -2px; +} + +.edui-default .edui-anchor-bottomleft .edui-bordereraser { + left: 0; + bottom: -6px; + height: 7px; + border-left: 1px solid gray; + border-right: 1px solid gray; +} + +.edui-default .edui-anchor-bottomright .edui-bordereraser { + right: 0; + bottom: -6px; + height: 7px; + border-left: 1px solid gray; + border-right: 1px solid gray; +} + +.edui-popup div{ + width:auto; + height:auto; +} +.edui-default .edui-editor-messageholder { + display: block; + width: 150px; + height: auto; + border: 0; + margin: 0; + padding: 0; + position: absolute; + top: 28px; + right: 3px; +} + +.edui-default .edui-message{ + min-height: 10px; + text-shadow: 0 1px 0 rgba(255,255,255,0.5); + padding: 0; + margin-bottom: 3px; + position: relative; +} +.edui-default .edui-message-body{ + border-radius: 3px; + padding: 8px 15px 8px 8px; + color: #c09853; + background-color: #fcf8e3; + border: 1px solid #fbeed5; +} +.edui-default .edui-message-type-info{ + color: #3a87ad; + background-color: #d9edf7; + border-color: #bce8f1 +} +.edui-default .edui-message-type-success{ + color: #468847; + background-color: #dff0d8; + border-color: #d6e9c6 +} +.edui-default .edui-message-type-danger, +.edui-default .edui-message-type-error{ + color: #b94a48; + background-color: #f2dede; + border-color: #eed3d7 +} +.edui-default .edui-message .edui-message-closer { + display: block; + width: 16px; + height: 16px; + line-height: 16px; + position: absolute; + top: 0; + right: 0; + padding: 0; + cursor: pointer; + background: transparent; + border: 0; + float: right; + font-size: 20px; + font-weight: bold; + color: #999; + text-shadow: 0 1px 0 #fff; + font-family: "Helvetica Neue",Helvetica,Arial,sans-serif; +} +.edui-default .edui-message .edui-message-content { + font-size: 10pt; + word-wrap: break-word; + word-break: normal; +} +/* 弹出对话框按钮和对话框大小 */ +.edui-default .edui-dialog { + z-index: 2000; + position: absolute; + +} + +.edui-dialog div{ + width:auto; +} + +.edui-default .edui-dialog-wrap { + margin-right: 6px; + margin-bottom: 6px; +} + +.edui-default .edui-dialog-fullscreen-flag { + margin-right: 0; + margin-bottom: 0; +} + +.edui-default .edui-dialog-body { + position: relative; + padding:2px 0 0 2px; + _zoom: 1; +} + +.edui-default .edui-dialog-fullscreen-flag .edui-dialog-body { + padding: 0; +} + +.edui-default .edui-dialog-shadow { + position: absolute; + z-index: -1; + left: 0; + top: 0; + width: 100%; + height: 100%; + background-color: #ffffff; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.2); + *border-right-width: 2px; + *border-bottom-width: 2px; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -webkit-background-clip: padding-box; + -moz-background-clip: padding; + background-clip: padding-box; +} + +.edui-default .edui-dialog-foot { + background-color: white; +} + +.edui-default .edui-dialog-titlebar { + height: 26px; + border-bottom: 1px solid #c6c6c6; + background: url(../images/dialog-title-bg.png) repeat-x bottom; + position: relative; + cursor: move; +} +.edui-default .edui-dialog-caption { + font-weight: bold; + font-size: 12px; + line-height: 26px; + padding-left: 5px; +} + +.edui-default .edui-dialog-draghandle { + height: 26px; +} + +.edui-default .edui-dialog-closebutton { + position: absolute !important; + right: 5px; + top: 3px; +} + +.edui-default .edui-dialog-closebutton .edui-button-body { + height: 20px; + width: 20px; + cursor: pointer; + background: url("../images/icons-all.gif") no-repeat 0 -59px; +} + +.edui-default .edui-dialog-closebutton .edui-state-hover .edui-button-body { + background: url("../images/icons-all.gif") no-repeat 0 -89px; +} + +.edui-default .edui-dialog-foot { + height: 40px; +} + +.edui-default .edui-dialog-buttons { + position: absolute; + right: 0; +} + +.edui-default .edui-dialog-buttons .edui-button { + margin-right: 10px; +} + +.edui-default .edui-dialog-buttons .edui-button .edui-button-body { + background: url("../images/icons-all.gif") no-repeat; + height: 24px; + width: 96px; + font-size: 12px; + line-height: 24px; + text-align: center; + cursor: default; +} + +.edui-default .edui-dialog-buttons .edui-button .edui-state-hover .edui-button-body { + background: url("../images/icons-all.gif") no-repeat 0 -30px; +} + +.edui-default .edui-dialog iframe { + border: 0; + padding: 0; + margin: 0; + vertical-align: top; +} + +.edui-default .edui-dialog-modalmask { + opacity: 0.3; + filter: alpha(opacity = 30); + background-color: #ccc; + position: absolute; + /*z-index: 1999;*/ +} + +.edui-default .edui-dialog-dragmask { + position: absolute; + /*z-index: 2001;*/ + background-color: transparent; + cursor: move; +} + +.edui-default .edui-dialog-content { + position: relative; +} + +.edui-default .dialogcontmask { + cursor: move; + visibility: hidden; + display: block; + position: absolute; + width: 100%; + height: 100%; + opacity: 0; + filter: alpha(opacity = 0); +} + +/*link-dialog*/ +.edui-default .edui-for-link .edui-dialog-content { + width: 420px; + height: 200px; + overflow: hidden; +} +/*background-dialog*/ +.edui-default .edui-for-background .edui-dialog-content { + width: 440px; + height: 280px; + overflow: hidden; +} + +/*template-dialog*/ +.edui-default .edui-for-template .edui-dialog-content { + width: 630px; + height: 390px; + overflow: hidden; +} + +/*scrawl-dialog*/ +.edui-default .edui-for-scrawl .edui-dialog-content { + width: 515px; + *width: 506px; + height: 360px; +} + +/*spechars-dialog*/ +.edui-default .edui-for-spechars .edui-dialog-content { + width: 620px; + height: 500px; + *width: 630px; + *height: 570px; +} + +/*image-dialog*/ +.edui-default .edui-for-insertimage .edui-dialog-content { + width: 650px; + height: 400px; + overflow: hidden; +} +/*webapp-dialog*/ +.edui-default .edui-for-webapp .edui-dialog-content { + width: 560px; + _width: 565px; + height: 450px; + overflow: hidden; +} + +/*image-insertframe*/ +.edui-default .edui-for-insertframe .edui-dialog-content { + width: 350px; + height: 200px; + overflow: hidden; +} + +/*wordImage-dialog*/ +.edui-default .edui-for-wordimage .edui-dialog-content { + width: 620px; + height: 380px; + overflow: hidden; +} + +/*attachment-dialog*/ +.edui-default .edui-for-attachment .edui-dialog-content { + width: 650px; + height: 400px; + overflow: hidden; +} + + +/*map-dialog*/ +.edui-default .edui-for-map .edui-dialog-content { + width: 550px; + height: 400px; +} + +/*gmap-dialog*/ +.edui-default .edui-for-gmap .edui-dialog-content { + width: 550px; + height: 400px; +} + +/*video-dialog*/ +.edui-default .edui-for-insertvideo .edui-dialog-content { + width: 590px; + height: 390px; +} + +/*anchor-dialog*/ +.edui-default .edui-for-anchor .edui-dialog-content { + width: 320px; + height: 60px; + overflow: hidden; +} + +/*searchreplace-dialog*/ +.edui-default .edui-for-searchreplace .edui-dialog-content { + width: 400px; + height: 220px; +} + +/*help-dialog*/ +.edui-default .edui-for-help .edui-dialog-content { + width: 400px; + height: 420px; +} + +/*edittable-dialog*/ +.edui-default .edui-for-edittable .edui-dialog-content { + width: 540px; + _width:590px; + height: 335px; +} + +/*edittip-dialog*/ +.edui-default .edui-for-edittip .edui-dialog-content { + width: 225px; + height: 60px; +} + +/*edittd-dialog*/ +.edui-default .edui-for-edittd .edui-dialog-content { + width: 240px; + height: 50px; +} +/*snapscreen-dialog*/ +.edui-default .edui-for-snapscreen .edui-dialog-content { + width: 400px; + height: 220px; +} + +/*music-dialog*/ +.edui-default .edui-for-music .edui-dialog-content { + width: 515px; + height: 360px; +} + +/*段落弹出菜单*/ +.edui-default .edui-for-paragraph .edui-listitem-label { + font-family: Tahoma, Verdana, Arial, Helvetica; +} + +.edui-default .edui-for-paragraph .edui-listitem-label .edui-for-p { + font-size: 22px; + line-height: 27px; +} + +.edui-default .edui-for-paragraph .edui-listitem-label .edui-for-h1 { + font-weight: bolder; + font-size: 32px; + line-height: 36px; +} + +.edui-default .edui-for-paragraph .edui-listitem-label .edui-for-h2 { + font-weight: bolder; + font-size: 27px; + line-height: 29px; +} + +.edui-default .edui-for-paragraph .edui-listitem-label .edui-for-h3 { + font-weight: bolder; + font-size: 19px; + line-height: 23px; +} + +.edui-default .edui-for-paragraph .edui-listitem-label .edui-for-h4 { + font-weight: bolder; + font-size: 16px; + line-height: 19px +} + +.edui-default .edui-for-paragraph .edui-listitem-label .edui-for-h5 { + font-weight: bolder; + font-size: 13px; + line-height: 16px; +} + +.edui-default .edui-for-paragraph .edui-listitem-label .edui-for-h6 { + font-weight: bolder; + font-size: 12px; + line-height: 14px; +} +/* 表格弹出菜单 */ +.edui-default .edui-for-inserttable .edui-splitborder { + display: none +} +.edui-default .edui-for-inserttable .edui-splitbutton-body .edui-arrow { + width: 0 +} +.edui-default .edui-toolbar .edui-for-inserttable .edui-state-active .edui-splitborder{ + border-left: 1px solid transparent; +} +.edui-default .edui-tablepicker .edui-infoarea { + height: 14px; + line-height: 14px; + font-size: 12px; + width: 220px; + margin-bottom: 3px; + clear: both; +} + +.edui-default .edui-tablepicker .edui-infoarea .edui-label { + float: left; +} + +.edui-default .edui-dialog-buttons .edui-label { + line-height: 24px; +} + +.edui-default .edui-tablepicker .edui-infoarea .edui-clickable { + float: right; +} + +.edui-default .edui-tablepicker .edui-pickarea { + background: url("../images/unhighlighted.gif") repeat; + height: 220px; + width: 220px; +} + +.edui-default .edui-tablepicker .edui-pickarea .edui-overlay { + background: url("../images/highlighted.gif") repeat; +} + +/* 颜色弹出菜单 */ +.edui-default .edui-colorpicker-topbar { + height: 27px; + width: 200px; + /*border-bottom: 1px gray dashed;*/ +} + +.edui-default .edui-colorpicker-preview { + height: 20px; + border: 1px inset black; + margin-left: 1px; + width: 128px; + float: left; +} + +.edui-default .edui-colorpicker-nocolor { + float: right; + margin-right: 1px; + font-size: 12px; + line-height: 14px; + height: 14px; + border: 1px solid #333; + padding: 3px 5px; + cursor: pointer; +} + +.edui-default .edui-colorpicker-tablefirstrow { + height: 30px; +} + +.edui-default .edui-colorpicker-colorcell { + width: 14px; + height: 14px; + display: block; + margin: 0; + cursor: pointer; +} + +.edui-default .edui-colorpicker-colorcell:hover { + width: 14px; + height: 14px; + margin: 0; +} +.edui-default .edui-colorpicker-advbtn{ + display: block; + text-align: center; + cursor: pointer; + height:20px; +} +.arrow_down{ + background: white url('../images/arrow_down.png') no-repeat center; +} +.arrow_up{ + background: white url('../images/arrow_up.png') no-repeat center; +} +/*高级的样式*/ +.edui-colorpicker-adv{ + position: relative; + overflow: hidden; + height: 180px; + display: none; +} +.edui-colorpicker-plant, .edui-colorpicker-hue { + border: solid 1px #666; +} +.edui-colorpicker-pad { + width: 150px; + height: 150px; + left: 14px; + top: 13px; + position: absolute; + background: red; + overflow: hidden; + cursor: crosshair; +} +.edui-colorpicker-cover{ + position: absolute; + top: 0; + left: 0; + width: 150px; + height: 150px; + background: url("../images/tangram-colorpicker.png") -160px -200px; +} +.edui-colorpicker-padDot{ + position: absolute; + top: 0; + left: 0; + width: 11px; + height: 11px; + overflow: hidden; + background: url(../images/tangram-colorpicker.png) 0px -200px repeat-x; + z-index: 1000; + +} +.edui-colorpicker-sliderMain { + position: absolute; + left: 171px; + top: 13px; + width: 19px; + height: 152px; + background: url(../images/tangram-colorpicker.png) -179px -12px no-repeat; + +} +.edui-colorpicker-slider { + width: 100%; + height: 100%; + cursor: pointer; +} +.edui-colorpicker-thumb{ + position: absolute; + top: 0; + cursor: pointer; + height: 3px; + left: -1px; + right: -1px; + border: 1px solid black; + background: white; + opacity: .8; +} +/*自动排版弹出菜单*/ +.edui-default .edui-autotypesetpicker .edui-autotypesetpicker-body { + font-size: 12px; + margin-bottom: 3px; + clear: both; +} + +.edui-default .edui-autotypesetpicker-body table { + border-collapse: separate; + border-spacing: 2px; +} + +.edui-default .edui-autotypesetpicker-body td { + font-size: 12px; + word-wrap:break-word; +} + +.edui-default .edui-autotypesetpicker-body td input { + margin: 3px 3px 3px 4px; + *margin: 1px 0 0 0; +} +/*自动排版弹出菜单*/ +.edui-default .edui-cellalignpicker .edui-cellalignpicker-body { + width: 70px; + font-size: 12px; + cursor: default; +} + +.edui-default .edui-cellalignpicker-body table { + border-collapse: separate; + border-spacing: 0; +} +.edui-default .edui-cellalignpicker-body td{ + padding: 1px; +} +.edui-default .edui-cellalignpicker-body .edui-icon{ + height: 20px; + width: 20px; + padding: 1px; + background-image: url(../images/table-cell-align.png); +} + +.edui-default .edui-cellalignpicker-body .edui-left{ + background-position: 0 0; +} + +.edui-default .edui-cellalignpicker-body .edui-center{ + background-position: -25px 0; +} +.edui-default .edui-cellalignpicker-body .edui-right{ + background-position: -51px 0; +} + +.edui-default .edui-cellalignpicker-body td.edui-state-hover .edui-left{ + background-position: -73px 0; +} + +.edui-default .edui-cellalignpicker-body td.edui-state-hover .edui-center{ + background-position: -98px 0; +} + +.edui-default .edui-cellalignpicker-body td.edui-state-hover .edui-right{ + background-position: -124px 0; +} + +.edui-default .edui-cellalignpicker-body td.edui-cellalign-selected .edui-left { + background-position: -146px 0; + background-color: #f1f4f5; +} + +.edui-default .edui-cellalignpicker-body td.edui-cellalign-selected .edui-center { + background-position: -245px 0; +} + +.edui-default .edui-cellalignpicker-body td.edui-cellalign-selected .edui-right { + background-position: -271px 0; +} +/*分隔线*/ +.edui-default .edui-toolbar .edui-separator { + width: 2px; + height: 20px; + margin: 2px 4px 2px 3px; + background: url(../images/icons.png) -181px 0; + background: url(../images/icons.gif) -181px 0 \9; +} + +/*颜色按钮 */ +.edui-default .edui-toolbar .edui-colorbutton .edui-colorlump { + position: absolute; + overflow: hidden; + bottom: 1px; + left: 1px; + width: 18px; + height: 4px; +} +/*表情按钮及弹出菜单*/ +/*去除了表情的下拉箭头*/ +.edui-default .edui-for-emotion .edui-icon { + background-position: -60px -20px; +} +.edui-default .edui-for-emotion .edui-popup-content iframe +{ + width: 514px; + height: 380px; + overflow: hidden; +} +.edui-default .edui-for-emotion .edui-popup-content +{ + position: relative; + z-index: 555 +} + +.edui-default .edui-for-emotion .edui-splitborder { + display: none +} + +.edui-default .edui-for-emotion .edui-splitbutton-body .edui-arrow +{ + width: 0 +} +.edui-default .edui-toolbar .edui-for-emotion .edui-state-active .edui-splitborder +{ + border-left: 1px solid transparent; +} +/*contextmenu*/ +.edui-default .edui-hassubmenu .edui-arrow { + height: 20px; + width: 20px; + float: right; + background: url("../images/icons-all.gif") no-repeat 10px -233px; +} + +.edui-default .edui-menu-body .edui-menuitem { + padding: 1px; +} + +.edui-default .edui-menuseparator { + margin: 2px 0; + height: 1px; + overflow: hidden; +} + +.edui-default .edui-menuseparator-inner { + border-bottom: 1px solid #e2e3e3; + margin-left: 29px; + margin-right: 1px; +} + +.edui-default .edui-menu-body .edui-state-hover { + padding: 0 !important; + background-color: #fff5d4; + border: 1px solid #dcac6c; +} +/*弹出菜单*/ +.edui-default .edui-shortcutmenu { + padding: 2px; + width: 190px; + height: 50px; + background-color: #fff; + border: 1px solid #ccc; + border-radius: 5px; +} + +/*粘贴弹出菜单*/ +.edui-default .edui-wordpastepop .edui-popup-content{ + border: none; + padding: 0; + width: 54px; + height: 21px; +} +.edui-default .edui-pasteicon { + width: 100%; + height: 100%; + background-image: url('../images/wordpaste.png'); + background-position: 0 0; +} + +.edui-default .edui-pasteicon.edui-state-opened { + background-position: 0 -34px; +} + +.edui-default .edui-pastecontainer { + position: relative; + visibility: hidden; + width: 97px; + background: #fff; + border: 1px solid #ccc; +} + +.edui-default .edui-pastecontainer .edui-title { + font-weight: bold; + background: #F8F8FF; + height: 25px; + line-height: 25px; + font-size: 12px; + padding-left: 5px; +} + +.edui-default .edui-pastecontainer .edui-button { + overflow: hidden; + margin: 3px 0; +} + +.edui-default .edui-pastecontainer .edui-button .edui-richtxticon, +.edui-default .edui-pastecontainer .edui-button .edui-tagicon, +.edui-default .edui-pastecontainer .edui-button .edui-plaintxticon{ + float: left; + cursor: pointer; + width: 29px; + height: 29px; + margin-left: 5px; + background-image: url('../images/wordpaste.png'); + background-repeat: no-repeat; +} +.edui-default .edui-pastecontainer .edui-button .edui-richtxticon { + margin-left: 0; + background-position: -109px 0; +} +.edui-default .edui-pastecontainer .edui-button .edui-tagicon { + background-position: -148px 1px; +} + +.edui-default .edui-pastecontainer .edui-button .edui-plaintxticon { + background-position: -72px 0; +} + +.edui-default .edui-pastecontainer .edui-button .edui-state-hover .edui-richtxticon { + background-position: -109px -34px; +} +.edui-default .edui-pastecontainer .edui-button .edui-state-hover .edui-tagicon{ + background-position: -148px -34px; +} +.edui-default .edui-pastecontainer .edui-button .edui-state-hover .edui-plaintxticon{ + background-position: -72px -34px; +} \ No newline at end of file diff --git a/admin/public/UEditor/themes/default/css/ueditor.min.css b/admin/public/UEditor/themes/default/css/ueditor.min.css new file mode 100644 index 00000000..8ca74eb6 --- /dev/null +++ b/admin/public/UEditor/themes/default/css/ueditor.min.css @@ -0,0 +1,8 @@ +/*! + * UEditor + * version: ueditor + * build: Wed Dec 26 2018 17:25:05 GMT+0800 (CST) + */ + + +.edui-default .edui-box{border:0;padding:0;margin:0;overflow:hidden}.edui-default a.edui-box{display:block;text-decoration:none;color:#000}.edui-default a.edui-box:hover{text-decoration:none}.edui-default a.edui-box:active{text-decoration:none}.edui-default table.edui-box{border-collapse:collapse}.edui-default ul.edui-box{list-style-type:none}div.edui-box{position:relative;display:-moz-inline-box!important;display:inline-block!important;vertical-align:top}.edui-default .edui-clearfix{zoom:1}.edui-default .edui-clearfix:after{content:'\20';display:block;clear:both}* html div.edui-box{display:inline!important}:first-child+html div.edui-box{display:inline!important}.edui-default .edui-button-body,.edui-splitbutton-body,.edui-menubutton-body,.edui-combox-body{position:relative}.edui-default .edui-popup{position:absolute;-webkit-user-select:none;-moz-user-select:none}.edui-default .edui-popup .edui-shadow{position:absolute;z-index:-1}.edui-default .edui-popup .edui-bordereraser{position:absolute;overflow:hidden}.edui-default .edui-tablepicker .edui-canvas{position:relative}.edui-default .edui-tablepicker .edui-canvas .edui-overlay{position:absolute}.edui-default .edui-dialog-modalmask,.edui-dialog-dragmask{position:absolute;left:0;top:0;width:100%;height:100%}.edui-default .edui-toolbar{position:relative}.edui-default .edui-label{cursor:default}.edui-default span.edui-clickable{color:#00f;cursor:pointer;text-decoration:underline}.edui-default span.edui-unclickable{color:gray;cursor:default}.edui-default .edui-toolbar{cursor:default;-webkit-user-select:none;-moz-user-select:none;padding:1px;overflow:hidden;zoom:1;width:auto;height:auto}.edui-default .edui-toolbar .edui-button,.edui-default .edui-toolbar .edui-splitbutton,.edui-default .edui-toolbar .edui-menubutton,.edui-default .edui-toolbar .edui-combox{margin:1px}.edui-default .edui-editor{border:1px solid #d4d4d4;background-color:#fff;position:relative;overflow:visible;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.edui-editor div{width:auto;height:auto}.edui-default .edui-editor-toolbarbox{position:relative;zoom:1;-webkit-box-shadow:0 1px 4px rgba(204,204,204,.6);-moz-box-shadow:0 1px 4px rgba(204,204,204,.6);box-shadow:0 1px 4px rgba(204,204,204,.6);border-top-left-radius:2px;border-top-right-radius:2px}.edui-default .edui-editor-toolbarboxouter{border-bottom:1px solid #d4d4d4;background-color:#fafafa;background-image:-moz-linear-gradient(top,#fff,#f2f2f2);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#f2f2f2));background-image:-webkit-linear-gradient(top,#fff,#f2f2f2);background-image:-o-linear-gradient(top,#fff,#f2f2f2);background-image:linear-gradient(to bottom,#fff,#f2f2f2);background-repeat:repeat-x;-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff2f2f2', GradientType=0);*zoom:1;-webkit-box-shadow:0 1px 4px rgba(0,0,0,.065);-moz-box-shadow:0 1px 4px rgba(0,0,0,.065);box-shadow:0 1px 4px rgba(0,0,0,.065)}.edui-default .edui-editor-toolbarboxinner{padding:2px}.edui-default .edui-editor-iframeholder{position:relative}.edui-default .edui-editor-bottomContainer{overflow:hidden}.edui-default .edui-editor-bottomContainer table{width:100%;height:0;overflow:hidden;border-spacing:0}.edui-default .edui-editor-bottomContainer td{white-space:nowrap;border-top:1px solid #ccc;line-height:20px;font-size:12px;font-family:Arial,Helvetica,Tahoma,Verdana,Sans-Serif}.edui-default .edui-editor-wordcount{text-align:right;margin-right:5px;color:#aaa}.edui-default .edui-editor-scale{width:12px}.edui-default .edui-editor-scale .edui-editor-icon{float:right;width:100%;height:12px;margin-top:10px;background:url(../images/scale.png) no-repeat;cursor:se-resize}.edui-default .edui-editor-breadcrumb{margin:2px 0 0 3px}.edui-default .edui-editor-breadcrumb span{cursor:pointer;text-decoration:underline;color:#00f}.edui-default .edui-toolbar .edui-for-fullscreen{float:right}.edui-default .edui-bubble .edui-popup-content{border:1px solid #DCAC6C;background-color:#fff6d9;padding:5px;font-size:10pt;font-family:"宋体"}.edui-default .edui-bubble .edui-shadow{}.edui-default .edui-editor-toolbarmsg{background-color:#FFF6D9;border-bottom:1px solid #ccc;position:absolute;bottom:-25px;left:0;z-index:1009;width:99.9%}.edui-default .edui-editor-toolbarmsg-upload{font-size:14px;color:#00f;width:100px;height:16px;line-height:16px;cursor:pointer;position:absolute;top:5px;left:350px}.edui-default .edui-editor-toolbarmsg-label{font-size:12px;line-height:16px;padding:4px}.edui-default .edui-editor-toolbarmsg-close{float:right;width:20px;height:16px;line-height:16px;cursor:pointer;color:red}.edui-default .edui-list .edui-bordereraser{display:none}.edui-default .edui-listitem{padding:1px;white-space:nowrap}.edui-default .edui-list .edui-state-hover{position:relative;background-color:#fff5d4;border:1px solid #dcac6c;padding:0}.edui-default .edui-for-fontfamily .edui-listitem-label{min-width:130px;_width:120px;font-size:12px;height:22px;line-height:22px;padding-left:5px}.edui-default .edui-for-insertcode .edui-listitem-label{min-width:120px;_width:120px;font-size:12px;height:22px;line-height:22px;padding-left:5px}.edui-default .edui-for-underline .edui-listitem-label{min-width:120px;_width:120px;padding:3px 5px;font-size:12px}.edui-default .edui-for-fontsize .edui-listitem-label{min-width:120px;_width:120px;padding:3px 5px}.edui-default .edui-for-paragraph .edui-listitem-label{min-width:200px;_width:200px;padding:2px 5px}.edui-default .edui-for-rowspacingtop .edui-listitem-label,.edui-default .edui-for-rowspacingbottom .edui-listitem-label{min-width:53px;_width:53px;padding:2px 5px}.edui-default .edui-for-lineheight .edui-listitem-label{min-width:53px;_width:53px;padding:2px 5px}.edui-default .edui-for-customstyle .edui-listitem-label{min-width:200px;_width:200px;width:200px!important;padding:2px 5px}.edui-default .edui-menu{z-index:3000}.edui-default .edui-menu .edui-popup-content{padding:3px}.edui-default .edui-menu-body{_width:150px;min-width:170px;background:url(../images/sparator_v.png) repeat-y 25px}.edui-default .edui-menuitem-body{}.edui-default .edui-menuitem{height:20px;cursor:default;vertical-align:top}.edui-default .edui-menuitem .edui-icon{width:20px!important;height:20px!important;background:url(../images/icons.png) 0 -4000px;background:url(../images/icons.gif) 0 -4000px\9}.edui-default .edui-menuitem .edui-label{font-size:12px;line-height:20px;height:20px;padding-left:10px}.edui-default .edui-state-checked .edui-menuitem-body{background:url(../images/icons-all.gif) no-repeat 6px -205px}.edui-default .edui-state-disabled .edui-menuitem-label{color:gray}.edui-default .edui-toolbar .edui-combox-body .edui-button-body{width:60px;font-size:12px;height:20px;line-height:20px;padding-left:5px;white-space:nowrap;margin:0 3px 0 0}.edui-default .edui-toolbar .edui-combox-body .edui-arrow{background:url(../images/icons.png) -741px 0;_background:url(../images/icons.gif) -741px 0;height:20px;width:9px}.edui-default .edui-toolbar .edui-combox .edui-combox-body{border:1px solid #CCC;background-color:#fff;border-radius:2px;-webkit-border-radius:2px;-moz-border-radius:2px}.edui-default .edui-toolbar .edui-combox-body .edui-splitborder{display:none}.edui-default .edui-toolbar .edui-combox-body .edui-arrow{border-left:1px solid #CCC}.edui-default .edui-toolbar .edui-state-hover .edui-combox-body{background-color:#fff5d4;border:1px solid #dcac6c}.edui-default .edui-toolbar .edui-state-hover .edui-combox-body .edui-arrow{border-left:1px solid #dcac6c}.edui-default .edui-toolbar .edui-state-checked .edui-combox-body{background-color:#FFE69F;border:1px solid #DCAC6C}.edui-toolbar .edui-state-checked .edui-combox-body .edui-arrow{border-left:1px solid #DCAC6C}.edui-toolbar .edui-state-disabled .edui-combox-body{background-color:#F0F0EE;opacity:.3;filter:alpha(opacity=30)}.edui-toolbar .edui-state-opened .edui-combox-body{background-color:#fff;border:1px solid gray}.edui-default .edui-toolbar .edui-button .edui-icon,.edui-default .edui-toolbar .edui-menubutton .edui-icon,.edui-default .edui-toolbar .edui-splitbutton .edui-icon{height:20px!important;width:20px!important;background-image:url(../images/icons.png);background-image:url(../images/icons.gif) \9}.edui-default .edui-toolbar .edui-button .edui-button-wrap{padding:1px;position:relative}.edui-default .edui-toolbar .edui-button .edui-state-hover .edui-button-wrap{background-color:#fff5d4;padding:0;border:1px solid #dcac6c}.edui-default .edui-toolbar .edui-button .edui-state-checked .edui-button-wrap{background-color:#ffe69f;padding:0;border:1px solid #dcac6c;border-radius:2px;-webkit-border-radius:2px;-moz-border-radius:2px}.edui-default .edui-toolbar .edui-button .edui-state-active .edui-button-wrap{background-color:#fff;padding:0;border:1px solid gray}.edui-default .edui-toolbar .edui-state-disabled .edui-label{color:#ccc}.edui-default .edui-toolbar .edui-state-disabled .edui-icon{opacity:.3;filter:alpha(opacity=30)}.edui-default .edui-for-undo .edui-icon{background-position:-160px 0}.edui-default .edui-for-redo .edui-icon{background-position:-100px 0}.edui-default .edui-for-bold .edui-icon{background-position:0 0}.edui-default .edui-for-italic .edui-icon{background-position:-60px 0}.edui-default .edui-for-fontborder .edui-icon{background-position:-160px -40px}.edui-default .edui-for-underline .edui-icon{background-position:-140px 0}.edui-default .edui-for-strikethrough .edui-icon{background-position:-120px 0}.edui-default .edui-for-subscript .edui-icon{background-position:-600px 0}.edui-default .edui-for-superscript .edui-icon{background-position:-620px 0}.edui-default .edui-for-blockquote .edui-icon{background-position:-220px 0}.edui-default .edui-for-forecolor .edui-icon{background-position:-720px 0}.edui-default .edui-for-backcolor .edui-icon{background-position:-760px 0}.edui-default .edui-for-inserttable .edui-icon{background-position:-580px -20px}.edui-default .edui-for-autotypeset .edui-icon{background-position:-640px -40px}.edui-default .edui-for-justifyleft .edui-icon{background-position:-460px 0}.edui-default .edui-for-justifycenter .edui-icon{background-position:-420px 0}.edui-default .edui-for-justifyright .edui-icon{background-position:-480px 0}.edui-default .edui-for-justifyjustify .edui-icon{background-position:-440px 0}.edui-default .edui-for-insertorderedlist .edui-icon{background-position:-80px 0}.edui-default .edui-for-insertunorderedlist .edui-icon{background-position:-20px 0}.edui-default .edui-for-lineheight .edui-icon{background-position:-725px -40px}.edui-default .edui-for-rowspacingbottom .edui-icon{background-position:-745px -40px}.edui-default .edui-for-rowspacingtop .edui-icon{background-position:-765px -40px}.edui-default .edui-for-horizontal .edui-icon{background-position:-360px 0}.edui-default .edui-for-link .edui-icon{background-position:-500px 0}.edui-default .edui-for-code .edui-icon{background-position:-440px -40px}.edui-default .edui-for-insertimage .edui-icon{background-position:-726px -77px}.edui-default .edui-for-insertframe .edui-icon{background-position:-240px -40px}.edui-default .edui-for-emoticon .edui-icon{background-position:-60px -20px}.edui-default .edui-for-spechars .edui-icon{background-position:-240px 0}.edui-default .edui-for-help .edui-icon{background-position:-340px 0}.edui-default .edui-for-print .edui-icon{background-position:-440px -20px}.edui-default .edui-for-preview .edui-icon{background-position:-420px -20px}.edui-default .edui-for-selectall .edui-icon{background-position:-400px -20px}.edui-default .edui-for-searchreplace .edui-icon{background-position:-520px -20px}.edui-default .edui-for-map .edui-icon{background-position:-40px -40px}.edui-default .edui-for-gmap .edui-icon{background-position:-260px -40px}.edui-default .edui-for-insertvideo .edui-icon{background-position:-320px -20px}.edui-default .edui-for-time .edui-icon{background-position:-160px -20px}.edui-default .edui-for-date .edui-icon{background-position:-140px -20px}.edui-default .edui-for-cut .edui-icon{background-position:-680px 0}.edui-default .edui-for-copy .edui-icon{background-position:-700px 0}.edui-default .edui-for-paste .edui-icon{background-position:-560px 0}.edui-default .edui-for-formatmatch .edui-icon{background-position:-40px 0}.edui-default .edui-for-pasteplain .edui-icon{background-position:-360px -20px}.edui-default .edui-for-directionalityltr .edui-icon{background-position:-20px -20px}.edui-default .edui-for-directionalityrtl .edui-icon{background-position:-40px -20px}.edui-default .edui-for-source .edui-icon{background-position:-261px -0px}.edui-default .edui-for-removeformat .edui-icon{background-position:-580px 0}.edui-default .edui-for-unlink .edui-icon{background-position:-640px 0}.edui-default .edui-for-touppercase .edui-icon{background-position:-786px 0}.edui-default .edui-for-tolowercase .edui-icon{background-position:-806px 0}.edui-default .edui-for-insertrow .edui-icon{background-position:-478px -76px}.edui-default .edui-for-insertrownext .edui-icon{background-position:-498px -76px}.edui-default .edui-for-insertcol .edui-icon{background-position:-455px -76px}.edui-default .edui-for-insertcolnext .edui-icon{background-position:-429px -76px}.edui-default .edui-for-mergeright .edui-icon{background-position:-60px -40px}.edui-default .edui-for-mergedown .edui-icon{background-position:-80px -40px}.edui-default .edui-for-splittorows .edui-icon{background-position:-100px -40px}.edui-default .edui-for-splittocols .edui-icon{background-position:-120px -40px}.edui-default .edui-for-insertparagraphbeforetable .edui-icon{background-position:-140px -40px}.edui-default .edui-for-deleterow .edui-icon{background-position:-660px -20px}.edui-default .edui-for-deletecol .edui-icon{background-position:-640px -20px}.edui-default .edui-for-splittocells .edui-icon{background-position:-800px -20px}.edui-default .edui-for-mergecells .edui-icon{background-position:-760px -20px}.edui-default .edui-for-deletetable .edui-icon{background-position:-620px -20px}.edui-default .edui-for-cleardoc .edui-icon{background-position:-520px 0}.edui-default .edui-for-fullscreen .edui-icon{background-position:-100px -20px}.edui-default .edui-for-anchor .edui-icon{background-position:-200px 0}.edui-default .edui-for-pagebreak .edui-icon{background-position:-460px -40px}.edui-default .edui-for-imagenone .edui-icon{background-position:-480px -40px}.edui-default .edui-for-imageleft .edui-icon{background-position:-500px -40px}.edui-default .edui-for-wordimage .edui-icon{background-position:-660px -40px}.edui-default .edui-for-imageright .edui-icon{background-position:-520px -40px}.edui-default .edui-for-imagecenter .edui-icon{background-position:-540px -40px}.edui-default .edui-for-indent .edui-icon{background-position:-400px 0}.edui-default .edui-for-outdent .edui-icon{background-position:-540px 0}.edui-default .edui-for-webapp .edui-icon{background-position:-601px -40px}.edui-default .edui-for-table .edui-icon{background-position:-580px -20px}.edui-default .edui-for-edittable .edui-icon{background-position:-420px -40px}.edui-default .edui-for-template .edui-icon{background-position:-339px -40px}.edui-default .edui-for-delete .edui-icon{background-position:-360px -40px}.edui-default .edui-for-attachment .edui-icon{background-position:-620px -40px}.edui-default .edui-for-edittd .edui-icon{background-position:-700px -40px}.edui-default .edui-for-snapscreen .edui-icon{background-position:-581px -40px}.edui-default .edui-for-scrawl .edui-icon{background-position:-801px -41px}.edui-default .edui-for-background .edui-icon{background-position:-680px -40px}.edui-default .edui-for-music .edui-icon{background-position:-18px -40px}.edui-default .edui-for-formula .edui-icon{background-position:-200px -40px}.edui-default .edui-for-aligntd .edui-icon{background-position:-236px -76px}.edui-default .edui-for-insertparagraphtrue .edui-icon{background-position:-625px -76px}.edui-default .edui-for-insertparagraph .edui-icon{background-position:-602px -76px}.edui-default .edui-for-insertcaption .edui-icon{background-position:-336px -76px}.edui-default .edui-for-deletecaption .edui-icon{background-position:-362px -76px}.edui-default .edui-for-inserttitle .edui-icon{background-position:-286px -76px}.edui-default .edui-for-deletetitle .edui-icon{background-position:-311px -76px}.edui-default .edui-for-aligntable .edui-icon{background-position:-440px 0}.edui-default .edui-for-tablealignment-left .edui-icon{background-position:-460px 0}.edui-default .edui-for-tablealignment-center .edui-icon{background-position:-420px 0}.edui-default .edui-for-tablealignment-right .edui-icon{background-position:-480px 0}.edui-default .edui-for-drafts .edui-icon{background-position:-560px 0}.edui-default .edui-for-charts .edui-icon{background:url( ../images/charts.png ) no-repeat 2px 3px!important}.edui-default .edui-for-inserttitlecol .edui-icon{background-position:-673px -76px}.edui-default .edui-for-deletetitlecol .edui-icon{background-position:-698px -76px}.edui-default .edui-for-simpleupload .edui-icon{background-position:-380px 0}.edui-default .edui-toolbar .edui-splitbutton-body .edui-arrow,.edui-default .edui-toolbar .edui-menubutton-body .edui-arrow{background:url(../images/icons.png) -741px 0;_background:url(../images/icons.gif) -741px 0;height:20px;width:9px}.edui-default .edui-toolbar .edui-splitbutton .edui-splitbutton-body,.edui-default .edui-toolbar .edui-menubutton .edui-menubutton-body{padding:1px}.edui-default .edui-toolbar .edui-splitborder{width:1px;height:20px}.edui-default .edui-toolbar .edui-state-hover .edui-splitborder{width:1px;border-left:0 solid #dcac6c}.edui-default .edui-toolbar .edui-state-active .edui-splitborder{width:0;border-left:1px solid gray}.edui-default .edui-toolbar .edui-state-opened .edui-splitborder{width:1px;border:0}.edui-default .edui-toolbar .edui-splitbutton .edui-state-hover .edui-splitbutton-body,.edui-default .edui-toolbar .edui-menubutton .edui-state-hover .edui-menubutton-body{background-color:#fff5d4;border:1px solid #dcac6c;padding:0}.edui-default .edui-toolbar .edui-splitbutton .edui-state-checked .edui-splitbutton-body,.edui-default .edui-toolbar .edui-menubutton .edui-state-checked .edui-menubutton-body{background-color:#FFE69F;border:1px solid #DCAC6C;padding:0}.edui-default .edui-toolbar .edui-splitbutton .edui-state-active .edui-splitbutton-body,.edui-default .edui-toolbar .edui-menubutton .edui-state-active .edui-menubutton-body{background-color:#fff;border:1px solid gray;padding:0}.edui-default .edui-state-disabled .edui-arrow{opacity:.3;_filter:alpha(opacity=30)}.edui-default .edui-toolbar .edui-splitbutton .edui-state-opened .edui-splitbutton-body,.edui-default .edui-toolbar .edui-menubutton .edui-state-opened .edui-menubutton-body{background-color:#fff;border:1px solid gray;padding:0}.edui-default .edui-for-insertorderedlist .edui-bordereraser,.edui-default .edui-for-lineheight .edui-bordereraser,.edui-default .edui-for-rowspacingtop .edui-bordereraser,.edui-default .edui-for-rowspacingbottom .edui-bordereraser,.edui-default .edui-for-insertunorderedlist .edui-bordereraser{background-color:#fff}.edui-default .edui-for-insertorderedlist .edui-popup-body .edui-icon,.edui-default .edui-for-lineheight .edui-popup-body .edui-icon,.edui-default .edui-for-rowspacingtop .edui-popup-body .edui-icon,.edui-default .edui-for-rowspacingbottom .edui-popup-body .edui-icon,.edui-default .edui-for-insertunorderedlist .edui-popup-body .edui-icon{background-image:none}.edui-default .edui-popup{z-index:3000;background-color:#fff;width:auto;height:auto}.edui-default .edui-popup .edui-shadow{left:0;top:0;width:100%;height:100%}.edui-default .edui-popup-content{border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);*border-right-width:2px;*border-bottom-width:2px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 3px 4px rgba(0,0,0,.2);-moz-box-shadow:0 3px 4px rgba(0,0,0,.2);box-shadow:0 3px 4px rgba(0,0,0,.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box;padding:5px;background:#fff}.edui-default .edui-popup .edui-bordereraser{background-color:#fff;height:3px}.edui-default .edui-menu .edui-bordereraser{height:3px}.edui-default .edui-anchor-topleft .edui-bordereraser{left:1px;top:-2px}.edui-default .edui-anchor-topright .edui-bordereraser{right:1px;top:-2px}.edui-default .edui-anchor-bottomleft .edui-bordereraser{left:0;bottom:-6px;height:7px;border-left:1px solid gray;border-right:1px solid gray}.edui-default .edui-anchor-bottomright .edui-bordereraser{right:0;bottom:-6px;height:7px;border-left:1px solid gray;border-right:1px solid gray}.edui-popup div{width:auto;height:auto}.edui-default .edui-editor-messageholder{display:block;width:150px;height:auto;border:0;margin:0;padding:0;position:absolute;top:28px;right:3px}.edui-default .edui-message{min-height:10px;text-shadow:0 1px 0 rgba(255,255,255,.5);padding:0;margin-bottom:3px;position:relative}.edui-default .edui-message-body{border-radius:3px;padding:8px 15px 8px 8px;color:#c09853;background-color:#fcf8e3;border:1px solid #fbeed5}.edui-default .edui-message-type-info{color:#3a87ad;background-color:#d9edf7;border-color:#bce8f1}.edui-default .edui-message-type-success{color:#468847;background-color:#dff0d8;border-color:#d6e9c6}.edui-default .edui-message-type-danger,.edui-default .edui-message-type-error{color:#b94a48;background-color:#f2dede;border-color:#eed3d7}.edui-default .edui-message .edui-message-closer{display:block;width:16px;height:16px;line-height:16px;position:absolute;top:0;right:0;padding:0;cursor:pointer;background:transparent;border:0;float:right;font-size:20px;font-weight:700;color:#999;text-shadow:0 1px 0 #fff;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif}.edui-default .edui-message .edui-message-content{font-size:10pt;word-wrap:break-word;word-break:normal}.edui-default .edui-dialog{z-index:2000;position:absolute}.edui-dialog div{width:auto}.edui-default .edui-dialog-wrap{margin-right:6px;margin-bottom:6px}.edui-default .edui-dialog-fullscreen-flag{margin-right:0;margin-bottom:0}.edui-default .edui-dialog-body{position:relative;padding:2px 0 0 2px;_zoom:1}.edui-default .edui-dialog-fullscreen-flag .edui-dialog-body{padding:0}.edui-default .edui-dialog-shadow{position:absolute;z-index:-1;left:0;top:0;width:100%;height:100%;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);*border-right-width:2px;*border-bottom-width:2px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.edui-default .edui-dialog-foot{background-color:#fff}.edui-default .edui-dialog-titlebar{height:26px;border-bottom:1px solid #c6c6c6;background:url(../images/dialog-title-bg.png) repeat-x bottom;position:relative;cursor:move}.edui-default .edui-dialog-caption{font-weight:700;font-size:12px;line-height:26px;padding-left:5px}.edui-default .edui-dialog-draghandle{height:26px}.edui-default .edui-dialog-closebutton{position:absolute!important;right:5px;top:3px}.edui-default .edui-dialog-closebutton .edui-button-body{height:20px;width:20px;cursor:pointer;background:url(../images/icons-all.gif) no-repeat 0 -59px}.edui-default .edui-dialog-closebutton .edui-state-hover .edui-button-body{background:url(../images/icons-all.gif) no-repeat 0 -89px}.edui-default .edui-dialog-foot{height:40px}.edui-default .edui-dialog-buttons{position:absolute;right:0}.edui-default .edui-dialog-buttons .edui-button{margin-right:10px}.edui-default .edui-dialog-buttons .edui-button .edui-button-body{background:url(../images/icons-all.gif) no-repeat;height:24px;width:96px;font-size:12px;line-height:24px;text-align:center;cursor:default}.edui-default .edui-dialog-buttons .edui-button .edui-state-hover .edui-button-body{background:url(../images/icons-all.gif) no-repeat 0 -30px}.edui-default .edui-dialog iframe{border:0;padding:0;margin:0;vertical-align:top}.edui-default .edui-dialog-modalmask{opacity:.3;filter:alpha(opacity=30);background-color:#ccc;position:absolute}.edui-default .edui-dialog-dragmask{position:absolute;background-color:transparent;cursor:move}.edui-default .edui-dialog-content{position:relative}.edui-default .dialogcontmask{cursor:move;visibility:hidden;display:block;position:absolute;width:100%;height:100%;opacity:0;filter:alpha(opacity=0)}.edui-default .edui-for-link .edui-dialog-content{width:420px;height:200px;overflow:hidden}.edui-default .edui-for-background .edui-dialog-content{width:440px;height:280px;overflow:hidden}.edui-default .edui-for-template .edui-dialog-content{width:630px;height:390px;overflow:hidden}.edui-default .edui-for-scrawl .edui-dialog-content{width:515px;*width:506px;height:360px}.edui-default .edui-for-spechars .edui-dialog-content{width:620px;height:500px;*width:630px;*height:570px}.edui-default .edui-for-insertimage .edui-dialog-content{width:650px;height:400px;overflow:hidden}.edui-default .edui-for-webapp .edui-dialog-content{width:560px;_width:565px;height:450px;overflow:hidden}.edui-default .edui-for-insertframe .edui-dialog-content{width:350px;height:200px;overflow:hidden}.edui-default .edui-for-wordimage .edui-dialog-content{width:620px;height:380px;overflow:hidden}.edui-default .edui-for-attachment .edui-dialog-content{width:650px;height:400px;overflow:hidden}.edui-default .edui-for-map .edui-dialog-content{width:550px;height:400px}.edui-default .edui-for-gmap .edui-dialog-content{width:550px;height:400px}.edui-default .edui-for-insertvideo .edui-dialog-content{width:590px;height:390px}.edui-default .edui-for-anchor .edui-dialog-content{width:320px;height:60px;overflow:hidden}.edui-default .edui-for-searchreplace .edui-dialog-content{width:400px;height:220px}.edui-default .edui-for-help .edui-dialog-content{width:400px;height:420px}.edui-default .edui-for-edittable .edui-dialog-content{width:540px;_width:590px;height:335px}.edui-default .edui-for-edittip .edui-dialog-content{width:225px;height:60px}.edui-default .edui-for-edittd .edui-dialog-content{width:240px;height:50px}.edui-default .edui-for-snapscreen .edui-dialog-content{width:400px;height:220px}.edui-default .edui-for-music .edui-dialog-content{width:515px;height:360px}.edui-default .edui-for-paragraph .edui-listitem-label{font-family:Tahoma,Verdana,Arial,Helvetica}.edui-default .edui-for-paragraph .edui-listitem-label .edui-for-p{font-size:22px;line-height:27px}.edui-default .edui-for-paragraph .edui-listitem-label .edui-for-h1{font-weight:bolder;font-size:32px;line-height:36px}.edui-default .edui-for-paragraph .edui-listitem-label .edui-for-h2{font-weight:bolder;font-size:27px;line-height:29px}.edui-default .edui-for-paragraph .edui-listitem-label .edui-for-h3{font-weight:bolder;font-size:19px;line-height:23px}.edui-default .edui-for-paragraph .edui-listitem-label .edui-for-h4{font-weight:bolder;font-size:16px;line-height:19px}.edui-default .edui-for-paragraph .edui-listitem-label .edui-for-h5{font-weight:bolder;font-size:13px;line-height:16px}.edui-default .edui-for-paragraph .edui-listitem-label .edui-for-h6{font-weight:bolder;font-size:12px;line-height:14px}.edui-default .edui-for-inserttable .edui-splitborder{display:none}.edui-default .edui-for-inserttable .edui-splitbutton-body .edui-arrow{width:0}.edui-default .edui-toolbar .edui-for-inserttable .edui-state-active .edui-splitborder{border-left:1px solid transparent}.edui-default .edui-tablepicker .edui-infoarea{height:14px;line-height:14px;font-size:12px;width:220px;margin-bottom:3px;clear:both}.edui-default .edui-tablepicker .edui-infoarea .edui-label{float:left}.edui-default .edui-dialog-buttons .edui-label{line-height:24px}.edui-default .edui-tablepicker .edui-infoarea .edui-clickable{float:right}.edui-default .edui-tablepicker .edui-pickarea{background:url(../images/unhighlighted.gif) repeat;height:220px;width:220px}.edui-default .edui-tablepicker .edui-pickarea .edui-overlay{background:url(../images/highlighted.gif) repeat}.edui-default .edui-colorpicker-topbar{height:27px;width:200px}.edui-default .edui-colorpicker-preview{height:20px;border:1px inset #000;margin-left:1px;width:128px;float:left}.edui-default .edui-colorpicker-nocolor{float:right;margin-right:1px;font-size:12px;line-height:14px;height:14px;border:1px solid #333;padding:3px 5px;cursor:pointer}.edui-default .edui-colorpicker-tablefirstrow{height:30px}.edui-default .edui-colorpicker-colorcell{width:14px;height:14px;display:block;margin:0;cursor:pointer}.edui-default .edui-colorpicker-colorcell:hover{width:14px;height:14px;margin:0}.edui-default .edui-colorpicker-advbtn{display:block;text-align:center;cursor:pointer;height:20px}.arrow_down{background:#fff url(../images/arrow_down.png) no-repeat center}.arrow_up{background:#fff url(../images/arrow_up.png) no-repeat center}.edui-colorpicker-adv{position:relative;overflow:hidden;height:180px;display:none}.edui-colorpicker-plant,.edui-colorpicker-hue{border:solid 1px #666}.edui-colorpicker-pad{width:150px;height:150px;left:14px;top:13px;position:absolute;background:red;overflow:hidden;cursor:crosshair}.edui-colorpicker-cover{position:absolute;top:0;left:0;width:150px;height:150px;background:url(../images/tangram-colorpicker.png) -160px -200px}.edui-colorpicker-padDot{position:absolute;top:0;left:0;width:11px;height:11px;overflow:hidden;background:url(../images/tangram-colorpicker.png) 0 -200px repeat-x;z-index:1000}.edui-colorpicker-sliderMain{position:absolute;left:171px;top:13px;width:19px;height:152px;background:url(../images/tangram-colorpicker.png) -179px -12px no-repeat}.edui-colorpicker-slider{width:100%;height:100%;cursor:pointer}.edui-colorpicker-thumb{position:absolute;top:0;cursor:pointer;height:3px;left:-1px;right:-1px;border:1px solid #000;background:#fff;opacity:.8}.edui-default .edui-autotypesetpicker .edui-autotypesetpicker-body{font-size:12px;margin-bottom:3px;clear:both}.edui-default .edui-autotypesetpicker-body table{border-collapse:separate;border-spacing:2px}.edui-default .edui-autotypesetpicker-body td{font-size:12px;word-wrap:break-word}.edui-default .edui-autotypesetpicker-body td input{margin:3px 3px 3px 4px;*margin:1px 0 0}.edui-default .edui-cellalignpicker .edui-cellalignpicker-body{width:70px;font-size:12px;cursor:default}.edui-default .edui-cellalignpicker-body table{border-collapse:separate;border-spacing:0}.edui-default .edui-cellalignpicker-body td{padding:1px}.edui-default .edui-cellalignpicker-body .edui-icon{height:20px;width:20px;padding:1px;background-image:url(../images/table-cell-align.png)}.edui-default .edui-cellalignpicker-body .edui-left{background-position:0 0}.edui-default .edui-cellalignpicker-body .edui-center{background-position:-25px 0}.edui-default .edui-cellalignpicker-body .edui-right{background-position:-51px 0}.edui-default .edui-cellalignpicker-body td.edui-state-hover .edui-left{background-position:-73px 0}.edui-default .edui-cellalignpicker-body td.edui-state-hover .edui-center{background-position:-98px 0}.edui-default .edui-cellalignpicker-body td.edui-state-hover .edui-right{background-position:-124px 0}.edui-default .edui-cellalignpicker-body td.edui-cellalign-selected .edui-left{background-position:-146px 0;background-color:#f1f4f5}.edui-default .edui-cellalignpicker-body td.edui-cellalign-selected .edui-center{background-position:-245px 0}.edui-default .edui-cellalignpicker-body td.edui-cellalign-selected .edui-right{background-position:-271px 0}.edui-default .edui-toolbar .edui-separator{width:2px;height:20px;margin:2px 4px 2px 3px;background:url(../images/icons.png) -181px 0;background:url(../images/icons.gif) -181px 0 \9}.edui-default .edui-toolbar .edui-colorbutton .edui-colorlump{position:absolute;overflow:hidden;bottom:1px;left:1px;width:18px;height:4px}.edui-default .edui-for-emotion .edui-icon{background-position:-60px -20px}.edui-default .edui-for-emotion .edui-popup-content iframe{width:514px;height:380px;overflow:hidden}.edui-default .edui-for-emotion .edui-popup-content{position:relative;z-index:555}.edui-default .edui-for-emotion .edui-splitborder{display:none}.edui-default .edui-for-emotion .edui-splitbutton-body .edui-arrow{width:0}.edui-default .edui-toolbar .edui-for-emotion .edui-state-active .edui-splitborder{border-left:1px solid transparent}.edui-default .edui-hassubmenu .edui-arrow{height:20px;width:20px;float:right;background:url(../images/icons-all.gif) no-repeat 10px -233px}.edui-default .edui-menu-body .edui-menuitem{padding:1px}.edui-default .edui-menuseparator{margin:2px 0;height:1px;overflow:hidden}.edui-default .edui-menuseparator-inner{border-bottom:1px solid #e2e3e3;margin-left:29px;margin-right:1px}.edui-default .edui-menu-body .edui-state-hover{padding:0!important;background-color:#fff5d4;border:1px solid #dcac6c}.edui-default .edui-shortcutmenu{padding:2px;width:190px;height:50px;background-color:#fff;border:1px solid #ccc;border-radius:5px}.edui-default .edui-wordpastepop .edui-popup-content{border:0;padding:0;width:54px;height:21px}.edui-default .edui-pasteicon{width:100%;height:100%;background-image:url(../images/wordpaste.png);background-position:0 0}.edui-default .edui-pasteicon.edui-state-opened{background-position:0 -34px}.edui-default .edui-pastecontainer{position:relative;visibility:hidden;width:97px;background:#fff;border:1px solid #ccc}.edui-default .edui-pastecontainer .edui-title{font-weight:700;background:#F8F8FF;height:25px;line-height:25px;font-size:12px;padding-left:5px}.edui-default .edui-pastecontainer .edui-button{overflow:hidden;margin:3px 0}.edui-default .edui-pastecontainer .edui-button .edui-richtxticon,.edui-default .edui-pastecontainer .edui-button .edui-tagicon,.edui-default .edui-pastecontainer .edui-button .edui-plaintxticon{float:left;cursor:pointer;width:29px;height:29px;margin-left:5px;background-image:url(../images/wordpaste.png);background-repeat:no-repeat}.edui-default .edui-pastecontainer .edui-button .edui-richtxticon{margin-left:0;background-position:-109px 0}.edui-default .edui-pastecontainer .edui-button .edui-tagicon{background-position:-148px 1px}.edui-default .edui-pastecontainer .edui-button .edui-plaintxticon{background-position:-72px 0}.edui-default .edui-pastecontainer .edui-button .edui-state-hover .edui-richtxticon{background-position:-109px -34px}.edui-default .edui-pastecontainer .edui-button .edui-state-hover .edui-tagicon{background-position:-148px -34px}.edui-default .edui-pastecontainer .edui-button .edui-state-hover .edui-plaintxticon{background-position:-72px -34px} \ No newline at end of file diff --git a/admin/public/UEditor/themes/default/dialogbase.css b/admin/public/UEditor/themes/default/dialogbase.css new file mode 100644 index 00000000..cd663d5d --- /dev/null +++ b/admin/public/UEditor/themes/default/dialogbase.css @@ -0,0 +1,100 @@ +/*弹出对话框页面样式组件 +*/ + +/*reset +*/ +html, body, div, span, applet, object, iframe, +h1, h2, h3, h4, h5, h6, p, blockquote, pre, +a, abbr, acronym, address, big, cite, code, +del, dfn, em, font, img, ins, kbd, q, s, samp, +small, strike, strong, sub, sup, tt, var, +b, u, i, center, +dl, dt, dd, ol, ul, li, +fieldset, form, label, legend, +table, caption, tbody, tfoot, thead, tr, th, td { + margin: 0; + padding: 0; + outline: 0; + font-size: 100%; +} + +body { + line-height: 1; +} + +ol, ul { + list-style: none; +} + +blockquote, q { + quotes: none; +} + +ins { + text-decoration: none; +} + +del { + text-decoration: line-through; +} + +table { + border-collapse: collapse; + border-spacing: 0; +} + +/*module +*/ +body { + background-color: #fff; + font: 12px/1.5 sans-serif, "宋体", "Arial Narrow", HELVETICA; + color: #646464; +} + +/*tab*/ +.tabhead { + position: relative; + z-index: 10; +} + +.tabhead span { + display: inline-block; + padding: 0 5px; + height: 30px; + border: 1px solid #ccc; + background: url("images/dialog-title-bg.png") repeat-x; + text-align: center; + line-height: 30px; + cursor: pointer; + *margin-right: 5px; +} + +.tabhead span.focus { + height: 31px; + border-bottom: none; + background: #fff; +} + +.tabbody { + position: relative; + top: -1px; + margin: 0 auto; + border: 1px solid #ccc; +} + +/*button*/ +a.button { + display: block; + text-align: center; + line-height: 24px; + text-decoration: none; + height: 24px; + width: 95px; + border: 0; + color: #838383; + background: url(../../themes/default/images/icons-all.gif) no-repeat; +} + +a.button:hover { + background-position: 0 -30px; +} \ No newline at end of file diff --git a/admin/public/UEditor/themes/default/images/anchor.gif b/admin/public/UEditor/themes/default/images/anchor.gif new file mode 100644 index 0000000000000000000000000000000000000000..5aa797b2240a432d9f3f1d166ed5542eaf684937 GIT binary patch literal 184 zcmZ?wbhEHb6kygJ|Uu&?oD;%Ae!z@09(NL_hv#6Slx0y!YR{?r|LJZgAju=f-$sQVWNL{+Tsz18#+~Ke%+zTWns()WcPwy8dQcr!JH# U&i)o#ra{o6vp4_np&fqGg-1;GP^BJO_p_?A6nLIYwB=H*Qp>A8nZf?fNnCY(uvZL zYMq5r=M|ASom0_?Sn7~VE3B<^mcq1BrHIr9EGW>Ifm~m?y<>mJPIAsKPjWszPx7z| z^K(;^4e+i)B*?S*guTS?B+Vho2 z`WG1Kuclp>qR!nSa-c>gf6E3&1HPK$>6qGXeOCp%qBL8aEd$S;?m%#@0uH|roliGe zy#i~1E?Ad#U1t}6uwt+qqgIm=xY8r0F*7 zl{ZWo1&^Wcj_roRaNKw0cq|%;M#7eRWh<*7;!rva!w3Wdg+kTSXqlOr3+!(Y+UH1c!M>bUYK1<=lG*1pq%m&P~1QC>Rx($IJPWjnN zpR&G{Rq^JvgludxnIl{D8LgfGe-+MHCcM_UcHp8Td8VLE6B~29!k7r659<2nKp^Fl zj!GszzF7d5gy6DP@ZR1H93XOu{-OI@l6&5C>BJ*|uw%klayELyqgg z(1r2VJa0I-7Tj#n#oR8}RJ&g+`2!5Q8%of3mwZ1ylT{6m^cuZ3bEx<+w~3H6c=s2I zHqmMPM&{IH<=Icl=QPsL@wWkIaQ9;d5!{KiwDTAp6ANhcA|rcd_*y;vPo-D@#WUD8 zxj?H-u8_-Qb;^#oX{dywAOO4sP%-&Maru89peVTaNW45UP{=b_+ByMxH6aCa_?|l> lFG7akQpaiL%L!NFwXt25X8cm0x*UH6P&xU?o7rDC{|kH`9-#mL literal 0 HcmV?d00001 diff --git a/admin/public/UEditor/themes/default/images/arrow_down.png b/admin/public/UEditor/themes/default/images/arrow_down.png new file mode 100644 index 0000000000000000000000000000000000000000..e9257e83b00375259f2f724c7cbac03d0df5ceb2 GIT binary patch literal 1610 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE;=WQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2v2cW`)d{3jAFJg2T)jk)8oi3#0-$aN1{?c|g2d$P)DnfH z)bz|eTc!8A_bVx6rr0WloBA5~7C5J7WO`H;r3P2|g(O#HCtIc{+1n}DR9FEG$W1Lt zRH(?!$t$+1uvG$^YXxM3g!Ppaz)DK8ZIvL7itr6kaLzAERWQ{v&`mZlGf*%y)H5_T zF*i5YQ7|$vG|)FN(l<2HH8i&}HnK7>P=Ep@plwAdX;wilZcw{`JX@uVl9B=|ef{$C za=mh6z5JqdeM3u2OOP2xM!G;1y2X`wC5aWfdBw^w6I@b@lZ!G7N;32F6hI~>Cgqow z*eU^C3h_d20o>TUVrVb{15Cdnu|VHY&j92lm_lD){7Q3k;i`*Ef>IIg#cFVINM%8) zeo$(0erZuMFyhjbK~@!5ITxiSmgEG&eP`1g19yq1OegIswNQ-xSi<4Z1u2!m4XhFqBbF8wG<_`!+|HhuxMFc&SLMF{7Z@fVvH$#8 ze|mSH#FSX^%>h00S4ci?>YufC3b$>be$N&e)g9;i=5%xkTh1s~5&sk~hpZURp;Qa?iE^5gq z0+?2AoO*aq`+eIDGp&3MoLz0RPBnf@mZEj!Y0cZVUxN2^iyZs(a?eI%oljxTtdUFo z4zJtT6vh6mc<(8@dEybWbJNr%Pc%*VvF}gIi|llP_mw#+z3j zapfmJXkU5iJgMMaq6;%eEr0F`fv2A$yk@Z1O`YMLW4b!$#En-43)(gNwO&tIE1$YR z{=f_5V<-h{r;w^f@VvOcJ`XH-Laf=HZ$7pE8y$b zea|FcbA8_y&V4&;c0EYAF6z7Uq;gWX%!S@_GP~BiYk9@S9hp{rSmuZc`!rX#z78?b z>^=VrHI}o6**U$5wKDVU&pfZEJI56Y zoT$4mvucV;+x1h4)@uJZd{#I=XN5ldnP;uVH#)aA-sLj_f6xsvx)X=xc_v2 z@-mt-`NgS3hTn0)cfZMswpSgNlI1YlD$F(+3=d#Wzp$P!&XKAJY literal 0 HcmV?d00001 diff --git a/admin/public/UEditor/themes/default/images/arrow_up.png b/admin/public/UEditor/themes/default/images/arrow_up.png new file mode 100644 index 0000000000000000000000000000000000000000..74277af1e6a8ef91f8fe664efde11377a5292dbc GIT binary patch literal 1649 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE;=WQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2v2c=9J8kh>{3jAFJg2T)jk)8oi3#0-$aN1{?c|g2d$P)DnfH z)bz|eTc!8A_bVx6rr0WloBA5~7C5J7WO`H;r3P2|g(O#HCtIc{+1n}DR9FEG$W1Lt zRH(?!$t$+1uvG$^YXxM3g!Ppaz)DK8ZIvL7itr6kaLzAERWQ{v&`mZlGf*%y)H5_T zF*i5YQ7|$vG|)FN(l<2HH8i&}HnK7>P=Ep@plwAdX;wilZcw{`JX@uVl9B=|ef{$C za=mh6z5JqdeM3u2OOP2xM!G;1y2X`wC5aWfdBw^w6I@b@lZ!G7N;32F6hI~>Cgqow z*eU^C3h_d2fv+#z;JjjJKmmhHzap_f-%!s$KQ|ZTFR<$3lAu(CGq9>I4yi0i)elN7 z&Mz%W2F6F4GE6ft?C@IzQV4X7m48ttFj5k8T=J7kb5rw5JY8&+fHHb1nJHGr&Zcf= zZpLmdj^@s;MuvtK&X$(07A9_{2F`9K1|}9TGqCA(Gj?@#HgIt=cQbG_G;}qxFf=l- zbaON}GPN)@wKR5t>GjMjE=kNwPKDW<3A7ig*AcH?E9aur#FG4?ko^1{SPBTp$S=t+ z&d4uNa1J(A2+zz*$uBPkMGnNTE~!PCWvMA{Mftf3;Lx?o#9}*PUqke!kP~A1K*#8V zk_J*zfe8WAABYK0_&^Rk>!juZ^GgvhW0Y{Wv@$R-E%tPA45_#^WvZ{gh@(K;>Z+== zX-At4KPH3-+4r@v2}X8*AN$Mh@OiHNYs3&%QbHW!0`#zh1`9tBzYV@8G#Wg&l2-#)h$FUdfE_lvm%b2=kt^Ebzn( zr(4oF%+7xg2Te=y(fqh}+AK?Nt8-e6Vo~YWrY1FhH}uX($oOv&HCTs__< zzEdCca~LbgR5%PtJYh=3FjGRGp=cUaJC^c^yU)Zr^k2P zlm5xRG;W0~lefT@)ERLuic?K4bNlUNS|KodrrwHIUNWEc`M1i>U^rI0VS1uR{)PLi zihmWG2&`Lpzrjh}nD@mILlb2Uhtt|CHp`N!r`KF5c$VaRcJZF}LJe(& zwV}p~KZGbP@?1Z4Mc+d4`MOQrYgSe4X#ZDh+%|1dL)h$@nv3?ZH`~Z?rV3X7(F@K> zb+Z2u>#VllaHj5&E!~}`b21Ja)w^fT&+2mzy!OR_pE1^}_1<=w+EA5Nm$Hp%M~^AK zU)Z92;jd=Sl<1n3x7z+*ci#Wo(IT=)J{K*+Q?C!N1MD&Sbd le02W-shBsPKJ+s%GgK)^wA}p_d>&K@c)I$ztaD0e0svXmV!r?Y literal 0 HcmV?d00001 diff --git a/admin/public/UEditor/themes/default/images/button-bg.gif b/admin/public/UEditor/themes/default/images/button-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..ec7fa2eabf0705226fe0c488d65198508bf547e9 GIT binary patch literal 1114 zcmV-g1f}~&Nk%w1VKM+R0OkMy00030|Nr{?`~Uyg|Nq+c_4NPz*Z=(3`t{5D_RRV9 z%lr1t{P@xN^27S{$occg`t-~D_Rjb6(E0Jf`t!&5^V9k7zxnUL`S8H{@x=P_$@uNP z`0c*=@5lM`q&aU|6w)f(-(ZHJcKyq);w!1v|A_vOL(=ELpXz3||{+03)&lq#;^N`q z;o#ul-{0Tf-rm~U+Sk|D(9qET|Nj6000000000000000000000A^8LW004OaEC2ui z05SkF000O7fO%_oc!h?Ch>41ei+5{zWp`--l$Dm3n3+> zsF_HyqQ#3CGiszrN8-khAVaF@xTd7ZlPFWFT*=ZTojPn{%A85Frp=o;W!90Hv!~CW zBj>nb)267=qezn~UCPvr&^vA(N|o9Msu?(T?r7c0wX4^!V8PmfVC>oFmqw6)fdnp04j^zqp|u`Sa-0r=OsK#f}aaILMz*zrOwZ z`0-!pup>tY5FP|5;D7`cXyAbdg3v(@I*72r2M|Um;e-@cXrYB0h@gWGA&@Y_haiS1 z;)o=cSRx4_Z1{o+CA8?`i!jD0v_{FvJiptdPRD zl1w(~KIEzAo_zM{=bwE7aRU-l5Rn8GGXU|#qKr1`=%bKE+9(h+P>}@@TWDd06i{^P z>8GHED(a}AN@0Z-TXdns6;*su#jCK!D(kGY)*7p;S18d%0YNN*1r}fgE9|hu7HjOW g!~VKN5CsU(L=jFzEA6z@R%`9G*G3VB0D%AiJBq`ncK`qY literal 0 HcmV?d00001 diff --git a/admin/public/UEditor/themes/default/images/cancelbutton.gif b/admin/public/UEditor/themes/default/images/cancelbutton.gif new file mode 100644 index 0000000000000000000000000000000000000000..df4bc2c06d485df4403d689c98ee745a4cde8e97 GIT binary patch literal 1227 zcmV;+1T_0cNk%w1VH^Ms0QUd@000010RaL60s{jB1Ox;H1qB8M1_uWR2nYxX2?+`c z3JVJh3=9kn4Gj(s4i66x5D*X%5fKs+5)%^>6ciK{6%`g178e&67#J8C85tTH8XFrM z92^`S9UUGX9v>ecARr(iAt53nA|oRsBqSsyB_$>%CMPE+C@3f?DJd!{Dl021EG#T7 zEiEoCE-x=HFfcGNF)=bSGBYzXG&D3dH8nOiHa9mnI5;>tIXOByIy*Z%JUl!-Jv}}? zK0iM{KtMo2K|w-7LPJACL_|bIMMXwNMn^|SNJvOYNl8jdN=r*iOiWBoO-)WtPESuy zP*6}&QBhJ-Qd3h?R8&+|RaI72R##V7SXfwDSy@_IT3cINTwGjTU0q&YUSD5dU|?Wj zVPRroVq;@tWMpJzWo2e&W@l$-XlQ6@X=!R|YHMq2Y;0_8ZEbFDZf|dIaBy&OadC2T za&vQYbaZreb#-=jc6WDoczAeud3kzzdV70&e0+R;eSLm@et&;|fPjF3fq{a8f`fyD zgoK2Jg@uNOhKGlTh=_=ZiHVAeii?YjjEszpjg5|uj*pLzkdTm(k&%*;l9Q8@l$4Z} zm6ev3mY0{8n3$NEnVFiJnwy)OoSdAUot>VZo}ZteprD|kp`oIpqNAguq@<*!rKP5( zrl+T;sHmu^si~@}s;jH3tgNi9t*x%EuCK4Ju&}VPv9YqUva_?Zw6wIfwY9dkwzs#p zxVX5vxw*Q!y1To(yu7@dCU$jHda z$;ryf%FD~k%*@Qq&CSlv&d<-!(9qD)(b3Y<($mw^)YR0~)z#M4*4Nk9*x1lt)=I7_<=;-L_>FMg~>g((4 z?Ck9A?d|UF?(gsK@bK{Q@$vHV^7Hfa^z`)g_4W4l_V@Sq`1ttw`T6?#`uqF){QUg= z{r&#_{{R2~EC2ui02}}g000R80N?d8lSPY`ECmaSA@vT~rz=b%E}1xSN+M*v*63=s zj2W|z%bEpKgUQntPOMg`Ql)Ygt58`0p~(cQlP6A|I&tD;)03AgfeIBOG>DKjY^XJ4==@p5kGnYDTB5w7&K^jxZs(hL{cL~lH}dPcdt$q zD_5TQ&|`gZmzMqH0#&%8nU(?9AzvZOs&E($thW17wAnF=2dS zixx%10*e+@Tw%iubG*?-5ob)X#T8L>VFrIHgwcf)I#^*u6G{}}gcVlU-~$+ANa4h3 zU5Eh&8T;8#LljaNAp~tsNC8C^Rb1i1Av~P%1{`$QfyY)`G0{dGGhE??7h#NH1{!Ik pfd&v=WTQt8w{C>_-)j6kG zmZ@`2opZWct<*WE%jHsMvsp;f^!~Ol**?^DO`hifs44&=f~umb34Y07v! zehXl>0V0C67HciWn4KjeEEWr@sxtk4|8?WtNwEFcm{Yc@Vy$H`7@(^3dc70h4xmY} zPa;B+{C!@Q<^CQRW6lMfrwb>zFkriOfWsf}arIZ0*)jKSzW9HD4>|2i1+FOg^6oL0 zuMGL+PHkt#*vvh~NQ@CxMMM#xZ40h-e^cjfe*)md?7iRY1HqRBjSwR0J%@RRXP>@> zkKcbjGFwIi5M!jSYpSZEsw%t>6uuy+C;C8K=M*aB-KzlIq|@mbYi)bIUbpA-`I#n_ zWy#v)_!v+R^=b{kGLNXLO{}#BFq6sTxvIY0l+`3NPhQ=Ac;nXf2W4IstBgcUD^b-d zJ3eY@@JRF1!NCEoR?7f{5J-}wDJcQkB4Re+sH#y!e2lU916r{A&pdHrm;e9(07*qo IM6N<$g2apNRsaA1 literal 0 HcmV?d00001 diff --git a/admin/public/UEditor/themes/default/images/cursor_h.gif b/admin/public/UEditor/themes/default/images/cursor_h.gif new file mode 100644 index 0000000000000000000000000000000000000000..d7c3e7e9eb5755d57ec03c34097c258244abe61a GIT binary patch literal 253 zcmVG|6H_V+Po~-c6$N^_IEGZ*Iy1qOk3oThS@Yxn_+t|0*P6|%n+#L~Iyf|E zrg84hNMwpx9_!-6|BEHhl_}FHLcZHi@xo+A>tN1bvzr~8Z#Ex)a8Qdkef% WRW|>PuXh3sXYh3Ob6Mw<&;$VH);Gui literal 0 HcmV?d00001 diff --git a/admin/public/UEditor/themes/default/images/cursor_v.gif b/admin/public/UEditor/themes/default/images/cursor_v.gif new file mode 100644 index 0000000000000000000000000000000000000000..bb508db552b6ac3f670f9ce1fcb1e55669db0dd6 GIT binary patch literal 370 zcmZ?wbhEHbQBhG}zIty_2L(xqFsZe72A-PqWelao_UPVUE#AKKd5`}glJC@2UB2rw`(IB?*A zqN1XRh{(>JJ55YXczAeJRaJNI-YqUJE-x?t@#Dumd-if8Ejy6@I4`1w~F!Qzky-V-VnInOpfk+|GDYn9AS7wc)Z8bf!!3 zZ2HZ7qm!>fg-@N3u_S6BtfcFRaLzUWGF!q z%AzEfB~`D;I)q^T@hn>GjrE?{UdLiPgP&3w>7tmXsgPC#5>G@))3jVemdgxLP8K0W zSvgGh3k4G=ZtO?YCn3lc(TL2c!850)DFo3*HcZxKVg(a36p4}m^OOpp{&p|bt$J&&x7~}fl`AqcVt%cEU2}27dM96QnwD)g zZI46N>oIHU?{_Z!WDf$^W^<7J82vsuXemZ#a;t%OX9%BFi literal 0 HcmV?d00001 diff --git a/admin/public/UEditor/themes/default/images/filescan.png b/admin/public/UEditor/themes/default/images/filescan.png new file mode 100644 index 0000000000000000000000000000000000000000..1d271588692c1726e3521032f71d8354b66fab0e GIT binary patch literal 4282 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 literal 0 HcmV?d00001 diff --git a/admin/public/UEditor/themes/default/images/highlighted.gif b/admin/public/UEditor/themes/default/images/highlighted.gif new file mode 100644 index 0000000000000000000000000000000000000000..9272b4915ad2b8d4052a19b4c80a41b7c71cf1f1 GIT binary patch literal 111 zcmZ?wbhEHb6k`x$Sjfb1_to#iH~&L`;!hSvE(RtB9R?r($ulrHOzB@K_Ll!X=Ym_^ zj literal 0 HcmV?d00001 diff --git a/admin/public/UEditor/themes/default/images/icons-all.gif b/admin/public/UEditor/themes/default/images/icons-all.gif new file mode 100644 index 0000000000000000000000000000000000000000..21915e59dede0aa22cda8c7097a14f0f1f68906c GIT binary patch literal 3750 zcmWlYc|g*K8^!@mQ327sYPRf{nw7a~O0^mt9=R-=9nQ=_hjV7mZB1R*0581p_$if} zc%)>OT8em^m|}{eqIpyzAYzIl2zf`Y0c|BYU+ z@9XPZTU%RQUDfGyTCG;2(EtFTR;!gt<;uzm>t(VQ)UK_r>9jg*R^g{tJNu0 zfJ_0X04--|eC(refH$!qQ}zyy^$d*8FDd4v%W~!Vf@(>jT97G3l6ir6Zf;2-UXaO@ zfK;xOtJb}s5&&gN6{yv&uB~ZxI#3I)u7|CyYJnjwzysA28s$51rAMRUXjJ`L^$@5W z)~ZK9B~Pm!1yy4j#amF`safgKDmfZuzg9H}t_*_99U4U!DDT!N`alI2R19fWhBeA@ z(!ERIQX431*DQB}vM!ChN2BQ1t_*4v!&-KVPX|sM1Sc=@;wtOHF!N3;4MSoNwiiywb`z z+T}t0bcSA#r5EPtMR|JBBmGQ)UR)WQa}uo0MPQHxsNH9l#r z{$E37&LE4fTi}ciyiu*lmZWo?)oE%zqrN;@J>59bU8WYabiB${3)=uud-IE&hUZyo z5v#wgL@n-`8*gf^%5Qp^$8IXoNe6X{Ja!A6|Gs--s8ihYM9p8%>JYuj5V0uY?tF1K zRlP7NXiN~crcA%OH_aeSJ^!8mGFl}b)oC^B6$C+0rBcb|a+ypfl}hL4=4NMSMIw+bIE=;&x`Yinw1VlWuR#l`9A>0~lF zIyyQsGBP3}A~ZAC*?3}(Ig+dxC;Is%YA|B>(?6A-u_qF?<2 z(*NNw6u!|Vm|b1ON<#1O4QBS+Goi2p;UCyF!nWJ9U4MRorj_>OI0sY&_q=-Ao9}FV z=Zl!gC*4mxOlW2vwDN&MY@F#9-&*=$i5IJA2jTTIuP7nK_aEOnmyzH21>r|MhAQ4y z;WDF-l#k3c!VHHhuJ$rsOx8yU-~ID_eS708zYW}vz4cX7Z7`X@%AZy}%_48y9n#0F z5q49|jBOUq6NtUk1Ghf)HN2i3pq)%@{r1s*@7|Jt=OLWKcYYb(yuqI8*Tj%cGXI$W z#A&Ku8n42e<*qg{mxb(m#o&Nvd_5BiE?Jh1~W z(HFA6t*@iKtRVXHTsbY#_V2Uf|UpA|J zZy}G--t@TCz#ns5{?Jv&SsWJe7hZF{c1vq{mu^Yx#*RIYvpAx2>vkD8OhGsuwL9O5 zl%R;L#s$XwVw0?E_fqr9&=JE%4=emB^8$yBl6_$d*iPihofe&M;7*mY4ur>ojD_}2 zi?UQ(;te;q86NJn@I(~FqkZD{$k{vdBji2K<(2YxJI#tZ(Vhpt{+@;it~q5L;IQp& z|F`M|#Q@fL?+W*nt@MCpz=fJlYXmpK)B1vg#arHm%eR#yfj_@cjt0l1e`9&!0^V~N zzn{Co_9n&RtxZI|R5cmZy;uF=&imWy$@7%+Mz&We`lDYN+@bk(*<7=V1g6POF9AWC z$08sk|61f>dj~-7Gzcwid23e?vk1=8l3X>C()`G~lI(nZ;>^Ko|1#`<>vYvF)V`0@ zN}01SwTq12BK7BkwsN)usndeJ%yz2M$@@H(bPBF_)qQ&sLhiGz(ySY@GXuR9zJs5% zZw(OT|GEZB%B$7@;)Nyn&T$r_We4fttF={Nw(2`gI$ZuxSB7uj;htsccLTN&euf6K zWw#q0mJ!iuG(%geiC^ipjhPUKn}$AEKb*kQ0Z|0^_UW*EEQ@zOQ)KE*HZi;AA4i(T zxtztP{E$ns!t@oPV%V%NHL@fuq8P0|jXxPsARukx*}2^>GQGg#CZ0?ywkr4Ww4bQ9 zD#IqY+@DT;l<@N4l<@BgK*Dcb?saGL8?4H9f?2oKD zb(P;?(+e+kFh0#bu~|+bpDEpLyUXVa|AcKTq-$@sh4ThxMJAJ7>gdtabM~%0hlY6S z?A>$P2X;O11Dxl6qbB7_d{$~JE^*J#r+b4Y-##-v@qLws}tREGRoz9=TI! zTjpD~KfkB%{EO|IJ^}$x%T9B`gA|X)`pVqvdpMDI6;I;jMu&LQs95IpEh3o_re;@0 z4DF=78Kxc9Nz91x`Q;zp9^)e&MS5yfb%{MtnTr`)Mt0qg+oDD|mo_h>9=bc)FZq|B z*gE6LlErNeZ=mDf9USyF!P+N|CmmBAhh#0X+ywCR-W!w|8|)GxAUElZ;y8r0hrea_ zZL4olvLC48xUz5d_Cfhs0bVU7U+m);AItL%VBIk&_q=Fz0$Gyz6oq@H!R|UzT;co& zo#h5FlY$nB<}5nPKG=`v!G{iYkqy3_^0`&a9?T%QiocLLBn3B3WH7dS*-NqWA=aL# zSo%qOA88_n2Q_a&MW5e*H~v-tHIEJy)lfN=p&q^C{dZNbX~-90-rr9QJyzAy{iN5O zveK?s7u!@~y!Ja51-;RePuL{^r#44W63^M6uq&p&xP;3xJ2=KS!TPwOBM6DX?I)NR z3r|-|X#5_4U_7QgZbP7ugAHvP?H_fzas974*%M79M@btQsfl>5P4i}==gxmA365B( z=_U5kgC~>(r&EFk8HfG#v7!xoVyDf1B6L{N2)KQ?<7R~zFT#P2)PoMisGn)9t!Q1s zcid^jpV(8IW531|c`yrGcf&34+Rv^1%J!7TaYR7+X5@eU+RhIM2g{d z%i{vejlzwG+&j14{a~`yc#}n;gI79!+SFeXXptw0&)Zu>c8Ke+hWzXHRnW4@bt|ED zl`Q`8U@+qP{bId!E`9mC?DN3~O2Gcxk*;6O=ra99#eHw#cW56AQvGFzcJzcL>?UQw zukYM$_cHA5zvg=>zVRfx7P{v?vPFuozh;<*s-t`Reg5HzhDSeJS8=&z+!9AKsLrUX z{P`mkkqc?v$%Y_s*DURB@JG2L5X0C9mUcKu^A-np-@}B6n}zY?T)*fu+p*bs*elE} zveS^eKV-vWwUd06s_xbkY51>4U{Gv*UDi=Zc!1VvIz!F8I7y6AcYgAE6che>b1cBdr-nKKt*BO?-i%phV7VQUt)HC!xje%+lAnzp8c~V?y|vd%3&V9UD*{O9OH7nfqm(4$JCz>b;BWG57TcUxf*HB zD8wYtPu)1Vx)?jq^vNj*hHBrkXz%={BK`^qQNWjx&ov7y2BIa`_y&&TW|7mmzk2>A z7_e0YvBv<|AG0PYmbM#tozo0G`Lseazis?OyJj>KXRsrzW#MMwUGB?P<@PZG{FIya zQ#nmlD8<505J-Zgc3Ah;R(bw+_xbl2274jL;iX$iHi)f;V*{9aHNVbFV%jcq}0VNWj4p2O-FQ|HRPP#IUf$0W^~T6p@NHin2@k9h3AM z96kUE;b4>Q(vvuZq$pVu!H&HC#{>A)VVMz`N={*tQ!z-s{u?9?ot%wH&h<&o2qQ;Q zk{>gZ3)so|&cQ=mqhd@-X<*7zXC(hCWJGmJ_AjD@ibX>3NvpUA)5GFJjKRbiR$AtCbEOkHdy2*3KCU<^A% zG5nFT0nA*EH8yRaAjT=kWJ;YUvIJ*r^<$RJUs=|NOl5&r#{7|^vMh&9+1pLBc?2Xr zHrx48wo60yp5!0})|{S*TIHhX(dJ5uZ&}-^0HG;<{`T+KDt5ptjAp#s3%a(DA1kHX!?vqQlD;Wp)6JCt|h$Gp(L^1>eFg*W8= zG-qBRHjhjWkJ^-9=AM7&bod{;@?(Aszt@xZ5X>iRqLL0#(ZU$57n=e*8&J|D-$)!AlS*c>zo^a}*K=;?Oxu1;q8$jw=) z#?tcJJQ3 z^m9Eb>Y%HuYi`xZlP6D-l8&{vw}<76fB#-PabYYyBjba)nW3TKwQJYb);BH{7k?A~ z92gkr>FF8h?#`|l8RYrQFRxq0*Ze%jSYF-GD*~Ud=>Iam^z8YYnmc#?uCJfFIXLxZ zwpC4~>fxYI&LZvdivt&b>g~Qf_3?K`am&-mZ-4&$NxeG!?0~}T{Ga*x`KUzR-PrB@ z!=ux)-+nAFAHE{ad@$SGJ@RpGK9+eq{N%0auRljdC&fO#Ih7xM5-!O37y6xi5x~9c za{6;kL(|64nY0^EqlcG@YCk0xJ-YpH;q?6`0 z@Npg33r?sr2 z=Rduin&`LpXa9b3@WJr!MAju$#+SRna#M|`s>UUkdghTQw!rt^eR?b8$?_|Og30Va z%l@ffKVFPxbbtP^wDM~*`uXcsMYm%Y@2_eK!y|6LNN9W~`tXCt<83Q!Np>;#yRy70 z`GaZlPPn#KHu^nxXk$pUbolzHkJ|IquXBIbegtOjo3C|l?wapUPAYv_@no{c z?GM99&iL%?{pXVI;aN4Wk?->}mwgHSk7|GX`E_cK4`@o_!+$x%a-9DoE~;ES5*v^5 z|1!JwCHlJT*_xMe`M<&h<&2wKrF0KWoijOx+VWR`l&v#P!EF zVn?B%gbG&=J}Vrxe)Z^sZ$nnp&m?V-gr70gyw>udWwrelohPy($aNHEN&Y{ye#5{Z zkOX83`WOF~6CjiXBta9X{L+q8l)Q0hKfkOi9nf(rp*EEFWaBp-e%;?t(RZHckVSB9 ztQ@#t=vNau&{#E8M3Q!1RK9of$yJ+UUtSN~yY=)2ITfSs*7SZjhc=PH_HDZT>=sS4 ze3B1#a)Q9h4}VZ8yVG5dYtB-Cl;D@A5ozFDmLH!9Q*|G+FUhB+y3qF4Hr4ifyMn;VP$^7hLS*-5X9CU%zr``WJImSD zamwUKP@1pWRR!HHh~uhGCC|~62(>4z>QD;Y+(`CFMSq$-+OtysSu*1ON#QANx8)AF z&oV5K^3cftWAURZBOFIpmqk;*Fs{YRJT5Z{s1$`-VKE8SrJ44M#*wc}60al)frvR~ zACW#sPsc)f?vF}g$DG)#y-K>bu_xw0y~LzBQZMklfr~TTJ|~7!9XMOleUHsc_zor? z4mFX}30^!S2P}OX53bOb-a{xq^8(XwZ1v_SVrui(`Fm>Bw+r&E{EvKt-CS?UC%ll_ zltbXLcI03ZY#dcIj?^v=TAU|v=#=lq3g5|#H7qU#Yi-%VLWPhh@{eQ`IIs<=*O5q? zTd=*wO!Po-*Pg6rw$Z zRzFQ6aMGI5M6^nV){5ql5X>M&MouNX&xAh7>NCkZK}M^ip73UHhWi-Zc6iMU-Vnr$ z%!)>hP6yW96?I_ocPAUvDK5hCOO;seA{dH`CU&7D{hklrAf8LMB5y;bad!+=LjJrz zCB?Puf-Q$U!5Ib;9zhN5F}wN*frOKz2ptqI6S$tbacWM-aStyO+uWRL&mDW1_>~)l zKFv3K8po4T1EP`_Qezpq|80R;v`I6DK`sJlU0z~lsQmcBaG`^DoWmv$HnR2eN4~=& zV22@)#!QyTrip!AgfJWBWw2R}CM;EUpFlQcec$-elrE&v+g%fRM-SN)$y}!3O&Kix zBv@p~YEU1H4FQ^%TJ&vGyWM&lF^%abB*h@OTsJO+Y7cE)6^zW#IXARmLHe)z@v2p+ zdb-B`x7jZ#Q~_wzR0Nd-F%c^l9i*<0q`&t=9g}QVtg$rh@S)=!C@<6U^=uY1F=!}! zWeZ^ByGU&O!lY~`nxuwOi2K{vc!^f8RY3z0%V)_>B$>ztcxcIGbRw0=*%pV$5JGU8 zV)zFXdi)^DWU_-`L*JCckU5^=p{t!8ww=vkf~Cm$Lm_3hn+NC!PrMwCN@jb=9YQ?T z>4)&>7+>vPA#O_|*V z52dH5`A~NI^8}~TOr?UOSqi?|ePS(6cF-C>cKL!EF# zI+;rcWAk_@^#ZD~awSIU;Ds{EN>7X0M=?~1q>e;FXlzgeQElg*8km-= z;wJB*XCZOd*+WYwn0;(&X*T@#j7pJe?khqt`7CY~A7TmtX%xM`7Ro))#FU#{Q6NOu7MY6P8Dg zU(I5LD-Q+D{!TzTp6>r)-BC6uLy=`XA$D#TvA;^kBAuwzYZ_KBxsjVOTlm=s)e4rg zlB1NpTXcRXK8&iQEtzd7vmK==7=)sdQ;ildn_a}BV=9ZH&h1ZgD(6jk8LMs2%1 zxbFI4*8oZ(?-*N^;!wH!zKs`jTe&%dSNay)p3up9o*khJd0Uk z1w7tSrg;aTR9p;)P!{cI!!wE%mWU(E6x9f+^qB)nj|Hs_jxWUl!B0Bi>>u%JQgR*I z$`6Ubb7Yi#DZ07wxe}WX-xH7zPo)-+<ug?$W=uMYzL)F>OO5yA`>E2Ndl0^fvFJDBtNb&NT zDs|ccH~5ngQpZgvj*%dnUb}BE1=2ntSayaX16C$-`MKtvh+5 z=|AbjJ42vkOVM))^Fql6?n}5sBT=0OP8vGG5g!(9E+QSZU&6+)TR_-ot>y-Yvpla+ zO18vC+oJcZAItRj>p8Dq1(H`sKC7w=n=4Cc~P1fOAIF$$Hsnz9o-JjBPyS=7nXd?{k2jPCjM==Y9e~&Q54zpw-__8 zCA%wh#v91_DX=(iHF{p7^^w=J1|-Dwnk*-Zdxnaf5u15-Q{>)VHCIek)w?@)4hLDM&QWvP|P=#VxlcT-H4~YOQ*}Gi&^PBj4^N^A3(c;yl)=_)cB`w3c(IcX*gTj z%m#*K?v0*>lw3@;$w=M)5jd`oyiIqj@^`y!?Hkv3;^+gg3)vIi5&L=zV4DDVMW2;g z)S<8)G)1ybGyA=WdfZ!{`&Xf1NlAz@rW6${gJQ{SV#X96vP@&5DUj{Iz*++DhbzFX z70bOHr>+~wN^2!I1|F&23NSN{w4TT?>bLs31#thEtSrfg9aq|SwmhbY4BkY>Vk!S# za#R~2$4Lmj2rwijAmz?(YsxfYLxQ7#?0)jabbwDnL@-j$oIEO920hF`y3@`{N}-T+ zs5=8G1Y4f(25IpQDA98IiUArEUPlD#m~iF=t&z^8BWboJ4Cu=w=!sP9tA4baB|MRq zKp?@?`3GM5A^mtbi7$J>W_!6j+L6h=^g?m&=KcZ~;8pYaZ#U1cN5>!*&x58okl&n7 zI*BOlAk=MeUa`a372Z+B<9C}Ps{#SLVvMB_mUBPoQR4|}kS>-9Dd|t1_{G^vKBGHz z9`O+P-Dr{Z(E{WEc#-tHXcxAey5J=d!y>7`R7>ug)!aS4xkt9>)o>tMq7dEEu()y@ zsuJ$Z!+ZmfrAW#G3)13qB+B<J0v})%m7EwGMRiE%aa%tcZx*!py{m<>a0K z5`iN5Y5PJEuy+xxON(^*Evo>4_YY_c*_^s$h%2N!B3O`S6fOgV&7h+^0BnN*mc}oB z`$^B{a>wV2zFXsNLyX|8VnrXwW(LysC6q6yxJrZS32;F` zQKE34lWLLSAzbK8i5%0mDflV`SLJgBw_k{8JH&EGg~yg6R7dq4ft%sRH}3&AT}cJF z?qh%PJV^!se^>y~;>l>;YM!ZlQtl>yyG$Vx82eqg=T;)v0a63p+(d$^39m`Vdkl=@ zh9$EeC617%)}F9M*iAZS={L0K%54Ot%5OUmfC>0CT`6>x(=3JWSOyOIszrvE)nba` zA=kgGTuZ-_VI5Deg&r8Iw2Hg4N`nlx#y2F7JhwCa@fnFZQ@}%dt znk$mS3#{Uk)^&5W(# z9eNy}+L!pN&}qcWq&tdWj2|8TlUzTLEj4-WXpTH0Z+tbwkZye7QFF|z=D0u247CSGkJKjYd2r(NgQTkuk{>-d^XkF5 zKM$B{E$kgFoINdRr&}_vwq!kO$$8b1_os!Y_Ar74kr!_&bZ;tn1sIZ`i3h4RMo$)> zuJFgT%E#N-p5A=uC_xO+A-7ZFbSo7^eQm(rwwBX z-5`S>h)@EOrhtKcKn8Cx8{}B{tPXr0SjCyvK7AFRJ&He%Q$bBbVDl*W8G$)n5N&O# z(Wtc?4Q%4Uvun?}R(J5A;R zT{;3LMmd%8l_+qVoG#OK+3L}*Di&_nd{^zOi%AKHLu71IDe52t9Vx&ii)5{V9$(uY zYr5X^`~wE|;Dg&k?|w!Qd2k}1iCygpGliq_VZvK&y?0E)FXN1P2nL~#G5i?5*qcD; zJ8lbP^7|-K(9Z34_KWKv2TRvkOsG40+LqtNLfM^OM^T~LzXnKk}0mx7Sh@_^vD$K zdk>fIsQpc8SThIkVfM)1@A;hpsF#8;A|MucGG_Z^tPM9#c;X9!Otn1;+ye9xdqIq| zF_>F&)14Q{a75V1+-pEb1Ti7OcJjLbEpU?q{4NQVTG|QA*LBy{otl=72K4-V^~kll z9!pQbb^q>l+brh5EIk=fyJgQBRc!`j_5zV~Y-S09E$mhWLv;iw?VV#fPoUPN$W4ym zFga6A2JGS|@>T|Fs}N!>c>}TB`HaW_4EkYP0H|7N&=vtq4ex!BfjGk$KSLWoWeXV7 z#;MoF5Aw$){Pyq(-Hj6U7mrfjWVZ+Wed?(V4&K}6l{@Zc)*f+o{J=FpUL>n5>Mt-I z@Dsw7MY6KCxYsjgqH=r!$^3(y`Bbk&jsc2dgrW%YtremuRF77$O=iH`L8eN~ zqPwABPm--C?-&7>AP34X(F5=A#NoFyR8`ZBpA<=iV|Q(U6rMCjjLlp_To5Cg_P)CR zBtc~q(HQ%RNXFI(Up;>F1Of(y$4JeT07tgt{FzTv`6Fh-uSeQ}Z|fsF>0LiO3|4ZU zu9=cx5u_=}C^#CV=hsQXhmqdCnVPO6%{~!sW%)xI0zmhNzwbOgH2)S_hAN_WuhqRf z1UzrNirWQx>qkPy?}Q_E!B3MQy965UtFrt1K(6AkwdF_hUenuR{js7QSwF$qdQcBO zXgC{Z%pAWVKz`$m`~H>HIXA9%ZpNn$*hhk#_@Zmh7r}AwH@zL%qVb<@+>D`l`_6?K zBl93-AsiVeIzWPd_kSU`XgjL2^K2~OwK4lg?E^e)GUJxdb9s5M@S}*_bKB@N1hEuTocCFIA+Ae$r0?5J<%ZX*gf|eaFHgP!&!nF& zN#TB;dHUNH{fA%|P5Roj?`xAxcVpbw);z@go3{(!+>Er}$!HMsXGJh@AVLex79O@I zqMgp7pIk@e649zS(P=t7uoOC#_brf*ROi2kh81c7^PVma6M?|X^+#Xo7q0Ge(j`K7 zszV7fHxrQs3TIuIy|vQ?su?- zm@Fgy^Y(kTEkv0FKOkIGzkzh~dZDW2o=l67r$sPmOGXwSjCoS8HmP~{{eQPlf8_$PWiNQx*fg}4MvFASO3BeBtxDUGEO?E&1EWkV|k3WYg{Z|*HUzP$MrMepc-0DA!3m>Dy$1wOf4~A#_tgHzL zQdE!85&d#eCU(Dp#DPG^(qETtU~;^_Na#;5qaF*<%wye(h&u5JJLi&7kn z2YVs&WAZ3*+)q4NI@&s5Oo;z z3hzjNf`2s+mWe&E6f+z2v9l*j%PFtc(1nZJspwxb&-Xn~-8PVu^O@8c<#|=7HzRcM zCfg2es2|i)+VL*qx|Xu8tN#%PqIu}yi@b(usH+0jI#l%X;+-_OAvI5Zk3YLnu}4_5 zclxMFaEq3M!gI0~430f!HZHB@+r>#yqH!_+?VL0e&N=1_sqq4&pV!5GmUh%s1}*1I z7??lr`Vq&N$@9tx-gGd8xV<`jCj=H8VHOExVg)Ob*w;<229;xv9#G#sb~(>z2&bOc zu5>Nd63@9VjfUry`}n;{{%Jn-YhJ@-FXW2FbVvHTA60877Ct|}d+^=czo%El#~8&o z-tSkCma<>|W+M0a+=kp>*)ADJxtW|z{&;6N>~1hX(VF>_&eUDu&)7>@%xa+_V`}z= zIL9?QY^T1kqFdf`JT>i({S_hx@18LYQHjXV%F+a7pD%M()vDGf?hsRSHO`))mdg|n ztaL4%sY?R}d*=jjOUJ`)>K&QQ)O((X6q+R zvt^9kCYdNK^$Oin+BabHbF8iqw+ms-?352VQl*%+t~;Jx{cygO$*x;_^{oqVV%sCV z<<=rDGx|sMOBzHr?94-#`70s%be>rA(Cv05Sct!mXJ{jcR|kL7n-K9PaS!8t=o`E! z57IdICfDYDauVD6Oc^=P+S2NkL#{b$WI<$pll-)usWH4kVa<-C5 zvL!|>;_q_^R-Zrp{1<+#ywBOtL!zB2*I55h`}XZPM{H)JdDszdcX5K7@>t-GZ^oBx zPsg^r`gkSh_UR_oBXtjJAGz=YfUENy^Kj86F-rD37D3LErD+!qZiP&zq z)*iHb^R9qX?_d37KU!MbJeeP-Vf5*m!;&Lwhr*KMRZi3NbzS`RNc(l8_J`~3;tK># z4Dj-#x8@?X|!*>Iht{Lf)SlA=y@x-WWtV2ka z)Nl~oEQuoJhQg{5(EZdINr!YeMR$M*Ras})D_j>#*Ur}0%s=#NAq8WQ$xs?zLHaA+v#*M2fw;NWFCK_@MHs#}8$xsA-p6)jXfzDXp z+MZ8`>s6Cy%V}We>)$n*hf`sb0`?wII3}9Og%P#n!hd%`qdqHvTY0X! z7<6i3V9{-h}%g<+<`3e@FDVN!&`* z)2V~FwcoPu7Vn;v%pIiMkT3XPeelNm+KvCH?_ty>Vi=|}T4hiGT_rccY)QqA=m97^ z+&Wc9?~to!2u>zX7a|EV3J!ef%dKqEF5ts8@dX!fybh)97df0Pp1di`6$19p(Bbn^ zHS}Q$+oGL*I{LHY^|fkjf>{2S4GTy-GQu+hjEfNlXm^(uh6&3t!-pqaN=Kb-bjSV) znG^Rvl5~%Ry6)ZG2uTX$)Ssv`+4t(pL{rVhI;~S*_q;bQmnG55F{Tb$cEauzP?iM5 z3uWmj2ZJpk7`Y7w1Swc}6oK81fb^ zrHqp6XRa0-7GjEj=TqWy_uO{-a6akJl=l*-QuBj;cQrMj-}kDU>cIe_)(g%A^$f#N zoTiLq01>DEGudZTxwZX69SY<-{q}gi?$#fA1M< zmZSaRAaXq7?ndh6!NA@Gd%1>e$Cgrv3H}FWIOd~;LAmxJrA?Qgp806qr)Wt5h zc78jrLGDOY3W5A^Z*6@aZeiRO4x|=$TNqmj{`U5uX-tUhT8vNLETwW`>ZIiHEn1q<>Z@|w{#0jB zM_7hS=#0E19gPgnmVapv57?n>=s6VDFw$*(^T>F%BZrK1htE}j=eJsEJc+2{kPdi^22ve_%`qJna zwb6d(n*h7dt$%c1Xa{oHy1OB>dz3c^irx(hQ56aUTf+g!8yR627FF)OR>&$B-AI7O!#2$NGv|q!v8@C#GuV)Q4r45^m zuyOl-EbBac4~XbGFDfiwe?Rp1YXk@$^DEx^{YS5du9EQRP0$qhyxxG$i0PRbgV~dd z*MI5i$A3@r-K*0JZY2V8f59* zy?^7!dAs0oVcLbQfBH^Ij!XXHqKlsyYgcc(dWWcbp`pcwoPx=;QOiawTak3Kk-BJj z;Vy19`LQ@1m}{NKf*qz4OxEucPSL4l1yQ~P=QPoa++IsL(nSW-=G(=AO+wLw4Ddl+d z=EbJreyMF!m%>7v-|dn8E6M^G^$+RSqdZWa9_OD8^~QKOwTO1M0Qw(V&~kvw0^Y^I zvQLKEJ4z(w-^+mRFpSG_IaT74T&aOQ>13)a*8@BxjhK`#&2FABUP(2l;tzQDm=@{!FmEfP(Z7Z&TCFe6Udx1$8)OCGanCs)#mxS z`$-mQcud#B#&GzZ?y#gm1PcYR)LOuR0PaD^w!}mK8KmmbUg}Il5MFu;7>pr|(ja2Tb8iEahF;0+gN~v#Y^q6AOn4#yG@mZ+FUtf#ozD9qM#&s;x&SzTzzkHxU z@@7?!O9o5xu5%cE=xLX`;;gL8tcfYVvBka=)3FT)Uv4ybHs;3rHgKpIu6+P)fY^&mhHMtFzO1tMkV-5BEDJ;T)-JXu z2m`HhYY}ly0T5;YH>Cy1yeQ0KassG9+`W?op)jk3o5UNEDQ=b%(Mt zX6AO%A^vlLy|JNGbf$gc4Tqmx`EB{=s&TJue=Z$9{1X{ijoOI^=RFS^{SYMgdt8mj zR^mY>0`?lUuzb}sErXu#&KR*2vi#3JZ{RT}E<(1oOG#8#!D{`k1SVJ^+Q3^q6V3yp z=x?AKM3dwyuKQFBBML-?rdOhz#!u9Fh|WWt>vY z=Rl|RvUf08dVHwN0)0miM48NKp+QY1p&H_m)>^!rbE^DXCG8-Xb}2lBH>Hc>Y>j5e z3b|JgQ1NrYniH4ui&^1RWMV(uo|;PTPdi%u1{eME&QG=~9c*+x-1vHU4`;@BB;4q~ z8N-PgnVn@L<;rSoOFXYbWcih_Zr*1;dVZ~2 zP-Pozq`ex^c^^#Um)qBC+g$^p4Po|p=E0=dgY?(>X`#Osk?(E2_V-76)7j_`k7G99 z_rRh9@!$h^cp#k{$^-dD!994)rvVwloiFV0yN~UB!{Y@^oK>DkRGxr?Ljp2%@lX=} zqooj}PfHELLwC1}cw{iZlLidg+xuC1j7c6p04?;wGuaqAWH@Ml6<^!L9%5_mSs-M} z@WDX>j;4TPJP3K0jX9N<)lz)$6ry^sYUbW@<QCmL8bVZK(3@?L_#lMZDk}+|MrwiQQr~9bAqU(uwncv? z1cAqR5U7kB>l%0e29g>Cc4s0|mevFhoip_mqOvCU^svdq)y6^4#XKA2sBR%Px`Z zAm2d{O)+lr2-nc-`ALrg<(mpC{ zPF~tYT1tsp($~bsaKVnNaFg^@ZlD{j6r5oW_ML-~KBak);o4+)9FZ%@tw-T)(rtmy zMzqvDL1`9zmX&xeUyLL`xhX;5n}@lC>Tf(6JoRt-)s6JfT|p^9knLp7HLs8G5te|E zsYy;XutC}s$HzB=35+jU%)@j3Ayw^PYV)#BnBMkHm%aNkt?9(q2TI8OsMH6|Q!UQ@ z8i-FC8)8l|D5RPjLLO1;=Z2C))NLAhbZ99prZIQkD?8@J1~TG7Oyke={!8;uZq7#> zoj-Im_DK55X6m=ibZEo#6T_iKcu*E`&iZyNdaD{`!m%sm*xy5HwJ{h6!lGegJty}cx?8K)tH&1I9oi3oWzHR)mk6t-a1^$|r z`sc8>J$+6&I{Q19B}Y!XkN9C}@xzOpCPx!nH?z%G!G{b}#dDBD%-tq7$O6HS?fowl z1&~9$Gy=nzD@JOO(@zW2d8J%5$;*g*+<8Al;?Ccj0vtY4k5WakdqHW(KwM~Nkk{^v z8_m$Wuic`F+GC(@PO1AvtEo4o=T?JY0VzkmOE#SPxlY3AV7vad-u056pDD#m#p-_* zI86=2v}UA}R}tz-tKm0h4)vvuLQpA?zpSvu?;^V`rb;u1GWzy+v9Z$H{x*x+y@Y zMh~+1myYBI2>45UC(E5ur!57H^*LS`X zseU+~gID(Li%x*`;*0LZHC4y{K~zyvZ>l6@R&=2(XmpXGOl7LFjrjqO%i1~~_>WIb z{4;#Q90s<;CMUdD{P{>`0ok5np|J0a_mb%J%HZtA*}K=H)&pvuXTQmDu|T!!EVE1O zqGDjFM*ZvYB389EYfv-3o8sXb4XbcICYTgMNr$@=+)2^P<4!8EF*8pwLDUGYwN48s z4=_umBA=Lj2XzgHVE9Vf<{qx(IM^&5*)j)qUIs*l+{G zbd5{FhaXm5$_C0%#p8x@k~HmXYd&=wnAdsppZYdbrf!N{Tl^AE;0pIqy>4J~i6oZ07?o>1L z-b6bYt3AQ!kX8;I?+lPTyNsJ?xoGPUC>I@DIbj;dEWH%sLg?tmoVZxY#InqA?xx$j z%XiDV0)f7IBY3I2@YT+BRUf2gNjC&8jwEQG@<|-y2l%n5oe$5G{ZFHCup%B4Vjc!MAp_|?9MB7QO0qXk z=zuHHSm}B|k)D-Sy@x;BRBukxUR33Df4E24q`z}-fd~Shqf7m3EYy#a(`9lRNXUxx zPUjBH3DR&Fl7){V`88yJCPtWpL8x$jUhuFzkyLTnJxahatnB@#z=CyS8LGKj9QmgF zsaQIF6SW0~SPF-LlZk^qZ&{!(d-9GEd2YJL|Cv-&`|&MSo44NoB-wd6<9yO#w5HAH zv7Id?&(5sy)48E6+@DivDWMHpIWRD~ng};`6T-BuS@?LHRNZ=&^Z>X6(jA{FqX5dZ z-Y~%*dX-_fBuuk{b>Xb5yUfyrX+|xMm~%mWwlWFZ&2l0LHV=!Sa5m&TP66JmGe@Qo zbGd;a8BasBOfo1{Gh+$af22=uSH7)NY5H|k+4be_XO2I@GEtrQ3oHCv*uAFq$~8nI zj|k&umz&W_ov9rb^9kvC9`=OCB6;s&k(7?;uF{u&r?N3oo*XJV06Pu#uP}aIz5OEG zSH0h#QhobY)aE+@A6QxdK2V7hP-BZrh3OL0?l&gZnM<@V(o_;lx0< zP++1wov5MBNl;M#S5yz^eS5Y1NIT6QjLGORK{n^RF`)zo0j@u%)fc)vktbo|HO-pY zvuh2y@nDu(n`Jh6q*HC76>J{LhRF4oqH`mkjOsIU3)0$ z7@iB7mfq8%+dGz5>)H8HS z%)e&Z-2|jgARJWX#C>MXeg#Uy5UoG+24*M1GmX5rX>L%{<{UrCcB{kSI{gXR&9(28 zzD$=v*(_yxY1B@91;M%W#?_9#Yuf~995sn8Rl?NZ1>QY1^~`CTe`(&Ou_j^KuHznO z!KoC1HgJL2Yj;?jMy4gp-8!DBl2HoANx9KJ3%S0YuM7>zEM(=bpSL}wxyH3w<8(e&ZB~X+D}2t;zevn_O?k?3QN03@z3)>b3m}#L z1FMgq)?4MJ9nZsbGcHTpM{h zzJJOuo=>iGHw6n`8kfTOd^2rObY|yjU|z*s9U-_w+5=xCtw^nxF(2u}@F|bBqGq)y z8vSbc!gNEi`4Qh|97B4%!Kr@AgYXgV(OIIb`C`ZYVkQ(4%EH(be^&=A#|mOfp)MMf z5EuGw8Cb(^*hR9*4Lv_?VzSN;t>|4V6+balQIiA(kthC!HtfG3C1d46xUwN@ctBfi zW)*5xyO>U150g5iaNe#J$nhjhX-XzJ1zX2vQ*)q+e=EV>HKj>C76Q#)8^`Q*I@Ye1 zJtUcA+R5P160KDVywCsvMu}2KbttyoEsoo)X?ZrG_RgdFaeAv;VE|rl z^|bix;@!bNCv5E2p4y$;cVTe-vx{VH$l~138#j<&e(mxup|LSGWt_h*)6PKxMC2Y6 zDGNs5)11Gj#Dfghc2o!gL7PHd`-dnrI$Q&Mau{U)yUVz?bN|C`WSd&sKcFDt#>i@F z+iE9{8kn+oz!_CyRm=1T38jn)U11QJkEJrcuVG+e1qc8jVSNud+s=d%)u;O}L%sV2 zNJj|;T^WidY5iF4Hlue~_Y;&oph`Au_oje72Pjcbl(pB#oJ|G!uAo+}YgM2i*Jv^l zl})a^IDQD99uVX@KAq-+*KotDFKDq(6|2C?iAo*k{Mjj}aMu{HdlKc}l8A11(3OWU z>)_PQk?b)!r(!(OJgZ%-ap?3>Gn+q#lug|W}cR%mZQq3bHYuPW#$6_ zGZfPC4t>77!ZPfu9#kbJ^Ws2U&>CpKie%jACGo%{PtnxpPC$C*4hap%D~la{nQ zEqNvnFWq@~-K6#Aoz{AjN6mL0{b%xz6l@zYX`hhXX@6_--^V-uEtouBx$}6#M1ZIj z$e4C0)plr@cIwx5{xdJO)OPJM?RKv1_AnQu>49EIoR zoeAHZfx3}6bl7pzo)Bsz^1?8^t6Wno}$n zW|sc#tC&;N>&f%;UL3Qql6hxR{rl|;N>UOI2>(qzZ@~)%0!qxk++6saX6`-wZF~bb z30j~8)!7BbdiO8bF`4AK`hVx>()9d3vxyD!sgH3l*31`A1YI&@zT0B)Zf3!`wced> z`ZK)tQVUk-Ykg06d&~_SfEP24>ejKg3MiJ^415vUMcPW z*=r_DaDDSO_U+s3AKNV!G|WGE#eG=m{!38TxBfn$E7sSox(nz!K zE2NV|Jh0=NWXs+8k=nt|m`ei5JZ>n)d)O2@Jnz+3r-0=sNW>pH>t&91t4V=Lg#xwZ zyNVH+%Z)N0>uY6@@mKwsBRE<4b-zn|(r+2q2WQf$Zwm_}4TNKTh)PAxUk#dn4*pGx zn2Z|0A6%qN#>R@w?1$?h45p5qm9B%;0tTd4WT|(7?;b+|U=)??I`_~7g9q~;)*Mi~ zLGT|O{bLD++2(kiZw4uh$v^?>-cmc=GE>ffUxF*KhcBhpDE*#co}E6{DP9H?-i;qiAGy?3;hM zEj#w|CbJiOldc~hWF(94(i*Okz>jB-nfgN)6_E0@_m~@oq}{26Pm5Uj@inF6;9uQ{ z;qU8+Mw^0rn(l&M=8YS1Fzp9S?Y_% zei#-l8GUzj`{Urc=f{s--**gc^495AI>Ru^<|B>_Jlh^ie#gM>U-SZwea9Sgea-KK z-P@_zZT>yZ;!lFy=^U5zroitU&>d@Q3+rS;+~x;)pcl1JwYZRHmMSNg{2wpa6~~%f zFtd|hn}c{qarX_;;lr zd%7C@zgzq5->jZ65P1INZfxwxu6qy#vrDgIg14H@TGb`L%eHd2^3mzG`Y#ibVgJkg zx~7#R0ePzH#HoV`N97x0e|5jIx+}LFn`=kTeZLU%e)a7{3t4Ql zFq7f&1Tu_ZyF|o2YN>CcAl0yUp%|1*7@n7BYgdxtk-fse8L^ zr@Oh=`CY6svTJ+RCjWay%e(gSIad=@nYXpO??i!90-^uAD;PSLkMCm}^im(Mg|l_J zP3V_xo)9=Z#0!C0QhK4?ubW_cil6vDsJ3`G?wos!$E&$dzxV@?dbvCKMqDhf_d3h> z`m3`}%PWCExO~=5Fp;OcGrPRb)B3N2u#jKNt1o#_kHE2K?Mmx(HnX_W`}t0c`MooJ zyC-?JOTEz_J>Z5s$b-DMZvoeHJ$i4!tqYNaZ9!Rgeb>Kx8Ke8Ue>=NZz183D(IR09=Ig5Uo=;QzhAL#+Z7d}Y^il_xxROaP>R8JInOF>E%)lh4}@ zgg9r3X=nbHaQ{4aEN}v2J5A?2-cFec@tLJ>n`vc1dxp4dZ&7Zza@4Tzi ze9ilO?3*%56Z>-;JKV>8z2E)QhqT=n|9A(#^YX&p^1}D(HUP)2@Vj^hE3g8q{f>wA z*Y$MX9=lDqdFh|K-ro5q%Q>Bke3jEZlB@sRPrtNJyW5jLzf(ac)W7}Pe>CKOCk+0* z07MFZ0|gTNcMu^$1quHtDCqBD3Wf|P%vj)Jm=KK{{dCmWVZlU^BT1Gtc@kwxl`C1c zbomlyOqu^Y47BM%CWDv&TJ!{9a*IuWK?i~;T6AO(r3#n|^~Y3c5RyR#D%f!qYt|hL zMb><(b^mKtt`imbt8fI#K}#!Gj4C9xD=q z(8M+u55z#SvA@WZ={~T08S~}CA{AuzYY+lnupLPC=>yZRQ^F4X zpsYXGe>s;nEHXuK;lqWO9PRrzVC02ElU<&CX7A^wN#daLr&A~F+Or2J5a16El@V=9 z9ACbCNfHyXbO;ebQ^$_B1lj7SDob?z`}z0x{~y2rY4U);0(064fCPUkDXIpQGD;{A z^mq+VnrH$TAb@Dh08F$L zFnH8aNa!I>%`r+?{Sg30zEE8DxM~M$60fteopD&c_{uTO zIp1`wBss^GvQ2UKq!Ted`7}w-c*}LysXh~`mD!tY@@rYIvJ5sQf4vOWR+79r*#Fjo zCt7SV2Hv!{U3Do-_uPr+m6*+ublNyidNZB~2Np^hndDNu8vy0+7*&!yG&yS&J(ooy zVZ9^{vFDJS4@pIZ`VK{40#}6|n&_g9rpYN`Us@|Brb}}6R;MI%?JFfXP+|wGmB@{^ zi3DbnS7#HpsWr}Q{O3+Q8T#6^Yp!bjl_ZjtY8L%a}o-sgo8$!hz+Q41rwg| z3RIxNGXn68S_JK7EQ?w1R;Cc%iEw5lAcD?#7zyM3Z~z8)-VljcL?asQg9wZtu9 zBR&y|F$p0K6Eem5WpIO7^iKpM7)6-e$%_I4qtJ+e4Fa4Ijc7bn0DRDd8Xm+UGo+$I zV3s=?swW9V(BmHUcz^@^FaXL6;~)uHNJAbHk%?5~A{iN-BsS8EH2)|@5++$mN-BdG z-Oxo6Bmfu^!R1n+4AVkDSt(Kaj%KM;B?&}Oya12@lChNKENNLwTiz0vxzyz@g_ZyV zB!HK}6y`9ASxjRd6Pd|W<}#VtOlLk5n$eWzG^trlYhDwZ+0^DXx!Fx`eiNMG6z4d} zSx$4F6P@W)=Q>q#3Rj&VBnN>ZOJG<}cHR@8&TGIv`PqOlE&!kb73e_YnNOh=w4er^ zq7j9tN*3?|dBS7@VaVt_71~jc3a9~2@n=g!P|}jFY5@>X=}KA3(u5|Y zpD~r`NJTPJo6?jaH=XHAL{L+m#?*@;d8tVP`VW8_bpa+&>i<$rFp{Dk6`&iC>QpyC z5|f_vAWU8A6A9YYqI%Jt4jsq|##&Z?oS-BYod`z{qE?Z(^&nx$V+X>J5V(%yt|ZB8 zLay4^3G`L39}w(bKU&yfhEymxbxBWG!dQ8(l%tMCNJ?8;S(Og;Ac#e5lr&2c&2l!e zBl)aILn{)mh6J!M9mr-k3jv!bmahzv>_27;)1U6ss-~StZ4-joe=OA>Th*;dHZYLl z`lG5N>FIJ20$kyiB(?vb>Qte7)s;}zvMn8|1GwAW34C_~-BpQqD-z!Ba+f6Mj06E^{i%vFIodT*o(Gxu!Q|ben0SCBG7;c-_7qy;Qv}+yF%9l4^`?3mdfA+^R}(~ zm9VR{s??i~WV%wluwgmuS((ZN!nsAr1Rxt*hAbchDOT}{SM1x-g4Q3fMTl$tL1UrV zxW=MgEsR&|)VdXvw=}l#kZl415hG-_A#Q*KnA~J1Gg-z50W3mkYtoYV*11Y`Du$hs z+#_dIslnBBi4#WWinLq|kFabD^SI#HMfSvsj=RT(w&I36` zp#Qv9@Rs+xGXQT|DRPh#oC+cOy=xdcKm@uT*dzvyG^UkXVFf3c!6A|q8fItHvi$tXkXtr^ZV4D!xx+OvOHAODrmjS)Hjyfs z8PaZ{y!#}xJ+8d--4YbD7~m;>bDsw?13L5By(#hY1oVvXJCDTA5hrxQDI!sev$Z7i ztmsQ7(14Aygufx@FLX0p@>=T`Ri$Qij8iS|l}Gv2uV(B5m`sC#SUV-P-fco~4FO%} z)Yq^5HA85OUF{A8-6HX`(JkxSqPy9pJ|_3nfpG1KEPbWe)%us$jAYMBpz2+vfdpW# zTig+B@eui&x>?Ww-;(d*1Z6x4j~n zbBY}RaKg9Bp8vpjsxlCz$~z?kX%#G~-TiV5?_0w{Z*|N`FJ+T1pxR@X_Sq$$XxA^g zx+d-UU%#zd(eD`5*d7SevyOB?`-At|9m&&MTH~xsUEJihIzzC2*{mNw-RqWevB5s| zX`4IgC!ummupH*+o;cNLwklS^-0ttEIU#LFE}6-n620G^<;*8^c}Pt027es0n=6@`R!SZ6foENab!X%G7TI zJg@XZaOOII1WS!%!pN4PuvJ2XB4B}!C1)a_YSqkYc%g3ZG^>9uF z8A8Rj?LQy@?7RvH&J9(bN~n^m!kh}Kny}>9?FsX({m#to{Nw#_Z}bqt&o0mJ_$>3n ziX_|#|MbrvE-wR>ZXndK4gEm^C@vu?FAm`_&gw7@OTyq9F9RCS4;e4T9B|I~kP!P2 z5Ft$u4bcx5(Gd5nBrXsRAu$cd@2Y68q%09YRL-WtZ`C$21V0g}07}-J4cpqx5_OIR zOJWOqE%zpZ_*BaHkj?jM5crJE7FX)nv~BpD@7SWm*nI1>s?5p~qWQEf>vHkzh;aDA zP27@C+LRCqw~h5&kl1{R8vjW`8d#`EUYL%mfTF1C%Nu7jg}E3)CFU z!4}K}bnYc8%+xsW^QH>~L9wuQswGemhA1)>i|xkbEyG~27FQ}3XE6JOu<=rgyNoRt zk#YDAVgY8-*x>9JeJo0rj~I6k8G~{sdD13kuqdg|+QbeTO$!C1&a;A!3*&Fsppq54 z@Wh&u2Z_oXu@NhgZ7Sg}@51p7{UHqffdc=53`fG9GLJ0tPYm0TBo+@4Squ@05%JV3 z<19`u>ntw!^5Ry|FaITK0%t-5m?|P4av}lbrG^b7)y*b1k|RBe*Q9bKB+xP|v&2dQ z$7~D>*H8CS5*B-p2IKK2?~=QGYw6mn&$6gB$~mtrI*G0%i|oe4G7UGREGID~GC(^U zt_?S&AuBF0CvP72@An8zJ^%0Ogu>6(lOE#{KHXFE?2DvIF2g9&B^DDhd+WsdGcpZo zGRscxFe)<-&lYnL0z7aRkqw}n0-#pv_e#?=Q4=WDi$ZnLv~V*wtIq4L?lhb2Hpi{% z{DJCv^9YqPKK~~x-~w(MsggOrGAd*A*;tHECgSw&rlbvt)e ztlDzV_gQp+u0Q;$7? z4mk;yYYod;Ryi4#O(zpz$+m1kH8~@eOIuYi2XLZN0-_Gh;%+rCAIf7J3YqM) zC9n<>Z~=EA6>>a5N@h>uWoOn+Ka8YmkEfbe=?2mexlvGs4Q0deB?%RC6_IoAk*7pr zUNzTI^EFbZZBpwdS-^JkyB-JK85v`K2~x4(`66WcPA@x zdzW}Ww@sB%=}5M4`(t*ata(#qcK>58{jm`Zv3Q4xKY@3$VwMZp^m@M+e8X3K^N9(E b4O*493C(v}$CrKE*L~j?e&ctU0s;U#>#h02 literal 0 HcmV?d00001 diff --git a/admin/public/UEditor/themes/default/images/icons.png b/admin/public/UEditor/themes/default/images/icons.png new file mode 100644 index 0000000000000000000000000000000000000000..c015e3aac9a84ebad11b932e84722124772d9641 GIT binary patch literal 19694 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ÏmvOE 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 b`u_(2Nr-(&rSM literal 0 HcmV?d00001 diff --git a/admin/public/UEditor/themes/default/images/loaderror.png b/admin/public/UEditor/themes/default/images/loaderror.png new file mode 100644 index 0000000000000000000000000000000000000000..35ff3336457d48dbecbc11698ef8245441a94f82 GIT binary patch literal 3209 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 literal 0 HcmV?d00001 diff --git a/admin/public/UEditor/themes/default/images/loading.gif b/admin/public/UEditor/themes/default/images/loading.gif new file mode 100644 index 0000000000000000000000000000000000000000..b713e27dfba708a01c380e7c731a13b52a34edfc GIT binary patch literal 734 zcmZ?wbhEHb6krfw*v!jdZ*RYU|9&kkt+4ULFya6I z{|pQa5E95x{Lk&@8WQa67~pE8XTZz|68g!)$-uzNpaWzB4HaNuV6okB(sT7*i`QqX zc^L!>4t!=<(wVp51?zD`Kkg=-D~S>;skcR%7#$omMC>21xN*pcHs0c0tRNsF(;}SM ziPc1Fu!&|20tT$-nJa`fCQUjv@kC+C3!quI1U@ISvoqf2Xk|(i=IUl?N@{e_G3Yq3 z;U-H^uFrB+CTuRW+i+5nfx|fagWLs?!jQY{X6=arU0riqs^&x$2`7X};t z37RYmQ;O#*G6uOVn*=nAm7~Q)&(!ybaj}oz`WtJ?PQSHN#^y?3ICf5PGS1Ha8pE+k zgJmJh5y6y1=@^y-ft=a0ZG|ZdPArq?H(+2`(;|7`F{6Xpbl>GI8B?M_My|#ljzAN4 z3Pb@-+?qdUsm6)xA>j@^Y0K7lSt}-Mopvo#qQ-sCkLXFkyF zSLvgkf4d8-w;?feL$4)lp3HYoMI*E5@=0AueT*09aVgICcu;r3k!5-F!GZ%U3=K0F z9S$(a^)KPCsC4r`z65*B*uc`x?)kvPGDl;Yns{Fj0|R3#FisfHGY4!D^0$zE1ljvXNk%w1VH^N10QUd@000010RaL60s{jB1Ox;H1qB8M1_uWR2nYxX2?+`c z3JVJh3=9kn4Gj(s4i66x5D*X%5fKs+5)%^>6ciK{6%`g178e&67#J8C85tTH8XFrM z92^`S9UUGX9v>ecARr(iAt53nA|oRsBqSsyB_$>%CMPE+C@3f?DJd!{Dl021EG#T7 zEiEoCE-x=HFfcGNF)=bSGBYzXG&D3dH8nOiHa9mnI5;>tIXOByIy*Z%JUl!-Jv}}? zK0iM{KtMo2K|w-7LPJACL_|bIMMXwNMn^|SNJvOYNl8jdN=r*iOiWBoO-)WtPESuy zP*6}&QBhJ-Qd3h?R8&+|RaI72R##V7SXfwDSy@_IT3cINTwGjTU0q&YUSD5dU|?Wj zVPRroVq;@tWMpJzWo2e&W@l$-XlQ6@X=!R|YHMq2Y;0_8ZEbFDZf|dIaBy&OadC2T za&vQYbaZreb#-=jc6WDoczAeud3kzzdV70&e0+R;eSLm@et&;|fPjF3fq{a8f`fyD zgoK2Jg@uNOhKGlTh=_=ZiHVAeii?YjjEszpjg5|uj*pLzkdTm(k&%*;l9Q8@l$4Z} zm6ev3mY0{8n3$NEnVFiJnwy)OoSdAUot>VZo}ZteprD|kp`oIpqNAguq@<*!rKP5( zrl+T;sHmu^si~@}s;jH3tgNi9t*x%EuCK4Ju&}VPv9YqUva_?Zw6wIfwY9dkwzs#p zxVX5vxw*Q!y1To(yu7@dCU$jHda z$;ryf%FD~k%*@Qq&CSlv&d<-!(9qD)(b3Y<($mw^)YR0~)z#M4*4Nk9*x1lt)=I7_<=;-L_>FMg~>g((4 z?Ck9A?d|UF?(gsK@bK{Q@$vHV^7Hfa^z`)g_4W4l_V@Sq`1ttw`T6?#`uqF){QUg= z{r&#_{{R2~EC2ui02}}=000R80RIUbNU)&6g9sBUT*$DY!-o(fN}Na$VuFhf5;SOl zQR2k}8962Z;Gkkb01ZqM%&2mp#+Cvv!u%%_X3ds21*#in3e-1?2?(ltc28ctYrP)k z{Pb@UlQicB-E)}JlDi_MMmXbuk803?iR{rRp~2S#dR_^-LU%))h*>DmHq0rnjf;8~ zsJM}rcHp`#D%4?EVW;cduL6J7ThT2kQ{cJka07oF;i3Wu4ZceYpGm&F`Sa-04-5zZJCANLt@XPdKI8X22WQ%mvv4FO#q2N BK}7%n literal 0 HcmV?d00001 diff --git a/admin/public/UEditor/themes/default/images/pagebreak.gif b/admin/public/UEditor/themes/default/images/pagebreak.gif new file mode 100644 index 0000000000000000000000000000000000000000..8d1cffd64af72709b1180b3b0a51bbfe30bcb8c6 GIT binary patch literal 54 zcmZ?wbhEHb{( zJaZG%Q-e|yQz{EjrrH1%u?6^qxTdA0{r~^J*gJ9sP=u)@$S?Rm!_(~sUO=9vr;B4q z#jTK2Cpj4yIG7J^{J*Sr7aP;;!*evU*UP7-zWuuR&zi{Xq6rL2tqds~bx9pSO$?r{ KelF{r5}E*+%QgN0 literal 0 HcmV?d00001 diff --git a/admin/public/UEditor/themes/default/images/sortable.png b/admin/public/UEditor/themes/default/images/sortable.png new file mode 100644 index 0000000000000000000000000000000000000000..1bca649698e187a80e1b1951fde99ddea3d7b038 GIT binary patch literal 2851 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 BXOsW{ literal 0 HcmV?d00001 diff --git a/admin/public/UEditor/themes/default/images/spacer.gif b/admin/public/UEditor/themes/default/images/spacer.gif new file mode 100644 index 0000000000000000000000000000000000000000..5bfd67a2d6f72ac3a55cbfcea5866e841d22f5d9 GIT binary patch literal 43 mcmZ?wbhEHbWMp7uXkdT>#h)yUAf^t80Ld^gF}W}@SOWlZ0R#L1 literal 0 HcmV?d00001 diff --git a/admin/public/UEditor/themes/default/images/sparator_v.png b/admin/public/UEditor/themes/default/images/sparator_v.png new file mode 100644 index 0000000000000000000000000000000000000000..8cf5662da8c36a446e1e08eb71b992c730ab8d15 GIT binary patch literal 122 zcmeAS@N?(olHy`uVBq!ia0vp^OhC-Y0V1m%Ufcz7ii6yp7}lMWc?smOq&xaLGB9lH z=l+w(3gmMZctjR6Fz_7)VaDV6D^h@h{GKk3Arj%q6<>aQ{Qv(yqp%0-vU7cb$AD4{ Mp00i_>zopr0ET%XRR910 literal 0 HcmV?d00001 diff --git a/admin/public/UEditor/themes/default/images/table-cell-align.png b/admin/public/UEditor/themes/default/images/table-cell-align.png new file mode 100644 index 0000000000000000000000000000000000000000..ddf42853ea5c00663e74d9195d1f1264ab684252 GIT binary patch literal 1847 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 literal 0 HcmV?d00001 diff --git a/admin/public/UEditor/themes/default/images/toolbar_bg.png b/admin/public/UEditor/themes/default/images/toolbar_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..7ab685f4236ad543601b0d7dc43e429e041bee98 GIT binary patch literal 170 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI{!2~3a95{LaNJ*BsMwA5Sra_n`~3ut zhqFCqhNk>9eAm}?**d-K>ErgL-9FQkEgB1_|9|!V%ggstduo?ezj^hOMS@|yt(J@G Th3lO_a~V8c{an^LB{Ts5X5&F_ literal 0 HcmV?d00001 diff --git a/admin/public/UEditor/themes/default/images/unhighlighted.gif b/admin/public/UEditor/themes/default/images/unhighlighted.gif new file mode 100644 index 0000000000000000000000000000000000000000..7ad0b67ae634d41e76848ec0b6696e8ac7e06983 GIT binary patch literal 111 zcmZ?wbhEHb6k`x$Sjfci#j9d&%3_1)z0Fq~5a+uP;QtU1Nea;29 zx*cclynVJpP9xwz=Q6F#ReGoPZ4xWkEPX#)_EqLPYsO~h_`vc#s_EX6+DxrJi$d-_ L>N=ao&0q}x{nsuG literal 0 HcmV?d00001 diff --git a/admin/public/UEditor/themes/default/images/upload.png b/admin/public/UEditor/themes/default/images/upload.png new file mode 100644 index 0000000000000000000000000000000000000000..08d4d9268204a20ca343bf75784302cc706d2417 GIT binary patch literal 6608 zcmV;>887CEP)KLZ*U+5Lu!Sk^o_Z5E4Meg@_7P6crJiNL9pw)e1;Xm069{HJUZAPk55R%$-RIA z6-eL&AQ0xu!e<4=008gy@A0LT~suv4>S3ILP<0Bm`DLLvaF4FK%)Nj?Pt*r}7;7Xa9z9H|HZjR63e zC`Tj$K)V27Re@400>HumpsYY5E(E}?0f1SyGDiY{y#)Yvj#!WnKwtoXnL;eg03bL5 z07D)V%>y7z1E4U{zu>7~aD})?0RX_umCct+(lZpemCzb@^6=o|A>zVpu|i=NDG+7} zl4`aK{0#b-!z=TL9Wt0BGO&T{GJWpjryhdijfaIQ&2!o}p04JRKYg3k&Tf zVxhe-O!X z{f;To;xw^bEES6JSc$k$B2CA6xl)ltA<32E66t?3@gJ7`36pmX0IY^jz)rRYwaaY4 ze(nJRiw;=Qb^t(r^DT@T3y}a2XEZW-_W%Hszxj_qD**t_m!#tW0KDiJT&R>6OvVTR z07RgHDzHHZ48atvzz&?j9lXF70$~P3Knx_nJP<+#`N z#-MZ2bTkiLfR>_b(HgWKJ%F~Nr_oF3b#wrIijHG|(J>BYjM-sajE6;FiC7vY#};Gd zST$CUHDeuEH+B^pz@B062qXfFfD`NpUW5?BY=V%GM_5c)L#QR}BeW8_2v-S%gfYS= zB9o|3v?Y2H`NVi)In3rTB8+ej^> zQ=~r95NVuDChL%G$=>7$vVg20myx%S50Foi`^m%Pw-h?Xh~i8Mq9jtJloCocWk2Nv zrJpiFnV_ms&8eQ$2&#xWpIS+6pmtC%Q-`S&GF4Q#^mhymh7E(qNMa}%YZ-ePrx>>xFPTiH1=E+A$W$=bG8>s^ zm=Bn5Rah$aDtr}@$`X}2l~$F0mFKEdRdZE8)p@E5RI61Ft6o-prbbn>P~)iy)E2AN zsU20jsWz_8Qg>31P|s0cqrPALg8E|(vWA65poU1JRAaZs8I2(p#xiB`SVGovRs-uS zYnV-9TeA7=Om+qP8+I>yOjAR1s%ETak!GFdam@h^# z)@rS0t$wXH+Irf)+G6c;?H29p+V6F6oj{!|o%K3xI`?%6x;DB|x`n#ibhIR?(H}Q3Gzd138Ei2)WAMz7W9Vy`X}HnwgyEn!VS)>mv$8&{hQn>w4zwy3R}t;BYlZQm5)6pty=DfLrs+A-|>>;~;Q z_F?uV_HFjh9n2gO9o9Q^JA86v({H5aB!kjoO6 zc9$1ZZKsN-Zl8L~mE{`ly3)1N^`o1+o7}D0ZPeY&J;i;i`%NyJ8_8Y6J?}yE@b_5a zam?eLr<8@mESk|3$_SkmS{wQ>%qC18))9_|&j{ZT zes8AvOzF(F2#DZEY>2oYX&IRp`F#{ADl)1r>QS^)ba8a|EY_^#S^HO&t^Rgqwv=MZThqqEWH8 zxJo>d=ABlR_Bh=;eM9Tw|Ih34~oTE|= zX_mAr*D$vzw@+p(E0Yc6dFE}(8oqt`+R{gE3x4zjX+Sb3_cYE^= zgB=w+-tUy`ytONMS8KgRef4hA?t0j zufM;t32jm~jUGrkaOInTZ`zyfns>EuS}G30LFK_G-==(f<51|K&cocp&EJ`SxAh3? zNO>#LI=^+SEu(FqJ)ynt=!~PC9bO$rzPJB=?=j6w@a-(u02P7 zaQ)#(uUl{HW%tYNS3ItC^iAtK(eKlL`f9+{bJzISE?u8_z3;~C8@FyI-5j_jy7l;W z_U#vU3hqqYU3!mrul&B+{ptt$59)uk{;_4iZQ%G|z+lhASr6|H35TBkl>gI*;nGLU zN7W-nBaM%pA0HbH8olyl&XeJ%vZoWz%6?Y=dFykl=imL}`%BMQ{Mhgd`HRoLu6e2R za__6DuR6yg#~-}Tc|Gx_{H@O0eebyMy5GmWADJlpK>kqk(fVV@r_fLLKIeS?{4e)} z^ZO;zpECde03c&XQcVB=dL;k=fP(-4`Tqa_faw4Lbua(`>RI+y?e7jKeZ#YO-C z4*f|)K~#9!teSgpT-ABNf8ROx-j!A>$q&Gm@PiO+2q+ZrWGHVa(@6|T{%eS7I@1RU zblOf!(zG+A5GGA&($EfcLWVd^{^;akXWC4YV%(0#BXRRkwbz7wrovzD%sq0`np;D87%?pDZ(g$6LHfS`aA z2*}zP+Rhk1i#-mZRA5=&$TCM5ShS#$W{x1RONMX4G;u7QZiWfK5S$i6n)Hn^Sd-t~ z^mKz0Cyo;&Swa{H>Os}b0?Rk6O$-|6a}9~DMHIT72b~15coUIGfW;wRav(Lp%td+e zs5sPk5CK)hr_0w6D>#?7&Am%c3&&E1wMs&r&{aAJ-13Gsf-xTFa;s79E^*wa1e&FU zR)~|7z#333B-qd5Xl@#sa;^oZJRYkq*AVrnfJ4Z2O^Uw-oPsuG+8I=o)(^`Z&gr7_ zQ^Bz`Qv*n;*s`9s*-{mpbBGAm3UM40c;{#t9j`NVjGHk$3aCTH;1E1u6(9rB9L@xV zc?()7L@2bSiNnsQFy1T1$b$1z!Lc+Z3TQb$^Jz0AXNoa`_lj4C7$FeJ&6P0* z@3NLEs*@Hsq>yee9>t*;eDhG5BB3EmJra5{1$7>4030GSM2$+$6g4P<;+uS5o(&d* zpC#dQ=cj^Wsb(fi6fb(Z77LNWf{3(~LDUfBs^f9aVPr-XMP)|PXG?=H3)qfQ6*_4lq+4- zrYGp?E|d8bR0^%}7zM@Rc@GXZXH;u3{k}fn*9flv0<=xPN)t~JwM8ZfnJ6-ubTJU!q!7MI#y-#<*P^Y!Pp!Tjv`(Rt67=HvxcN075!TcOzeWKKczAXrdLk>E8NQ_$VbRO-+q(1kvOV`lf2TF-+Z{5MRk6ys7AG;uD z##oJOZ{5jv@4tx+gS~BG;_Pu?`W3vF+kEm})KNsx5=9XG`5fb02{#G7hg=IJsv2VNh~46*XiM zVDN-~8si)El=_%d`1$^$$kZg$XLYl-E2eMdGra!zKe6`mZM=QrEhehnbeAu{+A>Zo zp!8KDj82ge7Mkc=5~a+1&y}*H<29b%J4UsZP_4xrICzYsV^xMnPVhIMy^m+R+5Rk7Zy99UN6+sV<;+~9FXV1Ub2zJz zBC|4I>F_Kc8wUD#nsKVNgrUu6(BE6)=va*d2TyQxyw0x2kMPhJZ)m~Y_t~rX`0YPw zN%FiTuOrQw@qKRq;s`^VS98a$A*;OZ;b@yZx? zX@hci7sSKpc!~9EeuFoU9N~-$w~%;`nhZ>e*D@mUoGfuZL!RC{2GEkQZ6CdWuWo;i ztGArp`hRHi8T|3Rj{$JkKkQ+2tVUmNRKT6hSGPaUP1m2xhJl4mN41`C*Wd4H^J7hI zY%)_7@F@>}{{a1!hz$dMfE3^GXzd6?o6l&?n_6A1r}X!BbxaPM#ZB+?+$hK+s2MLm zKLb^|z2aSlmE4HgFyfW}8D{+lE@t$EXS|-UY0U>nU;G*ASv^D+=&5k>#272j4XGWU zM17U9*Q@M&WF(iEqGGDR{)5LkIq_n;5e#j?Y1>o!V+`#(cLU%p>Dqp|n2E6wi zICz|!t~-aJO{=KZ6Rx^!ko5z-MbH4%T0&nXWZjw`y!V}Lx6jS!?VlW)_gi13Gy|u~ z{*kw+)*4*7We`RAqkI3GYAtD9et&Por#`oP7Nhf^<)6Ry;f_9|$q*6A^R{M`G2d}& zp(RS>Jh%)*Q6r?8uyJsJAH6Vwx$u0vRv3HfBo|u2boC%i=H{q7S!v$K z#zD^?e&YSCu9U%7Fj>G4cD=&ww+yu|dvv_U-+k+OwqCoD^#i?p=9Zzh1B{N>0Jvz= zDo#$s3?Dkqm+!oSzDkKb`^M<2gj8z{sa3f;tXo@I)aj#+?>#cY z=WpA>H+LKW;2-b4zP0X#-}zU*{AX7(w0ZTyI2L#|E9`BLgXc0tF{Ii>NfR=g=Am&? z=R+G-u=jtD^7`8uCdnwj{VJD7hp}Nd>bejNCy!hD&%Bg!?-r7H4dNXuyF6sM^E~`! zozd}H8|~TOoeuHn6Gyn|x^qxfhDVOmS1GZ6pqHa#6a2|vKh7s_-rTl+$F31nb>8#Y zPE{9-GTX=Qr$+g`-@b%(XI181>Yjb$Ow{5cgr3OPKlvI%n^tq>WdjQa6?2_?u+YJ0 z+xFa>qy>W%@fm0K2b?#shF_kj6Zn)q5>}f@#74Lz!It|ehaoFBUxxFmNnC_gkEm-E z=k^~u&d{dSE$vv!=&M8wkDOrp&S6H!YizxCW83~eGe_HY>>A;!4i}=QP-Xt`HRq68 z0oU2|U3u9c!y_jEn5ZXg-*JGg*PX-qfy%ry&ZXa+2eYNIlZF6f0TSICUi^Uj2 zuhbbVmx+Q1^Tre=@Q95Fxy&<(09|2TW;FK z*6Yq;$0G;Xv1^2_*KVX*PddUahO1pNm!=^`9Nm5jr#-DGsR?t%rE9t3(zUI%cR%n9 zpT1?NWpWpyKlkirsgmN0III~hPEOP)2k_?MmpOiPgp!-4zqbb!MWX;Q7O^23mZ(im z6?K~?4$px@#~42J4!7LAY1xw6*Ap^2UT+=tcmLw2r__%)wO(K64(IMCUt{~uVfO4B zXZMq@v3{V^=KmI=Kd*GssZ*l*(pX0tSeTd$kXpWS$_X|3W?K_95 z)?>c(rhdVVJL7%{C#4D!r=?zsOu`v7?G3)hl)Aq!Rz zX*^G>K61?lM#t;i^WZZKA3DLG|G{O8GCi+^2YFlAn3l!_kcV6IyI@6>rJjHcM}+fW z)Zo<6D5QOADq(8ML1`uSjEnKIq3E6TQ(4soriTD<+CbFv%aJ$Px%(CFz4H>*oK;2> zT~u=Bj&J?&B}9Y=?z#q5rMD;K!N0n$b(x>ox{1C@)Ux9{A3fBDYv-dQtY2GcwUC<{ z_vzodh&}tp=KF<9*3Ohb&hE#jX>J8NXxh59J$&bHZ{&xM9^(FQ?_HJ#0$ zF)d~^86+ae3opK;8#k`QWf>x~os|I$fzK$rX<}9~9eTV7PRn@{$_io{WLXJY7M!1E zMZFg*5JoVS)rccUBb~-Xmafe4(j%!E9 z>-=!{AwKu}mv+QwttCxU!Z5@+M;L}2IdTMf?)ew>f(yEX!I9DV0hbJa~|x+4;-U_zpxQe|bk0j8{Y)s3XLY zWfKI}VNE~Yd5l=z32KC52-JcEIPdXli3qS+fNIb>OlnfXCFTH&7v}Vo7_wX#1vDyy z)=~7d8Dfl?r=>xuR3eV!1$$trKqC-JNmBHZJ&MPg6o)Wv0Mmt}4Z2APeTm42;5|kZ zXFMVasxg@fP!YU9Bg|h33VhJ&EiWfRn!Ubx5zED~To~^i=tO79J;gJqD%M)!IHs$s zt6)eYrn@U@Ihffd3uDQm0OJiJ#cMojK|E0y5*x*sZmi_>TW3l{8sL+RFcdI~SV2^Y zT!7Et0wN6+^&!?v?#wzIW+59tPo0Z-`~F!pI6xICqMN1CRrLe`IByno)JvtWMU@>9 zj0lsB23@5Ra_r<({Kgw^@XkALcSM-ivwT|>xOj7}_^Ti`KVZ>8kvZKsiZ?7~SKD=N zA!(5s)BM+Q9M;;ld0_3baV!_c7ck4sV03}7*BB|Z1p52?S+{N-|33iQeTU$!k*lr% O00001IobTth)ve1{+;xF-z$zX1$@cbk;N#jz zM8mU4YCupmEU?Nii0lQg^bRCan?Ab3%VAH658-8xBFJMB`IuzR@?X?_cxg~njWe8Z z7he1{t~NY@;sD2oqwB>InLWHP3|(&rFL;_%YXisG!f|)t`LI~xqj*wKLbXWp)f$eo z4#asOE4^bXVR1zDClZ^-`L@9YE{GEUM6w@>B$|*3C13A^6xxLq**_!Pdr{&MM+{D{ z56z@TzG*@hw6S^P4v136mt~*C)1y;z@#LIHDjO7zE0$NBVk(?tEAPD`x}r!4rSvo+ zGrN|Z-`M*gk?fXS+qo0;d0 zh<&hBzt>Fxc`eUN=*S8tip(N)4%c-Hsa$abS1kGZZD3dwRL~Y&OiQls$!Zy(aK#~| zjPP=1B(V$A*qhVABln1FxZ*mlSSnXYWQzzgJF1owUC)i7_7-#saE!r1=5SG$fWQ*I z?G_O^BB^|7ZhisN&MW7LKFbwbTU$SV{P_O;`{w56#>U3_`uf`1+Un}+%F2pDp;%g4 zT3lS5pP!e@<#Tg$GMVhlmoKxkvokX@)6>(Flao@ZbYfycB9V-bkB^RyibNuzP$&=x zMn*=4hK2?Q2l;$HkH;Gr80hQk>+S93a=9E1r@OnG&1QFYb~2ev27}Sj(b3-C-qzOE z+}zyQ*hr;PDHIBkNX*O2%g)YDPEJltOhlnjzdrQ8MQa@l0suN-^vmE^6Tt3mAau_$ zXbql@q{N)M&$25b1FG78WjFA2Q`{wpcH+plH-T+lc4H{-V^L{To}?sY^7t- zRp-#0EC|Fh>5nV9*osg354U2y3FFpwXQ!`Na;JKQ;uHrYmb=qU|MBr zTOt(Y=@VUlJq+6mQt^WJ9lIJTz?$6jvB@_0Ijg#xyHYhx6QE$9@Q;P`SNru{MQcx_ z>I9eqMm;}}tfJ*J&?Udq;ijL1AIs^TNj%ED8++(4bqQ3YK5><%~obS)3oEv z2`L9EwBilZbt=4c48b+h%ydj29TQf1;FclAt3p@D@Iv$C>k|Ryx={((b>+iEv*M}T zw2%>2(|!*aqioP7@6#WGj~%z23qkbWx? zq>K{ydFDHsgH&Ab#e8p|DBB+i&e7YjgH&Dp_Cc?zbGzF=vu-e#1^&&3UitP6Qvg=W z;+>M!e1J%3O7HX-hEcUA+~cC@8WAyj^bml>?&AT`HEEBQ}9Z=3X$i*Zty)I zU*Zj5^tvjIuB=l9Z9~T)&b;Eg=FK&TO>3g*yVOqt8d@&{JXvVbxz7~cYII$TQHvSS zgJ#LpO3a#6>HScB5@i5vKw}cnyiI*AUkCSPz7s6};*mIoCN(8C-gssBWz<}Twr?3} zMG(-KVyeCT&UjVicgg-NE@GN=DKAW@1zjD3zqggT>WPOqXK6a*HA(U%`Q-^?%QNdz M>|NJq=D?r-0Tclc1poj5 literal 0 HcmV?d00001 diff --git a/admin/public/UEditor/themes/default/images/word.gif b/admin/public/UEditor/themes/default/images/word.gif new file mode 100644 index 0000000000000000000000000000000000000000..9ef5d09b7b30c4f3225f77788462e429cc494b9b GIT binary patch literal 1019 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 bp?H9uNI6(~=EJQ&zcn<}bW|&qZNmQtXU+rA literal 0 HcmV?d00001 diff --git a/admin/public/UEditor/themes/iframe.css b/admin/public/UEditor/themes/iframe.css new file mode 100644 index 00000000..774013af --- /dev/null +++ b/admin/public/UEditor/themes/iframe.css @@ -0,0 +1 @@ +/*可以在这里添加你自己的css*/ diff --git a/admin/public/UEditor/third-party/SyntaxHighlighter/shCore.js b/admin/public/UEditor/third-party/SyntaxHighlighter/shCore.js new file mode 100644 index 00000000..32491842 --- /dev/null +++ b/admin/public/UEditor/third-party/SyntaxHighlighter/shCore.js @@ -0,0 +1,3655 @@ +// XRegExp 1.5.1 +// (c) 2007-2012 Steven Levithan +// MIT License +// +// Provides an augmented, extensible, cross-browser implementation of regular expressions, +// including support for additional syntax, flags, and methods + +var XRegExp; + +if (XRegExp) { + // Avoid running twice, since that would break references to native globals + throw Error("can't load XRegExp twice in the same frame"); +} + +// Run within an anonymous function to protect variables and avoid new globals +(function (undefined) { + + //--------------------------------- + // Constructor + //--------------------------------- + + // Accepts a pattern and flags; returns a new, extended `RegExp` object. Differs from a native + // regular expression in that additional syntax and flags are supported and cross-browser + // syntax inconsistencies are ameliorated. `XRegExp(/regex/)` clones an existing regex and + // converts to type XRegExp + XRegExp = function (pattern, flags) { + var output = [], + currScope = XRegExp.OUTSIDE_CLASS, + pos = 0, + context, tokenResult, match, chr, regex; + + if (XRegExp.isRegExp(pattern)) { + if (flags !== undefined) + throw TypeError("can't supply flags when constructing one RegExp from another"); + return clone(pattern); + } + // Tokens become part of the regex construction process, so protect against infinite + // recursion when an XRegExp is constructed within a token handler or trigger + if (isInsideConstructor) + throw Error("can't call the XRegExp constructor within token definition functions"); + + flags = flags || ""; + context = { // `this` object for custom tokens + hasNamedCapture: false, + captureNames: [], + hasFlag: function (flag) {return flags.indexOf(flag) > -1;}, + setFlag: function (flag) {flags += flag;} + }; + + while (pos < pattern.length) { + // Check for custom tokens at the current position + tokenResult = runTokens(pattern, pos, currScope, context); + + if (tokenResult) { + output.push(tokenResult.output); + pos += (tokenResult.match[0].length || 1); + } else { + // Check for native multicharacter metasequences (excluding character classes) at + // the current position + if (match = nativ.exec.call(nativeTokens[currScope], pattern.slice(pos))) { + output.push(match[0]); + pos += match[0].length; + } else { + chr = pattern.charAt(pos); + if (chr === "[") + currScope = XRegExp.INSIDE_CLASS; + else if (chr === "]") + currScope = XRegExp.OUTSIDE_CLASS; + // Advance position one character + output.push(chr); + pos++; + } + } + } + + regex = RegExp(output.join(""), nativ.replace.call(flags, flagClip, "")); + regex._xregexp = { + source: pattern, + captureNames: context.hasNamedCapture ? context.captureNames : null + }; + return regex; + }; + + + //--------------------------------- + // Public properties + //--------------------------------- + + XRegExp.version = "1.5.1"; + + // Token scope bitflags + XRegExp.INSIDE_CLASS = 1; + XRegExp.OUTSIDE_CLASS = 2; + + + //--------------------------------- + // Private variables + //--------------------------------- + + var replacementToken = /\$(?:(\d\d?|[$&`'])|{([$\w]+)})/g, + flagClip = /[^gimy]+|([\s\S])(?=[\s\S]*\1)/g, // Nonnative and duplicate flags + quantifier = /^(?:[?*+]|{\d+(?:,\d*)?})\??/, + isInsideConstructor = false, + tokens = [], + // Copy native globals for reference ("native" is an ES3 reserved keyword) + nativ = { + exec: RegExp.prototype.exec, + test: RegExp.prototype.test, + match: String.prototype.match, + replace: String.prototype.replace, + split: String.prototype.split + }, + compliantExecNpcg = nativ.exec.call(/()??/, "")[1] === undefined, // check `exec` handling of nonparticipating capturing groups + compliantLastIndexIncrement = function () { + var x = /^/g; + nativ.test.call(x, ""); + return !x.lastIndex; + }(), + hasNativeY = RegExp.prototype.sticky !== undefined, + nativeTokens = {}; + + // `nativeTokens` match native multicharacter metasequences only (including deprecated octals, + // excluding character classes) + nativeTokens[XRegExp.INSIDE_CLASS] = /^(?:\\(?:[0-3][0-7]{0,2}|[4-7][0-7]?|x[\dA-Fa-f]{2}|u[\dA-Fa-f]{4}|c[A-Za-z]|[\s\S]))/; + nativeTokens[XRegExp.OUTSIDE_CLASS] = /^(?:\\(?:0(?:[0-3][0-7]{0,2}|[4-7][0-7]?)?|[1-9]\d*|x[\dA-Fa-f]{2}|u[\dA-Fa-f]{4}|c[A-Za-z]|[\s\S])|\(\?[:=!]|[?*+]\?|{\d+(?:,\d*)?}\??)/; + + + //--------------------------------- + // Public methods + //--------------------------------- + + // Lets you extend or change XRegExp syntax and create custom flags. This is used internally by + // the XRegExp library and can be used to create XRegExp plugins. This function is intended for + // users with advanced knowledge of JavaScript's regular expression syntax and behavior. It can + // be disabled by `XRegExp.freezeTokens` + XRegExp.addToken = function (regex, handler, scope, trigger) { + tokens.push({ + pattern: clone(regex, "g" + (hasNativeY ? "y" : "")), + handler: handler, + scope: scope || XRegExp.OUTSIDE_CLASS, + trigger: trigger || null + }); + }; + + // Accepts a pattern and flags; returns an extended `RegExp` object. If the pattern and flag + // combination has previously been cached, the cached copy is returned; otherwise the newly + // created regex is cached + XRegExp.cache = function (pattern, flags) { + var key = pattern + "/" + (flags || ""); + return XRegExp.cache[key] || (XRegExp.cache[key] = XRegExp(pattern, flags)); + }; + + // Accepts a `RegExp` instance; returns a copy with the `/g` flag set. The copy has a fresh + // `lastIndex` (set to zero). If you want to copy a regex without forcing the `global` + // property, use `XRegExp(regex)`. Do not use `RegExp(regex)` because it will not preserve + // special properties required for named capture + XRegExp.copyAsGlobal = function (regex) { + return clone(regex, "g"); + }; + + // Accepts a string; returns the string with regex metacharacters escaped. The returned string + // can safely be used at any point within a regex to match the provided literal string. Escaped + // characters are [ ] { } ( ) * + ? - . , \ ^ $ | # and whitespace + XRegExp.escape = function (str) { + return str.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"); + }; + + // Accepts a string to search, regex to search with, position to start the search within the + // string (default: 0), and an optional Boolean indicating whether matches must start at-or- + // after the position or at the specified position only. This function ignores the `lastIndex` + // of the provided regex in its own handling, but updates the property for compatibility + XRegExp.execAt = function (str, regex, pos, anchored) { + var r2 = clone(regex, "g" + ((anchored && hasNativeY) ? "y" : "")), + match; + r2.lastIndex = pos = pos || 0; + match = r2.exec(str); // Run the altered `exec` (required for `lastIndex` fix, etc.) + if (anchored && match && match.index !== pos) + match = null; + if (regex.global) + regex.lastIndex = match ? r2.lastIndex : 0; + return match; + }; + + // Breaks the unrestorable link to XRegExp's private list of tokens, thereby preventing + // syntax and flag changes. Should be run after XRegExp and any plugins are loaded + XRegExp.freezeTokens = function () { + XRegExp.addToken = function () { + throw Error("can't run addToken after freezeTokens"); + }; + }; + + // Accepts any value; returns a Boolean indicating whether the argument is a `RegExp` object. + // Note that this is also `true` for regex literals and regexes created by the `XRegExp` + // constructor. This works correctly for variables created in another frame, when `instanceof` + // and `constructor` checks would fail to work as intended + XRegExp.isRegExp = function (o) { + return Object.prototype.toString.call(o) === "[object RegExp]"; + }; + + // Executes `callback` once per match within `str`. Provides a simpler and cleaner way to + // iterate over regex matches compared to the traditional approaches of subverting + // `String.prototype.replace` or repeatedly calling `exec` within a `while` loop + XRegExp.iterate = function (str, regex, callback, context) { + var r2 = clone(regex, "g"), + i = -1, match; + while (match = r2.exec(str)) { // Run the altered `exec` (required for `lastIndex` fix, etc.) + if (regex.global) + regex.lastIndex = r2.lastIndex; // Doing this to follow expectations if `lastIndex` is checked within `callback` + callback.call(context, match, ++i, str, regex); + if (r2.lastIndex === match.index) + r2.lastIndex++; + } + if (regex.global) + regex.lastIndex = 0; + }; + + // Accepts a string and an array of regexes; returns the result of using each successive regex + // to search within the matches of the previous regex. The array of regexes can also contain + // objects with `regex` and `backref` properties, in which case the named or numbered back- + // references specified are passed forward to the next regex or returned. E.g.: + // var xregexpImgFileNames = XRegExp.matchChain(html, [ + // {regex: /]+)>/i, backref: 1}, // tag attributes + // {regex: XRegExp('(?ix) \\s src=" (? [^"]+ )'), backref: "src"}, // src attribute values + // {regex: XRegExp("^http://xregexp\\.com(/[^#?]+)", "i"), backref: 1}, // xregexp.com paths + // /[^\/]+$/ // filenames (strip directory paths) + // ]); + XRegExp.matchChain = function (str, chain) { + return function recurseChain (values, level) { + var item = chain[level].regex ? chain[level] : {regex: chain[level]}, + regex = clone(item.regex, "g"), + matches = [], i; + for (i = 0; i < values.length; i++) { + XRegExp.iterate(values[i], regex, function (match) { + matches.push(item.backref ? (match[item.backref] || "") : match[0]); + }); + } + return ((level === chain.length - 1) || !matches.length) ? + matches : recurseChain(matches, level + 1); + }([str], 0); + }; + + + //--------------------------------- + // New RegExp prototype methods + //--------------------------------- + + // Accepts a context object and arguments array; returns the result of calling `exec` with the + // first value in the arguments array. the context is ignored but is accepted for congruity + // with `Function.prototype.apply` + RegExp.prototype.apply = function (context, args) { + return this.exec(args[0]); + }; + + // Accepts a context object and string; returns the result of calling `exec` with the provided + // string. the context is ignored but is accepted for congruity with `Function.prototype.call` + RegExp.prototype.call = function (context, str) { + return this.exec(str); + }; + + + //--------------------------------- + // Overriden native methods + //--------------------------------- + + // Adds named capture support (with backreferences returned as `result.name`), and fixes two + // cross-browser issues per ES3: + // - Captured values for nonparticipating capturing groups should be returned as `undefined`, + // rather than the empty string. + // - `lastIndex` should not be incremented after zero-length matches. + RegExp.prototype.exec = function (str) { + var match, name, r2, origLastIndex; + if (!this.global) + origLastIndex = this.lastIndex; + match = nativ.exec.apply(this, arguments); + if (match) { + // Fix browsers whose `exec` methods don't consistently return `undefined` for + // nonparticipating capturing groups + if (!compliantExecNpcg && match.length > 1 && indexOf(match, "") > -1) { + r2 = RegExp(this.source, nativ.replace.call(getNativeFlags(this), "g", "")); + // Using `str.slice(match.index)` rather than `match[0]` in case lookahead allowed + // matching due to characters outside the match + nativ.replace.call((str + "").slice(match.index), r2, function () { + for (var i = 1; i < arguments.length - 2; i++) { + if (arguments[i] === undefined) + match[i] = undefined; + } + }); + } + // Attach named capture properties + if (this._xregexp && this._xregexp.captureNames) { + for (var i = 1; i < match.length; i++) { + name = this._xregexp.captureNames[i - 1]; + if (name) + match[name] = match[i]; + } + } + // Fix browsers that increment `lastIndex` after zero-length matches + if (!compliantLastIndexIncrement && this.global && !match[0].length && (this.lastIndex > match.index)) + this.lastIndex--; + } + if (!this.global) + this.lastIndex = origLastIndex; // Fix IE, Opera bug (last tested IE 9.0.5, Opera 11.61 on Windows) + return match; + }; + + // Fix browser bugs in native method + RegExp.prototype.test = function (str) { + // Use the native `exec` to skip some processing overhead, even though the altered + // `exec` would take care of the `lastIndex` fixes + var match, origLastIndex; + if (!this.global) + origLastIndex = this.lastIndex; + match = nativ.exec.call(this, str); + // Fix browsers that increment `lastIndex` after zero-length matches + if (match && !compliantLastIndexIncrement && this.global && !match[0].length && (this.lastIndex > match.index)) + this.lastIndex--; + if (!this.global) + this.lastIndex = origLastIndex; // Fix IE, Opera bug (last tested IE 9.0.5, Opera 11.61 on Windows) + return !!match; + }; + + // Adds named capture support and fixes browser bugs in native method + String.prototype.match = function (regex) { + if (!XRegExp.isRegExp(regex)) + regex = RegExp(regex); // Native `RegExp` + if (regex.global) { + var result = nativ.match.apply(this, arguments); + regex.lastIndex = 0; // Fix IE bug + return result; + } + return regex.exec(this); // Run the altered `exec` + }; + + // Adds support for `${n}` tokens for named and numbered backreferences in replacement text, + // and provides named backreferences to replacement functions as `arguments[0].name`. Also + // fixes cross-browser differences in replacement text syntax when performing a replacement + // using a nonregex search value, and the value of replacement regexes' `lastIndex` property + // during replacement iterations. Note that this doesn't support SpiderMonkey's proprietary + // third (`flags`) parameter + String.prototype.replace = function (search, replacement) { + var isRegex = XRegExp.isRegExp(search), + captureNames, result, str, origLastIndex; + + // There are too many combinations of search/replacement types/values and browser bugs that + // preclude passing to native `replace`, so don't try + //if (...) + // return nativ.replace.apply(this, arguments); + + if (isRegex) { + if (search._xregexp) + captureNames = search._xregexp.captureNames; // Array or `null` + if (!search.global) + origLastIndex = search.lastIndex; + } else { + search = search + ""; // Type conversion + } + + if (Object.prototype.toString.call(replacement) === "[object Function]") { + result = nativ.replace.call(this + "", search, function () { + if (captureNames) { + // Change the `arguments[0]` string primitive to a String object which can store properties + arguments[0] = new String(arguments[0]); + // Store named backreferences on `arguments[0]` + for (var i = 0; i < captureNames.length; i++) { + if (captureNames[i]) + arguments[0][captureNames[i]] = arguments[i + 1]; + } + } + // Update `lastIndex` before calling `replacement` (fix browsers) + if (isRegex && search.global) + search.lastIndex = arguments[arguments.length - 2] + arguments[0].length; + return replacement.apply(null, arguments); + }); + } else { + str = this + ""; // Type conversion, so `args[args.length - 1]` will be a string (given nonstring `this`) + result = nativ.replace.call(str, search, function () { + var args = arguments; // Keep this function's `arguments` available through closure + return nativ.replace.call(replacement + "", replacementToken, function ($0, $1, $2) { + // Numbered backreference (without delimiters) or special variable + if ($1) { + switch ($1) { + case "$": return "$"; + case "&": return args[0]; + case "`": return args[args.length - 1].slice(0, args[args.length - 2]); + case "'": return args[args.length - 1].slice(args[args.length - 2] + args[0].length); + // Numbered backreference + default: + // What does "$10" mean? + // - Backreference 10, if 10 or more capturing groups exist + // - Backreference 1 followed by "0", if 1-9 capturing groups exist + // - Otherwise, it's the string "$10" + // Also note: + // - Backreferences cannot be more than two digits (enforced by `replacementToken`) + // - "$01" is equivalent to "$1" if a capturing group exists, otherwise it's the string "$01" + // - There is no "$0" token ("$&" is the entire match) + var literalNumbers = ""; + $1 = +$1; // Type conversion; drop leading zero + if (!$1) // `$1` was "0" or "00" + return $0; + while ($1 > args.length - 3) { + literalNumbers = String.prototype.slice.call($1, -1) + literalNumbers; + $1 = Math.floor($1 / 10); // Drop the last digit + } + return ($1 ? args[$1] || "" : "$") + literalNumbers; + } + // Named backreference or delimited numbered backreference + } else { + // What does "${n}" mean? + // - Backreference to numbered capture n. Two differences from "$n": + // - n can be more than two digits + // - Backreference 0 is allowed, and is the entire match + // - Backreference to named capture n, if it exists and is not a number overridden by numbered capture + // - Otherwise, it's the string "${n}" + var n = +$2; // Type conversion; drop leading zeros + if (n <= args.length - 3) + return args[n]; + n = captureNames ? indexOf(captureNames, $2) : -1; + return n > -1 ? args[n + 1] : $0; + } + }); + }); + } + + if (isRegex) { + if (search.global) + search.lastIndex = 0; // Fix IE, Safari bug (last tested IE 9.0.5, Safari 5.1.2 on Windows) + else + search.lastIndex = origLastIndex; // Fix IE, Opera bug (last tested IE 9.0.5, Opera 11.61 on Windows) + } + + return result; + }; + + // A consistent cross-browser, ES3 compliant `split` + String.prototype.split = function (s /* separator */, limit) { + // If separator `s` is not a regex, use the native `split` + if (!XRegExp.isRegExp(s)) + return nativ.split.apply(this, arguments); + + var str = this + "", // Type conversion + output = [], + lastLastIndex = 0, + match, lastLength; + + // Behavior for `limit`: if it's... + // - `undefined`: No limit + // - `NaN` or zero: Return an empty array + // - A positive number: Use `Math.floor(limit)` + // - A negative number: No limit + // - Other: Type-convert, then use the above rules + if (limit === undefined || +limit < 0) { + limit = Infinity; + } else { + limit = Math.floor(+limit); + if (!limit) + return []; + } + + // This is required if not `s.global`, and it avoids needing to set `s.lastIndex` to zero + // and restore it to its original value when we're done using the regex + s = XRegExp.copyAsGlobal(s); + + while (match = s.exec(str)) { // Run the altered `exec` (required for `lastIndex` fix, etc.) + if (s.lastIndex > lastLastIndex) { + output.push(str.slice(lastLastIndex, match.index)); + + if (match.length > 1 && match.index < str.length) + Array.prototype.push.apply(output, match.slice(1)); + + lastLength = match[0].length; + lastLastIndex = s.lastIndex; + + if (output.length >= limit) + break; + } + + if (s.lastIndex === match.index) + s.lastIndex++; + } + + if (lastLastIndex === str.length) { + if (!nativ.test.call(s, "") || lastLength) + output.push(""); + } else { + output.push(str.slice(lastLastIndex)); + } + + return output.length > limit ? output.slice(0, limit) : output; + }; + + + //--------------------------------- + // Private helper functions + //--------------------------------- + + // Supporting function for `XRegExp`, `XRegExp.copyAsGlobal`, etc. Returns a copy of a `RegExp` + // instance with a fresh `lastIndex` (set to zero), preserving properties required for named + // capture. Also allows adding new flags in the process of copying the regex + function clone (regex, additionalFlags) { + if (!XRegExp.isRegExp(regex)) + throw TypeError("type RegExp expected"); + var x = regex._xregexp; + regex = XRegExp(regex.source, getNativeFlags(regex) + (additionalFlags || "")); + if (x) { + regex._xregexp = { + source: x.source, + captureNames: x.captureNames ? x.captureNames.slice(0) : null + }; + } + return regex; + } + + function getNativeFlags (regex) { + return (regex.global ? "g" : "") + + (regex.ignoreCase ? "i" : "") + + (regex.multiline ? "m" : "") + + (regex.extended ? "x" : "") + // Proposed for ES4; included in AS3 + (regex.sticky ? "y" : ""); + } + + function runTokens (pattern, index, scope, context) { + var i = tokens.length, + result, match, t; + // Protect against constructing XRegExps within token handler and trigger functions + isInsideConstructor = true; + // Must reset `isInsideConstructor`, even if a `trigger` or `handler` throws + try { + while (i--) { // Run in reverse order + t = tokens[i]; + if ((scope & t.scope) && (!t.trigger || t.trigger.call(context))) { + t.pattern.lastIndex = index; + match = t.pattern.exec(pattern); // Running the altered `exec` here allows use of named backreferences, etc. + if (match && match.index === index) { + result = { + output: t.handler.call(context, match, scope), + match: match + }; + break; + } + } + } + } catch (err) { + throw err; + } finally { + isInsideConstructor = false; + } + return result; + } + + function indexOf (array, item, from) { + if (Array.prototype.indexOf) // Use the native array method if available + return array.indexOf(item, from); + for (var i = from || 0; i < array.length; i++) { + if (array[i] === item) + return i; + } + return -1; + } + + + //--------------------------------- + // Built-in tokens + //--------------------------------- + + // Augment XRegExp's regular expression syntax and flags. Note that when adding tokens, the + // third (`scope`) argument defaults to `XRegExp.OUTSIDE_CLASS` + + // Comment pattern: (?# ) + XRegExp.addToken( + /\(\?#[^)]*\)/, + function (match) { + // Keep tokens separated unless the following token is a quantifier + return nativ.test.call(quantifier, match.input.slice(match.index + match[0].length)) ? "" : "(?:)"; + } + ); + + // Capturing group (match the opening parenthesis only). + // Required for support of named capturing groups + XRegExp.addToken( + /\((?!\?)/, + function () { + this.captureNames.push(null); + return "("; + } + ); + + // Named capturing group (match the opening delimiter only): (? + XRegExp.addToken( + /\(\?<([$\w]+)>/, + function (match) { + this.captureNames.push(match[1]); + this.hasNamedCapture = true; + return "("; + } + ); + + // Named backreference: \k + XRegExp.addToken( + /\\k<([\w$]+)>/, + function (match) { + var index = indexOf(this.captureNames, match[1]); + // Keep backreferences separate from subsequent literal numbers. Preserve back- + // references to named groups that are undefined at this point as literal strings + return index > -1 ? + "\\" + (index + 1) + (isNaN(match.input.charAt(match.index + match[0].length)) ? "" : "(?:)") : + match[0]; + } + ); + + // Empty character class: [] or [^] + XRegExp.addToken( + /\[\^?]/, + function (match) { + // For cross-browser compatibility with ES3, convert [] to \b\B and [^] to [\s\S]. + // (?!) should work like \b\B, but is unreliable in Firefox + return match[0] === "[]" ? "\\b\\B" : "[\\s\\S]"; + } + ); + + // Mode modifier at the start of the pattern only, with any combination of flags imsx: (?imsx) + // Does not support x(?i), (?-i), (?i-m), (?i: ), (?i)(?m), etc. + XRegExp.addToken( + /^\(\?([imsx]+)\)/, + function (match) { + this.setFlag(match[1]); + return ""; + } + ); + + // Whitespace and comments, in free-spacing (aka extended) mode only + XRegExp.addToken( + /(?:\s+|#.*)+/, + function (match) { + // Keep tokens separated unless the following token is a quantifier + return nativ.test.call(quantifier, match.input.slice(match.index + match[0].length)) ? "" : "(?:)"; + }, + XRegExp.OUTSIDE_CLASS, + function () {return this.hasFlag("x");} + ); + + // Dot, in dotall (aka singleline) mode only + XRegExp.addToken( + /\./, + function () {return "[\\s\\S]";}, + XRegExp.OUTSIDE_CLASS, + function () {return this.hasFlag("s");} + ); + + + //--------------------------------- + // Backward compatibility + //--------------------------------- + + // Uncomment the following block for compatibility with XRegExp 1.0-1.2: + /* + XRegExp.matchWithinChain = XRegExp.matchChain; + RegExp.prototype.addFlags = function (s) {return clone(this, s);}; + RegExp.prototype.execAll = function (s) {var r = []; XRegExp.iterate(s, this, function (m) {r.push(m);}); return r;}; + RegExp.prototype.forEachExec = function (s, f, c) {return XRegExp.iterate(s, this, f, c);}; + RegExp.prototype.validate = function (s) {var r = RegExp("^(?:" + this.source + ")$(?!\\s)", getNativeFlags(this)); if (this.global) this.lastIndex = 0; return s.search(r) === 0;}; + */ + +})(); + +// +// Begin anonymous function. This is used to contain local scope variables without polutting global scope. +// +if (typeof(SyntaxHighlighter) == 'undefined') var SyntaxHighlighter = function() { + +// CommonJS + if (typeof(require) != 'undefined' && typeof(XRegExp) == 'undefined') + { + XRegExp = require('XRegExp').XRegExp; + } + +// Shortcut object which will be assigned to the SyntaxHighlighter variable. +// This is a shorthand for local reference in order to avoid long namespace +// references to SyntaxHighlighter.whatever... + var sh = { + defaults : { + /** Additional CSS class names to be added to highlighter elements. */ + 'class-name' : '', + + /** First line number. */ + 'first-line' : 1, + + /** + * Pads line numbers. Possible values are: + * + * false - don't pad line numbers. + * true - automaticaly pad numbers with minimum required number of leading zeroes. + * [int] - length up to which pad line numbers. + */ + 'pad-line-numbers' : false, + + /** Lines to highlight. */ + 'highlight' : false, + + /** Title to be displayed above the code block. */ + 'title' : null, + + /** Enables or disables smart tabs. */ + 'smart-tabs' : true, + + /** Gets or sets tab size. */ + 'tab-size' : 4, + + /** Enables or disables gutter. */ + 'gutter' : true, + + /** Enables or disables toolbar. */ + 'toolbar' : true, + + /** Enables quick code copy and paste from double click. */ + 'quick-code' : true, + + /** Forces code view to be collapsed. */ + 'collapse' : false, + + /** Enables or disables automatic links. */ + 'auto-links' : false, + + /** Gets or sets light mode. Equavalent to turning off gutter and toolbar. */ + 'light' : false, + + 'unindent' : true, + + 'html-script' : false + }, + + config : { + space : ' ', + + /** Enables use of + * + * ``` + */ + findParent:function (node, filterFn, includeSelf) { + if (node && !domUtils.isBody(node)) { + node = includeSelf ? node : node.parentNode; + while (node) { + if (!filterFn || filterFn(node) || domUtils.isBody(node)) { + return filterFn && !filterFn(node) && domUtils.isBody(node) ? null : node; + } + node = node.parentNode; + } + } + return null; + }, + /** + * 查找node的节点名为tagName的第一个祖先节点, 查找的起点是node节点的父节点。 + * @method findParentByTagName + * @param { Node } node 需要查找的节点对象 + * @param { Array } tagNames 需要查找的父节点的名称数组 + * @warning 查找的终点是到body节点为止 + * @return { Node | NULL } 如果找到符合条件的节点, 则返回该节点, 否则返回NULL + * @example + * ```javascript + * var node = UE.dom.domUtils.findParentByTagName( document.getElementsByTagName("div")[0], [ "BODY" ] ); + * //output: BODY + * console.log( node.tagName ); + * ``` + */ + + /** + * 查找node的节点名为tagName的祖先节点, 如果includeSelf的值为true,则查找的起点是给定的节点node, + * 否则, 起点是node的父节点。 + * @method findParentByTagName + * @param { Node } node 需要查找的节点对象 + * @param { Array } tagNames 需要查找的父节点的名称数组 + * @param { Boolean } includeSelf 查找过程是否包含node节点自身 + * @warning 查找的终点是到body节点为止 + * @return { Node | NULL } 如果找到符合条件的节点, 则返回该节点, 否则返回NULL + * @example + * ```javascript + * var queryTarget = document.getElementsByTagName("div")[0]; + * var node = UE.dom.domUtils.findParentByTagName( queryTarget, [ "DIV" ], true ); + * //output: true + * console.log( queryTarget === node ); + * ``` + */ + findParentByTagName:function (node, tagNames, includeSelf, excludeFn) { + tagNames = utils.listToMap(utils.isArray(tagNames) ? tagNames : [tagNames]); + return domUtils.findParent(node, function (node) { + return tagNames[node.tagName] && !(excludeFn && excludeFn(node)); + }, includeSelf); + }, + /** + * 查找节点node的祖先节点集合, 查找的起点是给定节点的父节点,结果集中不包含给定的节点。 + * @method findParents + * @param { Node } node 需要查找的节点对象 + * @return { Array } 给定节点的祖先节点数组 + * @grammar UE.dom.domUtils.findParents(node) => Array //返回一个祖先节点数组集合,不包含自身 + * @grammar UE.dom.domUtils.findParents(node,includeSelf) => Array //返回一个祖先节点数组集合,includeSelf指定是否包含自身 + * @grammar UE.dom.domUtils.findParents(node,includeSelf,filterFn) => Array //返回一个祖先节点数组集合,filterFn指定过滤条件,返回true的node将被选取 + * @grammar UE.dom.domUtils.findParents(node,includeSelf,filterFn,closerFirst) => Array //返回一个祖先节点数组集合,closerFirst为true的话,node的直接父亲节点是数组的第0个 + */ + + /** + * 查找节点node的祖先节点集合, 如果includeSelf的值为true, + * 则返回的结果集中允许出现当前给定的节点, 否则, 该节点不会出现在其结果集中。 + * @method findParents + * @param { Node } node 需要查找的节点对象 + * @param { Boolean } includeSelf 查找的结果中是否允许包含当前查找的节点对象 + * @return { Array } 给定节点的祖先节点数组 + */ + findParents:function (node, includeSelf, filterFn, closerFirst) { + var parents = includeSelf && ( filterFn && filterFn(node) || !filterFn ) ? [node] : []; + while (node = domUtils.findParent(node, filterFn)) { + parents.push(node); + } + return closerFirst ? parents : parents.reverse(); + }, + + /** + * 在节点node后面插入新节点newNode + * @method insertAfter + * @param { Node } node 目标节点 + * @param { Node } newNode 新插入的节点, 该节点将置于目标节点之后 + * @return { Node } 新插入的节点 + */ + insertAfter:function (node, newNode) { + return node.nextSibling ? node.parentNode.insertBefore(newNode, node.nextSibling): + node.parentNode.appendChild(newNode); + }, + + /** + * 删除节点node及其下属的所有节点 + * @method remove + * @param { Node } node 需要删除的节点对象 + * @return { Node } 返回刚删除的节点对象 + * @example + * ```html + *

    + *
    你好
    + *
    + * + * ``` + */ + + /** + * 删除节点node,并根据keepChildren的值决定是否保留子节点 + * @method remove + * @param { Node } node 需要删除的节点对象 + * @param { Boolean } keepChildren 是否需要保留子节点 + * @return { Node } 返回刚删除的节点对象 + * @example + * ```html + *
    + *
    你好
    + *
    + * + * ``` + */ + remove:function (node, keepChildren) { + var parent = node.parentNode, + child; + if (parent) { + if (keepChildren && node.hasChildNodes()) { + while (child = node.firstChild) { + parent.insertBefore(child, node); + } + } + parent.removeChild(node); + } + return node; + }, + + /** + * 取得node节点的下一个兄弟节点, 如果该节点其后没有兄弟节点, 则递归查找其父节点之后的第一个兄弟节点, + * 直到找到满足条件的节点或者递归到BODY节点之后才会结束。 + * @method getNextDomNode + * @param { Node } node 需要获取其后的兄弟节点的节点对象 + * @return { Node | NULL } 如果找满足条件的节点, 则返回该节点, 否则返回NULL + * @example + * ```html + * + *
    + * + *
    + * xxx + * + * + * ``` + * @example + * ```html + * + *
    + * + * xxx + *
    + * xxx + * + * + * ``` + */ + + /** + * 取得node节点的下一个兄弟节点, 如果startFromChild的值为ture,则先获取其子节点, + * 如果有子节点则直接返回第一个子节点;如果没有子节点或者startFromChild的值为false, + * 则执行
    getNextDomNode(Node node)的查找过程。 + * @method getNextDomNode + * @param { Node } node 需要获取其后的兄弟节点的节点对象 + * @param { Boolean } startFromChild 查找过程是否从其子节点开始 + * @return { Node | NULL } 如果找满足条件的节点, 则返回该节点, 否则返回NULL + * @see UE.dom.domUtils.getNextDomNode(Node) + */ + getNextDomNode:function (node, startFromChild, filterFn, guard) { + return getDomNode(node, 'firstChild', 'nextSibling', startFromChild, filterFn, guard); + }, + getPreDomNode:function (node, startFromChild, filterFn, guard) { + return getDomNode(node, 'lastChild', 'previousSibling', startFromChild, filterFn, guard); + }, + /** + * 检测节点node是否属是UEditor定义的bookmark节点 + * @method isBookmarkNode + * @private + * @param { Node } node 需要检测的节点对象 + * @return { Boolean } 是否是bookmark节点 + * @example + * ```html + * + * + * ``` + */ + isBookmarkNode:function (node) { + return node.nodeType == 1 && node.id && /^_baidu_bookmark_/i.test(node.id); + }, + /** + * 获取节点node所属的window对象 + * @method getWindow + * @param { Node } node 节点对象 + * @return { Window } 当前节点所属的window对象 + * @example + * ```javascript + * //output: true + * console.log( UE.dom.domUtils.getWindow( document.body ) === window ); + * ``` + */ + getWindow:function (node) { + var doc = node.ownerDocument || node; + return doc.defaultView || doc.parentWindow; + }, + /** + * 获取离nodeA与nodeB最近的公共的祖先节点 + * @method getCommonAncestor + * @param { Node } nodeA 第一个节点 + * @param { Node } nodeB 第二个节点 + * @remind 如果给定的两个节点是同一个节点, 将直接返回该节点。 + * @return { Node | NULL } 如果未找到公共节点, 返回NULL, 否则返回最近的公共祖先节点。 + * @example + * ```javascript + * var commonAncestor = UE.dom.domUtils.getCommonAncestor( document.body, document.body.firstChild ); + * //output: true + * console.log( commonAncestor.tagName.toLowerCase() === 'body' ); + * ``` + */ + getCommonAncestor:function (nodeA, nodeB) { + if (nodeA === nodeB) + return nodeA; + var parentsA = [nodeA] , parentsB = [nodeB], parent = nodeA, i = -1; + while (parent = parent.parentNode) { + if (parent === nodeB) { + return parent; + } + parentsA.push(parent); + } + parent = nodeB; + while (parent = parent.parentNode) { + if (parent === nodeA) + return parent; + parentsB.push(parent); + } + parentsA.reverse(); + parentsB.reverse(); + while (i++, parentsA[i] === parentsB[i]) { + } + return i == 0 ? null : parentsA[i - 1]; + + }, + /** + * 清除node节点左右连续为空的兄弟inline节点 + * @method clearEmptySibling + * @param { Node } node 执行的节点对象, 如果该节点的左右连续的兄弟节点是空的inline节点, + * 则这些兄弟节点将被删除 + * @grammar UE.dom.domUtils.clearEmptySibling(node,ignoreNext) //ignoreNext指定是否忽略右边空节点 + * @grammar UE.dom.domUtils.clearEmptySibling(node,ignoreNext,ignorePre) //ignorePre指定是否忽略左边空节点 + * @example + * ```html + * + *
    + * + * + * + * xxx + * + * + * + * ``` + */ + + /** + * 清除node节点左右连续为空的兄弟inline节点, 如果ignoreNext的值为true, + * 则忽略对右边兄弟节点的操作。 + * @method clearEmptySibling + * @param { Node } node 执行的节点对象, 如果该节点的左右连续的兄弟节点是空的inline节点, + * @param { Boolean } ignoreNext 是否忽略忽略对右边的兄弟节点的操作 + * 则这些兄弟节点将被删除 + * @see UE.dom.domUtils.clearEmptySibling(Node) + */ + + /** + * 清除node节点左右连续为空的兄弟inline节点, 如果ignoreNext的值为true, + * 则忽略对右边兄弟节点的操作, 如果ignorePre的值为true,则忽略对左边兄弟节点的操作。 + * @method clearEmptySibling + * @param { Node } node 执行的节点对象, 如果该节点的左右连续的兄弟节点是空的inline节点, + * @param { Boolean } ignoreNext 是否忽略忽略对右边的兄弟节点的操作 + * @param { Boolean } ignorePre 是否忽略忽略对左边的兄弟节点的操作 + * 则这些兄弟节点将被删除 + * @see UE.dom.domUtils.clearEmptySibling(Node) + */ + clearEmptySibling:function (node, ignoreNext, ignorePre) { + function clear(next, dir) { + var tmpNode; + while (next && !domUtils.isBookmarkNode(next) && (domUtils.isEmptyInlineElement(next) + //这里不能把空格算进来会吧空格干掉,出现文字间的空格丢掉了 + || !new RegExp('[^\t\n\r' + domUtils.fillChar + ']').test(next.nodeValue) )) { + tmpNode = next[dir]; + domUtils.remove(next); + next = tmpNode; + } + } + !ignoreNext && clear(node.nextSibling, 'nextSibling'); + !ignorePre && clear(node.previousSibling, 'previousSibling'); + }, + /** + * 将一个文本节点textNode拆分成两个文本节点,offset指定拆分位置 + * @method split + * @param { Node } textNode 需要拆分的文本节点对象 + * @param { int } offset 需要拆分的位置, 位置计算从0开始 + * @return { Node } 拆分后形成的新节点 + * @example + * ```html + *
    abcdef
    + * + * ``` + */ + split:function (node, offset) { + var doc = node.ownerDocument; + if (browser.ie && offset == node.nodeValue.length) { + var next = doc.createTextNode(''); + return domUtils.insertAfter(node, next); + } + var retval = node.splitText(offset); + //ie8下splitText不会跟新childNodes,我们手动触发他的更新 + if (browser.ie8) { + var tmpNode = doc.createTextNode(''); + domUtils.insertAfter(retval, tmpNode); + domUtils.remove(tmpNode); + } + return retval; + }, + + /** + * 检测文本节点textNode是否为空节点(包括空格、换行、占位符等字符) + * @method isWhitespace + * @param { Node } node 需要检测的节点对象 + * @return { Boolean } 检测的节点是否为空 + * @example + * ```html + *
    + * + *
    + * + * ``` + */ + isWhitespace:function (node) { + return !new RegExp('[^ \t\n\r' + domUtils.fillChar + ']').test(node.nodeValue); + }, + /** + * 获取元素element相对于viewport的位置坐标 + * @method getXY + * @param { Node } element 需要计算位置的节点对象 + * @return { Object } 返回形如{x:left,y:top}的一个key-value映射对象, 其中键x代表水平偏移距离, + * y代表垂直偏移距离。 + * + * @example + * ```javascript + * var location = UE.dom.domUtils.getXY( document.getElementById("test") ); + * //output: test的坐标为: 12, 24 + * console.log( 'test的坐标为: ', location.x, ',', location.y ); + * ``` + */ + getXY:function (element) { + var x = 0, y = 0; + while (element.offsetParent) { + y += element.offsetTop; + x += element.offsetLeft; + element = element.offsetParent; + } + return { 'x':x, 'y':y}; + }, + /** + * 为元素element绑定原生DOM事件,type为事件类型,handler为处理函数 + * @method on + * @param { Node } element 需要绑定事件的节点对象 + * @param { String } type 绑定的事件类型 + * @param { Function } handler 事件处理器 + * @example + * ```javascript + * UE.dom.domUtils.on(document.body,"click",function(e){ + * //e为事件对象,this为被点击元素对戏那个 + * }); + * ``` + */ + + /** + * 为元素element绑定原生DOM事件,type为事件类型,handler为处理函数 + * @method on + * @param { Node } element 需要绑定事件的节点对象 + * @param { Array } type 绑定的事件类型数组 + * @param { Function } handler 事件处理器 + * @example + * ```javascript + * UE.dom.domUtils.on(document.body,["click","mousedown"],function(evt){ + * //evt为事件对象,this为被点击元素对象 + * }); + * ``` + */ + on:function (element, type, handler) { + + var types = utils.isArray(type) ? type : utils.trim(type).split(/\s+/), + k = types.length; + if (k) while (k--) { + type = types[k]; + if (element.addEventListener) { + element.addEventListener(type, handler, false); + } else { + if (!handler._d) { + handler._d = { + els : [] + }; + } + var key = type + handler.toString(),index = utils.indexOf(handler._d.els,element); + if (!handler._d[key] || index == -1) { + if(index == -1){ + handler._d.els.push(element); + } + if(!handler._d[key]){ + handler._d[key] = function (evt) { + return handler.call(evt.srcElement, evt || window.event); + }; + } + + + element.attachEvent('on' + type, handler._d[key]); + } + } + } + element = null; + }, + /** + * 解除DOM事件绑定 + * @method un + * @param { Node } element 需要解除事件绑定的节点对象 + * @param { String } type 需要接触绑定的事件类型 + * @param { Function } handler 对应的事件处理器 + * @example + * ```javascript + * UE.dom.domUtils.un(document.body,"click",function(evt){ + * //evt为事件对象,this为被点击元素对象 + * }); + * ``` + */ + + /** + * 解除DOM事件绑定 + * @method un + * @param { Node } element 需要解除事件绑定的节点对象 + * @param { Array } type 需要接触绑定的事件类型数组 + * @param { Function } handler 对应的事件处理器 + * @example + * ```javascript + * UE.dom.domUtils.un(document.body, ["click","mousedown"],function(evt){ + * //evt为事件对象,this为被点击元素对象 + * }); + * ``` + */ + un:function (element, type, handler) { + var types = utils.isArray(type) ? type : utils.trim(type).split(/\s+/), + k = types.length; + if (k) while (k--) { + type = types[k]; + if (element.removeEventListener) { + element.removeEventListener(type, handler, false); + } else { + var key = type + handler.toString(); + try{ + element.detachEvent('on' + type, handler._d ? handler._d[key] : handler); + }catch(e){} + if (handler._d && handler._d[key]) { + var index = utils.indexOf(handler._d.els,element); + if(index!=-1){ + handler._d.els.splice(index,1); + } + handler._d.els.length == 0 && delete handler._d[key]; + } + } + } + }, + + /** + * 比较节点nodeA与节点nodeB是否具有相同的标签名、属性名以及属性值 + * @method isSameElement + * @param { Node } nodeA 需要比较的节点 + * @param { Node } nodeB 需要比较的节点 + * @return { Boolean } 两个节点是否具有相同的标签名、属性名以及属性值 + * @example + * ```html + * ssss + * bbbbb + * ssss + * bbbbb + * + * + * ``` + */ + isSameElement:function (nodeA, nodeB) { + if (nodeA.tagName != nodeB.tagName) { + return false; + } + var thisAttrs = nodeA.attributes, + otherAttrs = nodeB.attributes; + if (!ie && thisAttrs.length != otherAttrs.length) { + return false; + } + var attrA, attrB, al = 0, bl = 0; + for (var i = 0; attrA = thisAttrs[i++];) { + if (attrA.nodeName == 'style') { + if (attrA.specified) { + al++; + } + if (domUtils.isSameStyle(nodeA, nodeB)) { + continue; + } else { + return false; + } + } + if (ie) { + if (attrA.specified) { + al++; + attrB = otherAttrs.getNamedItem(attrA.nodeName); + } else { + continue; + } + } else { + attrB = nodeB.attributes[attrA.nodeName]; + } + if (!attrB.specified || attrA.nodeValue != attrB.nodeValue) { + return false; + } + } + // 有可能attrB的属性包含了attrA的属性之外还有自己的属性 + if (ie) { + for (i = 0; attrB = otherAttrs[i++];) { + if (attrB.specified) { + bl++; + } + } + if (al != bl) { + return false; + } + } + return true; + }, + + /** + * 判断节点nodeA与节点nodeB的元素的style属性是否一致 + * @method isSameStyle + * @param { Node } nodeA 需要比较的节点 + * @param { Node } nodeB 需要比较的节点 + * @return { Boolean } 两个节点是否具有相同的style属性值 + * @example + * ```html + * ssss + * bbbbb + * ssss + * bbbbb + * + * + * ``` + */ + isSameStyle:function (nodeA, nodeB) { + var styleA = nodeA.style.cssText.replace(/( ?; ?)/g, ';').replace(/( ?: ?)/g, ':'), + styleB = nodeB.style.cssText.replace(/( ?; ?)/g, ';').replace(/( ?: ?)/g, ':'); + if (browser.opera) { + styleA = nodeA.style; + styleB = nodeB.style; + if (styleA.length != styleB.length) + return false; + for (var p in styleA) { + if (/^(\d+|csstext)$/i.test(p)) { + continue; + } + if (styleA[p] != styleB[p]) { + return false; + } + } + return true; + } + if (!styleA || !styleB) { + return styleA == styleB; + } + styleA = styleA.split(';'); + styleB = styleB.split(';'); + if (styleA.length != styleB.length) { + return false; + } + for (var i = 0, ci; ci = styleA[i++];) { + if (utils.indexOf(styleB, ci) == -1) { + return false; + } + } + return true; + }, + /** + * 检查节点node是否为block元素 + * @method isBlockElm + * @param { Node } node 需要检测的节点对象 + * @return { Boolean } 是否是block元素节点 + * @warning 该方法的判断规则如下: 如果该元素原本是block元素, 则不论该元素当前的css样式是什么都会返回true; + * 否则,检测该元素的css样式, 如果该元素当前是block元素, 则返回true。 其余情况下都返回false。 + * @example + * ```html + * + * + *
    + * + * + * ``` + */ + isBlockElm:function (node) { + return node.nodeType == 1 && (dtd.$block[node.tagName] || styleBlock[domUtils.getComputedStyle(node, 'display')]) && !dtd.$nonChild[node.tagName]; + }, + /** + * 检测node节点是否为body节点 + * @method isBody + * @param { Element } node 需要检测的dom元素 + * @return { Boolean } 给定的元素是否是body元素 + * @example + * ```javascript + * //output: true + * console.log( UE.dom.domUtils.isBody( document.body ) ); + * ``` + */ + isBody:function (node) { + return node && node.nodeType == 1 && node.tagName.toLowerCase() == 'body'; + }, + /** + * 以node节点为分界,将该节点的指定祖先节点parent拆分成两个独立的节点, + * 拆分形成的两个节点之间是node节点 + * @method breakParent + * @param { Node } node 作为分界的节点对象 + * @param { Node } parent 该节点必须是node节点的祖先节点, 且是block节点。 + * @return { Node } 给定的node分界节点 + * @example + * ```javascript + * + * var node = document.createElement("span"), + * wrapNode = document.createElement( "div" ), + * parent = document.createElement("p"); + * + * parent.appendChild( node ); + * wrapNode.appendChild( parent ); + * + * //拆分前 + * //output:

    + * console.log( wrapNode.innerHTML ); + * + * + * UE.dom.domUtils.breakParent( node, parent ); + * //拆分后 + * //output:

    + * console.log( wrapNode.innerHTML ); + * + * ``` + */ + breakParent:function (node, parent) { + var tmpNode, + parentClone = node, + clone = node, + leftNodes, + rightNodes; + do { + parentClone = parentClone.parentNode; + if (leftNodes) { + tmpNode = parentClone.cloneNode(false); + tmpNode.appendChild(leftNodes); + leftNodes = tmpNode; + tmpNode = parentClone.cloneNode(false); + tmpNode.appendChild(rightNodes); + rightNodes = tmpNode; + } else { + leftNodes = parentClone.cloneNode(false); + rightNodes = leftNodes.cloneNode(false); + } + while (tmpNode = clone.previousSibling) { + leftNodes.insertBefore(tmpNode, leftNodes.firstChild); + } + while (tmpNode = clone.nextSibling) { + rightNodes.appendChild(tmpNode); + } + clone = parentClone; + } while (parent !== parentClone); + tmpNode = parent.parentNode; + tmpNode.insertBefore(leftNodes, parent); + tmpNode.insertBefore(rightNodes, parent); + tmpNode.insertBefore(node, rightNodes); + domUtils.remove(parent); + return node; + }, + /** + * 检查节点node是否是空inline节点 + * @method isEmptyInlineElement + * @param { Node } node 需要检测的节点对象 + * @return { Number } 如果给定的节点是空的inline节点, 则返回1, 否则返回0。 + * @example + * ```html + * => 1 + * => 1 + * => 1 + * xx => 0 + * ``` + */ + isEmptyInlineElement:function (node) { + if (node.nodeType != 1 || !dtd.$removeEmpty[ node.tagName ]) { + return 0; + } + node = node.firstChild; + while (node) { + //如果是创建的bookmark就跳过 + if (domUtils.isBookmarkNode(node)) { + return 0; + } + if (node.nodeType == 1 && !domUtils.isEmptyInlineElement(node) || + node.nodeType == 3 && !domUtils.isWhitespace(node) + ) { + return 0; + } + node = node.nextSibling; + } + return 1; + + }, + + /** + * 删除node节点下首尾两端的空白文本子节点 + * @method trimWhiteTextNode + * @param { Element } node 需要执行删除操作的元素对象 + * @example + * ```javascript + * var node = document.createElement("div"); + * + * node.appendChild( document.createTextNode( "" ) ); + * + * node.appendChild( document.createElement("div") ); + * + * node.appendChild( document.createTextNode( "" ) ); + * + * //3 + * console.log( node.childNodes.length ); + * + * UE.dom.domUtils.trimWhiteTextNode( node ); + * + * //1 + * console.log( node.childNodes.length ); + * ``` + */ + trimWhiteTextNode:function (node) { + function remove(dir) { + var child; + while ((child = node[dir]) && child.nodeType == 3 && domUtils.isWhitespace(child)) { + node.removeChild(child); + } + } + remove('firstChild'); + remove('lastChild'); + }, + + /** + * 合并node节点下相同的子节点 + * @name mergeChild + * @desc + * UE.dom.domUtils.mergeChild(node,tagName) //tagName要合并的子节点的标签 + * @example + *

    xxaaxx

    + * ==> UE.dom.domUtils.mergeChild(node,'span') + *

    xxaaxx

    + */ + mergeChild:function (node, tagName, attrs) { + var list = domUtils.getElementsByTagName(node, node.tagName.toLowerCase()); + for (var i = 0, ci; ci = list[i++];) { + if (!ci.parentNode || domUtils.isBookmarkNode(ci)) { + continue; + } + //span单独处理 + if (ci.tagName.toLowerCase() == 'span') { + if (node === ci.parentNode) { + domUtils.trimWhiteTextNode(node); + if (node.childNodes.length == 1) { + node.style.cssText = ci.style.cssText + ";" + node.style.cssText; + domUtils.remove(ci, true); + continue; + } + } + ci.style.cssText = node.style.cssText + ';' + ci.style.cssText; + if (attrs) { + var style = attrs.style; + if (style) { + style = style.split(';'); + for (var j = 0, s; s = style[j++];) { + ci.style[utils.cssStyleToDomStyle(s.split(':')[0])] = s.split(':')[1]; + } + } + } + if (domUtils.isSameStyle(ci, node)) { + domUtils.remove(ci, true); + } + continue; + } + if (domUtils.isSameElement(node, ci)) { + domUtils.remove(ci, true); + } + } + }, + + /** + * 原生方法getElementsByTagName的封装 + * @method getElementsByTagName + * @param { Node } node 目标节点对象 + * @param { String } tagName 需要查找的节点的tagName, 多个tagName以空格分割 + * @return { Array } 符合条件的节点集合 + */ + getElementsByTagName:function (node, name,filter) { + if(filter && utils.isString(filter)){ + var className = filter; + filter = function(node){return domUtils.hasClass(node,className)} + } + name = utils.trim(name).replace(/[ ]{2,}/g,' ').split(' '); + var arr = []; + for(var n = 0,ni;ni=name[n++];){ + var list = node.getElementsByTagName(ni); + for (var i = 0, ci; ci = list[i++];) { + if(!filter || filter(ci)) + arr.push(ci); + } + } + + return arr; + }, + /** + * 将节点node提取到父节点上 + * @method mergeToParent + * @param { Element } node 需要提取的元素对象 + * @example + * ```html + *
    + *
    + * + *
    + *
    + * + * + * ``` + */ + mergeToParent:function (node) { + var parent = node.parentNode; + while (parent && dtd.$removeEmpty[parent.tagName]) { + if (parent.tagName == node.tagName || parent.tagName == 'A') {//针对a标签单独处理 + domUtils.trimWhiteTextNode(parent); + //span需要特殊处理 不处理这样的情况 xxxxxxxxx + if (parent.tagName == 'SPAN' && !domUtils.isSameStyle(parent, node) + || (parent.tagName == 'A' && node.tagName == 'SPAN')) { + if (parent.childNodes.length > 1 || parent !== node.parentNode) { + node.style.cssText = parent.style.cssText + ";" + node.style.cssText; + parent = parent.parentNode; + continue; + } else { + parent.style.cssText += ";" + node.style.cssText; + //trace:952 a标签要保持下划线 + if (parent.tagName == 'A') { + parent.style.textDecoration = 'underline'; + } + } + } + if (parent.tagName != 'A') { + parent === node.parentNode && domUtils.remove(node, true); + break; + } + } + parent = parent.parentNode; + } + }, + /** + * 合并节点node的左右兄弟节点 + * @method mergeSibling + * @param { Element } node 需要合并的目标节点 + * @example + * ```html + * xxxxoooxxxx + * + * + * ``` + */ + + /** + * 合并节点node的左右兄弟节点, 可以根据给定的条件选择是否忽略合并左节点。 + * @method mergeSibling + * @param { Element } node 需要合并的目标节点 + * @param { Boolean } ignorePre 是否忽略合并左节点 + * @example + * ```html + * xxxxoooxxxx + * + * + * ``` + */ + + /** + * 合并节点node的左右兄弟节点,可以根据给定的条件选择是否忽略合并左右节点。 + * @method mergeSibling + * @param { Element } node 需要合并的目标节点 + * @param { Boolean } ignorePre 是否忽略合并左节点 + * @param { Boolean } ignoreNext 是否忽略合并右节点 + * @remind 如果同时忽略左右节点, 则该操作什么也不会做 + * @example + * ```html + * xxxxoooxxxx + * + * + * ``` + */ + mergeSibling:function (node, ignorePre, ignoreNext) { + function merge(rtl, start, node) { + var next; + if ((next = node[rtl]) && !domUtils.isBookmarkNode(next) && next.nodeType == 1 && domUtils.isSameElement(node, next)) { + while (next.firstChild) { + if (start == 'firstChild') { + node.insertBefore(next.lastChild, node.firstChild); + } else { + node.appendChild(next.firstChild); + } + } + domUtils.remove(next); + } + } + !ignorePre && merge('previousSibling', 'firstChild', node); + !ignoreNext && merge('nextSibling', 'lastChild', node); + }, + + /** + * 设置节点node及其子节点不会被选中 + * @method unSelectable + * @param { Element } node 需要执行操作的dom元素 + * @remind 执行该操作后的节点, 将不能被鼠标选中 + * @example + * ```javascript + * UE.dom.domUtils.unSelectable( document.body ); + * ``` + */ + unSelectable:ie && browser.ie9below || browser.opera ? function (node) { + //for ie9 + node.onselectstart = function () { + return false; + }; + node.onclick = node.onkeyup = node.onkeydown = function () { + return false; + }; + node.unselectable = 'on'; + node.setAttribute("unselectable", "on"); + for (var i = 0, ci; ci = node.all[i++];) { + switch (ci.tagName.toLowerCase()) { + case 'iframe' : + case 'textarea' : + case 'input' : + case 'select' : + break; + default : + ci.unselectable = 'on'; + node.setAttribute("unselectable", "on"); + } + } + } : function (node) { + node.style.MozUserSelect = + node.style.webkitUserSelect = + node.style.msUserSelect = + node.style.KhtmlUserSelect = 'none'; + }, + /** + * 删除节点node上的指定属性名称的属性 + * @method removeAttributes + * @param { Node } node 需要删除属性的节点对象 + * @param { String } attrNames 可以是空格隔开的多个属性名称,该操作将会依次删除相应的属性 + * @example + * ```html + *
    + * xxxxx + *
    + * + * + * ``` + */ + + /** + * 删除节点node上的指定属性名称的属性 + * @method removeAttributes + * @param { Node } node 需要删除属性的节点对象 + * @param { Array } attrNames 需要删除的属性名数组 + * @example + * ```html + *
    + * xxxxx + *
    + * + * + * ``` + */ + removeAttributes:function (node, attrNames) { + attrNames = utils.isArray(attrNames) ? attrNames : utils.trim(attrNames).replace(/[ ]{2,}/g,' ').split(' '); + for (var i = 0, ci; ci = attrNames[i++];) { + ci = attrFix[ci] || ci; + switch (ci) { + case 'className': + node[ci] = ''; + break; + case 'style': + node.style.cssText = ''; + var val = node.getAttributeNode('style'); + !browser.ie && val && node.removeAttributeNode(val); + } + node.removeAttribute(ci); + } + }, + /** + * 在doc下创建一个标签名为tag,属性为attrs的元素 + * @method createElement + * @param { DomDocument } doc 新创建的元素属于该document节点创建 + * @param { String } tagName 需要创建的元素的标签名 + * @param { Object } attrs 新创建的元素的属性key-value集合 + * @return { Element } 新创建的元素对象 + * @example + * ```javascript + * var ele = UE.dom.domUtils.createElement( document, 'div', { + * id: 'test' + * } ); + * + * //output: DIV + * console.log( ele.tagName ); + * + * //output: test + * console.log( ele.id ); + * + * ``` + */ + createElement:function (doc, tag, attrs) { + return domUtils.setAttributes(doc.createElement(tag), attrs) + }, + /** + * 为节点node添加属性attrs,attrs为属性键值对 + * @method setAttributes + * @param { Element } node 需要设置属性的元素对象 + * @param { Object } attrs 需要设置的属性名-值对 + * @return { Element } 设置属性的元素对象 + * @example + * ```html + * + * + * + * + */ + setAttributes:function (node, attrs) { + for (var attr in attrs) { + if(attrs.hasOwnProperty(attr)){ + var value = attrs[attr]; + switch (attr) { + case 'class': + //ie下要这样赋值,setAttribute不起作用 + node.className = value; + break; + case 'style' : + node.style.cssText = node.style.cssText + ";" + value; + break; + case 'innerHTML': + node[attr] = value; + break; + case 'value': + node.value = value; + break; + default: + node.setAttribute(attrFix[attr] || attr, value); + } + } + } + return node; + }, + + /** + * 获取元素element经过计算后的样式值 + * @method getComputedStyle + * @param { Element } element 需要获取样式的元素对象 + * @param { String } styleName 需要获取的样式名 + * @return { String } 获取到的样式值 + * @example + * ```html + * + * + * + * + * + * ``` + */ + getComputedStyle:function (element, styleName) { + //一下的属性单独处理 + var pros = 'width height top left'; + + if(pros.indexOf(styleName) > -1){ + return element['offset' + styleName.replace(/^\w/,function(s){return s.toUpperCase()})] + 'px'; + } + //忽略文本节点 + if (element.nodeType == 3) { + element = element.parentNode; + } + //ie下font-size若body下定义了font-size,则从currentStyle里会取到这个font-size. 取不到实际值,故此修改. + if (browser.ie && browser.version < 9 && styleName == 'font-size' && !element.style.fontSize && + !dtd.$empty[element.tagName] && !dtd.$nonChild[element.tagName]) { + var span = element.ownerDocument.createElement('span'); + span.style.cssText = 'padding:0;border:0;font-family:simsun;'; + span.innerHTML = '.'; + element.appendChild(span); + var result = span.offsetHeight; + element.removeChild(span); + span = null; + return result + 'px'; + } + try { + var value = domUtils.getStyle(element, styleName) || + (window.getComputedStyle ? domUtils.getWindow(element).getComputedStyle(element, '').getPropertyValue(styleName) : + ( element.currentStyle || element.style )[utils.cssStyleToDomStyle(styleName)]); + + } catch (e) { + return ""; + } + return utils.transUnitToPx(utils.fixColor(styleName, value)); + }, + /** + * 删除元素element指定的className + * @method removeClasses + * @param { Element } ele 需要删除class的元素节点 + * @param { String } classNames 需要删除的className, 多个className之间以空格分开 + * @example + * ```html + * xxx + * + * + * ``` + */ + + /** + * 删除元素element指定的className + * @method removeClasses + * @param { Element } ele 需要删除class的元素节点 + * @param { Array } classNames 需要删除的className数组 + * @example + * ```html + * xxx + * + * + * ``` + */ + removeClasses:function (elm, classNames) { + classNames = utils.isArray(classNames) ? classNames : + utils.trim(classNames).replace(/[ ]{2,}/g,' ').split(' '); + for(var i = 0,ci,cls = elm.className;ci=classNames[i++];){ + cls = cls.replace(new RegExp('\\b' + ci + '\\b'),'') + } + cls = utils.trim(cls).replace(/[ ]{2,}/g,' '); + if(cls){ + elm.className = cls; + }else{ + domUtils.removeAttributes(elm,['class']); + } + }, + /** + * 给元素element添加className + * @method addClass + * @param { Node } ele 需要增加className的元素 + * @param { String } classNames 需要添加的className, 多个className之间以空格分割 + * @remind 相同的类名不会被重复添加 + * @example + * ```html + * + * + * + * ``` + */ + + /** + * 判断元素element是否包含给定的样式类名className + * @method hasClass + * @param { Node } ele 需要检测的元素 + * @param { Array } classNames 需要检测的className数组 + * @return { Boolean } 元素是否包含所有给定的className + * @example + * ```html + * + * + * + * ``` + */ + hasClass:function (element, className) { + if(utils.isRegExp(className)){ + return className.test(element.className) + } + className = utils.trim(className).replace(/[ ]{2,}/g,' ').split(' '); + for(var i = 0,ci,cls = element.className;ci=className[i++];){ + if(!new RegExp('\\b' + ci + '\\b','i').test(cls)){ + return false; + } + } + return i - 1 == className.length; + }, + + /** + * 阻止事件默认行为 + * @method preventDefault + * @param { Event } evt 需要阻止默认行为的事件对象 + * @example + * ```javascript + * UE.dom.domUtils.preventDefault( evt ); + * ``` + */ + preventDefault:function (evt) { + evt.preventDefault ? evt.preventDefault() : (evt.returnValue = false); + }, + /** + * 删除元素element指定的样式 + * @method removeStyle + * @param { Element } element 需要删除样式的元素 + * @param { String } styleName 需要删除的样式名 + * @example + * ```html + * + * + * + * ``` + */ + removeStyle:function (element, name) { + if(browser.ie ){ + //针对color先单独处理一下 + if(name == 'color'){ + name = '(^|;)' + name; + } + element.style.cssText = element.style.cssText.replace(new RegExp(name + '[^:]*:[^;]+;?','ig'),'') + }else{ + if (element.style.removeProperty) { + element.style.removeProperty (name); + }else { + element.style.removeAttribute (utils.cssStyleToDomStyle(name)); + } + } + + + if (!element.style.cssText) { + domUtils.removeAttributes(element, ['style']); + } + }, + /** + * 获取元素element的style属性的指定值 + * @method getStyle + * @param { Element } element 需要获取属性值的元素 + * @param { String } styleName 需要获取的style的名称 + * @warning 该方法仅获取元素style属性中所标明的值 + * @return { String } 该元素包含指定的style属性值 + * @example + * ```html + *
    + * + * + * ``` + */ + getStyle:function (element, name) { + var value = element.style[ utils.cssStyleToDomStyle(name) ]; + return utils.fixColor(name, value); + }, + /** + * 为元素element设置样式属性值 + * @method setStyle + * @param { Element } element 需要设置样式的元素 + * @param { String } styleName 样式名 + * @param { String } styleValue 样式值 + * @example + * ```html + *
    + * + * + * ``` + */ + setStyle:function (element, name, value) { + element.style[utils.cssStyleToDomStyle(name)] = value; + if(!utils.trim(element.style.cssText)){ + this.removeAttributes(element,'style') + } + }, + /** + * 为元素element设置多个样式属性值 + * @method setStyles + * @param { Element } element 需要设置样式的元素 + * @param { Object } styles 样式名值对 + * @example + * ```html + *
    + * + * + * ``` + */ + setStyles:function (element, styles) { + for (var name in styles) { + if (styles.hasOwnProperty(name)) { + domUtils.setStyle(element, name, styles[name]); + } + } + }, + /** + * 删除_moz_dirty属性 + * @private + * @method removeDirtyAttr + */ + removeDirtyAttr:function (node) { + for (var i = 0, ci, nodes = node.getElementsByTagName('*'); ci = nodes[i++];) { + ci.removeAttribute('_moz_dirty'); + } + node.removeAttribute('_moz_dirty'); + }, + /** + * 获取子节点的数量 + * @method getChildCount + * @param { Element } node 需要检测的元素 + * @return { Number } 给定的node元素的子节点数量 + * @example + * ```html + *
    + * + *
    + * + * + * ``` + */ + + /** + * 根据给定的过滤规则, 获取符合条件的子节点的数量 + * @method getChildCount + * @param { Element } node 需要检测的元素 + * @param { Function } fn 过滤器, 要求对符合条件的子节点返回true, 反之则要求返回false + * @return { Number } 符合过滤条件的node元素的子节点数量 + * @example + * ```html + *
    + * + *
    + * + * + * ``` + */ + getChildCount:function (node, fn) { + var count = 0, first = node.firstChild; + fn = fn || function () { + return 1; + }; + while (first) { + if (fn(first)) { + count++; + } + first = first.nextSibling; + } + return count; + }, + + /** + * 判断给定节点是否为空节点 + * @method isEmptyNode + * @param { Node } node 需要检测的节点对象 + * @return { Boolean } 节点是否为空 + * @example + * ```javascript + * UE.dom.domUtils.isEmptyNode( document.body ); + * ``` + */ + isEmptyNode:function (node) { + return !node.firstChild || domUtils.getChildCount(node, function (node) { + return !domUtils.isBr(node) && !domUtils.isBookmarkNode(node) && !domUtils.isWhitespace(node) + }) == 0 + }, + clearSelectedArr:function (nodes) { + var node; + while (node = nodes.pop()) { + domUtils.removeAttributes(node, ['class']); + } + }, + /** + * 将显示区域滚动到指定节点的位置 + * @method scrollToView + * @param {Node} node 节点 + * @param {window} win window对象 + * @param {Number} offsetTop 距离上方的偏移量 + */ + scrollToView:function (node, win, offsetTop) { + var getViewPaneSize = function () { + var doc = win.document, + mode = doc.compatMode == 'CSS1Compat'; + return { + width:( mode ? doc.documentElement.clientWidth : doc.body.clientWidth ) || 0, + height:( mode ? doc.documentElement.clientHeight : doc.body.clientHeight ) || 0 + }; + }, + getScrollPosition = function (win) { + if ('pageXOffset' in win) { + return { + x:win.pageXOffset || 0, + y:win.pageYOffset || 0 + }; + } + else { + var doc = win.document; + return { + x:doc.documentElement.scrollLeft || doc.body.scrollLeft || 0, + y:doc.documentElement.scrollTop || doc.body.scrollTop || 0 + }; + } + }; + var winHeight = getViewPaneSize().height, offset = winHeight * -1 + offsetTop; + offset += (node.offsetHeight || 0); + var elementPosition = domUtils.getXY(node); + offset += elementPosition.y; + var currentScroll = getScrollPosition(win).y; + // offset += 50; + if (offset > currentScroll || offset < currentScroll - winHeight) { + win.scrollTo(0, offset + (offset < 0 ? -20 : 20)); + } + }, + /** + * 判断给定节点是否为br + * @method isBr + * @param { Node } node 需要判断的节点对象 + * @return { Boolean } 给定的节点是否是br节点 + */ + isBr:function (node) { + return node.nodeType == 1 && node.tagName == 'BR'; + }, + /** + * 判断给定的节点是否是一个“填充”节点 + * @private + * @method isFillChar + * @param { Node } node 需要判断的节点 + * @param { Boolean } isInStart 是否从节点内容的开始位置匹配 + * @returns { Boolean } 节点是否是填充节点 + */ + isFillChar:function (node,isInStart) { + if(node.nodeType != 3) + return false; + var text = node.nodeValue; + if(isInStart){ + return new RegExp('^' + domUtils.fillChar).test(text) + } + return !text.replace(new RegExp(domUtils.fillChar,'g'), '').length + }, + isStartInblock:function (range) { + var tmpRange = range.cloneRange(), + flag = 0, + start = tmpRange.startContainer, + tmp; + if(start.nodeType == 1 && start.childNodes[tmpRange.startOffset]){ + start = start.childNodes[tmpRange.startOffset]; + var pre = start.previousSibling; + while(pre && domUtils.isFillChar(pre)){ + start = pre; + pre = pre.previousSibling; + } + } + if(this.isFillChar(start,true) && tmpRange.startOffset == 1){ + tmpRange.setStartBefore(start); + start = tmpRange.startContainer; + } + + while (start && domUtils.isFillChar(start)) { + tmp = start; + start = start.previousSibling + } + if (tmp) { + tmpRange.setStartBefore(tmp); + start = tmpRange.startContainer; + } + if (start.nodeType == 1 && domUtils.isEmptyNode(start) && tmpRange.startOffset == 1) { + tmpRange.setStart(start, 0).collapse(true); + } + while (!tmpRange.startOffset) { + start = tmpRange.startContainer; + if (domUtils.isBlockElm(start) || domUtils.isBody(start)) { + flag = 1; + break; + } + var pre = tmpRange.startContainer.previousSibling, + tmpNode; + if (!pre) { + tmpRange.setStartBefore(tmpRange.startContainer); + } else { + while (pre && domUtils.isFillChar(pre)) { + tmpNode = pre; + pre = pre.previousSibling; + } + if (tmpNode) { + tmpRange.setStartBefore(tmpNode); + } else { + tmpRange.setStartBefore(tmpRange.startContainer); + } + } + } + return flag && !domUtils.isBody(tmpRange.startContainer) ? 1 : 0; + }, + + /** + * 判断给定的元素是否是一个空元素 + * @method isEmptyBlock + * @param { Element } node 需要判断的元素 + * @return { Boolean } 是否是空元素 + * @example + * ```html + *
    + * + * + * ``` + */ + + /** + * 根据指定的判断规则判断给定的元素是否是一个空元素 + * @method isEmptyBlock + * @param { Element } node 需要判断的元素 + * @param { RegExp } reg 对内容执行判断的正则表达式对象 + * @return { Boolean } 是否是空元素 + */ + isEmptyBlock:function (node,reg) { + // HaoChuan9421 + if(!node){ + return; + } + if(node.nodeType != 1) + return 0; + reg = reg || new RegExp('[ \xa0\t\r\n' + domUtils.fillChar + ']', 'g'); + + if (node[browser.ie ? 'innerText' : 'textContent'].replace(reg, '').length > 0) { + return 0; + } + for (var n in dtd.$isNotEmpty) { + if (node.getElementsByTagName(n).length) { + return 0; + } + } + return 1; + }, + + /** + * 移动元素使得该元素的位置移动指定的偏移量的距离 + * @method setViewportOffset + * @param { Element } element 需要设置偏移量的元素 + * @param { Object } offset 偏移量, 形如{ left: 100, top: 50 }的一个键值对, 表示该元素将在 + * 现有的位置上向水平方向偏移offset.left的距离, 在竖直方向上偏移 + * offset.top的距离 + * @example + * ```html + *
    + * + * + * ``` + */ + setViewportOffset:function (element, offset) { + var left = parseInt(element.style.left) | 0; + var top = parseInt(element.style.top) | 0; + var rect = element.getBoundingClientRect(); + var offsetLeft = offset.left - rect.left; + var offsetTop = offset.top - rect.top; + if (offsetLeft) { + element.style.left = left + offsetLeft + 'px'; + } + if (offsetTop) { + element.style.top = top + offsetTop + 'px'; + } + }, + + /** + * 用“填充字符”填充节点 + * @method fillNode + * @private + * @param { DomDocument } doc 填充的节点所在的docment对象 + * @param { Node } node 需要填充的节点对象 + * @example + * ```html + *
    + * + * + * ``` + */ + fillNode:function (doc, node) { + var tmpNode = browser.ie ? doc.createTextNode(domUtils.fillChar) : doc.createElement('br'); + node.innerHTML = ''; + node.appendChild(tmpNode); + }, + + /** + * 把节点src的所有子节点追加到另一个节点tag上去 + * @method moveChild + * @param { Node } src 源节点, 该节点下的所有子节点将被移除 + * @param { Node } tag 目标节点, 从源节点移除的子节点将被追加到该节点下 + * @example + * ```html + *
    + * + *
    + *
    + *
    + *
    + * + * + * ``` + */ + + /** + * 把节点src的所有子节点移动到另一个节点tag上去, 可以通过dir参数控制附加的行为是“追加”还是“插入顶部” + * @method moveChild + * @param { Node } src 源节点, 该节点下的所有子节点将被移除 + * @param { Node } tag 目标节点, 从源节点移除的子节点将被附加到该节点下 + * @param { Boolean } dir 附加方式, 如果为true, 则附加进去的节点将被放到目标节点的顶部, 反之,则放到末尾 + * @example + * ```html + *
    + * + *
    + *
    + *
    + *
    + * + * + * ``` + */ + moveChild:function (src, tag, dir) { + while (src.firstChild) { + if (dir && tag.firstChild) { + tag.insertBefore(src.lastChild, tag.firstChild); + } else { + tag.appendChild(src.firstChild); + } + } + }, + + /** + * 判断节点的标签上是否不存在任何属性 + * @method hasNoAttributes + * @private + * @param { Node } node 需要检测的节点对象 + * @return { Boolean } 节点是否不包含任何属性 + * @example + * ```html + *
    xxxx
    + * + * + * ``` + */ + hasNoAttributes:function (node) { + return browser.ie ? /^<\w+\s*?>/.test(node.outerHTML) : node.attributes.length == 0; + }, + + /** + * 检测节点是否是UEditor所使用的辅助节点 + * @method isCustomeNode + * @private + * @param { Node } node 需要检测的节点 + * @remind 辅助节点是指编辑器要完成工作临时添加的节点, 在输出的时候将会从编辑器内移除, 不会影响最终的结果。 + * @return { Boolean } 给定的节点是否是一个辅助节点 + */ + isCustomeNode:function (node) { + return node.nodeType == 1 && node.getAttribute('_ue_custom_node_'); + }, + + /** + * 检测节点的标签是否是给定的标签 + * @method isTagNode + * @param { Node } node 需要检测的节点对象 + * @param { String } tagName 标签 + * @return { Boolean } 节点的标签是否是给定的标签 + * @example + * ```html + *
    + * + * + * ``` + */ + isTagNode:function (node, tagNames) { + return node.nodeType == 1 && new RegExp('\\b' + node.tagName + '\\b','i').test(tagNames) + }, + + /** + * 给定一个节点数组,在通过指定的过滤器过滤后, 获取其中满足过滤条件的第一个节点 + * @method filterNodeList + * @param { Array } nodeList 需要过滤的节点数组 + * @param { Function } fn 过滤器, 对符合条件的节点, 执行结果返回true, 反之则返回false + * @return { Node | NULL } 如果找到符合过滤条件的节点, 则返回该节点, 否则返回NULL + * @example + * ```javascript + * var divNodes = document.getElementsByTagName("div"); + * divNodes = [].slice.call( divNodes, 0 ); + * + * //output: null + * console.log( UE.dom.domUtils.filterNodeList( divNodes, function ( node ) { + * return node.tagName.toLowerCase() !== 'div'; + * } ) ); + * ``` + */ + + /** + * 给定一个节点数组nodeList和一组标签名tagNames, 获取其中能够匹配标签名的节点集合中的第一个节点 + * @method filterNodeList + * @param { Array } nodeList 需要过滤的节点数组 + * @param { String } tagNames 需要匹配的标签名, 多个标签名之间用空格分割 + * @return { Node | NULL } 如果找到标签名匹配的节点, 则返回该节点, 否则返回NULL + * @example + * ```javascript + * var divNodes = document.getElementsByTagName("div"); + * divNodes = [].slice.call( divNodes, 0 ); + * + * //output: null + * console.log( UE.dom.domUtils.filterNodeList( divNodes, 'a span' ) ); + * ``` + */ + + /** + * 给定一个节点数组,在通过指定的过滤器过滤后, 如果参数forAll为true, 则会返回所有满足过滤 + * 条件的节点集合, 否则, 返回满足条件的节点集合中的第一个节点 + * @method filterNodeList + * @param { Array } nodeList 需要过滤的节点数组 + * @param { Function } fn 过滤器, 对符合条件的节点, 执行结果返回true, 反之则返回false + * @param { Boolean } forAll 是否返回整个节点数组, 如果该参数为false, 则返回节点集合中的第一个节点 + * @return { Array | Node | NULL } 如果找到符合过滤条件的节点, 则根据参数forAll的值决定返回满足 + * 过滤条件的节点数组或第一个节点, 否则返回NULL + * @example + * ```javascript + * var divNodes = document.getElementsByTagName("div"); + * divNodes = [].slice.call( divNodes, 0 ); + * + * //output: 3(假定有3个div) + * console.log( divNodes.length ); + * + * var nodes = UE.dom.domUtils.filterNodeList( divNodes, function ( node ) { + * return node.tagName.toLowerCase() === 'div'; + * }, true ); + * + * //output: 3 + * console.log( nodes.length ); + * + * var node = UE.dom.domUtils.filterNodeList( divNodes, function ( node ) { + * return node.tagName.toLowerCase() === 'div'; + * }, false ); + * + * //output: div + * console.log( node.nodeName ); + * ``` + */ + filterNodeList : function(nodelist,filter,forAll){ + var results = []; + if(!utils .isFunction(filter)){ + var str = filter; + filter = function(n){ + return utils.indexOf(utils.isArray(str) ? str:str.split(' '), n.tagName.toLowerCase()) != -1 + }; + } + utils.each(nodelist,function(n){ + filter(n) && results.push(n) + }); + return results.length == 0 ? null : results.length == 1 || !forAll ? results[0] : results + }, + + /** + * 查询给定的range选区是否在给定的node节点内,且在该节点的最末尾 + * @method isInNodeEndBoundary + * @param { UE.dom.Range } rng 需要判断的range对象, 该对象的startContainer不能为NULL + * @param node 需要检测的节点对象 + * @return { Number } 如果给定的选取range对象是在node内部的最末端, 则返回1, 否则返回0 + */ + isInNodeEndBoundary : function (rng,node){ + var start = rng.startContainer; + if(start.nodeType == 3 && rng.startOffset != start.nodeValue.length){ + return 0; + } + if(start.nodeType == 1 && rng.startOffset != start.childNodes.length){ + return 0; + } + while(start !== node){ + if(start.nextSibling){ + return 0 + }; + start = start.parentNode; + } + return 1; + }, + isBoundaryNode : function (node,dir){ + var tmp; + while(!domUtils.isBody(node)){ + tmp = node; + node = node.parentNode; + if(tmp !== node[dir]){ + return false; + } + } + return true; + }, + fillHtml : browser.ie11below ? ' ' : '
    ' +}; +var fillCharReg = new RegExp(domUtils.fillChar, 'g'); + +// core/Range.js +/** + * Range封装 + * @file + * @module UE.dom + * @class Range + * @since 1.2.6.1 + */ + +/** + * dom操作封装 + * @unfile + * @module UE.dom + */ + +/** + * Range实现类,本类是UEditor底层核心类,封装不同浏览器之间的Range操作。 + * @unfile + * @module UE.dom + * @class Range + */ + + +(function () { + var guid = 0, + fillChar = domUtils.fillChar, + fillData; + + /** + * 更新range的collapse状态 + * @param {Range} range range对象 + */ + function updateCollapse(range) { + range.collapsed = + range.startContainer && range.endContainer && + range.startContainer === range.endContainer && + range.startOffset == range.endOffset; + } + + function selectOneNode(rng){ + return !rng.collapsed && rng.startContainer.nodeType == 1 && rng.startContainer === rng.endContainer && rng.endOffset - rng.startOffset == 1 + } + function setEndPoint(toStart, node, offset, range) { + //如果node是自闭合标签要处理 + if (node.nodeType == 1 && (dtd.$empty[node.tagName] || dtd.$nonChild[node.tagName])) { + offset = domUtils.getNodeIndex(node) + (toStart ? 0 : 1); + node = node.parentNode; + } + if (toStart) { + range.startContainer = node; + range.startOffset = offset; + if (!range.endContainer) { + range.collapse(true); + } + } else { + range.endContainer = node; + range.endOffset = offset; + if (!range.startContainer) { + range.collapse(false); + } + } + updateCollapse(range); + return range; + } + + function execContentsAction(range, action) { + //调整边界 + //range.includeBookmark(); + var start = range.startContainer, + end = range.endContainer, + startOffset = range.startOffset, + endOffset = range.endOffset, + doc = range.document, + frag = doc.createDocumentFragment(), + tmpStart, tmpEnd; + if (start.nodeType == 1) { + start = start.childNodes[startOffset] || (tmpStart = start.appendChild(doc.createTextNode(''))); + } + if (end.nodeType == 1) { + end = end.childNodes[endOffset] || (tmpEnd = end.appendChild(doc.createTextNode(''))); + } + if (start === end && start.nodeType == 3) { + frag.appendChild(doc.createTextNode(start.substringData(startOffset, endOffset - startOffset))); + //is not clone + if (action) { + start.deleteData(startOffset, endOffset - startOffset); + range.collapse(true); + } + return frag; + } + var current, currentLevel, clone = frag, + startParents = domUtils.findParents(start, true), endParents = domUtils.findParents(end, true); + for (var i = 0; startParents[i] == endParents[i];) { + i++; + } + for (var j = i, si; si = startParents[j]; j++) { + current = si.nextSibling; + if (si == start) { + if (!tmpStart) { + if (range.startContainer.nodeType == 3) { + clone.appendChild(doc.createTextNode(start.nodeValue.slice(startOffset))); + //is not clone + if (action) { + start.deleteData(startOffset, start.nodeValue.length - startOffset); + } + } else { + clone.appendChild(!action ? start.cloneNode(true) : start); + } + } + } else { + currentLevel = si.cloneNode(false); + clone.appendChild(currentLevel); + } + while (current) { + if (current === end || current === endParents[j]) { + break; + } + si = current.nextSibling; + clone.appendChild(!action ? current.cloneNode(true) : current); + current = si; + } + clone = currentLevel; + } + clone = frag; + if (!startParents[i]) { + clone.appendChild(startParents[i - 1].cloneNode(false)); + clone = clone.firstChild; + } + for (var j = i, ei; ei = endParents[j]; j++) { + current = ei.previousSibling; + if (ei == end) { + if (!tmpEnd && range.endContainer.nodeType == 3) { + clone.appendChild(doc.createTextNode(end.substringData(0, endOffset))); + //is not clone + if (action) { + end.deleteData(0, endOffset); + } + } + } else { + currentLevel = ei.cloneNode(false); + clone.appendChild(currentLevel); + } + //如果两端同级,右边第一次已经被开始做了 + if (j != i || !startParents[i]) { + while (current) { + if (current === start) { + break; + } + ei = current.previousSibling; + clone.insertBefore(!action ? current.cloneNode(true) : current, clone.firstChild); + current = ei; + } + } + clone = currentLevel; + } + if (action) { + range.setStartBefore(!endParents[i] ? endParents[i - 1] : !startParents[i] ? startParents[i - 1] : endParents[i]).collapse(true); + } + tmpStart && domUtils.remove(tmpStart); + tmpEnd && domUtils.remove(tmpEnd); + return frag; + } + + /** + * 创建一个跟document绑定的空的Range实例 + * @constructor + * @param { Document } document 新建的选区所属的文档对象 + */ + + /** + * @property { Node } startContainer 当前Range的开始边界的容器节点, 可以是一个元素节点或者是文本节点 + */ + + /** + * @property { Node } startOffset 当前Range的开始边界容器节点的偏移量, 如果是元素节点, + * 该值就是childNodes中的第几个节点, 如果是文本节点就是文本内容的第几个字符 + */ + + /** + * @property { Node } endContainer 当前Range的结束边界的容器节点, 可以是一个元素节点或者是文本节点 + */ + + /** + * @property { Node } endOffset 当前Range的结束边界容器节点的偏移量, 如果是元素节点, + * 该值就是childNodes中的第几个节点, 如果是文本节点就是文本内容的第几个字符 + */ + + /** + * @property { Boolean } collapsed 当前Range是否闭合 + * @default true + * @remind Range是闭合的时候, startContainer === endContainer && startOffset === endOffset + */ + + /** + * @property { Document } document 当前Range所属的Document对象 + * @remind 不同range的的document属性可以是不同的 + */ + var Range = dom.Range = function (document) { + var me = this; + me.startContainer = + me.startOffset = + me.endContainer = + me.endOffset = null; + me.document = document; + me.collapsed = true; + }; + + /** + * 删除fillData + * @param doc + * @param excludeNode + */ + function removeFillData(doc, excludeNode) { + try { + if (fillData && domUtils.inDoc(fillData, doc)) { + if (!fillData.nodeValue.replace(fillCharReg, '').length) { + var tmpNode = fillData.parentNode; + domUtils.remove(fillData); + while (tmpNode && domUtils.isEmptyInlineElement(tmpNode) && + //safari的contains有bug + (browser.safari ? !(domUtils.getPosition(tmpNode,excludeNode) & domUtils.POSITION_CONTAINS) : !tmpNode.contains(excludeNode)) + ) { + fillData = tmpNode.parentNode; + domUtils.remove(tmpNode); + tmpNode = fillData; + } + } else { + fillData.nodeValue = fillData.nodeValue.replace(fillCharReg, ''); + } + } + } catch (e) { + } + } + + /** + * @param node + * @param dir + */ + function mergeSibling(node, dir) { + var tmpNode; + node = node[dir]; + while (node && domUtils.isFillChar(node)) { + tmpNode = node[dir]; + domUtils.remove(node); + node = tmpNode; + } + } + + Range.prototype = { + + /** + * 克隆选区的内容到一个DocumentFragment里 + * @method cloneContents + * @return { DocumentFragment | NULL } 如果选区是闭合的将返回null, 否则, 返回包含所clone内容的DocumentFragment元素 + * @example + * ```html + * + * + * xx[xxx]x + * + * + * + * ``` + */ + cloneContents:function () { + return this.collapsed ? null : execContentsAction(this, 0); + }, + + /** + * 删除当前选区范围中的所有内容 + * @method deleteContents + * @remind 执行完该操作后, 当前Range对象变成了闭合状态 + * @return { UE.dom.Range } 当前操作的Range对象 + * @example + * ```html + * + * + * xx[xxx]x + * + * + * + * ``` + */ + deleteContents:function () { + var txt; + if (!this.collapsed) { + execContentsAction(this, 1); + } + if (browser.webkit) { + txt = this.startContainer; + if (txt.nodeType == 3 && !txt.nodeValue.length) { + this.setStartBefore(txt).collapse(true); + domUtils.remove(txt); + } + } + return this; + }, + + /** + * 将当前选区的内容提取到一个DocumentFragment里 + * @method extractContents + * @remind 执行该操作后, 选区将变成闭合状态 + * @warning 执行该操作后, 原来选区所选中的内容将从dom树上剥离出来 + * @return { DocumentFragment } 返回包含所提取内容的DocumentFragment对象 + * @example + * ```html + * + * + * xx[xxx]x + * + * + * + */ + extractContents:function () { + return this.collapsed ? null : execContentsAction(this, 2); + }, + + /** + * 设置Range的开始容器节点和偏移量 + * @method setStart + * @remind 如果给定的节点是元素节点,那么offset指的是其子元素中索引为offset的元素, + * 如果是文本节点,那么offset指的是其文本内容的第offset个字符 + * @remind 如果提供的容器节点是一个不能包含子元素的节点, 则该选区的开始容器将被设置 + * 为该节点的父节点, 此时, 其距离开始容器的偏移量也变成了该节点在其父节点 + * 中的索引 + * @param { Node } node 将被设为当前选区开始边界容器的节点对象 + * @param { int } offset 选区的开始位置偏移量 + * @return { UE.dom.Range } 当前range对象 + * @example + * ```html + * + * xxxxxxxxxxxxx[xxx] + * + * + * ``` + * @example + * ```html + * + * xxx[xx]x + * + * + * ``` + */ + setStart:function (node, offset) { + return setEndPoint(true, node, offset, this); + }, + + /** + * 设置Range的结束容器和偏移量 + * @method setEnd + * @param { Node } node 作为当前选区结束边界容器的节点对象 + * @param { int } offset 结束边界的偏移量 + * @see UE.dom.Range:setStart(Node,int) + * @return { UE.dom.Range } 当前range对象 + */ + setEnd:function (node, offset) { + return setEndPoint(false, node, offset, this); + }, + + /** + * 将Range开始位置设置到node节点之后 + * @method setStartAfter + * @remind 该操作将会把给定节点的父节点作为range的开始容器, 且偏移量是该节点在其父节点中的位置索引+1 + * @param { Node } node 选区的开始边界将紧接着该节点之后 + * @return { UE.dom.Range } 当前range对象 + * @example + * ```html + * + * xxxxxxx[xxxx] + * + * + * ``` + */ + setStartAfter:function (node) { + return this.setStart(node.parentNode, domUtils.getNodeIndex(node) + 1); + }, + + /** + * 将Range开始位置设置到node节点之前 + * @method setStartBefore + * @remind 该操作将会把给定节点的父节点作为range的开始容器, 且偏移量是该节点在其父节点中的位置索引 + * @param { Node } node 新的选区开始位置在该节点之前 + * @see UE.dom.Range:setStartAfter(Node) + * @return { UE.dom.Range } 当前range对象 + */ + setStartBefore:function (node) { + return this.setStart(node.parentNode, domUtils.getNodeIndex(node)); + }, + + /** + * 将Range结束位置设置到node节点之后 + * @method setEndAfter + * @remind 该操作将会把给定节点的父节点作为range的结束容器, 且偏移量是该节点在其父节点中的位置索引+1 + * @param { Node } node 目标节点 + * @see UE.dom.Range:setStartAfter(Node) + * @return { UE.dom.Range } 当前range对象 + * @example + * ```html + * + * [xxxxxxx]xxxx + * + * + * ``` + */ + setEndAfter:function (node) { + return this.setEnd(node.parentNode, domUtils.getNodeIndex(node) + 1); + }, + + /** + * 将Range结束位置设置到node节点之前 + * @method setEndBefore + * @remind 该操作将会把给定节点的父节点作为range的结束容器, 且偏移量是该节点在其父节点中的位置索引 + * @param { Node } node 目标节点 + * @see UE.dom.Range:setEndAfter(Node) + * @return { UE.dom.Range } 当前range对象 + */ + setEndBefore:function (node) { + return this.setEnd(node.parentNode, domUtils.getNodeIndex(node)); + }, + + /** + * 设置Range的开始位置到node节点内的第一个子节点之前 + * @method setStartAtFirst + * @remind 选区的开始容器将变成给定的节点, 且偏移量为0 + * @remind 如果给定的节点是元素节点, 则该节点必须是允许包含子节点的元素。 + * @param { Node } node 目标节点 + * @see UE.dom.Range:setStartBefore(Node) + * @return { UE.dom.Range } 当前range对象 + * @example + * ```html + * + * xxxxx[xx]xxxx + * + * + * ``` + */ + setStartAtFirst:function (node) { + return this.setStart(node, 0); + }, + + /** + * 设置Range的开始位置到node节点内的最后一个节点之后 + * @method setStartAtLast + * @remind 选区的开始容器将变成给定的节点, 且偏移量为该节点的子节点数 + * @remind 如果给定的节点是元素节点, 则该节点必须是允许包含子节点的元素。 + * @param { Node } node 目标节点 + * @see UE.dom.Range:setStartAtFirst(Node) + * @return { UE.dom.Range } 当前range对象 + */ + setStartAtLast:function (node) { + return this.setStart(node, node.nodeType == 3 ? node.nodeValue.length : node.childNodes.length); + }, + + /** + * 设置Range的结束位置到node节点内的第一个节点之前 + * @method setEndAtFirst + * @param { Node } node 目标节点 + * @remind 选区的结束容器将变成给定的节点, 且偏移量为0 + * @remind node必须是一个元素节点, 且必须是允许包含子节点的元素。 + * @see UE.dom.Range:setStartAtFirst(Node) + * @return { UE.dom.Range } 当前range对象 + */ + setEndAtFirst:function (node) { + return this.setEnd(node, 0); + }, + + /** + * 设置Range的结束位置到node节点内的最后一个节点之后 + * @method setEndAtLast + * @param { Node } node 目标节点 + * @remind 选区的结束容器将变成给定的节点, 且偏移量为该节点的子节点数量 + * @remind node必须是一个元素节点, 且必须是允许包含子节点的元素。 + * @see UE.dom.Range:setStartAtFirst(Node) + * @return { UE.dom.Range } 当前range对象 + */ + setEndAtLast:function (node) { + return this.setEnd(node, node.nodeType == 3 ? node.nodeValue.length : node.childNodes.length); + }, + + /** + * 选中给定节点 + * @method selectNode + * @remind 此时, 选区的开始容器和结束容器都是该节点的父节点, 其startOffset是该节点在父节点中的位置索引, + * 而endOffset为startOffset+1 + * @param { Node } node 需要选中的节点 + * @return { UE.dom.Range } 当前range对象,此时的range仅包含当前给定的节点对象 + * @example + * ```html + * + * xxxxx[xx]xxxx + * + * + * ``` + */ + selectNode:function (node) { + return this.setStartBefore(node).setEndAfter(node); + }, + + /** + * 选中给定节点内部的所有节点 + * @method selectNodeContents + * @remind 此时, 选区的开始容器和结束容器都是该节点, 其startOffset为0, + * 而endOffset是该节点的子节点数。 + * @param { Node } node 目标节点, 当前range将包含该节点内的所有节点 + * @return { UE.dom.Range } 当前range对象, 此时range仅包含给定节点的所有子节点 + * @example + * ```html + * + * xxxxx[xx]xxxx + * + * + * ``` + */ + selectNodeContents:function (node) { + return this.setStart(node, 0).setEndAtLast(node); + }, + + /** + * clone当前Range对象 + * @method cloneRange + * @remind 返回的range是一个全新的range对象, 其内部所有属性与当前被clone的range相同。 + * @return { UE.dom.Range } 当前range对象的一个副本 + */ + cloneRange:function () { + var me = this; + return new Range(me.document).setStart(me.startContainer, me.startOffset).setEnd(me.endContainer, me.endOffset); + + }, + + /** + * 向当前选区的结束处闭合选区 + * @method collapse + * @return { UE.dom.Range } 当前range对象 + * @example + * ```html + * + * xxxxx[xx]xxxx + * + * + * ``` + */ + + /** + * 闭合当前选区,根据给定的toStart参数项决定是向当前选区开始处闭合还是向结束处闭合, + * 如果toStart的值为true,则向开始位置闭合, 反之,向结束位置闭合。 + * @method collapse + * @param { Boolean } toStart 是否向选区开始处闭合 + * @return { UE.dom.Range } 当前range对象,此时range对象处于闭合状态 + * @see UE.dom.Range:collapse() + * @example + * ```html + * + * xxxxx[xx]xxxx + * + * + * ``` + */ + collapse:function (toStart) { + var me = this; + if (toStart) { + me.endContainer = me.startContainer; + me.endOffset = me.startOffset; + } else { + me.startContainer = me.endContainer; + me.startOffset = me.endOffset; + } + me.collapsed = true; + return me; + }, + + /** + * 调整range的开始位置和结束位置,使其"收缩"到最小的位置 + * @method shrinkBoundary + * @return { UE.dom.Range } 当前range对象 + * @example + * ```html + * xxxx[xxxxx] => xxxx[xxxxx] + * ``` + * + * @example + * ```html + * + * x[xx]xxx + * + * + * ``` + * + * @example + * ```html + * [xxxxxxxxxxx] => [xxxxxxxxxxx] + * ``` + */ + + /** + * 调整range的开始位置和结束位置,使其"收缩"到最小的位置, + * 如果ignoreEnd的值为true,则忽略对结束位置的调整 + * @method shrinkBoundary + * @param { Boolean } ignoreEnd 是否忽略对结束位置的调整 + * @return { UE.dom.Range } 当前range对象 + * @see UE.dom.domUtils.Range:shrinkBoundary() + */ + shrinkBoundary:function (ignoreEnd) { + var me = this, child, + collapsed = me.collapsed; + function check(node){ + return node.nodeType == 1 && !domUtils.isBookmarkNode(node) && !dtd.$empty[node.tagName] && !dtd.$nonChild[node.tagName] + } + while (me.startContainer.nodeType == 1 //是element + && (child = me.startContainer.childNodes[me.startOffset]) //子节点也是element + && check(child)) { + me.setStart(child, 0); + } + if (collapsed) { + return me.collapse(true); + } + if (!ignoreEnd) { + while (me.endContainer.nodeType == 1//是element + && me.endOffset > 0 //如果是空元素就退出 endOffset=0那么endOffst-1为负值,childNodes[endOffset]报错 + && (child = me.endContainer.childNodes[me.endOffset - 1]) //子节点也是element + && check(child)) { + me.setEnd(child, child.childNodes.length); + } + } + return me; + }, + + /** + * 获取离当前选区内包含的所有节点最近的公共祖先节点, + * @method getCommonAncestor + * @remind 返回的公共祖先节点一定不是range自身的容器节点, 但有可能是一个文本节点 + * @return { Node } 当前range对象内所有节点的公共祖先节点 + * @example + * ```html + * //选区示例 + * xxxx[xxx]xxxxxx + * + * ``` + */ + + /** + * 获取当前选区所包含的所有节点的公共祖先节点, 可以根据给定的参数 includeSelf 决定获取到 + * 的公共祖先节点是否可以是当前选区的startContainer或endContainer节点, 如果 includeSelf + * 的取值为true, 则返回的节点可以是自身的容器节点, 否则, 则不能是容器节点 + * @method getCommonAncestor + * @param { Boolean } includeSelf 是否允许获取到的公共祖先节点是当前range对象的容器节点 + * @return { Node } 当前range对象内所有节点的公共祖先节点 + * @see UE.dom.Range:getCommonAncestor() + * @example + * ```html + * + * + * + * xxxxxxxxx[xxx]xxxxxxxx + * + * + * + * + * ``` + */ + + /** + * 获取当前选区所包含的所有节点的公共祖先节点, 可以根据给定的参数 includeSelf 决定获取到 + * 的公共祖先节点是否可以是当前选区的startContainer或endContainer节点, 如果 includeSelf + * 的取值为true, 则返回的节点可以是自身的容器节点, 否则, 则不能是容器节点; 同时可以根据 + * ignoreTextNode 参数的取值决定是否忽略类型为文本节点的祖先节点。 + * @method getCommonAncestor + * @param { Boolean } includeSelf 是否允许获取到的公共祖先节点是当前range对象的容器节点 + * @param { Boolean } ignoreTextNode 获取祖先节点的过程中是否忽略类型为文本节点的祖先节点 + * @return { Node } 当前range对象内所有节点的公共祖先节点 + * @see UE.dom.Range:getCommonAncestor() + * @see UE.dom.Range:getCommonAncestor(Boolean) + * @example + * ```html + * + * + * + * xxxxxxxx[x]xxxxxxxxxxx + * + * + * + * + * ``` + */ + getCommonAncestor:function (includeSelf, ignoreTextNode) { + var me = this, + start = me.startContainer, + end = me.endContainer; + if (start === end) { + if (includeSelf && selectOneNode(this)) { + start = start.childNodes[me.startOffset]; + if(start.nodeType == 1) + return start; + } + //只有在上来就相等的情况下才会出现是文本的情况 + return ignoreTextNode && start.nodeType == 3 ? start.parentNode : start; + } + return domUtils.getCommonAncestor(start, end); + }, + + /** + * 调整当前Range的开始和结束边界容器,如果是容器节点是文本节点,就调整到包含该文本节点的父节点上 + * @method trimBoundary + * @remind 该操作有可能会引起文本节点被切开 + * @return { UE.dom.Range } 当前range对象 + * @example + * ```html + * + * //选区示例 + * xxx[xxxxx]xxx + * + * + * ``` + */ + + /** + * 调整当前Range的开始和结束边界容器,如果是容器节点是文本节点,就调整到包含该文本节点的父节点上, + * 可以根据 ignoreEnd 参数的值决定是否调整对结束边界的调整 + * @method trimBoundary + * @param { Boolean } ignoreEnd 是否忽略对结束边界的调整 + * @return { UE.dom.Range } 当前range对象 + * @example + * ```html + * + * //选区示例 + * xxx[xxxxx]xxx + * + * + * ``` + */ + trimBoundary:function (ignoreEnd) { + this.txtToElmBoundary(); + var start = this.startContainer, + offset = this.startOffset, + collapsed = this.collapsed, + end = this.endContainer; + if (start.nodeType == 3) { + if (offset == 0) { + this.setStartBefore(start); + } else { + if (offset >= start.nodeValue.length) { + this.setStartAfter(start); + } else { + var textNode = domUtils.split(start, offset); + //跟新结束边界 + if (start === end) { + this.setEnd(textNode, this.endOffset - offset); + } else if (start.parentNode === end) { + this.endOffset += 1; + } + this.setStartBefore(textNode); + } + } + if (collapsed) { + return this.collapse(true); + } + } + if (!ignoreEnd) { + offset = this.endOffset; + end = this.endContainer; + if (end.nodeType == 3) { + if (offset == 0) { + this.setEndBefore(end); + } else { + offset < end.nodeValue.length && domUtils.split(end, offset); + this.setEndAfter(end); + } + } + } + return this; + }, + + /** + * 如果选区在文本的边界上,就扩展选区到文本的父节点上, 如果当前选区是闭合的, 则什么也不做 + * @method txtToElmBoundary + * @remind 该操作不会修改dom节点 + * @return { UE.dom.Range } 当前range对象 + */ + + /** + * 如果选区在文本的边界上,就扩展选区到文本的父节点上, 如果当前选区是闭合的, 则根据参数项 + * ignoreCollapsed 的值决定是否执行该调整 + * @method txtToElmBoundary + * @param { Boolean } ignoreCollapsed 是否忽略选区的闭合状态, 如果该参数取值为true, 则 + * 不论选区是否闭合, 都会执行该操作, 反之, 则不会对闭合的选区执行该操作 + * @return { UE.dom.Range } 当前range对象 + */ + txtToElmBoundary:function (ignoreCollapsed) { + function adjust(r, c) { + var container = r[c + 'Container'], + offset = r[c + 'Offset']; + if (container.nodeType == 3) { + if (!offset) { + r['set' + c.replace(/(\w)/, function (a) { + return a.toUpperCase(); + }) + 'Before'](container); + } else if (offset >= container.nodeValue.length) { + r['set' + c.replace(/(\w)/, function (a) { + return a.toUpperCase(); + }) + 'After' ](container); + } + } + } + + if (ignoreCollapsed || !this.collapsed) { + adjust(this, 'start'); + adjust(this, 'end'); + } + return this; + }, + + /** + * 在当前选区的开始位置前插入节点,新插入的节点会被该range包含 + * @method insertNode + * @param { Node } node 需要插入的节点 + * @remind 插入的节点可以是一个DocumentFragment依次插入多个节点 + * @return { UE.dom.Range } 当前range对象 + */ + insertNode:function (node) { + var first = node, length = 1; + if (node.nodeType == 11) { + first = node.firstChild; + length = node.childNodes.length; + } + this.trimBoundary(true); + var start = this.startContainer, + offset = this.startOffset; + var nextNode = start.childNodes[ offset ]; + if (nextNode) { + start.insertBefore(node, nextNode); + } else { + start.appendChild(node); + } + if (first.parentNode === this.endContainer) { + this.endOffset = this.endOffset + length; + } + return this.setStartBefore(first); + }, + + /** + * 闭合选区到当前选区的开始位置, 并且定位光标到闭合后的位置 + * @method setCursor + * @return { UE.dom.Range } 当前range对象 + * @see UE.dom.Range:collapse() + */ + + /** + * 闭合选区,可以根据参数toEnd的值控制选区是向前闭合还是向后闭合, 并且定位光标到闭合后的位置。 + * @method setCursor + * @param { Boolean } toEnd 是否向后闭合, 如果为true, 则闭合选区时, 将向结束容器方向闭合, + * 反之,则向开始容器方向闭合 + * @return { UE.dom.Range } 当前range对象 + * @see UE.dom.Range:collapse(Boolean) + */ + setCursor:function (toEnd, noFillData) { + return this.collapse(!toEnd).select(noFillData); + }, + + /** + * 创建当前range的一个书签,记录下当前range的位置,方便当dom树改变时,还能找回原来的选区位置 + * @method createBookmark + * @param { Boolean } serialize 控制返回的标记位置是对当前位置的引用还是ID,如果该值为true,则 + * 返回标记位置的ID, 反之则返回标记位置节点的引用 + * @return { Object } 返回一个书签记录键值对, 其包含的key有: start => 开始标记的ID或者引用, + * end => 结束标记的ID或引用, id => 当前标记的类型, 如果为true,则表示 + * 返回的记录的类型为ID, 反之则为引用 + */ + createBookmark:function (serialize, same) { + var endNode, + startNode = this.document.createElement('span'); + startNode.style.cssText = 'display:none;line-height:0px;'; + startNode.appendChild(this.document.createTextNode('\u200D')); + startNode.id = '_baidu_bookmark_start_' + (same ? '' : guid++); + + if (!this.collapsed) { + endNode = startNode.cloneNode(true); + endNode.id = '_baidu_bookmark_end_' + (same ? '' : guid++); + } + this.insertNode(startNode); + if (endNode) { + this.collapse().insertNode(endNode).setEndBefore(endNode); + } + this.setStartAfter(startNode); + return { + start:serialize ? startNode.id : startNode, + end:endNode ? serialize ? endNode.id : endNode : null, + id:serialize + } + }, + + /** + * 调整当前range的边界到书签位置,并删除该书签对象所标记的位置内的节点 + * @method moveToBookmark + * @param { BookMark } bookmark createBookmark所创建的标签对象 + * @return { UE.dom.Range } 当前range对象 + * @see UE.dom.Range:createBookmark(Boolean) + */ + moveToBookmark:function (bookmark) { + var start = bookmark.id ? this.document.getElementById(bookmark.start) : bookmark.start, + end = bookmark.end && bookmark.id ? this.document.getElementById(bookmark.end) : bookmark.end; + this.setStartBefore(start); + domUtils.remove(start); + if (end) { + this.setEndBefore(end); + domUtils.remove(end); + } else { + this.collapse(true); + } + return this; + }, + + /** + * 调整range的边界,使其"放大"到最近的父节点 + * @method enlarge + * @remind 会引起选区的变化 + * @return { UE.dom.Range } 当前range对象 + */ + + /** + * 调整range的边界,使其"放大"到最近的父节点,根据参数 toBlock 的取值, 可以 + * 要求扩大之后的父节点是block节点 + * @method enlarge + * @param { Boolean } toBlock 是否要求扩大之后的父节点必须是block节点 + * @return { UE.dom.Range } 当前range对象 + */ + enlarge:function (toBlock, stopFn) { + var isBody = domUtils.isBody, + pre, node, tmp = this.document.createTextNode(''); + if (toBlock) { + node = this.startContainer; + if (node.nodeType == 1) { + if (node.childNodes[this.startOffset]) { + pre = node = node.childNodes[this.startOffset] + } else { + node.appendChild(tmp); + pre = node = tmp; + } + } else { + pre = node; + } + while (1) { + if (domUtils.isBlockElm(node)) { + node = pre; + while ((pre = node.previousSibling) && !domUtils.isBlockElm(pre)) { + node = pre; + } + this.setStartBefore(node); + break; + } + pre = node; + node = node.parentNode; + } + node = this.endContainer; + if (node.nodeType == 1) { + if (pre = node.childNodes[this.endOffset]) { + node.insertBefore(tmp, pre); + } else { + node.appendChild(tmp); + } + pre = node = tmp; + } else { + pre = node; + } + while (1) { + if (domUtils.isBlockElm(node)) { + node = pre; + while ((pre = node.nextSibling) && !domUtils.isBlockElm(pre)) { + node = pre; + } + this.setEndAfter(node); + break; + } + pre = node; + node = node.parentNode; + } + if (tmp.parentNode === this.endContainer) { + this.endOffset--; + } + domUtils.remove(tmp); + } + + // 扩展边界到最大 + if (!this.collapsed) { + while (this.startOffset == 0) { + if (stopFn && stopFn(this.startContainer)) { + break; + } + if (isBody(this.startContainer)) { + break; + } + this.setStartBefore(this.startContainer); + } + while (this.endOffset == (this.endContainer.nodeType == 1 ? this.endContainer.childNodes.length : this.endContainer.nodeValue.length)) { + if (stopFn && stopFn(this.endContainer)) { + break; + } + if (isBody(this.endContainer)) { + break; + } + this.setEndAfter(this.endContainer); + } + } + return this; + }, + enlargeToBlockElm:function(ignoreEnd){ + while(!domUtils.isBlockElm(this.startContainer)){ + this.setStartBefore(this.startContainer); + } + if(!ignoreEnd){ + while(!domUtils.isBlockElm(this.endContainer)){ + this.setEndAfter(this.endContainer); + } + } + return this; + }, + /** + * 调整Range的边界,使其"缩小"到最合适的位置 + * @method adjustmentBoundary + * @return { UE.dom.Range } 当前range对象 + * @see UE.dom.Range:shrinkBoundary() + */ + adjustmentBoundary:function () { + if (!this.collapsed) { + while (!domUtils.isBody(this.startContainer) && + this.startOffset == this.startContainer[this.startContainer.nodeType == 3 ? 'nodeValue' : 'childNodes'].length && + this.startContainer[this.startContainer.nodeType == 3 ? 'nodeValue' : 'childNodes'].length + ) { + + this.setStartAfter(this.startContainer); + } + while (!domUtils.isBody(this.endContainer) && !this.endOffset && + this.endContainer[this.endContainer.nodeType == 3 ? 'nodeValue' : 'childNodes'].length + ) { + this.setEndBefore(this.endContainer); + } + } + return this; + }, + + /** + * 给range选区中的内容添加给定的inline标签 + * @method applyInlineStyle + * @param { String } tagName 需要添加的标签名 + * @example + * ```html + *

    xxxx[xxxx]x

    ==> range.applyInlineStyle("strong") ==>

    xxxx[xxxx]x

    + * ``` + */ + + /** + * 给range选区中的内容添加给定的inline标签, 并且为标签附加上一些初始化属性。 + * @method applyInlineStyle + * @param { String } tagName 需要添加的标签名 + * @param { Object } attrs 跟随新添加的标签的属性 + * @return { UE.dom.Range } 当前选区 + * @example + * ```html + *

    xxxx[xxxx]x

    + * + * ==> + * + * + * range.applyInlineStyle("strong",{"style":"font-size:12px"}) + * + * ==> + * + *

    xxxx[xxxx]x

    + * ``` + */ + applyInlineStyle:function (tagName, attrs, list) { + if (this.collapsed)return this; + this.trimBoundary().enlarge(false, + function (node) { + return node.nodeType == 1 && domUtils.isBlockElm(node) + }).adjustmentBoundary(); + var bookmark = this.createBookmark(), + end = bookmark.end, + filterFn = function (node) { + return node.nodeType == 1 ? node.tagName.toLowerCase() != 'br' : !domUtils.isWhitespace(node); + }, + current = domUtils.getNextDomNode(bookmark.start, false, filterFn), + node, + pre, + range = this.cloneRange(); + while (current && (domUtils.getPosition(current, end) & domUtils.POSITION_PRECEDING)) { + if (current.nodeType == 3 || dtd[tagName][current.tagName]) { + range.setStartBefore(current); + node = current; + while (node && (node.nodeType == 3 || dtd[tagName][node.tagName]) && node !== end) { + pre = node; + node = domUtils.getNextDomNode(node, node.nodeType == 1, null, function (parent) { + return dtd[tagName][parent.tagName]; + }); + } + var frag = range.setEndAfter(pre).extractContents(), elm; + if (list && list.length > 0) { + var level, top; + top = level = list[0].cloneNode(false); + for (var i = 1, ci; ci = list[i++];) { + level.appendChild(ci.cloneNode(false)); + level = level.firstChild; + } + elm = level; + } else { + elm = range.document.createElement(tagName); + } + if (attrs) { + domUtils.setAttributes(elm, attrs); + } + elm.appendChild(frag); + range.insertNode(list ? top : elm); + //处理下滑线在a上的情况 + var aNode; + if (tagName == 'span' && attrs.style && /text\-decoration/.test(attrs.style) && (aNode = domUtils.findParentByTagName(elm, 'a', true))) { + domUtils.setAttributes(aNode, attrs); + domUtils.remove(elm, true); + elm = aNode; + } else { + domUtils.mergeSibling(elm); + domUtils.clearEmptySibling(elm); + } + //去除子节点相同的 + domUtils.mergeChild(elm, attrs); + current = domUtils.getNextDomNode(elm, false, filterFn); + domUtils.mergeToParent(elm); + if (node === end) { + break; + } + } else { + current = domUtils.getNextDomNode(current, true, filterFn); + } + } + return this.moveToBookmark(bookmark); + }, + + /** + * 移除当前选区内指定的inline标签,但保留其中的内容 + * @method removeInlineStyle + * @param { String } tagName 需要移除的标签名 + * @return { UE.dom.Range } 当前的range对象 + * @example + * ```html + * xx[xxxxyyyzz]z => range.removeInlineStyle(["em"]) => xx[xxxxyyyzz]z + * ``` + */ + + /** + * 移除当前选区内指定的一组inline标签,但保留其中的内容 + * @method removeInlineStyle + * @param { Array } tagNameArr 需要移除的标签名的数组 + * @return { UE.dom.Range } 当前的range对象 + * @see UE.dom.Range:removeInlineStyle(String) + */ + removeInlineStyle:function (tagNames) { + if (this.collapsed)return this; + tagNames = utils.isArray(tagNames) ? tagNames : [tagNames]; + this.shrinkBoundary().adjustmentBoundary(); + var start = this.startContainer, end = this.endContainer; + while (1) { + if (start.nodeType == 1) { + if (utils.indexOf(tagNames, start.tagName.toLowerCase()) > -1) { + break; + } + if (start.tagName.toLowerCase() == 'body') { + start = null; + break; + } + } + start = start.parentNode; + } + while (1) { + if (end.nodeType == 1) { + if (utils.indexOf(tagNames, end.tagName.toLowerCase()) > -1) { + break; + } + if (end.tagName.toLowerCase() == 'body') { + end = null; + break; + } + } + end = end.parentNode; + } + var bookmark = this.createBookmark(), + frag, + tmpRange; + if (start) { + tmpRange = this.cloneRange().setEndBefore(bookmark.start).setStartBefore(start); + frag = tmpRange.extractContents(); + tmpRange.insertNode(frag); + domUtils.clearEmptySibling(start, true); + start.parentNode.insertBefore(bookmark.start, start); + } + if (end) { + tmpRange = this.cloneRange().setStartAfter(bookmark.end).setEndAfter(end); + frag = tmpRange.extractContents(); + tmpRange.insertNode(frag); + domUtils.clearEmptySibling(end, false, true); + end.parentNode.insertBefore(bookmark.end, end.nextSibling); + } + var current = domUtils.getNextDomNode(bookmark.start, false, function (node) { + return node.nodeType == 1; + }), next; + while (current && current !== bookmark.end) { + next = domUtils.getNextDomNode(current, true, function (node) { + return node.nodeType == 1; + }); + if (utils.indexOf(tagNames, current.tagName.toLowerCase()) > -1) { + domUtils.remove(current, true); + } + current = next; + } + return this.moveToBookmark(bookmark); + }, + + /** + * 获取当前选中的自闭合的节点 + * @method getClosedNode + * @return { Node | NULL } 如果当前选中的是自闭合节点, 则返回该节点, 否则返回NULL + */ + getClosedNode:function () { + var node; + if (!this.collapsed) { + var range = this.cloneRange().adjustmentBoundary().shrinkBoundary(); + if (selectOneNode(range)) { + var child = range.startContainer.childNodes[range.startOffset]; + if (child && child.nodeType == 1 && (dtd.$empty[child.tagName] || dtd.$nonChild[child.tagName])) { + node = child; + } + } + } + return node; + }, + + /** + * 在页面上高亮range所表示的选区 + * @method select + * @return { UE.dom.Range } 返回当前Range对象 + */ + //这里不区分ie9以上,trace:3824 + select:browser.ie ? function (noFillData, textRange) { + var nativeRange; + if (!this.collapsed) + this.shrinkBoundary(); + var node = this.getClosedNode(); + if (node && !textRange) { + try { + nativeRange = this.document.body.createControlRange(); + nativeRange.addElement(node); + nativeRange.select(); + } catch (e) {} + return this; + } + var bookmark = this.createBookmark(), + start = bookmark.start, + end; + nativeRange = this.document.body.createTextRange(); + nativeRange.moveToElementText(start); + nativeRange.moveStart('character', 1); + if (!this.collapsed) { + var nativeRangeEnd = this.document.body.createTextRange(); + end = bookmark.end; + nativeRangeEnd.moveToElementText(end); + nativeRange.setEndPoint('EndToEnd', nativeRangeEnd); + } else { + if (!noFillData && this.startContainer.nodeType != 3) { + //使用|x固定住光标 + var tmpText = this.document.createTextNode(fillChar), + tmp = this.document.createElement('span'); + tmp.appendChild(this.document.createTextNode(fillChar)); + start.parentNode.insertBefore(tmp, start); + start.parentNode.insertBefore(tmpText, start); + //当点b,i,u时,不能清除i上边的b + removeFillData(this.document, tmpText); + fillData = tmpText; + mergeSibling(tmp, 'previousSibling'); + mergeSibling(start, 'nextSibling'); + nativeRange.moveStart('character', -1); + nativeRange.collapse(true); + } + } + this.moveToBookmark(bookmark); + tmp && domUtils.remove(tmp); + //IE在隐藏状态下不支持range操作,catch一下 + try { + nativeRange.select(); + } catch (e) { + } + return this; + } : function (notInsertFillData) { + function checkOffset(rng){ + + function check(node,offset,dir){ + if(node.nodeType == 3 && node.nodeValue.length < offset){ + rng[dir + 'Offset'] = node.nodeValue.length + } + } + check(rng.startContainer,rng.startOffset,'start'); + check(rng.endContainer,rng.endOffset,'end'); + } + var win = domUtils.getWindow(this.document), + sel = win.getSelection(), + txtNode; + //FF下关闭自动长高时滚动条在关闭dialog时会跳 + //ff下如果不body.focus将不能定位闭合光标到编辑器内 + browser.gecko ? this.document.body.focus() : win.focus(); + if (sel) { + sel.removeAllRanges(); + // trace:870 chrome/safari后边是br对于闭合得range不能定位 所以去掉了判断 + // this.startContainer.nodeType != 3 &&! ((child = this.startContainer.childNodes[this.startOffset]) && child.nodeType == 1 && child.tagName == 'BR' + if (this.collapsed && !notInsertFillData) { +// //opear如果没有节点接着,原生的不能够定位,不能在body的第一级插入空白节点 +// if (notInsertFillData && browser.opera && !domUtils.isBody(this.startContainer) && this.startContainer.nodeType == 1) { +// var tmp = this.document.createTextNode(''); +// this.insertNode(tmp).setStart(tmp, 0).collapse(true); +// } +// + //处理光标落在文本节点的情况 + //处理以下的情况 + //|xxxx + //xxxx|xxxx + //xxxx| + var start = this.startContainer,child = start; + if(start.nodeType == 1){ + child = start.childNodes[this.startOffset]; + + } + if( !(start.nodeType == 3 && this.startOffset) && + (child ? + (!child.previousSibling || child.previousSibling.nodeType != 3) + : + (!start.lastChild || start.lastChild.nodeType != 3) + ) + ){ + txtNode = this.document.createTextNode(fillChar); + //跟着前边走 + this.insertNode(txtNode); + removeFillData(this.document, txtNode); + mergeSibling(txtNode, 'previousSibling'); + mergeSibling(txtNode, 'nextSibling'); + fillData = txtNode; + this.setStart(txtNode, browser.webkit ? 1 : 0).collapse(true); + } + } + var nativeRange = this.document.createRange(); + if(this.collapsed && browser.opera && this.startContainer.nodeType == 1){ + var child = this.startContainer.childNodes[this.startOffset]; + if(!child){ + //往前靠拢 + child = this.startContainer.lastChild; + if( child && domUtils.isBr(child)){ + this.setStartBefore(child).collapse(true); + } + }else{ + //向后靠拢 + while(child && domUtils.isBlockElm(child)){ + if(child.nodeType == 1 && child.childNodes[0]){ + child = child.childNodes[0] + }else{ + break; + } + } + child && this.setStartBefore(child).collapse(true) + } + + } + //是createAddress最后一位算的不准,现在这里进行微调 + checkOffset(this); + nativeRange.setStart(this.startContainer, this.startOffset); + nativeRange.setEnd(this.endContainer, this.endOffset); + sel.addRange(nativeRange); + } + return this; + }, + + /** + * 滚动到当前range开始的位置 + * @method scrollToView + * @param { Window } win 当前range对象所属的window对象 + * @return { UE.dom.Range } 当前Range对象 + */ + + /** + * 滚动到距离当前range开始位置 offset 的位置处 + * @method scrollToView + * @param { Window } win 当前range对象所属的window对象 + * @param { Number } offset 距离range开始位置处的偏移量, 如果为正数, 则向下偏移, 反之, 则向上偏移 + * @return { UE.dom.Range } 当前Range对象 + */ + scrollToView:function (win, offset) { + win = win ? window : domUtils.getWindow(this.document); + var me = this, + span = me.document.createElement('span'); + //trace:717 + span.innerHTML = ' '; + me.cloneRange().insertNode(span); + domUtils.scrollToView(span, win, offset); + domUtils.remove(span); + return me; + }, + + /** + * 判断当前选区内容是否占位符 + * @private + * @method inFillChar + * @return { Boolean } 如果是占位符返回true,否则返回false + */ + inFillChar : function(){ + var start = this.startContainer; + if(this.collapsed && start.nodeType == 3 + && start.nodeValue.replace(new RegExp('^' + domUtils.fillChar),'').length + 1 == start.nodeValue.length + ){ + return true; + } + return false; + }, + + /** + * 保存 + * @method createAddress + * @private + * @return { Boolean } 返回开始和结束的位置 + * @example + * ```html + * + *

    + * aaaa + * + * + * bbbb + * + * + *

    + * + * + * + * ``` + */ + createAddress : function(ignoreEnd,ignoreTxt){ + var addr = {},me = this; + + function getAddress(isStart){ + var node = isStart ? me.startContainer : me.endContainer; + var parents = domUtils.findParents(node,true,function(node){return !domUtils.isBody(node)}), + addrs = []; + for(var i = 0,ci;ci = parents[i++];){ + addrs.push(domUtils.getNodeIndex(ci,ignoreTxt)); + } + var firstIndex = 0; + + if(ignoreTxt){ + if(node.nodeType == 3){ + var tmpNode = node.previousSibling; + while(tmpNode && tmpNode.nodeType == 3){ + firstIndex += tmpNode.nodeValue.replace(fillCharReg,'').length; + tmpNode = tmpNode.previousSibling; + } + firstIndex += (isStart ? me.startOffset : me.endOffset)// - (fillCharReg.test(node.nodeValue) ? 1 : 0 ) + }else{ + node = node.childNodes[ isStart ? me.startOffset : me.endOffset]; + if(node){ + firstIndex = domUtils.getNodeIndex(node,ignoreTxt); + }else{ + node = isStart ? me.startContainer : me.endContainer; + var first = node.firstChild; + while(first){ + if(domUtils.isFillChar(first)){ + first = first.nextSibling; + continue; + } + firstIndex++; + if(first.nodeType == 3){ + while( first && first.nodeType == 3){ + first = first.nextSibling; + } + }else{ + first = first.nextSibling; + } + } + } + } + + }else{ + firstIndex = isStart ? domUtils.isFillChar(node) ? 0 : me.startOffset : me.endOffset + } + if(firstIndex < 0){ + firstIndex = 0; + } + addrs.push(firstIndex); + return addrs; + } + addr.startAddress = getAddress(true); + if(!ignoreEnd){ + addr.endAddress = me.collapsed ? [].concat(addr.startAddress) : getAddress(); + } + return addr; + }, + + /** + * 保存 + * @method createAddress + * @private + * @return { Boolean } 返回开始和结束的位置 + * @example + * ```html + * + *

    + * aaaa + * + * + * bbbb + * + * + *

    + * + * + * + * ``` + */ + moveToAddress : function(addr,ignoreEnd){ + var me = this; + function getNode(address,isStart){ + var tmpNode = me.document.body, + parentNode,offset; + for(var i= 0,ci,l=address.length;i + * + * + * + * + * + * + * + * + * ``` + */ + + /** + * 遍历range内的节点。 + * 每当遍历一个节点时, 都会执行参数项 doFn 指定的函数, 该函数的接受当前遍历的节点 + * 作为其参数。 + * 可以通过参数项 filterFn 来指定一个过滤器, 只有符合该过滤器过滤规则的节点才会触 + * 发doFn函数的执行 + * @method traversal + * @param { Function } doFn 对每个遍历的节点要执行的方法, 该方法接受当前遍历的节点作为其参数 + * @param { Function } filterFn 过滤器, 该函数接受当前遍历的节点作为参数, 如果该节点满足过滤 + * 规则, 请返回true, 该节点会触发doFn, 否则, 请返回false, 则该节点不 + * 会触发doFn。 + * @return { UE.dom.Range } 当前range对象 + * @see UE.dom.Range:traversal(Function) + * @example + * ```html + * + * + * + * + * + * + * + * + * + * + * ``` + */ + traversal:function(doFn,filterFn){ + if (this.collapsed) + return this; + var bookmark = this.createBookmark(), + end = bookmark.end, + current = domUtils.getNextDomNode(bookmark.start, false, filterFn); + while (current && current !== end && (domUtils.getPosition(current, end) & domUtils.POSITION_PRECEDING)) { + var tmpNode = domUtils.getNextDomNode(current,false,filterFn); + doFn(current); + current = tmpNode; + } + return this.moveToBookmark(bookmark); + } + }; +})(); + +// core/Selection.js +/** + * 选集 + * @file + * @module UE.dom + * @class Selection + * @since 1.2.6.1 + */ + +/** + * 选区集合 + * @unfile + * @module UE.dom + * @class Selection + */ +(function () { + + function getBoundaryInformation( range, start ) { + var getIndex = domUtils.getNodeIndex; + range = range.duplicate(); + range.collapse( start ); + var parent = range.parentElement(); + //如果节点里没有子节点,直接退出 + if ( !parent.hasChildNodes() ) { + return {container:parent, offset:0}; + } + var siblings = parent.children, + child, + testRange = range.duplicate(), + startIndex = 0, endIndex = siblings.length - 1, index = -1, + distance; + while ( startIndex <= endIndex ) { + index = Math.floor( (startIndex + endIndex) / 2 ); + child = siblings[index]; + testRange.moveToElementText( child ); + var position = testRange.compareEndPoints( 'StartToStart', range ); + if ( position > 0 ) { + endIndex = index - 1; + } else if ( position < 0 ) { + startIndex = index + 1; + } else { + //trace:1043 + return {container:parent, offset:getIndex( child )}; + } + } + if ( index == -1 ) { + testRange.moveToElementText( parent ); + testRange.setEndPoint( 'StartToStart', range ); + distance = testRange.text.replace( /(\r\n|\r)/g, '\n' ).length; + siblings = parent.childNodes; + if ( !distance ) { + child = siblings[siblings.length - 1]; + return {container:child, offset:child.nodeValue.length}; + } + + var i = siblings.length; + while ( distance > 0 ){ + distance -= siblings[ --i ].nodeValue.length; + } + return {container:siblings[i], offset:-distance}; + } + testRange.collapse( position > 0 ); + testRange.setEndPoint( position > 0 ? 'StartToStart' : 'EndToStart', range ); + distance = testRange.text.replace( /(\r\n|\r)/g, '\n' ).length; + if ( !distance ) { + return dtd.$empty[child.tagName] || dtd.$nonChild[child.tagName] ? + {container:parent, offset:getIndex( child ) + (position > 0 ? 0 : 1)} : + {container:child, offset:position > 0 ? 0 : child.childNodes.length} + } + while ( distance > 0 ) { + try { + var pre = child; + child = child[position > 0 ? 'previousSibling' : 'nextSibling']; + distance -= child.nodeValue.length; + } catch ( e ) { + return {container:parent, offset:getIndex( pre )}; + } + } + return {container:child, offset:position > 0 ? -distance : child.nodeValue.length + distance} + } + + /** + * 将ieRange转换为Range对象 + * @param {Range} ieRange ieRange对象 + * @param {Range} range Range对象 + * @return {Range} range 返回转换后的Range对象 + */ + function transformIERangeToRange( ieRange, range ) { + if ( ieRange.item ) { + range.selectNode( ieRange.item( 0 ) ); + } else { + var bi = getBoundaryInformation( ieRange, true ); + range.setStart( bi.container, bi.offset ); + if ( ieRange.compareEndPoints( 'StartToEnd', ieRange ) != 0 ) { + bi = getBoundaryInformation( ieRange, false ); + range.setEnd( bi.container, bi.offset ); + } + } + return range; + } + + /** + * 获得ieRange + * @param {Selection} sel Selection对象 + * @return {ieRange} 得到ieRange + */ + function _getIERange( sel ) { + var ieRange; + //ie下有可能报错 + try { + ieRange = sel.getNative().createRange(); + } catch ( e ) { + return null; + } + var el = ieRange.item ? ieRange.item( 0 ) : ieRange.parentElement(); + if ( ( el.ownerDocument || el ) === sel.document ) { + return ieRange; + } + return null; + } + + var Selection = dom.Selection = function ( doc ) { + var me = this, iframe; + me.document = doc; + if ( browser.ie9below ) { + iframe = domUtils.getWindow( doc ).frameElement; + domUtils.on( iframe, 'beforedeactivate', function () { + me._bakIERange = me.getIERange(); + } ); + domUtils.on( iframe, 'activate', function () { + try { + if ( !_getIERange( me ) && me._bakIERange ) { + me._bakIERange.select(); + } + } catch ( ex ) { + } + me._bakIERange = null; + } ); + } + iframe = doc = null; + }; + + Selection.prototype = { + + rangeInBody : function(rng,txtRange){ + var node = browser.ie9below || txtRange ? rng.item ? rng.item() : rng.parentElement() : rng.startContainer; + + return node === this.document.body || domUtils.inDoc(node,this.document); + }, + + /** + * 获取原生seleciton对象 + * @method getNative + * @return { Object } 获得selection对象 + * @example + * ```javascript + * editor.selection.getNative(); + * ``` + */ + getNative:function () { + var doc = this.document; + try { + return !doc ? null : browser.ie9below ? doc.selection : domUtils.getWindow( doc ).getSelection(); + } catch ( e ) { + return null; + } + }, + + /** + * 获得ieRange + * @method getIERange + * @return { Object } 返回ie原生的Range + * @example + * ```javascript + * editor.selection.getIERange(); + * ``` + */ + getIERange:function () { + var ieRange = _getIERange( this ); + if ( !ieRange ) { + if ( this._bakIERange ) { + return this._bakIERange; + } + } + return ieRange; + }, + + /** + * 缓存当前选区的range和选区的开始节点 + * @method cache + */ + cache:function () { + this.clear(); + this._cachedRange = this.getRange(); + this._cachedStartElement = this.getStart(); + this._cachedStartElementPath = this.getStartElementPath(); + }, + + /** + * 获取选区开始位置的父节点到body + * @method getStartElementPath + * @return { Array } 返回父节点集合 + * @example + * ```javascript + * editor.selection.getStartElementPath(); + * ``` + */ + getStartElementPath:function () { + if ( this._cachedStartElementPath ) { + return this._cachedStartElementPath; + } + var start = this.getStart(); + if ( start ) { + return domUtils.findParents( start, true, null, true ) + } + return []; + }, + + /** + * 清空缓存 + * @method clear + */ + clear:function () { + this._cachedStartElementPath = this._cachedRange = this._cachedStartElement = null; + }, + + /** + * 编辑器是否得到了选区 + * @method isFocus + */ + isFocus:function () { + try { + if(browser.ie9below){ + + var nativeRange = _getIERange(this); + return !!(nativeRange && this.rangeInBody(nativeRange)); + }else{ + return !!this.getNative().rangeCount; + } + } catch ( e ) { + return false; + } + + }, + + /** + * 获取选区对应的Range + * @method getRange + * @return { Object } 得到Range对象 + * @example + * ```javascript + * editor.selection.getRange(); + * ``` + */ + getRange:function () { + var me = this; + function optimze( range ) { + var child = me.document.body.firstChild, + collapsed = range.collapsed; + while ( child && child.firstChild ) { + range.setStart( child, 0 ); + child = child.firstChild; + } + if ( !range.startContainer ) { + range.setStart( me.document.body, 0 ) + } + if ( collapsed ) { + range.collapse( true ); + } + } + + if ( me._cachedRange != null ) { + return this._cachedRange; + } + var range = new baidu.editor.dom.Range( me.document ); + + if ( browser.ie9below ) { + var nativeRange = me.getIERange(); + if ( nativeRange ) { + //备份的_bakIERange可能已经实效了,dom树发生了变化比如从源码模式切回来,所以try一下,实效就放到body开始位置 + try{ + transformIERangeToRange( nativeRange, range ); + }catch(e){ + optimze( range ); + } + + } else { + optimze( range ); + } + } else { + var sel = me.getNative(); + if ( sel && sel.rangeCount ) { + var firstRange = sel.getRangeAt( 0 ); + var lastRange = sel.getRangeAt( sel.rangeCount - 1 ); + range.setStart( firstRange.startContainer, firstRange.startOffset ).setEnd( lastRange.endContainer, lastRange.endOffset ); + if ( range.collapsed && domUtils.isBody( range.startContainer ) && !range.startOffset ) { + optimze( range ); + } + } else { + //trace:1734 有可能已经不在dom树上了,标识的节点 + if ( this._bakRange && domUtils.inDoc( this._bakRange.startContainer, this.document ) ){ + return this._bakRange; + } + optimze( range ); + } + } + return this._bakRange = range; + }, + + /** + * 获取开始元素,用于状态反射 + * @method getStart + * @return { Element } 获得开始元素 + * @example + * ```javascript + * editor.selection.getStart(); + * ``` + */ + getStart:function () { + if ( this._cachedStartElement ) { + return this._cachedStartElement; + } + var range = browser.ie9below ? this.getIERange() : this.getRange(), + tmpRange, + start, tmp, parent; + if ( browser.ie9below ) { + if ( !range ) { + //todo 给第一个值可能会有问题 + return this.document.body.firstChild; + } + //control元素 + if ( range.item ){ + return range.item( 0 ); + } + tmpRange = range.duplicate(); + //修正ie下x[xx] 闭合后 x|xx + tmpRange.text.length > 0 && tmpRange.moveStart( 'character', 1 ); + tmpRange.collapse( 1 ); + start = tmpRange.parentElement(); + parent = tmp = range.parentElement(); + while ( tmp = tmp.parentNode ) { + if ( tmp == start ) { + start = parent; + break; + } + } + } else { + range.shrinkBoundary(); + start = range.startContainer; + if ( start.nodeType == 1 && start.hasChildNodes() ){ + start = start.childNodes[Math.min( start.childNodes.length - 1, range.startOffset )]; + } + if ( start.nodeType == 3 ){ + return start.parentNode; + } + } + return start; + }, + + /** + * 得到选区中的文本 + * @method getText + * @return { String } 选区中包含的文本 + * @example + * ```javascript + * editor.selection.getText(); + * ``` + */ + getText:function () { + var nativeSel, nativeRange; + if ( this.isFocus() && (nativeSel = this.getNative()) ) { + nativeRange = browser.ie9below ? nativeSel.createRange() : nativeSel.getRangeAt( 0 ); + return browser.ie9below ? nativeRange.text : nativeRange.toString(); + } + return ''; + }, + + /** + * 清除选区 + * @method clearRange + * @example + * ```javascript + * editor.selection.clearRange(); + * ``` + */ + clearRange : function(){ + this.getNative()[browser.ie9below ? 'empty' : 'removeAllRanges'](); + } + }; +})(); + +// core/Editor.js +/** + * 编辑器主类,包含编辑器提供的大部分公用接口 + * @file + * @module UE + * @class Editor + * @since 1.2.6.1 + */ + +/** + * UEditor公用空间,UEditor所有的功能都挂载在该空间下 + * @unfile + * @module UE + */ + +/** + * UEditor的核心类,为用户提供与编辑器交互的接口。 + * @unfile + * @module UE + * @class Editor + */ + +(function () { + var uid = 0, _selectionChangeTimer; + + /** + * 获取编辑器的html内容,赋值到编辑器所在表单的textarea文本域里面 + * @private + * @method setValue + * @param { UE.Editor } editor 编辑器事例 + */ + function setValue(form, editor) { + var textarea; + if (editor.textarea) { + if (utils.isString(editor.textarea)) { + for (var i = 0, ti, tis = domUtils.getElementsByTagName(form, 'textarea'); ti = tis[i++];) { + if (ti.id == 'ueditor_textarea_' + editor.options.textarea) { + textarea = ti; + break; + } + } + } else { + textarea = editor.textarea; + } + } + if (!textarea) { + form.appendChild(textarea = domUtils.createElement(document, 'textarea', { + 'name': editor.options.textarea, + 'id': 'ueditor_textarea_' + editor.options.textarea, + 'style': "display:none" + })); + //不要产生多个textarea + editor.textarea = textarea; + } + !textarea.getAttribute('name') && textarea.setAttribute('name', editor.options.textarea ); + textarea.value = editor.hasContents() ? + (editor.options.allHtmlEnabled ? editor.getAllHtml() : editor.getContent(null, null, true)) : + '' + } + function loadPlugins(me){ + //初始化插件 + for (var pi in UE.plugins) { + UE.plugins[pi].call(me); + } + + } + function checkCurLang(I18N){ + for(var lang in I18N){ + return lang + } + } + + function langReadied(me){ + me.langIsReady = true; + + me.fireEvent("langReady"); + } + + /** + * 编辑器准备就绪后会触发该事件 + * @module UE + * @class Editor + * @event ready + * @remind render方法执行完成之后,会触发该事件 + * @remind + * @example + * ```javascript + * editor.addListener( 'ready', function( editor ) { + * editor.execCommand( 'focus' ); //编辑器家在完成后,让编辑器拿到焦点 + * } ); + * ``` + */ + /** + * 执行destroy方法,会触发该事件 + * @module UE + * @class Editor + * @event destroy + * @see UE.Editor:destroy() + */ + /** + * 执行reset方法,会触发该事件 + * @module UE + * @class Editor + * @event reset + * @see UE.Editor:reset() + */ + /** + * 执行focus方法,会触发该事件 + * @module UE + * @class Editor + * @event focus + * @see UE.Editor:focus(Boolean) + */ + /** + * 语言加载完成会触发该事件 + * @module UE + * @class Editor + * @event langReady + */ + /** + * 运行命令之后会触发该命令 + * @module UE + * @class Editor + * @event beforeExecCommand + */ + /** + * 运行命令之后会触发该命令 + * @module UE + * @class Editor + * @event afterExecCommand + */ + /** + * 运行命令之前会触发该命令 + * @module UE + * @class Editor + * @event firstBeforeExecCommand + */ + /** + * 在getContent方法执行之前会触发该事件 + * @module UE + * @class Editor + * @event beforeGetContent + * @see UE.Editor:getContent() + */ + /** + * 在getContent方法执行之后会触发该事件 + * @module UE + * @class Editor + * @event afterGetContent + * @see UE.Editor:getContent() + */ + /** + * 在getAllHtml方法执行时会触发该事件 + * @module UE + * @class Editor + * @event getAllHtml + * @see UE.Editor:getAllHtml() + */ + /** + * 在setContent方法执行之前会触发该事件 + * @module UE + * @class Editor + * @event beforeSetContent + * @see UE.Editor:setContent(String) + */ + /** + * 在setContent方法执行之后会触发该事件 + * @module UE + * @class Editor + * @event afterSetContent + * @see UE.Editor:setContent(String) + */ + /** + * 每当编辑器内部选区发生改变时,将触发该事件 + * @event selectionchange + * @warning 该事件的触发非常频繁,不建议在该事件的处理过程中做重量级的处理 + * @example + * ```javascript + * editor.addListener( 'selectionchange', function( editor ) { + * console.log('选区发生改变'); + * } + */ + /** + * 在所有selectionchange的监听函数执行之前,会触发该事件 + * @module UE + * @class Editor + * @event beforeSelectionChange + * @see UE.Editor:selectionchange + */ + /** + * 在所有selectionchange的监听函数执行完之后,会触发该事件 + * @module UE + * @class Editor + * @event afterSelectionChange + * @see UE.Editor:selectionchange + */ + /** + * 编辑器内容发生改变时会触发该事件 + * @module UE + * @class Editor + * @event contentChange + */ + + + /** + * 以默认参数构建一个编辑器实例 + * @constructor + * @remind 通过 改构造方法实例化的编辑器,不带ui层.需要render到一个容器,编辑器实例才能正常渲染到页面 + * @example + * ```javascript + * var editor = new UE.Editor(); + * editor.execCommand('blod'); + * ``` + * @see UE.Config + */ + + /** + * 以给定的参数集合创建一个编辑器实例,对于未指定的参数,将应用默认参数。 + * @constructor + * @remind 通过 改构造方法实例化的编辑器,不带ui层.需要render到一个容器,编辑器实例才能正常渲染到页面 + * @param { Object } setting 创建编辑器的参数 + * @example + * ```javascript + * var editor = new UE.Editor(); + * editor.execCommand('blod'); + * ``` + * @see UE.Config + */ + var Editor = UE.Editor = function (options) { + var me = this; + me.uid = uid++; + EventBase.call(me); + me.commands = {}; + me.options = utils.extend(utils.clone(options || {}), UEDITOR_CONFIG, true); + me.shortcutkeys = {}; + me.inputRules = []; + me.outputRules = []; + //设置默认的常用属性 + me.setOpt(Editor.defaultOptions(me)); + + /* 尝试异步加载后台配置 */ + me.loadServerConfig(); + + if(!utils.isEmptyObject(UE.I18N)){ + //修改默认的语言类型 + me.options.lang = checkCurLang(UE.I18N); + UE.plugin.load(me); + langReadied(me); + + }else{ + utils.loadFile(document, { + src: me.options.langPath + me.options.lang + "/" + me.options.lang + ".js", + tag: "script", + type: "text/javascript", + defer: "defer" + }, function () { + UE.plugin.load(me); + langReadied(me); + }); + } + + UE.instants['ueditorInstant' + me.uid] = me; + }; + Editor.prototype = { + registerCommand : function(name,obj){ + this.commands[name] = obj; + }, + /** + * 编辑器对外提供的监听ready事件的接口, 通过调用该方法,达到的效果与监听ready事件是一致的 + * @method ready + * @param { Function } fn 编辑器ready之后所执行的回调, 如果在注册事件之前编辑器已经ready,将会 + * 立即触发该回调。 + * @remind 需要等待编辑器加载完成后才能执行的代码,可以使用该方法传入 + * @example + * ```javascript + * editor.ready( function( editor ) { + * editor.setContent('初始化完毕'); + * } ); + * ``` + * @see UE.Editor.event:ready + */ + ready: function (fn) { + var me = this; + if (fn) { + me.isReady ? fn.apply(me) : me.addListener('ready', fn); + } + }, + + /** + * 该方法是提供给插件里面使用,设置配置项默认值 + * @method setOpt + * @warning 三处设置配置项的优先级: 实例化时传入参数 > setOpt()设置 > config文件里设置 + * @warning 该方法仅供编辑器插件内部和编辑器初始化时调用,其他地方不能调用。 + * @param { String } key 编辑器的可接受的选项名称 + * @param { * } val 该选项可接受的值 + * @example + * ```javascript + * editor.setOpt( 'initContent', '欢迎使用编辑器' ); + * ``` + */ + + /** + * 该方法是提供给插件里面使用,以{key:value}集合的方式设置插件内用到的配置项默认值 + * @method setOpt + * @warning 三处设置配置项的优先级: 实例化时传入参数 > setOpt()设置 > config文件里设置 + * @warning 该方法仅供编辑器插件内部和编辑器初始化时调用,其他地方不能调用。 + * @param { Object } options 将要设置的选项的键值对对象 + * @example + * ```javascript + * editor.setOpt( { + * 'initContent': '欢迎使用编辑器' + * } ); + * ``` + */ + setOpt: function (key, val) { + var obj = {}; + if (utils.isString(key)) { + obj[key] = val + } else { + obj = key; + } + utils.extend(this.options, obj, true); + }, + getOpt:function(key){ + return this.options[key] + }, + /** + * 销毁编辑器实例,使用textarea代替 + * @method destroy + * @example + * ```javascript + * editor.destroy(); + * ``` + */ + destroy: function () { + + var me = this; + me.fireEvent('destroy'); + var container = me.container.parentNode; + var textarea = me.textarea; + if (!textarea) { + textarea = document.createElement('textarea'); + container.parentNode.insertBefore(textarea, container); + } else { + textarea.style.display = '' + } + + textarea.style.width = me.iframe.offsetWidth + 'px'; + textarea.style.height = me.iframe.offsetHeight + 'px'; + textarea.value = me.getContent(); + textarea.id = me.key; + container.innerHTML = ''; + domUtils.remove(container); + var key = me.key; + //trace:2004 + for (var p in me) { + if (me.hasOwnProperty(p)) { + delete this[p]; + } + } + UE.delEditor(key); + }, + + /** + * 渲染编辑器的DOM到指定容器 + * @method render + * @param { String } containerId 指定一个容器ID + * @remind 执行该方法,会触发ready事件 + * @warning 必须且只能调用一次 + */ + + /** + * 渲染编辑器的DOM到指定容器 + * @method render + * @param { Element } containerDom 直接指定容器对象 + * @remind 执行该方法,会触发ready事件 + * @warning 必须且只能调用一次 + */ + render: function (container) { + var me = this, + options = me.options, + getStyleValue=function(attr){ + return parseInt(domUtils.getComputedStyle(container,attr)); + }; + if (utils.isString(container)) { + container = document.getElementById(container); + } + if (container) { + if(options.initialFrameWidth){ + options.minFrameWidth = options.initialFrameWidth + }else{ + options.minFrameWidth = options.initialFrameWidth = container.offsetWidth; + } + if(options.initialFrameHeight){ + options.minFrameHeight = options.initialFrameHeight + }else{ + options.initialFrameHeight = options.minFrameHeight = container.offsetHeight; + } + + container.style.width = /%$/.test(options.initialFrameWidth) ? '100%' : options.initialFrameWidth- + getStyleValue("padding-left")- getStyleValue("padding-right") +'px'; + container.style.height = /%$/.test(options.initialFrameHeight) ? '100%' : options.initialFrameHeight - + getStyleValue("padding-top")- getStyleValue("padding-bottom") +'px'; + + container.style.zIndex = options.zIndex; + + var html = ( ie && browser.version < 9 ? '' : '') + + '' + + '' + + ( options.iframeCssUrl ? '' : '' ) + + (options.initialStyle ? '' : '') + + '' + + ''; + container.appendChild(domUtils.createElement(document, 'iframe', { + id: 'ueditor_' + me.uid, + width: "100%", + height: "100%", + frameborder: "0", + //先注释掉了,加的原因忘记了,但开启会直接导致全屏模式下内容多时不会出现滚动条 +// scrolling :'no', + src: 'javascript:void(function(){document.open();' + (options.customDomain && document.domain != location.hostname ? 'document.domain="' + document.domain + '";' : '') + + 'document.write("' + html + '");document.close();}())' + })); + container.style.overflow = 'hidden'; + //解决如果是给定的百分比,会导致高度算不对的问题 + setTimeout(function(){ + if( /%$/.test(options.initialFrameWidth)){ + options.minFrameWidth = options.initialFrameWidth = container.offsetWidth; + //如果这里给定宽度,会导致ie在拖动窗口大小时,编辑区域不随着变化 +// container.style.width = options.initialFrameWidth + 'px'; + } + if(/%$/.test(options.initialFrameHeight)){ + options.minFrameHeight = options.initialFrameHeight = container.offsetHeight; + container.style.height = options.initialFrameHeight + 'px'; + } + }) + } + }, + + /** + * 编辑器初始化 + * @method _setup + * @private + * @param { Element } doc 编辑器Iframe中的文档对象 + */ + _setup: function (doc) { + + var me = this, + options = me.options; + if (ie) { + doc.body.disabled = true; + doc.body.contentEditable = true; + doc.body.disabled = false; + } else { + doc.body.contentEditable = true; + } + doc.body.spellcheck = false; + me.document = doc; + me.window = doc.defaultView || doc.parentWindow; + me.iframe = me.window.frameElement; + me.body = doc.body; + me.selection = new dom.Selection(doc); + //gecko初始化就能得到range,无法判断isFocus了 + var geckoSel; + if (browser.gecko && (geckoSel = this.selection.getNative())) { + geckoSel.removeAllRanges(); + } + this._initEvents(); + //为form提交提供一个隐藏的textarea + for (var form = this.iframe.parentNode; !domUtils.isBody(form); form = form.parentNode) { + if (form.tagName == 'FORM') { + me.form = form; + if(me.options.autoSyncData){ + domUtils.on(me.window,'blur',function(){ + setValue(form,me); + }); + }else{ + domUtils.on(form, 'submit', function () { + setValue(this, me); + }); + } + break; + } + } + if (options.initialContent) { + if (options.autoClearinitialContent) { + var oldExecCommand = me.execCommand; + me.execCommand = function () { + me.fireEvent('firstBeforeExecCommand'); + return oldExecCommand.apply(me, arguments); + }; + this._setDefaultContent(options.initialContent); + } else + this.setContent(options.initialContent, false, true); + } + + //编辑器不能为空内容 + + if (domUtils.isEmptyNode(me.body)) { + me.body.innerHTML = '

    ' + (browser.ie ? '' : '
    ') + '

    '; + } + //如果要求focus, 就把光标定位到内容开始 + if (options.focus) { + setTimeout(function () { + me.focus(me.options.focusInEnd); + //如果自动清除开着,就不需要做selectionchange; + !me.options.autoClearinitialContent && me._selectionChange(); + }, 0); + } + if (!me.container) { + me.container = this.iframe.parentNode; + } + if (options.fullscreen && me.ui) { + me.ui.setFullScreen(true); + } + + try { + me.document.execCommand('2D-position', false, false); + } catch (e) { + } + try { + me.document.execCommand('enableInlineTableEditing', false, false); + } catch (e) { + } + try { + me.document.execCommand('enableObjectResizing', false, false); + } catch (e) { + } + + //挂接快捷键 + me._bindshortcutKeys(); + me.isReady = 1; + me.fireEvent('ready'); + options.onready && options.onready.call(me); + if (!browser.ie9below) { + domUtils.on(me.window, ['blur', 'focus'], function (e) { + //chrome下会出现alt+tab切换时,导致选区位置不对 + if (e.type == 'blur') { + me._bakRange = me.selection.getRange(); + try { + me._bakNativeRange = me.selection.getNative().getRangeAt(0); + me.selection.getNative().removeAllRanges(); + } catch (e) { + me._bakNativeRange = null; + } + + } else { + try { + me._bakRange && me._bakRange.select(); + } catch (e) { + } + } + }); + } + //trace:1518 ff3.6body不够寛,会导致点击空白处无法获得焦点 + if (browser.gecko && browser.version <= 10902) { + //修复ff3.6初始化进来,不能点击获得焦点 + me.body.contentEditable = false; + setTimeout(function () { + me.body.contentEditable = true; + }, 100); + setInterval(function () { + me.body.style.height = me.iframe.offsetHeight - 20 + 'px' + }, 100) + } + + !options.isShow && me.setHide(); + options.readonly && me.setDisabled(); + }, + + /** + * 同步数据到编辑器所在的form + * 从编辑器的容器节点向上查找form元素,若找到,就同步编辑内容到找到的form里,为提交数据做准备,主要用于是手动提交的情况 + * 后台取得数据的键值,使用你容器上的name属性,如果没有就使用参数里的textarea项 + * @method sync + * @example + * ```javascript + * editor.sync(); + * form.sumbit(); //form变量已经指向了form元素 + * ``` + */ + + /** + * 根据传入的formId,在页面上查找要同步数据的表单,若找到,就同步编辑内容到找到的form里,为提交数据做准备 + * 后台取得数据的键值,该键值默认使用给定的编辑器容器的name属性,如果没有name属性则使用参数项里给定的“textarea”项 + * @method sync + * @param { String } formID 指定一个要同步数据的form的id,编辑器的数据会同步到你指定form下 + */ + sync: function (formId) { + var me = this, + form = formId ? document.getElementById(formId) : + domUtils.findParent(me.iframe.parentNode, function (node) { + return node.tagName == 'FORM' + }, true); + form && setValue(form, me); + }, + + /** + * 设置编辑器高度 + * @method setHeight + * @remind 当配置项autoHeightEnabled为真时,该方法无效 + * @param { Number } number 设置的高度值,纯数值,不带单位 + * @example + * ```javascript + * editor.setHeight(number); + * ``` + */ + setHeight: function (height,notSetHeight) { + if (height !== parseInt(this.iframe.parentNode.style.height)) { + this.iframe.parentNode.style.height = height + 'px'; + } + !notSetHeight && (this.options.minFrameHeight = this.options.initialFrameHeight = height); + this.body.style.height = height + 'px'; + !notSetHeight && this.trigger('setHeight') + }, + + /** + * 为编辑器的编辑命令提供快捷键 + * 这个接口是为插件扩展提供的接口,主要是为新添加的插件,如果需要添加快捷键,所提供的接口 + * @method addshortcutkey + * @param { Object } keyset 命令名和快捷键键值对对象,多个按钮的快捷键用“+”分隔 + * @example + * ```javascript + * editor.addshortcutkey({ + * "Bold" : "ctrl+66",//^B + * "Italic" : "ctrl+73", //^I + * }); + * ``` + */ + /** + * 这个接口是为插件扩展提供的接口,主要是为新添加的插件,如果需要添加快捷键,所提供的接口 + * @method addshortcutkey + * @param { String } cmd 触发快捷键时,响应的命令 + * @param { String } keys 快捷键的字符串,多个按钮用“+”分隔 + * @example + * ```javascript + * editor.addshortcutkey("Underline", "ctrl+85"); //^U + * ``` + */ + addshortcutkey: function (cmd, keys) { + var obj = {}; + if (keys) { + obj[cmd] = keys + } else { + obj = cmd; + } + utils.extend(this.shortcutkeys, obj) + }, + + /** + * 对编辑器设置keydown事件监听,绑定快捷键和命令,当快捷键组合触发成功,会响应对应的命令 + * @method _bindshortcutKeys + * @private + */ + _bindshortcutKeys: function () { + var me = this, shortcutkeys = this.shortcutkeys; + me.addListener('keydown', function (type, e) { + var keyCode = e.keyCode || e.which; + for (var i in shortcutkeys) { + var tmp = shortcutkeys[i].split(','); + for (var t = 0, ti; ti = tmp[t++];) { + ti = ti.split(':'); + var key = ti[0], param = ti[1]; + if (/^(ctrl)(\+shift)?\+(\d+)$/.test(key.toLowerCase()) || /^(\d+)$/.test(key)) { + if (( (RegExp.$1 == 'ctrl' ? (e.ctrlKey || e.metaKey) : 0) + && (RegExp.$2 != "" ? e[RegExp.$2.slice(1) + "Key"] : 1) + && keyCode == RegExp.$3 + ) || + keyCode == RegExp.$1 + ) { + if (me.queryCommandState(i,param) != -1) + me.execCommand(i, param); + domUtils.preventDefault(e); + } + } + } + + } + }); + }, + + /** + * 获取编辑器的内容 + * @method getContent + * @warning 该方法获取到的是经过编辑器内置的过滤规则进行过滤后得到的内容 + * @return { String } 编辑器的内容字符串, 如果编辑器的内容为空,或者是空的标签内容(如:”<p><br/></p>“), 则返回空字符串 + * @example + * ```javascript + * //编辑器html内容:

    123456

    + * var content = editor.getContent(); //返回值:

    123456

    + * ``` + */ + + /** + * 获取编辑器的内容。 可以通过参数定义编辑器内置的判空规则 + * @method getContent + * @param { Function } fn 自定的判空规则, 要求该方法返回一个boolean类型的值, + * 代表当前编辑器的内容是否空, + * 如果返回true, 则该方法将直接返回空字符串;如果返回false,则编辑器将返回 + * 经过内置过滤规则处理后的内容。 + * @remind 该方法在处理包含有初始化内容的时候能起到很好的作用。 + * @warning 该方法获取到的是经过编辑器内置的过滤规则进行过滤后得到的内容 + * @return { String } 编辑器的内容字符串 + * @example + * ```javascript + * // editor 是一个编辑器的实例 + * var content = editor.getContent( function ( editor ) { + * return editor.body.innerHTML === '欢迎使用UEditor'; //返回空字符串 + * } ); + * ``` + */ + getContent: function (cmd, fn,notSetCursor,ignoreBlank,formatter) { + var me = this; + if (cmd && utils.isFunction(cmd)) { + fn = cmd; + cmd = ''; + } + if (fn ? !fn() : !this.hasContents()) { + return ''; + } + me.fireEvent('beforegetcontent'); + var root = UE.htmlparser(me.body.innerHTML,ignoreBlank); + me.filterOutputRule(root); + me.fireEvent('aftergetcontent', cmd,root); + return root.toHtml(formatter); + }, + + /** + * 取得完整的html代码,可以直接显示成完整的html文档 + * @method getAllHtml + * @return { String } 编辑器的内容html文档字符串 + * @eaxmple + * ```javascript + * editor.getAllHtml(); //返回格式大致是: ...... + * ``` + */ + getAllHtml: function () { + var me = this, + headHtml = [], + html = ''; + me.fireEvent('getAllHtml', headHtml); + if (browser.ie && browser.version > 8) { + var headHtmlForIE9 = ''; + utils.each(me.document.styleSheets, function (si) { + headHtmlForIE9 += ( si.href ? '' : ''); + }); + utils.each(me.document.getElementsByTagName('script'), function (si) { + headHtmlForIE9 += si.outerHTML; + }); + + } + return '' + (me.options.charset ? '' : '') + + (headHtmlForIE9 || me.document.getElementsByTagName('head')[0].innerHTML) + headHtml.join('\n') + '' + + '' + me.getContent(null, null, true) + ''; + }, + + /** + * 得到编辑器的纯文本内容,但会保留段落格式 + * @method getPlainTxt + * @return { String } 编辑器带段落格式的纯文本内容字符串 + * @example + * ```javascript + * //编辑器html内容:

    1

    2

    + * console.log(editor.getPlainTxt()); //输出:"1\n2\n + * ``` + */ + getPlainTxt: function () { + var reg = new RegExp(domUtils.fillChar, 'g'), + html = this.body.innerHTML.replace(/[\n\r]/g, '');//ie要先去了\n在处理 + html = html.replace(/<(p|div)[^>]*>(| )<\/\1>/gi, '\n') + .replace(//gi, '\n') + .replace(/<[^>/]+>/g, '') + .replace(/(\n)?<\/([^>]+)>/g, function (a, b, c) { + return dtd.$block[c] ? '\n' : b ? b : ''; + }); + //取出来的空格会有c2a0会变成乱码,处理这种情况\u00a0 + return html.replace(reg, '').replace(/\u00a0/g, ' ').replace(/ /g, ' '); + }, + + /** + * 获取编辑器中的纯文本内容,没有段落格式 + * @method getContentTxt + * @return { String } 编辑器不带段落格式的纯文本内容字符串 + * @example + * ```javascript + * //编辑器html内容:

    1

    2

    + * console.log(editor.getPlainTxt()); //输出:"12 + * ``` + */ + getContentTxt: function () { + var reg = new RegExp(domUtils.fillChar, 'g'); + //取出来的空格会有c2a0会变成乱码,处理这种情况\u00a0 + return this.body[browser.ie ? 'innerText' : 'textContent'].replace(reg, '').replace(/\u00a0/g, ' '); + }, + + /** + * 设置编辑器的内容,可修改编辑器当前的html内容 + * @method setContent + * @warning 通过该方法插入的内容,是经过编辑器内置的过滤规则进行过滤后得到的内容 + * @warning 该方法会触发selectionchange事件 + * @param { String } html 要插入的html内容 + * @example + * ```javascript + * editor.getContent('

    test

    '); + * ``` + */ + + /** + * 设置编辑器的内容,可修改编辑器当前的html内容 + * @method setContent + * @warning 通过该方法插入的内容,是经过编辑器内置的过滤规则进行过滤后得到的内容 + * @warning 该方法会触发selectionchange事件 + * @param { String } html 要插入的html内容 + * @param { Boolean } isAppendTo 若传入true,不清空原来的内容,在最后插入内容,否则,清空内容再插入 + * @example + * ```javascript + * //假设设置前的编辑器内容是

    old text

    + * editor.setContent('

    new text

    ', true); //插入的结果是

    old text

    new text

    + * ``` + */ + setContent: function (html, isAppendTo, notFireSelectionchange) { + var me = this; + + me.fireEvent('beforesetcontent', html); + var root = UE.htmlparser(html); + me.filterInputRule(root); + html = root.toHtml(); + + me.body.innerHTML = (isAppendTo ? me.body.innerHTML : '') + html; + + + function isCdataDiv(node){ + return node.tagName == 'DIV' && node.getAttribute('cdata_tag'); + } + //给文本或者inline节点套p标签 + if (me.options.enterTag == 'p') { + + var child = this.body.firstChild, tmpNode; + if (!child || child.nodeType == 1 && + (dtd.$cdata[child.tagName] || isCdataDiv(child) || + domUtils.isCustomeNode(child) + ) + && child === this.body.lastChild) { + this.body.innerHTML = '

    ' + (browser.ie ? ' ' : '
    ') + '

    ' + this.body.innerHTML; + + } else { + var p = me.document.createElement('p'); + while (child) { + while (child && (child.nodeType == 3 || child.nodeType == 1 && dtd.p[child.tagName] && !dtd.$cdata[child.tagName])) { + tmpNode = child.nextSibling; + p.appendChild(child); + child = tmpNode; + } + if (p.firstChild) { + if (!child) { + me.body.appendChild(p); + break; + } else { + child.parentNode.insertBefore(p, child); + p = me.document.createElement('p'); + } + } + child = child.nextSibling; + } + } + } + me.fireEvent('aftersetcontent'); + me.fireEvent('contentchange'); + + !notFireSelectionchange && me._selectionChange(); + //清除保存的选区 + me._bakRange = me._bakIERange = me._bakNativeRange = null; + //trace:1742 setContent后gecko能得到焦点问题 + var geckoSel; + if (browser.gecko && (geckoSel = this.selection.getNative())) { + geckoSel.removeAllRanges(); + } + if(me.options.autoSyncData){ + me.form && setValue(me.form,me); + } + }, + + /** + * 让编辑器获得焦点,默认focus到编辑器头部 + * @method focus + * @example + * ```javascript + * editor.focus() + * ``` + */ + + /** + * 让编辑器获得焦点,toEnd确定focus位置 + * @method focus + * @param { Boolean } toEnd 默认focus到编辑器头部,toEnd为true时focus到内容尾部 + * @example + * ```javascript + * editor.focus(true) + * ``` + */ + focus: function (toEnd) { + try { + var me = this, + rng = me.selection.getRange(); + if (toEnd) { + var node = me.body.lastChild; + if(node && node.nodeType == 1 && !dtd.$empty[node.tagName]){ + if(domUtils.isEmptyBlock(node)){ + rng.setStartAtFirst(node) + }else{ + rng.setStartAtLast(node) + } + rng.collapse(true); + } + rng.setCursor(true); + } else { + if(!rng.collapsed && domUtils.isBody(rng.startContainer) && rng.startOffset == 0){ + + var node = me.body.firstChild; + if(node && node.nodeType == 1 && !dtd.$empty[node.tagName]){ + rng.setStartAtFirst(node).collapse(true); + } + } + + rng.select(true); + + } + this.fireEvent('focus selectionchange'); + } catch (e) { + } + + }, + isFocus:function(){ + return this.selection.isFocus(); + }, + blur:function(){ + var sel = this.selection.getNative(); + if(sel.empty && browser.ie){ + var nativeRng = document.body.createTextRange(); + nativeRng.moveToElementText(document.body); + nativeRng.collapse(true); + nativeRng.select(); + sel.empty() + }else{ + sel.removeAllRanges() + } + + //this.fireEvent('blur selectionchange'); + }, + /** + * 初始化UE事件及部分事件代理 + * @method _initEvents + * @private + */ + _initEvents: function () { + var me = this, + doc = me.document, + win = me.window; + me._proxyDomEvent = utils.bind(me._proxyDomEvent, me); + domUtils.on(doc, ['click', 'contextmenu', 'mousedown', 'keydown', 'keyup', 'keypress', 'mouseup', 'mouseover', 'mouseout', 'selectstart'], me._proxyDomEvent); + domUtils.on(win, ['focus', 'blur'], me._proxyDomEvent); + domUtils.on(me.body,'drop',function(e){ + //阻止ff下默认的弹出新页面打开图片 + if(browser.gecko && e.stopPropagation) { e.stopPropagation(); } + me.fireEvent('contentchange') + }); + domUtils.on(doc, ['mouseup', 'keydown'], function (evt) { + //特殊键不触发selectionchange + if (evt.type == 'keydown' && (evt.ctrlKey || evt.metaKey || evt.shiftKey || evt.altKey)) { + return; + } + if (evt.button == 2)return; + me._selectionChange(250, evt); + }); + }, + /** + * 触发事件代理 + * @method _proxyDomEvent + * @private + * @return { * } fireEvent的返回值 + * @see UE.EventBase:fireEvent(String) + */ + _proxyDomEvent: function (evt) { + if(this.fireEvent('before' + evt.type.replace(/^on/, '').toLowerCase()) === false){ + return false; + } + if(this.fireEvent(evt.type.replace(/^on/, ''), evt) === false){ + return false; + } + return this.fireEvent('after' + evt.type.replace(/^on/, '').toLowerCase()) + }, + /** + * 变化选区 + * @method _selectionChange + * @private + */ + _selectionChange: function (delay, evt) { + var me = this; + //有光标才做selectionchange 为了解决未focus时点击source不能触发更改工具栏状态的问题(source命令notNeedUndo=1) +// if ( !me.selection.isFocus() ){ +// return; +// } + + + var hackForMouseUp = false; + var mouseX, mouseY; + if (browser.ie && browser.version < 9 && evt && evt.type == 'mouseup') { + var range = this.selection.getRange(); + if (!range.collapsed) { + hackForMouseUp = true; + mouseX = evt.clientX; + mouseY = evt.clientY; + } + } + clearTimeout(_selectionChangeTimer); + _selectionChangeTimer = setTimeout(function () { + if (!me.selection || !me.selection.getNative()) { + return; + } + //修复一个IE下的bug: 鼠标点击一段已选择的文本中间时,可能在mouseup后的一段时间内取到的range是在selection的type为None下的错误值. + //IE下如果用户是拖拽一段已选择文本,则不会触发mouseup事件,所以这里的特殊处理不会对其有影响 + var ieRange; + if (hackForMouseUp && me.selection.getNative().type == 'None') { + ieRange = me.document.body.createTextRange(); + try { + ieRange.moveToPoint(mouseX, mouseY); + } catch (ex) { + ieRange = null; + } + } + var bakGetIERange; + if (ieRange) { + bakGetIERange = me.selection.getIERange; + me.selection.getIERange = function () { + return ieRange; + }; + } + me.selection.cache(); + if (bakGetIERange) { + me.selection.getIERange = bakGetIERange; + } + if (me.selection._cachedRange && me.selection._cachedStartElement) { + me.fireEvent('beforeselectionchange'); + // 第二个参数causeByUi为true代表由用户交互造成的selectionchange. + me.fireEvent('selectionchange', !!evt); + me.fireEvent('afterselectionchange'); + me.selection.clear(); + } + }, delay || 50); + }, + + /** + * 执行编辑命令 + * @method _callCmdFn + * @private + * @param { String } fnName 函数名称 + * @param { * } args 传给命令函数的参数 + * @return { * } 返回命令函数运行的返回值 + */ + _callCmdFn: function (fnName, args) { + var cmdName = args[0].toLowerCase(), + cmd, cmdFn; + cmd = this.commands[cmdName] || UE.commands[cmdName]; + cmdFn = cmd && cmd[fnName]; + //没有querycommandstate或者没有command的都默认返回0 + if ((!cmd || !cmdFn) && fnName == 'queryCommandState') { + return 0; + } else if (cmdFn) { + return cmdFn.apply(this, args); + } + }, + + /** + * 执行编辑命令cmdName,完成富文本编辑效果 + * @method execCommand + * @param { String } cmdName 需要执行的命令 + * @remind 具体命令的使用请参考命令列表 + * @return { * } 返回命令函数运行的返回值 + * @example + * ```javascript + * editor.execCommand(cmdName); + * ``` + */ + execCommand: function (cmdName) { + cmdName = cmdName.toLowerCase(); + var me = this, + result, + cmd = me.commands[cmdName] || UE.commands[cmdName]; + if (!cmd || !cmd.execCommand) { + return null; + } + if (!cmd.notNeedUndo && !me.__hasEnterExecCommand) { + me.__hasEnterExecCommand = true; + if (me.queryCommandState.apply(me,arguments) != -1) { + me.fireEvent('saveScene'); + me.fireEvent.apply(me, ['beforeexeccommand', cmdName].concat(arguments)); + result = this._callCmdFn('execCommand', arguments); + //保存场景时,做了内容对比,再看是否进行contentchange触发,这里多触发了一次,去掉 +// (!cmd.ignoreContentChange && !me._ignoreContentChange) && me.fireEvent('contentchange'); + me.fireEvent.apply(me, ['afterexeccommand', cmdName].concat(arguments)); + me.fireEvent('saveScene'); + } + me.__hasEnterExecCommand = false; + } else { + result = this._callCmdFn('execCommand', arguments); + (!me.__hasEnterExecCommand && !cmd.ignoreContentChange && !me._ignoreContentChange) && me.fireEvent('contentchange') + } + (!me.__hasEnterExecCommand && !cmd.ignoreContentChange && !me._ignoreContentChange) && me._selectionChange(); + return result; + }, + + /** + * 根据传入的command命令,查选编辑器当前的选区,返回命令的状态 + * @method queryCommandState + * @param { String } cmdName 需要查询的命令名称 + * @remind 具体命令的使用请参考命令列表 + * @return { Number } number 返回放前命令的状态,返回值三种情况:(-1|0|1) + * @example + * ```javascript + * editor.queryCommandState(cmdName) => (-1|0|1) + * ``` + * @see COMMAND.LIST + */ + queryCommandState: function (cmdName) { + return this._callCmdFn('queryCommandState', arguments); + }, + + /** + * 根据传入的command命令,查选编辑器当前的选区,根据命令返回相关的值 + * @method queryCommandValue + * @param { String } cmdName 需要查询的命令名称 + * @remind 具体命令的使用请参考命令列表 + * @remind 只有部分插件有此方法 + * @return { * } 返回每个命令特定的当前状态值 + * @grammar editor.queryCommandValue(cmdName) => {*} + * @see COMMAND.LIST + */ + queryCommandValue: function (cmdName) { + return this._callCmdFn('queryCommandValue', arguments); + }, + + /** + * 检查编辑区域中是否有内容 + * @method hasContents + * @remind 默认有文本内容,或者有以下节点都不认为是空 + * table,ul,ol,dl,iframe,area,base,col,hr,img,embed,input,link,meta,param + * @return { Boolean } 检查有内容返回true,否则返回false + * @example + * ```javascript + * editor.hasContents() + * ``` + */ + + /** + * 检查编辑区域中是否有内容,若包含参数tags中的节点类型,直接返回true + * @method hasContents + * @param { Array } tags 传入数组判断时用到的节点类型 + * @return { Boolean } 若文档中包含tags数组里对应的tag,返回true,否则返回false + * @example + * ```javascript + * editor.hasContents(['span']); + * ``` + */ + hasContents: function (tags) { + if (tags) { + for (var i = 0, ci; ci = tags[i++];) { + if (this.document.getElementsByTagName(ci).length > 0) { + return true; + } + } + } + if (!domUtils.isEmptyBlock(this.body)) { + return true + } + //随时添加,定义的特殊标签如果存在,不能认为是空 + tags = ['div']; + for (i = 0; ci = tags[i++];) { + var nodes = domUtils.getElementsByTagName(this.document, ci); + for (var n = 0, cn; cn = nodes[n++];) { + if (domUtils.isCustomeNode(cn)) { + return true; + } + } + } + return false; + }, + + /** + * 重置编辑器,可用来做多个tab使用同一个编辑器实例 + * @method reset + * @remind 此方法会清空编辑器内容,清空回退列表,会触发reset事件 + * @example + * ```javascript + * editor.reset() + * ``` + */ + reset: function () { + this.fireEvent('reset'); + }, + + /** + * 设置当前编辑区域可以编辑 + * @method setEnabled + * @example + * ```javascript + * editor.setEnabled() + * ``` + */ + setEnabled: function () { + var me = this, range; + if (me.body.contentEditable == 'false') { + me.body.contentEditable = true; + range = me.selection.getRange(); + //有可能内容丢失了 + try { + range.moveToBookmark(me.lastBk); + delete me.lastBk + } catch (e) { + range.setStartAtFirst(me.body).collapse(true) + } + range.select(true); + if (me.bkqueryCommandState) { + me.queryCommandState = me.bkqueryCommandState; + delete me.bkqueryCommandState; + } + if (me.bkqueryCommandValue) { + me.queryCommandValue = me.bkqueryCommandValue; + delete me.bkqueryCommandValue; + } + me.fireEvent('selectionchange'); + } + }, + enable: function () { + return this.setEnabled(); + }, + + /** 设置当前编辑区域不可编辑 + * @method setDisabled + */ + + /** 设置当前编辑区域不可编辑,except中的命令除外 + * @method setDisabled + * @param { String } except 例外命令的字符串 + * @remind 即使设置了disable,此处配置的例外命令仍然可以执行 + * @example + * ```javascript + * editor.setDisabled('bold'); //禁用工具栏中除加粗之外的所有功能 + * ``` + */ + + /** 设置当前编辑区域不可编辑,except中的命令除外 + * @method setDisabled + * @param { Array } except 例外命令的字符串数组,数组中的命令仍然可以执行 + * @remind 即使设置了disable,此处配置的例外命令仍然可以执行 + * @example + * ```javascript + * editor.setDisabled(['bold','insertimage']); //禁用工具栏中除加粗和插入图片之外的所有功能 + * ``` + */ + setDisabled: function (except) { + var me = this; + except = except ? utils.isArray(except) ? except : [except] : []; + if (me.body.contentEditable == 'true') { + if (!me.lastBk) { + me.lastBk = me.selection.getRange().createBookmark(true); + } + me.body.contentEditable = false; + me.bkqueryCommandState = me.queryCommandState; + me.bkqueryCommandValue = me.queryCommandValue; + me.queryCommandState = function (type) { + if (utils.indexOf(except, type) != -1) { + return me.bkqueryCommandState.apply(me, arguments); + } + return -1; + }; + me.queryCommandValue = function (type) { + if (utils.indexOf(except, type) != -1) { + return me.bkqueryCommandValue.apply(me, arguments); + } + return null; + }; + me.fireEvent('selectionchange'); + } + }, + disable: function (except) { + return this.setDisabled(except); + }, + + /** + * 设置默认内容 + * @method _setDefaultContent + * @private + * @param { String } cont 要存入的内容 + */ + _setDefaultContent: function () { + function clear() { + var me = this; + if (me.document.getElementById('initContent')) { + me.body.innerHTML = '

    ' + (ie ? '' : '
    ') + '

    '; + me.removeListener('firstBeforeExecCommand focus', clear); + setTimeout(function () { + me.focus(); + me._selectionChange(); + }, 0) + } + } + + return function (cont) { + var me = this; + me.body.innerHTML = '

    ' + cont + '

    '; + + me.addListener('firstBeforeExecCommand focus', clear); + } + }(), + + /** + * 显示编辑器 + * @method setShow + * @example + * ```javascript + * editor.setShow() + * ``` + */ + setShow: function () { + var me = this, range = me.selection.getRange(); + if (me.container.style.display == 'none') { + //有可能内容丢失了 + try { + range.moveToBookmark(me.lastBk); + delete me.lastBk + } catch (e) { + range.setStartAtFirst(me.body).collapse(true) + } + //ie下focus实效,所以做了个延迟 + setTimeout(function () { + range.select(true); + }, 100); + me.container.style.display = ''; + } + + }, + show: function () { + return this.setShow(); + }, + /** + * 隐藏编辑器 + * @method setHide + * @example + * ```javascript + * editor.setHide() + * ``` + */ + setHide: function () { + var me = this; + if (!me.lastBk) { + me.lastBk = me.selection.getRange().createBookmark(true); + } + me.container.style.display = 'none' + }, + hide: function () { + return this.setHide(); + }, + + /** + * 根据指定的路径,获取对应的语言资源 + * @method getLang + * @param { String } path 路径根据的是lang目录下的语言文件的路径结构 + * @return { Object | String } 根据路径返回语言资源的Json格式对象或者语言字符串 + * @example + * ```javascript + * editor.getLang('contextMenu.delete'); //如果当前是中文,那返回是的是'删除' + * ``` + */ + getLang: function (path) { + // HaoChuan9421 + if(!this.options){ + return ''; + } + var lang = UE.I18N[this.options.lang]; + if (!lang) { + throw Error("not import language file"); + } + path = (path || "").split("."); + for (var i = 0, ci; ci = path[i++];) { + lang = lang[ci]; + if (!lang)break; + } + return lang; + }, + + /** + * 计算编辑器html内容字符串的长度 + * @method getContentLength + * @return { Number } 返回计算的长度 + * @example + * ```javascript + * //编辑器html内容

    132

    + * editor.getContentLength() //返回27 + * ``` + */ + /** + * 计算编辑器当前纯文本内容的长度 + * @method getContentLength + * @param { Boolean } ingoneHtml 传入true时,只按照纯文本来计算 + * @return { Number } 返回计算的长度,内容中有hr/img/iframe标签,长度加1 + * @example + * ```javascript + * //编辑器html内容

    132

    + * editor.getContentLength() //返回3 + * ``` + */ + getContentLength: function (ingoneHtml, tagNames) { + var count = this.getContent(false,false,true).length; + if (ingoneHtml) { + tagNames = (tagNames || []).concat([ 'hr', 'img', 'iframe']); + count = this.getContentTxt().replace(/[\t\r\n]+/g, '').length; + for (var i = 0, ci; ci = tagNames[i++];) { + count += this.document.getElementsByTagName(ci).length; + } + } + return count; + }, + + /** + * 注册输入过滤规则 + * @method addInputRule + * @param { Function } rule 要添加的过滤规则 + * @example + * ```javascript + * editor.addInputRule(function(root){ + * $.each(root.getNodesByTagName('div'),function(i,node){ + * node.tagName="p"; + * }); + * }); + * ``` + */ + addInputRule: function (rule) { + this.inputRules.push(rule); + }, + + /** + * 执行注册的过滤规则 + * @method filterInputRule + * @param { UE.uNode } root 要过滤的uNode节点 + * @remind 执行editor.setContent方法和执行'inserthtml'命令后,会运行该过滤函数 + * @example + * ```javascript + * editor.filterInputRule(editor.body); + * ``` + * @see UE.Editor:addInputRule + */ + filterInputRule: function (root) { + for (var i = 0, ci; ci = this.inputRules[i++];) { + ci.call(this, root) + } + }, + + /** + * 注册输出过滤规则 + * @method addOutputRule + * @param { Function } rule 要添加的过滤规则 + * @example + * ```javascript + * editor.addOutputRule(function(root){ + * $.each(root.getNodesByTagName('p'),function(i,node){ + * node.tagName="div"; + * }); + * }); + * ``` + */ + addOutputRule: function (rule) { + this.outputRules.push(rule) + }, + + /** + * 根据输出过滤规则,过滤编辑器内容 + * @method filterOutputRule + * @remind 执行editor.getContent方法的时候,会先运行该过滤函数 + * @param { UE.uNode } root 要过滤的uNode节点 + * @example + * ```javascript + * editor.filterOutputRule(editor.body); + * ``` + * @see UE.Editor:addOutputRule + */ + filterOutputRule: function (root) { + for (var i = 0, ci; ci = this.outputRules[i++];) { + ci.call(this, root) + } + }, + + /** + * 根据action名称获取请求的路径 + * @method getActionUrl + * @remind 假如没有设置serverUrl,会根据imageUrl设置默认的controller路径 + * @param { String } action action名称 + * @example + * ```javascript + * editor.getActionUrl('config'); //返回 "/ueditor/php/controller.php?action=config" + * editor.getActionUrl('image'); //返回 "/ueditor/php/controller.php?action=uplaodimage" + * editor.getActionUrl('scrawl'); //返回 "/ueditor/php/controller.php?action=uplaodscrawl" + * editor.getActionUrl('imageManager'); //返回 "/ueditor/php/controller.php?action=listimage" + * ``` + */ + getActionUrl: function(action){ + var actionName = this.getOpt(action) || action, + imageUrl = this.getOpt('imageUrl'), + serverUrl = this.getOpt('serverUrl'); + + if(!serverUrl && imageUrl) { + serverUrl = imageUrl.replace(/^(.*[\/]).+([\.].+)$/, '$1controller$2'); + } + + if(serverUrl) { + serverUrl = serverUrl + (serverUrl.indexOf('?') == -1 ? '?':'&') + 'action=' + (actionName || ''); + return utils.formatUrl(serverUrl); + } else { + return ''; + } + } + }; + utils.inherits(Editor, EventBase); +})(); + + +// core/Editor.defaultoptions.js +//维护编辑器一下默认的不在插件中的配置项 +UE.Editor.defaultOptions = function(editor){ + + var _url = editor.options.UEDITOR_HOME_URL; + return { + isShow: true, + initialContent: '', + initialStyle:'', + autoClearinitialContent: false, + iframeCssUrl: _url + 'themes/iframe.css', + textarea: 'editorValue', + focus: false, + focusInEnd: true, + autoClearEmptyNode: true, + fullscreen: false, + readonly: false, + zIndex: 999, + imagePopup: true, + enterTag: 'p', + customDomain: false, + lang: 'zh-cn', + langPath: _url + 'lang/', + theme: 'default', + themePath: _url + 'themes/', + allHtmlEnabled: false, + scaleEnabled: false, + tableNativeEditInFF: false, + autoSyncData : true, + fileNameFormat: '{time}{rand:6}' + } +}; + +// core/loadconfig.js +(function(){ + + UE.Editor.prototype.loadServerConfig = function(){ + var me = this; + setTimeout(function(){ + try{ + me.options.imageUrl && me.setOpt('serverUrl', me.options.imageUrl.replace(/^(.*[\/]).+([\.].+)$/, '$1controller$2')); + + var configUrl = me.getActionUrl('config'), + isJsonp = utils.isCrossDomainUrl(configUrl); + + /* 发出ajax请求 */ + me._serverConfigLoaded = false; + + configUrl && UE.ajax.request(configUrl,{ + 'method': 'GET', + 'dataType': isJsonp ? 'jsonp':'', + 'onsuccess':function(r){ + try { + var config = isJsonp ? r:eval("("+r.responseText+")"); + utils.extend(me.options, config); + me.fireEvent('serverConfigLoaded'); + me._serverConfigLoaded = true; + } catch (e) { + showErrorMsg(me.getLang('loadconfigFormatError')); + } + }, + 'onerror':function(){ + showErrorMsg(me.getLang('loadconfigHttpError')); + } + }); + } catch(e){ + showErrorMsg(me.getLang('loadconfigError')); + } + }); + + function showErrorMsg(msg) { + console && console.error(msg); + //me.fireEvent('showMessage', { + // 'title': msg, + // 'type': 'error' + //}); + } + }; + + UE.Editor.prototype.isServerConfigLoaded = function(){ + var me = this; + return me._serverConfigLoaded || false; + }; + + UE.Editor.prototype.afterConfigReady = function(handler){ + if (!handler || !utils.isFunction(handler)) return; + var me = this; + var readyHandler = function(){ + handler.apply(me, arguments); + me.removeListener('serverConfigLoaded', readyHandler); + }; + + if (me.isServerConfigLoaded()) { + handler.call(me, 'serverConfigLoaded'); + } else { + me.addListener('serverConfigLoaded', readyHandler); + } + }; + +})(); + + +// core/ajax.js +/** + * @file + * @module UE.ajax + * @since 1.2.6.1 + */ + +/** + * 提供对ajax请求的支持 + * @module UE.ajax + */ +UE.ajax = function() { + + //创建一个ajaxRequest对象 + var fnStr = 'XMLHttpRequest()'; + try { + new ActiveXObject("Msxml2.XMLHTTP"); + fnStr = 'ActiveXObject(\'Msxml2.XMLHTTP\')'; + } catch (e) { + try { + new ActiveXObject("Microsoft.XMLHTTP"); + fnStr = 'ActiveXObject(\'Microsoft.XMLHTTP\')' + } catch (e) { + } + } + var creatAjaxRequest = new Function('return new ' + fnStr); + + + /** + * 将json参数转化成适合ajax提交的参数列表 + * @param json + */ + function json2str(json) { + var strArr = []; + for (var i in json) { + //忽略默认的几个参数 + if(i=="method" || i=="timeout" || i=="async" || i=="dataType" || i=="callback") continue; + //忽略控制 + if(json[i] == undefined || json[i] == null) continue; + //传递过来的对象和函数不在提交之列 + if (!((typeof json[i]).toLowerCase() == "function" || (typeof json[i]).toLowerCase() == "object")) { + strArr.push( encodeURIComponent(i) + "="+encodeURIComponent(json[i]) ); + } else if (utils.isArray(json[i])) { + //支持传数组内容 + for(var j = 0; j < json[i].length; j++) { + strArr.push( encodeURIComponent(i) + "[]="+encodeURIComponent(json[i][j]) ); + } + } + } + return strArr.join("&"); + } + + function doAjax(url, ajaxOptions) { + var xhr = creatAjaxRequest(), + //是否超时 + timeIsOut = false, + //默认参数 + defaultAjaxOptions = { + method:"POST", + timeout:5000, + async:true, + data:{},//需要传递对象的话只能覆盖 + onsuccess:function() { + }, + onerror:function() { + } + }; + + if (typeof url === "object") { + ajaxOptions = url; + url = ajaxOptions.url; + } + if (!xhr || !url) return; + var ajaxOpts = ajaxOptions ? utils.extend(defaultAjaxOptions,ajaxOptions) : defaultAjaxOptions; + + var submitStr = json2str(ajaxOpts); // { name:"Jim",city:"Beijing" } --> "name=Jim&city=Beijing" + //如果用户直接通过data参数传递json对象过来,则也要将此json对象转化为字符串 + if (!utils.isEmptyObject(ajaxOpts.data)){ + submitStr += (submitStr? "&":"") + json2str(ajaxOpts.data); + } + //超时检测 + var timerID = setTimeout(function() { + if (xhr.readyState != 4) { + timeIsOut = true; + xhr.abort(); + clearTimeout(timerID); + } + }, ajaxOpts.timeout); + + var method = ajaxOpts.method.toUpperCase(); + var str = url + (url.indexOf("?")==-1?"?":"&") + (method=="POST"?"":submitStr+ "&noCache=" + +new Date); + xhr.open(method, str, ajaxOpts.async); + xhr.onreadystatechange = function() { + if (xhr.readyState == 4) { + if (!timeIsOut && xhr.status == 200) { + ajaxOpts.onsuccess(xhr); + } else { + ajaxOpts.onerror(xhr); + } + } + }; + if (method == "POST") { + xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); + xhr.send(submitStr); + } else { + xhr.send(null); + } + } + + function doJsonp(url, opts) { + + var successhandler = opts.onsuccess || function(){}, + scr = document.createElement('SCRIPT'), + options = opts || {}, + charset = options['charset'], + callbackField = options['jsonp'] || 'callback', + callbackFnName, + timeOut = options['timeOut'] || 0, + timer, + reg = new RegExp('(\\?|&)' + callbackField + '=([^&]*)'), + matches; + + if (utils.isFunction(successhandler)) { + callbackFnName = 'bd__editor__' + Math.floor(Math.random() * 2147483648).toString(36); + window[callbackFnName] = getCallBack(0); + } else if(utils.isString(successhandler)){ + callbackFnName = successhandler; + } else { + if (matches = reg.exec(url)) { + callbackFnName = matches[2]; + } + } + + url = url.replace(reg, '\x241' + callbackField + '=' + callbackFnName); + + if (url.search(reg) < 0) { + url += (url.indexOf('?') < 0 ? '?' : '&') + callbackField + '=' + callbackFnName; + } + + var queryStr = json2str(opts); // { name:"Jim",city:"Beijing" } --> "name=Jim&city=Beijing" + //如果用户直接通过data参数传递json对象过来,则也要将此json对象转化为字符串 + if (!utils.isEmptyObject(opts.data)){ + queryStr += (queryStr? "&":"") + json2str(opts.data); + } + if (queryStr) { + url = url.replace(/\?/, '?' + queryStr + '&'); + } + + scr.onerror = getCallBack(1); + if( timeOut ){ + timer = setTimeout(getCallBack(1), timeOut); + } + createScriptTag(scr, url, charset); + + function createScriptTag(scr, url, charset) { + scr.setAttribute('type', 'text/javascript'); + scr.setAttribute('defer', 'defer'); + charset && scr.setAttribute('charset', charset); + scr.setAttribute('src', url); + document.getElementsByTagName('head')[0].appendChild(scr); + } + + function getCallBack(onTimeOut){ + return function(){ + try { + if(onTimeOut){ + options.onerror && options.onerror(); + }else{ + try{ + clearTimeout(timer); + successhandler.apply(window, arguments); + } catch (e){} + } + } catch (exception) { + options.onerror && options.onerror.call(window, exception); + } finally { + options.oncomplete && options.oncomplete.apply(window, arguments); + scr.parentNode && scr.parentNode.removeChild(scr); + window[callbackFnName] = null; + try { + delete window[callbackFnName]; + }catch(e){} + } + } + } + } + + return { + /** + * 根据给定的参数项,向指定的url发起一个ajax请求。 ajax请求完成后,会根据请求结果调用相应回调: 如果请求 + * 成功, 则调用onsuccess回调, 失败则调用 onerror 回调 + * @method request + * @param { URLString } url ajax请求的url地址 + * @param { Object } ajaxOptions ajax请求选项的键值对,支持的选项如下: + * @example + * ```javascript + * //向sayhello.php发起一个异步的Ajax GET请求, 请求超时时间为10s, 请求完成后执行相应的回调。 + * UE.ajax.requeset( 'sayhello.php', { + * + * //请求方法。可选值: 'GET', 'POST',默认值是'POST' + * method: 'GET', + * + * //超时时间。 默认为5000, 单位是ms + * timeout: 10000, + * + * //是否是异步请求。 true为异步请求, false为同步请求 + * async: true, + * + * //请求携带的数据。如果请求为GET请求, data会经过stringify后附加到请求url之后。 + * data: { + * name: 'ueditor' + * }, + * + * //请求成功后的回调, 该回调接受当前的XMLHttpRequest对象作为参数。 + * onsuccess: function ( xhr ) { + * console.log( xhr.responseText ); + * }, + * + * //请求失败或者超时后的回调。 + * onerror: function ( xhr ) { + * alert( 'Ajax请求失败' ); + * } + * + * } ); + * ``` + */ + + /** + * 根据给定的参数项发起一个ajax请求, 参数项里必须包含一个url地址。 ajax请求完成后,会根据请求结果调用相应回调: 如果请求 + * 成功, 则调用onsuccess回调, 失败则调用 onerror 回调。 + * @method request + * @warning 如果在参数项里未提供一个key为“url”的地址值,则该请求将直接退出。 + * @param { Object } ajaxOptions ajax请求选项的键值对,支持的选项如下: + * @example + * ```javascript + * + * //向sayhello.php发起一个异步的Ajax POST请求, 请求超时时间为5s, 请求完成后不执行任何回调。 + * UE.ajax.requeset( 'sayhello.php', { + * + * //请求的地址, 该项是必须的。 + * url: 'sayhello.php' + * + * } ); + * ``` + */ + request:function(url, opts) { + if (opts && opts.dataType == 'jsonp') { + doJsonp(url, opts); + } else { + doAjax(url, opts); + } + }, + getJSONP:function(url, data, fn) { + var opts = { + 'data': data, + 'oncomplete': fn + }; + doJsonp(url, opts); + } + }; + + +}(); + + +// core/filterword.js +/** + * UE过滤word的静态方法 + * @file + */ + +/** + * UEditor公用空间,UEditor所有的功能都挂载在该空间下 + * @module UE + */ + + +/** + * 根据传入html字符串过滤word + * @module UE + * @since 1.2.6.1 + * @method filterWord + * @param { String } html html字符串 + * @return { String } 已过滤后的结果字符串 + * @example + * ```javascript + * UE.filterWord(html); + * ``` + */ +var filterWord = UE.filterWord = function () { + + //是否是word过来的内容 + function isWordDocument( str ) { + return /(class="?Mso|style="[^"]*\bmso\-|w:WordDocument|<(v|o):|lang=)/ig.test( str ); + } + //去掉小数 + function transUnit( v ) { + v = v.replace( /[\d.]+\w+/g, function ( m ) { + return utils.transUnitToPx(m); + } ); + return v; + } + + function filterPasteWord( str ) { + return str.replace(/[\t\r\n]+/g,' ') + .replace( //ig, "" ) + //转换图片 + .replace(/]*>[\s\S]*?.<\/v:shape>/gi,function(str){ + //opera能自己解析出image所这里直接返回空 + if(browser.opera){ + return ''; + } + try{ + //有可能是bitmap占为图,无用,直接过滤掉,主要体现在粘贴excel表格中 + if(/Bitmap/i.test(str)){ + return ''; + } + var width = str.match(/width:([ \d.]*p[tx])/i)[1], + height = str.match(/height:([ \d.]*p[tx])/i)[1], + src = str.match(/src=\s*"([^"]*)"/i)[1]; + return ''; + } catch(e){ + return ''; + } + }) + //针对wps添加的多余标签处理 + .replace(/<\/?div[^>]*>/g,'') + //去掉多余的属性 + .replace( /v:\w+=(["']?)[^'"]+\1/g, '' ) + .replace( /<(!|script[^>]*>.*?<\/script(?=[>\s])|\/?(\?xml(:\w+)?|xml|meta|link|style|\w+:\w+)(?=[\s\/>]))[^>]*>/gi, "" ) + .replace( /

    ]*class="?MsoHeading"?[^>]*>(.*?)<\/p>/gi, "

    $1

    " ) + //去掉多余的属性 + .replace( /\s+(class|lang|align)\s*=\s*(['"]?)([\w-]+)\2/ig, function(str,name,marks,val){ + //保留list的标示 + return name == 'class' && val == 'MsoListParagraph' ? str : '' + }) + //清除多余的font/span不能匹配 有可能是空格 + .replace( /<(font|span)[^>]*>(\s*)<\/\1>/gi, function(a,b,c){ + return c.replace(/[\t\r\n ]+/g,' ') + }) + //处理style的问题 + .replace( /(<[a-z][^>]*)\sstyle=(["'])([^\2]*?)\2/gi, function( str, tag, tmp, style ) { + var n = [], + s = style.replace( /^\s+|\s+$/, '' ) + .replace(/'/g,'\'') + .replace( /"/gi, "'" ) + .replace(/[\d.]+(cm|pt)/g,function(str){ + return utils.transUnitToPx(str) + }) + .split( /;\s*/g ); + + for ( var i = 0,v; v = s[i];i++ ) { + + var name, value, + parts = v.split( ":" ); + + if ( parts.length == 2 ) { + name = parts[0].toLowerCase(); + value = parts[1].toLowerCase(); + if(/^(background)\w*/.test(name) && value.replace(/(initial|\s)/g,'').length == 0 + || + /^(margin)\w*/.test(name) && /^0\w+$/.test(value) + ){ + continue; + } + + switch ( name ) { + case "mso-padding-alt": + case "mso-padding-top-alt": + case "mso-padding-right-alt": + case "mso-padding-bottom-alt": + case "mso-padding-left-alt": + case "mso-margin-alt": + case "mso-margin-top-alt": + case "mso-margin-right-alt": + case "mso-margin-bottom-alt": + case "mso-margin-left-alt": + //ie下会出现挤到一起的情况 + //case "mso-table-layout-alt": + case "mso-height": + case "mso-width": + case "mso-vertical-align-alt": + //trace:1819 ff下会解析出padding在table上 + if(!/]/.test(html)) { + return UE.htmlparser(html).children[0] + } else { + return new uNode({ + type:'element', + children:[], + tagName:html + }) + } + }; + uNode.createText = function (data,noTrans) { + return new UE.uNode({ + type:'text', + 'data':noTrans ? data : utils.unhtml(data || '') + }) + }; + function nodeToHtml(node, arr, formatter, current) { + switch (node.type) { + case 'root': + for (var i = 0, ci; ci = node.children[i++];) { + //插入新行 + if (formatter && ci.type == 'element' && !dtd.$inlineWithA[ci.tagName] && i > 1) { + insertLine(arr, current, true); + insertIndent(arr, current) + } + nodeToHtml(ci, arr, formatter, current) + } + break; + case 'text': + isText(node, arr); + break; + case 'element': + isElement(node, arr, formatter, current); + break; + case 'comment': + isComment(node, arr, formatter); + } + return arr; + } + + function isText(node, arr) { + if(node.parentNode.tagName == 'pre'){ + //源码模式下输入html标签,不能做转换处理,直接输出 + arr.push(node.data) + }else{ + arr.push(notTransTagName[node.parentNode.tagName] ? utils.html(node.data) : node.data.replace(/[ ]{2}/g,'  ')) + } + + } + + function isElement(node, arr, formatter, current) { + var attrhtml = ''; + if (node.attrs) { + attrhtml = []; + var attrs = node.attrs; + for (var a in attrs) { + //这里就针对 + //

    '

    + //这里边的\"做转换,要不用innerHTML直接被截断了,属性src + //有可能做的不够 + attrhtml.push(a + (attrs[a] !== undefined ? '="' + (notTransAttrs[a] ? utils.html(attrs[a]).replace(/["]/g, function (a) { + return '"' + }) : utils.unhtml(attrs[a])) + '"' : '')) + } + attrhtml = attrhtml.join(' '); + } + arr.push('<' + node.tagName + + (attrhtml ? ' ' + attrhtml : '') + + (dtd.$empty[node.tagName] ? '\/' : '' ) + '>' + ); + //插入新行 + if (formatter && !dtd.$inlineWithA[node.tagName] && node.tagName != 'pre') { + if(node.children && node.children.length){ + current = insertLine(arr, current, true); + insertIndent(arr, current) + } + + } + if (node.children && node.children.length) { + for (var i = 0, ci; ci = node.children[i++];) { + if (formatter && ci.type == 'element' && !dtd.$inlineWithA[ci.tagName] && i > 1) { + insertLine(arr, current); + insertIndent(arr, current) + } + nodeToHtml(ci, arr, formatter, current) + } + } + if (!dtd.$empty[node.tagName]) { + if (formatter && !dtd.$inlineWithA[node.tagName] && node.tagName != 'pre') { + + if(node.children && node.children.length){ + current = insertLine(arr, current); + insertIndent(arr, current) + } + } + arr.push('<\/' + node.tagName + '>'); + } + + } + + function isComment(node, arr) { + arr.push(''); + } + + function getNodeById(root, id) { + var node; + if (root.type == 'element' && root.getAttr('id') == id) { + return root; + } + if (root.children && root.children.length) { + for (var i = 0, ci; ci = root.children[i++];) { + if (node = getNodeById(ci, id)) { + return node; + } + } + } + } + + function getNodesByTagName(node, tagName, arr) { + if (node.type == 'element' && node.tagName == tagName) { + arr.push(node); + } + if (node.children && node.children.length) { + for (var i = 0, ci; ci = node.children[i++];) { + getNodesByTagName(ci, tagName, arr) + } + } + } + function nodeTraversal(root,fn){ + if(root.children && root.children.length){ + for(var i= 0,ci;ci=root.children[i];){ + nodeTraversal(ci,fn); + //ci被替换的情况,这里就不再走 fn了 + if(ci.parentNode ){ + if(ci.children && ci.children.length){ + fn(ci) + } + if(ci.parentNode) i++ + } + } + }else{ + fn(root) + } + + } + uNode.prototype = { + + /** + * 当前节点对象,转换成html文本 + * @method toHtml + * @return { String } 返回转换后的html字符串 + * @example + * ```javascript + * node.toHtml(); + * ``` + */ + + /** + * 当前节点对象,转换成html文本 + * @method toHtml + * @param { Boolean } formatter 是否格式化返回值 + * @return { String } 返回转换后的html字符串 + * @example + * ```javascript + * node.toHtml( true ); + * ``` + */ + toHtml:function (formatter) { + var arr = []; + nodeToHtml(this, arr, formatter, 0); + return arr.join('') + }, + + /** + * 获取节点的html内容 + * @method innerHTML + * @warning 假如节点的type不是'element',或节点的标签名称不在dtd列表里,直接返回当前节点 + * @return { String } 返回节点的html内容 + * @example + * ```javascript + * var htmlstr = node.innerHTML(); + * ``` + */ + + /** + * 设置节点的html内容 + * @method innerHTML + * @warning 假如节点的type不是'element',或节点的标签名称不在dtd列表里,直接返回当前节点 + * @param { String } htmlstr 传入要设置的html内容 + * @return { UE.uNode } 返回节点本身 + * @example + * ```javascript + * node.innerHTML('text'); + * ``` + */ + innerHTML:function (htmlstr) { + if (this.type != 'element' || dtd.$empty[this.tagName]) { + return this; + } + if (utils.isString(htmlstr)) { + if(this.children){ + for (var i = 0, ci; ci = this.children[i++];) { + ci.parentNode = null; + } + } + this.children = []; + var tmpRoot = UE.htmlparser(htmlstr); + for (var i = 0, ci; ci = tmpRoot.children[i++];) { + this.children.push(ci); + ci.parentNode = this; + } + return this; + } else { + var tmpRoot = new UE.uNode({ + type:'root', + children:this.children + }); + return tmpRoot.toHtml(); + } + }, + + /** + * 获取节点的纯文本内容 + * @method innerText + * @warning 假如节点的type不是'element',或节点的标签名称不在dtd列表里,直接返回当前节点 + * @return { String } 返回节点的存文本内容 + * @example + * ```javascript + * var textStr = node.innerText(); + * ``` + */ + + /** + * 设置节点的纯文本内容 + * @method innerText + * @warning 假如节点的type不是'element',或节点的标签名称不在dtd列表里,直接返回当前节点 + * @param { String } textStr 传入要设置的文本内容 + * @return { UE.uNode } 返回节点本身 + * @example + * ```javascript + * node.innerText('text'); + * ``` + */ + innerText:function (textStr,noTrans) { + if (this.type != 'element' || dtd.$empty[this.tagName]) { + return this; + } + if (textStr) { + if(this.children){ + for (var i = 0, ci; ci = this.children[i++];) { + ci.parentNode = null; + } + } + this.children = []; + this.appendChild(uNode.createText(textStr,noTrans)); + return this; + } else { + return this.toHtml().replace(/<[^>]+>/g, ''); + } + }, + + /** + * 获取当前对象的data属性 + * @method getData + * @return { Object } 若节点的type值是elemenet,返回空字符串,否则返回节点的data属性 + * @example + * ```javascript + * node.getData(); + * ``` + */ + getData:function () { + if (this.type == 'element') + return ''; + return this.data + }, + + /** + * 获取当前节点下的第一个子节点 + * @method firstChild + * @return { UE.uNode } 返回第一个子节点 + * @example + * ```javascript + * node.firstChild(); //返回第一个子节点 + * ``` + */ + firstChild:function () { +// if (this.type != 'element' || dtd.$empty[this.tagName]) { +// return this; +// } + return this.children ? this.children[0] : null; + }, + + /** + * 获取当前节点下的最后一个子节点 + * @method lastChild + * @return { UE.uNode } 返回最后一个子节点 + * @example + * ```javascript + * node.lastChild(); //返回最后一个子节点 + * ``` + */ + lastChild:function () { +// if (this.type != 'element' || dtd.$empty[this.tagName] ) { +// return this; +// } + return this.children ? this.children[this.children.length - 1] : null; + }, + + /** + * 获取和当前节点有相同父亲节点的前一个节点 + * @method previousSibling + * @return { UE.uNode } 返回前一个节点 + * @example + * ```javascript + * node.children[2].previousSibling(); //返回子节点node.children[1] + * ``` + */ + previousSibling : function(){ + var parent = this.parentNode; + for (var i = 0, ci; ci = parent.children[i]; i++) { + if (ci === this) { + return i == 0 ? null : parent.children[i-1]; + } + } + + }, + + /** + * 获取和当前节点有相同父亲节点的后一个节点 + * @method nextSibling + * @return { UE.uNode } 返回后一个节点,找不到返回null + * @example + * ```javascript + * node.children[2].nextSibling(); //如果有,返回子节点node.children[3] + * ``` + */ + nextSibling : function(){ + var parent = this.parentNode; + for (var i = 0, ci; ci = parent.children[i++];) { + if (ci === this) { + return parent.children[i]; + } + } + }, + + /** + * 用新的节点替换当前节点 + * @method replaceChild + * @param { UE.uNode } target 要替换成该节点参数 + * @param { UE.uNode } source 要被替换掉的节点 + * @return { UE.uNode } 返回替换之后的节点对象 + * @example + * ```javascript + * node.replaceChild(newNode, childNode); //用newNode替换childNode,childNode是node的子节点 + * ``` + */ + replaceChild:function (target, source) { + if (this.children) { + if(target.parentNode){ + target.parentNode.removeChild(target); + } + for (var i = 0, ci; ci = this.children[i]; i++) { + if (ci === source) { + this.children.splice(i, 1, target); + source.parentNode = null; + target.parentNode = this; + return target; + } + } + } + }, + + /** + * 在节点的子节点列表最后位置插入一个节点 + * @method appendChild + * @param { UE.uNode } node 要插入的节点 + * @return { UE.uNode } 返回刚插入的子节点 + * @example + * ```javascript + * node.appendChild( newNode ); //在node内插入子节点newNode + * ``` + */ + appendChild:function (node) { + if (this.type == 'root' || (this.type == 'element' && !dtd.$empty[this.tagName])) { + if (!this.children) { + this.children = [] + } + if(node.parentNode){ + node.parentNode.removeChild(node); + } + for (var i = 0, ci; ci = this.children[i]; i++) { + if (ci === node) { + this.children.splice(i, 1); + break; + } + } + this.children.push(node); + node.parentNode = this; + return node; + } + + + }, + + /** + * 在传入节点的前面插入一个节点 + * @method insertBefore + * @param { UE.uNode } target 要插入的节点 + * @param { UE.uNode } source 在该参数节点前面插入 + * @return { UE.uNode } 返回刚插入的子节点 + * @example + * ```javascript + * node.parentNode.insertBefore(newNode, node); //在node节点后面插入newNode + * ``` + */ + insertBefore:function (target, source) { + if (this.children) { + if(target.parentNode){ + target.parentNode.removeChild(target); + } + for (var i = 0, ci; ci = this.children[i]; i++) { + if (ci === source) { + this.children.splice(i, 0, target); + target.parentNode = this; + return target; + } + } + + } + }, + + /** + * 在传入节点的后面插入一个节点 + * @method insertAfter + * @param { UE.uNode } target 要插入的节点 + * @param { UE.uNode } source 在该参数节点后面插入 + * @return { UE.uNode } 返回刚插入的子节点 + * @example + * ```javascript + * node.parentNode.insertAfter(newNode, node); //在node节点后面插入newNode + * ``` + */ + insertAfter:function (target, source) { + if (this.children) { + if(target.parentNode){ + target.parentNode.removeChild(target); + } + for (var i = 0, ci; ci = this.children[i]; i++) { + if (ci === source) { + this.children.splice(i + 1, 0, target); + target.parentNode = this; + return target; + } + + } + } + }, + + /** + * 从当前节点的子节点列表中,移除节点 + * @method removeChild + * @param { UE.uNode } node 要移除的节点引用 + * @param { Boolean } keepChildren 是否保留移除节点的子节点,若传入true,自动把移除节点的子节点插入到移除的位置 + * @return { * } 返回刚移除的子节点 + * @example + * ```javascript + * node.removeChild(childNode,true); //在node的子节点列表中移除child节点,并且吧child的子节点插入到移除的位置 + * ``` + */ + removeChild:function (node,keepChildren) { + if (this.children) { + for (var i = 0, ci; ci = this.children[i]; i++) { + if (ci === node) { + this.children.splice(i, 1); + ci.parentNode = null; + if(keepChildren && ci.children && ci.children.length){ + for(var j= 0,cj;cj=ci.children[j];j++){ + this.children.splice(i+j,0,cj); + cj.parentNode = this; + + } + } + return ci; + } + } + } + }, + + /** + * 获取当前节点所代表的元素属性,即获取attrs对象下的属性值 + * @method getAttr + * @param { String } attrName 要获取的属性名称 + * @return { * } 返回attrs对象下的属性值 + * @example + * ```javascript + * node.getAttr('title'); + * ``` + */ + getAttr:function (attrName) { + return this.attrs && this.attrs[attrName.toLowerCase()] + }, + + /** + * 设置当前节点所代表的元素属性,即设置attrs对象下的属性值 + * @method setAttr + * @param { String } attrName 要设置的属性名称 + * @param { * } attrVal 要设置的属性值,类型视设置的属性而定 + * @return { * } 返回attrs对象下的属性值 + * @example + * ```javascript + * node.setAttr('title','标题'); + * ``` + */ + setAttr:function (attrName, attrVal) { + if (!attrName) { + delete this.attrs; + return; + } + if(!this.attrs){ + this.attrs = {}; + } + if (utils.isObject(attrName)) { + for (var a in attrName) { + if (!attrName[a]) { + delete this.attrs[a] + } else { + this.attrs[a.toLowerCase()] = attrName[a]; + } + } + } else { + if (!attrVal) { + delete this.attrs[attrName] + } else { + this.attrs[attrName.toLowerCase()] = attrVal; + } + + } + }, + + /** + * 获取当前节点在父节点下的位置索引 + * @method getIndex + * @return { Number } 返回索引数值,如果没有父节点,返回-1 + * @example + * ```javascript + * node.getIndex(); + * ``` + */ + getIndex:function(){ + var parent = this.parentNode; + for(var i= 0,ci;ci=parent.children[i];i++){ + if(ci === this){ + return i; + } + } + return -1; + }, + + /** + * 在当前节点下,根据id查找节点 + * @method getNodeById + * @param { String } id 要查找的id + * @return { UE.uNode } 返回找到的节点 + * @example + * ```javascript + * node.getNodeById('textId'); + * ``` + */ + getNodeById:function (id) { + var node; + if (this.children && this.children.length) { + for (var i = 0, ci; ci = this.children[i++];) { + if (node = getNodeById(ci, id)) { + return node; + } + } + } + }, + + /** + * 在当前节点下,根据元素名称查找节点列表 + * @method getNodesByTagName + * @param { String } tagNames 要查找的元素名称 + * @return { Array } 返回找到的节点列表 + * @example + * ```javascript + * node.getNodesByTagName('span'); + * ``` + */ + getNodesByTagName:function (tagNames) { + tagNames = utils.trim(tagNames).replace(/[ ]{2,}/g, ' ').split(' '); + var arr = [], me = this; + utils.each(tagNames, function (tagName) { + if (me.children && me.children.length) { + for (var i = 0, ci; ci = me.children[i++];) { + getNodesByTagName(ci, tagName, arr) + } + } + }); + return arr; + }, + + /** + * 根据样式名称,获取节点的样式值 + * @method getStyle + * @param { String } name 要获取的样式名称 + * @return { String } 返回样式值 + * @example + * ```javascript + * node.getStyle('font-size'); + * ``` + */ + getStyle:function (name) { + var cssStyle = this.getAttr('style'); + if (!cssStyle) { + return '' + } + var reg = new RegExp('(^|;)\\s*' + name + ':([^;]+)','i'); + var match = cssStyle.match(reg); + if (match && match[0]) { + return match[2] + } + return ''; + }, + + /** + * 给节点设置样式 + * @method setStyle + * @param { String } name 要设置的的样式名称 + * @param { String } val 要设置的的样值 + * @example + * ```javascript + * node.setStyle('font-size', '12px'); + * ``` + */ + setStyle:function (name, val) { + function exec(name, val) { + var reg = new RegExp('(^|;)\\s*' + name + ':([^;]+;?)', 'gi'); + cssStyle = cssStyle.replace(reg, '$1'); + if (val) { + cssStyle = name + ':' + utils.unhtml(val) + ';' + cssStyle + } + + } + + var cssStyle = this.getAttr('style'); + if (!cssStyle) { + cssStyle = ''; + } + if (utils.isObject(name)) { + for (var a in name) { + exec(a, name[a]) + } + } else { + exec(name, val) + } + this.setAttr('style', utils.trim(cssStyle)) + }, + + /** + * 传入一个函数,递归遍历当前节点下的所有节点 + * @method traversal + * @param { Function } fn 遍历到节点的时,传入节点作为参数,运行此函数 + * @example + * ```javascript + * traversal(node, function(){ + * console.log(node.type); + * }); + * ``` + */ + traversal:function(fn){ + if(this.children && this.children.length){ + nodeTraversal(this,fn); + } + return this; + } + } +})(); + + +// core/htmlparser.js +/** + * html字符串转换成uNode节点 + * @file + * @module UE + * @since 1.2.6.1 + */ + +/** + * UEditor公用空间,UEditor所有的功能都挂载在该空间下 + * @unfile + * @module UE + */ + +/** + * html字符串转换成uNode节点的静态方法 + * @method htmlparser + * @param { String } htmlstr 要转换的html代码 + * @param { Boolean } ignoreBlank 若设置为true,转换的时候忽略\n\r\t等空白字符 + * @return { uNode } 给定的html片段转换形成的uNode对象 + * @example + * ```javascript + * var root = UE.htmlparser('

    htmlparser

    ', true); + * ``` + */ + +var htmlparser = UE.htmlparser = function (htmlstr,ignoreBlank) { + //todo 原来的方式 [^"'<>\/] 有\/就不能配对上 ') + } + html.push('') + } + //禁止指定table-width + return '
    这样的标签了 + //先去掉了,加上的原因忘了,这里先记录 + var re_tag = /<(?:(?:\/([^>]+)>)|(?:!--([\S|\s]*?)-->)|(?:([^\s\/<>]+)\s*((?:(?:"[^"]*")|(?:'[^']*')|[^"'<>])*)\/?>))/g, + re_attr = /([\w\-:.]+)(?:(?:\s*=\s*(?:(?:"([^"]*)")|(?:'([^']*)')|([^\s>]+)))|(?=\s|$))/g; + + //ie下取得的html可能会有\n存在,要去掉,在处理replace(/[\t\r\n]*/g,'');代码高量的\n不能去除 + var allowEmptyTags = { + b:1,code:1,i:1,u:1,strike:1,s:1,tt:1,strong:1,q:1,samp:1,em:1,span:1, + sub:1,img:1,sup:1,font:1,big:1,small:1,iframe:1,a:1,br:1,pre:1 + }; + htmlstr = htmlstr.replace(new RegExp(domUtils.fillChar, 'g'), ''); + if(!ignoreBlank){ + htmlstr = htmlstr.replace(new RegExp('[\\r\\t\\n'+(ignoreBlank?'':' ')+']*<\/?(\\w+)\\s*(?:[^>]*)>[\\r\\t\\n'+(ignoreBlank?'':' ')+']*','g'), function(a,b){ + //br暂时单独处理 + if(b && allowEmptyTags[b.toLowerCase()]){ + return a.replace(/(^[\n\r]+)|([\n\r]+$)/g,''); + } + return a.replace(new RegExp('^[\\r\\n'+(ignoreBlank?'':' ')+']+'),'').replace(new RegExp('[\\r\\n'+(ignoreBlank?'':' ')+']+$'),''); + }); + } + + var notTransAttrs = { + 'href':1, + 'src':1 + }; + + var uNode = UE.uNode, + needParentNode = { + 'td':'tr', + 'tr':['tbody','thead','tfoot'], + 'tbody':'table', + 'th':'tr', + 'thead':'table', + 'tfoot':'table', + 'caption':'table', + 'li':['ul', 'ol'], + 'dt':'dl', + 'dd':'dl', + 'option':'select' + }, + needChild = { + 'ol':'li', + 'ul':'li' + }; + + function text(parent, data) { + + if(needChild[parent.tagName]){ + var tmpNode = uNode.createElement(needChild[parent.tagName]); + parent.appendChild(tmpNode); + tmpNode.appendChild(uNode.createText(data)); + parent = tmpNode; + }else{ + + parent.appendChild(uNode.createText(data)); + } + } + + function element(parent, tagName, htmlattr) { + var needParentTag; + if (needParentTag = needParentNode[tagName]) { + var tmpParent = parent,hasParent; + while(tmpParent.type != 'root'){ + if(utils.isArray(needParentTag) ? utils.indexOf(needParentTag, tmpParent.tagName) != -1 : needParentTag == tmpParent.tagName){ + parent = tmpParent; + hasParent = true; + break; + } + tmpParent = tmpParent.parentNode; + } + if(!hasParent){ + parent = element(parent, utils.isArray(needParentTag) ? needParentTag[0] : needParentTag) + } + } + //按dtd处理嵌套 +// if(parent.type != 'root' && !dtd[parent.tagName][tagName]) +// parent = parent.parentNode; + var elm = new uNode({ + parentNode:parent, + type:'element', + tagName:tagName.toLowerCase(), + //是自闭合的处理一下 + children:dtd.$empty[tagName] ? null : [] + }); + //如果属性存在,处理属性 + if (htmlattr) { + var attrs = {}, match; + while (match = re_attr.exec(htmlattr)) { + attrs[match[1].toLowerCase()] = notTransAttrs[match[1].toLowerCase()] ? (match[2] || match[3] || match[4]) : utils.unhtml(match[2] || match[3] || match[4]) + } + elm.attrs = attrs; + } + //trace:3970 +// //如果parent下不能放elm +// if(dtd.$inline[parent.tagName] && dtd.$block[elm.tagName] && !dtd[parent.tagName][elm.tagName]){ +// parent = parent.parentNode; +// elm.parentNode = parent; +// } + parent.children.push(elm); + //如果是自闭合节点返回父亲节点 + return dtd.$empty[tagName] ? parent : elm + } + + function comment(parent, data) { + parent.children.push(new uNode({ + type:'comment', + data:data, + parentNode:parent + })); + } + + var match, currentIndex = 0, nextIndex = 0; + //设置根节点 + var root = new uNode({ + type:'root', + children:[] + }); + var currentParent = root; + + while (match = re_tag.exec(htmlstr)) { + currentIndex = match.index; + try{ + if (currentIndex > nextIndex) { + //text node + text(currentParent, htmlstr.slice(nextIndex, currentIndex)); + } + if (match[3]) { + + if(dtd.$cdata[currentParent.tagName]){ + text(currentParent, match[0]); + }else{ + //start tag + currentParent = element(currentParent, match[3].toLowerCase(), match[4]); + } + + + } else if (match[1]) { + if(currentParent.type != 'root'){ + if(dtd.$cdata[currentParent.tagName] && !dtd.$cdata[match[1]]){ + text(currentParent, match[0]); + }else{ + var tmpParent = currentParent; + while(currentParent.type == 'element' && currentParent.tagName != match[1].toLowerCase()){ + currentParent = currentParent.parentNode; + if(currentParent.type == 'root'){ + currentParent = tmpParent; + throw 'break' + } + } + //end tag + currentParent = currentParent.parentNode; + } + + } + + } else if (match[2]) { + //comment + comment(currentParent, match[2]) + } + }catch(e){} + + nextIndex = re_tag.lastIndex; + + } + //如果结束是文本,就有可能丢掉,所以这里手动判断一下 + //例如
  • sdfsdfsdf
  • sdfsdfsdfsdf + if (nextIndex < htmlstr.length) { + text(currentParent, htmlstr.slice(nextIndex)); + } + return root; +}; + + +// core/filternode.js +/** + * UE过滤节点的静态方法 + * @file + */ + +/** + * UEditor公用空间,UEditor所有的功能都挂载在该空间下 + * @module UE + */ + + +/** + * 根据传入节点和过滤规则过滤相应节点 + * @module UE + * @since 1.2.6.1 + * @method filterNode + * @param { Object } root 指定root节点 + * @param { Object } rules 过滤规则json对象 + * @example + * ```javascript + * UE.filterNode(root,editor.options.filterRules); + * ``` + */ +var filterNode = UE.filterNode = function () { + function filterNode(node,rules){ + switch (node.type) { + case 'text': + break; + case 'element': + var val; + if(val = rules[node.tagName]){ + if(val === '-'){ + node.parentNode.removeChild(node) + }else if(utils.isFunction(val)){ + var parentNode = node.parentNode, + index = node.getIndex(); + val(node); + if(node.parentNode){ + if(node.children){ + for(var i = 0,ci;ci=node.children[i];){ + filterNode(ci,rules); + if(ci.parentNode){ + i++; + } + } + } + }else{ + for(var i = index,ci;ci=parentNode.children[i];){ + filterNode(ci,rules); + if(ci.parentNode){ + i++; + } + } + } + + + }else{ + var attrs = val['$']; + if(attrs && node.attrs){ + var tmpAttrs = {},tmpVal; + for(var a in attrs){ + tmpVal = node.getAttr(a); + //todo 只先对style单独处理 + if(a == 'style' && utils.isArray(attrs[a])){ + var tmpCssStyle = []; + utils.each(attrs[a],function(v){ + var tmp; + if(tmp = node.getStyle(v)){ + tmpCssStyle.push(v + ':' + tmp); + } + }); + tmpVal = tmpCssStyle.join(';') + } + if(tmpVal){ + tmpAttrs[a] = tmpVal; + } + + } + node.attrs = tmpAttrs; + } + if(node.children){ + for(var i = 0,ci;ci=node.children[i];){ + filterNode(ci,rules); + if(ci.parentNode){ + i++; + } + } + } + } + }else{ + //如果不在名单里扣出子节点并删除该节点,cdata除外 + if(dtd.$cdata[node.tagName]){ + node.parentNode.removeChild(node) + }else{ + var parentNode = node.parentNode, + index = node.getIndex(); + node.parentNode.removeChild(node,true); + for(var i = index,ci;ci=parentNode.children[i];){ + filterNode(ci,rules); + if(ci.parentNode){ + i++; + } + } + } + } + break; + case 'comment': + node.parentNode.removeChild(node) + } + + } + return function(root,rules){ + if(utils.isEmptyObject(rules)){ + return root; + } + var val; + if(val = rules['-']){ + utils.each(val.split(' '),function(k){ + rules[k] = '-' + }) + } + for(var i= 0,ci;ci=root.children[i];){ + filterNode(ci,rules); + if(ci.parentNode){ + i++; + } + } + return root; + } +}(); + +// core/plugin.js +/** + * Created with JetBrains PhpStorm. + * User: campaign + * Date: 10/8/13 + * Time: 6:15 PM + * To change this template use File | Settings | File Templates. + */ +UE.plugin = function(){ + var _plugins = {}; + return { + register : function(pluginName,fn,oldOptionName,afterDisabled){ + if(oldOptionName && utils.isFunction(oldOptionName)){ + afterDisabled = oldOptionName; + oldOptionName = null + } + _plugins[pluginName] = { + optionName : oldOptionName || pluginName, + execFn : fn, + //当插件被禁用时执行 + afterDisabled : afterDisabled + } + }, + load : function(editor){ + utils.each(_plugins,function(plugin){ + var _export = plugin.execFn.call(editor); + if(editor.options[plugin.optionName] !== false){ + if(_export){ + //后边需要再做扩展 + utils.each(_export,function(v,k){ + switch(k.toLowerCase()){ + case 'shortcutkey': + editor.addshortcutkey(v); + break; + case 'bindevents': + utils.each(v,function(fn,eventName){ + editor.addListener(eventName,fn); + }); + break; + case 'bindmultievents': + utils.each(utils.isArray(v) ? v:[v],function(event){ + var types = utils.trim(event.type).split(/\s+/); + utils.each(types,function(eventName){ + editor.addListener(eventName, event.handler); + }); + }); + break; + case 'commands': + utils.each(v,function(execFn,execName){ + editor.commands[execName] = execFn + }); + break; + case 'outputrule': + editor.addOutputRule(v); + break; + case 'inputrule': + editor.addInputRule(v); + break; + case 'defaultoptions': + editor.setOpt(v) + } + }) + } + + }else if(plugin.afterDisabled){ + plugin.afterDisabled.call(editor) + } + + }); + //向下兼容 + utils.each(UE.plugins,function(plugin){ + plugin.call(editor); + }); + }, + run : function(pluginName,editor){ + var plugin = _plugins[pluginName]; + if(plugin){ + plugin.exeFn.call(editor) + } + } + } +}(); + +// core/keymap.js +var keymap = UE.keymap = { + 'Backspace' : 8, + 'Tab' : 9, + 'Enter' : 13, + + 'Shift':16, + 'Control':17, + 'Alt':18, + 'CapsLock':20, + + 'Esc':27, + + 'Spacebar':32, + + 'PageUp':33, + 'PageDown':34, + 'End':35, + 'Home':36, + + 'Left':37, + 'Up':38, + 'Right':39, + 'Down':40, + + 'Insert':45, + + 'Del':46, + + 'NumLock':144, + + 'Cmd':91, + + '=':187, + '-':189, + + "b":66, + 'i':73, + //回退 + 'z':90, + 'y':89, + //粘贴 + 'v' : 86, + 'x' : 88, + + 's' : 83, + + 'n' : 78 +}; + +// core/localstorage.js +//存储媒介封装 +var LocalStorage = UE.LocalStorage = (function () { + + var storage = window.localStorage || getUserData() || null, + LOCAL_FILE = 'localStorage'; + + return { + + saveLocalData: function (key, data) { + + if (storage && data) { + storage.setItem(key, data); + return true; + } + + return false; + + }, + + getLocalData: function (key) { + + if (storage) { + return storage.getItem(key); + } + + return null; + + }, + + removeItem: function (key) { + + storage && storage.removeItem(key); + + } + + }; + + function getUserData() { + + var container = document.createElement("div"); + container.style.display = "none"; + + if (!container.addBehavior) { + return null; + } + + container.addBehavior("#default#userdata"); + + return { + + getItem: function (key) { + + var result = null; + + try { + document.body.appendChild(container); + container.load(LOCAL_FILE); + result = container.getAttribute(key); + document.body.removeChild(container); + } catch (e) { + } + + return result; + + }, + + setItem: function (key, value) { + + document.body.appendChild(container); + container.setAttribute(key, value); + container.save(LOCAL_FILE); + document.body.removeChild(container); + + }, + + //// 暂时没有用到 + //clear: function () { + // + // var expiresTime = new Date(); + // expiresTime.setFullYear(expiresTime.getFullYear() - 1); + // document.body.appendChild(container); + // container.expires = expiresTime.toUTCString(); + // container.save(LOCAL_FILE); + // document.body.removeChild(container); + // + //}, + + removeItem: function (key) { + + document.body.appendChild(container); + container.removeAttribute(key); + container.save(LOCAL_FILE); + document.body.removeChild(container); + + } + + }; + + } + +})(); + +(function () { + + var ROOTKEY = 'ueditor_preference'; + + UE.Editor.prototype.setPreferences = function(key,value){ + var obj = {}; + if (utils.isString(key)) { + obj[ key ] = value; + } else { + obj = key; + } + var data = LocalStorage.getLocalData(ROOTKEY); + if (data && (data = utils.str2json(data))) { + utils.extend(data, obj); + } else { + data = obj; + } + data && LocalStorage.saveLocalData(ROOTKEY, utils.json2str(data)); + }; + + UE.Editor.prototype.getPreferences = function(key){ + var data = LocalStorage.getLocalData(ROOTKEY); + if (data && (data = utils.str2json(data))) { + return key ? data[key] : data + } + return null; + }; + + UE.Editor.prototype.removePreferences = function (key) { + var data = LocalStorage.getLocalData(ROOTKEY); + if (data && (data = utils.str2json(data))) { + data[key] = undefined; + delete data[key] + } + data && LocalStorage.saveLocalData(ROOTKEY, utils.json2str(data)); + }; + +})(); + + +// plugins/defaultfilter.js +///import core +///plugin 编辑器默认的过滤转换机制 + +UE.plugins['defaultfilter'] = function () { + var me = this; + me.setOpt({ + 'allowDivTransToP':true, + 'disabledTableInTable':true + }); + //默认的过滤处理 + //进入编辑器的内容处理 + me.addInputRule(function (root) { + var allowDivTransToP = this.options.allowDivTransToP; + var val; + function tdParent(node){ + while(node && node.type == 'element'){ + if(node.tagName == 'td'){ + return true; + } + node = node.parentNode; + } + return false; + } + //进行默认的处理 + root.traversal(function (node) { + if (node.type == 'element') { + if (!dtd.$cdata[node.tagName] && me.options.autoClearEmptyNode && dtd.$inline[node.tagName] && !dtd.$empty[node.tagName] && (!node.attrs || utils.isEmptyObject(node.attrs))) { + if (!node.firstChild()) node.parentNode.removeChild(node); + else if (node.tagName == 'span' && (!node.attrs || utils.isEmptyObject(node.attrs))) { + node.parentNode.removeChild(node, true) + } + return; + } + switch (node.tagName) { + case 'style': + case 'script': + node.setAttr({ + cdata_tag: node.tagName, + cdata_data: (node.innerHTML() || ''), + '_ue_custom_node_':'true' + }); + node.tagName = 'div'; + node.innerHTML(''); + break; + case 'a': + if (val = node.getAttr('href')) { + node.setAttr('_href', val) + } + break; + case 'img': + //todo base64暂时去掉,后边做远程图片上传后,干掉这个 + if (val = node.getAttr('src')) { + if (/^data:/.test(val)) { + node.parentNode.removeChild(node); + break; + } + } + node.setAttr('_src', node.getAttr('src')); + break; + case 'span': + if (browser.webkit && (val = node.getStyle('white-space'))) { + if (/nowrap|normal/.test(val)) { + node.setStyle('white-space', ''); + if (me.options.autoClearEmptyNode && utils.isEmptyObject(node.attrs)) { + node.parentNode.removeChild(node, true) + } + } + } + val = node.getAttr('id'); + if(val && /^_baidu_bookmark_/i.test(val)){ + node.parentNode.removeChild(node) + } + break; + case 'p': + if (val = node.getAttr('align')) { + node.setAttr('align'); + node.setStyle('text-align', val) + } + //trace:3431 +// var cssStyle = node.getAttr('style'); +// if (cssStyle) { +// cssStyle = cssStyle.replace(/(margin|padding)[^;]+/g, ''); +// node.setAttr('style', cssStyle) +// +// } + //p标签不允许嵌套 + utils.each(node.children,function(n){ + if(n.type == 'element' && n.tagName == 'p'){ + var next = n.nextSibling(); + node.parentNode.insertAfter(n,node); + var last = n; + while(next){ + var tmp = next.nextSibling(); + node.parentNode.insertAfter(next,last); + last = next; + next = tmp; + } + return false; + } + }); + if (!node.firstChild()) { + node.innerHTML(browser.ie ? ' ' : '
    ') + } + break; + case 'div': + if(node.getAttr('cdata_tag')){ + break; + } + //针对代码这里不处理插入代码的div + val = node.getAttr('class'); + if(val && /^line number\d+/.test(val)){ + break; + } + if(!allowDivTransToP){ + break; + } + var tmpNode, p = UE.uNode.createElement('p'); + while (tmpNode = node.firstChild()) { + if (tmpNode.type == 'text' || !UE.dom.dtd.$block[tmpNode.tagName]) { + p.appendChild(tmpNode); + } else { + if (p.firstChild()) { + node.parentNode.insertBefore(p, node); + p = UE.uNode.createElement('p'); + } else { + node.parentNode.insertBefore(tmpNode, node); + } + } + } + if (p.firstChild()) { + node.parentNode.insertBefore(p, node); + } + node.parentNode.removeChild(node); + break; + case 'dl': + node.tagName = 'ul'; + break; + case 'dt': + case 'dd': + node.tagName = 'li'; + break; + case 'li': + var className = node.getAttr('class'); + if (!className || !/list\-/.test(className)) { + node.setAttr() + } + var tmpNodes = node.getNodesByTagName('ol ul'); + UE.utils.each(tmpNodes, function (n) { + node.parentNode.insertAfter(n, node); + }); + break; + case 'td': + case 'th': + case 'caption': + if(!node.children || !node.children.length){ + node.appendChild(browser.ie11below ? UE.uNode.createText(' ') : UE.uNode.createElement('br')) + } + break; + case 'table': + if(me.options.disabledTableInTable && tdParent(node)){ + node.parentNode.insertBefore(UE.uNode.createText(node.innerText()),node); + node.parentNode.removeChild(node) + } + } + + } +// if(node.type == 'comment'){ +// node.parentNode.removeChild(node); +// } + }) + + }); + + //从编辑器出去的内容处理 + me.addOutputRule(function (root) { + + var val; + root.traversal(function (node) { + if (node.type == 'element') { + + if (me.options.autoClearEmptyNode && dtd.$inline[node.tagName] && !dtd.$empty[node.tagName] && (!node.attrs || utils.isEmptyObject(node.attrs))) { + + if (!node.firstChild()) node.parentNode.removeChild(node); + else if (node.tagName == 'span' && (!node.attrs || utils.isEmptyObject(node.attrs))) { + node.parentNode.removeChild(node, true) + } + return; + } + switch (node.tagName) { + case 'div': + if (val = node.getAttr('cdata_tag')) { + node.tagName = val; + node.appendChild(UE.uNode.createText(node.getAttr('cdata_data'))); + node.setAttr({cdata_tag: '', cdata_data: '','_ue_custom_node_':''}); + } + break; + case 'a': + if (val = node.getAttr('_href')) { + node.setAttr({ + 'href': utils.html(val), + '_href': '' + }) + } + break; + break; + case 'span': + val = node.getAttr('id'); + if(val && /^_baidu_bookmark_/i.test(val)){ + node.parentNode.removeChild(node) + } + break; + case 'img': + if (val = node.getAttr('_src')) { + node.setAttr({ + 'src': node.getAttr('_src'), + '_src': '' + }) + } + + + } + } + + }) + + + }); +}; + + +// plugins/inserthtml.js +/** + * 插入html字符串插件 + * @file + * @since 1.2.6.1 + */ + +/** + * 插入html代码 + * @command inserthtml + * @method execCommand + * @param { String } cmd 命令字符串 + * @param { String } html 插入的html字符串 + * @remaind 插入的标签内容是在当前的选区位置上插入,如果当前是闭合状态,那直接插入内容, 如果当前是选中状态,将先清除当前选中内容后,再做插入 + * @warning 注意:该命令会对当前选区的位置,对插入的内容进行过滤转换处理。 过滤的规则遵循html语意化的原则。 + * @example + * ```javascript + * //xxx[BB]xxx 当前选区为非闭合选区,选中BB这两个文本 + * //执行命令,插入CC + * //插入后的效果 xxxCCxxx + * //

    xx|xxx

    当前选区为闭合状态 + * //插入

    CC

    + * //结果

    xx

    CC

    xxx

    + * //

    xxxx

    |

    xxx

    当前选区在两个p标签之间 + * //插入 xxxx + * //结果

    xxxx

    xxxx

    xxx

    + * ``` + */ + +UE.commands['inserthtml'] = { + execCommand: function (command,html,notNeedFilter){ + var me = this, + range, + div; + if(!html){ + return; + } + if(me.fireEvent('beforeinserthtml',html) === true){ + return; + } + range = me.selection.getRange(); + div = range.document.createElement( 'div' ); + div.style.display = 'inline'; + + if (!notNeedFilter) { + var root = UE.htmlparser(html); + //如果给了过滤规则就先进行过滤 + if(me.options.filterRules){ + UE.filterNode(root,me.options.filterRules); + } + //执行默认的处理 + me.filterInputRule(root); + html = root.toHtml() + } + div.innerHTML = utils.trim( html ); + + if ( !range.collapsed ) { + var tmpNode = range.startContainer; + if(domUtils.isFillChar(tmpNode)){ + range.setStartBefore(tmpNode) + } + tmpNode = range.endContainer; + if(domUtils.isFillChar(tmpNode)){ + range.setEndAfter(tmpNode) + } + range.txtToElmBoundary(); + //结束边界可能放到了br的前边,要把br包含进来 + // x[xxx]
    + if(range.endContainer && range.endContainer.nodeType == 1){ + tmpNode = range.endContainer.childNodes[range.endOffset]; + if(tmpNode && domUtils.isBr(tmpNode)){ + range.setEndAfter(tmpNode); + } + } + if(range.startOffset == 0){ + tmpNode = range.startContainer; + if(domUtils.isBoundaryNode(tmpNode,'firstChild') ){ + tmpNode = range.endContainer; + if(range.endOffset == (tmpNode.nodeType == 3 ? tmpNode.nodeValue.length : tmpNode.childNodes.length) && domUtils.isBoundaryNode(tmpNode,'lastChild')){ + me.body.innerHTML = '

    '+(browser.ie ? '' : '
    ')+'

    '; + range.setStart(me.body.firstChild,0).collapse(true) + + } + } + } + !range.collapsed && range.deleteContents(); + if(range.startContainer.nodeType == 1){ + var child = range.startContainer.childNodes[range.startOffset],pre; + if(child && domUtils.isBlockElm(child) && (pre = child.previousSibling) && domUtils.isBlockElm(pre)){ + range.setEnd(pre,pre.childNodes.length).collapse(); + while(child.firstChild){ + pre.appendChild(child.firstChild); + } + domUtils.remove(child); + } + } + + } + + + var child,parent,pre,tmp,hadBreak = 0, nextNode; + //如果当前位置选中了fillchar要干掉,要不会产生空行 + if(range.inFillChar()){ + child = range.startContainer; + if(domUtils.isFillChar(child)){ + range.setStartBefore(child).collapse(true); + domUtils.remove(child); + }else if(domUtils.isFillChar(child,true)){ + child.nodeValue = child.nodeValue.replace(fillCharReg,''); + range.startOffset--; + range.collapsed && range.collapse(true) + } + } + //列表单独处理 + var li = domUtils.findParentByTagName(range.startContainer,'li',true); + if(li){ + var next,last; + while(child = div.firstChild){ + //针对hr单独处理一下先 + while(child && (child.nodeType == 3 || !domUtils.isBlockElm(child) || child.tagName=='HR' )){ + next = child.nextSibling; + range.insertNode( child).collapse(); + last = child; + child = next; + + } + if(child){ + if(/^(ol|ul)$/i.test(child.tagName)){ + while(child.firstChild){ + last = child.firstChild; + domUtils.insertAfter(li,child.firstChild); + li = li.nextSibling; + } + domUtils.remove(child) + }else{ + var tmpLi; + next = child.nextSibling; + tmpLi = me.document.createElement('li'); + domUtils.insertAfter(li,tmpLi); + tmpLi.appendChild(child); + last = child; + child = next; + li = tmpLi; + } + } + } + li = domUtils.findParentByTagName(range.startContainer,'li',true); + if(domUtils.isEmptyBlock(li)){ + domUtils.remove(li) + } + if(last){ + + range.setStartAfter(last).collapse(true).select(true) + } + }else{ + while ( child = div.firstChild ) { + if(hadBreak){ + var p = me.document.createElement('p'); + while(child && (child.nodeType == 3 || !dtd.$block[child.tagName])){ + nextNode = child.nextSibling; + p.appendChild(child); + child = nextNode; + } + if(p.firstChild){ + + child = p + } + } + range.insertNode( child ); + nextNode = child.nextSibling; + if ( !hadBreak && child.nodeType == domUtils.NODE_ELEMENT && domUtils.isBlockElm( child ) ){ + + parent = domUtils.findParent( child,function ( node ){ return domUtils.isBlockElm( node ); } ); + if ( parent && parent.tagName.toLowerCase() != 'body' && !(dtd[parent.tagName][child.nodeName] && child.parentNode === parent)){ + if(!dtd[parent.tagName][child.nodeName]){ + pre = parent; + }else{ + tmp = child.parentNode; + while (tmp !== parent){ + pre = tmp; + tmp = tmp.parentNode; + + } + } + + + domUtils.breakParent( child, pre || tmp ); + //去掉break后前一个多余的节点

    |<[p> ==>

    |

    + var pre = child.previousSibling; + domUtils.trimWhiteTextNode(pre); + if(!pre.childNodes.length){ + domUtils.remove(pre); + } + //trace:2012,在非ie的情况,切开后剩下的节点有可能不能点入光标添加br占位 + + if(!browser.ie && + (next = child.nextSibling) && + domUtils.isBlockElm(next) && + next.lastChild && + !domUtils.isBr(next.lastChild)){ + next.appendChild(me.document.createElement('br')); + } + hadBreak = 1; + } + } + var next = child.nextSibling; + if(!div.firstChild && next && domUtils.isBlockElm(next)){ + + range.setStart(next,0).collapse(true); + break; + } + range.setEndAfter( child ).collapse(); + + } + + child = range.startContainer; + + if(nextNode && domUtils.isBr(nextNode)){ + domUtils.remove(nextNode) + } + //用chrome可能有空白展位符 + if(domUtils.isBlockElm(child) && domUtils.isEmptyNode(child)){ + if(nextNode = child.nextSibling){ + domUtils.remove(child); + if(nextNode.nodeType == 1 && dtd.$block[nextNode.tagName]){ + + range.setStart(nextNode,0).collapse(true).shrinkBoundary() + } + }else{ + + try{ + child.innerHTML = browser.ie ? domUtils.fillChar : '
    '; + }catch(e){ + range.setStartBefore(child); + domUtils.remove(child) + } + + } + + } + //加上true因为在删除表情等时会删两次,第一次是删的fillData + try{ + range.select(true); + }catch(e){} + + } + + + + setTimeout(function(){ + range = me.selection.getRange(); + range.scrollToView(me.autoHeightEnabled,me.autoHeightEnabled ? domUtils.getXY(me.iframe).y:0); + me.fireEvent('afterinserthtml', html); + },200); + } +}; + + +// plugins/autotypeset.js +/** + * 自动排版 + * @file + * @since 1.2.6.1 + */ + +/** + * 对当前编辑器的内容执行自动排版, 排版的行为根据config配置文件里的“autotypeset”选项进行控制。 + * @command autotypeset + * @method execCommand + * @param { String } cmd 命令字符串 + * @example + * ```javascript + * editor.execCommand( 'autotypeset' ); + * ``` + */ + +UE.plugins['autotypeset'] = function(){ + + this.setOpt({'autotypeset': { + mergeEmptyline: true, //合并空行 + removeClass: true, //去掉冗余的class + removeEmptyline: false, //去掉空行 + textAlign:"left", //段落的排版方式,可以是 left,right,center,justify 去掉这个属性表示不执行排版 + imageBlockLine: 'center', //图片的浮动方式,独占一行剧中,左右浮动,默认: center,left,right,none 去掉这个属性表示不执行排版 + pasteFilter: false, //根据规则过滤没事粘贴进来的内容 + clearFontSize: false, //去掉所有的内嵌字号,使用编辑器默认的字号 + clearFontFamily: false, //去掉所有的内嵌字体,使用编辑器默认的字体 + removeEmptyNode: false, // 去掉空节点 + //可以去掉的标签 + removeTagNames: utils.extend({div:1},dtd.$removeEmpty), + indent: false, // 行首缩进 + indentValue : '2em', //行首缩进的大小 + bdc2sb: false, + tobdc: false + }}); + + var me = this, + opt = me.options.autotypeset, + remainClass = { + 'selectTdClass':1, + 'pagebreak':1, + 'anchorclass':1 + }, + remainTag = { + 'li':1 + }, + tags = { + div:1, + p:1, + //trace:2183 这些也认为是行 + blockquote:1,center:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1, + span:1 + }, + highlightCont; + //升级了版本,但配置项目里没有autotypeset + if(!opt){ + return; + } + + readLocalOpts(); + + function isLine(node,notEmpty){ + if(!node || node.nodeType == 3) + return 0; + if(domUtils.isBr(node)) + return 1; + if(node && node.parentNode && tags[node.tagName.toLowerCase()]){ + if(highlightCont && highlightCont.contains(node) + || + node.getAttribute('pagebreak') + ){ + return 0; + } + + return notEmpty ? !domUtils.isEmptyBlock(node) : domUtils.isEmptyBlock(node,new RegExp('[\\s'+domUtils.fillChar + +']','g')); + } + } + + function removeNotAttributeSpan(node){ + if(!node.style.cssText){ + domUtils.removeAttributes(node,['style']); + if(node.tagName.toLowerCase() == 'span' && domUtils.hasNoAttributes(node)){ + domUtils.remove(node,true); + } + } + } + function autotype(type,html){ + + var me = this,cont; + if(html){ + if(!opt.pasteFilter){ + return; + } + cont = me.document.createElement('div'); + cont.innerHTML = html.html; + }else{ + cont = me.document.body; + } + var nodes = domUtils.getElementsByTagName(cont,'*'); + + // 行首缩进,段落方向,段间距,段内间距 + for(var i=0,ci;ci=nodes[i++];){ + + if(me.fireEvent('excludeNodeinautotype',ci) === true){ + continue; + } + //font-size + if(opt.clearFontSize && ci.style.fontSize){ + domUtils.removeStyle(ci,'font-size'); + + removeNotAttributeSpan(ci); + + } + //font-family + if(opt.clearFontFamily && ci.style.fontFamily){ + domUtils.removeStyle(ci,'font-family'); + removeNotAttributeSpan(ci); + } + + if(isLine(ci)){ + //合并空行 + if(opt.mergeEmptyline ){ + var next = ci.nextSibling,tmpNode,isBr = domUtils.isBr(ci); + while(isLine(next)){ + tmpNode = next; + next = tmpNode.nextSibling; + if(isBr && (!next || next && !domUtils.isBr(next))){ + break; + } + domUtils.remove(tmpNode); + } + + } + //去掉空行,保留占位的空行 + if(opt.removeEmptyline && domUtils.inDoc(ci,cont) && !remainTag[ci.parentNode.tagName.toLowerCase()] ){ + if(domUtils.isBr(ci)){ + next = ci.nextSibling; + if(next && !domUtils.isBr(next)){ + continue; + } + } + domUtils.remove(ci); + continue; + + } + + } + if(isLine(ci,true) && ci.tagName != 'SPAN'){ + if(opt.indent){ + ci.style.textIndent = opt.indentValue; + } + if(opt.textAlign){ + ci.style.textAlign = opt.textAlign; + } + // if(opt.lineHeight) + // ci.style.lineHeight = opt.lineHeight + 'cm'; + + } + + //去掉class,保留的class不去掉 + if(opt.removeClass && ci.className && !remainClass[ci.className.toLowerCase()]){ + + if(highlightCont && highlightCont.contains(ci)){ + continue; + } + domUtils.removeAttributes(ci,['class']); + } + + //表情不处理 + if(opt.imageBlockLine && ci.tagName.toLowerCase() == 'img' && !ci.getAttribute('emotion')){ + if(html){ + var img = ci; + switch (opt.imageBlockLine){ + case 'left': + case 'right': + case 'none': + var pN = img.parentNode,tmpNode,pre,next; + while(dtd.$inline[pN.tagName] || pN.tagName == 'A'){ + pN = pN.parentNode; + } + tmpNode = pN; + if(tmpNode.tagName == 'P' && domUtils.getStyle(tmpNode,'text-align') == 'center'){ + if(!domUtils.isBody(tmpNode) && domUtils.getChildCount(tmpNode,function(node){return !domUtils.isBr(node) && !domUtils.isWhitespace(node)}) == 1){ + pre = tmpNode.previousSibling; + next = tmpNode.nextSibling; + if(pre && next && pre.nodeType == 1 && next.nodeType == 1 && pre.tagName == next.tagName && domUtils.isBlockElm(pre)){ + pre.appendChild(tmpNode.firstChild); + while(next.firstChild){ + pre.appendChild(next.firstChild); + } + domUtils.remove(tmpNode); + domUtils.remove(next); + }else{ + domUtils.setStyle(tmpNode,'text-align',''); + } + + + } + + + } + domUtils.setStyle(img,'float', opt.imageBlockLine); + break; + case 'center': + if(me.queryCommandValue('imagefloat') != 'center'){ + pN = img.parentNode; + domUtils.setStyle(img,'float','none'); + tmpNode = img; + while(pN && domUtils.getChildCount(pN,function(node){return !domUtils.isBr(node) && !domUtils.isWhitespace(node)}) == 1 + && (dtd.$inline[pN.tagName] || pN.tagName == 'A')){ + tmpNode = pN; + pN = pN.parentNode; + } + var pNode = me.document.createElement('p'); + domUtils.setAttributes(pNode,{ + + style:'text-align:center' + }); + tmpNode.parentNode.insertBefore(pNode,tmpNode); + pNode.appendChild(tmpNode); + domUtils.setStyle(tmpNode,'float',''); + + } + + + } + } else { + var range = me.selection.getRange(); + range.selectNode(ci).select(); + me.execCommand('imagefloat', opt.imageBlockLine); + } + + } + + //去掉冗余的标签 + if(opt.removeEmptyNode){ + if(opt.removeTagNames[ci.tagName.toLowerCase()] && domUtils.hasNoAttributes(ci) && domUtils.isEmptyBlock(ci)){ + domUtils.remove(ci); + } + } + } + if(opt.tobdc){ + var root = UE.htmlparser(cont.innerHTML); + root.traversal(function(node){ + if(node.type == 'text'){ + node.data = ToDBC(node.data) + } + }); + cont.innerHTML = root.toHtml() + } + if(opt.bdc2sb){ + var root = UE.htmlparser(cont.innerHTML); + root.traversal(function(node){ + if(node.type == 'text'){ + node.data = DBC2SB(node.data) + } + }); + cont.innerHTML = root.toHtml() + } + if(html){ + html.html = cont.innerHTML; + } + } + if(opt.pasteFilter){ + me.addListener('beforepaste',autotype); + } + + function DBC2SB(str) { + var result = ''; + for (var i = 0; i < str.length; i++) { + var code = str.charCodeAt(i); //获取当前字符的unicode编码 + if (code >= 65281 && code <= 65373)//在这个unicode编码范围中的是所有的英文字母已经各种字符 + { + result += String.fromCharCode(str.charCodeAt(i) - 65248); //把全角字符的unicode编码转换为对应半角字符的unicode码 + } else if (code == 12288)//空格 + { + result += String.fromCharCode(str.charCodeAt(i) - 12288 + 32); + } else { + result += str.charAt(i); + } + } + return result; + } + function ToDBC(txtstring) { + txtstring = utils.html(txtstring); + var tmp = ""; + var mark = "";/*用于判断,如果是html尖括里的标记,则不进行全角的转换*/ + for (var i = 0; i < txtstring.length; i++) { + if (txtstring.charCodeAt(i) == 32) { + tmp = tmp + String.fromCharCode(12288); + } + else if (txtstring.charCodeAt(i) < 127) { + tmp = tmp + String.fromCharCode(txtstring.charCodeAt(i) + 65248); + } + else { + tmp += txtstring.charAt(i); + } + } + return tmp; + } + + function readLocalOpts() { + var cookieOpt = me.getPreferences('autotypeset'); + utils.extend(me.options.autotypeset, cookieOpt); + } + + me.commands['autotypeset'] = { + execCommand:function () { + me.removeListener('beforepaste',autotype); + if(opt.pasteFilter){ + me.addListener('beforepaste',autotype); + } + autotype.call(me) + } + + }; + +}; + + + +// plugins/autosubmit.js +/** + * 快捷键提交 + * @file + * @since 1.2.6.1 + */ + +/** + * 提交表单 + * @command autosubmit + * @method execCommand + * @param { String } cmd 命令字符串 + * @example + * ```javascript + * editor.execCommand( 'autosubmit' ); + * ``` + */ + +UE.plugin.register('autosubmit',function(){ + return { + shortcutkey:{ + "autosubmit":"ctrl+13" //手动提交 + }, + commands:{ + 'autosubmit':{ + execCommand:function () { + var me=this, + form = domUtils.findParentByTagName(me.iframe,"form", false); + if (form){ + if(me.fireEvent("beforesubmit")===false){ + return; + } + me.sync(); + form.submit(); + } + } + } + } + } +}); + +// plugins/background.js +/** + * 背景插件,为UEditor提供设置背景功能 + * @file + * @since 1.2.6.1 + */ +UE.plugin.register('background', function () { + var me = this, + cssRuleId = 'editor_background', + isSetColored, + reg = new RegExp('body[\\s]*\\{(.+)\\}', 'i'); + + function stringToObj(str) { + var obj = {}, styles = str.split(';'); + utils.each(styles, function (v) { + var index = v.indexOf(':'), + key = utils.trim(v.substr(0, index)).toLowerCase(); + key && (obj[key] = utils.trim(v.substr(index + 1) || '')); + }); + return obj; + } + + function setBackground(obj) { + if (obj) { + var styles = []; + for (var name in obj) { + if (obj.hasOwnProperty(name)) { + styles.push(name + ":" + obj[name] + '; '); + } + } + utils.cssRule(cssRuleId, styles.length ? ('body{' + styles.join("") + '}') : '', me.document); + } else { + utils.cssRule(cssRuleId, '', me.document) + } + } + //重写editor.hasContent方法 + + var orgFn = me.hasContents; + me.hasContents = function(){ + if(me.queryCommandValue('background')){ + return true + } + return orgFn.apply(me,arguments); + }; + return { + bindEvents: { + 'getAllHtml': function (type, headHtml) { + var body = this.body, + su = domUtils.getComputedStyle(body, "background-image"), + url = ""; + if (su.indexOf(me.options.imagePath) > 0) { + url = su.substring(su.indexOf(me.options.imagePath), su.length - 1).replace(/"|\(|\)/ig, ""); + } else { + url = su != "none" ? su.replace(/url\("?|"?\)/ig, "") : ""; + } + var html = ' '; + headHtml.push(html); + }, + 'aftersetcontent': function () { + if(isSetColored == false) setBackground(); + } + }, + inputRule: function (root) { + isSetColored = false; + utils.each(root.getNodesByTagName('p'), function (p) { + var styles = p.getAttr('data-background'); + if (styles) { + isSetColored = true; + setBackground(stringToObj(styles)); + p.parentNode.removeChild(p); + } + }) + }, + outputRule: function (root) { + var me = this, + styles = (utils.cssRule(cssRuleId, me.document) || '').replace(/[\n\r]+/g, '').match(reg); + if (styles) { + root.appendChild(UE.uNode.createElement('


    ')); + } + }, + commands: { + 'background': { + execCommand: function (cmd, obj) { + setBackground(obj); + }, + queryCommandValue: function () { + var me = this, + styles = (utils.cssRule(cssRuleId, me.document) || '').replace(/[\n\r]+/g, '').match(reg); + return styles ? stringToObj(styles[1]) : null; + }, + notNeedUndo: true + } + } + } +}); + +// plugins/image.js +/** + * 图片插入、排版插件 + * @file + * @since 1.2.6.1 + */ + +/** + * 图片对齐方式 + * @command imagefloat + * @method execCommand + * @remind 值center为独占一行居中 + * @param { String } cmd 命令字符串 + * @param { String } align 对齐方式,可传left、right、none、center + * @remaind center表示图片独占一行 + * @example + * ```javascript + * editor.execCommand( 'imagefloat', 'center' ); + * ``` + */ + +/** + * 如果选区所在位置是图片区域 + * @command imagefloat + * @method queryCommandValue + * @param { String } cmd 命令字符串 + * @return { String } 返回图片对齐方式 + * @example + * ```javascript + * editor.queryCommandValue( 'imagefloat' ); + * ``` + */ + +UE.commands['imagefloat'] = { + execCommand:function (cmd, align) { + var me = this, + range = me.selection.getRange(); + if (!range.collapsed) { + var img = range.getClosedNode(); + if (img && img.tagName == 'IMG') { + switch (align) { + case 'left': + case 'right': + case 'none': + var pN = img.parentNode, tmpNode, pre, next; + while (dtd.$inline[pN.tagName] || pN.tagName == 'A') { + pN = pN.parentNode; + } + tmpNode = pN; + if (tmpNode.tagName == 'P' && domUtils.getStyle(tmpNode, 'text-align') == 'center') { + if (!domUtils.isBody(tmpNode) && domUtils.getChildCount(tmpNode, function (node) { + return !domUtils.isBr(node) && !domUtils.isWhitespace(node); + }) == 1) { + pre = tmpNode.previousSibling; + next = tmpNode.nextSibling; + if (pre && next && pre.nodeType == 1 && next.nodeType == 1 && pre.tagName == next.tagName && domUtils.isBlockElm(pre)) { + pre.appendChild(tmpNode.firstChild); + while (next.firstChild) { + pre.appendChild(next.firstChild); + } + domUtils.remove(tmpNode); + domUtils.remove(next); + } else { + domUtils.setStyle(tmpNode, 'text-align', ''); + } + + + } + + range.selectNode(img).select(); + } + domUtils.setStyle(img, 'float', align == 'none' ? '' : align); + if(align == 'none'){ + domUtils.removeAttributes(img,'align'); + } + + break; + case 'center': + if (me.queryCommandValue('imagefloat') != 'center') { + pN = img.parentNode; + domUtils.setStyle(img, 'float', ''); + domUtils.removeAttributes(img,'align'); + tmpNode = img; + while (pN && domUtils.getChildCount(pN, function (node) { + return !domUtils.isBr(node) && !domUtils.isWhitespace(node); + }) == 1 + && (dtd.$inline[pN.tagName] || pN.tagName == 'A')) { + tmpNode = pN; + pN = pN.parentNode; + } + range.setStartBefore(tmpNode).setCursor(false); + pN = me.document.createElement('div'); + pN.appendChild(tmpNode); + domUtils.setStyle(tmpNode, 'float', ''); + + me.execCommand('insertHtml', '

    ' + pN.innerHTML + '

    '); + + tmpNode = me.document.getElementById('_img_parent_tmp'); + tmpNode.removeAttribute('id'); + tmpNode = tmpNode.firstChild; + range.selectNode(tmpNode).select(); + //去掉后边多余的元素 + next = tmpNode.parentNode.nextSibling; + if (next && domUtils.isEmptyNode(next)) { + domUtils.remove(next); + } + + } + + break; + } + + } + } + }, + queryCommandValue:function () { + var range = this.selection.getRange(), + startNode, floatStyle; + if (range.collapsed) { + return 'none'; + } + startNode = range.getClosedNode(); + if (startNode && startNode.nodeType == 1 && startNode.tagName == 'IMG') { + floatStyle = domUtils.getComputedStyle(startNode, 'float') || startNode.getAttribute('align'); + + if (floatStyle == 'none') { + floatStyle = domUtils.getComputedStyle(startNode.parentNode, 'text-align') == 'center' ? 'center' : floatStyle; + } + return { + left:1, + right:1, + center:1 + }[floatStyle] ? floatStyle : 'none'; + } + return 'none'; + + + }, + queryCommandState:function () { + var range = this.selection.getRange(), + startNode; + + if (range.collapsed) return -1; + + startNode = range.getClosedNode(); + if (startNode && startNode.nodeType == 1 && startNode.tagName == 'IMG') { + return 0; + } + return -1; + } +}; + + +/** + * 插入图片 + * @command insertimage + * @method execCommand + * @param { String } cmd 命令字符串 + * @param { Object } opt 属性键值对,这些属性都将被复制到当前插入图片 + * @remind 该命令第二个参数可接受一个图片配置项对象的数组,可以插入多张图片, + * 此时数组的每一个元素都是一个Object类型的图片属性集合。 + * @example + * ```javascript + * editor.execCommand( 'insertimage', { + * src:'a/b/c.jpg', + * width:'100', + * height:'100' + * } ); + * ``` + * @example + * ```javascript + * editor.execCommand( 'insertimage', [{ + * src:'a/b/c.jpg', + * width:'100', + * height:'100' + * },{ + * src:'a/b/d.jpg', + * width:'100', + * height:'100' + * }] ); + * ``` + */ + +UE.commands['insertimage'] = { + execCommand:function (cmd, opt) { + + opt = utils.isArray(opt) ? opt : [opt]; + if (!opt.length) { + return; + } + var me = this, + range = me.selection.getRange(), + img = range.getClosedNode(); + + if(me.fireEvent('beforeinsertimage', opt) === true){ + return; + } + + function unhtmlData(imgCi) { + + utils.each('width,height,border,hspace,vspace'.split(','), function (item) { + + if (imgCi[item]) { + imgCi[item] = parseInt(imgCi[item], 10) || 0; + } + }); + + utils.each('src,_src'.split(','), function (item) { + + if (imgCi[item]) { + imgCi[item] = utils.unhtmlForUrl(imgCi[item]); + } + }); + utils.each('title,alt'.split(','), function (item) { + + if (imgCi[item]) { + imgCi[item] = utils.unhtml(imgCi[item]); + } + }); + } + + if (img && /img/i.test(img.tagName) && (img.className != "edui-faked-video" || img.className.indexOf("edui-upload-video")!=-1) && !img.getAttribute("word_img")) { + var first = opt.shift(); + var floatStyle = first['floatStyle']; + delete first['floatStyle']; +//// img.style.border = (first.border||0) +"px solid #000"; +//// img.style.margin = (first.margin||0) +"px"; +// img.style.cssText += ';margin:' + (first.margin||0) +"px;" + 'border:' + (first.border||0) +"px solid #000"; + domUtils.setAttributes(img, first); + me.execCommand('imagefloat', floatStyle); + if (opt.length > 0) { + range.setStartAfter(img).setCursor(false, true); + me.execCommand('insertimage', opt); + } + + } else { + var html = [], str = '', ci; + ci = opt[0]; + if (opt.length == 1) { + unhtmlData(ci); + + str = '' + ci.alt + ''; + if (ci['floatStyle'] == 'center') { + str = '

    ' + str + '

    '; + } + html.push(str); + + } else { + for (var i = 0; ci = opt[i++];) { + unhtmlData(ci); + str = '

    '; + html.push(str); + } + } + + me.execCommand('insertHtml', html.join('')); + } + + me.fireEvent('afterinsertimage', opt) + } +}; + + +// plugins/justify.js +/** + * 段落格式 + * @file + * @since 1.2.6.1 + */ + +/** + * 段落对齐方式 + * @command justify + * @method execCommand + * @param { String } cmd 命令字符串 + * @param { String } align 对齐方式:left => 居左,right => 居右,center => 居中,justify => 两端对齐 + * @example + * ```javascript + * editor.execCommand( 'justify', 'center' ); + * ``` + */ +/** + * 如果选区所在位置是段落区域,返回当前段落对齐方式 + * @command justify + * @method queryCommandValue + * @param { String } cmd 命令字符串 + * @return { String } 返回段落对齐方式 + * @example + * ```javascript + * editor.queryCommandValue( 'justify' ); + * ``` + */ + +UE.plugins['justify']=function(){ + var me=this, + block = domUtils.isBlockElm, + defaultValue = { + left:1, + right:1, + center:1, + justify:1 + }, + doJustify = function (range, style) { + var bookmark = range.createBookmark(), + filterFn = function (node) { + return node.nodeType == 1 ? node.tagName.toLowerCase() != 'br' && !domUtils.isBookmarkNode(node) : !domUtils.isWhitespace(node); + }; + + range.enlarge(true); + var bookmark2 = range.createBookmark(), + current = domUtils.getNextDomNode(bookmark2.start, false, filterFn), + tmpRange = range.cloneRange(), + tmpNode; + while (current && !(domUtils.getPosition(current, bookmark2.end) & domUtils.POSITION_FOLLOWING)) { + if (current.nodeType == 3 || !block(current)) { + tmpRange.setStartBefore(current); + while (current && current !== bookmark2.end && !block(current)) { + tmpNode = current; + current = domUtils.getNextDomNode(current, false, null, function (node) { + return !block(node); + }); + } + tmpRange.setEndAfter(tmpNode); + var common = tmpRange.getCommonAncestor(); + if (!domUtils.isBody(common) && block(common)) { + domUtils.setStyles(common, utils.isString(style) ? {'text-align':style} : style); + current = common; + } else { + var p = range.document.createElement('p'); + domUtils.setStyles(p, utils.isString(style) ? {'text-align':style} : style); + var frag = tmpRange.extractContents(); + p.appendChild(frag); + tmpRange.insertNode(p); + current = p; + } + current = domUtils.getNextDomNode(current, false, filterFn); + } else { + current = domUtils.getNextDomNode(current, true, filterFn); + } + } + return range.moveToBookmark(bookmark2).moveToBookmark(bookmark); + }; + + UE.commands['justify'] = { + execCommand:function (cmdName, align) { + var range = this.selection.getRange(), + txt; + + //闭合时单独处理 + if (range.collapsed) { + txt = this.document.createTextNode('p'); + range.insertNode(txt); + } + doJustify(range, align); + if (txt) { + range.setStartBefore(txt).collapse(true); + domUtils.remove(txt); + } + + range.select(); + + + return true; + }, + queryCommandValue:function () { + var startNode = this.selection.getStart(), + value = domUtils.getComputedStyle(startNode, 'text-align'); + return defaultValue[value] ? value : 'left'; + }, + queryCommandState:function () { + var start = this.selection.getStart(), + cell = start && domUtils.findParentByTagName(start, ["td", "th","caption"], true); + + return cell? -1:0; + } + + }; +}; + + +// plugins/font.js +/** + * 字体颜色,背景色,字号,字体,下划线,删除线 + * @file + * @since 1.2.6.1 + */ + +/** + * 字体颜色 + * @command forecolor + * @method execCommand + * @param { String } cmd 命令字符串 + * @param { String } value 色值(必须十六进制) + * @example + * ```javascript + * editor.execCommand( 'forecolor', '#000' ); + * ``` + */ +/** + * 返回选区字体颜色 + * @command forecolor + * @method queryCommandValue + * @param { String } cmd 命令字符串 + * @return { String } 返回字体颜色 + * @example + * ```javascript + * editor.queryCommandValue( 'forecolor' ); + * ``` + */ + +/** + * 字体背景颜色 + * @command backcolor + * @method execCommand + * @param { String } cmd 命令字符串 + * @param { String } value 色值(必须十六进制) + * @example + * ```javascript + * editor.execCommand( 'backcolor', '#000' ); + * ``` + */ +/** + * 返回选区字体颜色 + * @command backcolor + * @method queryCommandValue + * @param { String } cmd 命令字符串 + * @return { String } 返回字体背景颜色 + * @example + * ```javascript + * editor.queryCommandValue( 'backcolor' ); + * ``` + */ + +/** + * 字体大小 + * @command fontsize + * @method execCommand + * @param { String } cmd 命令字符串 + * @param { String } value 字体大小 + * @example + * ```javascript + * editor.execCommand( 'fontsize', '14px' ); + * ``` + */ +/** + * 返回选区字体大小 + * @command fontsize + * @method queryCommandValue + * @param { String } cmd 命令字符串 + * @return { String } 返回字体大小 + * @example + * ```javascript + * editor.queryCommandValue( 'fontsize' ); + * ``` + */ + +/** + * 字体样式 + * @command fontfamily + * @method execCommand + * @param { String } cmd 命令字符串 + * @param { String } value 字体样式 + * @example + * ```javascript + * editor.execCommand( 'fontfamily', '微软雅黑' ); + * ``` + */ +/** + * 返回选区字体样式 + * @command fontfamily + * @method queryCommandValue + * @param { String } cmd 命令字符串 + * @return { String } 返回字体样式 + * @example + * ```javascript + * editor.queryCommandValue( 'fontfamily' ); + * ``` + */ + +/** + * 字体下划线,与删除线互斥 + * @command underline + * @method execCommand + * @param { String } cmd 命令字符串 + * @example + * ```javascript + * editor.execCommand( 'underline' ); + * ``` + */ + +/** + * 字体删除线,与下划线互斥 + * @command strikethrough + * @method execCommand + * @param { String } cmd 命令字符串 + * @example + * ```javascript + * editor.execCommand( 'strikethrough' ); + * ``` + */ + +/** + * 字体边框 + * @command fontborder + * @method execCommand + * @param { String } cmd 命令字符串 + * @example + * ```javascript + * editor.execCommand( 'fontborder' ); + * ``` + */ + +UE.plugins['font'] = function () { + var me = this, + fonts = { + 'forecolor': 'color', + 'backcolor': 'background-color', + 'fontsize': 'font-size', + 'fontfamily': 'font-family', + 'underline': 'text-decoration', + 'strikethrough': 'text-decoration', + 'fontborder': 'border' + }, + needCmd = {'underline': 1, 'strikethrough': 1, 'fontborder': 1}, + needSetChild = { + 'forecolor': 'color', + 'backcolor': 'background-color', + 'fontsize': 'font-size', + 'fontfamily': 'font-family' + + }; + me.setOpt({ + 'fontfamily': [ + { name: 'songti', val: '宋体,SimSun'}, + { name: 'yahei', val: '微软雅黑,Microsoft YaHei'}, + { name: 'kaiti', val: '楷体,楷体_GB2312, SimKai'}, + { name: 'heiti', val: '黑体, SimHei'}, + { name: 'lishu', val: '隶书, SimLi'}, + { name: 'andaleMono', val: 'andale mono'}, + { name: 'arial', val: 'arial, helvetica,sans-serif'}, + { name: 'arialBlack', val: 'arial black,avant garde'}, + { name: 'comicSansMs', val: 'comic sans ms'}, + { name: 'impact', val: 'impact,chicago'}, + { name: 'timesNewRoman', val: 'times new roman'} + ], + 'fontsize': [10, 11, 12, 14, 16, 18, 20, 24, 36] + }); + + function mergeWithParent(node){ + var parent; + while(parent = node.parentNode){ + if(parent.tagName == 'SPAN' && domUtils.getChildCount(parent,function(child){ + return !domUtils.isBookmarkNode(child) && !domUtils.isBr(child) + }) == 1) { + parent.style.cssText += node.style.cssText; + domUtils.remove(node,true); + node = parent; + + }else{ + break; + } + } + + } + function mergeChild(rng,cmdName,value){ + if(needSetChild[cmdName]){ + rng.adjustmentBoundary(); + if(!rng.collapsed && rng.startContainer.nodeType == 1){ + var start = rng.startContainer.childNodes[rng.startOffset]; + if(start && domUtils.isTagNode(start,'span')){ + var bk = rng.createBookmark(); + utils.each(domUtils.getElementsByTagName(start, 'span'), function (span) { + if (!span.parentNode || domUtils.isBookmarkNode(span))return; + if(cmdName == 'backcolor' && domUtils.getComputedStyle(span,'background-color').toLowerCase() === value){ + return; + } + domUtils.removeStyle(span,needSetChild[cmdName]); + if(span.style.cssText.replace(/^\s+$/,'').length == 0){ + domUtils.remove(span,true) + } + }); + rng.moveToBookmark(bk) + } + } + } + + } + function mergesibling(rng,cmdName,value) { + var collapsed = rng.collapsed, + bk = rng.createBookmark(), common; + if (collapsed) { + common = bk.start.parentNode; + while (dtd.$inline[common.tagName]) { + common = common.parentNode; + } + } else { + common = domUtils.getCommonAncestor(bk.start, bk.end); + } + utils.each(domUtils.getElementsByTagName(common, 'span'), function (span) { + if (!span.parentNode || domUtils.isBookmarkNode(span))return; + if (/\s*border\s*:\s*none;?\s*/i.test(span.style.cssText)) { + if(/^\s*border\s*:\s*none;?\s*$/.test(span.style.cssText)){ + domUtils.remove(span, true); + }else{ + domUtils.removeStyle(span,'border'); + } + return + } + if (/border/i.test(span.style.cssText) && span.parentNode.tagName == 'SPAN' && /border/i.test(span.parentNode.style.cssText)) { + span.style.cssText = span.style.cssText.replace(/border[^:]*:[^;]+;?/gi, ''); + } + if(!(cmdName=='fontborder' && value=='none')){ + var next = span.nextSibling; + while (next && next.nodeType == 1 && next.tagName == 'SPAN' ) { + if(domUtils.isBookmarkNode(next) && cmdName == 'fontborder') { + span.appendChild(next); + next = span.nextSibling; + continue; + } + if (next.style.cssText == span.style.cssText) { + domUtils.moveChild(next, span); + domUtils.remove(next); + } + if (span.nextSibling === next) + break; + next = span.nextSibling; + } + } + + + mergeWithParent(span); + if(browser.ie && browser.version > 8 ){ + //拷贝父亲们的特别的属性,这里只做背景颜色的处理 + var parent = domUtils.findParent(span,function(n){return n.tagName == 'SPAN' && /background-color/.test(n.style.cssText)}); + if(parent && !/background-color/.test(span.style.cssText)){ + span.style.backgroundColor = parent.style.backgroundColor; + } + } + + }); + rng.moveToBookmark(bk); + mergeChild(rng,cmdName,value) + } + + me.addInputRule(function (root) { + utils.each(root.getNodesByTagName('u s del font strike'), function (node) { + if (node.tagName == 'font') { + var cssStyle = []; + for (var p in node.attrs) { + switch (p) { + case 'size': + cssStyle.push('font-size:' + + ({ + '1':'10', + '2':'12', + '3':'16', + '4':'18', + '5':'24', + '6':'32', + '7':'48' + }[node.attrs[p]] || node.attrs[p]) + 'px'); + break; + case 'color': + cssStyle.push('color:' + node.attrs[p]); + break; + case 'face': + cssStyle.push('font-family:' + node.attrs[p]); + break; + case 'style': + cssStyle.push(node.attrs[p]); + } + } + node.attrs = { + 'style': cssStyle.join(';') + }; + } else { + var val = node.tagName == 'u' ? 'underline' : 'line-through'; + node.attrs = { + 'style': (node.getAttr('style') || '') + 'text-decoration:' + val + ';' + } + } + node.tagName = 'span'; + }); +// utils.each(root.getNodesByTagName('span'), function (node) { +// var val; +// if(val = node.getAttr('class')){ +// if(/fontstrikethrough/.test(val)){ +// node.setStyle('text-decoration','line-through'); +// if(node.attrs['class']){ +// node.attrs['class'] = node.attrs['class'].replace(/fontstrikethrough/,''); +// }else{ +// node.setAttr('class') +// } +// } +// if(/fontborder/.test(val)){ +// node.setStyle('border','1px solid #000'); +// if(node.attrs['class']){ +// node.attrs['class'] = node.attrs['class'].replace(/fontborder/,''); +// }else{ +// node.setAttr('class') +// } +// } +// } +// }); + }); +// me.addOutputRule(function(root){ +// utils.each(root.getNodesByTagName('span'), function (node) { +// var val; +// if(val = node.getStyle('text-decoration')){ +// if(/line-through/.test(val)){ +// if(node.attrs['class']){ +// node.attrs['class'] += ' fontstrikethrough'; +// }else{ +// node.setAttr('class','fontstrikethrough') +// } +// } +// +// node.setStyle('text-decoration') +// } +// if(val = node.getStyle('border')){ +// if(/1px/.test(val) && /solid/.test(val)){ +// if(node.attrs['class']){ +// node.attrs['class'] += ' fontborder'; +// +// }else{ +// node.setAttr('class','fontborder') +// } +// } +// node.setStyle('border') +// +// } +// }); +// }); + for (var p in fonts) { + (function (cmd, style) { + UE.commands[cmd] = { + execCommand: function (cmdName, value) { + value = value || (this.queryCommandState(cmdName) ? 'none' : cmdName == 'underline' ? 'underline' : + cmdName == 'fontborder' ? '1px solid #000' : + 'line-through'); + var me = this, + range = this.selection.getRange(), + text; + + if (value == 'default') { + + if (range.collapsed) { + text = me.document.createTextNode('font'); + range.insertNode(text).select(); + + } + me.execCommand('removeFormat', 'span,a', style); + if (text) { + range.setStartBefore(text).collapse(true); + domUtils.remove(text); + } + mergesibling(range,cmdName,value); + range.select() + } else { + if (!range.collapsed) { + if (needCmd[cmd] && me.queryCommandValue(cmd)) { + me.execCommand('removeFormat', 'span,a', style); + } + range = me.selection.getRange(); + + range.applyInlineStyle('span', {'style': style + ':' + value}); + mergesibling(range, cmdName,value); + range.select(); + } else { + + var span = domUtils.findParentByTagName(range.startContainer, 'span', true); + text = me.document.createTextNode('font'); + if (span && !span.children.length && !span[browser.ie ? 'innerText' : 'textContent'].replace(fillCharReg, '').length) { + //for ie hack when enter + range.insertNode(text); + if (needCmd[cmd]) { + range.selectNode(text).select(); + me.execCommand('removeFormat', 'span,a', style, null); + + span = domUtils.findParentByTagName(text, 'span', true); + range.setStartBefore(text); + + } + span && (span.style.cssText += ';' + style + ':' + value); + range.collapse(true).select(); + + + } else { + range.insertNode(text); + range.selectNode(text).select(); + span = range.document.createElement('span'); + + if (needCmd[cmd]) { + //a标签内的不处理跳过 + if (domUtils.findParentByTagName(text, 'a', true)) { + range.setStartBefore(text).setCursor(); + domUtils.remove(text); + return; + } + me.execCommand('removeFormat', 'span,a', style); + } + + span.style.cssText = style + ':' + value; + + + text.parentNode.insertBefore(span, text); + //修复,span套span 但样式不继承的问题 + if (!browser.ie || browser.ie && browser.version == 9) { + var spanParent = span.parentNode; + while (!domUtils.isBlockElm(spanParent)) { + if (spanParent.tagName == 'SPAN') { + //opera合并style不会加入";" + span.style.cssText = spanParent.style.cssText + ";" + span.style.cssText; + } + spanParent = spanParent.parentNode; + } + } + + + if (opera) { + setTimeout(function () { + range.setStart(span, 0).collapse(true); + mergesibling(range, cmdName,value); + range.select(); + }); + } else { + range.setStart(span, 0).collapse(true); + mergesibling(range,cmdName,value); + range.select(); + } + + //trace:981 + //domUtils.mergeToParent(span) + } + domUtils.remove(text); + } + + + } + return true; + }, + queryCommandValue: function (cmdName) { + var startNode = this.selection.getStart(); + + //trace:946 + if (cmdName == 'underline' || cmdName == 'strikethrough') { + var tmpNode = startNode, value; + while (tmpNode && !domUtils.isBlockElm(tmpNode) && !domUtils.isBody(tmpNode)) { + if (tmpNode.nodeType == 1) { + value = domUtils.getComputedStyle(tmpNode, style); + if (value != 'none') { + return value; + } + } + + tmpNode = tmpNode.parentNode; + } + return 'none'; + } + if (cmdName == 'fontborder') { + var tmp = startNode, val; + while (tmp && dtd.$inline[tmp.tagName]) { + if (val = domUtils.getComputedStyle(tmp, 'border')) { + + if (/1px/.test(val) && /solid/.test(val)) { + return val; + } + } + tmp = tmp.parentNode; + } + return '' + } + + if( cmdName == 'FontSize' ) { + var styleVal = domUtils.getComputedStyle(startNode, style), + tmp = /^([\d\.]+)(\w+)$/.exec( styleVal ); + + if( tmp ) { + + return Math.floor( tmp[1] ) + tmp[2]; + + } + + return styleVal; + + } + + return domUtils.getComputedStyle(startNode, style); + }, + queryCommandState: function (cmdName) { + if (!needCmd[cmdName]) + return 0; + var val = this.queryCommandValue(cmdName); + if (cmdName == 'fontborder') { + return /1px/.test(val) && /solid/.test(val) + } else { + return cmdName == 'underline' ? /underline/.test(val) : /line\-through/.test(val); + + } + + } + }; + })(p, fonts[p]); + } +}; + +// plugins/link.js +/** + * 超链接 + * @file + * @since 1.2.6.1 + */ + +/** + * 插入超链接 + * @command link + * @method execCommand + * @param { String } cmd 命令字符串 + * @param { Object } options 设置自定义属性,例如:url、title、target + * @example + * ```javascript + * editor.execCommand( 'link', '{ + * url:'ueditor.baidu.com', + * title:'ueditor', + * target:'_blank' + * }' ); + * ``` + */ +/** + * 返回当前选中的第一个超链接节点 + * @command link + * @method queryCommandValue + * @param { String } cmd 命令字符串 + * @return { Element } 超链接节点 + * @example + * ```javascript + * editor.queryCommandValue( 'link' ); + * ``` + */ + +/** + * 取消超链接 + * @command unlink + * @method execCommand + * @param { String } cmd 命令字符串 + * @example + * ```javascript + * editor.execCommand( 'unlink'); + * ``` + */ + +UE.plugins['link'] = function(){ + function optimize( range ) { + var start = range.startContainer,end = range.endContainer; + + if ( start = domUtils.findParentByTagName( start, 'a', true ) ) { + range.setStartBefore( start ); + } + if ( end = domUtils.findParentByTagName( end, 'a', true ) ) { + range.setEndAfter( end ); + } + } + + + UE.commands['unlink'] = { + execCommand : function() { + var range = this.selection.getRange(), + bookmark; + if(range.collapsed && !domUtils.findParentByTagName( range.startContainer, 'a', true )){ + return; + } + bookmark = range.createBookmark(); + optimize( range ); + range.removeInlineStyle( 'a' ).moveToBookmark( bookmark ).select(); + }, + queryCommandState : function(){ + return !this.highlight && this.queryCommandValue('link') ? 0 : -1; + } + + }; + function doLink(range,opt,me){ + var rngClone = range.cloneRange(), + link = me.queryCommandValue('link'); + optimize( range = range.adjustmentBoundary() ); + var start = range.startContainer; + if(start.nodeType == 1 && link){ + start = start.childNodes[range.startOffset]; + if(start && start.nodeType == 1 && start.tagName == 'A' && /^(?:https?|ftp|file)\s*:\s*\/\//.test(start[browser.ie?'innerText':'textContent'])){ + start[browser.ie ? 'innerText' : 'textContent'] = utils.html(opt.textValue||opt.href); + + } + } + if( !rngClone.collapsed || link){ + range.removeInlineStyle( 'a' ); + rngClone = range.cloneRange(); + } + + if ( rngClone.collapsed ) { + var a = range.document.createElement( 'a'), + text = ''; + if(opt.textValue){ + + text = utils.html(opt.textValue); + delete opt.textValue; + }else{ + text = utils.html(opt.href); + + } + domUtils.setAttributes( a, opt ); + start = domUtils.findParentByTagName( rngClone.startContainer, 'a', true ); + if(start && domUtils.isInNodeEndBoundary(rngClone,start)){ + range.setStartAfter(start).collapse(true); + + } + a[browser.ie ? 'innerText' : 'textContent'] = text; + range.insertNode(a).selectNode( a ); + } else { + range.applyInlineStyle( 'a', opt ); + + } + } + UE.commands['link'] = { + execCommand : function( cmdName, opt ) { + var range; + opt._href && (opt._href = utils.unhtml(opt._href,/[<">]/g)); + opt.href && (opt.href = utils.unhtml(opt.href,/[<">]/g)); + opt.textValue && (opt.textValue = utils.unhtml(opt.textValue,/[<">]/g)); + doLink(range=this.selection.getRange(),opt,this); + //闭合都不加占位符,如果加了会在a后边多个占位符节点,导致a是图片背景组成的列表,出现空白问题 + range.collapse().select(true); + + }, + queryCommandValue : function() { + var range = this.selection.getRange(), + node; + if ( range.collapsed ) { +// node = this.selection.getStart(); + //在ie下getstart()取值偏上了 + node = range.startContainer; + node = node.nodeType == 1 ? node : node.parentNode; + + if ( node && (node = domUtils.findParentByTagName( node, 'a', true )) && ! domUtils.isInNodeEndBoundary(range,node)) { + + return node; + } + } else { + //trace:1111 如果是

    xx

    startContainer是p就会找不到a + range.shrinkBoundary(); + var start = range.startContainer.nodeType == 3 || !range.startContainer.childNodes[range.startOffset] ? range.startContainer : range.startContainer.childNodes[range.startOffset], + end = range.endContainer.nodeType == 3 || range.endOffset == 0 ? range.endContainer : range.endContainer.childNodes[range.endOffset-1], + common = range.getCommonAncestor(); + node = domUtils.findParentByTagName( common, 'a', true ); + if ( !node && common.nodeType == 1){ + + var as = common.getElementsByTagName( 'a' ), + ps,pe; + + for ( var i = 0,ci; ci = as[i++]; ) { + ps = domUtils.getPosition( ci, start ),pe = domUtils.getPosition( ci,end); + if ( (ps & domUtils.POSITION_FOLLOWING || ps & domUtils.POSITION_CONTAINS) + && + (pe & domUtils.POSITION_PRECEDING || pe & domUtils.POSITION_CONTAINS) + ) { + node = ci; + break; + } + } + } + return node; + } + + }, + queryCommandState : function() { + //判断如果是视频的话连接不可用 + //fix 853 + var img = this.selection.getRange().getClosedNode(), + flag = img && (img.className == "edui-faked-video" || img.className.indexOf("edui-upload-video")!=-1); + return flag ? -1 : 0; + } + }; +}; + +// plugins/iframe.js +///import core +///import plugins\inserthtml.js +///commands 插入框架 +///commandsName InsertFrame +///commandsTitle 插入Iframe +///commandsDialog dialogs\insertframe + +UE.plugins['insertframe'] = function() { + var me =this; + function deleteIframe(){ + me._iframe && delete me._iframe; + } + + me.addListener("selectionchange",function(){ + deleteIframe(); + }); + +}; + + + +// plugins/scrawl.js +///import core +///commands 涂鸦 +///commandsName Scrawl +///commandsTitle 涂鸦 +///commandsDialog dialogs\scrawl +UE.commands['scrawl'] = { + queryCommandState : function(){ + return ( browser.ie && browser.version <= 8 ) ? -1 :0; + } +}; + + +// plugins/removeformat.js +/** + * 清除格式 + * @file + * @since 1.2.6.1 + */ + +/** + * 清除文字样式 + * @command removeformat + * @method execCommand + * @param { String } cmd 命令字符串 + * @param {String} tags 以逗号隔开的标签。如:strong + * @param {String} style 样式如:color + * @param {String} attrs 属性如:width + * @example + * ```javascript + * editor.execCommand( 'removeformat', 'strong','color','width' ); + * ``` + */ + +UE.plugins['removeformat'] = function(){ + var me = this; + me.setOpt({ + 'removeFormatTags': 'b,big,code,del,dfn,em,font,i,ins,kbd,q,samp,small,span,strike,strong,sub,sup,tt,u,var', + 'removeFormatAttributes':'class,style,lang,width,height,align,hspace,valign' + }); + me.commands['removeformat'] = { + execCommand : function( cmdName, tags, style, attrs,notIncludeA ) { + + var tagReg = new RegExp( '^(?:' + (tags || this.options.removeFormatTags).replace( /,/g, '|' ) + ')$', 'i' ) , + removeFormatAttributes = style ? [] : (attrs || this.options.removeFormatAttributes).split( ',' ), + range = new dom.Range( this.document ), + bookmark,node,parent, + filter = function( node ) { + return node.nodeType == 1; + }; + + function isRedundantSpan (node) { + if (node.nodeType == 3 || node.tagName.toLowerCase() != 'span'){ + return 0; + } + if (browser.ie) { + //ie 下判断实效,所以只能简单用style来判断 + //return node.style.cssText == '' ? 1 : 0; + var attrs = node.attributes; + if ( attrs.length ) { + for ( var i = 0,l = attrs.length; i + var node = range.startContainer, + tmp, + collapsed = range.collapsed; + while(node.nodeType == 1 && domUtils.isEmptyNode(node) && dtd.$removeEmpty[node.tagName]){ + tmp = node.parentNode; + range.setStartBefore(node); + //trace:937 + //更新结束边界 + if(range.startContainer === range.endContainer){ + range.endOffset--; + } + domUtils.remove(node); + node = tmp; + } + + if(!collapsed){ + node = range.endContainer; + while(node.nodeType == 1 && domUtils.isEmptyNode(node) && dtd.$removeEmpty[node.tagName]){ + tmp = node.parentNode; + range.setEndBefore(node); + domUtils.remove(node); + + node = tmp; + } + + + } + } + + + + range = this.selection.getRange(); + doRemove( range ); + range.select(); + + } + + }; + +}; + + +// plugins/blockquote.js +/** + * 添加引用 + * @file + * @since 1.2.6.1 + */ + +/** + * 添加引用 + * @command blockquote + * @method execCommand + * @param { String } cmd 命令字符串 + * @example + * ```javascript + * editor.execCommand( 'blockquote' ); + * ``` + */ + +/** + * 添加引用 + * @command blockquote + * @method execCommand + * @param { String } cmd 命令字符串 + * @param { Object } attrs 节点属性 + * @example + * ```javascript + * editor.execCommand( 'blockquote',{ + * style: "color: red;" + * } ); + * ``` + */ + + +UE.plugins['blockquote'] = function(){ + var me = this; + function getObj(editor){ + return domUtils.filterNodeList(editor.selection.getStartElementPath(),'blockquote'); + } + me.commands['blockquote'] = { + execCommand : function( cmdName, attrs ) { + var range = this.selection.getRange(), + obj = getObj(this), + blockquote = dtd.blockquote, + bookmark = range.createBookmark(); + + if ( obj ) { + + var start = range.startContainer, + startBlock = domUtils.isBlockElm(start) ? start : domUtils.findParent(start,function(node){return domUtils.isBlockElm(node)}), + + end = range.endContainer, + endBlock = domUtils.isBlockElm(end) ? end : domUtils.findParent(end,function(node){return domUtils.isBlockElm(node)}); + + //处理一下li + startBlock = domUtils.findParentByTagName(startBlock,'li',true) || startBlock; + endBlock = domUtils.findParentByTagName(endBlock,'li',true) || endBlock; + + + if(startBlock.tagName == 'LI' || startBlock.tagName == 'TD' || startBlock === obj || domUtils.isBody(startBlock)){ + domUtils.remove(obj,true); + }else{ + domUtils.breakParent(startBlock,obj); + } + + if(startBlock !== endBlock){ + obj = domUtils.findParentByTagName(endBlock,'blockquote'); + if(obj){ + if(endBlock.tagName == 'LI' || endBlock.tagName == 'TD'|| domUtils.isBody(endBlock)){ + obj.parentNode && domUtils.remove(obj,true); + }else{ + domUtils.breakParent(endBlock,obj); + } + + } + } + + var blockquotes = domUtils.getElementsByTagName(this.document,'blockquote'); + for(var i=0,bi;bi=blockquotes[i++];){ + if(!bi.childNodes.length){ + domUtils.remove(bi); + }else if(domUtils.getPosition(bi,startBlock)&domUtils.POSITION_FOLLOWING && domUtils.getPosition(bi,endBlock)&domUtils.POSITION_PRECEDING){ + domUtils.remove(bi,true); + } + } + + + + + } else { + + var tmpRange = range.cloneRange(), + node = tmpRange.startContainer.nodeType == 1 ? tmpRange.startContainer : tmpRange.startContainer.parentNode, + preNode = node, + doEnd = 1; + + //调整开始 + while ( 1 ) { + if ( domUtils.isBody(node) ) { + if ( preNode !== node ) { + if ( range.collapsed ) { + tmpRange.selectNode( preNode ); + doEnd = 0; + } else { + tmpRange.setStartBefore( preNode ); + } + }else{ + tmpRange.setStart(node,0); + } + + break; + } + if ( !blockquote[node.tagName] ) { + if ( range.collapsed ) { + tmpRange.selectNode( preNode ); + } else{ + tmpRange.setStartBefore( preNode); + } + break; + } + + preNode = node; + node = node.parentNode; + } + + //调整结束 + if ( doEnd ) { + preNode = node = node = tmpRange.endContainer.nodeType == 1 ? tmpRange.endContainer : tmpRange.endContainer.parentNode; + while ( 1 ) { + + if ( domUtils.isBody( node ) ) { + if ( preNode !== node ) { + + tmpRange.setEndAfter( preNode ); + + } else { + tmpRange.setEnd( node, node.childNodes.length ); + } + + break; + } + if ( !blockquote[node.tagName] ) { + tmpRange.setEndAfter( preNode ); + break; + } + + preNode = node; + node = node.parentNode; + } + + } + + + node = range.document.createElement( 'blockquote' ); + domUtils.setAttributes( node, attrs ); + node.appendChild( tmpRange.extractContents() ); + tmpRange.insertNode( node ); + //去除重复的 + var childs = domUtils.getElementsByTagName(node,'blockquote'); + for(var i=0,ci;ci=childs[i++];){ + if(ci.parentNode){ + domUtils.remove(ci,true); + } + } + + } + range.moveToBookmark( bookmark ).select(); + }, + queryCommandState : function() { + return getObj(this) ? 1 : 0; + } + }; +}; + + + +// plugins/convertcase.js +/** + * 大小写转换 + * @file + * @since 1.2.6.1 + */ + +/** + * 把选区内文本变大写,与“tolowercase”命令互斥 + * @command touppercase + * @method execCommand + * @param { String } cmd 命令字符串 + * @example + * ```javascript + * editor.execCommand( 'touppercase' ); + * ``` + */ + +/** + * 把选区内文本变小写,与“touppercase”命令互斥 + * @command tolowercase + * @method execCommand + * @param { String } cmd 命令字符串 + * @example + * ```javascript + * editor.execCommand( 'tolowercase' ); + * ``` + */ +UE.commands['touppercase'] = +UE.commands['tolowercase'] = { + execCommand:function (cmd) { + var me = this; + var rng = me.selection.getRange(); + if(rng.collapsed){ + return rng; + } + var bk = rng.createBookmark(), + bkEnd = bk.end, + filterFn = function( node ) { + return !domUtils.isBr(node) && !domUtils.isWhitespace( node ); + }, + curNode = domUtils.getNextDomNode( bk.start, false, filterFn ); + while ( curNode && (domUtils.getPosition( curNode, bkEnd ) & domUtils.POSITION_PRECEDING) ) { + + if ( curNode.nodeType == 3 ) { + curNode.nodeValue = curNode.nodeValue[cmd == 'touppercase' ? 'toUpperCase' : 'toLowerCase'](); + } + curNode = domUtils.getNextDomNode( curNode, true, filterFn ); + if(curNode === bkEnd){ + break; + } + + } + rng.moveToBookmark(bk).select(); + } +}; + + + +// plugins/indent.js +/** + * 首行缩进 + * @file + * @since 1.2.6.1 + */ + +/** + * 缩进 + * @command indent + * @method execCommand + * @param { String } cmd 命令字符串 + * @example + * ```javascript + * editor.execCommand( 'indent' ); + * ``` + */ +UE.commands['indent'] = { + execCommand : function() { + var me = this,value = me.queryCommandState("indent") ? "0em" : (me.options.indentValue || '2em'); + me.execCommand('Paragraph','p',{style:'text-indent:'+ value}); + }, + queryCommandState : function() { + var pN = domUtils.filterNodeList(this.selection.getStartElementPath(),'p h1 h2 h3 h4 h5 h6'); + return pN && pN.style.textIndent && parseInt(pN.style.textIndent) ? 1 : 0; + } + +}; + + +// plugins/print.js +/** + * 打印 + * @file + * @since 1.2.6.1 + */ + +/** + * 打印 + * @command print + * @method execCommand + * @param { String } cmd 命令字符串 + * @example + * ```javascript + * editor.execCommand( 'print' ); + * ``` + */ +UE.commands['print'] = { + execCommand : function(){ + this.window.print(); + }, + notNeedUndo : 1 +}; + + + +// plugins/preview.js +/** + * 预览 + * @file + * @since 1.2.6.1 + */ + +/** + * 预览 + * @command preview + * @method execCommand + * @param { String } cmd 命令字符串 + * @example + * ```javascript + * editor.execCommand( 'preview' ); + * ``` + */ +UE.commands['preview'] = { + execCommand : function(){ + var w = window.open('', '_blank', ''), + d = w.document; + d.open(); + d.write('
    '+this.getContent(null,null,true)+'
    '); + d.close(); + }, + notNeedUndo : 1 +}; + + +// plugins/selectall.js +/** + * 全选 + * @file + * @since 1.2.6.1 + */ + +/** + * 选中所有内容 + * @command selectall + * @method execCommand + * @param { String } cmd 命令字符串 + * @example + * ```javascript + * editor.execCommand( 'selectall' ); + * ``` + */ +UE.plugins['selectall'] = function(){ + var me = this; + me.commands['selectall'] = { + execCommand : function(){ + //去掉了原生的selectAll,因为会出现报错和当内容为空时,不能出现闭合状态的光标 + var me = this,body = me.body, + range = me.selection.getRange(); + range.selectNodeContents(body); + if(domUtils.isEmptyBlock(body)){ + //opera不能自动合并到元素的里边,要手动处理一下 + if(browser.opera && body.firstChild && body.firstChild.nodeType == 1){ + range.setStartAtFirst(body.firstChild); + } + range.collapse(true); + } + range.select(true); + }, + notNeedUndo : 1 + }; + + + //快捷键 + me.addshortcutkey({ + "selectAll" : "ctrl+65" + }); +}; + + +// plugins/paragraph.js +/** + * 段落样式 + * @file + * @since 1.2.6.1 + */ + +/** + * 段落格式 + * @command paragraph + * @method execCommand + * @param { String } cmd 命令字符串 + * @param {String} style 标签值为:'p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6' + * @param {Object} attrs 标签的属性 + * @example + * ```javascript + * editor.execCommand( 'Paragraph','h1','{ + * class:'test' + * }' ); + * ``` + */ + +/** + * 返回选区内节点标签名 + * @command paragraph + * @method queryCommandValue + * @param { String } cmd 命令字符串 + * @return { String } 节点标签名 + * @example + * ```javascript + * editor.queryCommandValue( 'Paragraph' ); + * ``` + */ + +UE.plugins['paragraph'] = function() { + var me = this, + block = domUtils.isBlockElm, + notExchange = ['TD','LI','PRE'], + + doParagraph = function(range,style,attrs,sourceCmdName){ + var bookmark = range.createBookmark(), + filterFn = function( node ) { + return node.nodeType == 1 ? node.tagName.toLowerCase() != 'br' && !domUtils.isBookmarkNode(node) : !domUtils.isWhitespace( node ); + }, + para; + + range.enlarge( true ); + var bookmark2 = range.createBookmark(), + current = domUtils.getNextDomNode( bookmark2.start, false, filterFn ), + tmpRange = range.cloneRange(), + tmpNode; + while ( current && !(domUtils.getPosition( current, bookmark2.end ) & domUtils.POSITION_FOLLOWING) ) { + if ( current.nodeType == 3 || !block( current ) ) { + tmpRange.setStartBefore( current ); + while ( current && current !== bookmark2.end && !block( current ) ) { + tmpNode = current; + current = domUtils.getNextDomNode( current, false, null, function( node ) { + return !block( node ); + } ); + } + tmpRange.setEndAfter( tmpNode ); + + para = range.document.createElement( style ); + if(attrs){ + domUtils.setAttributes(para,attrs); + if(sourceCmdName && sourceCmdName == 'customstyle' && attrs.style){ + para.style.cssText = attrs.style; + } + } + para.appendChild( tmpRange.extractContents() ); + //需要内容占位 + if(domUtils.isEmptyNode(para)){ + domUtils.fillChar(range.document,para); + + } + + tmpRange.insertNode( para ); + + var parent = para.parentNode; + //如果para上一级是一个block元素且不是body,td就删除它 + if ( block( parent ) && !domUtils.isBody( para.parentNode ) && utils.indexOf(notExchange,parent.tagName)==-1) { + //存储dir,style + if(!(sourceCmdName && sourceCmdName == 'customstyle')){ + parent.getAttribute('dir') && para.setAttribute('dir',parent.getAttribute('dir')); + //trace:1070 + parent.style.cssText && (para.style.cssText = parent.style.cssText + ';' + para.style.cssText); + //trace:1030 + parent.style.textAlign && !para.style.textAlign && (para.style.textAlign = parent.style.textAlign); + parent.style.textIndent && !para.style.textIndent && (para.style.textIndent = parent.style.textIndent); + parent.style.padding && !para.style.padding && (para.style.padding = parent.style.padding); + } + + //trace:1706 选择的就是h1-6要删除 + if(attrs && /h\d/i.test(parent.tagName) && !/h\d/i.test(para.tagName) ){ + domUtils.setAttributes(parent,attrs); + if(sourceCmdName && sourceCmdName == 'customstyle' && attrs.style){ + parent.style.cssText = attrs.style; + } + domUtils.remove(para,true); + para = parent; + }else{ + domUtils.remove( para.parentNode, true ); + } + + } + if( utils.indexOf(notExchange,parent.tagName)!=-1){ + current = parent; + }else{ + current = para; + } + + + current = domUtils.getNextDomNode( current, false, filterFn ); + } else { + current = domUtils.getNextDomNode( current, true, filterFn ); + } + } + return range.moveToBookmark( bookmark2 ).moveToBookmark( bookmark ); + }; + me.setOpt('paragraph',{'p':'', 'h1':'', 'h2':'', 'h3':'', 'h4':'', 'h5':'', 'h6':''}); + me.commands['paragraph'] = { + execCommand : function( cmdName, style,attrs,sourceCmdName ) { + var range = this.selection.getRange(); + //闭合时单独处理 + if(range.collapsed){ + var txt = this.document.createTextNode('p'); + range.insertNode(txt); + //去掉冗余的fillchar + if(browser.ie){ + var node = txt.previousSibling; + if(node && domUtils.isWhitespace(node)){ + domUtils.remove(node); + } + node = txt.nextSibling; + if(node && domUtils.isWhitespace(node)){ + domUtils.remove(node); + } + } + + } + range = doParagraph(range,style,attrs,sourceCmdName); + if(txt){ + range.setStartBefore(txt).collapse(true); + pN = txt.parentNode; + + domUtils.remove(txt); + + if(domUtils.isBlockElm(pN)&&domUtils.isEmptyNode(pN)){ + domUtils.fillNode(this.document,pN); + } + + } + + if(browser.gecko && range.collapsed && range.startContainer.nodeType == 1){ + var child = range.startContainer.childNodes[range.startOffset]; + if(child && child.nodeType == 1 && child.tagName.toLowerCase() == style){ + range.setStart(child,0).collapse(true); + } + } + //trace:1097 原来有true,原因忘了,但去了就不能清除多余的占位符了 + range.select(); + + + return true; + }, + queryCommandValue : function() { + var node = domUtils.filterNodeList(this.selection.getStartElementPath(),'p h1 h2 h3 h4 h5 h6'); + return node ? node.tagName.toLowerCase() : ''; + } + }; +}; + + +// plugins/directionality.js +/** + * 设置文字输入的方向的插件 + * @file + * @since 1.2.6.1 + */ +(function() { + var block = domUtils.isBlockElm , + getObj = function(editor){ +// var startNode = editor.selection.getStart(), +// parents; +// if ( startNode ) { +// //查找所有的是block的父亲节点 +// parents = domUtils.findParents( startNode, true, block, true ); +// for ( var i = 0,ci; ci = parents[i++]; ) { +// if ( ci.getAttribute( 'dir' ) ) { +// return ci; +// } +// } +// } + return domUtils.filterNodeList(editor.selection.getStartElementPath(),function(n){return n && n.nodeType == 1 && n.getAttribute('dir')}); + + }, + doDirectionality = function(range,editor,forward){ + + var bookmark, + filterFn = function( node ) { + return node.nodeType == 1 ? !domUtils.isBookmarkNode(node) : !domUtils.isWhitespace(node); + }, + + obj = getObj( editor ); + + if ( obj && range.collapsed ) { + obj.setAttribute( 'dir', forward ); + return range; + } + bookmark = range.createBookmark(); + range.enlarge( true ); + var bookmark2 = range.createBookmark(), + current = domUtils.getNextDomNode( bookmark2.start, false, filterFn ), + tmpRange = range.cloneRange(), + tmpNode; + while ( current && !(domUtils.getPosition( current, bookmark2.end ) & domUtils.POSITION_FOLLOWING) ) { + if ( current.nodeType == 3 || !block( current ) ) { + tmpRange.setStartBefore( current ); + while ( current && current !== bookmark2.end && !block( current ) ) { + tmpNode = current; + current = domUtils.getNextDomNode( current, false, null, function( node ) { + return !block( node ); + } ); + } + tmpRange.setEndAfter( tmpNode ); + var common = tmpRange.getCommonAncestor(); + if ( !domUtils.isBody( common ) && block( common ) ) { + //遍历到了block节点 + common.setAttribute( 'dir', forward ); + current = common; + } else { + //没有遍历到,添加一个block节点 + var p = range.document.createElement( 'p' ); + p.setAttribute( 'dir', forward ); + var frag = tmpRange.extractContents(); + p.appendChild( frag ); + tmpRange.insertNode( p ); + current = p; + } + + current = domUtils.getNextDomNode( current, false, filterFn ); + } else { + current = domUtils.getNextDomNode( current, true, filterFn ); + } + } + return range.moveToBookmark( bookmark2 ).moveToBookmark( bookmark ); + }; + + /** + * 文字输入方向 + * @command directionality + * @method execCommand + * @param { String } cmdName 命令字符串 + * @param { String } forward 传入'ltr'表示从左向右输入,传入'rtl'表示从右向左输入 + * @example + * ```javascript + * editor.execCommand( 'directionality', 'ltr'); + * ``` + */ + + /** + * 查询当前选区的文字输入方向 + * @command directionality + * @method queryCommandValue + * @param { String } cmdName 命令字符串 + * @return { String } 返回'ltr'表示从左向右输入,返回'rtl'表示从右向左输入 + * @example + * ```javascript + * editor.queryCommandValue( 'directionality'); + * ``` + */ + UE.commands['directionality'] = { + execCommand : function( cmdName,forward ) { + var range = this.selection.getRange(); + //闭合时单独处理 + if(range.collapsed){ + var txt = this.document.createTextNode('d'); + range.insertNode(txt); + } + doDirectionality(range,this,forward); + if(txt){ + range.setStartBefore(txt).collapse(true); + domUtils.remove(txt); + } + + range.select(); + return true; + }, + queryCommandValue : function() { + var node = getObj(this); + return node ? node.getAttribute('dir') : 'ltr'; + } + }; +})(); + + + +// plugins/horizontal.js +/** + * 插入分割线插件 + * @file + * @since 1.2.6.1 + */ + +/** + * 插入分割线 + * @command horizontal + * @method execCommand + * @param { String } cmdName 命令字符串 + * @example + * ```javascript + * editor.execCommand( 'horizontal' ); + * ``` + */ +UE.plugins['horizontal'] = function(){ + var me = this; + me.commands['horizontal'] = { + execCommand : function( cmdName ) { + var me = this; + if(me.queryCommandState(cmdName)!==-1){ + me.execCommand('insertHtml','
    '); + var range = me.selection.getRange(), + start = range.startContainer; + if(start.nodeType == 1 && !start.childNodes[range.startOffset] ){ + + var tmp; + if(tmp = start.childNodes[range.startOffset - 1]){ + if(tmp.nodeType == 1 && tmp.tagName == 'HR'){ + if(me.options.enterTag == 'p'){ + tmp = me.document.createElement('p'); + range.insertNode(tmp); + range.setStart(tmp,0).setCursor(); + + }else{ + tmp = me.document.createElement('br'); + range.insertNode(tmp); + range.setStartBefore(tmp).setCursor(); + } + } + } + + } + return true; + } + + }, + //边界在table里不能加分隔线 + queryCommandState : function() { + return domUtils.filterNodeList(this.selection.getStartElementPath(),'table') ? -1 : 0; + } + }; +// me.addListener('delkeyup',function(){ +// var rng = this.selection.getRange(); +// if(browser.ie && browser.version > 8){ +// rng.txtToElmBoundary(true); +// if(domUtils.isStartInblock(rng)){ +// var tmpNode = rng.startContainer; +// var pre = tmpNode.previousSibling; +// if(pre && domUtils.isTagNode(pre,'hr')){ +// domUtils.remove(pre); +// rng.select(); +// return; +// } +// } +// } +// if(domUtils.isBody(rng.startContainer)){ +// var hr = rng.startContainer.childNodes[rng.startOffset -1]; +// if(hr && hr.nodeName == 'HR'){ +// var next = hr.nextSibling; +// if(next){ +// rng.setStart(next,0) +// }else if(hr.previousSibling){ +// rng.setStartAtLast(hr.previousSibling) +// }else{ +// var p = this.document.createElement('p'); +// hr.parentNode.insertBefore(p,hr); +// domUtils.fillNode(this.document,p); +// rng.setStart(p,0); +// } +// domUtils.remove(hr); +// rng.setCursor(false,true); +// } +// } +// }) + me.addListener('delkeydown',function(name,evt){ + var rng = this.selection.getRange(); + rng.txtToElmBoundary(true); + if(domUtils.isStartInblock(rng)){ + var tmpNode = rng.startContainer; + var pre = tmpNode.previousSibling; + if(pre && domUtils.isTagNode(pre,'hr')){ + domUtils.remove(pre); + rng.select(); + domUtils.preventDefault(evt); + return true; + + } + } + + }) +}; + + + +// plugins/time.js +/** + * 插入时间和日期 + * @file + * @since 1.2.6.1 + */ + +/** + * 插入时间,默认格式:12:59:59 + * @command time + * @method execCommand + * @param { String } cmd 命令字符串 + * @example + * ```javascript + * editor.execCommand( 'time'); + * ``` + */ + +/** + * 插入日期,默认格式:2013-08-30 + * @command date + * @method execCommand + * @param { String } cmd 命令字符串 + * @example + * ```javascript + * editor.execCommand( 'date'); + * ``` + */ +UE.commands['time'] = UE.commands["date"] = { + execCommand : function(cmd, format){ + var date = new Date; + + function formatTime(date, format) { + var hh = ('0' + date.getHours()).slice(-2), + ii = ('0' + date.getMinutes()).slice(-2), + ss = ('0' + date.getSeconds()).slice(-2); + format = format || 'hh:ii:ss'; + return format.replace(/hh/ig, hh).replace(/ii/ig, ii).replace(/ss/ig, ss); + } + function formatDate(date, format) { + var yyyy = ('000' + date.getFullYear()).slice(-4), + yy = yyyy.slice(-2), + mm = ('0' + (date.getMonth()+1)).slice(-2), + dd = ('0' + date.getDate()).slice(-2); + format = format || 'yyyy-mm-dd'; + return format.replace(/yyyy/ig, yyyy).replace(/yy/ig, yy).replace(/mm/ig, mm).replace(/dd/ig, dd); + } + + this.execCommand('insertHtml',cmd == "time" ? formatTime(date, format):formatDate(date, format) ); + } +}; + + +// plugins/rowspacing.js +/** + * 段前段后间距插件 + * @file + * @since 1.2.6.1 + */ + +/** + * 设置段间距 + * @command rowspacing + * @method execCommand + * @param { String } cmd 命令字符串 + * @param { String } value 段间距的值,以px为单位 + * @param { String } dir 间距位置,top或bottom,分别表示段前和段后 + * @example + * ```javascript + * editor.execCommand( 'rowspacing', '10', 'top' ); + * ``` + */ + +UE.plugins['rowspacing'] = function(){ + var me = this; + me.setOpt({ + 'rowspacingtop':['5', '10', '15', '20', '25'], + 'rowspacingbottom':['5', '10', '15', '20', '25'] + + }); + me.commands['rowspacing'] = { + execCommand : function( cmdName,value,dir ) { + this.execCommand('paragraph','p',{style:'margin-'+dir+':'+value + 'px'}); + return true; + }, + queryCommandValue : function(cmdName,dir) { + var pN = domUtils.filterNodeList(this.selection.getStartElementPath(),function(node){return domUtils.isBlockElm(node) }), + value; + //trace:1026 + if(pN){ + value = domUtils.getComputedStyle(pN,'margin-'+dir).replace(/[^\d]/g,''); + return !value ? 0 : value; + } + return 0; + + } + }; +}; + + + + +// plugins/lineheight.js +/** + * 设置行内间距 + * @file + * @since 1.2.6.1 + */ +UE.plugins['lineheight'] = function(){ + var me = this; + me.setOpt({'lineheight':['1', '1.5','1.75','2', '3', '4', '5']}); + + /** + * 行距 + * @command lineheight + * @method execCommand + * @param { String } cmdName 命令字符串 + * @param { String } value 传入的行高值, 该值是当前字体的倍数, 例如: 1.5, 1.75 + * @example + * ```javascript + * editor.execCommand( 'lineheight', 1.5); + * ``` + */ + /** + * 查询当前选区内容的行高大小 + * @command lineheight + * @method queryCommandValue + * @param { String } cmd 命令字符串 + * @return { String } 返回当前行高大小 + * @example + * ```javascript + * editor.queryCommandValue( 'lineheight' ); + * ``` + */ + + me.commands['lineheight'] = { + execCommand : function( cmdName,value ) { + this.execCommand('paragraph','p',{style:'line-height:'+ (value == "1" ? "normal" : value + 'em') }); + return true; + }, + queryCommandValue : function() { + var pN = domUtils.filterNodeList(this.selection.getStartElementPath(),function(node){return domUtils.isBlockElm(node)}); + if(pN){ + var value = domUtils.getComputedStyle(pN,'line-height'); + return value == 'normal' ? 1 : value.replace(/[^\d.]*/ig,""); + } + } + }; +}; + + + + +// plugins/insertcode.js +/** + * 插入代码插件 + * @file + * @since 1.2.6.1 + */ + +UE.plugins['insertcode'] = function() { + var me = this; + me.ready(function(){ + utils.cssRule('pre','pre{margin:.5em 0;padding:.4em .6em;border-radius:8px;background:#f8f8f8;}', + me.document) + }); + me.setOpt('insertcode',{ + 'as3':'ActionScript3', + 'bash':'Bash/Shell', + 'cpp':'C/C++', + 'css':'Css', + 'cf':'CodeFunction', + 'c#':'C#', + 'delphi':'Delphi', + 'diff':'Diff', + 'erlang':'Erlang', + 'groovy':'Groovy', + 'html':'Html', + 'java':'Java', + 'jfx':'JavaFx', + 'js':'Javascript', + 'pl':'Perl', + 'php':'Php', + 'plain':'Plain Text', + 'ps':'PowerShell', + 'python':'Python', + 'ruby':'Ruby', + 'scala':'Scala', + 'sql':'Sql', + 'vb':'Vb', + 'xml':'Xml' + }); + + /** + * 插入代码 + * @command insertcode + * @method execCommand + * @param { String } cmd 命令字符串 + * @param { String } lang 插入代码的语言 + * @example + * ```javascript + * editor.execCommand( 'insertcode', 'javascript' ); + * ``` + */ + + /** + * 如果选区所在位置是插入插入代码区域,返回代码的语言 + * @command insertcode + * @method queryCommandValue + * @param { String } cmd 命令字符串 + * @return { String } 返回代码的语言 + * @example + * ```javascript + * editor.queryCommandValue( 'insertcode' ); + * ``` + */ + + me.commands['insertcode'] = { + execCommand : function(cmd,lang){ + var me = this, + rng = me.selection.getRange(), + pre = domUtils.findParentByTagName(rng.startContainer,'pre',true); + if(pre){ + pre.className = 'brush:'+lang+';toolbar:false;'; + }else{ + var code = ''; + if(rng.collapsed){ + code = browser.ie && browser.ie11below ? (browser.version <= 8 ? ' ':''):'
    '; + }else{ + var frag = rng.extractContents(); + var div = me.document.createElement('div'); + div.appendChild(frag); + + utils.each(UE.filterNode(UE.htmlparser(div.innerHTML.replace(/[\r\t]/g,'')),me.options.filterTxtRules).children,function(node){ + if(browser.ie && browser.ie11below && browser.version > 8){ + + if(node.type =='element'){ + if(node.tagName == 'br'){ + code += '\n' + }else if(!dtd.$empty[node.tagName]){ + utils.each(node.children,function(cn){ + if(cn.type =='element'){ + if(cn.tagName == 'br'){ + code += '\n' + }else if(!dtd.$empty[node.tagName]){ + code += cn.innerText(); + } + }else{ + code += cn.data + } + }) + if(!/\n$/.test(code)){ + code += '\n'; + } + } + }else{ + code += node.data + '\n' + } + if(!node.nextSibling() && /\n$/.test(code)){ + code = code.replace(/\n$/,''); + } + }else{ + if(browser.ie && browser.ie11below){ + + if(node.type =='element'){ + if(node.tagName == 'br'){ + code += '
    ' + }else if(!dtd.$empty[node.tagName]){ + utils.each(node.children,function(cn){ + if(cn.type =='element'){ + if(cn.tagName == 'br'){ + code += '
    ' + }else if(!dtd.$empty[node.tagName]){ + code += cn.innerText(); + } + }else{ + code += cn.data + } + }); + if(!/br>$/.test(code)){ + code += '
    '; + } + } + }else{ + code += node.data + '
    ' + } + if(!node.nextSibling() && /
    $/.test(code)){ + code = code.replace(/
    $/,''); + } + + }else{ + code += (node.type == 'element' ? (dtd.$empty[node.tagName] ? '' : node.innerText()) : node.data); + if(!/br\/?\s*>$/.test(code)){ + if(!node.nextSibling()) + return; + code += '
    ' + } + } + + } + + }); + } + me.execCommand('inserthtml','
    '+code+'
    ',true); + + pre = me.document.getElementById('coder'); + domUtils.removeAttributes(pre,'id'); + var tmpNode = pre.previousSibling; + + if(tmpNode && (tmpNode.nodeType == 3 && tmpNode.nodeValue.length == 1 && browser.ie && browser.version == 6 || domUtils.isEmptyBlock(tmpNode))){ + + domUtils.remove(tmpNode) + } + var rng = me.selection.getRange(); + if(domUtils.isEmptyBlock(pre)){ + rng.setStart(pre,0).setCursor(false,true) + }else{ + rng.selectNodeContents(pre).select() + } + } + + + + }, + queryCommandValue : function(){ + var path = this.selection.getStartElementPath(); + var lang = ''; + utils.each(path,function(node){ + if(node.nodeName =='PRE'){ + var match = node.className.match(/brush:([^;]+)/); + lang = match && match[1] ? match[1] : ''; + return false; + } + }); + return lang; + } + }; + + me.addInputRule(function(root){ + utils.each(root.getNodesByTagName('pre'),function(pre){ + var brs = pre.getNodesByTagName('br'); + if(brs.length){ + browser.ie && browser.ie11below && browser.version > 8 && utils.each(brs,function(br){ + var txt = UE.uNode.createText('\n'); + br.parentNode.insertBefore(txt,br); + br.parentNode.removeChild(br); + }); + return; + } + if(browser.ie && browser.ie11below && browser.version > 8) + return; + var code = pre.innerText().split(/\n/); + pre.innerHTML(''); + utils.each(code,function(c){ + if(c.length){ + pre.appendChild(UE.uNode.createText(c)); + } + pre.appendChild(UE.uNode.createElement('br')) + }) + }) + }); + me.addOutputRule(function(root){ + utils.each(root.getNodesByTagName('pre'),function(pre){ + var code = ''; + utils.each(pre.children,function(n){ + if(n.type == 'text'){ + //在ie下文本内容有可能末尾带有\n要去掉 + //trace:3396 + code += n.data.replace(/[ ]/g,' ').replace(/\n$/,''); + }else{ + if(n.tagName == 'br'){ + code += '\n' + }else{ + code += (!dtd.$empty[n.tagName] ? '' : n.innerText()); + } + + } + + }); + + pre.innerText(code.replace(/( |\n)+$/,'')) + }) + }); + //不需要判断highlight的command列表 + me.notNeedCodeQuery ={ + help:1, + undo:1, + redo:1, + source:1, + print:1, + searchreplace:1, + fullscreen:1, + preview:1, + insertparagraph:1, + elementpath:1, + insertcode:1, + inserthtml:1, + selectall:1 + }; + //将queyCommamndState重置 + var orgQuery = me.queryCommandState; + me.queryCommandState = function(cmd){ + var me = this; + + if(!me.notNeedCodeQuery[cmd.toLowerCase()] && me.selection && me.queryCommandValue('insertcode')){ + return -1; + } + return UE.Editor.prototype.queryCommandState.apply(this,arguments) + }; + me.addListener('beforeenterkeydown',function(){ + var rng = me.selection.getRange(); + var pre = domUtils.findParentByTagName(rng.startContainer,'pre',true); + if(pre){ + me.fireEvent('saveScene'); + if(!rng.collapsed){ + rng.deleteContents(); + } + if(!browser.ie || browser.ie9above){ + var tmpNode = me.document.createElement('br'),pre; + rng.insertNode(tmpNode).setStartAfter(tmpNode).collapse(true); + var next = tmpNode.nextSibling; + if(!next && (!browser.ie || browser.version > 10)){ + rng.insertNode(tmpNode.cloneNode(false)); + }else{ + rng.setStartAfter(tmpNode); + } + pre = tmpNode.previousSibling; + var tmp; + while(pre ){ + tmp = pre; + pre = pre.previousSibling; + if(!pre || pre.nodeName == 'BR'){ + pre = tmp; + break; + } + } + if(pre){ + var str = ''; + while(pre && pre.nodeName != 'BR' && new RegExp('^[\\s'+domUtils.fillChar+']*$').test(pre.nodeValue)){ + str += pre.nodeValue; + pre = pre.nextSibling; + } + if(pre.nodeName != 'BR'){ + var match = pre.nodeValue.match(new RegExp('^([\\s'+domUtils.fillChar+']+)')); + if(match && match[1]){ + str += match[1] + } + + } + if(str){ + str = me.document.createTextNode(str); + rng.insertNode(str).setStartAfter(str); + } + } + rng.collapse(true).select(true); + }else{ + if(browser.version > 8){ + + var txt = me.document.createTextNode('\n'); + var start = rng.startContainer; + if(rng.startOffset == 0){ + var preNode = start.previousSibling; + if(preNode){ + rng.insertNode(txt); + var fillchar = me.document.createTextNode(' '); + rng.setStartAfter(txt).insertNode(fillchar).setStart(fillchar,0).collapse(true).select(true) + } + }else{ + rng.insertNode(txt).setStartAfter(txt); + var fillchar = me.document.createTextNode(' '); + start = rng.startContainer.childNodes[rng.startOffset]; + if(start && !/^\n/.test(start.nodeValue)){ + rng.setStartBefore(txt) + } + rng.insertNode(fillchar).setStart(fillchar,0).collapse(true).select(true) + } + + }else{ + var tmpNode = me.document.createElement('br'); + rng.insertNode(tmpNode); + rng.insertNode(me.document.createTextNode(domUtils.fillChar)); + rng.setStartAfter(tmpNode); + pre = tmpNode.previousSibling; + var tmp; + while(pre ){ + tmp = pre; + pre = pre.previousSibling; + if(!pre || pre.nodeName == 'BR'){ + pre = tmp; + break; + } + } + if(pre){ + var str = ''; + while(pre && pre.nodeName != 'BR' && new RegExp('^[ '+domUtils.fillChar+']*$').test(pre.nodeValue)){ + str += pre.nodeValue; + pre = pre.nextSibling; + } + if(pre.nodeName != 'BR'){ + var match = pre.nodeValue.match(new RegExp('^([ '+domUtils.fillChar+']+)')); + if(match && match[1]){ + str += match[1] + } + + } + + str = me.document.createTextNode(str); + rng.insertNode(str).setStartAfter(str); + } + rng.collapse(true).select(); + } + + + } + me.fireEvent('saveScene'); + return true; + } + + + }); + + me.addListener('tabkeydown',function(cmd,evt){ + var rng = me.selection.getRange(); + var pre = domUtils.findParentByTagName(rng.startContainer,'pre',true); + if(pre){ + me.fireEvent('saveScene'); + if(evt.shiftKey){ + + }else{ + if(!rng.collapsed){ + var bk = rng.createBookmark(); + var start = bk.start.previousSibling; + + while(start){ + if(pre.firstChild === start && !domUtils.isBr(start)){ + pre.insertBefore(me.document.createTextNode(' '),start); + + break; + } + if(domUtils.isBr(start)){ + pre.insertBefore(me.document.createTextNode(' '),start.nextSibling); + + break; + } + start = start.previousSibling; + } + var end = bk.end; + start = bk.start.nextSibling; + if(pre.firstChild === bk.start){ + pre.insertBefore(me.document.createTextNode(' '),start.nextSibling) + + } + while(start && start !== end){ + if(domUtils.isBr(start) && start.nextSibling){ + if(start.nextSibling === end){ + break; + } + pre.insertBefore(me.document.createTextNode(' '),start.nextSibling) + } + + start = start.nextSibling; + } + rng.moveToBookmark(bk).select(); + }else{ + var tmpNode = me.document.createTextNode(' '); + rng.insertNode(tmpNode).setStartAfter(tmpNode).collapse(true).select(true); + } + } + + + me.fireEvent('saveScene'); + return true; + } + + + }); + + + me.addListener('beforeinserthtml',function(evtName,html){ + var me = this, + rng = me.selection.getRange(), + pre = domUtils.findParentByTagName(rng.startContainer,'pre',true); + if(pre){ + if(!rng.collapsed){ + rng.deleteContents() + } + var htmlstr = ''; + if(browser.ie && browser.version > 8){ + + utils.each(UE.filterNode(UE.htmlparser(html),me.options.filterTxtRules).children,function(node){ + if(node.type =='element'){ + if(node.tagName == 'br'){ + htmlstr += '\n' + }else if(!dtd.$empty[node.tagName]){ + utils.each(node.children,function(cn){ + if(cn.type =='element'){ + if(cn.tagName == 'br'){ + htmlstr += '\n' + }else if(!dtd.$empty[node.tagName]){ + htmlstr += cn.innerText(); + } + }else{ + htmlstr += cn.data + } + }) + if(!/\n$/.test(htmlstr)){ + htmlstr += '\n'; + } + } + }else{ + htmlstr += node.data + '\n' + } + if(!node.nextSibling() && /\n$/.test(htmlstr)){ + htmlstr = htmlstr.replace(/\n$/,''); + } + }); + var tmpNode = me.document.createTextNode(utils.html(htmlstr.replace(/ /g,' '))); + rng.insertNode(tmpNode).selectNode(tmpNode).select(); + }else{ + var frag = me.document.createDocumentFragment(); + + utils.each(UE.filterNode(UE.htmlparser(html),me.options.filterTxtRules).children,function(node){ + if(node.type =='element'){ + if(node.tagName == 'br'){ + frag.appendChild(me.document.createElement('br')) + }else if(!dtd.$empty[node.tagName]){ + utils.each(node.children,function(cn){ + if(cn.type =='element'){ + if(cn.tagName == 'br'){ + + frag.appendChild(me.document.createElement('br')) + }else if(!dtd.$empty[node.tagName]){ + frag.appendChild(me.document.createTextNode(utils.html(cn.innerText().replace(/ /g,' ')))); + + } + }else{ + frag.appendChild(me.document.createTextNode(utils.html( cn.data.replace(/ /g,' ')))); + + } + }) + if(frag.lastChild.nodeName != 'BR'){ + frag.appendChild(me.document.createElement('br')) + } + } + }else{ + frag.appendChild(me.document.createTextNode(utils.html( node.data.replace(/ /g,' ')))); + } + if(!node.nextSibling() && frag.lastChild.nodeName == 'BR'){ + frag.removeChild(frag.lastChild) + } + + + }); + rng.insertNode(frag).select(); + + } + + return true; + } + }); + //方向键的处理 + me.addListener('keydown',function(cmd,evt){ + var me = this,keyCode = evt.keyCode || evt.which; + if(keyCode == 40){ + var rng = me.selection.getRange(),pre,start = rng.startContainer; + if(rng.collapsed && (pre = domUtils.findParentByTagName(rng.startContainer,'pre',true)) && !pre.nextSibling){ + var last = pre.lastChild + while(last && last.nodeName == 'BR'){ + last = last.previousSibling; + } + if(last === start || rng.startContainer === pre && rng.startOffset == pre.childNodes.length){ + me.execCommand('insertparagraph'); + domUtils.preventDefault(evt) + } + + } + } + }); + //trace:3395 + me.addListener('delkeydown',function(type,evt){ + var rng = this.selection.getRange(); + rng.txtToElmBoundary(true); + var start = rng.startContainer; + if(domUtils.isTagNode(start,'pre') && rng.collapsed && domUtils.isStartInblock(rng)){ + var p = me.document.createElement('p'); + domUtils.fillNode(me.document,p); + start.parentNode.insertBefore(p,start); + domUtils.remove(start); + rng.setStart(p,0).setCursor(false,true); + domUtils.preventDefault(evt); + return true; + } + }) +}; + + +// plugins/cleardoc.js +/** + * 清空文档插件 + * @file + * @since 1.2.6.1 + */ + +/** + * 清空文档 + * @command cleardoc + * @method execCommand + * @param { String } cmd 命令字符串 + * @example + * ```javascript + * //editor 是编辑器实例 + * editor.execCommand('cleardoc'); + * ``` + */ + +UE.commands['cleardoc'] = { + execCommand : function( cmdName) { + var me = this, + enterTag = me.options.enterTag, + range = me.selection.getRange(); + if(enterTag == "br"){ + me.body.innerHTML = "
    "; + range.setStart(me.body,0).setCursor(); + }else{ + me.body.innerHTML = "

    "+(ie ? "" : "
    ")+"

    "; + range.setStart(me.body.firstChild,0).setCursor(false,true); + } + setTimeout(function(){ + me.fireEvent("clearDoc"); + },0); + + } +}; + + + +// plugins/anchor.js +/** + * 锚点插件,为UEditor提供插入锚点支持 + * @file + * @since 1.2.6.1 + */ +UE.plugin.register('anchor', function (){ + + return { + bindEvents:{ + 'ready':function(){ + utils.cssRule('anchor', + '.anchorclass{background: url(\'' + + this.options.themePath + + this.options.theme +'/images/anchor.gif\') no-repeat scroll left center transparent;cursor: auto;display: inline-block;height: 16px;width: 15px;}', + this.document); + } + }, + outputRule: function(root){ + utils.each(root.getNodesByTagName('img'),function(a){ + var val; + if(val = a.getAttr('anchorname')){ + a.tagName = 'a'; + a.setAttr({ + anchorname : '', + name : val, + 'class' : '' + }) + } + }) + }, + inputRule:function(root){ + utils.each(root.getNodesByTagName('a'),function(a){ + var val; + if((val = a.getAttr('name')) && !a.getAttr('href')){ + a.tagName = 'img'; + a.setAttr({ + anchorname :a.getAttr('name'), + 'class' : 'anchorclass' + }); + a.setAttr('name') + + } + }) + + }, + commands:{ + /** + * 插入锚点 + * @command anchor + * @method execCommand + * @param { String } cmd 命令字符串 + * @param { String } name 锚点名称字符串 + * @example + * ```javascript + * //editor 是编辑器实例 + * editor.execCommand('anchor', 'anchor1'); + * ``` + */ + 'anchor':{ + execCommand:function (cmd, name) { + var range = this.selection.getRange(),img = range.getClosedNode(); + if (img && img.getAttribute('anchorname')) { + if (name) { + img.setAttribute('anchorname', name); + } else { + range.setStartBefore(img).setCursor(); + domUtils.remove(img); + } + } else { + if (name) { + //只在选区的开始插入 + var anchor = this.document.createElement('img'); + range.collapse(true); + domUtils.setAttributes(anchor,{ + 'anchorname':name, + 'class':'anchorclass' + }); + range.insertNode(anchor).setStartAfter(anchor).setCursor(false,true); + } + } + } + } + } + } +}); + + +// plugins/wordcount.js +///import core +///commands 字数统计 +///commandsName WordCount,wordCount +///commandsTitle 字数统计 +/* + * Created by JetBrains WebStorm. + * User: taoqili + * Date: 11-9-7 + * Time: 下午8:18 + * To change this template use File | Settings | File Templates. + */ + +UE.plugins['wordcount'] = function(){ + var me = this; + me.setOpt('wordCount',true); + me.addListener('contentchange',function(){ + me.fireEvent('wordcount'); + }); + var timer; + me.addListener('ready',function(){ + var me = this; + domUtils.on(me.body,"keyup",function(evt){ + var code = evt.keyCode||evt.which, + //忽略的按键,ctr,alt,shift,方向键 + ignores = {"16":1,"18":1,"20":1,"37":1,"38":1,"39":1,"40":1}; + if(code in ignores) return; + clearTimeout(timer); + timer = setTimeout(function(){ + me.fireEvent('wordcount'); + },200) + }) + }); +}; + + +// plugins/pagebreak.js +/** + * 分页功能插件 + * @file + * @since 1.2.6.1 + */ +UE.plugins['pagebreak'] = function () { + var me = this, + notBreakTags = ['td']; + me.setOpt('pageBreakTag','_ueditor_page_break_tag_'); + + function fillNode(node){ + if(domUtils.isEmptyBlock(node)){ + var firstChild = node.firstChild,tmpNode; + + while(firstChild && firstChild.nodeType == 1 && domUtils.isEmptyBlock(firstChild)){ + tmpNode = firstChild; + firstChild = firstChild.firstChild; + } + !tmpNode && (tmpNode = node); + domUtils.fillNode(me.document,tmpNode); + } + } + //分页符样式添加 + + me.ready(function(){ + utils.cssRule('pagebreak','.pagebreak{display:block;clear:both !important;cursor:default !important;width: 100% !important;margin:0;}',me.document); + }); + function isHr(node){ + return node && node.nodeType == 1 && node.tagName == 'HR' && node.className == 'pagebreak'; + } + me.addInputRule(function(root){ + root.traversal(function(node){ + if(node.type == 'text' && node.data == me.options.pageBreakTag){ + var hr = UE.uNode.createElement('
    '); + node.parentNode.insertBefore(hr,node); + node.parentNode.removeChild(node) + } + }) + }); + me.addOutputRule(function(node){ + utils.each(node.getNodesByTagName('hr'),function(n){ + if(n.getAttr('class') == 'pagebreak'){ + var txt = UE.uNode.createText(me.options.pageBreakTag); + n.parentNode.insertBefore(txt,n); + n.parentNode.removeChild(n); + } + }) + + }); + + /** + * 插入分页符 + * @command pagebreak + * @method execCommand + * @param { String } cmd 命令字符串 + * @remind 在表格中插入分页符会把表格切分成两部分 + * @remind 获取编辑器内的数据时, 编辑器会把分页符转换成“_ueditor_page_break_tag_”字符串, + * 以便于提交数据到服务器端后处理分页。 + * @example + * ```javascript + * editor.execCommand( 'pagebreak'); //插入一个hr标签,带有样式类名pagebreak + * ``` + */ + + me.commands['pagebreak'] = { + execCommand:function () { + var range = me.selection.getRange(),hr = me.document.createElement('hr'); + domUtils.setAttributes(hr,{ + 'class' : 'pagebreak', + noshade:"noshade", + size:"5" + }); + domUtils.unSelectable(hr); + //table单独处理 + var node = domUtils.findParentByTagName(range.startContainer, notBreakTags, true), + + parents = [], pN; + if (node) { + switch (node.tagName) { + case 'TD': + pN = node.parentNode; + if (!pN.previousSibling) { + var table = domUtils.findParentByTagName(pN, 'table'); +// var tableWrapDiv = table.parentNode; +// if(tableWrapDiv && tableWrapDiv.nodeType == 1 +// && tableWrapDiv.tagName == 'DIV' +// && tableWrapDiv.getAttribute('dropdrag') +// ){ +// domUtils.remove(tableWrapDiv,true); +// } + table.parentNode.insertBefore(hr, table); + parents = domUtils.findParents(hr, true); + + } else { + pN.parentNode.insertBefore(hr, pN); + parents = domUtils.findParents(hr); + + } + pN = parents[1]; + if (hr !== pN) { + domUtils.breakParent(hr, pN); + + } + //table要重写绑定一下拖拽 + me.fireEvent('afteradjusttable',me.document); + } + + } else { + + if (!range.collapsed) { + range.deleteContents(); + var start = range.startContainer; + while ( !domUtils.isBody(start) && domUtils.isBlockElm(start) && domUtils.isEmptyNode(start)) { + range.setStartBefore(start).collapse(true); + domUtils.remove(start); + start = range.startContainer; + } + + } + range.insertNode(hr); + + var pN = hr.parentNode, nextNode; + while (!domUtils.isBody(pN)) { + domUtils.breakParent(hr, pN); + nextNode = hr.nextSibling; + if (nextNode && domUtils.isEmptyBlock(nextNode)) { + domUtils.remove(nextNode); + } + pN = hr.parentNode; + } + nextNode = hr.nextSibling; + var pre = hr.previousSibling; + if(isHr(pre)){ + domUtils.remove(pre); + }else{ + pre && fillNode(pre); + } + + if(!nextNode){ + var p = me.document.createElement('p'); + + hr.parentNode.appendChild(p); + domUtils.fillNode(me.document,p); + range.setStart(p,0).collapse(true); + }else{ + if(isHr(nextNode)){ + domUtils.remove(nextNode); + }else{ + fillNode(nextNode); + } + range.setEndAfter(hr).collapse(false); + } + + range.select(true); + + } + + } + }; +}; + +// plugins/wordimage.js +///import core +///commands 本地图片引导上传 +///commandsName WordImage +///commandsTitle 本地图片引导上传 +///commandsDialog dialogs\wordimage + +UE.plugin.register('wordimage',function(){ + var me = this, + images = []; + return { + commands : { + 'wordimage':{ + execCommand:function () { + var images = domUtils.getElementsByTagName(me.body, "img"); + var urlList = []; + for (var i = 0, ci; ci = images[i++];) { + var url = ci.getAttribute("word_img"); + url && urlList.push(url); + } + return urlList; + }, + queryCommandState:function () { + images = domUtils.getElementsByTagName(me.body, "img"); + for (var i = 0, ci; ci = images[i++];) { + if (ci.getAttribute("word_img")) { + return 1; + } + } + return -1; + }, + notNeedUndo:true + } + }, + inputRule : function (root) { + utils.each(root.getNodesByTagName('img'), function (img) { + var attrs = img.attrs, + flag = parseInt(attrs.width) < 128 || parseInt(attrs.height) < 43, + opt = me.options, + src = opt.UEDITOR_HOME_URL + 'themes/default/images/spacer.gif'; + if (attrs['src'] && /^(?:(file:\/+))/.test(attrs['src'])) { + img.setAttr({ + width:attrs.width, + height:attrs.height, + alt:attrs.alt, + word_img: attrs.src, + src:src, + 'style':'background:url(' + ( flag ? opt.themePath + opt.theme + '/images/word.gif' : opt.langPath + opt.lang + '/images/localimage.png') + ') no-repeat center center;border:1px solid #ddd' + }) + } + }) + } + } +}); + +// plugins/dragdrop.js +UE.plugins['dragdrop'] = function (){ + + var me = this; + me.ready(function(){ + domUtils.on(this.body,'dragend',function(){ + var rng = me.selection.getRange(); + var node = rng.getClosedNode()||me.selection.getStart(); + + if(node && node.tagName == 'IMG'){ + + var pre = node.previousSibling,next; + while(next = node.nextSibling){ + if(next.nodeType == 1 && next.tagName == 'SPAN' && !next.firstChild){ + domUtils.remove(next) + }else{ + break; + } + } + + + if((pre && pre.nodeType == 1 && !domUtils.isEmptyBlock(pre) || !pre) && (!next || next && !domUtils.isEmptyBlock(next))){ + if(pre && pre.tagName == 'P' && !domUtils.isEmptyBlock(pre)){ + pre.appendChild(node); + domUtils.moveChild(next,pre); + domUtils.remove(next); + }else if(next && next.tagName == 'P' && !domUtils.isEmptyBlock(next)){ + next.insertBefore(node,next.firstChild); + } + + if(pre && pre.tagName == 'P' && domUtils.isEmptyBlock(pre)){ + domUtils.remove(pre) + } + if(next && next.tagName == 'P' && domUtils.isEmptyBlock(next)){ + domUtils.remove(next) + } + rng.selectNode(node).select(); + me.fireEvent('saveScene'); + + } + + } + + }) + }); + me.addListener('keyup', function(type, evt) { + var keyCode = evt.keyCode || evt.which; + if (keyCode == 13) { + var rng = me.selection.getRange(),node; + if(node = domUtils.findParentByTagName(rng.startContainer,'p',true)){ + if(domUtils.getComputedStyle(node,'text-align') == 'center'){ + domUtils.removeStyle(node,'text-align') + } + } + } + }) +}; + + +// plugins/undo.js +/** + * undo redo + * @file + * @since 1.2.6.1 + */ + +/** + * 撤销上一次执行的命令 + * @command undo + * @method execCommand + * @param { String } cmd 命令字符串 + * @example + * ```javascript + * editor.execCommand( 'undo' ); + * ``` + */ + +/** + * 重做上一次执行的命令 + * @command redo + * @method execCommand + * @param { String } cmd 命令字符串 + * @example + * ```javascript + * editor.execCommand( 'redo' ); + * ``` + */ + +UE.plugins['undo'] = function () { + var saveSceneTimer; + var me = this, + maxUndoCount = me.options.maxUndoCount || 20, + maxInputCount = me.options.maxInputCount || 20, + fillchar = new RegExp(domUtils.fillChar + '|<\/hr>', 'gi');// ie会产生多余的 + var noNeedFillCharTags = { + ol:1,ul:1,table:1,tbody:1,tr:1,body:1 + }; + var orgState = me.options.autoClearEmptyNode; + function compareAddr(indexA, indexB) { + if (indexA.length != indexB.length) + return 0; + for (var i = 0, l = indexA.length; i < l; i++) { + if (indexA[i] != indexB[i]) + return 0 + } + return 1; + } + + function compareRangeAddress(rngAddrA, rngAddrB) { + if (rngAddrA.collapsed != rngAddrB.collapsed) { + return 0; + } + if (!compareAddr(rngAddrA.startAddress, rngAddrB.startAddress) || !compareAddr(rngAddrA.endAddress, rngAddrB.endAddress)) { + return 0; + } + return 1; + } + + function UndoManager() { + this.list = []; + this.index = 0; + this.hasUndo = false; + this.hasRedo = false; + this.undo = function () { + if (this.hasUndo) { + if (!this.list[this.index - 1] && this.list.length == 1) { + this.reset(); + return; + } + while (this.list[this.index].content == this.list[this.index - 1].content) { + this.index--; + if (this.index == 0) { + return this.restore(0); + } + } + this.restore(--this.index); + } + }; + this.redo = function () { + if (this.hasRedo) { + while (this.list[this.index].content == this.list[this.index + 1].content) { + this.index++; + if (this.index == this.list.length - 1) { + return this.restore(this.index); + } + } + this.restore(++this.index); + } + }; + + this.restore = function () { + var me = this.editor; + var scene = this.list[this.index]; + var root = UE.htmlparser(scene.content.replace(fillchar, '')); + me.options.autoClearEmptyNode = false; + me.filterInputRule(root); + me.options.autoClearEmptyNode = orgState; + //trace:873 + //去掉展位符 + me.document.body.innerHTML = root.toHtml(); + me.fireEvent('afterscencerestore'); + //处理undo后空格不展位的问题 + if (browser.ie) { + utils.each(domUtils.getElementsByTagName(me.document,'td th caption p'),function(node){ + if(domUtils.isEmptyNode(node)){ + domUtils.fillNode(me.document, node); + } + }) + } + + try{ + var rng = new dom.Range(me.document).moveToAddress(scene.address); + rng.select(noNeedFillCharTags[rng.startContainer.nodeName.toLowerCase()]); + }catch(e){} + + this.update(); + this.clearKey(); + //不能把自己reset了 + me.fireEvent('reset', true); + }; + + this.getScene = function () { + var me = this.editor; + var rng = me.selection.getRange(), + rngAddress = rng.createAddress(false,true); + me.fireEvent('beforegetscene'); + var root = UE.htmlparser(me.body.innerHTML); + me.options.autoClearEmptyNode = false; + me.filterOutputRule(root); + me.options.autoClearEmptyNode = orgState; + var cont = root.toHtml(); + //trace:3461 + //这个会引起回退时导致空格丢失的情况 +// browser.ie && (cont = cont.replace(/> <').replace(/\s*\s*/g, '>')); + me.fireEvent('aftergetscene'); + + return { + address:rngAddress, + content:cont + } + }; + this.save = function (notCompareRange,notSetCursor) { + clearTimeout(saveSceneTimer); + var currentScene = this.getScene(notSetCursor), + lastScene = this.list[this.index]; + + if(lastScene && lastScene.content != currentScene.content){ + me.trigger('contentchange') + } + //内容相同位置相同不存 + if (lastScene && lastScene.content == currentScene.content && + ( notCompareRange ? 1 : compareRangeAddress(lastScene.address, currentScene.address) ) + ) { + return; + } + this.list = this.list.slice(0, this.index + 1); + this.list.push(currentScene); + //如果大于最大数量了,就把最前的剔除 + if (this.list.length > maxUndoCount) { + this.list.shift(); + } + this.index = this.list.length - 1; + this.clearKey(); + //跟新undo/redo状态 + this.update(); + + }; + this.update = function () { + this.hasRedo = !!this.list[this.index + 1]; + this.hasUndo = !!this.list[this.index - 1]; + }; + this.reset = function () { + this.list = []; + this.index = 0; + this.hasUndo = false; + this.hasRedo = false; + this.clearKey(); + }; + this.clearKey = function () { + keycont = 0; + lastKeyCode = null; + }; + } + + me.undoManger = new UndoManager(); + me.undoManger.editor = me; + function saveScene() { + this.undoManger.save(); + } + + me.addListener('saveScene', function () { + var args = Array.prototype.splice.call(arguments,1); + this.undoManger.save.apply(this.undoManger,args); + }); + +// me.addListener('beforeexeccommand', saveScene); +// me.addListener('afterexeccommand', saveScene); + + me.addListener('reset', function (type, exclude) { + if (!exclude) { + this.undoManger.reset(); + } + }); + me.commands['redo'] = me.commands['undo'] = { + execCommand:function (cmdName) { + this.undoManger[cmdName](); + }, + queryCommandState:function (cmdName) { + return this.undoManger['has' + (cmdName.toLowerCase() == 'undo' ? 'Undo' : 'Redo')] ? 0 : -1; + }, + notNeedUndo:1 + }; + + var keys = { + // /*Backspace*/ 8:1, /*Delete*/ 46:1, + /*Shift*/ 16:1, /*Ctrl*/ 17:1, /*Alt*/ 18:1, + 37:1, 38:1, 39:1, 40:1 + + }, + keycont = 0, + lastKeyCode; + //输入法状态下不计算字符数 + var inputType = false; + me.addListener('ready', function () { + domUtils.on(this.body, 'compositionstart', function () { + inputType = true; + }); + domUtils.on(this.body, 'compositionend', function () { + inputType = false; + }) + }); + //快捷键 + me.addshortcutkey({ + "Undo":"ctrl+90", //undo + "Redo":"ctrl+89" //redo + + }); + var isCollapsed = true; + me.addListener('keydown', function (type, evt) { + + var me = this; + var keyCode = evt.keyCode || evt.which; + if (!keys[keyCode] && !evt.ctrlKey && !evt.metaKey && !evt.shiftKey && !evt.altKey) { + if (inputType) + return; + + if(!me.selection.getRange().collapsed){ + me.undoManger.save(false,true); + isCollapsed = false; + return; + } + if (me.undoManger.list.length == 0) { + me.undoManger.save(true); + } + clearTimeout(saveSceneTimer); + function save(cont){ + cont.undoManger.save(false,true); + cont.fireEvent('selectionchange'); + } + saveSceneTimer = setTimeout(function(){ + if(inputType){ + var interalTimer = setInterval(function(){ + if(!inputType){ + save(me); + clearInterval(interalTimer) + } + },300) + return; + } + save(me); + },200); + + lastKeyCode = keyCode; + keycont++; + if (keycont >= maxInputCount ) { + save(me) + } + } + }); + me.addListener('keyup', function (type, evt) { + var keyCode = evt.keyCode || evt.which; + if (!keys[keyCode] && !evt.ctrlKey && !evt.metaKey && !evt.shiftKey && !evt.altKey) { + if (inputType) + return; + if(!isCollapsed){ + this.undoManger.save(false,true); + isCollapsed = true; + } + } + }); + //扩展实例,添加关闭和开启命令undo + me.stopCmdUndo = function(){ + me.__hasEnterExecCommand = true; + }; + me.startCmdUndo = function(){ + me.__hasEnterExecCommand = false; + } +}; + + +// plugins/copy.js +UE.plugin.register('copy', function () { + + var me = this; + + function initZeroClipboard() { + + ZeroClipboard.config({ + debug: false, + swfPath: me.options.UEDITOR_HOME_URL + 'third-party/zeroclipboard/ZeroClipboard.swf' + }); + + var client = me.zeroclipboard = new ZeroClipboard(); + + // 复制内容 + client.on('copy', function (e) { + var client = e.client, + rng = me.selection.getRange(), + div = document.createElement('div'); + + div.appendChild(rng.cloneContents()); + client.setText(div.innerText || div.textContent); + client.setHtml(div.innerHTML); + rng.select(); + }); + // hover事件传递到target + client.on('mouseover mouseout', function (e) { + var target = e.target; + if (e.type == 'mouseover') { + domUtils.addClass(target, 'edui-state-hover'); + } else if (e.type == 'mouseout') { + domUtils.removeClasses(target, 'edui-state-hover'); + } + }); + // flash加载不成功 + client.on('wrongflash noflash', function () { + ZeroClipboard.destroy(); + }); + } + + return { + bindEvents: { + 'ready': function () { + if (!browser.ie) { + if (window.ZeroClipboard) { + initZeroClipboard(); + } else { + utils.loadFile(document, { + src: me.options.UEDITOR_HOME_URL + "third-party/zeroclipboard/ZeroClipboard.js", + tag: "script", + type: "text/javascript", + defer: "defer" + }, function () { + initZeroClipboard(); + }); + } + } + } + }, + commands: { + 'copy': { + execCommand: function (cmd) { + if (!me.document.execCommand('copy')) { + alert(me.getLang('copymsg')); + } + } + } + } + } +}); + + +// plugins/paste.js +///import core +///import plugins/inserthtml.js +///import plugins/undo.js +///import plugins/serialize.js +///commands 粘贴 +///commandsName PastePlain +///commandsTitle 纯文本粘贴模式 +/** + * @description 粘贴 + * @author zhanyi + */ +UE.plugins['paste'] = function () { + function getClipboardData(callback) { + var doc = this.document; + if (doc.getElementById('baidu_pastebin')) { + return; + } + var range = this.selection.getRange(), + bk = range.createBookmark(), + //创建剪贴的容器div + pastebin = doc.createElement('div'); + pastebin.id = 'baidu_pastebin'; + // Safari 要求div必须有内容,才能粘贴内容进来 + browser.webkit && pastebin.appendChild(doc.createTextNode(domUtils.fillChar + domUtils.fillChar)); + doc.body.appendChild(pastebin); + //trace:717 隐藏的span不能得到top + //bk.start.innerHTML = ' '; + bk.start.style.display = ''; + pastebin.style.cssText = "position:absolute;width:1px;height:1px;overflow:hidden;left:-1000px;white-space:nowrap;top:" + + //要在现在光标平行的位置加入,否则会出现跳动的问题 + domUtils.getXY(bk.start).y + 'px'; + + range.selectNodeContents(pastebin).select(true); + + setTimeout(function () { + if (browser.webkit) { + for (var i = 0, pastebins = doc.querySelectorAll('#baidu_pastebin'), pi; pi = pastebins[i++];) { + if (domUtils.isEmptyNode(pi)) { + domUtils.remove(pi); + } else { + pastebin = pi; + break; + } + } + } + try { + pastebin.parentNode.removeChild(pastebin); + } catch (e) { + } + range.moveToBookmark(bk).select(true); + callback(pastebin); + }, 0); + } + + var me = this; + + me.setOpt({ + retainOnlyLabelPasted : false + }); + + var txtContent, htmlContent, address; + + function getPureHtml(html){ + return html.replace(/<(\/?)([\w\-]+)([^>]*)>/gi, function (a, b, tagName, attrs) { + tagName = tagName.toLowerCase(); + if ({img: 1}[tagName]) { + return a; + } + attrs = attrs.replace(/([\w\-]*?)\s*=\s*(("([^"]*)")|('([^']*)')|([^\s>]+))/gi, function (str, atr, val) { + if ({ + 'src': 1, + 'href': 1, + 'name': 1 + }[atr.toLowerCase()]) { + return atr + '=' + val + ' ' + } + return '' + }); + if ({ + 'span': 1, + 'div': 1 + }[tagName]) { + return '' + } else { + + return '<' + b + tagName + ' ' + utils.trim(attrs) + '>' + } + + }); + } + function filter(div) { + var html; + if (div.firstChild) { + //去掉cut中添加的边界值 + var nodes = domUtils.getElementsByTagName(div, 'span'); + for (var i = 0, ni; ni = nodes[i++];) { + if (ni.id == '_baidu_cut_start' || ni.id == '_baidu_cut_end') { + domUtils.remove(ni); + } + } + + if (browser.webkit) { + + var brs = div.querySelectorAll('div br'); + for (var i = 0, bi; bi = brs[i++];) { + var pN = bi.parentNode; + if (pN.tagName == 'DIV' && pN.childNodes.length == 1) { + pN.innerHTML = '


    '; + domUtils.remove(pN); + } + } + var divs = div.querySelectorAll('#baidu_pastebin'); + for (var i = 0, di; di = divs[i++];) { + var tmpP = me.document.createElement('p'); + di.parentNode.insertBefore(tmpP, di); + while (di.firstChild) { + tmpP.appendChild(di.firstChild); + } + domUtils.remove(di); + } + + var metas = div.querySelectorAll('meta'); + for (var i = 0, ci; ci = metas[i++];) { + domUtils.remove(ci); + } + + var brs = div.querySelectorAll('br'); + for (i = 0; ci = brs[i++];) { + if (/^apple-/i.test(ci.className)) { + domUtils.remove(ci); + } + } + } + if (browser.gecko) { + var dirtyNodes = div.querySelectorAll('[_moz_dirty]'); + for (i = 0; ci = dirtyNodes[i++];) { + ci.removeAttribute('_moz_dirty'); + } + } + if (!browser.ie) { + var spans = div.querySelectorAll('span.Apple-style-span'); + for (var i = 0, ci; ci = spans[i++];) { + domUtils.remove(ci, true); + } + } + + //ie下使用innerHTML会产生多余的\r\n字符,也会产生 这里过滤掉 + html = div.innerHTML;//.replace(/>(?:(\s| )*?)<'); + + //过滤word粘贴过来的冗余属性 + html = UE.filterWord(html); + //取消了忽略空白的第二个参数,粘贴过来的有些是有空白的,会被套上相关的标签 + var root = UE.htmlparser(html); + //如果给了过滤规则就先进行过滤 + if (me.options.filterRules) { + UE.filterNode(root, me.options.filterRules); + } + //执行默认的处理 + me.filterInputRule(root); + //针对chrome的处理 + if (browser.webkit) { + var br = root.lastChild(); + if (br && br.type == 'element' && br.tagName == 'br') { + root.removeChild(br) + } + utils.each(me.body.querySelectorAll('div'), function (node) { + if (domUtils.isEmptyBlock(node)) { + domUtils.remove(node,true) + } + }) + } + html = {'html': root.toHtml()}; + me.fireEvent('beforepaste', html, root); + //抢了默认的粘贴,那后边的内容就不执行了,比如表格粘贴 + if(!html.html){ + return; + } + root = UE.htmlparser(html.html,true); + //如果开启了纯文本模式 + if (me.queryCommandState('pasteplain') === 1) { + me.execCommand('insertHtml', UE.filterNode(root, me.options.filterTxtRules).toHtml(), true); + } else { + //文本模式 + UE.filterNode(root, me.options.filterTxtRules); + txtContent = root.toHtml(); + //完全模式 + htmlContent = html.html; + + address = me.selection.getRange().createAddress(true); + me.execCommand('insertHtml', me.getOpt('retainOnlyLabelPasted') === true ? getPureHtml(htmlContent) : htmlContent, true); + } + me.fireEvent("afterpaste", html); + } + } + + me.addListener('pasteTransfer', function (cmd, plainType) { + + if (address && txtContent && htmlContent && txtContent != htmlContent) { + var range = me.selection.getRange(); + range.moveToAddress(address, true); + + if (!range.collapsed) { + + while (!domUtils.isBody(range.startContainer) + ) { + var start = range.startContainer; + if(start.nodeType == 1){ + start = start.childNodes[range.startOffset]; + if(!start){ + range.setStartBefore(range.startContainer); + continue; + } + var pre = start.previousSibling; + + if(pre && pre.nodeType == 3 && new RegExp('^[\n\r\t '+domUtils.fillChar+']*$').test(pre.nodeValue)){ + range.setStartBefore(pre) + } + } + if(range.startOffset == 0){ + range.setStartBefore(range.startContainer); + }else{ + break; + } + + } + while (!domUtils.isBody(range.endContainer) + ) { + var end = range.endContainer; + if(end.nodeType == 1){ + end = end.childNodes[range.endOffset]; + if(!end){ + range.setEndAfter(range.endContainer); + continue; + } + var next = end.nextSibling; + if(next && next.nodeType == 3 && new RegExp('^[\n\r\t'+domUtils.fillChar+']*$').test(next.nodeValue)){ + range.setEndAfter(next) + } + } + if(range.endOffset == range.endContainer[range.endContainer.nodeType == 3 ? 'nodeValue' : 'childNodes'].length){ + range.setEndAfter(range.endContainer); + }else{ + break; + } + + } + + } + + range.deleteContents(); + range.select(true); + me.__hasEnterExecCommand = true; + var html = htmlContent; + if (plainType === 2 ) { + html = getPureHtml(html); + } else if (plainType) { + html = txtContent; + } + me.execCommand('inserthtml', html, true); + me.__hasEnterExecCommand = false; + var rng = me.selection.getRange(); + while (!domUtils.isBody(rng.startContainer) && !rng.startOffset && + rng.startContainer[rng.startContainer.nodeType == 3 ? 'nodeValue' : 'childNodes'].length + ) { + rng.setStartBefore(rng.startContainer); + } + var tmpAddress = rng.createAddress(true); + address.endAddress = tmpAddress.startAddress; + } + }); + + me.addListener('ready', function () { + domUtils.on(me.body, 'cut', function () { + var range = me.selection.getRange(); + if (!range.collapsed && me.undoManger) { + me.undoManger.save(); + } + }); + + //ie下beforepaste在点击右键时也会触发,所以用监控键盘才处理 + domUtils.on(me.body, browser.ie || browser.opera ? 'keydown' : 'paste', function (e) { + if ((browser.ie || browser.opera) && ((!e.ctrlKey && !e.metaKey) || e.keyCode != '86')) { + return; + } + getClipboardData.call(me, function (div) { + filter(div); + }); + }); + + }); + + me.commands['paste'] = { + execCommand: function (cmd) { + if (browser.ie) { + getClipboardData.call(me, function (div) { + filter(div); + }); + me.document.execCommand('paste'); + } else { + alert(me.getLang('pastemsg')); + } + } + } +}; + + + +// plugins/puretxtpaste.js +/** + * 纯文本粘贴插件 + * @file + * @since 1.2.6.1 + */ + +UE.plugins['pasteplain'] = function(){ + var me = this; + me.setOpt({ + 'pasteplain':false, + 'filterTxtRules' : function(){ + function transP(node){ + node.tagName = 'p'; + node.setStyle(); + } + function removeNode(node){ + node.parentNode.removeChild(node,true) + } + return { + //直接删除及其字节点内容 + '-' : 'script style object iframe embed input select', + 'p': {$:{}}, + 'br':{$:{}}, + div: function (node) { + var tmpNode, p = UE.uNode.createElement('p'); + while (tmpNode = node.firstChild()) { + if (tmpNode.type == 'text' || !UE.dom.dtd.$block[tmpNode.tagName]) { + p.appendChild(tmpNode); + } else { + if (p.firstChild()) { + node.parentNode.insertBefore(p, node); + p = UE.uNode.createElement('p'); + } else { + node.parentNode.insertBefore(tmpNode, node); + } + } + } + if (p.firstChild()) { + node.parentNode.insertBefore(p, node); + } + node.parentNode.removeChild(node); + }, + ol: removeNode, + ul: removeNode, + dl:removeNode, + dt:removeNode, + dd:removeNode, + 'li':removeNode, + 'caption':transP, + 'th':transP, + 'tr':transP, + 'h1':transP,'h2':transP,'h3':transP,'h4':transP,'h5':transP,'h6':transP, + 'td':function(node){ + //没有内容的td直接删掉 + var txt = !!node.innerText(); + if(txt){ + node.parentNode.insertAfter(UE.uNode.createText('    '),node); + } + node.parentNode.removeChild(node,node.innerText()) + } + } + }() + }); + //暂时这里支持一下老版本的属性 + var pasteplain = me.options.pasteplain; + + /** + * 启用或取消纯文本粘贴模式 + * @command pasteplain + * @method execCommand + * @param { String } cmd 命令字符串 + * @example + * ```javascript + * editor.queryCommandState( 'pasteplain' ); + * ``` + */ + + /** + * 查询当前是否处于纯文本粘贴模式 + * @command pasteplain + * @method queryCommandState + * @param { String } cmd 命令字符串 + * @return { int } 如果处于纯文本模式,返回1,否则,返回0 + * @example + * ```javascript + * editor.queryCommandState( 'pasteplain' ); + * ``` + */ + me.commands['pasteplain'] = { + queryCommandState: function (){ + return pasteplain ? 1 : 0; + }, + execCommand: function (){ + pasteplain = !pasteplain|0; + }, + notNeedUndo : 1 + }; +}; + +// plugins/list.js +/** + * 有序列表,无序列表插件 + * @file + * @since 1.2.6.1 + */ + +UE.plugins['list'] = function () { + var me = this, + notExchange = { + 'TD':1, + 'PRE':1, + 'BLOCKQUOTE':1 + }; + var customStyle = { + 'cn' : 'cn-1-', + 'cn1' : 'cn-2-', + 'cn2' : 'cn-3-', + 'num': 'num-1-', + 'num1' : 'num-2-', + 'num2' : 'num-3-', + 'dash' : 'dash', + 'dot':'dot' + }; + + me.setOpt( { + 'autoTransWordToList':false, + 'insertorderedlist':{ + 'num':'', + 'num1':'', + 'num2':'', + 'cn':'', + 'cn1':'', + 'cn2':'', + 'decimal':'', + 'lower-alpha':'', + 'lower-roman':'', + 'upper-alpha':'', + 'upper-roman':'' + }, + 'insertunorderedlist':{ + 'circle':'', + 'disc':'', + 'square':'', + 'dash' : '', + 'dot':'' + }, + listDefaultPaddingLeft : '30', + listiconpath : 'http://bs.baidu.com/listicon/', + maxListLevel : -1,//-1不限制 + disablePInList:false + } ); + function listToArray(list){ + var arr = []; + for(var p in list){ + arr.push(p) + } + return arr; + } + var listStyle = { + 'OL':listToArray(me.options.insertorderedlist), + 'UL':listToArray(me.options.insertunorderedlist) + }; + var liiconpath = me.options.listiconpath; + + //根据用户配置,调整customStyle + for(var s in customStyle){ + if(!me.options.insertorderedlist.hasOwnProperty(s) && !me.options.insertunorderedlist.hasOwnProperty(s)){ + delete customStyle[s]; + } + } + + me.ready(function () { + var customCss = []; + for(var p in customStyle){ + if(p == 'dash' || p == 'dot'){ + customCss.push('li.list-' + customStyle[p] + '{background-image:url(' + liiconpath +customStyle[p]+'.gif)}'); + customCss.push('ul.custom_'+p+'{list-style:none;}ul.custom_'+p+' li{background-position:0 3px;background-repeat:no-repeat}'); + }else{ + for(var i= 0;i<99;i++){ + customCss.push('li.list-' + customStyle[p] + i + '{background-image:url(' + liiconpath + 'list-'+customStyle[p] + i + '.gif)}') + } + customCss.push('ol.custom_'+p+'{list-style:none;}ol.custom_'+p+' li{background-position:0 3px;background-repeat:no-repeat}'); + } + switch(p){ + case 'cn': + customCss.push('li.list-'+p+'-paddingleft-1{padding-left:25px}'); + customCss.push('li.list-'+p+'-paddingleft-2{padding-left:40px}'); + customCss.push('li.list-'+p+'-paddingleft-3{padding-left:55px}'); + break; + case 'cn1': + customCss.push('li.list-'+p+'-paddingleft-1{padding-left:30px}'); + customCss.push('li.list-'+p+'-paddingleft-2{padding-left:40px}'); + customCss.push('li.list-'+p+'-paddingleft-3{padding-left:55px}'); + break; + case 'cn2': + customCss.push('li.list-'+p+'-paddingleft-1{padding-left:40px}'); + customCss.push('li.list-'+p+'-paddingleft-2{padding-left:55px}'); + customCss.push('li.list-'+p+'-paddingleft-3{padding-left:68px}'); + break; + case 'num': + case 'num1': + customCss.push('li.list-'+p+'-paddingleft-1{padding-left:25px}'); + break; + case 'num2': + customCss.push('li.list-'+p+'-paddingleft-1{padding-left:35px}'); + customCss.push('li.list-'+p+'-paddingleft-2{padding-left:40px}'); + break; + case 'dash': + customCss.push('li.list-'+p+'-paddingleft{padding-left:35px}'); + break; + case 'dot': + customCss.push('li.list-'+p+'-paddingleft{padding-left:20px}'); + } + } + customCss.push('.list-paddingleft-1{padding-left:0}'); + customCss.push('.list-paddingleft-2{padding-left:'+me.options.listDefaultPaddingLeft+'px}'); + customCss.push('.list-paddingleft-3{padding-left:'+me.options.listDefaultPaddingLeft*2+'px}'); + //如果不给宽度会在自定应样式里出现滚动条 + utils.cssRule('list', 'ol,ul{margin:0;pading:0;'+(browser.ie ? '' : 'width:95%')+'}li{clear:both;}'+customCss.join('\n'), me.document); + }); + //单独处理剪切的问题 + me.ready(function(){ + domUtils.on(me.body,'cut',function(){ + setTimeout(function(){ + var rng = me.selection.getRange(),li; + //trace:3416 + if(!rng.collapsed){ + if(li = domUtils.findParentByTagName(rng.startContainer,'li',true)){ + if(!li.nextSibling && domUtils.isEmptyBlock(li)){ + var pn = li.parentNode,node; + if(node = pn.previousSibling){ + domUtils.remove(pn); + rng.setStartAtLast(node).collapse(true); + rng.select(true); + }else if(node = pn.nextSibling){ + domUtils.remove(pn); + rng.setStartAtFirst(node).collapse(true); + rng.select(true); + }else{ + var tmpNode = me.document.createElement('p'); + domUtils.fillNode(me.document,tmpNode); + pn.parentNode.insertBefore(tmpNode,pn); + domUtils.remove(pn); + rng.setStart(tmpNode,0).collapse(true); + rng.select(true); + } + } + } + } + + }) + }) + }); + + function getStyle(node){ + var cls = node.className; + if(domUtils.hasClass(node,/custom_/)){ + return cls.match(/custom_(\w+)/)[1] + } + return domUtils.getStyle(node, 'list-style-type') + + } + + me.addListener('beforepaste',function(type,html){ + var me = this, + rng = me.selection.getRange(),li; + var root = UE.htmlparser(html.html,true); + if(li = domUtils.findParentByTagName(rng.startContainer,'li',true)){ + var list = li.parentNode,tagName = list.tagName == 'OL' ? 'ul':'ol'; + utils.each(root.getNodesByTagName(tagName),function(n){ + n.tagName = list.tagName; + n.setAttr(); + if(n.parentNode === root){ + type = getStyle(list) || (list.tagName == 'OL' ? 'decimal' : 'disc') + }else{ + var className = n.parentNode.getAttr('class'); + if(className && /custom_/.test(className)){ + type = className.match(/custom_(\w+)/)[1] + }else{ + type = n.parentNode.getStyle('list-style-type'); + } + if(!type){ + type = list.tagName == 'OL' ? 'decimal' : 'disc'; + } + } + var index = utils.indexOf(listStyle[list.tagName], type); + if(n.parentNode !== root) + index = index + 1 == listStyle[list.tagName].length ? 0 : index + 1; + var currentStyle = listStyle[list.tagName][index]; + if(customStyle[currentStyle]){ + n.setAttr('class', 'custom_' + currentStyle) + + }else{ + n.setStyle('list-style-type',currentStyle) + } + }) + + } + + html.html = root.toHtml(); + }); + //导出时,去掉p标签 + me.getOpt('disablePInList') === true && me.addOutputRule(function(root){ + utils.each(root.getNodesByTagName('li'),function(li){ + var newChildrens = [],index=0; + utils.each(li.children,function(n){ + if(n.tagName == 'p'){ + var tmpNode; + while(tmpNode = n.children.pop()) { + newChildrens.splice(index,0,tmpNode); + tmpNode.parentNode = li; + lastNode = tmpNode; + } + tmpNode = newChildrens[newChildrens.length-1]; + if(!tmpNode || tmpNode.type != 'element' || tmpNode.tagName != 'br'){ + var br = UE.uNode.createElement('br'); + br.parentNode = li; + newChildrens.push(br); + } + + index = newChildrens.length; + } + }); + if(newChildrens.length){ + li.children = newChildrens; + } + }); + }); + //进入编辑器的li要套p标签 + me.addInputRule(function(root){ + utils.each(root.getNodesByTagName('li'),function(li){ + var tmpP = UE.uNode.createElement('p'); + for(var i= 0,ci;ci=li.children[i];){ + if(ci.type == 'text' || dtd.p[ci.tagName]){ + tmpP.appendChild(ci); + }else{ + if(tmpP.firstChild()){ + li.insertBefore(tmpP,ci); + tmpP = UE.uNode.createElement('p'); + i = i + 2; + }else{ + i++; + } + + } + } + if(tmpP.firstChild() && !tmpP.parentNode || !li.firstChild()){ + li.appendChild(tmpP); + } + //trace:3357 + //p不能为空 + if (!tmpP.firstChild()) { + tmpP.innerHTML(browser.ie ? ' ' : '
    ') + } + //去掉末尾的空白 + var p = li.firstChild(); + var lastChild = p.lastChild(); + if(lastChild && lastChild.type == 'text' && /^\s*$/.test(lastChild.data)){ + p.removeChild(lastChild) + } + }); + if(me.options.autoTransWordToList){ + var orderlisttype = { + 'num1':/^\d+\)/, + 'decimal':/^\d+\./, + 'lower-alpha':/^[a-z]+\)/, + 'upper-alpha':/^[A-Z]+\./, + 'cn':/^[\u4E00\u4E8C\u4E09\u56DB\u516d\u4e94\u4e03\u516b\u4e5d]+[\u3001]/, + 'cn2':/^\([\u4E00\u4E8C\u4E09\u56DB\u516d\u4e94\u4e03\u516b\u4e5d]+\)/ + }, + unorderlisttype = { + 'square':'n' + }; + function checkListType(content,container){ + var span = container.firstChild(); + if(span && span.type == 'element' && span.tagName == 'span' && /Wingdings|Symbol/.test(span.getStyle('font-family'))){ + for(var p in unorderlisttype){ + if(unorderlisttype[p] == span.data){ + return p + } + } + return 'disc' + } + for(var p in orderlisttype){ + if(orderlisttype[p].test(content)){ + return p; + } + } + + } + utils.each(root.getNodesByTagName('p'),function(node){ + if(node.getAttr('class') != 'MsoListParagraph'){ + return + } + + //word粘贴过来的会带有margin要去掉,但这样也可能会误命中一些央视 + node.setStyle('margin',''); + node.setStyle('margin-left',''); + node.setAttr('class',''); + + function appendLi(list,p,type){ + if(list.tagName == 'ol'){ + if(browser.ie){ + var first = p.firstChild(); + if(first.type =='element' && first.tagName == 'span' && orderlisttype[type].test(first.innerText())){ + p.removeChild(first); + } + }else{ + p.innerHTML(p.innerHTML().replace(orderlisttype[type],'')); + } + }else{ + p.removeChild(p.firstChild()) + } + + var li = UE.uNode.createElement('li'); + li.appendChild(p); + list.appendChild(li); + } + var tmp = node,type,cacheNode = node; + + if(node.parentNode.tagName != 'li' && (type = checkListType(node.innerText(),node))){ + + var list = UE.uNode.createElement(me.options.insertorderedlist.hasOwnProperty(type) ? 'ol' : 'ul'); + if(customStyle[type]){ + list.setAttr('class','custom_'+type) + }else{ + list.setStyle('list-style-type',type) + } + while(node && node.parentNode.tagName != 'li' && checkListType(node.innerText(),node)){ + tmp = node.nextSibling(); + if(!tmp){ + node.parentNode.insertBefore(list,node) + } + appendLi(list,node,type); + node = tmp; + } + if(!list.parentNode && node && node.parentNode){ + node.parentNode.insertBefore(list,node) + } + } + var span = cacheNode.firstChild(); + if(span && span.type == 'element' && span.tagName == 'span' && /^\s*( )+\s*$/.test(span.innerText())){ + span.parentNode.removeChild(span) + } + }) + } + + }); + + //调整索引标签 + me.addListener('contentchange',function(){ + adjustListStyle(me.document) + }); + + function adjustListStyle(doc,ignore){ + utils.each(domUtils.getElementsByTagName(doc,'ol ul'),function(node){ + + if(!domUtils.inDoc(node,doc)) + return; + + var parent = node.parentNode; + if(parent.tagName == node.tagName){ + var nodeStyleType = getStyle(node) || (node.tagName == 'OL' ? 'decimal' : 'disc'), + parentStyleType = getStyle(parent) || (parent.tagName == 'OL' ? 'decimal' : 'disc'); + if(nodeStyleType == parentStyleType){ + var styleIndex = utils.indexOf(listStyle[node.tagName], nodeStyleType); + styleIndex = styleIndex + 1 == listStyle[node.tagName].length ? 0 : styleIndex + 1; + setListStyle(node,listStyle[node.tagName][styleIndex]) + } + + } + var index = 0,type = 2; + if( domUtils.hasClass(node,/custom_/)){ + if(!(/[ou]l/i.test(parent.tagName) && domUtils.hasClass(parent,/custom_/))){ + type = 1; + } + }else{ + if(/[ou]l/i.test(parent.tagName) && domUtils.hasClass(parent,/custom_/)){ + type = 3; + } + } + + var style = domUtils.getStyle(node, 'list-style-type'); + style && (node.style.cssText = 'list-style-type:' + style); + node.className = utils.trim(node.className.replace(/list-paddingleft-\w+/,'')) + ' list-paddingleft-' + type; + utils.each(domUtils.getElementsByTagName(node,'li'),function(li){ + li.style.cssText && (li.style.cssText = ''); + if(!li.firstChild){ + domUtils.remove(li); + return; + } + if(li.parentNode !== node){ + return; + } + index++; + if(domUtils.hasClass(node,/custom_/) ){ + var paddingLeft = 1,currentStyle = getStyle(node); + if(node.tagName == 'OL'){ + if(currentStyle){ + switch(currentStyle){ + case 'cn' : + case 'cn1': + case 'cn2': + if(index > 10 && (index % 10 == 0 || index > 10 && index < 20)){ + paddingLeft = 2 + }else if(index > 20){ + paddingLeft = 3 + } + break; + case 'num2' : + if(index > 9){ + paddingLeft = 2 + } + } + } + li.className = 'list-'+customStyle[currentStyle]+ index + ' ' + 'list-'+currentStyle+'-paddingleft-' + paddingLeft; + }else{ + li.className = 'list-'+customStyle[currentStyle] + ' ' + 'list-'+currentStyle+'-paddingleft'; + } + }else{ + li.className = li.className.replace(/list-[\w\-]+/gi,''); + } + var className = li.getAttribute('class'); + if(className !== null && !className.replace(/\s/g,'')){ + domUtils.removeAttributes(li,'class') + } + }); + !ignore && adjustList(node,node.tagName.toLowerCase(),getStyle(node)||domUtils.getStyle(node, 'list-style-type'),true); + }) + } + function adjustList(list, tag, style,ignoreEmpty) { + var nextList = list.nextSibling; + if (nextList && nextList.nodeType == 1 && nextList.tagName.toLowerCase() == tag && (getStyle(nextList) || domUtils.getStyle(nextList, 'list-style-type') || (tag == 'ol' ? 'decimal' : 'disc')) == style) { + domUtils.moveChild(nextList, list); + if (nextList.childNodes.length == 0) { + domUtils.remove(nextList); + } + } + if(nextList && domUtils.isFillChar(nextList)){ + domUtils.remove(nextList); + } + var preList = list.previousSibling; + if (preList && preList.nodeType == 1 && preList.tagName.toLowerCase() == tag && (getStyle(preList) || domUtils.getStyle(preList, 'list-style-type') || (tag == 'ol' ? 'decimal' : 'disc')) == style) { + domUtils.moveChild(list, preList); + } + if(preList && domUtils.isFillChar(preList)){ + domUtils.remove(preList); + } + !ignoreEmpty && domUtils.isEmptyBlock(list) && domUtils.remove(list); + if(getStyle(list)){ + adjustListStyle(list.ownerDocument,true) + } + } + + function setListStyle(list,style){ + if(customStyle[style]){ + list.className = 'custom_' + style; + } + try{ + domUtils.setStyle(list, 'list-style-type', style); + }catch(e){} + } + function clearEmptySibling(node) { + var tmpNode = node.previousSibling; + if (tmpNode && domUtils.isEmptyBlock(tmpNode)) { + domUtils.remove(tmpNode); + } + tmpNode = node.nextSibling; + if (tmpNode && domUtils.isEmptyBlock(tmpNode)) { + domUtils.remove(tmpNode); + } + } + + me.addListener('keydown', function (type, evt) { + function preventAndSave() { + evt.preventDefault ? evt.preventDefault() : (evt.returnValue = false); + me.fireEvent('contentchange'); + me.undoManger && me.undoManger.save(); + } + function findList(node,filterFn){ + while(node && !domUtils.isBody(node)){ + if(filterFn(node)){ + return null + } + if(node.nodeType == 1 && /[ou]l/i.test(node.tagName)){ + return node; + } + node = node.parentNode; + } + return null; + } + var keyCode = evt.keyCode || evt.which; + if (keyCode == 13 && !evt.shiftKey) {//回车 + var rng = me.selection.getRange(), + parent = domUtils.findParent(rng.startContainer,function(node){return domUtils.isBlockElm(node)},true), + li = domUtils.findParentByTagName(rng.startContainer,'li',true); + if(parent && parent.tagName != 'PRE' && !li){ + var html = parent.innerHTML.replace(new RegExp(domUtils.fillChar, 'g'),''); + if(/^\s*1\s*\.[^\d]/.test(html)){ + parent.innerHTML = html.replace(/^\s*1\s*\./,''); + rng.setStartAtLast(parent).collapse(true).select(); + me.__hasEnterExecCommand = true; + me.execCommand('insertorderedlist'); + me.__hasEnterExecCommand = false; + } + } + var range = me.selection.getRange(), + start = findList(range.startContainer,function (node) { + return node.tagName == 'TABLE'; + }), + end = range.collapsed ? start : findList(range.endContainer,function (node) { + return node.tagName == 'TABLE'; + }); + + if (start && end && start === end) { + + if (!range.collapsed) { + start = domUtils.findParentByTagName(range.startContainer, 'li', true); + end = domUtils.findParentByTagName(range.endContainer, 'li', true); + if (start && end && start === end) { + range.deleteContents(); + li = domUtils.findParentByTagName(range.startContainer, 'li', true); + if (li && domUtils.isEmptyBlock(li)) { + + pre = li.previousSibling; + next = li.nextSibling; + p = me.document.createElement('p'); + + domUtils.fillNode(me.document, p); + parentList = li.parentNode; + if (pre && next) { + range.setStart(next, 0).collapse(true).select(true); + domUtils.remove(li); + + } else { + if (!pre && !next || !pre) { + + parentList.parentNode.insertBefore(p, parentList); + + + } else { + li.parentNode.parentNode.insertBefore(p, parentList.nextSibling); + } + domUtils.remove(li); + if (!parentList.firstChild) { + domUtils.remove(parentList); + } + range.setStart(p, 0).setCursor(); + + + } + preventAndSave(); + return; + + } + } else { + var tmpRange = range.cloneRange(), + bk = tmpRange.collapse(false).createBookmark(); + + range.deleteContents(); + tmpRange.moveToBookmark(bk); + var li = domUtils.findParentByTagName(tmpRange.startContainer, 'li', true); + + clearEmptySibling(li); + tmpRange.select(); + preventAndSave(); + return; + } + } + + + li = domUtils.findParentByTagName(range.startContainer, 'li', true); + + if (li) { + if (domUtils.isEmptyBlock(li)) { + bk = range.createBookmark(); + var parentList = li.parentNode; + if (li !== parentList.lastChild) { + domUtils.breakParent(li, parentList); + clearEmptySibling(li); + } else { + + parentList.parentNode.insertBefore(li, parentList.nextSibling); + if (domUtils.isEmptyNode(parentList)) { + domUtils.remove(parentList); + } + } + //嵌套不处理 + if (!dtd.$list[li.parentNode.tagName]) { + + if (!domUtils.isBlockElm(li.firstChild)) { + p = me.document.createElement('p'); + li.parentNode.insertBefore(p, li); + while (li.firstChild) { + p.appendChild(li.firstChild); + } + domUtils.remove(li); + } else { + domUtils.remove(li, true); + } + } + range.moveToBookmark(bk).select(); + + + } else { + var first = li.firstChild; + if (!first || !domUtils.isBlockElm(first)) { + var p = me.document.createElement('p'); + + !li.firstChild && domUtils.fillNode(me.document, p); + while (li.firstChild) { + + p.appendChild(li.firstChild); + } + li.appendChild(p); + first = p; + } + + var span = me.document.createElement('span'); + + range.insertNode(span); + domUtils.breakParent(span, li); + + var nextLi = span.nextSibling; + first = nextLi.firstChild; + + if (!first) { + p = me.document.createElement('p'); + + domUtils.fillNode(me.document, p); + nextLi.appendChild(p); + first = p; + } + if (domUtils.isEmptyNode(first)) { + first.innerHTML = ''; + domUtils.fillNode(me.document, first); + } + + range.setStart(first, 0).collapse(true).shrinkBoundary().select(); + domUtils.remove(span); + var pre = nextLi.previousSibling; + if (pre && domUtils.isEmptyBlock(pre)) { + pre.innerHTML = '

    '; + domUtils.fillNode(me.document, pre.firstChild); + } + + } +// } + preventAndSave(); + } + + + } + + + } + if (keyCode == 8) { + //修中ie中li下的问题 + range = me.selection.getRange(); + if (range.collapsed && domUtils.isStartInblock(range)) { + tmpRange = range.cloneRange().trimBoundary(); + li = domUtils.findParentByTagName(range.startContainer, 'li', true); + //要在li的最左边,才能处理 + if (li && domUtils.isStartInblock(tmpRange)) { + start = domUtils.findParentByTagName(range.startContainer, 'p', true); + if (start && start !== li.firstChild) { + var parentList = domUtils.findParentByTagName(start,['ol','ul']); + domUtils.breakParent(start,parentList); + clearEmptySibling(start); + me.fireEvent('contentchange'); + range.setStart(start,0).setCursor(false,true); + me.fireEvent('saveScene'); + domUtils.preventDefault(evt); + return; + } + + if (li && (pre = li.previousSibling)) { + if (keyCode == 46 && li.childNodes.length) { + return; + } + //有可能上边的兄弟节点是个2级菜单,要追加到2级菜单的最后的li + if (dtd.$list[pre.tagName]) { + pre = pre.lastChild; + } + me.undoManger && me.undoManger.save(); + first = li.firstChild; + if (domUtils.isBlockElm(first)) { + if (domUtils.isEmptyNode(first)) { +// range.setEnd(pre, pre.childNodes.length).shrinkBoundary().collapse().select(true); + pre.appendChild(first); + range.setStart(first, 0).setCursor(false, true); + //first不是唯一的节点 + while (li.firstChild) { + pre.appendChild(li.firstChild); + } + } else { + + span = me.document.createElement('span'); + range.insertNode(span); + //判断pre是否是空的节点,如果是


    类型的空节点,干掉p标签防止它占位 + if (domUtils.isEmptyBlock(pre)) { + pre.innerHTML = ''; + } + domUtils.moveChild(li, pre); + range.setStartBefore(span).collapse(true).select(true); + + domUtils.remove(span); + + } + } else { + if (domUtils.isEmptyNode(li)) { + var p = me.document.createElement('p'); + pre.appendChild(p); + range.setStart(p, 0).setCursor(); +// range.setEnd(pre, pre.childNodes.length).shrinkBoundary().collapse().select(true); + } else { + range.setEnd(pre, pre.childNodes.length).collapse().select(true); + while (li.firstChild) { + pre.appendChild(li.firstChild); + } + } + } + domUtils.remove(li); + me.fireEvent('contentchange'); + me.fireEvent('saveScene'); + domUtils.preventDefault(evt); + return; + + } + //trace:980 + + if (li && !li.previousSibling) { + var parentList = li.parentNode; + var bk = range.createBookmark(); + if(domUtils.isTagNode(parentList.parentNode,'ol ul')){ + parentList.parentNode.insertBefore(li,parentList); + if(domUtils.isEmptyNode(parentList)){ + domUtils.remove(parentList) + } + }else{ + + while(li.firstChild){ + parentList.parentNode.insertBefore(li.firstChild,parentList); + } + + domUtils.remove(li); + if(domUtils.isEmptyNode(parentList)){ + domUtils.remove(parentList) + } + + } + range.moveToBookmark(bk).setCursor(false,true); + me.fireEvent('contentchange'); + me.fireEvent('saveScene'); + domUtils.preventDefault(evt); + return; + + } + + + } + + + } + + } + }); + + me.addListener('keyup',function(type, evt){ + var keyCode = evt.keyCode || evt.which; + if (keyCode == 8) { + var rng = me.selection.getRange(),list; + if(list = domUtils.findParentByTagName(rng.startContainer,['ol', 'ul'],true)){ + adjustList(list,list.tagName.toLowerCase(),getStyle(list)||domUtils.getComputedStyle(list,'list-style-type'),true) + } + } + }); + //处理tab键 + me.addListener('tabkeydown',function(){ + + var range = me.selection.getRange(); + + //控制级数 + function checkLevel(li){ + if(me.options.maxListLevel != -1){ + var level = li.parentNode,levelNum = 0; + while(/[ou]l/i.test(level.tagName)){ + levelNum++; + level = level.parentNode; + } + if(levelNum >= me.options.maxListLevel){ + return true; + } + } + } + //只以开始为准 + //todo 后续改进 + var li = domUtils.findParentByTagName(range.startContainer, 'li', true); + if(li){ + + var bk; + if(range.collapsed){ + if(checkLevel(li)) + return true; + var parentLi = li.parentNode, + list = me.document.createElement(parentLi.tagName), + index = utils.indexOf(listStyle[list.tagName], getStyle(parentLi)||domUtils.getComputedStyle(parentLi, 'list-style-type')); + index = index + 1 == listStyle[list.tagName].length ? 0 : index + 1; + var currentStyle = listStyle[list.tagName][index]; + setListStyle(list,currentStyle); + if(domUtils.isStartInblock(range)){ + me.fireEvent('saveScene'); + bk = range.createBookmark(); + parentLi.insertBefore(list, li); + list.appendChild(li); + adjustList(list,list.tagName.toLowerCase(),currentStyle); + me.fireEvent('contentchange'); + range.moveToBookmark(bk).select(true); + return true; + } + }else{ + me.fireEvent('saveScene'); + bk = range.createBookmark(); + for(var i= 0,closeList,parents = domUtils.findParents(li),ci;ci=parents[i++];){ + if(domUtils.isTagNode(ci,'ol ul')){ + closeList = ci; + break; + } + } + var current = li; + if(bk.end){ + while(current && !(domUtils.getPosition(current, bk.end) & domUtils.POSITION_FOLLOWING)){ + if(checkLevel(current)){ + current = domUtils.getNextDomNode(current,false,null,function(node){return node !== closeList}); + continue; + } + var parentLi = current.parentNode, + list = me.document.createElement(parentLi.tagName), + index = utils.indexOf(listStyle[list.tagName], getStyle(parentLi)||domUtils.getComputedStyle(parentLi, 'list-style-type')); + var currentIndex = index + 1 == listStyle[list.tagName].length ? 0 : index + 1; + var currentStyle = listStyle[list.tagName][currentIndex]; + setListStyle(list,currentStyle); + parentLi.insertBefore(list, current); + while(current && !(domUtils.getPosition(current, bk.end) & domUtils.POSITION_FOLLOWING)){ + li = current.nextSibling; + list.appendChild(current); + if(!li || domUtils.isTagNode(li,'ol ul')){ + if(li){ + while(li = li.firstChild){ + if(li.tagName == 'LI'){ + break; + } + } + }else{ + li = domUtils.getNextDomNode(current,false,null,function(node){return node !== closeList}); + } + break; + } + current = li; + } + adjustList(list,list.tagName.toLowerCase(),currentStyle); + current = li; + } + } + me.fireEvent('contentchange'); + range.moveToBookmark(bk).select(); + return true; + } + } + + }); + function getLi(start){ + while(start && !domUtils.isBody(start)){ + if(start.nodeName == 'TABLE'){ + return null; + } + if(start.nodeName == 'LI'){ + return start + } + start = start.parentNode; + } + } + + /** + * 有序列表,与“insertunorderedlist”命令互斥 + * @command insertorderedlist + * @method execCommand + * @param { String } command 命令字符串 + * @param { String } style 插入的有序列表类型,值为:decimal,lower-alpha,lower-roman,upper-alpha,upper-roman,cn,cn1,cn2,num,num1,num2 + * @example + * ```javascript + * editor.execCommand( 'insertorderedlist','decimal'); + * ``` + */ + /** + * 查询当前选区内容是否有序列表 + * @command insertorderedlist + * @method queryCommandState + * @param { String } cmd 命令字符串 + * @return { int } 如果当前选区是有序列表返回1,否则返回0 + * @example + * ```javascript + * editor.queryCommandState( 'insertorderedlist' ); + * ``` + */ + /** + * 查询当前选区内容是否有序列表 + * @command insertorderedlist + * @method queryCommandValue + * @param { String } cmd 命令字符串 + * @return { String } 返回当前有序列表的类型,值为null或decimal,lower-alpha,lower-roman,upper-alpha,upper-roman,cn,cn1,cn2,num,num1,num2 + * @example + * ```javascript + * editor.queryCommandValue( 'insertorderedlist' ); + * ``` + */ + + /** + * 无序列表,与“insertorderedlist”命令互斥 + * @command insertunorderedlist + * @method execCommand + * @param { String } command 命令字符串 + * @param { String } style 插入的无序列表类型,值为:circle,disc,square,dash,dot + * @example + * ```javascript + * editor.execCommand( 'insertunorderedlist','circle'); + * ``` + */ + /** + * 查询当前是否有word文档粘贴进来的图片 + * @command insertunorderedlist + * @method insertunorderedlist + * @param { String } command 命令字符串 + * @return { int } 如果当前选区是无序列表返回1,否则返回0 + * @example + * ```javascript + * editor.queryCommandState( 'insertunorderedlist' ); + * ``` + */ + /** + * 查询当前选区内容是否有序列表 + * @command insertunorderedlist + * @method queryCommandValue + * @param { String } command 命令字符串 + * @return { String } 返回当前无序列表的类型,值为null或circle,disc,square,dash,dot + * @example + * ```javascript + * editor.queryCommandValue( 'insertunorderedlist' ); + * ``` + */ + + me.commands['insertorderedlist'] = + me.commands['insertunorderedlist'] = { + execCommand:function (command, style) { + + if (!style) { + style = command.toLowerCase() == 'insertorderedlist' ? 'decimal' : 'disc'; + } + var me = this, + range = this.selection.getRange(), + filterFn = function (node) { + return node.nodeType == 1 ? node.tagName.toLowerCase() != 'br' : !domUtils.isWhitespace(node); + }, + tag = command.toLowerCase() == 'insertorderedlist' ? 'ol' : 'ul', + frag = me.document.createDocumentFragment(); + //去掉是因为会出现选到末尾,导致adjustmentBoundary缩到ol/ul的位置 + //range.shrinkBoundary();//.adjustmentBoundary(); + range.adjustmentBoundary().shrinkBoundary(); + var bko = range.createBookmark(true), + start = getLi(me.document.getElementById(bko.start)), + modifyStart = 0, + end = getLi(me.document.getElementById(bko.end)), + modifyEnd = 0, + startParent, endParent, + list, tmp; + + if (start || end) { + start && (startParent = start.parentNode); + if (!bko.end) { + end = start; + } + end && (endParent = end.parentNode); + + if (startParent === endParent) { + while (start !== end) { + tmp = start; + start = start.nextSibling; + if (!domUtils.isBlockElm(tmp.firstChild)) { + var p = me.document.createElement('p'); + while (tmp.firstChild) { + p.appendChild(tmp.firstChild); + } + tmp.appendChild(p); + } + frag.appendChild(tmp); + } + tmp = me.document.createElement('span'); + startParent.insertBefore(tmp, end); + if (!domUtils.isBlockElm(end.firstChild)) { + p = me.document.createElement('p'); + while (end.firstChild) { + p.appendChild(end.firstChild); + } + end.appendChild(p); + } + frag.appendChild(end); + domUtils.breakParent(tmp, startParent); + if (domUtils.isEmptyNode(tmp.previousSibling)) { + domUtils.remove(tmp.previousSibling); + } + if (domUtils.isEmptyNode(tmp.nextSibling)) { + domUtils.remove(tmp.nextSibling) + } + var nodeStyle = getStyle(startParent) || domUtils.getComputedStyle(startParent, 'list-style-type') || (command.toLowerCase() == 'insertorderedlist' ? 'decimal' : 'disc'); + if (startParent.tagName.toLowerCase() == tag && nodeStyle == style) { + for (var i = 0, ci, tmpFrag = me.document.createDocumentFragment(); ci = frag.firstChild;) { + if(domUtils.isTagNode(ci,'ol ul')){ +// 删除时,子列表不处理 +// utils.each(domUtils.getElementsByTagName(ci,'li'),function(li){ +// while(li.firstChild){ +// tmpFrag.appendChild(li.firstChild); +// } +// +// }); + tmpFrag.appendChild(ci); + }else{ + while (ci.firstChild) { + + tmpFrag.appendChild(ci.firstChild); + domUtils.remove(ci); + } + } + + } + tmp.parentNode.insertBefore(tmpFrag, tmp); + } else { + list = me.document.createElement(tag); + setListStyle(list,style); + list.appendChild(frag); + tmp.parentNode.insertBefore(list, tmp); + } + + domUtils.remove(tmp); + list && adjustList(list, tag, style); + range.moveToBookmark(bko).select(); + return; + } + //开始 + if (start) { + while (start) { + tmp = start.nextSibling; + if (domUtils.isTagNode(start, 'ol ul')) { + frag.appendChild(start); + } else { + var tmpfrag = me.document.createDocumentFragment(), + hasBlock = 0; + while (start.firstChild) { + if (domUtils.isBlockElm(start.firstChild)) { + hasBlock = 1; + } + tmpfrag.appendChild(start.firstChild); + } + if (!hasBlock) { + var tmpP = me.document.createElement('p'); + tmpP.appendChild(tmpfrag); + frag.appendChild(tmpP); + } else { + frag.appendChild(tmpfrag); + } + domUtils.remove(start); + } + + start = tmp; + } + startParent.parentNode.insertBefore(frag, startParent.nextSibling); + if (domUtils.isEmptyNode(startParent)) { + range.setStartBefore(startParent); + domUtils.remove(startParent); + } else { + range.setStartAfter(startParent); + } + modifyStart = 1; + } + + if (end && domUtils.inDoc(endParent, me.document)) { + //结束 + start = endParent.firstChild; + while (start && start !== end) { + tmp = start.nextSibling; + if (domUtils.isTagNode(start, 'ol ul')) { + frag.appendChild(start); + } else { + tmpfrag = me.document.createDocumentFragment(); + hasBlock = 0; + while (start.firstChild) { + if (domUtils.isBlockElm(start.firstChild)) { + hasBlock = 1; + } + tmpfrag.appendChild(start.firstChild); + } + if (!hasBlock) { + tmpP = me.document.createElement('p'); + tmpP.appendChild(tmpfrag); + frag.appendChild(tmpP); + } else { + frag.appendChild(tmpfrag); + } + domUtils.remove(start); + } + start = tmp; + } + var tmpDiv = domUtils.createElement(me.document, 'div', { + 'tmpDiv':1 + }); + domUtils.moveChild(end, tmpDiv); + + frag.appendChild(tmpDiv); + domUtils.remove(end); + endParent.parentNode.insertBefore(frag, endParent); + range.setEndBefore(endParent); + if (domUtils.isEmptyNode(endParent)) { + domUtils.remove(endParent); + } + + modifyEnd = 1; + } + + + } + + if (!modifyStart) { + range.setStartBefore(me.document.getElementById(bko.start)); + } + if (bko.end && !modifyEnd) { + range.setEndAfter(me.document.getElementById(bko.end)); + } + range.enlarge(true, function (node) { + return notExchange[node.tagName]; + }); + + frag = me.document.createDocumentFragment(); + + var bk = range.createBookmark(), + current = domUtils.getNextDomNode(bk.start, false, filterFn), + tmpRange = range.cloneRange(), + tmpNode, + block = domUtils.isBlockElm; + + while (current && current !== bk.end && (domUtils.getPosition(current, bk.end) & domUtils.POSITION_PRECEDING)) { + + if (current.nodeType == 3 || dtd.li[current.tagName]) { + if (current.nodeType == 1 && dtd.$list[current.tagName]) { + while (current.firstChild) { + frag.appendChild(current.firstChild); + } + tmpNode = domUtils.getNextDomNode(current, false, filterFn); + domUtils.remove(current); + current = tmpNode; + continue; + + } + tmpNode = current; + tmpRange.setStartBefore(current); + + while (current && current !== bk.end && (!block(current) || domUtils.isBookmarkNode(current) )) { + tmpNode = current; + current = domUtils.getNextDomNode(current, false, null, function (node) { + return !notExchange[node.tagName]; + }); + } + + if (current && block(current)) { + tmp = domUtils.getNextDomNode(tmpNode, false, filterFn); + if (tmp && domUtils.isBookmarkNode(tmp)) { + current = domUtils.getNextDomNode(tmp, false, filterFn); + tmpNode = tmp; + } + } + tmpRange.setEndAfter(tmpNode); + + current = domUtils.getNextDomNode(tmpNode, false, filterFn); + + var li = range.document.createElement('li'); + + li.appendChild(tmpRange.extractContents()); + if(domUtils.isEmptyNode(li)){ + var tmpNode = range.document.createElement('p'); + while(li.firstChild){ + tmpNode.appendChild(li.firstChild) + } + li.appendChild(tmpNode); + } + frag.appendChild(li); + } else { + current = domUtils.getNextDomNode(current, true, filterFn); + } + } + range.moveToBookmark(bk).collapse(true); + list = me.document.createElement(tag); + setListStyle(list,style); + list.appendChild(frag); + range.insertNode(list); + //当前list上下看能否合并 + adjustList(list, tag, style); + //去掉冗余的tmpDiv + for (var i = 0, ci, tmpDivs = domUtils.getElementsByTagName(list, 'div'); ci = tmpDivs[i++];) { + if (ci.getAttribute('tmpDiv')) { + domUtils.remove(ci, true) + } + } + range.moveToBookmark(bko).select(); + + }, + queryCommandState:function (command) { + var tag = command.toLowerCase() == 'insertorderedlist' ? 'ol' : 'ul'; + var path = this.selection.getStartElementPath(); + for(var i= 0,ci;ci = path[i++];){ + if(ci.nodeName == 'TABLE'){ + return 0 + } + if(tag == ci.nodeName.toLowerCase()){ + return 1 + }; + } + return 0; + + }, + queryCommandValue:function (command) { + var tag = command.toLowerCase() == 'insertorderedlist' ? 'ol' : 'ul'; + var path = this.selection.getStartElementPath(), + node; + for(var i= 0,ci;ci = path[i++];){ + if(ci.nodeName == 'TABLE'){ + node = null; + break; + } + if(tag == ci.nodeName.toLowerCase()){ + node = ci; + break; + }; + } + return node ? getStyle(node) || domUtils.getComputedStyle(node, 'list-style-type') : null; + } + }; +}; + + + +// plugins/source.js +/** + * 源码编辑插件 + * @file + * @since 1.2.6.1 + */ + +(function (){ + var sourceEditors = { + textarea: function (editor, holder){ + var textarea = holder.ownerDocument.createElement('textarea'); + textarea.style.cssText = 'position:absolute;resize:none;width:100%;height:100%;border:0;padding:0;margin:0;overflow-y:auto;'; + // todo: IE下只有onresize属性可用... 很纠结 + if (browser.ie && browser.version < 8) { + textarea.style.width = holder.offsetWidth + 'px'; + textarea.style.height = holder.offsetHeight + 'px'; + holder.onresize = function (){ + textarea.style.width = holder.offsetWidth + 'px'; + textarea.style.height = holder.offsetHeight + 'px'; + }; + } + holder.appendChild(textarea); + return { + setContent: function (content){ + textarea.value = content; + }, + getContent: function (){ + return textarea.value; + }, + select: function (){ + var range; + if (browser.ie) { + range = textarea.createTextRange(); + range.collapse(true); + range.select(); + } else { + //todo: chrome下无法设置焦点 + textarea.setSelectionRange(0, 0); + textarea.focus(); + } + }, + dispose: function (){ + holder.removeChild(textarea); + // todo + holder.onresize = null; + textarea = null; + holder = null; + } + }; + }, + codemirror: function (editor, holder){ + + var codeEditor = window.CodeMirror(holder, { + mode: "text/html", + tabMode: "indent", + lineNumbers: true, + lineWrapping:true + }); + var dom = codeEditor.getWrapperElement(); + dom.style.cssText = 'position:absolute;left:0;top:0;width:100%;height:100%;font-family:consolas,"Courier new",monospace;font-size:13px;'; + codeEditor.getScrollerElement().style.cssText = 'position:absolute;left:0;top:0;width:100%;height:100%;'; + codeEditor.refresh(); + return { + getCodeMirror:function(){ + return codeEditor; + }, + setContent: function (content){ + codeEditor.setValue(content); + }, + getContent: function (){ + return codeEditor.getValue(); + }, + select: function (){ + codeEditor.focus(); + }, + dispose: function (){ + holder.removeChild(dom); + dom = null; + codeEditor = null; + } + }; + } + }; + + UE.plugins['source'] = function (){ + var me = this; + var opt = this.options; + var sourceMode = false; + var sourceEditor; + var orgSetContent; + opt.sourceEditor = browser.ie ? 'textarea' : (opt.sourceEditor || 'codemirror'); + + me.setOpt({ + sourceEditorFirst:false + }); + function createSourceEditor(holder){ + return sourceEditors[opt.sourceEditor == 'codemirror' && window.CodeMirror ? 'codemirror' : 'textarea'](me, holder); + } + + var bakCssText; + //解决在源码模式下getContent不能得到最新的内容问题 + var oldGetContent, + bakAddress; + + /** + * 切换源码模式和编辑模式 + * @command source + * @method execCommand + * @param { String } cmd 命令字符串 + * @example + * ```javascript + * editor.execCommand( 'source'); + * ``` + */ + + /** + * 查询当前编辑区域的状态是源码模式还是可视化模式 + * @command source + * @method queryCommandState + * @param { String } cmd 命令字符串 + * @return { int } 如果当前是源码编辑模式,返回1,否则返回0 + * @example + * ```javascript + * editor.queryCommandState( 'source' ); + * ``` + */ + + me.commands['source'] = { + execCommand: function (){ + + sourceMode = !sourceMode; + if (sourceMode) { + bakAddress = me.selection.getRange().createAddress(false,true); + me.undoManger && me.undoManger.save(true); + if(browser.gecko){ + me.body.contentEditable = false; + } + + bakCssText = me.iframe.style.cssText; + me.iframe.style.cssText += 'position:absolute;left:-32768px;top:-32768px;'; + + + me.fireEvent('beforegetcontent'); + var root = UE.htmlparser(me.body.innerHTML); + me.filterOutputRule(root); + root.traversal(function (node) { + if (node.type == 'element') { + switch (node.tagName) { + case 'td': + case 'th': + case 'caption': + if(node.children && node.children.length == 1){ + if(node.firstChild().tagName == 'br' ){ + node.removeChild(node.firstChild()) + } + }; + break; + case 'pre': + node.innerText(node.innerText().replace(/ /g,' ')) + + } + } + }); + + me.fireEvent('aftergetcontent'); + + var content = root.toHtml(true); + + sourceEditor = createSourceEditor(me.iframe.parentNode); + + sourceEditor.setContent(content); + + orgSetContent = me.setContent; + + me.setContent = function(html){ + //这里暂时不触发事件,防止报错 + var root = UE.htmlparser(html); + me.filterInputRule(root); + html = root.toHtml(); + sourceEditor.setContent(html); + }; + + setTimeout(function (){ + sourceEditor.select(); + me.addListener('fullscreenchanged', function(){ + try{ + sourceEditor.getCodeMirror().refresh() + }catch(e){} + }); + }); + + //重置getContent,源码模式下取值也能是最新的数据 + oldGetContent = me.getContent; + me.getContent = function (){ + return sourceEditor.getContent() || '

    ' + (browser.ie ? '' : '
    ')+'

    '; + }; + } else { + me.iframe.style.cssText = bakCssText; + var cont = sourceEditor.getContent() || '

    ' + (browser.ie ? '' : '
    ')+'

    '; + //处理掉block节点前后的空格,有可能会误命中,暂时不考虑 + cont = cont.replace(new RegExp('[\\r\\t\\n ]*<\/?(\\w+)\\s*(?:[^>]*)>','g'), function(a,b){ + if(b && !dtd.$inlineWithA[b.toLowerCase()]){ + return a.replace(/(^[\n\r\t ]*)|([\n\r\t ]*$)/g,''); + } + return a.replace(/(^[\n\r\t]*)|([\n\r\t]*$)/g,'') + }); + + me.setContent = orgSetContent; + + me.setContent(cont); + sourceEditor.dispose(); + sourceEditor = null; + //还原getContent方法 + me.getContent = oldGetContent; + var first = me.body.firstChild; + //trace:1106 都删除空了,下边会报错,所以补充一个p占位 + if(!first){ + me.body.innerHTML = '

    '+(browser.ie?'':'
    ')+'

    '; + first = me.body.firstChild; + } + + + //要在ifm为显示时ff才能取到selection,否则报错 + //这里不能比较位置了 + me.undoManger && me.undoManger.save(true); + + if(browser.gecko){ + + var input = document.createElement('input'); + input.style.cssText = 'position:absolute;left:0;top:-32768px'; + + document.body.appendChild(input); + + me.body.contentEditable = false; + setTimeout(function(){ + domUtils.setViewportOffset(input, { left: -32768, top: 0 }); + input.focus(); + setTimeout(function(){ + me.body.contentEditable = true; + me.selection.getRange().moveToAddress(bakAddress).select(true); + domUtils.remove(input); + }); + + }); + }else{ + //ie下有可能报错,比如在代码顶头的情况 + try{ + me.selection.getRange().moveToAddress(bakAddress).select(true); + }catch(e){} + + } + } + this.fireEvent('sourcemodechanged', sourceMode); + }, + queryCommandState: function (){ + return sourceMode|0; + }, + notNeedUndo : 1 + }; + var oldQueryCommandState = me.queryCommandState; + + me.queryCommandState = function (cmdName){ + cmdName = cmdName.toLowerCase(); + if (sourceMode) { + //源码模式下可以开启的命令 + return cmdName in { + 'source' : 1, + 'fullscreen' : 1 + } ? 1 : -1 + } + return oldQueryCommandState.apply(this, arguments); + }; + + if(opt.sourceEditor == "codemirror"){ + + me.addListener("ready",function(){ + utils.loadFile(document,{ + src : opt.codeMirrorJsUrl || opt.UEDITOR_HOME_URL + "third-party/codemirror/codemirror.js", + tag : "script", + type : "text/javascript", + defer : "defer" + },function(){ + if(opt.sourceEditorFirst){ + setTimeout(function(){ + me.execCommand("source"); + },0); + } + }); + utils.loadFile(document,{ + tag : "link", + rel : "stylesheet", + type : "text/css", + href : opt.codeMirrorCssUrl || opt.UEDITOR_HOME_URL + "third-party/codemirror/codemirror.css" + }); + + }); + } + + }; + +})(); + +// plugins/enterkey.js +///import core +///import plugins/undo.js +///commands 设置回车标签p或br +///commandsName EnterKey +///commandsTitle 设置回车标签p或br +/** + * @description 处理回车 + * @author zhanyi + */ +UE.plugins['enterkey'] = function() { + var hTag, + me = this, + tag = me.options.enterTag; + me.addListener('keyup', function(type, evt) { + + var keyCode = evt.keyCode || evt.which; + if (keyCode == 13) { + var range = me.selection.getRange(), + start = range.startContainer, + doSave; + + //修正在h1-h6里边回车后不能嵌套p的问题 + if (!browser.ie) { + + if (/h\d/i.test(hTag)) { + if (browser.gecko) { + var h = domUtils.findParentByTagName(start, [ 'h1', 'h2', 'h3', 'h4', 'h5', 'h6','blockquote','caption','table'], true); + if (!h) { + me.document.execCommand('formatBlock', false, '

    '); + doSave = 1; + } + } else { + //chrome remove div + if (start.nodeType == 1) { + var tmp = me.document.createTextNode(''),div; + range.insertNode(tmp); + div = domUtils.findParentByTagName(tmp, 'div', true); + if (div) { + var p = me.document.createElement('p'); + while (div.firstChild) { + p.appendChild(div.firstChild); + } + div.parentNode.insertBefore(p, div); + domUtils.remove(div); + range.setStartBefore(tmp).setCursor(); + doSave = 1; + } + domUtils.remove(tmp); + + } + } + + if (me.undoManger && doSave) { + me.undoManger.save(); + } + } + //没有站位符,会出现多行的问题 + browser.opera && range.select(); + }else{ + me.fireEvent('saveScene',true,true) + } + } + }); + + me.addListener('keydown', function(type, evt) { + var keyCode = evt.keyCode || evt.which; + if (keyCode == 13) {//回车 + if(me.fireEvent('beforeenterkeydown')){ + domUtils.preventDefault(evt); + return; + } + me.fireEvent('saveScene',true,true); + hTag = ''; + + + var range = me.selection.getRange(); + + if (!range.collapsed) { + //跨td不能删 + var start = range.startContainer, + end = range.endContainer, + startTd = domUtils.findParentByTagName(start, 'td', true), + endTd = domUtils.findParentByTagName(end, 'td', true); + if (startTd && endTd && startTd !== endTd || !startTd && endTd || startTd && !endTd) { + evt.preventDefault ? evt.preventDefault() : ( evt.returnValue = false); + return; + } + } + if (tag == 'p') { + + + if (!browser.ie) { + + start = domUtils.findParentByTagName(range.startContainer, ['ol','ul','p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6','blockquote','caption'], true); + + //opera下执行formatblock会在table的场景下有问题,回车在opera原生支持很好,所以暂时在opera去掉调用这个原生的command + //trace:2431 + if (!start && !browser.opera) { + + me.document.execCommand('formatBlock', false, '

    '); + + if (browser.gecko) { + range = me.selection.getRange(); + start = domUtils.findParentByTagName(range.startContainer, 'p', true); + start && domUtils.removeDirtyAttr(start); + } + + + } else { + hTag = start.tagName; + start.tagName.toLowerCase() == 'p' && browser.gecko && domUtils.removeDirtyAttr(start); + } + + } + + } else { + evt.preventDefault ? evt.preventDefault() : ( evt.returnValue = false); + + if (!range.collapsed) { + range.deleteContents(); + start = range.startContainer; + if (start.nodeType == 1 && (start = start.childNodes[range.startOffset])) { + while (start.nodeType == 1) { + if (dtd.$empty[start.tagName]) { + range.setStartBefore(start).setCursor(); + if (me.undoManger) { + me.undoManger.save(); + } + return false; + } + if (!start.firstChild) { + var br = range.document.createElement('br'); + start.appendChild(br); + range.setStart(start, 0).setCursor(); + if (me.undoManger) { + me.undoManger.save(); + } + return false; + } + start = start.firstChild; + } + if (start === range.startContainer.childNodes[range.startOffset]) { + br = range.document.createElement('br'); + range.insertNode(br).setCursor(); + + } else { + range.setStart(start, 0).setCursor(); + } + + + } else { + br = range.document.createElement('br'); + range.insertNode(br).setStartAfter(br).setCursor(); + } + + + } else { + br = range.document.createElement('br'); + range.insertNode(br); + var parent = br.parentNode; + if (parent.lastChild === br) { + br.parentNode.insertBefore(br.cloneNode(true), br); + range.setStartBefore(br); + } else { + range.setStartAfter(br); + } + range.setCursor(); + + } + + } + + } + }); +}; + + +// plugins/keystrokes.js +/* 处理特殊键的兼容性问题 */ +UE.plugins['keystrokes'] = function() { + var me = this; + var collapsed = true; + me.addListener('keydown', function(type, evt) { + var keyCode = evt.keyCode || evt.which, + rng = me.selection.getRange(); + + //处理全选的情况 + if(!rng.collapsed && !(evt.ctrlKey || evt.shiftKey || evt.altKey || evt.metaKey) && (keyCode >= 65 && keyCode <=90 + || keyCode >= 48 && keyCode <= 57 || + keyCode >= 96 && keyCode <= 111 || { + 13:1, + 8:1, + 46:1 + }[keyCode]) + ){ + + var tmpNode = rng.startContainer; + if(domUtils.isFillChar(tmpNode)){ + rng.setStartBefore(tmpNode) + } + tmpNode = rng.endContainer; + if(domUtils.isFillChar(tmpNode)){ + rng.setEndAfter(tmpNode) + } + rng.txtToElmBoundary(); + //结束边界可能放到了br的前边,要把br包含进来 + // x[xxx]
    + if(rng.endContainer && rng.endContainer.nodeType == 1){ + tmpNode = rng.endContainer.childNodes[rng.endOffset]; + if(tmpNode && domUtils.isBr(tmpNode)){ + rng.setEndAfter(tmpNode); + } + } + if(rng.startOffset == 0){ + tmpNode = rng.startContainer; + if(domUtils.isBoundaryNode(tmpNode,'firstChild') ){ + tmpNode = rng.endContainer; + if(rng.endOffset == (tmpNode.nodeType == 3 ? tmpNode.nodeValue.length : tmpNode.childNodes.length) && domUtils.isBoundaryNode(tmpNode,'lastChild')){ + me.fireEvent('saveScene'); + me.body.innerHTML = '

    '+(browser.ie ? '' : '
    ')+'

    '; + rng.setStart(me.body.firstChild,0).setCursor(false,true); + me._selectionChange(); + return; + } + } + } + } + + //处理backspace + if (keyCode == keymap.Backspace) { + rng = me.selection.getRange(); + collapsed = rng.collapsed; + if(me.fireEvent('delkeydown',evt)){ + return; + } + var start,end; + //避免按两次删除才能生效的问题 + if(rng.collapsed && rng.inFillChar()){ + start = rng.startContainer; + + if(domUtils.isFillChar(start)){ + rng.setStartBefore(start).shrinkBoundary(true).collapse(true); + domUtils.remove(start) + }else{ + start.nodeValue = start.nodeValue.replace(new RegExp('^' + domUtils.fillChar ),''); + rng.startOffset--; + rng.collapse(true).select(true) + } + } + + //解决选中control元素不能删除的问题 + if (start = rng.getClosedNode()) { + me.fireEvent('saveScene'); + rng.setStartBefore(start); + domUtils.remove(start); + rng.setCursor(); + me.fireEvent('saveScene'); + domUtils.preventDefault(evt); + return; + } + //阻止在table上的删除 + if (!browser.ie) { + start = domUtils.findParentByTagName(rng.startContainer, 'table', true); + end = domUtils.findParentByTagName(rng.endContainer, 'table', true); + if (start && !end || !start && end || start !== end) { + evt.preventDefault(); + return; + } + } + + } + //处理tab键的逻辑 + if (keyCode == keymap.Tab) { + //不处理以下标签 + var excludeTagNameForTabKey = { + 'ol' : 1, + 'ul' : 1, + 'table':1 + }; + //处理组件里的tab按下事件 + if(me.fireEvent('tabkeydown',evt)){ + domUtils.preventDefault(evt); + return; + } + var range = me.selection.getRange(); + me.fireEvent('saveScene'); + for (var i = 0,txt = '',tabSize = me.options.tabSize|| 4,tabNode = me.options.tabNode || ' '; i < tabSize; i++) { + txt += tabNode; + } + var span = me.document.createElement('span'); + span.innerHTML = txt + domUtils.fillChar; + if (range.collapsed) { + range.insertNode(span.cloneNode(true).firstChild).setCursor(true); + } else { + var filterFn = function(node) { + return domUtils.isBlockElm(node) && !excludeTagNameForTabKey[node.tagName.toLowerCase()] + + }; + //普通的情况 + start = domUtils.findParent(range.startContainer, filterFn,true); + end = domUtils.findParent(range.endContainer, filterFn,true); + if (start && end && start === end) { + range.deleteContents(); + range.insertNode(span.cloneNode(true).firstChild).setCursor(true); + } else { + var bookmark = range.createBookmark(); + range.enlarge(true); + var bookmark2 = range.createBookmark(), + current = domUtils.getNextDomNode(bookmark2.start, false, filterFn); + while (current && !(domUtils.getPosition(current, bookmark2.end) & domUtils.POSITION_FOLLOWING)) { + current.insertBefore(span.cloneNode(true).firstChild, current.firstChild); + current = domUtils.getNextDomNode(current, false, filterFn); + } + range.moveToBookmark(bookmark2).moveToBookmark(bookmark).select(); + } + } + domUtils.preventDefault(evt) + } + //trace:1634 + //ff的del键在容器空的时候,也会删除 + if(browser.gecko && keyCode == 46){ + range = me.selection.getRange(); + if(range.collapsed){ + start = range.startContainer; + if(domUtils.isEmptyBlock(start)){ + var parent = start.parentNode; + while(domUtils.getChildCount(parent) == 1 && !domUtils.isBody(parent)){ + start = parent; + parent = parent.parentNode; + } + if(start === parent.lastChild) + evt.preventDefault(); + return; + } + } + } + }); + me.addListener('keyup', function(type, evt) { + var keyCode = evt.keyCode || evt.which, + rng,me = this; + if(keyCode == keymap.Backspace){ + if(me.fireEvent('delkeyup')){ + return; + } + rng = me.selection.getRange(); + if(rng.collapsed){ + var tmpNode, + autoClearTagName = ['h1','h2','h3','h4','h5','h6']; + if(tmpNode = domUtils.findParentByTagName(rng.startContainer,autoClearTagName,true)){ + if(domUtils.isEmptyBlock(tmpNode)){ + var pre = tmpNode.previousSibling; + if(pre && pre.nodeName != 'TABLE'){ + domUtils.remove(tmpNode); + rng.setStartAtLast(pre).setCursor(false,true); + return; + }else{ + var next = tmpNode.nextSibling; + if(next && next.nodeName != 'TABLE'){ + domUtils.remove(tmpNode); + rng.setStartAtFirst(next).setCursor(false,true); + return; + } + } + } + } + //处理当删除到body时,要重新给p标签展位 + if(domUtils.isBody(rng.startContainer)){ + var tmpNode = domUtils.createElement(me.document,'p',{ + 'innerHTML' : browser.ie ? domUtils.fillChar : '
    ' + }); + rng.insertNode(tmpNode).setStart(tmpNode,0).setCursor(false,true); + } + } + + + //chrome下如果删除了inline标签,浏览器会有记忆,在输入文字还是会套上刚才删除的标签,所以这里再选一次就不会了 + if( !collapsed && (rng.startContainer.nodeType == 3 || rng.startContainer.nodeType == 1 && domUtils.isEmptyBlock(rng.startContainer))){ + if(browser.ie){ + var span = rng.document.createElement('span'); + rng.insertNode(span).setStartBefore(span).collapse(true); + rng.select(); + domUtils.remove(span) + }else{ + rng.select() + } + + } + } + + + }) +}; + +// plugins/fiximgclick.js +///import core +///commands 修复chrome下图片不能点击的问题,出现八个角可改变大小 +///commandsName FixImgClick +///commandsTitle 修复chrome下图片不能点击的问题,出现八个角可改变大小 +//修复chrome下图片不能点击的问题,出现八个角可改变大小 + +UE.plugins['fiximgclick'] = (function () { + + var elementUpdated = false; + function Scale() { + this.editor = null; + this.resizer = null; + this.cover = null; + this.doc = document; + this.prePos = {x: 0, y: 0}; + this.startPos = {x: 0, y: 0}; + } + + (function () { + var rect = [ + //[left, top, width, height] + [0, 0, -1, -1], + [0, 0, 0, -1], + [0, 0, 1, -1], + [0, 0, -1, 0], + [0, 0, 1, 0], + [0, 0, -1, 1], + [0, 0, 0, 1], + [0, 0, 1, 1] + ]; + + Scale.prototype = { + init: function (editor) { + var me = this; + me.editor = editor; + me.startPos = this.prePos = {x: 0, y: 0}; + me.dragId = -1; + + var hands = [], + cover = me.cover = document.createElement('div'), + resizer = me.resizer = document.createElement('div'); + + cover.id = me.editor.ui.id + '_imagescale_cover'; + cover.style.cssText = 'position:absolute;display:none;z-index:' + (me.editor.options.zIndex) + ';filter:alpha(opacity=0); opacity:0;background:#CCC;'; + domUtils.on(cover, 'mousedown click', function () { + me.hide(); + }); + + for (i = 0; i < 8; i++) { + hands.push(''); + } + resizer.id = me.editor.ui.id + '_imagescale'; + resizer.className = 'edui-editor-imagescale'; + resizer.innerHTML = hands.join(''); + resizer.style.cssText += ';display:none;border:1px solid #3b77ff;z-index:' + (me.editor.options.zIndex) + ';'; + + me.editor.ui.getDom().appendChild(cover); + me.editor.ui.getDom().appendChild(resizer); + + me.initStyle(); + me.initEvents(); + }, + initStyle: function () { + utils.cssRule('imagescale', '.edui-editor-imagescale{display:none;position:absolute;border:1px solid #38B2CE;cursor:hand;-webkit-box-sizing: content-box;-moz-box-sizing: content-box;box-sizing: content-box;}' + + '.edui-editor-imagescale span{position:absolute;width:6px;height:6px;overflow:hidden;font-size:0px;display:block;background-color:#3C9DD0;}' + + '.edui-editor-imagescale .edui-editor-imagescale-hand0{cursor:nw-resize;top:0;margin-top:-4px;left:0;margin-left:-4px;}' + + '.edui-editor-imagescale .edui-editor-imagescale-hand1{cursor:n-resize;top:0;margin-top:-4px;left:50%;margin-left:-4px;}' + + '.edui-editor-imagescale .edui-editor-imagescale-hand2{cursor:ne-resize;top:0;margin-top:-4px;left:100%;margin-left:-3px;}' + + '.edui-editor-imagescale .edui-editor-imagescale-hand3{cursor:w-resize;top:50%;margin-top:-4px;left:0;margin-left:-4px;}' + + '.edui-editor-imagescale .edui-editor-imagescale-hand4{cursor:e-resize;top:50%;margin-top:-4px;left:100%;margin-left:-3px;}' + + '.edui-editor-imagescale .edui-editor-imagescale-hand5{cursor:sw-resize;top:100%;margin-top:-3px;left:0;margin-left:-4px;}' + + '.edui-editor-imagescale .edui-editor-imagescale-hand6{cursor:s-resize;top:100%;margin-top:-3px;left:50%;margin-left:-4px;}' + + '.edui-editor-imagescale .edui-editor-imagescale-hand7{cursor:se-resize;top:100%;margin-top:-3px;left:100%;margin-left:-3px;}'); + }, + initEvents: function () { + var me = this; + + me.startPos.x = me.startPos.y = 0; + me.isDraging = false; + }, + _eventHandler: function (e) { + var me = this; + switch (e.type) { + case 'mousedown': + var hand = e.target || e.srcElement, hand; + if (hand.className.indexOf('edui-editor-imagescale-hand') != -1 && me.dragId == -1) { + me.dragId = hand.className.slice(-1); + me.startPos.x = me.prePos.x = e.clientX; + me.startPos.y = me.prePos.y = e.clientY; + domUtils.on(me.doc,'mousemove', me.proxy(me._eventHandler, me)); + } + break; + case 'mousemove': + if (me.dragId != -1) { + me.updateContainerStyle(me.dragId, {x: e.clientX - me.prePos.x, y: e.clientY - me.prePos.y}); + me.prePos.x = e.clientX; + me.prePos.y = e.clientY; + elementUpdated = true; + me.updateTargetElement(); + + } + break; + case 'mouseup': + if (me.dragId != -1) { + me.updateContainerStyle(me.dragId, {x: e.clientX - me.prePos.x, y: e.clientY - me.prePos.y}); + me.updateTargetElement(); + if (me.target.parentNode) me.attachTo(me.target); + me.dragId = -1; + } + domUtils.un(me.doc,'mousemove', me.proxy(me._eventHandler, me)); + //修复只是点击挪动点,但没有改变大小,不应该触发contentchange + if(elementUpdated){ + elementUpdated = false; + me.editor.fireEvent('contentchange'); + } + + break; + default: + break; + } + }, + updateTargetElement: function () { + var me = this; + domUtils.setStyles(me.target, { + 'width': me.resizer.style.width, + 'height': me.resizer.style.height + }); + me.target.width = parseInt(me.resizer.style.width); + me.target.height = parseInt(me.resizer.style.height); + me.attachTo(me.target); + }, + updateContainerStyle: function (dir, offset) { + var me = this, + dom = me.resizer, tmp; + + if (rect[dir][0] != 0) { + tmp = parseInt(dom.style.left) + offset.x; + dom.style.left = me._validScaledProp('left', tmp) + 'px'; + } + if (rect[dir][1] != 0) { + tmp = parseInt(dom.style.top) + offset.y; + dom.style.top = me._validScaledProp('top', tmp) + 'px'; + } + if (rect[dir][2] != 0) { + tmp = dom.clientWidth + rect[dir][2] * offset.x; + dom.style.width = me._validScaledProp('width', tmp) + 'px'; + } + if (rect[dir][3] != 0) { + tmp = dom.clientHeight + rect[dir][3] * offset.y; + dom.style.height = me._validScaledProp('height', tmp) + 'px'; + } + }, + _validScaledProp: function (prop, value) { + var ele = this.resizer, + wrap = document; + + value = isNaN(value) ? 0 : value; + switch (prop) { + case 'left': + return value < 0 ? 0 : (value + ele.clientWidth) > wrap.clientWidth ? wrap.clientWidth - ele.clientWidth : value; + case 'top': + return value < 0 ? 0 : (value + ele.clientHeight) > wrap.clientHeight ? wrap.clientHeight - ele.clientHeight : value; + case 'width': + return value <= 0 ? 1 : (value + ele.offsetLeft) > wrap.clientWidth ? wrap.clientWidth - ele.offsetLeft : value; + case 'height': + return value <= 0 ? 1 : (value + ele.offsetTop) > wrap.clientHeight ? wrap.clientHeight - ele.offsetTop : value; + } + }, + hideCover: function () { + this.cover.style.display = 'none'; + }, + showCover: function () { + var me = this, + editorPos = domUtils.getXY(me.editor.ui.getDom()), + iframePos = domUtils.getXY(me.editor.iframe); + + domUtils.setStyles(me.cover, { + 'width': me.editor.iframe.offsetWidth + 'px', + 'height': me.editor.iframe.offsetHeight + 'px', + 'top': iframePos.y - editorPos.y + 'px', + 'left': iframePos.x - editorPos.x + 'px', + 'position': 'absolute', + 'display': '' + }) + }, + show: function (targetObj) { + var me = this; + me.resizer.style.display = 'block'; + if(targetObj) me.attachTo(targetObj); + + domUtils.on(this.resizer, 'mousedown', me.proxy(me._eventHandler, me)); + domUtils.on(me.doc, 'mouseup', me.proxy(me._eventHandler, me)); + + me.showCover(); + me.editor.fireEvent('afterscaleshow', me); + me.editor.fireEvent('saveScene'); + }, + hide: function () { + var me = this; + me.hideCover(); + me.resizer.style.display = 'none'; + + domUtils.un(me.resizer, 'mousedown', me.proxy(me._eventHandler, me)); + domUtils.un(me.doc, 'mouseup', me.proxy(me._eventHandler, me)); + me.editor.fireEvent('afterscalehide', me); + }, + proxy: function( fn, context ) { + return function(e) { + return fn.apply( context || this, arguments); + }; + }, + attachTo: function (targetObj) { + var me = this, + target = me.target = targetObj, + resizer = this.resizer, + imgPos = domUtils.getXY(target), + iframePos = domUtils.getXY(me.editor.iframe), + editorPos = domUtils.getXY(resizer.parentNode); + + domUtils.setStyles(resizer, { + 'width': target.width + 'px', + 'height': target.height + 'px', + 'left': iframePos.x + imgPos.x - me.editor.document.body.scrollLeft - editorPos.x - parseInt(resizer.style.borderLeftWidth) + 'px', + 'top': iframePos.y + imgPos.y - me.editor.document.body.scrollTop - editorPos.y - parseInt(resizer.style.borderTopWidth) + 'px' + }); + } + } + })(); + + return function () { + var me = this, + imageScale; + + me.setOpt('imageScaleEnabled', true); + + if ( !browser.ie && me.options.imageScaleEnabled) { + me.addListener('click', function (type, e) { + + var range = me.selection.getRange(), + img = range.getClosedNode(); + + if (img && img.tagName == 'IMG' && me.body.contentEditable!="false") { + + if (img.className.indexOf("edui-faked-music") != -1 || + img.getAttribute("anchorname") || + domUtils.hasClass(img, 'loadingclass') || + domUtils.hasClass(img, 'loaderrorclass')) { return } + + if (!imageScale) { + imageScale = new Scale(); + imageScale.init(me); + me.ui.getDom().appendChild(imageScale.resizer); + + var _keyDownHandler = function (e) { + imageScale.hide(); + if(imageScale.target) me.selection.getRange().selectNode(imageScale.target).select(); + }, _mouseDownHandler = function (e) { + var ele = e.target || e.srcElement; + if (ele && (ele.className===undefined || ele.className.indexOf('edui-editor-imagescale') == -1)) { + _keyDownHandler(e); + } + }, timer; + + me.addListener('afterscaleshow', function (e) { + me.addListener('beforekeydown', _keyDownHandler); + me.addListener('beforemousedown', _mouseDownHandler); + domUtils.on(document, 'keydown', _keyDownHandler); + domUtils.on(document,'mousedown', _mouseDownHandler); + me.selection.getNative().removeAllRanges(); + }); + me.addListener('afterscalehide', function (e) { + me.removeListener('beforekeydown', _keyDownHandler); + me.removeListener('beforemousedown', _mouseDownHandler); + domUtils.un(document, 'keydown', _keyDownHandler); + domUtils.un(document,'mousedown', _mouseDownHandler); + var target = imageScale.target; + if (target.parentNode) { + me.selection.getRange().selectNode(target).select(); + } + }); + //TODO 有iframe的情况,mousedown不能往下传。。 + domUtils.on(imageScale.resizer, 'mousedown', function (e) { + me.selection.getNative().removeAllRanges(); + var ele = e.target || e.srcElement; + if (ele && ele.className.indexOf('edui-editor-imagescale-hand') == -1) { + timer = setTimeout(function () { + imageScale.hide(); + if(imageScale.target) me.selection.getRange().selectNode(ele).select(); + }, 200); + } + }); + domUtils.on(imageScale.resizer, 'mouseup', function (e) { + var ele = e.target || e.srcElement; + if (ele && ele.className.indexOf('edui-editor-imagescale-hand') == -1) { + clearTimeout(timer); + } + }); + } + imageScale.show(img); + } else { + if (imageScale && imageScale.resizer.style.display != 'none') imageScale.hide(); + } + }); + } + + if (browser.webkit) { + me.addListener('click', function (type, e) { + if (e.target.tagName == 'IMG' && me.body.contentEditable!="false") { + var range = new dom.Range(me.document); + range.selectNode(e.target).select(); + } + }); + } + } +})(); + +// plugins/autolink.js +///import core +///commands 为非ie浏览器自动添加a标签 +///commandsName AutoLink +///commandsTitle 自动增加链接 +/** + * @description 为非ie浏览器自动添加a标签 + * @author zhanyi + */ + +UE.plugin.register('autolink',function(){ + var cont = 0; + + return !browser.ie ? { + + bindEvents:{ + 'reset' : function(){ + cont = 0; + }, + 'keydown':function(type, evt) { + var me = this; + var keyCode = evt.keyCode || evt.which; + + if (keyCode == 32 || keyCode == 13) { + + var sel = me.selection.getNative(), + range = sel.getRangeAt(0).cloneRange(), + offset, + charCode; + + var start = range.startContainer; + while (start.nodeType == 1 && range.startOffset > 0) { + start = range.startContainer.childNodes[range.startOffset - 1]; + if (!start){ + break; + } + range.setStart(start, start.nodeType == 1 ? start.childNodes.length : start.nodeValue.length); + range.collapse(true); + start = range.startContainer; + } + + do{ + if (range.startOffset == 0) { + start = range.startContainer.previousSibling; + + while (start && start.nodeType == 1) { + start = start.lastChild; + } + if (!start || domUtils.isFillChar(start)){ + break; + } + offset = start.nodeValue.length; + } else { + start = range.startContainer; + offset = range.startOffset; + } + range.setStart(start, offset - 1); + charCode = range.toString().charCodeAt(0); + } while (charCode != 160 && charCode != 32); + + if (range.toString().replace(new RegExp(domUtils.fillChar, 'g'), '').match(/(?:https?:\/\/|ssh:\/\/|ftp:\/\/|file:\/|www\.)/i)) { + while(range.toString().length){ + if(/^(?:https?:\/\/|ssh:\/\/|ftp:\/\/|file:\/|www\.)/i.test(range.toString())){ + break; + } + try{ + range.setStart(range.startContainer,range.startOffset+1); + }catch(e){ + //trace:2121 + var start = range.startContainer; + while(!(next = start.nextSibling)){ + if(domUtils.isBody(start)){ + return; + } + start = start.parentNode; + + } + range.setStart(next,0); + + } + + } + //range的开始边界已经在a标签里的不再处理 + if(domUtils.findParentByTagName(range.startContainer,'a',true)){ + return; + } + var a = me.document.createElement('a'),text = me.document.createTextNode(' '),href; + + me.undoManger && me.undoManger.save(); + a.appendChild(range.extractContents()); + a.href = a.innerHTML = a.innerHTML.replace(/<[^>]+>/g,''); + href = a.getAttribute("href").replace(new RegExp(domUtils.fillChar,'g'),''); + href = /^(?:https?:\/\/)/ig.test(href) ? href : "http://"+ href; + a.setAttribute('_src',utils.html(href)); + a.href = utils.html(href); + + range.insertNode(a); + a.parentNode.insertBefore(text, a.nextSibling); + range.setStart(text, 0); + range.collapse(true); + sel.removeAllRanges(); + sel.addRange(range); + me.undoManger && me.undoManger.save(); + } + } + } + } + }:{} + },function(){ + var keyCodes = { + 37:1, 38:1, 39:1, 40:1, + 13:1,32:1 + }; + function checkIsCludeLink(node){ + if(node.nodeType == 3){ + return null + } + if(node.nodeName == 'A'){ + return node; + } + var lastChild = node.lastChild; + + while(lastChild){ + if(lastChild.nodeName == 'A'){ + return lastChild; + } + if(lastChild.nodeType == 3){ + if(domUtils.isWhitespace(lastChild)){ + lastChild = lastChild.previousSibling; + continue; + } + return null + } + lastChild = lastChild.lastChild; + } + } + browser.ie && this.addListener('keyup',function(cmd,evt){ + var me = this,keyCode = evt.keyCode; + if(keyCodes[keyCode]){ + var rng = me.selection.getRange(); + var start = rng.startContainer; + + if(keyCode == 13){ + while(start && !domUtils.isBody(start) && !domUtils.isBlockElm(start)){ + start = start.parentNode; + } + if(start && !domUtils.isBody(start) && start.nodeName == 'P'){ + var pre = start.previousSibling; + if(pre && pre.nodeType == 1){ + var pre = checkIsCludeLink(pre); + if(pre && !pre.getAttribute('_href')){ + domUtils.remove(pre,true); + } + } + } + }else if(keyCode == 32 ){ + if(start.nodeType == 3 && /^\s$/.test(start.nodeValue)){ + start = start.previousSibling; + if(start && start.nodeName == 'A' && !start.getAttribute('_href')){ + domUtils.remove(start,true); + } + } + }else { + start = domUtils.findParentByTagName(start,'a',true); + if(start && !start.getAttribute('_href')){ + var bk = rng.createBookmark(); + + domUtils.remove(start,true); + rng.moveToBookmark(bk).select(true) + } + } + + } + + + }); + } +); + +// plugins/autoheight.js +///import core +///commands 当输入内容超过编辑器高度时,编辑器自动增高 +///commandsName AutoHeight,autoHeightEnabled +///commandsTitle 自动增高 +/** + * @description 自动伸展 + * @author zhanyi + */ +UE.plugins['autoheight'] = function () { + var me = this; + //提供开关,就算加载也可以关闭 + me.autoHeightEnabled = me.options.autoHeightEnabled !== false; + if (!me.autoHeightEnabled) { + return; + } + + var bakOverflow, + lastHeight = 0, + options = me.options, + currentHeight, + timer; + + function adjustHeight() { + var me = this; + clearTimeout(timer); + if(isFullscreen)return; + if (!me.queryCommandState || me.queryCommandState && me.queryCommandState('source') != 1) { + timer = setTimeout(function(){ + + var node = me.body.lastChild; + while(node && node.nodeType != 1){ + node = node.previousSibling; + } + if(node && node.nodeType == 1){ + node.style.clear = 'both'; + currentHeight = Math.max(domUtils.getXY(node).y + node.offsetHeight + 25 ,Math.max(options.minFrameHeight, options.initialFrameHeight)) ; + if (currentHeight != lastHeight) { + if (currentHeight !== parseInt(me.iframe.parentNode.style.height)) { + me.iframe.parentNode.style.height = currentHeight + 'px'; + } + me.body.style.height = currentHeight + 'px'; + lastHeight = currentHeight; + } + domUtils.removeStyle(node,'clear'); + } + + + },50) + } + } + var isFullscreen; + me.addListener('fullscreenchanged',function(cmd,f){ + isFullscreen = f + }); + me.addListener('destroy', function () { + me.removeListener('contentchange afterinserthtml keyup mouseup',adjustHeight) + }); + me.enableAutoHeight = function () { + var me = this; + if (!me.autoHeightEnabled) { + return; + } + var doc = me.document; + me.autoHeightEnabled = true; + bakOverflow = doc.body.style.overflowY; + doc.body.style.overflowY = 'hidden'; + me.addListener('contentchange afterinserthtml keyup mouseup',adjustHeight); + //ff不给事件算得不对 + + setTimeout(function () { + adjustHeight.call(me); + }, browser.gecko ? 100 : 0); + me.fireEvent('autoheightchanged', me.autoHeightEnabled); + }; + me.disableAutoHeight = function () { + + me.body.style.overflowY = bakOverflow || ''; + + me.removeListener('contentchange', adjustHeight); + me.removeListener('keyup', adjustHeight); + me.removeListener('mouseup', adjustHeight); + me.autoHeightEnabled = false; + me.fireEvent('autoheightchanged', me.autoHeightEnabled); + }; + + me.on('setHeight',function(){ + me.disableAutoHeight() + }); + me.addListener('ready', function () { + me.enableAutoHeight(); + //trace:1764 + var timer; + domUtils.on(browser.ie ? me.body : me.document, browser.webkit ? 'dragover' : 'drop', function () { + clearTimeout(timer); + timer = setTimeout(function () { + //trace:3681 + adjustHeight.call(me); + }, 100); + + }); + //修复内容过多时,回到顶部,顶部内容被工具栏遮挡问题 + var lastScrollY; + window.onscroll = function(){ + if(lastScrollY === null){ + lastScrollY = this.scrollY + }else if(this.scrollY == 0 && lastScrollY != 0){ + me.window.scrollTo(0,0); + lastScrollY = null; + } + } + }); + + +}; + + + +// plugins/autofloat.js +///import core +///commands 悬浮工具栏 +///commandsName AutoFloat,autoFloatEnabled +///commandsTitle 悬浮工具栏 +/** + * modified by chengchao01 + * 注意: 引入此功能后,在IE6下会将body的背景图片覆盖掉! + */ +UE.plugins['autofloat'] = function() { + var me = this, + lang = me.getLang(); + me.setOpt({ + topOffset:0 + }); + var optsAutoFloatEnabled = me.options.autoFloatEnabled !== false, + topOffset = me.options.topOffset; + + + //如果不固定toolbar的位置,则直接退出 + if(!optsAutoFloatEnabled){ + return; + } + var uiUtils = UE.ui.uiUtils, + LteIE6 = browser.ie && browser.version <= 6, + quirks = browser.quirks; + + function checkHasUI(){ + if(!UE.ui){ + alert(lang.autofloatMsg); + return 0; + } + return 1; + } + function fixIE6FixedPos(){ + var docStyle = document.body.style; + docStyle.backgroundImage = 'url("about:blank")'; + docStyle.backgroundAttachment = 'fixed'; + } + var bakCssText, + placeHolder = document.createElement('div'), + toolbarBox,orgTop, + getPosition, + flag =true; //ie7模式下需要偏移 + function setFloating(){ + var toobarBoxPos = domUtils.getXY(toolbarBox), + origalFloat = domUtils.getComputedStyle(toolbarBox,'position'), + origalLeft = domUtils.getComputedStyle(toolbarBox,'left'); + toolbarBox.style.width = toolbarBox.offsetWidth + 'px'; + toolbarBox.style.zIndex = me.options.zIndex * 1 + 1; + toolbarBox.parentNode.insertBefore(placeHolder, toolbarBox); + if (LteIE6 || (quirks && browser.ie)) { + if(toolbarBox.style.position != 'absolute'){ + toolbarBox.style.position = 'absolute'; + } + toolbarBox.style.top = (document.body.scrollTop||document.documentElement.scrollTop) - orgTop + topOffset + 'px'; + } else { + if (browser.ie7Compat && flag) { + flag = false; + toolbarBox.style.left = domUtils.getXY(toolbarBox).x - document.documentElement.getBoundingClientRect().left+2 + 'px'; + } + if(toolbarBox.style.position != 'fixed'){ + toolbarBox.style.position = 'fixed'; + toolbarBox.style.top = topOffset +"px"; + ((origalFloat == 'absolute' || origalFloat == 'relative') && parseFloat(origalLeft)) && (toolbarBox.style.left = toobarBoxPos.x + 'px'); + } + } + } + function unsetFloating(){ + flag = true; + if(placeHolder.parentNode){ + placeHolder.parentNode.removeChild(placeHolder); + } + + toolbarBox.style.cssText = bakCssText; + } + + function updateFloating(){ + var rect3 = getPosition(me.container); + var offset=me.options.toolbarTopOffset||0; + if (rect3.top < 0 && rect3.bottom - toolbarBox.offsetHeight > offset) { + setFloating(); + }else{ + unsetFloating(); + } + } + var defer_updateFloating = utils.defer(function(){ + updateFloating(); + },browser.ie ? 200 : 100,true); + + me.addListener('destroy',function(){ + domUtils.un(window, ['scroll','resize'], updateFloating); + me.removeListener('keydown', defer_updateFloating); + }); + + me.addListener('ready', function(){ + if(checkHasUI(me)){ + //加载了ui组件,但在new时,没有加载ui,导致编辑器实例上没有ui类,所以这里做判断 + if(!me.ui){ + return; + } + getPosition = uiUtils.getClientRect; + toolbarBox = me.ui.getDom('toolbarbox'); + orgTop = getPosition(toolbarBox).top; + bakCssText = toolbarBox.style.cssText; + placeHolder.style.height = toolbarBox.offsetHeight + 'px'; + if(LteIE6){ + fixIE6FixedPos(); + } + domUtils.on(window, ['scroll','resize'], updateFloating); + me.addListener('keydown', defer_updateFloating); + + me.addListener('beforefullscreenchange', function (t, enabled){ + if (enabled) { + unsetFloating(); + } + }); + me.addListener('fullscreenchanged', function (t, enabled){ + if (!enabled) { + updateFloating(); + } + }); + me.addListener('sourcemodechanged', function (t, enabled){ + setTimeout(function (){ + updateFloating(); + },0); + }); + me.addListener("clearDoc",function(){ + setTimeout(function(){ + updateFloating(); + },0); + + }) + } + }); +}; + + +// plugins/video.js +/** + * video插件, 为UEditor提供视频插入支持 + * @file + * @since 1.2.6.1 + */ + +UE.plugins['video'] = function (){ + var me =this; + + /** + * 创建插入视频字符窜 + * @param url 视频地址 + * @param width 视频宽度 + * @param height 视频高度 + * @param align 视频对齐 + * @param toEmbed 是否以flash代替显示 + * @param addParagraph 是否需要添加P 标签 + */ + function creatInsertStr(url,width,height,id,align,classname,type){ + + url = utils.unhtmlForUrl(url); + align = utils.unhtml(align); + classname = utils.unhtml(classname).trim(); + + width = parseInt(width, 10) || 0; + height = parseInt(height, 10) || 0; + + var str; + switch (type){ + case 'image': + str = '' + break; + case 'embed': + str = ''; + break; + case 'video': + var ext = url.substr(url.lastIndexOf('.') + 1); + if(ext == 'ogv') ext = 'ogg'; + str = '' + + ''; + break; + } + return str; + } + + function switchImgAndVideo(root,img2video){ + utils.each(root.getNodesByTagName(img2video ? 'img' : 'embed video'),function(node){ + var className = node.getAttr('class'); + if(className && className.indexOf('edui-faked-video') != -1){ + var html = creatInsertStr( img2video ? node.getAttr('_url') : node.getAttr('src'),node.getAttr('width'),node.getAttr('height'),null,node.getStyle('float') || '',className,img2video ? 'embed':'image'); + node.parentNode.replaceChild(UE.uNode.createElement(html),node); + } + if(className && className.indexOf('edui-upload-video') != -1){ + var html = creatInsertStr( img2video ? node.getAttr('_url') : node.getAttr('src'),node.getAttr('width'),node.getAttr('height'),null,node.getStyle('float') || '',className,img2video ? 'video':'image'); + node.parentNode.replaceChild(UE.uNode.createElement(html),node); + } + }) + } + + me.addOutputRule(function(root){ + switchImgAndVideo(root,true) + }); + me.addInputRule(function(root){ + switchImgAndVideo(root) + }); + + /** + * 插入视频 + * @command insertvideo + * @method execCommand + * @param { String } cmd 命令字符串 + * @param { Object } videoAttr 键值对对象, 描述一个视频的所有属性 + * @example + * ```javascript + * + * var videoAttr = { + * //视频地址 + * url: 'http://www.youku.com/xxx', + * //视频宽高值, 单位px + * width: 200, + * height: 100 + * }; + * + * //editor 是编辑器实例 + * //向编辑器插入单个视频 + * editor.execCommand( 'insertvideo', videoAttr ); + * ``` + */ + + /** + * 插入视频 + * @command insertvideo + * @method execCommand + * @param { String } cmd 命令字符串 + * @param { Array } videoArr 需要插入的视频的数组, 其中的每一个元素都是一个键值对对象, 描述了一个视频的所有属性 + * @example + * ```javascript + * + * var videoAttr1 = { + * //视频地址 + * url: 'http://www.youku.com/xxx', + * //视频宽高值, 单位px + * width: 200, + * height: 100 + * }, + * videoAttr2 = { + * //视频地址 + * url: 'http://www.youku.com/xxx', + * //视频宽高值, 单位px + * width: 200, + * height: 100 + * } + * + * //editor 是编辑器实例 + * //该方法将会向编辑器内插入两个视频 + * editor.execCommand( 'insertvideo', [ videoAttr1, videoAttr2 ] ); + * ``` + */ + + /** + * 查询当前光标所在处是否是一个视频 + * @command insertvideo + * @method queryCommandState + * @param { String } cmd 需要查询的命令字符串 + * @return { int } 如果当前光标所在处的元素是一个视频对象, 则返回1,否则返回0 + * @example + * ```javascript + * + * //editor 是编辑器实例 + * editor.queryCommandState( 'insertvideo' ); + * ``` + */ + me.commands["insertvideo"] = { + execCommand: function (cmd, videoObjs, type){ + videoObjs = utils.isArray(videoObjs)?videoObjs:[videoObjs]; + var html = [],id = 'tmpVedio', cl; + for(var i=0,vi,len = videoObjs.length;i 0) { + return 0; + } + for (var i in dtd.$isNotEmpty) if (dtd.$isNotEmpty.hasOwnProperty(i)) { + if (node.getElementsByTagName(i).length) { + return 0; + } + } + return 1; + }; + UETable.getWidth = function (cell) { + if (!cell)return 0; + return parseInt(domUtils.getComputedStyle(cell, "width"), 10); + }; + + /** + * 获取单元格或者单元格组的“对齐”状态。 如果当前的检测对象是一个单元格组, 只有在满足所有单元格的 水平和竖直 对齐属性都相同的 + * 条件时才会返回其状态值,否则将返回null; 如果当前只检测了一个单元格, 则直接返回当前单元格的对齐状态; + * @param table cell or table cells , 支持单个单元格dom对象 或者 单元格dom对象数组 + * @return { align: 'left' || 'right' || 'center', valign: 'top' || 'middle' || 'bottom' } 或者 null + */ + UETable.getTableCellAlignState = function ( cells ) { + + !utils.isArray( cells ) && ( cells = [cells] ); + + var result = {}, + status = ['align', 'valign'], + tempStatus = null, + isSame = true;//状态是否相同 + + utils.each( cells, function( cellNode ){ + + utils.each( status, function( currentState ){ + + tempStatus = cellNode.getAttribute( currentState ); + + if( !result[ currentState ] && tempStatus ) { + result[ currentState ] = tempStatus; + } else if( !result[ currentState ] || ( tempStatus !== result[ currentState ] ) ) { + isSame = false; + return false; + } + + } ); + + return isSame; + + }); + + return isSame ? result : null; + + }; + + /** + * 根据当前选区获取相关的table信息 + * @return {Object} + */ + UETable.getTableItemsByRange = function (editor) { + var start = editor.selection.getStart(); + + //ff下会选中bookmark + if( start && start.id && start.id.indexOf('_baidu_bookmark_start_') === 0 && start.nextSibling) { + start = start.nextSibling; + } + + //在table或者td边缘有可能存在选中tr的情况 + var cell = start && domUtils.findParentByTagName(start, ["td", "th"], true), + tr = cell && cell.parentNode, + caption = start && domUtils.findParentByTagName(start, 'caption', true), + table = caption ? caption.parentNode : tr && tr.parentNode.parentNode; + + return { + cell:cell, + tr:tr, + table:table, + caption:caption + } + }; + UETable.getUETableBySelected = function (editor) { + var table = UETable.getTableItemsByRange(editor).table; + if (table && table.ueTable && table.ueTable.selectedTds.length) { + return table.ueTable; + } + return null; + }; + + UETable.getDefaultValue = function (editor, table) { + var borderMap = { + thin:'0px', + medium:'1px', + thick:'2px' + }, + tableBorder, tdPadding, tdBorder, tmpValue; + if (!table) { + table = editor.document.createElement('table'); + table.insertRow(0).insertCell(0).innerHTML = 'xxx'; + editor.body.appendChild(table); + var td = table.getElementsByTagName('td')[0]; + tmpValue = domUtils.getComputedStyle(table, 'border-left-width'); + tableBorder = parseInt(borderMap[tmpValue] || tmpValue, 10); + tmpValue = domUtils.getComputedStyle(td, 'padding-left'); + tdPadding = parseInt(borderMap[tmpValue] || tmpValue, 10); + tmpValue = domUtils.getComputedStyle(td, 'border-left-width'); + tdBorder = parseInt(borderMap[tmpValue] || tmpValue, 10); + domUtils.remove(table); + return { + tableBorder:tableBorder, + tdPadding:tdPadding, + tdBorder:tdBorder + }; + } else { + td = table.getElementsByTagName('td')[0]; + tmpValue = domUtils.getComputedStyle(table, 'border-left-width'); + tableBorder = parseInt(borderMap[tmpValue] || tmpValue, 10); + tmpValue = domUtils.getComputedStyle(td, 'padding-left'); + tdPadding = parseInt(borderMap[tmpValue] || tmpValue, 10); + tmpValue = domUtils.getComputedStyle(td, 'border-left-width'); + tdBorder = parseInt(borderMap[tmpValue] || tmpValue, 10); + return { + tableBorder:tableBorder, + tdPadding:tdPadding, + tdBorder:tdBorder + }; + } + }; + /** + * 根据当前点击的td或者table获取索引对象 + * @param tdOrTable + */ + UETable.getUETable = function (tdOrTable) { + var tag = tdOrTable.tagName.toLowerCase(); + tdOrTable = (tag == "td" || tag == "th" || tag == 'caption') ? domUtils.findParentByTagName(tdOrTable, "table", true) : tdOrTable; + if (!tdOrTable.ueTable) { + tdOrTable.ueTable = new UETable(tdOrTable); + } + return tdOrTable.ueTable; + }; + + UETable.cloneCell = function(cell,ignoreMerge,keepPro){ + if (!cell || utils.isString(cell)) { + return this.table.ownerDocument.createElement(cell || 'td'); + } + var flag = domUtils.hasClass(cell, "selectTdClass"); + flag && domUtils.removeClasses(cell, "selectTdClass"); + var tmpCell = cell.cloneNode(true); + if (ignoreMerge) { + tmpCell.rowSpan = tmpCell.colSpan = 1; + } + //去掉宽高 + !keepPro && domUtils.removeAttributes(tmpCell,'width height'); + !keepPro && domUtils.removeAttributes(tmpCell,'style'); + + tmpCell.style.borderLeftStyle = ""; + tmpCell.style.borderTopStyle = ""; + tmpCell.style.borderLeftColor = cell.style.borderRightColor; + tmpCell.style.borderLeftWidth = cell.style.borderRightWidth; + tmpCell.style.borderTopColor = cell.style.borderBottomColor; + tmpCell.style.borderTopWidth = cell.style.borderBottomWidth; + flag && domUtils.addClass(cell, "selectTdClass"); + return tmpCell; + } + + UETable.prototype = { + getMaxRows:function () { + var rows = this.table.rows, maxLen = 1; + for (var i = 0, row; row = rows[i]; i++) { + var currentMax = 1; + for (var j = 0, cj; cj = row.cells[j++];) { + currentMax = Math.max(cj.rowSpan || 1, currentMax); + } + maxLen = Math.max(currentMax + i, maxLen); + } + return maxLen; + }, + /** + * 获取当前表格的最大列数 + */ + getMaxCols:function () { + var rows = this.table.rows, maxLen = 0, cellRows = {}; + for (var i = 0, row; row = rows[i]; i++) { + var cellsNum = 0; + for (var j = 0, cj; cj = row.cells[j++];) { + cellsNum += (cj.colSpan || 1); + if (cj.rowSpan && cj.rowSpan > 1) { + for (var k = 1; k < cj.rowSpan; k++) { + if (!cellRows['row_' + (i + k)]) { + cellRows['row_' + (i + k)] = (cj.colSpan || 1); + } else { + cellRows['row_' + (i + k)]++ + } + } + + } + } + cellsNum += cellRows['row_' + i] || 0; + maxLen = Math.max(cellsNum, maxLen); + } + return maxLen; + }, + getCellColIndex:function (cell) { + + }, + /** + * 获取当前cell旁边的单元格, + * @param cell + * @param right + */ + getHSideCell:function (cell, right) { + try { + var cellInfo = this.getCellInfo(cell), + previewRowIndex, previewColIndex; + var len = this.selectedTds.length, + range = this.cellsRange; + //首行或者首列没有前置单元格 + if ((!right && (!len ? !cellInfo.colIndex : !range.beginColIndex)) || (right && (!len ? (cellInfo.colIndex == (this.colsNum - 1)) : (range.endColIndex == this.colsNum - 1)))) return null; + + previewRowIndex = !len ? cellInfo.rowIndex : range.beginRowIndex; + previewColIndex = !right ? ( !len ? (cellInfo.colIndex < 1 ? 0 : (cellInfo.colIndex - 1)) : range.beginColIndex - 1) + : ( !len ? cellInfo.colIndex + 1 : range.endColIndex + 1); + return this.getCell(this.indexTable[previewRowIndex][previewColIndex].rowIndex, this.indexTable[previewRowIndex][previewColIndex].cellIndex); + } catch (e) { + showError(e); + } + }, + getTabNextCell:function (cell, preRowIndex) { + var cellInfo = this.getCellInfo(cell), + rowIndex = preRowIndex || cellInfo.rowIndex, + colIndex = cellInfo.colIndex + 1 + (cellInfo.colSpan - 1), + nextCell; + try { + nextCell = this.getCell(this.indexTable[rowIndex][colIndex].rowIndex, this.indexTable[rowIndex][colIndex].cellIndex); + } catch (e) { + try { + rowIndex = rowIndex * 1 + 1; + colIndex = 0; + nextCell = this.getCell(this.indexTable[rowIndex][colIndex].rowIndex, this.indexTable[rowIndex][colIndex].cellIndex); + } catch (e) { + } + } + return nextCell; + + }, + /** + * 获取视觉上的后置单元格 + * @param cell + * @param bottom + */ + getVSideCell:function (cell, bottom, ignoreRange) { + try { + var cellInfo = this.getCellInfo(cell), + nextRowIndex, nextColIndex; + var len = this.selectedTds.length && !ignoreRange, + range = this.cellsRange; + //末行或者末列没有后置单元格 + if ((!bottom && (cellInfo.rowIndex == 0)) || (bottom && (!len ? (cellInfo.rowIndex + cellInfo.rowSpan > this.rowsNum - 1) : (range.endRowIndex == this.rowsNum - 1)))) return null; + + nextRowIndex = !bottom ? ( !len ? cellInfo.rowIndex - 1 : range.beginRowIndex - 1) + : ( !len ? (cellInfo.rowIndex + cellInfo.rowSpan) : range.endRowIndex + 1); + nextColIndex = !len ? cellInfo.colIndex : range.beginColIndex; + return this.getCell(this.indexTable[nextRowIndex][nextColIndex].rowIndex, this.indexTable[nextRowIndex][nextColIndex].cellIndex); + } catch (e) { + showError(e); + } + }, + /** + * 获取相同结束位置的单元格,xOrY指代了是获取x轴相同还是y轴相同 + */ + getSameEndPosCells:function (cell, xOrY) { + try { + var flag = (xOrY.toLowerCase() === "x"), + end = domUtils.getXY(cell)[flag ? 'x' : 'y'] + cell["offset" + (flag ? 'Width' : 'Height')], + rows = this.table.rows, + cells = null, returns = []; + for (var i = 0; i < this.rowsNum; i++) { + cells = rows[i].cells; + for (var j = 0, tmpCell; tmpCell = cells[j++];) { + var tmpEnd = domUtils.getXY(tmpCell)[flag ? 'x' : 'y'] + tmpCell["offset" + (flag ? 'Width' : 'Height')]; + //对应行的td已经被上面行rowSpan了 + if (tmpEnd > end && flag) break; + if (cell == tmpCell || end == tmpEnd) { + //只获取单一的单元格 + //todo 仅获取单一单元格在特定情况下会造成returns为空,从而影响后续的拖拽实现,修正这个。需考虑性能 + if (tmpCell[flag ? "colSpan" : "rowSpan"] == 1) { + returns.push(tmpCell); + } + if (flag) break; + } + } + } + return returns; + } catch (e) { + showError(e); + } + }, + setCellContent:function (cell, content) { + cell.innerHTML = content || (browser.ie ? domUtils.fillChar : "
    "); + }, + cloneCell:UETable.cloneCell, + /** + * 获取跟当前单元格的右边竖线为左边的所有未合并单元格 + */ + getSameStartPosXCells:function (cell) { + try { + var start = domUtils.getXY(cell).x + cell.offsetWidth, + rows = this.table.rows, cells , returns = []; + for (var i = 0; i < this.rowsNum; i++) { + cells = rows[i].cells; + for (var j = 0, tmpCell; tmpCell = cells[j++];) { + var tmpStart = domUtils.getXY(tmpCell).x; + if (tmpStart > start) break; + if (tmpStart == start && tmpCell.colSpan == 1) { + returns.push(tmpCell); + break; + } + } + } + return returns; + } catch (e) { + showError(e); + } + }, + /** + * 更新table对应的索引表 + */ + update:function (table) { + this.table = table || this.table; + this.selectedTds = []; + this.cellsRange = {}; + this.indexTable = []; + var rows = this.table.rows, + rowsNum = this.getMaxRows(), + dNum = rowsNum - rows.length, + colsNum = this.getMaxCols(); + while (dNum--) { + this.table.insertRow(rows.length); + } + this.rowsNum = rowsNum; + this.colsNum = colsNum; + for (var i = 0, len = rows.length; i < len; i++) { + this.indexTable[i] = new Array(colsNum); + } + //填充索引表 + for (var rowIndex = 0, row; row = rows[rowIndex]; rowIndex++) { + for (var cellIndex = 0, cell, cells = row.cells; cell = cells[cellIndex]; cellIndex++) { + //修正整行被rowSpan时导致的行数计算错误 + if (cell.rowSpan > rowsNum) { + cell.rowSpan = rowsNum; + } + var colIndex = cellIndex, + rowSpan = cell.rowSpan || 1, + colSpan = cell.colSpan || 1; + //当已经被上一行rowSpan或者被前一列colSpan了,则跳到下一个单元格进行 + while (this.indexTable[rowIndex][colIndex]) colIndex++; + for (var j = 0; j < rowSpan; j++) { + for (var k = 0; k < colSpan; k++) { + this.indexTable[rowIndex + j][colIndex + k] = { + rowIndex:rowIndex, + cellIndex:cellIndex, + colIndex:colIndex, + rowSpan:rowSpan, + colSpan:colSpan + } + } + } + } + } + //修复残缺td + for (j = 0; j < rowsNum; j++) { + for (k = 0; k < colsNum; k++) { + if (this.indexTable[j][k] === undefined) { + row = rows[j]; + cell = row.cells[row.cells.length - 1]; + cell = cell ? cell.cloneNode(true) : this.table.ownerDocument.createElement("td"); + this.setCellContent(cell); + if (cell.colSpan !== 1)cell.colSpan = 1; + if (cell.rowSpan !== 1)cell.rowSpan = 1; + row.appendChild(cell); + this.indexTable[j][k] = { + rowIndex:j, + cellIndex:cell.cellIndex, + colIndex:k, + rowSpan:1, + colSpan:1 + } + } + } + } + //当框选后删除行或者列后撤销,需要重建选区。 + var tds = domUtils.getElementsByTagName(this.table, "td"), + selectTds = []; + utils.each(tds, function (td) { + if (domUtils.hasClass(td, "selectTdClass")) { + selectTds.push(td); + } + }); + if (selectTds.length) { + var start = selectTds[0], + end = selectTds[selectTds.length - 1], + startInfo = this.getCellInfo(start), + endInfo = this.getCellInfo(end); + this.selectedTds = selectTds; + this.cellsRange = { + beginRowIndex:startInfo.rowIndex, + beginColIndex:startInfo.colIndex, + endRowIndex:endInfo.rowIndex + endInfo.rowSpan - 1, + endColIndex:endInfo.colIndex + endInfo.colSpan - 1 + }; + } + //给第一行设置firstRow的样式名称,在排序图标的样式上使用到 + if(!domUtils.hasClass(this.table.rows[0], "firstRow")) { + domUtils.addClass(this.table.rows[0], "firstRow"); + for(var i = 1; i< this.table.rows.length; i++) { + domUtils.removeClasses(this.table.rows[i], "firstRow"); + } + } + }, + /** + * 获取单元格的索引信息 + */ + getCellInfo:function (cell) { + if (!cell) return; + var cellIndex = cell.cellIndex, + rowIndex = cell.parentNode.rowIndex, + rowInfo = this.indexTable[rowIndex], + numCols = this.colsNum; + for (var colIndex = cellIndex; colIndex < numCols; colIndex++) { + var cellInfo = rowInfo[colIndex]; + if (cellInfo.rowIndex === rowIndex && cellInfo.cellIndex === cellIndex) { + return cellInfo; + } + } + }, + /** + * 根据行列号获取单元格 + */ + getCell:function (rowIndex, cellIndex) { + return rowIndex < this.rowsNum && this.table.rows[rowIndex].cells[cellIndex] || null; + }, + /** + * 删除单元格 + */ + deleteCell:function (cell, rowIndex) { + rowIndex = typeof rowIndex == 'number' ? rowIndex : cell.parentNode.rowIndex; + var row = this.table.rows[rowIndex]; + row.deleteCell(cell.cellIndex); + }, + /** + * 根据始末两个单元格获取被框选的所有单元格范围 + */ + getCellsRange:function (cellA, cellB) { + function checkRange(beginRowIndex, beginColIndex, endRowIndex, endColIndex) { + var tmpBeginRowIndex = beginRowIndex, + tmpBeginColIndex = beginColIndex, + tmpEndRowIndex = endRowIndex, + tmpEndColIndex = endColIndex, + cellInfo, colIndex, rowIndex; + // 通过indexTable检查是否存在超出TableRange上边界的情况 + if (beginRowIndex > 0) { + for (colIndex = beginColIndex; colIndex < endColIndex; colIndex++) { + cellInfo = me.indexTable[beginRowIndex][colIndex]; + rowIndex = cellInfo.rowIndex; + if (rowIndex < beginRowIndex) { + tmpBeginRowIndex = Math.min(rowIndex, tmpBeginRowIndex); + } + } + } + // 通过indexTable检查是否存在超出TableRange右边界的情况 + if (endColIndex < me.colsNum) { + for (rowIndex = beginRowIndex; rowIndex < endRowIndex; rowIndex++) { + cellInfo = me.indexTable[rowIndex][endColIndex]; + colIndex = cellInfo.colIndex + cellInfo.colSpan - 1; + if (colIndex > endColIndex) { + tmpEndColIndex = Math.max(colIndex, tmpEndColIndex); + } + } + } + // 检查是否有超出TableRange下边界的情况 + if (endRowIndex < me.rowsNum) { + for (colIndex = beginColIndex; colIndex < endColIndex; colIndex++) { + cellInfo = me.indexTable[endRowIndex][colIndex]; + rowIndex = cellInfo.rowIndex + cellInfo.rowSpan - 1; + if (rowIndex > endRowIndex) { + tmpEndRowIndex = Math.max(rowIndex, tmpEndRowIndex); + } + } + } + // 检查是否有超出TableRange左边界的情况 + if (beginColIndex > 0) { + for (rowIndex = beginRowIndex; rowIndex < endRowIndex; rowIndex++) { + cellInfo = me.indexTable[rowIndex][beginColIndex]; + colIndex = cellInfo.colIndex; + if (colIndex < beginColIndex) { + tmpBeginColIndex = Math.min(cellInfo.colIndex, tmpBeginColIndex); + } + } + } + //递归调用直至所有完成所有框选单元格的扩展 + if (tmpBeginRowIndex != beginRowIndex || tmpBeginColIndex != beginColIndex || tmpEndRowIndex != endRowIndex || tmpEndColIndex != endColIndex) { + return checkRange(tmpBeginRowIndex, tmpBeginColIndex, tmpEndRowIndex, tmpEndColIndex); + } else { + // 不需要扩展TableRange的情况 + return { + beginRowIndex:beginRowIndex, + beginColIndex:beginColIndex, + endRowIndex:endRowIndex, + endColIndex:endColIndex + }; + } + } + + try { + var me = this, + cellAInfo = me.getCellInfo(cellA); + if (cellA === cellB) { + return { + beginRowIndex:cellAInfo.rowIndex, + beginColIndex:cellAInfo.colIndex, + endRowIndex:cellAInfo.rowIndex + cellAInfo.rowSpan - 1, + endColIndex:cellAInfo.colIndex + cellAInfo.colSpan - 1 + }; + } + var cellBInfo = me.getCellInfo(cellB); + // 计算TableRange的四个边 + var beginRowIndex = Math.min(cellAInfo.rowIndex, cellBInfo.rowIndex), + beginColIndex = Math.min(cellAInfo.colIndex, cellBInfo.colIndex), + endRowIndex = Math.max(cellAInfo.rowIndex + cellAInfo.rowSpan - 1, cellBInfo.rowIndex + cellBInfo.rowSpan - 1), + endColIndex = Math.max(cellAInfo.colIndex + cellAInfo.colSpan - 1, cellBInfo.colIndex + cellBInfo.colSpan - 1); + + return checkRange(beginRowIndex, beginColIndex, endRowIndex, endColIndex); + } catch (e) { + //throw e; + } + }, + /** + * 依据cellsRange获取对应的单元格集合 + */ + getCells:function (range) { + //每次获取cells之前必须先清除上次的选择,否则会对后续获取操作造成影响 + this.clearSelected(); + var beginRowIndex = range.beginRowIndex, + beginColIndex = range.beginColIndex, + endRowIndex = range.endRowIndex, + endColIndex = range.endColIndex, + cellInfo, rowIndex, colIndex, tdHash = {}, returnTds = []; + for (var i = beginRowIndex; i <= endRowIndex; i++) { + for (var j = beginColIndex; j <= endColIndex; j++) { + cellInfo = this.indexTable[i][j]; + rowIndex = cellInfo.rowIndex; + colIndex = cellInfo.colIndex; + // 如果Cells里已经包含了此Cell则跳过 + var key = rowIndex + '|' + colIndex; + if (tdHash[key]) continue; + tdHash[key] = 1; + if (rowIndex < i || colIndex < j || rowIndex + cellInfo.rowSpan - 1 > endRowIndex || colIndex + cellInfo.colSpan - 1 > endColIndex) { + return null; + } + returnTds.push(this.getCell(rowIndex, cellInfo.cellIndex)); + } + } + return returnTds; + }, + /** + * 清理已经选中的单元格 + */ + clearSelected:function () { + UETable.removeSelectedClass(this.selectedTds); + this.selectedTds = []; + this.cellsRange = {}; + }, + /** + * 根据range设置已经选中的单元格 + */ + setSelected:function (range) { + var cells = this.getCells(range); + UETable.addSelectedClass(cells); + this.selectedTds = cells; + this.cellsRange = range; + }, + isFullRow:function () { + var range = this.cellsRange; + return (range.endColIndex - range.beginColIndex + 1) == this.colsNum; + }, + isFullCol:function () { + var range = this.cellsRange, + table = this.table, + ths = table.getElementsByTagName("th"), + rows = range.endRowIndex - range.beginRowIndex + 1; + return !ths.length ? rows == this.rowsNum : rows == this.rowsNum || (rows == this.rowsNum - 1); + + }, + /** + * 获取视觉上的前置单元格,默认是左边,top传入时 + * @param cell + * @param top + */ + getNextCell:function (cell, bottom, ignoreRange) { + try { + var cellInfo = this.getCellInfo(cell), + nextRowIndex, nextColIndex; + var len = this.selectedTds.length && !ignoreRange, + range = this.cellsRange; + //末行或者末列没有后置单元格 + if ((!bottom && (cellInfo.rowIndex == 0)) || (bottom && (!len ? (cellInfo.rowIndex + cellInfo.rowSpan > this.rowsNum - 1) : (range.endRowIndex == this.rowsNum - 1)))) return null; + + nextRowIndex = !bottom ? ( !len ? cellInfo.rowIndex - 1 : range.beginRowIndex - 1) + : ( !len ? (cellInfo.rowIndex + cellInfo.rowSpan) : range.endRowIndex + 1); + nextColIndex = !len ? cellInfo.colIndex : range.beginColIndex; + return this.getCell(this.indexTable[nextRowIndex][nextColIndex].rowIndex, this.indexTable[nextRowIndex][nextColIndex].cellIndex); + } catch (e) { + showError(e); + } + }, + getPreviewCell:function (cell, top) { + try { + var cellInfo = this.getCellInfo(cell), + previewRowIndex, previewColIndex; + var len = this.selectedTds.length, + range = this.cellsRange; + //首行或者首列没有前置单元格 + if ((!top && (!len ? !cellInfo.colIndex : !range.beginColIndex)) || (top && (!len ? (cellInfo.rowIndex > (this.colsNum - 1)) : (range.endColIndex == this.colsNum - 1)))) return null; + + previewRowIndex = !top ? ( !len ? cellInfo.rowIndex : range.beginRowIndex ) + : ( !len ? (cellInfo.rowIndex < 1 ? 0 : (cellInfo.rowIndex - 1)) : range.beginRowIndex); + previewColIndex = !top ? ( !len ? (cellInfo.colIndex < 1 ? 0 : (cellInfo.colIndex - 1)) : range.beginColIndex - 1) + : ( !len ? cellInfo.colIndex : range.endColIndex + 1); + return this.getCell(this.indexTable[previewRowIndex][previewColIndex].rowIndex, this.indexTable[previewRowIndex][previewColIndex].cellIndex); + } catch (e) { + showError(e); + } + }, + /** + * 移动单元格中的内容 + */ + moveContent:function (cellTo, cellFrom) { + if (UETable.isEmptyBlock(cellFrom)) return; + if (UETable.isEmptyBlock(cellTo)) { + cellTo.innerHTML = cellFrom.innerHTML; + return; + } + var child = cellTo.lastChild; + if (child.nodeType == 3 || !dtd.$block[child.tagName]) { + cellTo.appendChild(cellTo.ownerDocument.createElement('br')) + } + while (child = cellFrom.firstChild) { + cellTo.appendChild(child); + } + }, + /** + * 向右合并单元格 + */ + mergeRight:function (cell) { + var cellInfo = this.getCellInfo(cell), + rightColIndex = cellInfo.colIndex + cellInfo.colSpan, + rightCellInfo = this.indexTable[cellInfo.rowIndex][rightColIndex], + rightCell = this.getCell(rightCellInfo.rowIndex, rightCellInfo.cellIndex); + //合并 + cell.colSpan = cellInfo.colSpan + rightCellInfo.colSpan; + //被合并的单元格不应存在宽度属性 + cell.removeAttribute("width"); + //移动内容 + this.moveContent(cell, rightCell); + //删掉被合并的Cell + this.deleteCell(rightCell, rightCellInfo.rowIndex); + this.update(); + }, + /** + * 向下合并单元格 + */ + mergeDown:function (cell) { + var cellInfo = this.getCellInfo(cell), + downRowIndex = cellInfo.rowIndex + cellInfo.rowSpan, + downCellInfo = this.indexTable[downRowIndex][cellInfo.colIndex], + downCell = this.getCell(downCellInfo.rowIndex, downCellInfo.cellIndex); + cell.rowSpan = cellInfo.rowSpan + downCellInfo.rowSpan; + cell.removeAttribute("height"); + this.moveContent(cell, downCell); + this.deleteCell(downCell, downCellInfo.rowIndex); + this.update(); + }, + /** + * 合并整个range中的内容 + */ + mergeRange:function () { + //由于合并操作可以在任意时刻进行,所以无法通过鼠标位置等信息实时生成range,只能通过缓存实例中的cellsRange对象来访问 + var range = this.cellsRange, + leftTopCell = this.getCell(range.beginRowIndex, this.indexTable[range.beginRowIndex][range.beginColIndex].cellIndex); + + if (leftTopCell.tagName == "TH" && range.endRowIndex !== range.beginRowIndex) { + var index = this.indexTable, + info = this.getCellInfo(leftTopCell); + leftTopCell = this.getCell(1, index[1][info.colIndex].cellIndex); + range = this.getCellsRange(leftTopCell, this.getCell(index[this.rowsNum - 1][info.colIndex].rowIndex, index[this.rowsNum - 1][info.colIndex].cellIndex)); + } + + // 删除剩余的Cells + var cells = this.getCells(range); + for(var i= 0,ci;ci=cells[i++];){ + if (ci !== leftTopCell) { + this.moveContent(leftTopCell, ci); + this.deleteCell(ci); + } + } + // 修改左上角Cell的rowSpan和colSpan,并调整宽度属性设置 + leftTopCell.rowSpan = range.endRowIndex - range.beginRowIndex + 1; + leftTopCell.rowSpan > 1 && leftTopCell.removeAttribute("height"); + leftTopCell.colSpan = range.endColIndex - range.beginColIndex + 1; + leftTopCell.colSpan > 1 && leftTopCell.removeAttribute("width"); + if (leftTopCell.rowSpan == this.rowsNum && leftTopCell.colSpan != 1) { + leftTopCell.colSpan = 1; + } + + if (leftTopCell.colSpan == this.colsNum && leftTopCell.rowSpan != 1) { + var rowIndex = leftTopCell.parentNode.rowIndex; + //解决IE下的表格操作问题 + if( this.table.deleteRow ) { + for (var i = rowIndex+ 1, curIndex=rowIndex+ 1, len=leftTopCell.rowSpan; i < len; i++) { + this.table.deleteRow(curIndex); + } + } else { + for (var i = 0, len=leftTopCell.rowSpan - 1; i < len; i++) { + var row = this.table.rows[rowIndex + 1]; + row.parentNode.removeChild(row); + } + } + leftTopCell.rowSpan = 1; + } + this.update(); + }, + /** + * 插入一行单元格 + */ + insertRow:function (rowIndex, sourceCell) { + var numCols = this.colsNum, + table = this.table, + row = table.insertRow(rowIndex), cell, + isInsertTitle = typeof sourceCell == 'string' && sourceCell.toUpperCase() == 'TH'; + + function replaceTdToTh(colIndex, cell, tableRow) { + if (colIndex == 0) { + var tr = tableRow.nextSibling || tableRow.previousSibling, + th = tr.cells[colIndex]; + if (th.tagName == 'TH') { + th = cell.ownerDocument.createElement("th"); + th.appendChild(cell.firstChild); + tableRow.insertBefore(th, cell); + domUtils.remove(cell) + } + }else{ + if (cell.tagName == 'TH') { + var td = cell.ownerDocument.createElement("td"); + td.appendChild(cell.firstChild); + tableRow.insertBefore(td, cell); + domUtils.remove(cell) + } + } + } + + //首行直接插入,无需考虑部分单元格被rowspan的情况 + if (rowIndex == 0 || rowIndex == this.rowsNum) { + for (var colIndex = 0; colIndex < numCols; colIndex++) { + cell = this.cloneCell(sourceCell, true); + this.setCellContent(cell); + cell.getAttribute('vAlign') && cell.setAttribute('vAlign', cell.getAttribute('vAlign')); + row.appendChild(cell); + if(!isInsertTitle) replaceTdToTh(colIndex, cell, row); + } + } else { + var infoRow = this.indexTable[rowIndex], + cellIndex = 0; + for (colIndex = 0; colIndex < numCols; colIndex++) { + var cellInfo = infoRow[colIndex]; + //如果存在某个单元格的rowspan穿过待插入行的位置,则修改该单元格的rowspan即可,无需插入单元格 + if (cellInfo.rowIndex < rowIndex) { + cell = this.getCell(cellInfo.rowIndex, cellInfo.cellIndex); + cell.rowSpan = cellInfo.rowSpan + 1; + } else { + cell = this.cloneCell(sourceCell, true); + this.setCellContent(cell); + row.appendChild(cell); + } + if(!isInsertTitle) replaceTdToTh(colIndex, cell, row); + } + } + //框选时插入不触发contentchange,需要手动更新索引。 + this.update(); + return row; + }, + /** + * 删除一行单元格 + * @param rowIndex + */ + deleteRow:function (rowIndex) { + var row = this.table.rows[rowIndex], + infoRow = this.indexTable[rowIndex], + colsNum = this.colsNum, + count = 0; //处理计数 + for (var colIndex = 0; colIndex < colsNum;) { + var cellInfo = infoRow[colIndex], + cell = this.getCell(cellInfo.rowIndex, cellInfo.cellIndex); + if (cell.rowSpan > 1) { + if (cellInfo.rowIndex == rowIndex) { + var clone = cell.cloneNode(true); + clone.rowSpan = cell.rowSpan - 1; + clone.innerHTML = ""; + cell.rowSpan = 1; + var nextRowIndex = rowIndex + 1, + nextRow = this.table.rows[nextRowIndex], + insertCellIndex, + preMerged = this.getPreviewMergedCellsNum(nextRowIndex, colIndex) - count; + if (preMerged < colIndex) { + insertCellIndex = colIndex - preMerged - 1; + //nextRow.insertCell(insertCellIndex); + domUtils.insertAfter(nextRow.cells[insertCellIndex], clone); + } else { + if (nextRow.cells.length) nextRow.insertBefore(clone, nextRow.cells[0]) + } + count += 1; + //cell.parentNode.removeChild(cell); + } + } + colIndex += cell.colSpan || 1; + } + var deleteTds = [], cacheMap = {}; + for (colIndex = 0; colIndex < colsNum; colIndex++) { + var tmpRowIndex = infoRow[colIndex].rowIndex, + tmpCellIndex = infoRow[colIndex].cellIndex, + key = tmpRowIndex + "_" + tmpCellIndex; + if (cacheMap[key])continue; + cacheMap[key] = 1; + cell = this.getCell(tmpRowIndex, tmpCellIndex); + deleteTds.push(cell); + } + var mergeTds = []; + utils.each(deleteTds, function (td) { + if (td.rowSpan == 1) { + td.parentNode.removeChild(td); + } else { + mergeTds.push(td); + } + }); + utils.each(mergeTds, function (td) { + td.rowSpan--; + }); + row.parentNode.removeChild(row); + //浏览器方法本身存在bug,采用自定义方法删除 + //this.table.deleteRow(rowIndex); + this.update(); + }, + insertCol:function (colIndex, sourceCell, defaultValue) { + var rowsNum = this.rowsNum, + rowIndex = 0, + tableRow, cell, + backWidth = parseInt((this.table.offsetWidth - (this.colsNum + 1) * 20 - (this.colsNum + 1)) / (this.colsNum + 1), 10), + isInsertTitleCol = typeof sourceCell == 'string' && sourceCell.toUpperCase() == 'TH'; + + function replaceTdToTh(rowIndex, cell, tableRow) { + if (rowIndex == 0) { + var th = cell.nextSibling || cell.previousSibling; + if (th.tagName == 'TH') { + th = cell.ownerDocument.createElement("th"); + th.appendChild(cell.firstChild); + tableRow.insertBefore(th, cell); + domUtils.remove(cell) + } + }else{ + if (cell.tagName == 'TH') { + var td = cell.ownerDocument.createElement("td"); + td.appendChild(cell.firstChild); + tableRow.insertBefore(td, cell); + domUtils.remove(cell) + } + } + } + + var preCell; + if (colIndex == 0 || colIndex == this.colsNum) { + for (; rowIndex < rowsNum; rowIndex++) { + tableRow = this.table.rows[rowIndex]; + preCell = tableRow.cells[colIndex == 0 ? colIndex : tableRow.cells.length]; + cell = this.cloneCell(sourceCell, true); //tableRow.insertCell(colIndex == 0 ? colIndex : tableRow.cells.length); + this.setCellContent(cell); + cell.setAttribute('vAlign', cell.getAttribute('vAlign')); + preCell && cell.setAttribute('width', preCell.getAttribute('width')); + if (!colIndex) { + tableRow.insertBefore(cell, tableRow.cells[0]); + } else { + domUtils.insertAfter(tableRow.cells[tableRow.cells.length - 1], cell); + } + if(!isInsertTitleCol) replaceTdToTh(rowIndex, cell, tableRow) + } + } else { + for (; rowIndex < rowsNum; rowIndex++) { + var cellInfo = this.indexTable[rowIndex][colIndex]; + if (cellInfo.colIndex < colIndex) { + cell = this.getCell(cellInfo.rowIndex, cellInfo.cellIndex); + cell.colSpan = cellInfo.colSpan + 1; + } else { + tableRow = this.table.rows[rowIndex]; + preCell = tableRow.cells[cellInfo.cellIndex]; + + cell = this.cloneCell(sourceCell, true);//tableRow.insertCell(cellInfo.cellIndex); + this.setCellContent(cell); + cell.setAttribute('vAlign', cell.getAttribute('vAlign')); + preCell && cell.setAttribute('width', preCell.getAttribute('width')); + //防止IE下报错 + preCell ? tableRow.insertBefore(cell, preCell) : tableRow.appendChild(cell); + } + if(!isInsertTitleCol) replaceTdToTh(rowIndex, cell, tableRow); + } + } + //框选时插入不触发contentchange,需要手动更新索引 + this.update(); + this.updateWidth(backWidth, defaultValue || {tdPadding:10, tdBorder:1}); + }, + updateWidth:function (width, defaultValue) { + var table = this.table, + tmpWidth = UETable.getWidth(table) - defaultValue.tdPadding * 2 - defaultValue.tdBorder + width; + if (tmpWidth < table.ownerDocument.body.offsetWidth) { + table.setAttribute("width", tmpWidth); + return; + } + var tds = domUtils.getElementsByTagName(this.table, "td th"); + utils.each(tds, function (td) { + td.setAttribute("width", width); + }) + }, + deleteCol:function (colIndex) { + var indexTable = this.indexTable, + tableRows = this.table.rows, + backTableWidth = this.table.getAttribute("width"), + backTdWidth = 0, + rowsNum = this.rowsNum, + cacheMap = {}; + for (var rowIndex = 0; rowIndex < rowsNum;) { + var infoRow = indexTable[rowIndex], + cellInfo = infoRow[colIndex], + key = cellInfo.rowIndex + '_' + cellInfo.colIndex; + // 跳过已经处理过的Cell + if (cacheMap[key])continue; + cacheMap[key] = 1; + var cell = this.getCell(cellInfo.rowIndex, cellInfo.cellIndex); + if (!backTdWidth) backTdWidth = cell && parseInt(cell.offsetWidth / cell.colSpan, 10).toFixed(0); + // 如果Cell的colSpan大于1, 就修改colSpan, 否则就删掉这个Cell + if (cell.colSpan > 1) { + cell.colSpan--; + } else { + tableRows[rowIndex].deleteCell(cellInfo.cellIndex); + } + rowIndex += cellInfo.rowSpan || 1; + } + this.table.setAttribute("width", backTableWidth - backTdWidth); + this.update(); + }, + splitToCells:function (cell) { + var me = this, + cells = this.splitToRows(cell); + utils.each(cells, function (cell) { + me.splitToCols(cell); + }) + }, + splitToRows:function (cell) { + var cellInfo = this.getCellInfo(cell), + rowIndex = cellInfo.rowIndex, + colIndex = cellInfo.colIndex, + results = []; + // 修改Cell的rowSpan + cell.rowSpan = 1; + results.push(cell); + // 补齐单元格 + for (var i = rowIndex, endRow = rowIndex + cellInfo.rowSpan; i < endRow; i++) { + if (i == rowIndex)continue; + var tableRow = this.table.rows[i], + tmpCell = tableRow.insertCell(colIndex - this.getPreviewMergedCellsNum(i, colIndex)); + tmpCell.colSpan = cellInfo.colSpan; + this.setCellContent(tmpCell); + tmpCell.setAttribute('vAlign', cell.getAttribute('vAlign')); + tmpCell.setAttribute('align', cell.getAttribute('align')); + if (cell.style.cssText) { + tmpCell.style.cssText = cell.style.cssText; + } + results.push(tmpCell); + } + this.update(); + return results; + }, + getPreviewMergedCellsNum:function (rowIndex, colIndex) { + var indexRow = this.indexTable[rowIndex], + num = 0; + for (var i = 0; i < colIndex;) { + var colSpan = indexRow[i].colSpan, + tmpRowIndex = indexRow[i].rowIndex; + num += (colSpan - (tmpRowIndex == rowIndex ? 1 : 0)); + i += colSpan; + } + return num; + }, + splitToCols:function (cell) { + var backWidth = (cell.offsetWidth / cell.colSpan - 22).toFixed(0), + + cellInfo = this.getCellInfo(cell), + rowIndex = cellInfo.rowIndex, + colIndex = cellInfo.colIndex, + results = []; + // 修改Cell的rowSpan + cell.colSpan = 1; + cell.setAttribute("width", backWidth); + results.push(cell); + // 补齐单元格 + for (var j = colIndex, endCol = colIndex + cellInfo.colSpan; j < endCol; j++) { + if (j == colIndex)continue; + var tableRow = this.table.rows[rowIndex], + tmpCell = tableRow.insertCell(this.indexTable[rowIndex][j].cellIndex + 1); + tmpCell.rowSpan = cellInfo.rowSpan; + this.setCellContent(tmpCell); + tmpCell.setAttribute('vAlign', cell.getAttribute('vAlign')); + tmpCell.setAttribute('align', cell.getAttribute('align')); + tmpCell.setAttribute('width', backWidth); + if (cell.style.cssText) { + tmpCell.style.cssText = cell.style.cssText; + } + //处理th的情况 + if (cell.tagName == 'TH') { + var th = cell.ownerDocument.createElement('th'); + th.appendChild(tmpCell.firstChild); + th.setAttribute('vAlign', cell.getAttribute('vAlign')); + th.rowSpan = tmpCell.rowSpan; + tableRow.insertBefore(th, tmpCell); + domUtils.remove(tmpCell); + } + results.push(tmpCell); + } + this.update(); + return results; + }, + isLastCell:function (cell, rowsNum, colsNum) { + rowsNum = rowsNum || this.rowsNum; + colsNum = colsNum || this.colsNum; + var cellInfo = this.getCellInfo(cell); + return ((cellInfo.rowIndex + cellInfo.rowSpan) == rowsNum) && + ((cellInfo.colIndex + cellInfo.colSpan) == colsNum); + }, + getLastCell:function (cells) { + cells = cells || this.table.getElementsByTagName("td"); + var firstInfo = this.getCellInfo(cells[0]); + var me = this, last = cells[0], + tr = last.parentNode, + cellsNum = 0, cols = 0, rows; + utils.each(cells, function (cell) { + if (cell.parentNode == tr)cols += cell.colSpan || 1; + cellsNum += cell.rowSpan * cell.colSpan || 1; + }); + rows = cellsNum / cols; + utils.each(cells, function (cell) { + if (me.isLastCell(cell, rows, cols)) { + last = cell; + return false; + } + }); + return last; + + }, + selectRow:function (rowIndex) { + var indexRow = this.indexTable[rowIndex], + start = this.getCell(indexRow[0].rowIndex, indexRow[0].cellIndex), + end = this.getCell(indexRow[this.colsNum - 1].rowIndex, indexRow[this.colsNum - 1].cellIndex), + range = this.getCellsRange(start, end); + this.setSelected(range); + }, + selectTable:function () { + var tds = this.table.getElementsByTagName("td"), + range = this.getCellsRange(tds[0], tds[tds.length - 1]); + this.setSelected(range); + }, + setBackground:function (cells, value) { + if (typeof value === "string") { + utils.each(cells, function (cell) { + cell.style.backgroundColor = value; + }) + } else if (typeof value === "object") { + value = utils.extend({ + repeat:true, + colorList:["#ddd", "#fff"] + }, value); + var rowIndex = this.getCellInfo(cells[0]).rowIndex, + count = 0, + colors = value.colorList, + getColor = function (list, index, repeat) { + return list[index] ? list[index] : repeat ? list[index % list.length] : ""; + }; + for (var i = 0, cell; cell = cells[i++];) { + var cellInfo = this.getCellInfo(cell); + cell.style.backgroundColor = getColor(colors, ((rowIndex + count) == cellInfo.rowIndex) ? count : ++count, value.repeat); + } + } + }, + removeBackground:function (cells) { + utils.each(cells, function (cell) { + cell.style.backgroundColor = ""; + }) + } + + + }; + function showError(e) { + } +})(); + +// plugins/table.cmds.js +/** + * Created with JetBrains PhpStorm. + * User: taoqili + * Date: 13-2-20 + * Time: 下午6:25 + * To change this template use File | Settings | File Templates. + */ +; +(function () { + var UT = UE.UETable, + getTableItemsByRange = function (editor) { + return UT.getTableItemsByRange(editor); + }, + getUETableBySelected = function (editor) { + return UT.getUETableBySelected(editor) + }, + getDefaultValue = function (editor, table) { + return UT.getDefaultValue(editor, table); + }, + getUETable = function (tdOrTable) { + return UT.getUETable(tdOrTable); + }; + + + UE.commands['inserttable'] = { + queryCommandState: function () { + return getTableItemsByRange(this).table ? -1 : 0; + }, + execCommand: function (cmd, opt) { + function createTable(opt, tdWidth) { + var html = [], + rowsNum = opt.numRows, + colsNum = opt.numCols; + for (var r = 0; r < rowsNum; r++) { + html.push(''); + for (var c = 0; c < colsNum; c++) { + html.push('
  • ' + (browser.ie && browser.version < 11 ? domUtils.fillChar : '
    ') + '
    ' + html.join('') + '
    ' + } + + if (!opt) { + opt = utils.extend({}, { + numCols: this.options.defaultCols, + numRows: this.options.defaultRows, + tdvalign: this.options.tdvalign + }) + } + var me = this; + var range = this.selection.getRange(), + start = range.startContainer, + firstParentBlock = domUtils.findParent(start, function (node) { + return domUtils.isBlockElm(node); + }, true) || me.body; + + var defaultValue = getDefaultValue(me), + tableWidth = firstParentBlock.offsetWidth, + tdWidth = Math.floor(tableWidth / opt.numCols - defaultValue.tdPadding * 2 - defaultValue.tdBorder); + + //todo其他属性 + !opt.tdvalign && (opt.tdvalign = me.options.tdvalign); + me.execCommand("inserthtml", createTable(opt, tdWidth)); + } + }; + + UE.commands['insertparagraphbeforetable'] = { + queryCommandState: function () { + return getTableItemsByRange(this).cell ? 0 : -1; + }, + execCommand: function () { + var table = getTableItemsByRange(this).table; + if (table) { + var p = this.document.createElement("p"); + p.innerHTML = browser.ie ? ' ' : '
    '; + table.parentNode.insertBefore(p, table); + this.selection.getRange().setStart(p, 0).setCursor(); + } + } + }; + + UE.commands['deletetable'] = { + queryCommandState: function () { + var rng = this.selection.getRange(); + return domUtils.findParentByTagName(rng.startContainer, 'table', true) ? 0 : -1; + }, + execCommand: function (cmd, table) { + var rng = this.selection.getRange(); + table = table || domUtils.findParentByTagName(rng.startContainer, 'table', true); + if (table) { + var next = table.nextSibling; + if (!next) { + next = domUtils.createElement(this.document, 'p', { + 'innerHTML': browser.ie ? domUtils.fillChar : '
    ' + }); + table.parentNode.insertBefore(next, table); + } + domUtils.remove(table); + rng = this.selection.getRange(); + if (next.nodeType == 3) { + rng.setStartBefore(next) + } else { + rng.setStart(next, 0) + } + rng.setCursor(false, true) + this.fireEvent("tablehasdeleted") + + } + + } + }; + UE.commands['cellalign'] = { + queryCommandState: function () { + return getSelectedArr(this).length ? 0 : -1 + }, + execCommand: function (cmd, align) { + var selectedTds = getSelectedArr(this); + if (selectedTds.length) { + for (var i = 0, ci; ci = selectedTds[i++];) { + ci.setAttribute('align', align); + } + } + } + }; + UE.commands['cellvalign'] = { + queryCommandState: function () { + return getSelectedArr(this).length ? 0 : -1; + }, + execCommand: function (cmd, valign) { + var selectedTds = getSelectedArr(this); + if (selectedTds.length) { + for (var i = 0, ci; ci = selectedTds[i++];) { + ci.setAttribute('vAlign', valign); + } + } + } + }; + UE.commands['insertcaption'] = { + queryCommandState: function () { + var table = getTableItemsByRange(this).table; + if (table) { + return table.getElementsByTagName('caption').length == 0 ? 1 : -1; + } + return -1; + }, + execCommand: function () { + var table = getTableItemsByRange(this).table; + if (table) { + var caption = this.document.createElement('caption'); + caption.innerHTML = browser.ie ? domUtils.fillChar : '
    '; + table.insertBefore(caption, table.firstChild); + var range = this.selection.getRange(); + range.setStart(caption, 0).setCursor(); + } + + } + }; + UE.commands['deletecaption'] = { + queryCommandState: function () { + var rng = this.selection.getRange(), + table = domUtils.findParentByTagName(rng.startContainer, 'table'); + if (table) { + return table.getElementsByTagName('caption').length == 0 ? -1 : 1; + } + return -1; + }, + execCommand: function () { + var rng = this.selection.getRange(), + table = domUtils.findParentByTagName(rng.startContainer, 'table'); + if (table) { + domUtils.remove(table.getElementsByTagName('caption')[0]); + var range = this.selection.getRange(); + range.setStart(table.rows[0].cells[0], 0).setCursor(); + } + + } + }; + UE.commands['inserttitle'] = { + queryCommandState: function () { + var table = getTableItemsByRange(this).table; + if (table) { + var firstRow = table.rows[0]; + return firstRow.cells[firstRow.cells.length-1].tagName.toLowerCase() != 'th' ? 0 : -1 + } + return -1; + }, + execCommand: function () { + var table = getTableItemsByRange(this).table; + if (table) { + getUETable(table).insertRow(0, 'th'); + } + var th = table.getElementsByTagName('th')[0]; + this.selection.getRange().setStart(th, 0).setCursor(false, true); + } + }; + UE.commands['deletetitle'] = { + queryCommandState: function () { + var table = getTableItemsByRange(this).table; + if (table) { + var firstRow = table.rows[0]; + return firstRow.cells[firstRow.cells.length-1].tagName.toLowerCase() == 'th' ? 0 : -1 + } + return -1; + }, + execCommand: function () { + var table = getTableItemsByRange(this).table; + if (table) { + domUtils.remove(table.rows[0]) + } + var td = table.getElementsByTagName('td')[0]; + this.selection.getRange().setStart(td, 0).setCursor(false, true); + } + }; + UE.commands['inserttitlecol'] = { + queryCommandState: function () { + var table = getTableItemsByRange(this).table; + if (table) { + var lastRow = table.rows[table.rows.length-1]; + return lastRow.getElementsByTagName('th').length ? -1 : 0; + } + return -1; + }, + execCommand: function (cmd) { + var table = getTableItemsByRange(this).table; + if (table) { + getUETable(table).insertCol(0, 'th'); + } + resetTdWidth(table, this); + var th = table.getElementsByTagName('th')[0]; + this.selection.getRange().setStart(th, 0).setCursor(false, true); + } + }; + UE.commands['deletetitlecol'] = { + queryCommandState: function () { + var table = getTableItemsByRange(this).table; + if (table) { + var lastRow = table.rows[table.rows.length-1]; + return lastRow.getElementsByTagName('th').length ? 0 : -1; + } + return -1; + }, + execCommand: function () { + var table = getTableItemsByRange(this).table; + if (table) { + for(var i = 0; i< table.rows.length; i++ ){ + domUtils.remove(table.rows[i].children[0]) + } + } + resetTdWidth(table, this); + var td = table.getElementsByTagName('td')[0]; + this.selection.getRange().setStart(td, 0).setCursor(false, true); + } + }; + + UE.commands["mergeright"] = { + queryCommandState: function (cmd) { + var tableItems = getTableItemsByRange(this), + table = tableItems.table, + cell = tableItems.cell; + + if (!table || !cell) return -1; + var ut = getUETable(table); + if (ut.selectedTds.length) return -1; + + var cellInfo = ut.getCellInfo(cell), + rightColIndex = cellInfo.colIndex + cellInfo.colSpan; + if (rightColIndex >= ut.colsNum) return -1; // 如果处于最右边则不能向右合并 + + var rightCellInfo = ut.indexTable[cellInfo.rowIndex][rightColIndex], + rightCell = table.rows[rightCellInfo.rowIndex].cells[rightCellInfo.cellIndex]; + if (!rightCell || cell.tagName != rightCell.tagName) return -1; // TH和TD不能相互合并 + + // 当且仅当两个Cell的开始列号和结束列号一致时能进行合并 + return (rightCellInfo.rowIndex == cellInfo.rowIndex && rightCellInfo.rowSpan == cellInfo.rowSpan) ? 0 : -1; + }, + execCommand: function (cmd) { + var rng = this.selection.getRange(), + bk = rng.createBookmark(true); + var cell = getTableItemsByRange(this).cell, + ut = getUETable(cell); + ut.mergeRight(cell); + rng.moveToBookmark(bk).select(); + } + }; + UE.commands["mergedown"] = { + queryCommandState: function (cmd) { + var tableItems = getTableItemsByRange(this), + table = tableItems.table, + cell = tableItems.cell; + + if (!table || !cell) return -1; + var ut = getUETable(table); + if (ut.selectedTds.length)return -1; + + var cellInfo = ut.getCellInfo(cell), + downRowIndex = cellInfo.rowIndex + cellInfo.rowSpan; + if (downRowIndex >= ut.rowsNum) return -1; // 如果处于最下边则不能向下合并 + + var downCellInfo = ut.indexTable[downRowIndex][cellInfo.colIndex], + downCell = table.rows[downCellInfo.rowIndex].cells[downCellInfo.cellIndex]; + if (!downCell || cell.tagName != downCell.tagName) return -1; // TH和TD不能相互合并 + + // 当且仅当两个Cell的开始列号和结束列号一致时能进行合并 + return (downCellInfo.colIndex == cellInfo.colIndex && downCellInfo.colSpan == cellInfo.colSpan) ? 0 : -1; + }, + execCommand: function () { + var rng = this.selection.getRange(), + bk = rng.createBookmark(true); + var cell = getTableItemsByRange(this).cell, + ut = getUETable(cell); + ut.mergeDown(cell); + rng.moveToBookmark(bk).select(); + } + }; + UE.commands["mergecells"] = { + queryCommandState: function () { + return getUETableBySelected(this) ? 0 : -1; + }, + execCommand: function () { + var ut = getUETableBySelected(this); + if (ut && ut.selectedTds.length) { + var cell = ut.selectedTds[0]; + ut.mergeRange(); + var rng = this.selection.getRange(); + if (domUtils.isEmptyBlock(cell)) { + rng.setStart(cell, 0).collapse(true) + } else { + rng.selectNodeContents(cell) + } + rng.select(); + } + + + } + }; + UE.commands["insertrow"] = { + queryCommandState: function () { + var tableItems = getTableItemsByRange(this), + cell = tableItems.cell; + return cell && (cell.tagName == "TD" || (cell.tagName == 'TH' && tableItems.tr !== tableItems.table.rows[0])) && + getUETable(tableItems.table).rowsNum < this.options.maxRowNum ? 0 : -1; + }, + execCommand: function () { + var rng = this.selection.getRange(), + bk = rng.createBookmark(true); + var tableItems = getTableItemsByRange(this), + cell = tableItems.cell, + table = tableItems.table, + ut = getUETable(table), + cellInfo = ut.getCellInfo(cell); + //ut.insertRow(!ut.selectedTds.length ? cellInfo.rowIndex:ut.cellsRange.beginRowIndex,''); + if (!ut.selectedTds.length) { + ut.insertRow(cellInfo.rowIndex, cell); + } else { + var range = ut.cellsRange; + for (var i = 0, len = range.endRowIndex - range.beginRowIndex + 1; i < len; i++) { + ut.insertRow(range.beginRowIndex, cell); + } + } + rng.moveToBookmark(bk).select(); + if (table.getAttribute("interlaced") === "enabled")this.fireEvent("interlacetable", table); + } + }; + //后插入行 + UE.commands["insertrownext"] = { + queryCommandState: function () { + var tableItems = getTableItemsByRange(this), + cell = tableItems.cell; + return cell && (cell.tagName == "TD") && getUETable(tableItems.table).rowsNum < this.options.maxRowNum ? 0 : -1; + }, + execCommand: function () { + var rng = this.selection.getRange(), + bk = rng.createBookmark(true); + var tableItems = getTableItemsByRange(this), + cell = tableItems.cell, + table = tableItems.table, + ut = getUETable(table), + cellInfo = ut.getCellInfo(cell); + //ut.insertRow(!ut.selectedTds.length? cellInfo.rowIndex + cellInfo.rowSpan : ut.cellsRange.endRowIndex + 1,''); + if (!ut.selectedTds.length) { + ut.insertRow(cellInfo.rowIndex + cellInfo.rowSpan, cell); + } else { + var range = ut.cellsRange; + for (var i = 0, len = range.endRowIndex - range.beginRowIndex + 1; i < len; i++) { + ut.insertRow(range.endRowIndex + 1, cell); + } + } + rng.moveToBookmark(bk).select(); + if (table.getAttribute("interlaced") === "enabled")this.fireEvent("interlacetable", table); + } + }; + UE.commands["deleterow"] = { + queryCommandState: function () { + var tableItems = getTableItemsByRange(this); + return tableItems.cell ? 0 : -1; + }, + execCommand: function () { + var cell = getTableItemsByRange(this).cell, + ut = getUETable(cell), + cellsRange = ut.cellsRange, + cellInfo = ut.getCellInfo(cell), + preCell = ut.getVSideCell(cell), + nextCell = ut.getVSideCell(cell, true), + rng = this.selection.getRange(); + if (utils.isEmptyObject(cellsRange)) { + ut.deleteRow(cellInfo.rowIndex); + } else { + for (var i = cellsRange.beginRowIndex; i < cellsRange.endRowIndex + 1; i++) { + ut.deleteRow(cellsRange.beginRowIndex); + } + } + var table = ut.table; + if (!table.getElementsByTagName('td').length) { + var nextSibling = table.nextSibling; + domUtils.remove(table); + if (nextSibling) { + rng.setStart(nextSibling, 0).setCursor(false, true); + } + } else { + if (cellInfo.rowSpan == 1 || cellInfo.rowSpan == cellsRange.endRowIndex - cellsRange.beginRowIndex + 1) { + if (nextCell || preCell) rng.selectNodeContents(nextCell || preCell).setCursor(false, true); + } else { + var newCell = ut.getCell(cellInfo.rowIndex, ut.indexTable[cellInfo.rowIndex][cellInfo.colIndex].cellIndex); + if (newCell) rng.selectNodeContents(newCell).setCursor(false, true); + } + } + if (table.getAttribute("interlaced") === "enabled")this.fireEvent("interlacetable", table); + } + }; + UE.commands["insertcol"] = { + queryCommandState: function (cmd) { + var tableItems = getTableItemsByRange(this), + cell = tableItems.cell; + return cell && (cell.tagName == "TD" || (cell.tagName == 'TH' && cell !== tableItems.tr.cells[0])) && + getUETable(tableItems.table).colsNum < this.options.maxColNum ? 0 : -1; + }, + execCommand: function (cmd) { + var rng = this.selection.getRange(), + bk = rng.createBookmark(true); + if (this.queryCommandState(cmd) == -1)return; + var cell = getTableItemsByRange(this).cell, + ut = getUETable(cell), + cellInfo = ut.getCellInfo(cell); + + //ut.insertCol(!ut.selectedTds.length ? cellInfo.colIndex:ut.cellsRange.beginColIndex); + if (!ut.selectedTds.length) { + ut.insertCol(cellInfo.colIndex, cell); + } else { + var range = ut.cellsRange; + for (var i = 0, len = range.endColIndex - range.beginColIndex + 1; i < len; i++) { + ut.insertCol(range.beginColIndex, cell); + } + } + rng.moveToBookmark(bk).select(true); + } + }; + UE.commands["insertcolnext"] = { + queryCommandState: function () { + var tableItems = getTableItemsByRange(this), + cell = tableItems.cell; + return cell && getUETable(tableItems.table).colsNum < this.options.maxColNum ? 0 : -1; + }, + execCommand: function () { + var rng = this.selection.getRange(), + bk = rng.createBookmark(true); + var cell = getTableItemsByRange(this).cell, + ut = getUETable(cell), + cellInfo = ut.getCellInfo(cell); + //ut.insertCol(!ut.selectedTds.length ? cellInfo.colIndex + cellInfo.colSpan:ut.cellsRange.endColIndex +1); + if (!ut.selectedTds.length) { + ut.insertCol(cellInfo.colIndex + cellInfo.colSpan, cell); + } else { + var range = ut.cellsRange; + for (var i = 0, len = range.endColIndex - range.beginColIndex + 1; i < len; i++) { + ut.insertCol(range.endColIndex + 1, cell); + } + } + rng.moveToBookmark(bk).select(); + } + }; + + UE.commands["deletecol"] = { + queryCommandState: function () { + var tableItems = getTableItemsByRange(this); + return tableItems.cell ? 0 : -1; + }, + execCommand: function () { + var cell = getTableItemsByRange(this).cell, + ut = getUETable(cell), + range = ut.cellsRange, + cellInfo = ut.getCellInfo(cell), + preCell = ut.getHSideCell(cell), + nextCell = ut.getHSideCell(cell, true); + if (utils.isEmptyObject(range)) { + ut.deleteCol(cellInfo.colIndex); + } else { + for (var i = range.beginColIndex; i < range.endColIndex + 1; i++) { + ut.deleteCol(range.beginColIndex); + } + } + var table = ut.table, + rng = this.selection.getRange(); + + if (!table.getElementsByTagName('td').length) { + var nextSibling = table.nextSibling; + domUtils.remove(table); + if (nextSibling) { + rng.setStart(nextSibling, 0).setCursor(false, true); + } + } else { + if (domUtils.inDoc(cell, this.document)) { + rng.setStart(cell, 0).setCursor(false, true); + } else { + if (nextCell && domUtils.inDoc(nextCell, this.document)) { + rng.selectNodeContents(nextCell).setCursor(false, true); + } else { + if (preCell && domUtils.inDoc(preCell, this.document)) { + rng.selectNodeContents(preCell).setCursor(true, true); + } + } + } + } + } + }; + UE.commands["splittocells"] = { + queryCommandState: function () { + var tableItems = getTableItemsByRange(this), + cell = tableItems.cell; + if (!cell) return -1; + var ut = getUETable(tableItems.table); + if (ut.selectedTds.length > 0) return -1; + return cell && (cell.colSpan > 1 || cell.rowSpan > 1) ? 0 : -1; + }, + execCommand: function () { + var rng = this.selection.getRange(), + bk = rng.createBookmark(true); + var cell = getTableItemsByRange(this).cell, + ut = getUETable(cell); + ut.splitToCells(cell); + rng.moveToBookmark(bk).select(); + } + }; + UE.commands["splittorows"] = { + queryCommandState: function () { + var tableItems = getTableItemsByRange(this), + cell = tableItems.cell; + if (!cell) return -1; + var ut = getUETable(tableItems.table); + if (ut.selectedTds.length > 0) return -1; + return cell && cell.rowSpan > 1 ? 0 : -1; + }, + execCommand: function () { + var rng = this.selection.getRange(), + bk = rng.createBookmark(true); + var cell = getTableItemsByRange(this).cell, + ut = getUETable(cell); + ut.splitToRows(cell); + rng.moveToBookmark(bk).select(); + } + }; + UE.commands["splittocols"] = { + queryCommandState: function () { + var tableItems = getTableItemsByRange(this), + cell = tableItems.cell; + if (!cell) return -1; + var ut = getUETable(tableItems.table); + if (ut.selectedTds.length > 0) return -1; + return cell && cell.colSpan > 1 ? 0 : -1; + }, + execCommand: function () { + var rng = this.selection.getRange(), + bk = rng.createBookmark(true); + var cell = getTableItemsByRange(this).cell, + ut = getUETable(cell); + ut.splitToCols(cell); + rng.moveToBookmark(bk).select(); + + } + }; + + UE.commands["adaptbytext"] = + UE.commands["adaptbywindow"] = { + queryCommandState: function () { + return getTableItemsByRange(this).table ? 0 : -1 + }, + execCommand: function (cmd) { + var tableItems = getTableItemsByRange(this), + table = tableItems.table; + if (table) { + if (cmd == 'adaptbywindow') { + resetTdWidth(table, this); + } else { + var cells = domUtils.getElementsByTagName(table, "td th"); + utils.each(cells, function (cell) { + cell.removeAttribute("width"); + }); + table.removeAttribute("width"); + } + } + } + }; + + //平均分配各列 + UE.commands['averagedistributecol'] = { + queryCommandState: function () { + var ut = getUETableBySelected(this); + if (!ut) return -1; + return ut.isFullRow() || ut.isFullCol() ? 0 : -1; + }, + execCommand: function (cmd) { + var me = this, + ut = getUETableBySelected(me); + + function getAverageWidth() { + var tb = ut.table, + averageWidth, sumWidth = 0, colsNum = 0, + tbAttr = getDefaultValue(me, tb); + + if (ut.isFullRow()) { + sumWidth = tb.offsetWidth; + colsNum = ut.colsNum; + } else { + var begin = ut.cellsRange.beginColIndex, + end = ut.cellsRange.endColIndex, + node; + for (var i = begin; i <= end;) { + node = ut.selectedTds[i]; + sumWidth += node.offsetWidth; + i += node.colSpan; + colsNum += 1; + } + } + averageWidth = Math.ceil(sumWidth / colsNum) - tbAttr.tdBorder * 2 - tbAttr.tdPadding * 2; + return averageWidth; + } + + function setAverageWidth(averageWidth) { + utils.each(domUtils.getElementsByTagName(ut.table, "th"), function (node) { + node.setAttribute("width", ""); + }); + var cells = ut.isFullRow() ? domUtils.getElementsByTagName(ut.table, "td") : ut.selectedTds; + + utils.each(cells, function (node) { + if (node.colSpan == 1) { + node.setAttribute("width", averageWidth); + } + }); + } + + if (ut && ut.selectedTds.length) { + setAverageWidth(getAverageWidth()); + } + } + }; + //平均分配各行 + UE.commands['averagedistributerow'] = { + queryCommandState: function () { + var ut = getUETableBySelected(this); + if (!ut) return -1; + if (ut.selectedTds && /th/ig.test(ut.selectedTds[0].tagName)) return -1; + return ut.isFullRow() || ut.isFullCol() ? 0 : -1; + }, + execCommand: function (cmd) { + var me = this, + ut = getUETableBySelected(me); + + function getAverageHeight() { + var averageHeight, rowNum, sumHeight = 0, + tb = ut.table, + tbAttr = getDefaultValue(me, tb), + tdpadding = parseInt(domUtils.getComputedStyle(tb.getElementsByTagName('td')[0], "padding-top")); + + if (ut.isFullCol()) { + var captionArr = domUtils.getElementsByTagName(tb, "caption"), + thArr = domUtils.getElementsByTagName(tb, "th"), + captionHeight, thHeight; + + if (captionArr.length > 0) { + captionHeight = captionArr[0].offsetHeight; + } + if (thArr.length > 0) { + thHeight = thArr[0].offsetHeight; + } + + sumHeight = tb.offsetHeight - (captionHeight || 0) - (thHeight || 0); + rowNum = thArr.length == 0 ? ut.rowsNum : (ut.rowsNum - 1); + } else { + var begin = ut.cellsRange.beginRowIndex, + end = ut.cellsRange.endRowIndex, + count = 0, + trs = domUtils.getElementsByTagName(tb, "tr"); + for (var i = begin; i <= end; i++) { + sumHeight += trs[i].offsetHeight; + count += 1; + } + rowNum = count; + } + //ie8下是混杂模式 + if (browser.ie && browser.version < 9) { + averageHeight = Math.ceil(sumHeight / rowNum); + } else { + averageHeight = Math.ceil(sumHeight / rowNum) - tbAttr.tdBorder * 2 - tdpadding * 2; + } + return averageHeight; + } + + function setAverageHeight(averageHeight) { + var cells = ut.isFullCol() ? domUtils.getElementsByTagName(ut.table, "td") : ut.selectedTds; + utils.each(cells, function (node) { + if (node.rowSpan == 1) { + node.setAttribute("height", averageHeight); + } + }); + } + + if (ut && ut.selectedTds.length) { + setAverageHeight(getAverageHeight()); + } + } + }; + + //单元格对齐方式 + UE.commands['cellalignment'] = { + queryCommandState: function () { + return getTableItemsByRange(this).table ? 0 : -1 + }, + execCommand: function (cmd, data) { + var me = this, + ut = getUETableBySelected(me); + + if (!ut) { + var start = me.selection.getStart(), + cell = start && domUtils.findParentByTagName(start, ["td", "th", "caption"], true); + if (!/caption/ig.test(cell.tagName)) { + domUtils.setAttributes(cell, data); + } else { + cell.style.textAlign = data.align; + cell.style.verticalAlign = data.vAlign; + } + me.selection.getRange().setCursor(true); + } else { + utils.each(ut.selectedTds, function (cell) { + domUtils.setAttributes(cell, data); + }); + } + }, + /** + * 查询当前点击的单元格的对齐状态, 如果当前已经选择了多个单元格, 则会返回所有单元格经过统一协调过后的状态 + * @see UE.UETable.getTableCellAlignState + */ + queryCommandValue: function (cmd) { + + var activeMenuCell = getTableItemsByRange( this).cell; + + if( !activeMenuCell ) { + activeMenuCell = getSelectedArr(this)[0]; + } + + if (!activeMenuCell) { + + return null; + + } else { + + //获取同时选中的其他单元格 + var cells = UE.UETable.getUETable(activeMenuCell).selectedTds; + + !cells.length && ( cells = activeMenuCell ); + + return UE.UETable.getTableCellAlignState(cells); + + } + + } + }; + //表格对齐方式 + UE.commands['tablealignment'] = { + queryCommandState: function () { + if (browser.ie && browser.version < 8) { + return -1; + } + return getTableItemsByRange(this).table ? 0 : -1 + }, + execCommand: function (cmd, value) { + var me = this, + start = me.selection.getStart(), + table = start && domUtils.findParentByTagName(start, ["table"], true); + + if (table) { + table.setAttribute("align",value); + } + } + }; + + //表格属性 + UE.commands['edittable'] = { + queryCommandState: function () { + return getTableItemsByRange(this).table ? 0 : -1 + }, + execCommand: function (cmd, color) { + var rng = this.selection.getRange(), + table = domUtils.findParentByTagName(rng.startContainer, 'table'); + if (table) { + var arr = domUtils.getElementsByTagName(table, "td").concat( + domUtils.getElementsByTagName(table, "th"), + domUtils.getElementsByTagName(table, "caption") + ); + utils.each(arr, function (node) { + node.style.borderColor = color; + }); + } + } + }; + //单元格属性 + UE.commands['edittd'] = { + queryCommandState: function () { + return getTableItemsByRange(this).table ? 0 : -1 + }, + execCommand: function (cmd, bkColor) { + var me = this, + ut = getUETableBySelected(me); + + if (!ut) { + var start = me.selection.getStart(), + cell = start && domUtils.findParentByTagName(start, ["td", "th", "caption"], true); + if (cell) { + cell.style.backgroundColor = bkColor; + } + } else { + utils.each(ut.selectedTds, function (cell) { + cell.style.backgroundColor = bkColor; + }); + } + } + }; + + UE.commands["settablebackground"] = { + queryCommandState: function () { + return getSelectedArr(this).length > 1 ? 0 : -1; + }, + execCommand: function (cmd, value) { + var cells, ut; + cells = getSelectedArr(this); + ut = getUETable(cells[0]); + ut.setBackground(cells, value); + } + }; + + UE.commands["cleartablebackground"] = { + queryCommandState: function () { + var cells = getSelectedArr(this); + if (!cells.length)return -1; + for (var i = 0, cell; cell = cells[i++];) { + if (cell.style.backgroundColor !== "") return 0; + } + return -1; + }, + execCommand: function () { + var cells = getSelectedArr(this), + ut = getUETable(cells[0]); + ut.removeBackground(cells); + } + }; + + UE.commands["interlacetable"] = UE.commands["uninterlacetable"] = { + queryCommandState: function (cmd) { + var table = getTableItemsByRange(this).table; + if (!table) return -1; + var interlaced = table.getAttribute("interlaced"); + if (cmd == "interlacetable") { + //TODO 待定 + //是否需要待定,如果设置,则命令只能单次执行成功,但反射具备toggle效果;否则可以覆盖前次命令,但反射将不存在toggle效果 + return (interlaced === "enabled") ? -1 : 0; + } else { + return (!interlaced || interlaced === "disabled") ? -1 : 0; + } + }, + execCommand: function (cmd, classList) { + var table = getTableItemsByRange(this).table; + if (cmd == "interlacetable") { + table.setAttribute("interlaced", "enabled"); + this.fireEvent("interlacetable", table, classList); + } else { + table.setAttribute("interlaced", "disabled"); + this.fireEvent("uninterlacetable", table); + } + } + }; + UE.commands["setbordervisible"] = { + queryCommandState: function (cmd) { + var table = getTableItemsByRange(this).table; + if (!table) return -1; + return 0; + }, + execCommand: function () { + var table = getTableItemsByRange(this).table; + utils.each(domUtils.getElementsByTagName(table,'td'),function(td){ + td.style.borderWidth = '1px'; + td.style.borderStyle = 'solid'; + }) + } + }; + function resetTdWidth(table, editor) { + var tds = domUtils.getElementsByTagName(table,'td th'); + utils.each(tds, function (td) { + td.removeAttribute("width"); + }); + table.setAttribute('width', getTableWidth(editor, true, getDefaultValue(editor, table))); + var tdsWidths = []; + setTimeout(function () { + utils.each(tds, function (td) { + (td.colSpan == 1) && tdsWidths.push(td.offsetWidth) + }) + utils.each(tds, function (td,i) { + (td.colSpan == 1) && td.setAttribute("width", tdsWidths[i] + ""); + }) + }, 0); + } + + function getTableWidth(editor, needIEHack, defaultValue) { + var body = editor.body; + return body.offsetWidth - (needIEHack ? parseInt(domUtils.getComputedStyle(body, 'margin-left'), 10) * 2 : 0) - defaultValue.tableBorder * 2 - (editor.options.offsetWidth || 0); + } + + function getSelectedArr(editor) { + var cell = getTableItemsByRange(editor).cell; + if (cell) { + var ut = getUETable(cell); + return ut.selectedTds.length ? ut.selectedTds : [cell]; + } else { + return []; + } + } +})(); + + +// plugins/table.action.js +/** + * Created with JetBrains PhpStorm. + * User: taoqili + * Date: 12-10-12 + * Time: 上午10:05 + * To change this template use File | Settings | File Templates. + */ +UE.plugins['table'] = function () { + var me = this, + tabTimer = null, + //拖动计时器 + tableDragTimer = null, + //双击计时器 + tableResizeTimer = null, + //单元格最小宽度 + cellMinWidth = 5, + isInResizeBuffer = false, + //单元格边框大小 + cellBorderWidth = 5, + //鼠标偏移距离 + offsetOfTableCell = 10, + //记录在有限时间内的点击状态, 共有3个取值, 0, 1, 2。 0代表未初始化, 1代表单击了1次,2代表2次 + singleClickState = 0, + userActionStatus = null, + //双击允许的时间范围 + dblclickTime = 360, + UT = UE.UETable, + getUETable = function (tdOrTable) { + return UT.getUETable(tdOrTable); + }, + getUETableBySelected = function (editor) { + return UT.getUETableBySelected(editor); + }, + getDefaultValue = function (editor, table) { + return UT.getDefaultValue(editor, table); + }, + removeSelectedClass = function (cells) { + return UT.removeSelectedClass(cells); + }; + + function showError(e) { +// throw e; + } + me.ready(function(){ + var me = this; + var orgGetText = me.selection.getText; + me.selection.getText = function(){ + var table = getUETableBySelected(me); + if(table){ + var str = ''; + utils.each(table.selectedTds,function(td){ + str += td[browser.ie?'innerText':'textContent']; + }) + return str; + }else{ + return orgGetText.call(me.selection) + } + + } + }) + + //处理拖动及框选相关方法 + var startTd = null, //鼠标按下时的锚点td + currentTd = null, //当前鼠标经过时的td + onDrag = "", //指示当前拖动状态,其值可为"","h","v" ,分别表示未拖动状态,横向拖动状态,纵向拖动状态,用于鼠标移动过程中的判断 + onBorder = false, //检测鼠标按下时是否处在单元格边缘位置 + dragButton = null, + dragOver = false, + dragLine = null, //模拟的拖动线 + dragTd = null; //发生拖动的目标td + + var mousedown = false, + //todo 判断混乱模式 + needIEHack = true; + + me.setOpt({ + 'maxColNum':20, + 'maxRowNum':100, + 'defaultCols':5, + 'defaultRows':5, + 'tdvalign':'top', + 'cursorpath':me.options.UEDITOR_HOME_URL + "themes/default/images/cursor_", + 'tableDragable':false, + 'classList':["ue-table-interlace-color-single","ue-table-interlace-color-double"] + }); + me.getUETable = getUETable; + var commands = { + 'deletetable':1, + 'inserttable':1, + 'cellvalign':1, + 'insertcaption':1, + 'deletecaption':1, + 'inserttitle':1, + 'deletetitle':1, + "mergeright":1, + "mergedown":1, + "mergecells":1, + "insertrow":1, + "insertrownext":1, + "deleterow":1, + "insertcol":1, + "insertcolnext":1, + "deletecol":1, + "splittocells":1, + "splittorows":1, + "splittocols":1, + "adaptbytext":1, + "adaptbywindow":1, + "adaptbycustomer":1, + "insertparagraph":1, + "insertparagraphbeforetable":1, + "averagedistributecol":1, + "averagedistributerow":1 + }; + me.ready(function () { + utils.cssRule('table', + //选中的td上的样式 + '.selectTdClass{background-color:#edf5fa !important}' + + 'table.noBorderTable td,table.noBorderTable th,table.noBorderTable caption{border:1px dashed #ddd !important}' + + //插入的表格的默认样式 + 'table{margin-bottom:10px;border-collapse:collapse;display:table;}' + + 'td,th{padding: 5px 10px;border: 1px solid #DDD;}' + + 'caption{border:1px dashed #DDD;border-bottom:0;padding:3px;text-align:center;}' + + 'th{border-top:1px solid #BBB;background-color:#F7F7F7;}' + + 'table tr.firstRow th{border-top-width:2px;}' + + '.ue-table-interlace-color-single{ background-color: #fcfcfc; } .ue-table-interlace-color-double{ background-color: #f7faff; }' + + 'td p{margin:0;padding:0;}', me.document); + + var tableCopyList, isFullCol, isFullRow; + //注册del/backspace事件 + me.addListener('keydown', function (cmd, evt) { + var me = this; + var keyCode = evt.keyCode || evt.which; + + if (keyCode == 8) { + + var ut = getUETableBySelected(me); + if (ut && ut.selectedTds.length) { + + if (ut.isFullCol()) { + me.execCommand('deletecol') + } else if (ut.isFullRow()) { + me.execCommand('deleterow') + } else { + me.fireEvent('delcells'); + } + domUtils.preventDefault(evt); + } + + var caption = domUtils.findParentByTagName(me.selection.getStart(), 'caption', true), + range = me.selection.getRange(); + if (range.collapsed && caption && isEmptyBlock(caption)) { + me.fireEvent('saveScene'); + var table = caption.parentNode; + domUtils.remove(caption); + if (table) { + range.setStart(table.rows[0].cells[0], 0).setCursor(false, true); + } + me.fireEvent('saveScene'); + } + + } + + if (keyCode == 46) { + + ut = getUETableBySelected(me); + if (ut) { + me.fireEvent('saveScene'); + for (var i = 0, ci; ci = ut.selectedTds[i++];) { + domUtils.fillNode(me.document, ci) + } + me.fireEvent('saveScene'); + domUtils.preventDefault(evt); + + } + + } + if (keyCode == 13) { + + var rng = me.selection.getRange(), + caption = domUtils.findParentByTagName(rng.startContainer, 'caption', true); + if (caption) { + var table = domUtils.findParentByTagName(caption, 'table'); + if (!rng.collapsed) { + + rng.deleteContents(); + me.fireEvent('saveScene'); + } else { + if (caption) { + rng.setStart(table.rows[0].cells[0], 0).setCursor(false, true); + } + } + domUtils.preventDefault(evt); + return; + } + if (rng.collapsed) { + var table = domUtils.findParentByTagName(rng.startContainer, 'table'); + if (table) { + var cell = table.rows[0].cells[0], + start = domUtils.findParentByTagName(me.selection.getStart(), ['td', 'th'], true), + preNode = table.previousSibling; + if (cell === start && (!preNode || preNode.nodeType == 1 && preNode.tagName == 'TABLE' ) && domUtils.isStartInblock(rng)) { + var first = domUtils.findParent(me.selection.getStart(), function(n){return domUtils.isBlockElm(n)}, true); + if(first && ( /t(h|d)/i.test(first.tagName) || first === start.firstChild )){ + me.execCommand('insertparagraphbeforetable'); + domUtils.preventDefault(evt); + } + + } + } + } + } + + if ((evt.ctrlKey || evt.metaKey) && evt.keyCode == '67') { + tableCopyList = null; + var ut = getUETableBySelected(me); + if (ut) { + var tds = ut.selectedTds; + isFullCol = ut.isFullCol(); + isFullRow = ut.isFullRow(); + tableCopyList = [ + [ut.cloneCell(tds[0],null,true)] + ]; + for (var i = 1, ci; ci = tds[i]; i++) { + if (ci.parentNode !== tds[i - 1].parentNode) { + tableCopyList.push([ut.cloneCell(ci,null,true)]); + } else { + tableCopyList[tableCopyList.length - 1].push(ut.cloneCell(ci,null,true)); + } + + } + } + } + }); + me.addListener("tablehasdeleted",function(){ + toggleDraggableState(this, false, "", null); + if (dragButton)domUtils.remove(dragButton); + }); + + me.addListener('beforepaste', function (cmd, html) { + var me = this; + var rng = me.selection.getRange(); + if (domUtils.findParentByTagName(rng.startContainer, 'caption', true)) { + var div = me.document.createElement("div"); + div.innerHTML = html.html; + //trace:3729 + html.html = div[browser.ie9below ? 'innerText' : 'textContent']; + return; + } + var table = getUETableBySelected(me); + if (tableCopyList) { + me.fireEvent('saveScene'); + var rng = me.selection.getRange(); + var td = domUtils.findParentByTagName(rng.startContainer, ['td', 'th'], true), tmpNode, preNode; + if (td) { + var ut = getUETable(td); + if (isFullRow) { + var rowIndex = ut.getCellInfo(td).rowIndex; + if (td.tagName == 'TH') { + rowIndex++; + } + for (var i = 0, ci; ci = tableCopyList[i++];) { + var tr = ut.insertRow(rowIndex++, "td"); + for (var j = 0, cj; cj = ci[j]; j++) { + var cell = tr.cells[j]; + if (!cell) { + cell = tr.insertCell(j) + } + cell.innerHTML = cj.innerHTML; + cj.getAttribute('width') && cell.setAttribute('width', cj.getAttribute('width')); + cj.getAttribute('vAlign') && cell.setAttribute('vAlign', cj.getAttribute('vAlign')); + cj.getAttribute('align') && cell.setAttribute('align', cj.getAttribute('align')); + cj.style.cssText && (cell.style.cssText = cj.style.cssText) + } + for (var j = 0, cj; cj = tr.cells[j]; j++) { + if (!ci[j]) + break; + cj.innerHTML = ci[j].innerHTML; + ci[j].getAttribute('width') && cj.setAttribute('width', ci[j].getAttribute('width')); + ci[j].getAttribute('vAlign') && cj.setAttribute('vAlign', ci[j].getAttribute('vAlign')); + ci[j].getAttribute('align') && cj.setAttribute('align', ci[j].getAttribute('align')); + ci[j].style.cssText && (cj.style.cssText = ci[j].style.cssText) + } + } + } else { + if (isFullCol) { + cellInfo = ut.getCellInfo(td); + var maxColNum = 0; + for (var j = 0, ci = tableCopyList[0], cj; cj = ci[j++];) { + maxColNum += cj.colSpan || 1; + } + me.__hasEnterExecCommand = true; + for (i = 0; i < maxColNum; i++) { + me.execCommand('insertcol'); + } + me.__hasEnterExecCommand = false; + td = ut.table.rows[0].cells[cellInfo.cellIndex]; + if (td.tagName == 'TH') { + td = ut.table.rows[1].cells[cellInfo.cellIndex]; + } + } + for (var i = 0, ci; ci = tableCopyList[i++];) { + tmpNode = td; + for (var j = 0, cj; cj = ci[j++];) { + if (td) { + td.innerHTML = cj.innerHTML; + //todo 定制处理 + cj.getAttribute('width') && td.setAttribute('width', cj.getAttribute('width')); + cj.getAttribute('vAlign') && td.setAttribute('vAlign', cj.getAttribute('vAlign')); + cj.getAttribute('align') && td.setAttribute('align', cj.getAttribute('align')); + cj.style.cssText && (td.style.cssText = cj.style.cssText); + preNode = td; + td = td.nextSibling; + } else { + var cloneTd = cj.cloneNode(true); + domUtils.removeAttributes(cloneTd, ['class', 'rowSpan', 'colSpan']); + + preNode.parentNode.appendChild(cloneTd) + } + } + td = ut.getNextCell(tmpNode, true, true); + if (!tableCopyList[i]) + break; + if (!td) { + var cellInfo = ut.getCellInfo(tmpNode); + ut.table.insertRow(ut.table.rows.length); + ut.update(); + td = ut.getVSideCell(tmpNode, true); + } + } + } + ut.update(); + } else { + table = me.document.createElement('table'); + for (var i = 0, ci; ci = tableCopyList[i++];) { + var tr = table.insertRow(table.rows.length); + for (var j = 0, cj; cj = ci[j++];) { + cloneTd = UT.cloneCell(cj,null,true); + domUtils.removeAttributes(cloneTd, ['class']); + tr.appendChild(cloneTd) + } + if (j == 2 && cloneTd.rowSpan > 1) { + cloneTd.rowSpan = 1; + } + } + + var defaultValue = getDefaultValue(me), + width = me.body.offsetWidth - + (needIEHack ? parseInt(domUtils.getComputedStyle(me.body, 'margin-left'), 10) * 2 : 0) - defaultValue.tableBorder * 2 - (me.options.offsetWidth || 0); + me.execCommand('insertHTML', '' + table.innerHTML.replace(/>\s*<').replace(/\bth\b/gi, "td") + '
    ') + } + me.fireEvent('contentchange'); + me.fireEvent('saveScene'); + html.html = ''; + return true; + } else { + var div = me.document.createElement("div"), tables; + div.innerHTML = html.html; + tables = div.getElementsByTagName("table"); + if (domUtils.findParentByTagName(me.selection.getStart(), 'table')) { + utils.each(tables, function (t) { + domUtils.remove(t) + }); + if (domUtils.findParentByTagName(me.selection.getStart(), 'caption', true)) { + div.innerHTML = div[browser.ie ? 'innerText' : 'textContent']; + } + } else { + utils.each(tables, function (table) { + removeStyleSize(table, true); + domUtils.removeAttributes(table, ['style', 'border']); + utils.each(domUtils.getElementsByTagName(table, "td"), function (td) { + if (isEmptyBlock(td)) { + domUtils.fillNode(me.document, td); + } + removeStyleSize(td, true); +// domUtils.removeAttributes(td, ['style']) + }); + }); + } + html.html = div.innerHTML; + } + }); + + me.addListener('afterpaste', function () { + utils.each(domUtils.getElementsByTagName(me.body, "table"), function (table) { + if (table.offsetWidth > me.body.offsetWidth) { + var defaultValue = getDefaultValue(me, table); + table.style.width = me.body.offsetWidth - (needIEHack ? parseInt(domUtils.getComputedStyle(me.body, 'margin-left'), 10) * 2 : 0) - defaultValue.tableBorder * 2 - (me.options.offsetWidth || 0) + 'px' + } + }) + }); + me.addListener('blur', function () { + tableCopyList = null; + }); + var timer; + me.addListener('keydown', function () { + clearTimeout(timer); + timer = setTimeout(function () { + var rng = me.selection.getRange(), + cell = domUtils.findParentByTagName(rng.startContainer, ['th', 'td'], true); + if (cell) { + var table = cell.parentNode.parentNode.parentNode; + if (table.offsetWidth > table.getAttribute("width")) { + cell.style.wordBreak = "break-all"; + } + } + + }, 100); + }); + me.addListener("selectionchange", function () { + toggleDraggableState(me, false, "", null); + }); + + + //内容变化时触发索引更新 + //todo 可否考虑标记检测,如果不涉及表格的变化就不进行索引重建和更新 + me.addListener("contentchange", function () { + var me = this; + //尽可能排除一些不需要更新的状况 + hideDragLine(me); + if (getUETableBySelected(me))return; + var rng = me.selection.getRange(); + var start = rng.startContainer; + start = domUtils.findParentByTagName(start, ['td', 'th'], true); + utils.each(domUtils.getElementsByTagName(me.document, 'table'), function (table) { + if (me.fireEvent("excludetable", table) === true) return; + table.ueTable = new UT(table); + //trace:3742 +// utils.each(domUtils.getElementsByTagName(me.document, 'td'), function (td) { +// +// if (domUtils.isEmptyBlock(td) && td !== start) { +// domUtils.fillNode(me.document, td); +// if (browser.ie && browser.version == 6) { +// td.innerHTML = ' ' +// } +// } +// }); +// utils.each(domUtils.getElementsByTagName(me.document, 'th'), function (th) { +// if (domUtils.isEmptyBlock(th) && th !== start) { +// domUtils.fillNode(me.document, th); +// if (browser.ie && browser.version == 6) { +// th.innerHTML = ' ' +// } +// } +// }); + table.onmouseover = function () { + me.fireEvent('tablemouseover', table); + }; + table.onmousemove = function () { + me.fireEvent('tablemousemove', table); + me.options.tableDragable && toggleDragButton(true, this, me); + utils.defer(function(){ + me.fireEvent('contentchange',50) + },true) + }; + table.onmouseout = function () { + me.fireEvent('tablemouseout', table); + toggleDraggableState(me, false, "", null); + hideDragLine(me); + }; + table.onclick = function (evt) { + evt = me.window.event || evt; + var target = getParentTdOrTh(evt.target || evt.srcElement); + if (!target)return; + var ut = getUETable(target), + table = ut.table, + cellInfo = ut.getCellInfo(target), + cellsRange, + rng = me.selection.getRange(); +// if ("topLeft" == inPosition(table, mouseCoords(evt))) { +// cellsRange = ut.getCellsRange(ut.table.rows[0].cells[0], ut.getLastCell()); +// ut.setSelected(cellsRange); +// return; +// } +// if ("bottomRight" == inPosition(table, mouseCoords(evt))) { +// +// return; +// } + if (inTableSide(table, target, evt, true)) { + var endTdCol = ut.getCell(ut.indexTable[ut.rowsNum - 1][cellInfo.colIndex].rowIndex, ut.indexTable[ut.rowsNum - 1][cellInfo.colIndex].cellIndex); + if (evt.shiftKey && ut.selectedTds.length) { + if (ut.selectedTds[0] !== endTdCol) { + cellsRange = ut.getCellsRange(ut.selectedTds[0], endTdCol); + ut.setSelected(cellsRange); + } else { + rng && rng.selectNodeContents(endTdCol).select(); + } + } else { + if (target !== endTdCol) { + cellsRange = ut.getCellsRange(target, endTdCol); + ut.setSelected(cellsRange); + } else { + rng && rng.selectNodeContents(endTdCol).select(); + } + } + return; + } + if (inTableSide(table, target, evt)) { + var endTdRow = ut.getCell(ut.indexTable[cellInfo.rowIndex][ut.colsNum - 1].rowIndex, ut.indexTable[cellInfo.rowIndex][ut.colsNum - 1].cellIndex); + if (evt.shiftKey && ut.selectedTds.length) { + if (ut.selectedTds[0] !== endTdRow) { + cellsRange = ut.getCellsRange(ut.selectedTds[0], endTdRow); + ut.setSelected(cellsRange); + } else { + rng && rng.selectNodeContents(endTdRow).select(); + } + } else { + if (target !== endTdRow) { + cellsRange = ut.getCellsRange(target, endTdRow); + ut.setSelected(cellsRange); + } else { + rng && rng.selectNodeContents(endTdRow).select(); + } + } + } + }; + }); + + switchBorderColor(me, true); + }); + + domUtils.on(me.document, "mousemove", mouseMoveEvent); + + domUtils.on(me.document, "mouseout", function (evt) { + var target = evt.target || evt.srcElement; + if (target.tagName == "TABLE") { + toggleDraggableState(me, false, "", null); + } + }); + /** + * 表格隔行变色 + */ + me.addListener("interlacetable",function(type,table,classList){ + if(!table) return; + var me = this, + rows = table.rows, + len = rows.length, + getClass = function(list,index,repeat){ + return list[index] ? list[index] : repeat ? list[index % list.length]: ""; + }; + for(var i = 0;i 1 ? currentRowIndex : ua.getCellInfo(cell).rowIndex; + var nextCell = ua.getTabNextCell(cell, currentRowIndex); + if (nextCell) { + if (isEmptyBlock(nextCell)) { + range.setStart(nextCell, 0).setCursor(false, true) + } else { + range.selectNodeContents(nextCell).select() + } + } else { + me.fireEvent('saveScene'); + me.__hasEnterExecCommand = true; + this.execCommand('insertrownext'); + me.__hasEnterExecCommand = false; + range = this.selection.getRange(); + range.setStart(table.rows[table.rows.length - 1].cells[0], 0).setCursor(); + me.fireEvent('saveScene'); + } + } + return true; + } + + }); + browser.ie && me.addListener('selectionchange', function () { + toggleDraggableState(this, false, "", null); + }); + me.addListener("keydown", function (type, evt) { + var me = this; + //处理在表格的最后一个输入tab产生新的表格 + var keyCode = evt.keyCode || evt.which; + if (keyCode == 8 || keyCode == 46) { + return; + } + var notCtrlKey = !evt.ctrlKey && !evt.metaKey && !evt.shiftKey && !evt.altKey; + notCtrlKey && removeSelectedClass(domUtils.getElementsByTagName(me.body, "td")); + var ut = getUETableBySelected(me); + if (!ut) return; + notCtrlKey && ut.clearSelected(); + }); + + me.addListener("beforegetcontent", function () { + switchBorderColor(this, false); + browser.ie && utils.each(this.document.getElementsByTagName('caption'), function (ci) { + if (domUtils.isEmptyNode(ci)) { + ci.innerHTML = ' ' + } + }); + }); + me.addListener("aftergetcontent", function () { + switchBorderColor(this, true); + }); + me.addListener("getAllHtml", function () { + removeSelectedClass(me.document.getElementsByTagName("td")); + }); + //修正全屏状态下插入的表格宽度在非全屏状态下撑开编辑器的情况 + me.addListener("fullscreenchanged", function (type, fullscreen) { + if (!fullscreen) { + var ratio = this.body.offsetWidth / document.body.offsetWidth, + tables = domUtils.getElementsByTagName(this.body, "table"); + utils.each(tables, function (table) { + if (table.offsetWidth < me.body.offsetWidth) return false; + var tds = domUtils.getElementsByTagName(table, "td"), + backWidths = []; + utils.each(tds, function (td) { + backWidths.push(td.offsetWidth); + }); + for (var i = 0, td; td = tds[i]; i++) { + td.setAttribute("width", Math.floor(backWidths[i] * ratio)); + } + table.setAttribute("width", Math.floor(getTableWidth(me, needIEHack, getDefaultValue(me)))) + }); + } + }); + + //重写execCommand命令,用于处理框选时的处理 + var oldExecCommand = me.execCommand; + me.execCommand = function (cmd, datatat) { + + var me = this, + args = arguments; + + cmd = cmd.toLowerCase(); + var ut = getUETableBySelected(me), tds, + range = new dom.Range(me.document), + cmdFun = me.commands[cmd] || UE.commands[cmd], + result; + if (!cmdFun) return; + if (ut && !commands[cmd] && !cmdFun.notNeedUndo && !me.__hasEnterExecCommand) { + me.__hasEnterExecCommand = true; + me.fireEvent("beforeexeccommand", cmd); + tds = ut.selectedTds; + var lastState = -2, lastValue = -2, value, state; + for (var i = 0, td; td = tds[i]; i++) { + if (isEmptyBlock(td)) { + range.setStart(td, 0).setCursor(false, true) + } else { + range.selectNode(td).select(true); + } + state = me.queryCommandState(cmd); + value = me.queryCommandValue(cmd); + if (state != -1) { + if (lastState !== state || lastValue !== value) { + me._ignoreContentChange = true; + result = oldExecCommand.apply(me, arguments); + me._ignoreContentChange = false; + + } + lastState = me.queryCommandState(cmd); + lastValue = me.queryCommandValue(cmd); + if (domUtils.isEmptyBlock(td)) { + domUtils.fillNode(me.document, td) + } + } + } + range.setStart(tds[0], 0).shrinkBoundary(true).setCursor(false, true); + me.fireEvent('contentchange'); + me.fireEvent("afterexeccommand", cmd); + me.__hasEnterExecCommand = false; + me._selectionChange(); + } else { + result = oldExecCommand.apply(me, arguments); + } + return result; + }; + + + }); + /** + * 删除obj的宽高style,改成属性宽高 + * @param obj + * @param replaceToProperty + */ + function removeStyleSize(obj, replaceToProperty) { + removeStyle(obj, "width", true); + removeStyle(obj, "height", true); + } + + function removeStyle(obj, styleName, replaceToProperty) { + if (obj.style[styleName]) { + replaceToProperty && obj.setAttribute(styleName, parseInt(obj.style[styleName], 10)); + obj.style[styleName] = ""; + } + } + + function getParentTdOrTh(ele) { + if (ele.tagName == "TD" || ele.tagName == "TH") return ele; + var td; + if (td = domUtils.findParentByTagName(ele, "td", true) || domUtils.findParentByTagName(ele, "th", true)) return td; + return null; + } + + function isEmptyBlock(node) { + var reg = new RegExp(domUtils.fillChar, 'g'); + if (node[browser.ie ? 'innerText' : 'textContent'].replace(/^\s*$/, '').replace(reg, '').length > 0) { + return 0; + } + for (var n in dtd.$isNotEmpty) { + if (node.getElementsByTagName(n).length) { + return 0; + } + } + return 1; + } + + + function mouseCoords(evt) { + if (evt.pageX || evt.pageY) { + return { x:evt.pageX, y:evt.pageY }; + } + return { + x:evt.clientX + me.document.body.scrollLeft - me.document.body.clientLeft, + y:evt.clientY + me.document.body.scrollTop - me.document.body.clientTop + }; + } + + function mouseMoveEvent(evt) { + + if( isEditorDisabled() ) { + return; + } + + try { + + //普通状态下鼠标移动 + var target = getParentTdOrTh(evt.target || evt.srcElement), + pos; + + //区分用户的行为是拖动还是双击 + if( isInResizeBuffer ) { + + me.body.style.webkitUserSelect = 'none'; + + if( Math.abs( userActionStatus.x - evt.clientX ) > offsetOfTableCell || Math.abs( userActionStatus.y - evt.clientY ) > offsetOfTableCell ) { + clearTableDragTimer(); + isInResizeBuffer = false; + singleClickState = 0; + //drag action + tableBorderDrag(evt); + } + } + + //修改单元格大小时的鼠标移动 + if (onDrag && dragTd) { + singleClickState = 0; + me.body.style.webkitUserSelect = 'none'; + me.selection.getNative()[browser.ie9below ? 'empty' : 'removeAllRanges'](); + pos = mouseCoords(evt); + toggleDraggableState(me, true, onDrag, pos, target); + if (onDrag == "h") { + dragLine.style.left = getPermissionX(dragTd, evt) + "px"; + } else if (onDrag == "v") { + dragLine.style.top = getPermissionY(dragTd, evt) + "px"; + } + return; + } + //当鼠标处于table上时,修改移动过程中的光标状态 + if (target) { + //针对使用table作为容器的组件不触发拖拽效果 + if (me.fireEvent('excludetable', target) === true) + return; + pos = mouseCoords(evt); + var state = getRelation(target, pos), + table = domUtils.findParentByTagName(target, "table", true); + + if (inTableSide(table, target, evt, true)) { + if (me.fireEvent("excludetable", table) === true) return; + me.body.style.cursor = "url(" + me.options.cursorpath + "h.png),pointer"; + } else if (inTableSide(table, target, evt)) { + if (me.fireEvent("excludetable", table) === true) return; + me.body.style.cursor = "url(" + me.options.cursorpath + "v.png),pointer"; + } else { + me.body.style.cursor = "text"; + var curCell = target; + if (/\d/.test(state)) { + state = state.replace(/\d/, ''); + target = getUETable(target).getPreviewCell(target, state == "v"); + } + //位于第一行的顶部或者第一列的左边时不可拖动 + toggleDraggableState(me, target ? !!state : false, target ? state : '', pos, target); + + } + } else { + toggleDragButton(false, table, me); + } + + } catch (e) { + showError(e); + } + } + + var dragButtonTimer; + + function toggleDragButton(show, table, editor) { + if (!show) { + if (dragOver)return; + dragButtonTimer = setTimeout(function () { + !dragOver && dragButton && dragButton.parentNode && dragButton.parentNode.removeChild(dragButton); + }, 2000); + } else { + createDragButton(table, editor); + } + } + + function createDragButton(table, editor) { + var pos = domUtils.getXY(table), + doc = table.ownerDocument; + if (dragButton && dragButton.parentNode)return dragButton; + dragButton = doc.createElement("div"); + dragButton.contentEditable = false; + dragButton.innerHTML = ""; + dragButton.style.cssText = "width:15px;height:15px;background-image:url(" + editor.options.UEDITOR_HOME_URL + "dialogs/table/dragicon.png);position: absolute;cursor:move;top:" + (pos.y - 15) + "px;left:" + (pos.x) + "px;"; + domUtils.unSelectable(dragButton); + dragButton.onmouseover = function (evt) { + dragOver = true; + }; + dragButton.onmouseout = function (evt) { + dragOver = false; + }; + domUtils.on(dragButton, 'click', function (type, evt) { + doClick(evt, this); + }); + domUtils.on(dragButton, 'dblclick', function (type, evt) { + doDblClick(evt); + }); + domUtils.on(dragButton, 'dragstart', function (type, evt) { + domUtils.preventDefault(evt); + }); + var timer; + + function doClick(evt, button) { + // 部分浏览器下需要清理 + clearTimeout(timer); + timer = setTimeout(function () { + editor.fireEvent("tableClicked", table, button); + }, 300); + } + + function doDblClick(evt) { + clearTimeout(timer); + var ut = getUETable(table), + start = table.rows[0].cells[0], + end = ut.getLastCell(), + range = ut.getCellsRange(start, end); + editor.selection.getRange().setStart(start, 0).setCursor(false, true); + ut.setSelected(range); + } + + doc.body.appendChild(dragButton); + } + + +// function inPosition(table, pos) { +// var tablePos = domUtils.getXY(table), +// width = table.offsetWidth, +// height = table.offsetHeight; +// if (pos.x - tablePos.x < 5 && pos.y - tablePos.y < 5) { +// return "topLeft"; +// } else if (tablePos.x + width - pos.x < 5 && tablePos.y + height - pos.y < 5) { +// return "bottomRight"; +// } +// } + + function inTableSide(table, cell, evt, top) { + var pos = mouseCoords(evt), + state = getRelation(cell, pos); + + if (top) { + var caption = table.getElementsByTagName("caption")[0], + capHeight = caption ? caption.offsetHeight : 0; + return (state == "v1") && ((pos.y - domUtils.getXY(table).y - capHeight) < 8); + } else { + return (state == "h1") && ((pos.x - domUtils.getXY(table).x) < 8); + } + } + + /** + * 获取拖动时允许的X轴坐标 + * @param dragTd + * @param evt + */ + function getPermissionX(dragTd, evt) { + var ut = getUETable(dragTd); + if (ut) { + var preTd = ut.getSameEndPosCells(dragTd, "x")[0], + nextTd = ut.getSameStartPosXCells(dragTd)[0], + mouseX = mouseCoords(evt).x, + left = (preTd ? domUtils.getXY(preTd).x : domUtils.getXY(ut.table).x) + 20 , + right = nextTd ? domUtils.getXY(nextTd).x + nextTd.offsetWidth - 20 : (me.body.offsetWidth + 5 || parseInt(domUtils.getComputedStyle(me.body, "width"), 10)); + + left += cellMinWidth; + right -= cellMinWidth; + + return mouseX < left ? left : mouseX > right ? right : mouseX; + } + } + + /** + * 获取拖动时允许的Y轴坐标 + */ + function getPermissionY(dragTd, evt) { + try { + var top = domUtils.getXY(dragTd).y, + mousePosY = mouseCoords(evt).y; + return mousePosY < top ? top : mousePosY; + } catch (e) { + showError(e); + } + } + + /** + * 移动状态切换 + */ + function toggleDraggableState(editor, draggable, dir, mousePos, cell) { + try { + editor.body.style.cursor = dir == "h" ? "col-resize" : dir == "v" ? "row-resize" : "text"; + if (browser.ie) { + if (dir && !mousedown && !getUETableBySelected(editor)) { + getDragLine(editor, editor.document); + showDragLineAt(dir, cell); + } else { + hideDragLine(editor) + } + } + onBorder = draggable; + } catch (e) { + showError(e); + } + } + + /** + * 获取与UETable相关的resize line + * @param uetable UETable对象 + */ + function getResizeLineByUETable() { + + var lineId = '_UETableResizeLine', + line = this.document.getElementById( lineId ); + + if( !line ) { + line = this.document.createElement("div"); + line.id = lineId; + line.contnetEditable = false; + line.setAttribute("unselectable", "on"); + + var styles = { + width: 2*cellBorderWidth + 1 + 'px', + position: 'absolute', + 'z-index': 100000, + cursor: 'col-resize', + background: 'red', + display: 'none' + }; + + //切换状态 + line.onmouseout = function(){ + this.style.display = 'none'; + }; + + utils.extend( line.style, styles ); + + this.document.body.appendChild( line ); + + } + + return line; + + } + + /** + * 更新resize-line + */ + function updateResizeLine( cell, uetable ) { + + var line = getResizeLineByUETable.call( this ), + table = uetable.table, + styles = { + top: domUtils.getXY( table ).y + 'px', + left: domUtils.getXY( cell).x + cell.offsetWidth - cellBorderWidth + 'px', + display: 'block', + height: table.offsetHeight + 'px' + }; + + utils.extend( line.style, styles ); + + } + + /** + * 显示resize-line + */ + function showResizeLine( cell ) { + + var uetable = getUETable( cell ); + + updateResizeLine.call( this, cell, uetable ); + + } + + /** + * 获取鼠标与当前单元格的相对位置 + * @param ele + * @param mousePos + */ + function getRelation(ele, mousePos) { + var elePos = domUtils.getXY(ele); + + if( !elePos ) { + return ''; + } + + if (elePos.x + ele.offsetWidth - mousePos.x < cellBorderWidth) { + return "h"; + } + if (mousePos.x - elePos.x < cellBorderWidth) { + return 'h1' + } + if (elePos.y + ele.offsetHeight - mousePos.y < cellBorderWidth) { + return "v"; + } + if (mousePos.y - elePos.y < cellBorderWidth) { + return 'v1' + } + return ''; + } + + function mouseDownEvent(type, evt) { + + if( isEditorDisabled() ) { + return ; + } + + userActionStatus = { + x: evt.clientX, + y: evt.clientY + }; + + //右键菜单单独处理 + if (evt.button == 2) { + var ut = getUETableBySelected(me), + flag = false; + + if (ut) { + var td = getTargetTd(me, evt); + utils.each(ut.selectedTds, function (ti) { + if (ti === td) { + flag = true; + } + }); + if (!flag) { + removeSelectedClass(domUtils.getElementsByTagName(me.body, "th td")); + ut.clearSelected() + } else { + td = ut.selectedTds[0]; + setTimeout(function () { + me.selection.getRange().setStart(td, 0).setCursor(false, true); + }, 0); + + } + } + } else { + tableClickHander( evt ); + } + + } + + //清除表格的计时器 + function clearTableTimer() { + tabTimer && clearTimeout( tabTimer ); + tabTimer = null; + } + + //双击收缩 + function tableDbclickHandler(evt) { + singleClickState = 0; + evt = evt || me.window.event; + var target = getParentTdOrTh(evt.target || evt.srcElement); + if (target) { + var h; + if (h = getRelation(target, mouseCoords(evt))) { + + hideDragLine( me ); + + if (h == 'h1') { + h = 'h'; + if (inTableSide(domUtils.findParentByTagName(target, "table"), target, evt)) { + me.execCommand('adaptbywindow'); + } else { + target = getUETable(target).getPreviewCell(target); + if (target) { + var rng = me.selection.getRange(); + rng.selectNodeContents(target).setCursor(true, true) + } + } + } + if (h == 'h') { + var ut = getUETable(target), + table = ut.table, + cells = getCellsByMoveBorder( target, table, true ); + + cells = extractArray( cells, 'left' ); + + ut.width = ut.offsetWidth; + + var oldWidth = [], + newWidth = []; + + utils.each( cells, function( cell ){ + + oldWidth.push( cell.offsetWidth ); + + } ); + + utils.each( cells, function( cell ){ + + cell.removeAttribute("width"); + + } ); + + window.setTimeout( function(){ + + //是否允许改变 + var changeable = true; + + utils.each( cells, function( cell, index ){ + + var width = cell.offsetWidth; + + if( width > oldWidth[index] ) { + changeable = false; + return false; + } + + newWidth.push( width ); + + } ); + + var change = changeable ? newWidth : oldWidth; + + utils.each( cells, function( cell, index ){ + + cell.width = change[index] - getTabcellSpace(); + + } ); + + + }, 0 ); + +// minWidth -= cellMinWidth; +// +// table.removeAttribute("width"); +// utils.each(cells, function (cell) { +// cell.style.width = ""; +// cell.width -= minWidth; +// }); + + } + } + } + } + + function tableClickHander( evt ) { + + removeSelectedClass(domUtils.getElementsByTagName(me.body, "td th")); + //trace:3113 + //选中单元格,点击table外部,不会清掉table上挂的ueTable,会引起getUETableBySelected方法返回值 + utils.each(me.document.getElementsByTagName('table'), function (t) { + t.ueTable = null; + }); + startTd = getTargetTd(me, evt); + if( !startTd ) return; + var table = domUtils.findParentByTagName(startTd, "table", true); + ut = getUETable(table); + ut && ut.clearSelected(); + + //判断当前鼠标状态 + if (!onBorder) { + me.document.body.style.webkitUserSelect = ''; + mousedown = true; + me.addListener('mouseover', mouseOverEvent); + } else { + //边框上的动作处理 + borderActionHandler( evt ); + } + + + } + + //处理表格边框上的动作, 这里做延时处理,避免两种动作互相影响 + function borderActionHandler( evt ) { + + if ( browser.ie ) { + evt = reconstruct(evt ); + } + + clearTableDragTimer(); + + //是否正在等待resize的缓冲中 + isInResizeBuffer = true; + + tableDragTimer = setTimeout(function(){ + tableBorderDrag( evt ); + }, dblclickTime); + + } + + function extractArray( originArr, key ) { + + var result = [], + tmp = null; + + for( var i = 0, len = originArr.length; i 0 && singleClickState--; + }, dblclickTime ); + + if( singleClickState === 2 ) { + + singleClickState = 0; + tableDbclickHandler(evt); + return; + + } + + } + + if (evt.button == 2)return; + var me = this; + //清除表格上原生跨选问题 + var range = me.selection.getRange(), + start = domUtils.findParentByTagName(range.startContainer, 'table', true), + end = domUtils.findParentByTagName(range.endContainer, 'table', true); + + if (start || end) { + if (start === end) { + start = domUtils.findParentByTagName(range.startContainer, ['td', 'th', 'caption'], true); + end = domUtils.findParentByTagName(range.endContainer, ['td', 'th', 'caption'], true); + if (start !== end) { + me.selection.clearRange() + } + } else { + me.selection.clearRange() + } + } + mousedown = false; + me.document.body.style.webkitUserSelect = ''; + //拖拽状态下的mouseUP + if ( onDrag && dragTd ) { + + me.selection.getNative()[browser.ie9below ? 'empty' : 'removeAllRanges'](); + + singleClickState = 0; + dragLine = me.document.getElementById('ue_tableDragLine'); + + // trace 3973 + if (dragLine) { + var dragTdPos = domUtils.getXY(dragTd), + dragLinePos = domUtils.getXY(dragLine); + + switch (onDrag) { + case "h": + changeColWidth(dragTd, dragLinePos.x - dragTdPos.x); + break; + case "v": + changeRowHeight(dragTd, dragLinePos.y - dragTdPos.y - dragTd.offsetHeight); + break; + default: + } + onDrag = ""; + dragTd = null; + + hideDragLine(me); + me.fireEvent('saveScene'); + return; + } + } + //正常状态下的mouseup + if (!startTd) { + var target = domUtils.findParentByTagName(evt.target || evt.srcElement, "td", true); + if (!target) target = domUtils.findParentByTagName(evt.target || evt.srcElement, "th", true); + if (target && (target.tagName == "TD" || target.tagName == "TH")) { + if (me.fireEvent("excludetable", target) === true) return; + range = new dom.Range(me.document); + range.setStart(target, 0).setCursor(false, true); + } + } else { + var ut = getUETable(startTd), + cell = ut ? ut.selectedTds[0] : null; + if (cell) { + range = new dom.Range(me.document); + if (domUtils.isEmptyBlock(cell)) { + range.setStart(cell, 0).setCursor(false, true); + } else { + range.selectNodeContents(cell).shrinkBoundary().setCursor(false, true); + } + } else { + range = me.selection.getRange().shrinkBoundary(); + if (!range.collapsed) { + var start = domUtils.findParentByTagName(range.startContainer, ['td', 'th'], true), + end = domUtils.findParentByTagName(range.endContainer, ['td', 'th'], true); + //在table里边的不能清除 + if (start && !end || !start && end || start && end && start !== end) { + range.setCursor(false, true); + } + } + } + startTd = null; + me.removeListener('mouseover', mouseOverEvent); + } + me._selectionChange(250, evt); + } + + function mouseOverEvent(type, evt) { + + if( isEditorDisabled() ) { + return; + } + + var me = this, + tar = evt.target || evt.srcElement; + currentTd = domUtils.findParentByTagName(tar, "td", true) || domUtils.findParentByTagName(tar, "th", true); + //需要判断两个TD是否位于同一个表格内 + if (startTd && currentTd && + ((startTd.tagName == "TD" && currentTd.tagName == "TD") || (startTd.tagName == "TH" && currentTd.tagName == "TH")) && + domUtils.findParentByTagName(startTd, 'table') == domUtils.findParentByTagName(currentTd, 'table')) { + var ut = getUETable(currentTd); + if (startTd != currentTd) { + me.document.body.style.webkitUserSelect = 'none'; + me.selection.getNative()[browser.ie9below ? 'empty' : 'removeAllRanges'](); + var range = ut.getCellsRange(startTd, currentTd); + ut.setSelected(range); + } else { + me.document.body.style.webkitUserSelect = ''; + ut.clearSelected(); + } + + } + evt.preventDefault ? evt.preventDefault() : (evt.returnValue = false); + } + + function setCellHeight(cell, height, backHeight) { + var lineHight = parseInt(domUtils.getComputedStyle(cell, "line-height"), 10), + tmpHeight = backHeight + height; + height = tmpHeight < lineHight ? lineHight : tmpHeight; + if (cell.style.height) cell.style.height = ""; + cell.rowSpan == 1 ? cell.setAttribute("height", height) : (cell.removeAttribute && cell.removeAttribute("height")); + } + + function getWidth(cell) { + if (!cell)return 0; + return parseInt(domUtils.getComputedStyle(cell, "width"), 10); + } + + function changeColWidth(cell, changeValue) { + + var ut = getUETable(cell); + if (ut) { + + //根据当前移动的边框获取相关的单元格 + var table = ut.table, + cells = getCellsByMoveBorder( cell, table ); + + table.style.width = ""; + table.removeAttribute("width"); + + //修正改变量 + changeValue = correctChangeValue( changeValue, cell, cells ); + + if (cell.nextSibling) { + + var i=0; + + utils.each( cells, function( cellGroup ){ + + cellGroup.left.width = (+cellGroup.left.width)+changeValue; + cellGroup.right && ( cellGroup.right.width = (+cellGroup.right.width)-changeValue ); + + } ); + + } else { + + utils.each( cells, function( cellGroup ){ + cellGroup.left.width -= -changeValue; + } ); + + } + } + + } + + function isEditorDisabled() { + return me.body.contentEditable === "false"; + } + + function changeRowHeight(td, changeValue) { + if (Math.abs(changeValue) < 10) return; + var ut = getUETable(td); + if (ut) { + var cells = ut.getSameEndPosCells(td, "y"), + //备份需要连带变化的td的原始高度,否则后期无法获取正确的值 + backHeight = cells[0] ? cells[0].offsetHeight : 0; + for (var i = 0, cell; cell = cells[i++];) { + setCellHeight(cell, changeValue, backHeight); + } + } + + } + + /** + * 获取调整单元格大小的相关单元格 + * @isContainMergeCell 返回的结果中是否包含发生合并后的单元格 + */ + function getCellsByMoveBorder( cell, table, isContainMergeCell ) { + + if( !table ) { + table = domUtils.findParentByTagName( cell, 'table' ); + } + + if( !table ) { + return null; + } + + //获取到该单元格所在行的序列号 + var index = domUtils.getNodeIndex( cell ), + temp = cell, + rows = table.rows, + colIndex = 0; + + while( temp ) { + //获取到当前单元格在未发生单元格合并时的序列 + if( temp.nodeType === 1 ) { + colIndex += (temp.colSpan || 1); + } + temp = temp.previousSibling; + } + + temp = null; + + //记录想关的单元格 + var borderCells = []; + + utils.each(rows, function( tabRow ){ + + var cells = tabRow.cells, + currIndex = 0; + + utils.each( cells, function( tabCell ){ + + currIndex += (tabCell.colSpan || 1); + + if( currIndex === colIndex ) { + + borderCells.push({ + left: tabCell, + right: tabCell.nextSibling || null + }); + + return false; + + } else if( currIndex > colIndex ) { + + if( isContainMergeCell ) { + borderCells.push({ + left: tabCell + }); + } + + return false; + } + + + } ); + + }); + + return borderCells; + + } + + + /** + * 通过给定的单元格集合获取最小的单元格width + */ + function getMinWidthByTableCells( cells ) { + + var minWidth = Number.MAX_VALUE; + + for( var i = 0, curCell; curCell = cells[ i ] ; i++ ) { + + minWidth = Math.min( minWidth, curCell.width || getTableCellWidth( curCell ) ); + + } + + return minWidth; + + } + + function correctChangeValue( changeValue, relatedCell, cells ) { + + //为单元格的paading预留空间 + changeValue -= getTabcellSpace(); + + if( changeValue < 0 ) { + return 0; + } + + changeValue -= getTableCellWidth( relatedCell ); + + //确定方向 + var direction = changeValue < 0 ? 'left':'right'; + + changeValue = Math.abs(changeValue); + + //只关心非最后一个单元格就可以 + utils.each( cells, function( cellGroup ){ + + var curCell = cellGroup[direction]; + + //为单元格保留最小空间 + if( curCell ) { + changeValue = Math.min( changeValue, getTableCellWidth( curCell )-cellMinWidth ); + } + + + } ); + + + //修正越界 + changeValue = changeValue < 0 ? 0 : changeValue; + + return direction === 'left' ? -changeValue : changeValue; + + } + + function getTableCellWidth( cell ) { + + var width = 0, + //偏移纠正量 + offset = 0, + width = cell.offsetWidth - getTabcellSpace(); + + //最后一个节点纠正一下 + if( !cell.nextSibling ) { + + width -= getTableCellOffset( cell ); + + } + + width = width < 0 ? 0 : width; + + try { + cell.width = width; + } catch(e) { + } + + return width; + + } + + /** + * 获取单元格所在表格的最末单元格的偏移量 + */ + function getTableCellOffset( cell ) { + + tab = domUtils.findParentByTagName( cell, "table", false); + + if( tab.offsetVal === undefined ) { + + var prev = cell.previousSibling; + + if( prev ) { + + //最后一个单元格和前一个单元格的width diff结果 如果恰好为一个border width, 则条件成立 + tab.offsetVal = cell.offsetWidth - prev.offsetWidth === UT.borderWidth ? UT.borderWidth : 0; + + } else { + tab.offsetVal = 0; + } + + } + + return tab.offsetVal; + + } + + function getTabcellSpace() { + + if( UT.tabcellSpace === undefined ) { + + var cell = null, + tab = me.document.createElement("table"), + tbody = me.document.createElement("tbody"), + trow = me.document.createElement("tr"), + tabcell = me.document.createElement("td"), + mirror = null; + + tabcell.style.cssText = 'border: 0;'; + tabcell.width = 1; + + trow.appendChild( tabcell ); + trow.appendChild( mirror = tabcell.cloneNode( false ) ); + + tbody.appendChild( trow ); + + tab.appendChild( tbody ); + + tab.style.cssText = "visibility: hidden;"; + + me.body.appendChild( tab ); + + UT.paddingSpace = tabcell.offsetWidth - 1; + + var tmpTabWidth = tab.offsetWidth; + + tabcell.style.cssText = ''; + mirror.style.cssText = ''; + + UT.borderWidth = ( tab.offsetWidth - tmpTabWidth ) / 3; + + UT.tabcellSpace = UT.paddingSpace + UT.borderWidth; + + me.body.removeChild( tab ); + + } + + getTabcellSpace = function(){ return UT.tabcellSpace; }; + + return UT.tabcellSpace; + + } + + function getDragLine(editor, doc) { + if (mousedown)return; + dragLine = editor.document.createElement("div"); + domUtils.setAttributes(dragLine, { + id:"ue_tableDragLine", + unselectable:'on', + contenteditable:false, + 'onresizestart':'return false', + 'ondragstart':'return false', + 'onselectstart':'return false', + style:"background-color:blue;position:absolute;padding:0;margin:0;background-image:none;border:0px none;opacity:0;filter:alpha(opacity=0)" + }); + editor.body.appendChild(dragLine); + } + + function hideDragLine(editor) { + if (mousedown)return; + var line; + while (line = editor.document.getElementById('ue_tableDragLine')) { + domUtils.remove(line) + } + } + + /** + * 依据state(v|h)在cell位置显示横线 + * @param state + * @param cell + */ + function showDragLineAt(state, cell) { + if (!cell) return; + var table = domUtils.findParentByTagName(cell, "table"), + caption = table.getElementsByTagName('caption'), + width = table.offsetWidth, + height = table.offsetHeight - (caption.length > 0 ? caption[0].offsetHeight : 0), + tablePos = domUtils.getXY(table), + cellPos = domUtils.getXY(cell), css; + switch (state) { + case "h": + css = 'height:' + height + 'px;top:' + (tablePos.y + (caption.length > 0 ? caption[0].offsetHeight : 0)) + 'px;left:' + (cellPos.x + cell.offsetWidth); + dragLine.style.cssText = css + 'px;position: absolute;display:block;background-color:blue;width:1px;border:0; color:blue;opacity:.3;filter:alpha(opacity=30)'; + break; + case "v": + css = 'width:' + width + 'px;left:' + tablePos.x + 'px;top:' + (cellPos.y + cell.offsetHeight ); + //必须加上border:0和color:blue,否则低版ie不支持背景色显示 + dragLine.style.cssText = css + 'px;overflow:hidden;position: absolute;display:block;background-color:blue;height:1px;border:0;color:blue;opacity:.2;filter:alpha(opacity=20)'; + break; + default: + } + } + + /** + * 当表格边框颜色为白色时设置为虚线,true为添加虚线 + * @param editor + * @param flag + */ + function switchBorderColor(editor, flag) { + var tableArr = domUtils.getElementsByTagName(editor.body, "table"), color; + for (var i = 0, node; node = tableArr[i++];) { + var td = domUtils.getElementsByTagName(node, "td"); + if (td[0]) { + if (flag) { + color = (td[0].style.borderColor).replace(/\s/g, ""); + if (/(#ffffff)|(rgb\(255,255,255\))/ig.test(color)) + domUtils.addClass(node, "noBorderTable") + } else { + domUtils.removeClasses(node, "noBorderTable") + } + } + + } + } + + function getTableWidth(editor, needIEHack, defaultValue) { + var body = editor.body; + return body.offsetWidth - (needIEHack ? parseInt(domUtils.getComputedStyle(body, 'margin-left'), 10) * 2 : 0) - defaultValue.tableBorder * 2 - (editor.options.offsetWidth || 0); + } + + /** + * 获取当前拖动的单元格 + */ + function getTargetTd(editor, evt) { + + var target = domUtils.findParentByTagName(evt.target || evt.srcElement, ["td", "th"], true), + dir = null; + + if( !target ) { + return null; + } + + dir = getRelation( target, mouseCoords( evt ) ); + + //如果有前一个节点, 需要做一个修正, 否则可能会得到一个错误的td + + if( !target ) { + return null; + } + + if( dir === 'h1' && target.previousSibling ) { + + var position = domUtils.getXY( target), + cellWidth = target.offsetWidth; + + if( Math.abs( position.x + cellWidth - evt.clientX ) > cellWidth / 3 ) { + target = target.previousSibling; + } + + } else if( dir === 'v1' && target.parentNode.previousSibling ) { + + var position = domUtils.getXY( target), + cellHeight = target.offsetHeight; + + if( Math.abs( position.y + cellHeight - evt.clientY ) > cellHeight / 3 ) { + target = target.parentNode.previousSibling.firstChild; + } + + } + + + //排除了非td内部以及用于代码高亮部分的td + return target && !(editor.fireEvent("excludetable", target) === true) ? target : null; + } + +}; + + +// plugins/table.sort.js +/** + * Created with JetBrains PhpStorm. + * User: Jinqn + * Date: 13-10-12 + * Time: 上午10:20 + * To change this template use File | Settings | File Templates. + */ + +UE.UETable.prototype.sortTable = function (sortByCellIndex, compareFn) { + var table = this.table, + rows = table.rows, + trArray = [], + flag = rows[0].cells[0].tagName === "TH", + lastRowIndex = 0; + if(this.selectedTds.length){ + var range = this.cellsRange, + len = range.endRowIndex + 1; + for (var i = range.beginRowIndex; i < len; i++) { + trArray[i] = rows[i]; + } + trArray.splice(0,range.beginRowIndex); + lastRowIndex = (range.endRowIndex +1) === this.rowsNum ? 0 : range.endRowIndex +1; + }else{ + for (var i = 0,len = rows.length; i < len; i++) { + trArray[i] = rows[i]; + } + } + + var Fn = { + 'reversecurrent': function(td1,td2){ + return 1; + }, + 'orderbyasc': function(td1,td2){ + var value1 = td1.innerText||td1.textContent, + value2 = td2.innerText||td2.textContent; + return value1.localeCompare(value2); + }, + 'reversebyasc': function(td1,td2){ + var value1 = td1.innerHTML, + value2 = td2.innerHTML; + return value2.localeCompare(value1); + }, + 'orderbynum': function(td1,td2){ + var value1 = td1[browser.ie ? 'innerText':'textContent'].match(/\d+/), + value2 = td2[browser.ie ? 'innerText':'textContent'].match(/\d+/); + if(value1) value1 = +value1[0]; + if(value2) value2 = +value2[0]; + return (value1||0) - (value2||0); + }, + 'reversebynum': function(td1,td2){ + var value1 = td1[browser.ie ? 'innerText':'textContent'].match(/\d+/), + value2 = td2[browser.ie ? 'innerText':'textContent'].match(/\d+/); + if(value1) value1 = +value1[0]; + if(value2) value2 = +value2[0]; + return (value2||0) - (value1||0); + } + }; + + //对表格设置排序的标记data-sort-type + table.setAttribute('data-sort-type', compareFn && typeof compareFn === "string" && Fn[compareFn] ? compareFn:''); + + //th不参与排序 + flag && trArray.splice(0, 1); + trArray = utils.sort(trArray,function (tr1, tr2) { + var result; + if (compareFn && typeof compareFn === "function") { + result = compareFn.call(this, tr1.cells[sortByCellIndex], tr2.cells[sortByCellIndex]); + } else if (compareFn && typeof compareFn === "number") { + result = 1; + } else if (compareFn && typeof compareFn === "string" && Fn[compareFn]) { + result = Fn[compareFn].call(this, tr1.cells[sortByCellIndex], tr2.cells[sortByCellIndex]); + } else { + result = Fn['orderbyasc'].call(this, tr1.cells[sortByCellIndex], tr2.cells[sortByCellIndex]); + } + return result; + }); + var fragment = table.ownerDocument.createDocumentFragment(); + for (var j = 0, len = trArray.length; j < len; j++) { + fragment.appendChild(trArray[j]); + } + var tbody = table.getElementsByTagName("tbody")[0]; + if(!lastRowIndex){ + tbody.appendChild(fragment); + }else{ + tbody.insertBefore(fragment,rows[lastRowIndex- range.endRowIndex + range.beginRowIndex - 1]) + } +}; + +UE.plugins['tablesort'] = function () { + var me = this, + UT = UE.UETable, + getUETable = function (tdOrTable) { + return UT.getUETable(tdOrTable); + }, + getTableItemsByRange = function (editor) { + return UT.getTableItemsByRange(editor); + }; + + + me.ready(function () { + //添加表格可排序的样式 + utils.cssRule('tablesort', + 'table.sortEnabled tr.firstRow th,table.sortEnabled tr.firstRow td{padding-right:20px;background-repeat: no-repeat;background-position: center right;' + + ' background-image:url(' + me.options.themePath + me.options.theme + '/images/sortable.png);}', + me.document); + + //做单元格合并操作时,清除可排序标识 + me.addListener("afterexeccommand", function (type, cmd) { + if( cmd == 'mergeright' || cmd == 'mergedown' || cmd == 'mergecells') { + this.execCommand('disablesort'); + } + }); + }); + + + + //表格排序 + UE.commands['sorttable'] = { + queryCommandState: function () { + var me = this, + tableItems = getTableItemsByRange(me); + if (!tableItems.cell) return -1; + var table = tableItems.table, + cells = table.getElementsByTagName("td"); + for (var i = 0, cell; cell = cells[i++];) { + if (cell.rowSpan != 1 || cell.colSpan != 1) return -1; + } + return 0; + }, + execCommand: function (cmd, fn) { + var me = this, + range = me.selection.getRange(), + bk = range.createBookmark(true), + tableItems = getTableItemsByRange(me), + cell = tableItems.cell, + ut = getUETable(tableItems.table), + cellInfo = ut.getCellInfo(cell); + ut.sortTable(cellInfo.cellIndex, fn); + range.moveToBookmark(bk); + try{ + range.select(); + }catch(e){} + } + }; + + //设置表格可排序,清除表格可排序 + UE.commands["enablesort"] = UE.commands["disablesort"] = { + queryCommandState: function (cmd) { + var table = getTableItemsByRange(this).table; + if(table && cmd=='enablesort') { + var cells = domUtils.getElementsByTagName(table, 'th td'); + for(var i = 0; i1 || cells[i].getAttribute('rowspan')>1) return -1; + } + } + + return !table ? -1: cmd=='enablesort' ^ table.getAttribute('data-sort')!='sortEnabled' ? -1:0; + }, + execCommand: function (cmd) { + var table = getTableItemsByRange(this).table; + table.setAttribute("data-sort", cmd == "enablesort" ? "sortEnabled" : "sortDisabled"); + cmd == "enablesort" ? domUtils.addClass(table,"sortEnabled"):domUtils.removeClasses(table,"sortEnabled"); + } + }; +}; + + +// plugins/contextmenu.js +///import core +///commands 右键菜单 +///commandsName ContextMenu +///commandsTitle 右键菜单 +/** + * 右键菜单 + * @function + * @name baidu.editor.plugins.contextmenu + * @author zhanyi + */ + +UE.plugins['contextmenu'] = function () { + var me = this; + me.setOpt('enableContextMenu',true); + if(me.getOpt('enableContextMenu') === false){ + return; + } + var lang = me.getLang( "contextMenu" ), + menu, + items = me.options.contextMenu || [ + {label:lang['selectall'], cmdName:'selectall'}, + { + label:lang.cleardoc, + cmdName:'cleardoc', + exec:function () { + if ( confirm( lang.confirmclear ) ) { + this.execCommand( 'cleardoc' ); + } + } + }, + '-', + { + label:lang.unlink, + cmdName:'unlink' + }, + '-', + { + group:lang.paragraph, + icon:'justifyjustify', + subMenu:[ + { + label:lang.justifyleft, + cmdName:'justify', + value:'left' + }, + { + label:lang.justifyright, + cmdName:'justify', + value:'right' + }, + { + label:lang.justifycenter, + cmdName:'justify', + value:'center' + }, + { + label:lang.justifyjustify, + cmdName:'justify', + value:'justify' + } + ] + }, + '-', + { + group:lang.table, + icon:'table', + subMenu:[ + { + label:lang.inserttable, + cmdName:'inserttable' + }, + { + label:lang.deletetable, + cmdName:'deletetable' + }, + '-', + { + label:lang.deleterow, + cmdName:'deleterow' + }, + { + label:lang.deletecol, + cmdName:'deletecol' + }, + { + label:lang.insertcol, + cmdName:'insertcol' + }, + { + label:lang.insertcolnext, + cmdName:'insertcolnext' + }, + { + label:lang.insertrow, + cmdName:'insertrow' + }, + { + label:lang.insertrownext, + cmdName:'insertrownext' + }, + '-', + { + label:lang.insertcaption, + cmdName:'insertcaption' + }, + { + label:lang.deletecaption, + cmdName:'deletecaption' + }, + { + label:lang.inserttitle, + cmdName:'inserttitle' + }, + { + label:lang.deletetitle, + cmdName:'deletetitle' + }, + { + label:lang.inserttitlecol, + cmdName:'inserttitlecol' + }, + { + label:lang.deletetitlecol, + cmdName:'deletetitlecol' + }, + '-', + { + label:lang.mergecells, + cmdName:'mergecells' + }, + { + label:lang.mergeright, + cmdName:'mergeright' + }, + { + label:lang.mergedown, + cmdName:'mergedown' + }, + '-', + { + label:lang.splittorows, + cmdName:'splittorows' + }, + { + label:lang.splittocols, + cmdName:'splittocols' + }, + { + label:lang.splittocells, + cmdName:'splittocells' + }, + '-', + { + label:lang.averageDiseRow, + cmdName:'averagedistributerow' + }, + { + label:lang.averageDisCol, + cmdName:'averagedistributecol' + }, + '-', + { + label:lang.edittd, + cmdName:'edittd', + exec:function () { + if ( UE.ui['edittd'] ) { + new UE.ui['edittd']( this ); + } + this.getDialog('edittd').open(); + } + }, + { + label:lang.edittable, + cmdName:'edittable', + exec:function () { + if ( UE.ui['edittable'] ) { + new UE.ui['edittable']( this ); + } + this.getDialog('edittable').open(); + } + }, + { + label:lang.setbordervisible, + cmdName:'setbordervisible' + } + ] + }, + { + group:lang.tablesort, + icon:'tablesort', + subMenu:[ + { + label:lang.enablesort, + cmdName:'enablesort' + }, + { + label:lang.disablesort, + cmdName:'disablesort' + }, + '-', + { + label:lang.reversecurrent, + cmdName:'sorttable', + value:'reversecurrent' + }, + { + label:lang.orderbyasc, + cmdName:'sorttable', + value:'orderbyasc' + }, + { + label:lang.reversebyasc, + cmdName:'sorttable', + value:'reversebyasc' + }, + { + label:lang.orderbynum, + cmdName:'sorttable', + value:'orderbynum' + }, + { + label:lang.reversebynum, + cmdName:'sorttable', + value:'reversebynum' + } + ] + }, + { + group:lang.borderbk, + icon:'borderBack', + subMenu:[ + { + label:lang.setcolor, + cmdName:"interlacetable", + exec:function(){ + this.execCommand("interlacetable"); + } + }, + { + label:lang.unsetcolor, + cmdName:"uninterlacetable", + exec:function(){ + this.execCommand("uninterlacetable"); + } + }, + { + label:lang.setbackground, + cmdName:"settablebackground", + exec:function(){ + this.execCommand("settablebackground",{repeat:true,colorList:["#bbb","#ccc"]}); + } + }, + { + label:lang.unsetbackground, + cmdName:"cleartablebackground", + exec:function(){ + this.execCommand("cleartablebackground"); + } + }, + { + label:lang.redandblue, + cmdName:"settablebackground", + exec:function(){ + this.execCommand("settablebackground",{repeat:true,colorList:["red","blue"]}); + } + }, + { + label:lang.threecolorgradient, + cmdName:"settablebackground", + exec:function(){ + this.execCommand("settablebackground",{repeat:true,colorList:["#aaa","#bbb","#ccc"]}); + } + } + ] + }, + { + group:lang.aligntd, + icon:'aligntd', + subMenu:[ + { + cmdName:'cellalignment', + value:{align:'left',vAlign:'top'} + }, + { + cmdName:'cellalignment', + value:{align:'center',vAlign:'top'} + }, + { + cmdName:'cellalignment', + value:{align:'right',vAlign:'top'} + }, + { + cmdName:'cellalignment', + value:{align:'left',vAlign:'middle'} + }, + { + cmdName:'cellalignment', + value:{align:'center',vAlign:'middle'} + }, + { + cmdName:'cellalignment', + value:{align:'right',vAlign:'middle'} + }, + { + cmdName:'cellalignment', + value:{align:'left',vAlign:'bottom'} + }, + { + cmdName:'cellalignment', + value:{align:'center',vAlign:'bottom'} + }, + { + cmdName:'cellalignment', + value:{align:'right',vAlign:'bottom'} + } + ] + }, + { + group:lang.aligntable, + icon:'aligntable', + subMenu:[ + { + cmdName:'tablealignment', + className: 'left', + label:lang.tableleft, + value:"left" + }, + { + cmdName:'tablealignment', + className: 'center', + label:lang.tablecenter, + value:"center" + }, + { + cmdName:'tablealignment', + className: 'right', + label:lang.tableright, + value:"right" + } + ] + }, + '-', + { + label:lang.insertparagraphbefore, + cmdName:'insertparagraph', + value:true + }, + { + label:lang.insertparagraphafter, + cmdName:'insertparagraph' + }, + { + label:lang['copy'], + cmdName:'copy' + }, + { + label:lang['paste'], + cmdName:'paste' + } + ]; + if ( !items.length ) { + return; + } + var uiUtils = UE.ui.uiUtils; + + me.addListener( 'contextmenu', function ( type, evt ) { + + var offset = uiUtils.getViewportOffsetByEvent( evt ); + me.fireEvent( 'beforeselectionchange' ); + if ( menu ) { + menu.destroy(); + } + for ( var i = 0, ti, contextItems = []; ti = items[i]; i++ ) { + var last; + (function ( item ) { + if ( item == '-' ) { + if ( (last = contextItems[contextItems.length - 1 ] ) && last !== '-' ) { + contextItems.push( '-' ); + } + } else if ( item.hasOwnProperty( "group" ) ) { + for ( var j = 0, cj, subMenu = []; cj = item.subMenu[j]; j++ ) { + (function ( subItem ) { + if ( subItem == '-' ) { + if ( (last = subMenu[subMenu.length - 1 ] ) && last !== '-' ) { + subMenu.push( '-' ); + }else{ + subMenu.splice(subMenu.length-1); + } + } else { + if ( (me.commands[subItem.cmdName] || UE.commands[subItem.cmdName] || subItem.query) && + (subItem.query ? subItem.query() : me.queryCommandState( subItem.cmdName )) > -1 ) { + subMenu.push( { + 'label':subItem.label || me.getLang( "contextMenu." + subItem.cmdName + (subItem.value || '') )||"", + 'className':'edui-for-' +subItem.cmdName + ( subItem.className ? ( ' edui-for-' + subItem.cmdName + '-' + subItem.className ) : '' ), + onclick:subItem.exec ? function () { + subItem.exec.call( me ); + } : function () { + me.execCommand( subItem.cmdName, subItem.value ); + } + } ); + } + } + })( cj ); + } + if ( subMenu.length ) { + function getLabel(){ + switch (item.icon){ + case "table": + return me.getLang( "contextMenu.table" ); + case "justifyjustify": + return me.getLang( "contextMenu.paragraph" ); + case "aligntd": + return me.getLang("contextMenu.aligntd"); + case "aligntable": + return me.getLang("contextMenu.aligntable"); + case "tablesort": + return lang.tablesort; + case "borderBack": + return lang.borderbk; + default : + return ''; + } + } + contextItems.push( { + //todo 修正成自动获取方式 + 'label':getLabel(), + className:'edui-for-' + item.icon, + 'subMenu':{ + items:subMenu, + editor:me + } + } ); + } + + } else { + //有可能commmand没有加载右键不能出来,或者没有command也想能展示出来添加query方法 + if ( (me.commands[item.cmdName] || UE.commands[item.cmdName] || item.query) && + (item.query ? item.query.call(me) : me.queryCommandState( item.cmdName )) > -1 ) { + + contextItems.push( { + 'label':item.label || me.getLang( "contextMenu." + item.cmdName ), + className:'edui-for-' + (item.icon ? item.icon : item.cmdName + (item.value || '')), + onclick:item.exec ? function () { + item.exec.call( me ); + } : function () { + me.execCommand( item.cmdName, item.value ); + } + } ); + } + + } + + })( ti ); + } + if ( contextItems[contextItems.length - 1] == '-' ) { + contextItems.pop(); + } + + menu = new UE.ui.Menu( { + items:contextItems, + className:"edui-contextmenu", + editor:me + } ); + menu.render(); + menu.showAt( offset ); + + me.fireEvent("aftershowcontextmenu",menu); + + domUtils.preventDefault( evt ); + if ( browser.ie ) { + var ieRange; + try { + ieRange = me.selection.getNative().createRange(); + } catch ( e ) { + return; + } + if ( ieRange.item ) { + var range = new dom.Range( me.document ); + range.selectNode( ieRange.item( 0 ) ).select( true, true ); + } + } + }); + + // 添加复制的flash按钮 + me.addListener('aftershowcontextmenu', function(type, menu) { + if (me.zeroclipboard) { + var items = menu.items; + for (var key in items) { + if (items[key].className == 'edui-for-copy') { + me.zeroclipboard.clip(items[key].getDom()); + } + } + } + }); + +}; + + +// plugins/shortcutmenu.js +///import core +///commands 弹出菜单 +// commandsName popupmenu +///commandsTitle 弹出菜单 +/** + * 弹出菜单 + * @function + * @name baidu.editor.plugins.popupmenu + * @author xuheng + */ + +UE.plugins['shortcutmenu'] = function () { + var me = this, + menu, + items = me.options.shortcutMenu || []; + + if (!items.length) { + return; + } + + me.addListener ('contextmenu mouseup' , function (type , e) { + var me = this, + customEvt = { + type : type , + target : e.target || e.srcElement , + screenX : e.screenX , + screenY : e.screenY , + clientX : e.clientX , + clientY : e.clientY + }; + + setTimeout (function () { + var rng = me.selection.getRange (); + if (rng.collapsed === false || type == "contextmenu") { + + if (!menu) { + menu = new baidu.editor.ui.ShortCutMenu ({ + editor : me , + items : items , + theme : me.options.theme , + className : 'edui-shortcutmenu' + }); + + menu.render (); + me.fireEvent ("afterrendershortcutmenu" , menu); + } + + menu.show (customEvt , !!UE.plugins['contextmenu']); + } + }); + + if (type == 'contextmenu') { + domUtils.preventDefault (e); + if (browser.ie9below) { + var ieRange; + try { + ieRange = me.selection.getNative().createRange(); + } catch (e) { + return; + } + if (ieRange.item) { + var range = new dom.Range (me.document); + range.selectNode (ieRange.item (0)).select (true , true); + + } + } + } + }); + + me.addListener ('keydown' , function (type) { + if (type == "keydown") { + menu && !menu.isHidden && menu.hide (); + } + + }); + +}; + + + + +// plugins/basestyle.js +/** + * B、I、sub、super命令支持 + * @file + * @since 1.2.6.1 + */ + +UE.plugins['basestyle'] = function(){ + + /** + * 字体加粗 + * @command bold + * @param { String } cmd 命令字符串 + * @remind 对已加粗的文本内容执行该命令, 将取消加粗 + * @method execCommand + * @example + * ```javascript + * //editor是编辑器实例 + * //对当前选中的文本内容执行加粗操作 + * //第一次执行, 文本内容加粗 + * editor.execCommand( 'bold' ); + * + * //第二次执行, 文本内容取消加粗 + * editor.execCommand( 'bold' ); + * ``` + */ + + + /** + * 字体倾斜 + * @command italic + * @method execCommand + * @param { String } cmd 命令字符串 + * @remind 对已倾斜的文本内容执行该命令, 将取消倾斜 + * @example + * ```javascript + * //editor是编辑器实例 + * //对当前选中的文本内容执行斜体操作 + * //第一次操作, 文本内容将变成斜体 + * editor.execCommand( 'italic' ); + * + * //再次对同一文本内容执行, 则文本内容将恢复正常 + * editor.execCommand( 'italic' ); + * ``` + */ + + /** + * 下标文本,与“superscript”命令互斥 + * @command subscript + * @method execCommand + * @remind 把选中的文本内容切换成下标文本, 如果当前选中的文本已经是下标, 则该操作会把文本内容还原成正常文本 + * @param { String } cmd 命令字符串 + * @example + * ```javascript + * //editor是编辑器实例 + * //对当前选中的文本内容执行下标操作 + * //第一次操作, 文本内容将变成下标文本 + * editor.execCommand( 'subscript' ); + * + * //再次对同一文本内容执行, 则文本内容将恢复正常 + * editor.execCommand( 'subscript' ); + * ``` + */ + + /** + * 上标文本,与“subscript”命令互斥 + * @command superscript + * @method execCommand + * @remind 把选中的文本内容切换成上标文本, 如果当前选中的文本已经是上标, 则该操作会把文本内容还原成正常文本 + * @param { String } cmd 命令字符串 + * @example + * ```javascript + * //editor是编辑器实例 + * //对当前选中的文本内容执行上标操作 + * //第一次操作, 文本内容将变成上标文本 + * editor.execCommand( 'superscript' ); + * + * //再次对同一文本内容执行, 则文本内容将恢复正常 + * editor.execCommand( 'superscript' ); + * ``` + */ + var basestyles = { + 'bold':['strong','b'], + 'italic':['em','i'], + 'subscript':['sub'], + 'superscript':['sup'] + }, + getObj = function(editor,tagNames){ + return domUtils.filterNodeList(editor.selection.getStartElementPath(),tagNames); + }, + me = this; + //添加快捷键 + me.addshortcutkey({ + "Bold" : "ctrl+66",//^B + "Italic" : "ctrl+73", //^I + "Underline" : "ctrl+85"//^U + }); + me.addInputRule(function(root){ + utils.each(root.getNodesByTagName('b i'),function(node){ + switch (node.tagName){ + case 'b': + node.tagName = 'strong'; + break; + case 'i': + node.tagName = 'em'; + } + }); + }); + for ( var style in basestyles ) { + (function( cmd, tagNames ) { + me.commands[cmd] = { + execCommand : function( cmdName ) { + var range = me.selection.getRange(),obj = getObj(this,tagNames); + if ( range.collapsed ) { + if ( obj ) { + var tmpText = me.document.createTextNode(''); + range.insertNode( tmpText ).removeInlineStyle( tagNames ); + range.setStartBefore(tmpText); + domUtils.remove(tmpText); + } else { + var tmpNode = range.document.createElement( tagNames[0] ); + if(cmdName == 'superscript' || cmdName == 'subscript'){ + tmpText = me.document.createTextNode(''); + range.insertNode(tmpText) + .removeInlineStyle(['sub','sup']) + .setStartBefore(tmpText) + .collapse(true); + } + range.insertNode( tmpNode ).setStart( tmpNode, 0 ); + } + range.collapse( true ); + } else { + if(cmdName == 'superscript' || cmdName == 'subscript'){ + if(!obj || obj.tagName.toLowerCase() != cmdName){ + range.removeInlineStyle(['sub','sup']); + } + } + obj ? range.removeInlineStyle( tagNames ) : range.applyInlineStyle( tagNames[0] ); + } + range.select(); + }, + queryCommandState : function() { + return getObj(this,tagNames) ? 1 : 0; + } + }; + })( style, basestyles[style] ); + } +}; + + + +// plugins/elementpath.js +/** + * 选取路径命令 + * @file + */ +UE.plugins['elementpath'] = function(){ + var currentLevel, + tagNames, + me = this; + me.setOpt('elementPathEnabled',true); + if(!me.options.elementPathEnabled){ + return; + } + me.commands['elementpath'] = { + execCommand : function( cmdName, level ) { + var start = tagNames[level], + range = me.selection.getRange(); + currentLevel = level*1; + range.selectNode(start).select(); + }, + queryCommandValue : function() { + //产生一个副本,不能修改原来的startElementPath; + var parents = [].concat(this.selection.getStartElementPath()).reverse(), + names = []; + tagNames = parents; + for(var i=0,ci;ci=parents[i];i++){ + if(ci.nodeType == 3) { + continue; + } + var name = ci.tagName.toLowerCase(); + if(name == 'img' && ci.getAttribute('anchorname')){ + name = 'anchor'; + } + names[i] = name; + if(currentLevel == i){ + currentLevel = -1; + break; + } + } + return names; + } + }; +}; + + + +// plugins/formatmatch.js +/** + * 格式刷,只格式inline的 + * @file + * @since 1.2.6.1 + */ + +/** + * 格式刷 + * @command formatmatch + * @method execCommand + * @remind 该操作不能复制段落格式 + * @param { String } cmd 命令字符串 + * @example + * ```javascript + * //editor是编辑器实例 + * //获取格式刷 + * editor.execCommand( 'formatmatch' ); + * ``` + */ +UE.plugins['formatmatch'] = function(){ + + var me = this, + list = [],img, + flag = 0; + + me.addListener('reset',function(){ + list = []; + flag = 0; + }); + + function addList(type,evt){ + + if(browser.webkit){ + var target = evt.target.tagName == 'IMG' ? evt.target : null; + } + + function addFormat(range){ + + if(text){ + range.selectNode(text); + } + return range.applyInlineStyle(list[list.length-1].tagName,null,list); + + } + + me.undoManger && me.undoManger.save(); + + var range = me.selection.getRange(), + imgT = target || range.getClosedNode(); + if(img && imgT && imgT.tagName == 'IMG'){ + //trace:964 + + imgT.style.cssText += ';float:' + (img.style.cssFloat || img.style.styleFloat ||'none') + ';display:' + (img.style.display||'inline'); + + img = null; + }else{ + if(!img){ + var collapsed = range.collapsed; + if(collapsed){ + var text = me.document.createTextNode('match'); + range.insertNode(text).select(); + + + } + me.__hasEnterExecCommand = true; + //不能把block上的属性干掉 + //trace:1553 + var removeFormatAttributes = me.options.removeFormatAttributes; + me.options.removeFormatAttributes = ''; + me.execCommand('removeformat'); + me.options.removeFormatAttributes = removeFormatAttributes; + me.__hasEnterExecCommand = false; + //trace:969 + range = me.selection.getRange(); + if(list.length){ + addFormat(range); + } + if(text){ + range.setStartBefore(text).collapse(true); + + } + range.select(); + text && domUtils.remove(text); + } + + } + + + + + me.undoManger && me.undoManger.save(); + me.removeListener('mouseup',addList); + flag = 0; + } + + me.commands['formatmatch'] = { + execCommand : function( cmdName ) { + + if(flag){ + flag = 0; + list = []; + me.removeListener('mouseup',addList); + return; + } + + + + var range = me.selection.getRange(); + img = range.getClosedNode(); + if(!img || img.tagName != 'IMG'){ + range.collapse(true).shrinkBoundary(); + var start = range.startContainer; + list = domUtils.findParents(start,true,function(node){ + return !domUtils.isBlockElm(node) && node.nodeType == 1; + }); + //a不能加入格式刷, 并且克隆节点 + for(var i=0,ci;ci=list[i];i++){ + if(ci.tagName == 'A'){ + list.splice(i,1); + break; + } + } + + } + + me.addListener('mouseup',addList); + flag = 1; + + + }, + queryCommandState : function() { + return flag; + }, + notNeedUndo : 1 + }; +}; + + + +// plugins/searchreplace.js +///import core +///commands 查找替换 +///commandsName SearchReplace +///commandsTitle 查询替换 +///commandsDialog dialogs\searchreplace +/** + * @description 查找替换 + * @author zhanyi + */ + +UE.plugin.register('searchreplace',function(){ + var me = this; + + var _blockElm = {'table':1,'tbody':1,'tr':1,'ol':1,'ul':1}; + + function findTextInString(textContent,opt,currentIndex){ + var str = opt.searchStr; + if(opt.dir == -1){ + textContent = textContent.split('').reverse().join(''); + str = str.split('').reverse().join(''); + currentIndex = textContent.length - currentIndex; + + } + var reg = new RegExp(str,'g' + (opt.casesensitive ? '' : 'i')),match; + + while(match = reg.exec(textContent)){ + if(match.index >= currentIndex){ + return opt.dir == -1 ? textContent.length - match.index - opt.searchStr.length : match.index; + } + } + return -1 + } + function findTextBlockElm(node,currentIndex,opt){ + var textContent,index,methodName = opt.all || opt.dir == 1 ? 'getNextDomNode' : 'getPreDomNode'; + if(domUtils.isBody(node)){ + node = node.firstChild; + } + var first = 1; + while(node){ + textContent = node.nodeType == 3 ? node.nodeValue : node[browser.ie ? 'innerText' : 'textContent']; + index = findTextInString(textContent,opt,currentIndex ); + first = 0; + if(index!=-1){ + return { + 'node':node, + 'index':index + } + } + node = domUtils[methodName](node); + while(node && _blockElm[node.nodeName.toLowerCase()]){ + node = domUtils[methodName](node,true); + } + if(node){ + currentIndex = opt.dir == -1 ? (node.nodeType == 3 ? node.nodeValue : node[browser.ie ? 'innerText' : 'textContent']).length : 0; + } + + } + } + function findNTextInBlockElm(node,index,str){ + var currentIndex = 0, + currentNode = node.firstChild, + currentNodeLength = 0, + result; + while(currentNode){ + if(currentNode.nodeType == 3){ + currentNodeLength = currentNode.nodeValue.replace(/(^[\t\r\n]+)|([\t\r\n]+$)/,'').length; + currentIndex += currentNodeLength; + if(currentIndex >= index){ + return { + 'node':currentNode, + 'index': currentNodeLength - (currentIndex - index) + } + } + }else if(!dtd.$empty[currentNode.tagName]){ + currentNodeLength = currentNode[browser.ie ? 'innerText' : 'textContent'].replace(/(^[\t\r\n]+)|([\t\r\n]+$)/,'').length + currentIndex += currentNodeLength; + if(currentIndex >= index){ + result = findNTextInBlockElm(currentNode,currentNodeLength - (currentIndex - index),str); + if(result){ + return result; + } + } + } + currentNode = domUtils.getNextDomNode(currentNode); + + } + } + + function searchReplace(me,opt){ + + var rng = me.selection.getRange(), + startBlockNode, + searchStr = opt.searchStr, + span = me.document.createElement('span'); + span.innerHTML = '$$ueditor_searchreplace_key$$'; + + rng.shrinkBoundary(true); + + //判断是不是第一次选中 + if(!rng.collapsed){ + rng.select(); + var rngText = me.selection.getText(); + if(new RegExp('^' + opt.searchStr + '$',(opt.casesensitive ? '' : 'i')).test(rngText)){ + if(opt.replaceStr != undefined){ + replaceText(rng,opt.replaceStr); + rng.select(); + return true; + }else{ + rng.collapse(opt.dir == -1) + } + + } + } + + + rng.insertNode(span); + rng.enlargeToBlockElm(true); + startBlockNode = rng.startContainer; + var currentIndex = startBlockNode[browser.ie ? 'innerText' : 'textContent'].indexOf('$$ueditor_searchreplace_key$$'); + rng.setStartBefore(span); + domUtils.remove(span); + var result = findTextBlockElm(startBlockNode,currentIndex,opt); + if(result){ + var rngStart = findNTextInBlockElm(result.node,result.index,searchStr); + var rngEnd = findNTextInBlockElm(result.node,result.index + searchStr.length,searchStr); + rng.setStart(rngStart.node,rngStart.index).setEnd(rngEnd.node,rngEnd.index); + + if(opt.replaceStr !== undefined){ + replaceText(rng,opt.replaceStr) + } + rng.select(); + return true; + }else{ + rng.setCursor() + } + + } + function replaceText(rng,str){ + + str = me.document.createTextNode(str); + rng.deleteContents().insertNode(str); + + } + return { + commands:{ + 'searchreplace':{ + execCommand:function(cmdName,opt){ + utils.extend(opt,{ + all : false, + casesensitive : false, + dir : 1 + },true); + var num = 0; + if(opt.all){ + + var rng = me.selection.getRange(), + first = me.body.firstChild; + if(first && first.nodeType == 1){ + rng.setStart(first,0); + rng.shrinkBoundary(true); + }else if(first.nodeType == 3){ + rng.setStartBefore(first) + } + rng.collapse(true).select(true); + if(opt.replaceStr !== undefined){ + me.fireEvent('saveScene'); + } + while(searchReplace(this,opt)){ + num++; + } + if(num){ + me.fireEvent('saveScene'); + } + }else{ + if(opt.replaceStr !== undefined){ + me.fireEvent('saveScene'); + } + if(searchReplace(this,opt)){ + num++ + } + if(num){ + me.fireEvent('saveScene'); + } + + } + + return num; + }, + notNeedUndo:1 + } + } + } +}); + +// plugins/customstyle.js +/** + * 自定义样式 + * @file + * @since 1.2.6.1 + */ + +/** + * 根据config配置文件里“customstyle”选项的值对匹配的标签执行样式替换。 + * @command customstyle + * @method execCommand + * @param { String } cmd 命令字符串 + * @example + * ```javascript + * editor.execCommand( 'customstyle' ); + * ``` + */ +UE.plugins['customstyle'] = function() { + var me = this; + me.setOpt({ 'customstyle':[ + {tag:'h1',name:'tc', style:'font-size:32px;font-weight:bold;border-bottom:#ccc 2px solid;padding:0 4px 0 0;text-align:center;margin:0 0 20px 0;'}, + {tag:'h1',name:'tl', style:'font-size:32px;font-weight:bold;border-bottom:#ccc 2px solid;padding:0 4px 0 0;text-align:left;margin:0 0 10px 0;'}, + {tag:'span',name:'im', style:'font-size:16px;font-style:italic;font-weight:bold;line-height:18px;'}, + {tag:'span',name:'hi', style:'font-size:16px;font-style:italic;font-weight:bold;color:rgb(51, 153, 204);line-height:18px;'} + ]}); + me.commands['customstyle'] = { + execCommand : function(cmdName, obj) { + var me = this, + tagName = obj.tag, + node = domUtils.findParent(me.selection.getStart(), function(node) { + return node.getAttribute('label'); + }, true), + range,bk,tmpObj = {}; + for (var p in obj) { + if(obj[p]!==undefined) + tmpObj[p] = obj[p]; + } + delete tmpObj.tag; + if (node && node.getAttribute('label') == obj.label) { + range = this.selection.getRange(); + bk = range.createBookmark(); + if (range.collapsed) { + //trace:1732 删掉自定义标签,要有p来回填站位 + if(dtd.$block[node.tagName]){ + var fillNode = me.document.createElement('p'); + domUtils.moveChild(node, fillNode); + node.parentNode.insertBefore(fillNode, node); + domUtils.remove(node); + }else{ + domUtils.remove(node,true); + } + + } else { + + var common = domUtils.getCommonAncestor(bk.start, bk.end), + nodes = domUtils.getElementsByTagName(common, tagName); + if(new RegExp(tagName,'i').test(common.tagName)){ + nodes.push(common); + } + for (var i = 0,ni; ni = nodes[i++];) { + if (ni.getAttribute('label') == obj.label) { + var ps = domUtils.getPosition(ni, bk.start),pe = domUtils.getPosition(ni, bk.end); + if ((ps & domUtils.POSITION_FOLLOWING || ps & domUtils.POSITION_CONTAINS) + && + (pe & domUtils.POSITION_PRECEDING || pe & domUtils.POSITION_CONTAINS) + ) + if (dtd.$block[tagName]) { + var fillNode = me.document.createElement('p'); + domUtils.moveChild(ni, fillNode); + ni.parentNode.insertBefore(fillNode, ni); + } + domUtils.remove(ni, true); + } + } + node = domUtils.findParent(common, function(node) { + return node.getAttribute('label') == obj.label; + }, true); + if (node) { + + domUtils.remove(node, true); + + } + + } + range.moveToBookmark(bk).select(); + } else { + if (dtd.$block[tagName]) { + this.execCommand('paragraph', tagName, tmpObj,'customstyle'); + range = me.selection.getRange(); + if (!range.collapsed) { + range.collapse(); + node = domUtils.findParent(me.selection.getStart(), function(node) { + return node.getAttribute('label') == obj.label; + }, true); + var pNode = me.document.createElement('p'); + domUtils.insertAfter(node, pNode); + domUtils.fillNode(me.document, pNode); + range.setStart(pNode, 0).setCursor(); + } + } else { + + range = me.selection.getRange(); + if (range.collapsed) { + node = me.document.createElement(tagName); + domUtils.setAttributes(node, tmpObj); + range.insertNode(node).setStart(node, 0).setCursor(); + + return; + } + + bk = range.createBookmark(); + range.applyInlineStyle(tagName, tmpObj).moveToBookmark(bk).select(); + } + } + + }, + queryCommandValue : function() { + var parent = domUtils.filterNodeList( + this.selection.getStartElementPath(), + function(node){return node.getAttribute('label')} + ); + return parent ? parent.getAttribute('label') : ''; + } + }; + //当去掉customstyle是,如果是块元素,用p代替 + me.addListener('keyup', function(type, evt) { + var keyCode = evt.keyCode || evt.which; + + if (keyCode == 32 || keyCode == 13) { + var range = me.selection.getRange(); + if (range.collapsed) { + var node = domUtils.findParent(me.selection.getStart(), function(node) { + return node.getAttribute('label'); + }, true); + if (node && dtd.$block[node.tagName] && domUtils.isEmptyNode(node)) { + var p = me.document.createElement('p'); + domUtils.insertAfter(node, p); + domUtils.fillNode(me.document, p); + domUtils.remove(node); + range.setStart(p, 0).setCursor(); + + + } + } + } + }); +}; + +// plugins/catchremoteimage.js +///import core +///commands 远程图片抓取 +///commandsName catchRemoteImage,catchremoteimageenable +///commandsTitle 远程图片抓取 +/** + * 远程图片抓取,当开启本插件时所有不符合本地域名的图片都将被抓取成为本地服务器上的图片 + */ +UE.plugins['catchremoteimage'] = function () { + var me = this, + ajax = UE.ajax; + + /* 设置默认值 */ + if (me.options.catchRemoteImageEnable === false) return; + me.setOpt({ + catchRemoteImageEnable: false + }); + + me.addListener("afterpaste", function () { + me.fireEvent("catchRemoteImage"); + }); + + me.addListener("catchRemoteImage", function () { + + var catcherLocalDomain = me.getOpt('catcherLocalDomain'), + catcherActionUrl = me.getActionUrl(me.getOpt('catcherActionName')), + catcherUrlPrefix = me.getOpt('catcherUrlPrefix'), + catcherFieldName = me.getOpt('catcherFieldName'); + + var remoteImages = [], + imgs = domUtils.getElementsByTagName(me.document, "img"), + test = function (src, urls) { + if (src.indexOf(location.host) != -1 || /(^\.)|(^\/)/.test(src)) { + return true; + } + if (urls) { + for (var j = 0, url; url = urls[j++];) { + if (src.indexOf(url) !== -1) { + return true; + } + } + } + return false; + }; + + for (var i = 0, ci; ci = imgs[i++];) { + if (ci.getAttribute("word_img")) { + continue; + } + var src = ci.getAttribute("_src") || ci.src || ""; + if (/^(https?|ftp):/i.test(src) && !test(src, catcherLocalDomain)) { + remoteImages.push(src); + } + } + + if (remoteImages.length) { + catchremoteimage(remoteImages, { + //成功抓取 + success: function (r) { + try { + var info = r.state !== undefined ? r:eval("(" + r.responseText + ")"); + } catch (e) { + return; + } + + /* 获取源路径和新路径 */ + var i, j, ci, cj, oldSrc, newSrc, list = info.list; + + for (i = 0; ci = imgs[i++];) { + oldSrc = ci.getAttribute("_src") || ci.src || ""; + for (j = 0; cj = list[j++];) { + if (oldSrc == cj.source && cj.state == "SUCCESS") { //抓取失败时不做替换处理 + newSrc = catcherUrlPrefix + cj.url; + domUtils.setAttributes(ci, { + "src": newSrc, + "_src": newSrc + }); + break; + } + } + } + me.fireEvent('catchremotesuccess') + }, + //回调失败,本次请求超时 + error: function () { + me.fireEvent("catchremoteerror"); + } + }); + } + + function catchremoteimage(imgs, callbacks) { + var params = utils.serializeParam(me.queryCommandValue('serverparam')) || '', + url = utils.formatUrl(catcherActionUrl + (catcherActionUrl.indexOf('?') == -1 ? '?':'&') + params), + isJsonp = utils.isCrossDomainUrl(url), + opt = { + 'method': 'POST', + 'dataType': isJsonp ? 'jsonp':'', + 'timeout': 60000, //单位:毫秒,回调请求超时设置。目标用户如果网速不是很快的话此处建议设置一个较大的数值 + 'onsuccess': callbacks["success"], + 'onerror': callbacks["error"] + }; + opt[catcherFieldName] = imgs; + ajax.request(url, opt); + } + + }); +}; + +// plugins/snapscreen.js +/** + * 截屏插件,为UEditor提供插入支持 + * @file + * @since 1.4.2 + */ +UE.plugin.register('snapscreen', function (){ + + var me = this; + var snapplugin; + + function getLocation(url){ + var search, + a = document.createElement('a'), + params = utils.serializeParam(me.queryCommandValue('serverparam')) || ''; + + a.href = url; + if (browser.ie) { + a.href = a.href; + } + + + search = a.search; + if (params) { + search = search + (search.indexOf('?') == -1 ? '?':'&')+ params; + search = search.replace(/[&]+/ig, '&'); + } + return { + 'port': a.port, + 'hostname': a.hostname, + 'path': a.pathname + search || + a.hash + } + } + + return { + commands:{ + /** + * 字体背景颜色 + * @command snapscreen + * @method execCommand + * @param { String } cmd 命令字符串 + * @example + * ```javascript + * editor.execCommand('snapscreen'); + * ``` + */ + 'snapscreen':{ + execCommand:function (cmd) { + var url, local, res; + var lang = me.getLang("snapScreen_plugin"); + + if(!snapplugin){ + var container = me.container; + var doc = me.container.ownerDocument || me.container.document; + snapplugin = doc.createElement("object"); + try{snapplugin.type = "application/x-pluginbaidusnap";}catch(e){ + return; + } + snapplugin.style.cssText = "position:absolute;left:-9999px;width:0;height:0;"; + snapplugin.setAttribute("width","0"); + snapplugin.setAttribute("height","0"); + container.appendChild(snapplugin); + } + + function onSuccess(rs){ + try{ + rs = eval("("+ rs +")"); + if(rs.state == 'SUCCESS'){ + var opt = me.options; + me.execCommand('insertimage', { + src: opt.snapscreenUrlPrefix + rs.url, + _src: opt.snapscreenUrlPrefix + rs.url, + alt: rs.title || '', + floatStyle: opt.snapscreenImgAlign + }); + } else { + alert(rs.state); + } + }catch(e){ + alert(lang.callBackErrorMsg); + } + } + url = me.getActionUrl(me.getOpt('snapscreenActionName')); + local = getLocation(url); + setTimeout(function () { + try{ + res =snapplugin.saveSnapshot(local.hostname, local.path, local.port); + }catch(e){ + me.ui._dialogs['snapscreenDialog'].open(); + return; + } + + onSuccess(res); + }, 50); + }, + queryCommandState: function(){ + return (navigator.userAgent.indexOf("Windows",0) != -1) ? 0:-1; + } + } + } + } +}); + + +// plugins/insertparagraph.js +/** + * 插入段落 + * @file + * @since 1.2.6.1 + */ + + +/** + * 插入段落 + * @command insertparagraph + * @method execCommand + * @param { String } cmd 命令字符串 + * @example + * ```javascript + * //editor是编辑器实例 + * editor.execCommand( 'insertparagraph' ); + * ``` + */ + +UE.commands['insertparagraph'] = { + execCommand : function( cmdName,front) { + var me = this, + range = me.selection.getRange(), + start = range.startContainer,tmpNode; + while(start ){ + if(domUtils.isBody(start)){ + break; + } + tmpNode = start; + start = start.parentNode; + } + if(tmpNode){ + var p = me.document.createElement('p'); + if(front){ + tmpNode.parentNode.insertBefore(p,tmpNode) + }else{ + tmpNode.parentNode.insertBefore(p,tmpNode.nextSibling) + } + domUtils.fillNode(me.document,p); + range.setStart(p,0).setCursor(false,true); + } + } +}; + + + +// plugins/webapp.js +/** + * 百度应用 + * @file + * @since 1.2.6.1 + */ + + +/** + * 插入百度应用 + * @command webapp + * @method execCommand + * @remind 需要百度APPKey + * @remind 百度应用主页: http://app.baidu.com/ + * @param { Object } appOptions 应用所需的参数项, 支持的key有: title=>应用标题, width=>应用容器宽度, + * height=>应用容器高度,logo=>应用logo,url=>应用地址 + * @example + * ```javascript + * //editor是编辑器实例 + * //在编辑器里插入一个“植物大战僵尸”的APP + * editor.execCommand( 'webapp' , { + * title: '植物大战僵尸', + * width: 560, + * height: 465, + * logo: '应用展示的图片', + * url: '百度应用的地址' + * } ); + * ``` + */ + +//UE.plugins['webapp'] = function () { +// var me = this; +// function createInsertStr( obj, toIframe, addParagraph ) { +// return !toIframe ? +// (addParagraph ? '

    ' : '') + '' + +// (addParagraph ? '

    ' : '') +// : +// ''; +// } +// +// function switchImgAndIframe( img2frame ) { +// var tmpdiv, +// nodes = domUtils.getElementsByTagName( me.document, !img2frame ? "iframe" : "img" ); +// for ( var i = 0, node; node = nodes[i++]; ) { +// if ( node.className != "edui-faked-webapp" ){ +// continue; +// } +// tmpdiv = me.document.createElement( "div" ); +// tmpdiv.innerHTML = createInsertStr( img2frame ? {url:node.getAttribute( "_url" ), width:node.width, height:node.height,title:node.title,logo:node.style.backgroundImage.replace("url(","").replace(")","")} : {url:node.getAttribute( "src", 2 ),title:node.title, width:node.width, height:node.height,logo:node.getAttribute("logo_url")}, img2frame ? true : false,false ); +// node.parentNode.replaceChild( tmpdiv.firstChild, node ); +// } +// } +// +// me.addListener( "beforegetcontent", function () { +// switchImgAndIframe( true ); +// } ); +// me.addListener( 'aftersetcontent', function () { +// switchImgAndIframe( false ); +// } ); +// me.addListener( 'aftergetcontent', function ( cmdName ) { +// if ( cmdName == 'aftergetcontent' && me.queryCommandState( 'source' ) ){ +// return; +// } +// switchImgAndIframe( false ); +// } ); +// +// me.commands['webapp'] = { +// execCommand:function ( cmd, obj ) { +// me.execCommand( "inserthtml", createInsertStr( obj, false,true ) ); +// } +// }; +//}; + +UE.plugin.register('webapp', function (){ + var me = this; + function createInsertStr(obj,toEmbed){ + return !toEmbed ? + '' + : + '' + + } + return { + outputRule: function(root){ + utils.each(root.getNodesByTagName('img'),function(node){ + var html; + if(node.getAttr('class') == 'edui-faked-webapp'){ + html = createInsertStr({ + title:node.getAttr('title'), + 'width':node.getAttr('width'), + 'height':node.getAttr('height'), + 'align':node.getAttr('align'), + 'cssfloat':node.getStyle('float'), + 'url':node.getAttr("_url"), + 'logo':node.getAttr('_logo_url') + },true); + var embed = UE.uNode.createElement(html); + node.parentNode.replaceChild(embed,node); + } + }) + }, + inputRule:function(root){ + utils.each(root.getNodesByTagName('iframe'),function(node){ + if(node.getAttr('class') == 'edui-faked-webapp'){ + var img = UE.uNode.createElement(createInsertStr({ + title:node.getAttr('title'), + 'width':node.getAttr('width'), + 'height':node.getAttr('height'), + 'align':node.getAttr('align'), + 'cssfloat':node.getStyle('float'), + 'url':node.getAttr("src"), + 'logo':node.getAttr('logo_url') + })); + node.parentNode.replaceChild(img,node); + } + }) + + }, + commands:{ + /** + * 插入百度应用 + * @command webapp + * @method execCommand + * @remind 需要百度APPKey + * @remind 百度应用主页: http://app.baidu.com/ + * @param { Object } appOptions 应用所需的参数项, 支持的key有: title=>应用标题, width=>应用容器宽度, + * height=>应用容器高度,logo=>应用logo,url=>应用地址 + * @example + * ```javascript + * //editor是编辑器实例 + * //在编辑器里插入一个“植物大战僵尸”的APP + * editor.execCommand( 'webapp' , { + * title: '植物大战僵尸', + * width: 560, + * height: 465, + * logo: '应用展示的图片', + * url: '百度应用的地址' + * } ); + * ``` + */ + 'webapp':{ + execCommand:function (cmd, obj) { + + var me = this, + str = createInsertStr(utils.extend(obj,{ + align:'none' + }), false); + me.execCommand("inserthtml",str); + }, + queryCommandState:function () { + var me = this, + img = me.selection.getRange().getClosedNode(), + flag = img && (img.className == "edui-faked-webapp"); + return flag ? 1 : 0; + } + } + } + } +}); + +// plugins/template.js +///import core +///import plugins\inserthtml.js +///import plugins\cleardoc.js +///commands 模板 +///commandsName template +///commandsTitle 模板 +///commandsDialog dialogs\template +UE.plugins['template'] = function () { + UE.commands['template'] = { + execCommand:function (cmd, obj) { + obj.html && this.execCommand("inserthtml", obj.html); + } + }; + this.addListener("click", function (type, evt) { + var el = evt.target || evt.srcElement, + range = this.selection.getRange(); + var tnode = domUtils.findParent(el, function (node) { + if (node.className && domUtils.hasClass(node, "ue_t")) { + return node; + } + }, true); + tnode && range.selectNode(tnode).shrinkBoundary().select(); + }); + this.addListener("keydown", function (type, evt) { + var range = this.selection.getRange(); + if (!range.collapsed) { + if (!evt.ctrlKey && !evt.metaKey && !evt.shiftKey && !evt.altKey) { + var tnode = domUtils.findParent(range.startContainer, function (node) { + if (node.className && domUtils.hasClass(node, "ue_t")) { + return node; + } + }, true); + if (tnode) { + domUtils.removeClasses(tnode, ["ue_t"]); + } + } + } + }); +}; + + +// plugins/music.js +/** + * 插入音乐命令 + * @file + */ +UE.plugin.register('music', function (){ + var me = this; + function creatInsertStr(url,width,height,align,cssfloat,toEmbed){ + return !toEmbed ? + '' + : + ''; + } + return { + outputRule: function(root){ + utils.each(root.getNodesByTagName('img'),function(node){ + var html; + if(node.getAttr('class') == 'edui-faked-music'){ + var cssfloat = node.getStyle('float'); + var align = node.getAttr('align'); + html = creatInsertStr(node.getAttr("_url"), node.getAttr('width'), node.getAttr('height'), align, cssfloat, true); + var embed = UE.uNode.createElement(html); + node.parentNode.replaceChild(embed,node); + } + }) + }, + inputRule:function(root){ + utils.each(root.getNodesByTagName('embed'),function(node){ + if(node.getAttr('class') == 'edui-faked-music'){ + var cssfloat = node.getStyle('float'); + var align = node.getAttr('align'); + html = creatInsertStr(node.getAttr("src"), node.getAttr('width'), node.getAttr('height'), align, cssfloat,false); + var img = UE.uNode.createElement(html); + node.parentNode.replaceChild(img,node); + } + }) + + }, + commands:{ + /** + * 插入音乐 + * @command music + * @method execCommand + * @param { Object } musicOptions 插入音乐的参数项, 支持的key有: url=>音乐地址; + * width=>音乐容器宽度;height=>音乐容器高度;align=>音乐文件的对齐方式, 可选值有: left, center, right, none + * @example + * ```javascript + * //editor是编辑器实例 + * //在编辑器里插入一个“植物大战僵尸”的APP + * editor.execCommand( 'music' , { + * width: 400, + * height: 95, + * align: "center", + * url: "音乐地址" + * } ); + * ``` + */ + 'music':{ + execCommand:function (cmd, musicObj) { + var me = this, + str = creatInsertStr(musicObj.url, musicObj.width || 400, musicObj.height || 95, "none", false); + me.execCommand("inserthtml",str); + }, + queryCommandState:function () { + var me = this, + img = me.selection.getRange().getClosedNode(), + flag = img && (img.className == "edui-faked-music"); + return flag ? 1 : 0; + } + } + } + } +}); + +// plugins/autoupload.js +/** + * @description + * 1.拖放文件到编辑区域,自动上传并插入到选区 + * 2.插入粘贴板的图片,自动上传并插入到选区 + * @author Jinqn + * @date 2013-10-14 + */ +UE.plugin.register('autoupload', function (){ + + function sendAndInsertFile(file, editor) { + var me = editor; + //模拟数据 + var fieldName, urlPrefix, maxSize, allowFiles, actionUrl, + loadingHtml, errorHandler, successHandler, + filetype = /image\/\w+/i.test(file.type) ? 'image':'file', + loadingId = 'loading_' + (+new Date()).toString(36); + + fieldName = me.getOpt(filetype + 'FieldName'); + urlPrefix = me.getOpt(filetype + 'UrlPrefix'); + maxSize = me.getOpt(filetype + 'MaxSize'); + allowFiles = me.getOpt(filetype + 'AllowFiles'); + actionUrl = me.getActionUrl(me.getOpt(filetype + 'ActionName')); + errorHandler = function(title) { + var loader = me.document.getElementById(loadingId); + loader && domUtils.remove(loader); + me.fireEvent('showmessage', { + 'id': loadingId, + 'content': title, + 'type': 'error', + 'timeout': 4000 + }); + }; + + if (filetype == 'image') { + loadingHtml = ''; + successHandler = function(data) { + var link = urlPrefix + data.url, + loader = me.document.getElementById(loadingId); + if (loader) { + loader.setAttribute('src', link); + loader.setAttribute('_src', link); + loader.setAttribute('title', data.title || ''); + loader.setAttribute('alt', data.original || ''); + loader.removeAttribute('id'); + domUtils.removeClasses(loader, 'loadingclass'); + } + }; + } else { + loadingHtml = '

    ' + + '' + + '

    '; + successHandler = function(data) { + var link = urlPrefix + data.url, + loader = me.document.getElementById(loadingId); + + var rng = me.selection.getRange(), + bk = rng.createBookmark(); + rng.selectNode(loader).select(); + me.execCommand('insertfile', {'url': link}); + rng.moveToBookmark(bk).select(); + }; + } + + /* 插入loading的占位符 */ + me.execCommand('inserthtml', loadingHtml); + + /* 判断后端配置是否没有加载成功 */ + if (!me.getOpt(filetype + 'ActionName')) { + errorHandler(me.getLang('autoupload.errorLoadConfig')); + return; + } + /* 判断文件大小是否超出限制 */ + if(file.size > maxSize) { + errorHandler(me.getLang('autoupload.exceedSizeError')); + return; + } + /* 判断文件格式是否超出允许 */ + var fileext = file.name ? file.name.substr(file.name.lastIndexOf('.')):''; + if ((fileext && filetype != 'image') || (allowFiles && (allowFiles.join('') + '.').indexOf(fileext.toLowerCase() + '.') == -1)) { + errorHandler(me.getLang('autoupload.exceedTypeError')); + return; + } + + /* 创建Ajax并提交 */ + var xhr = new XMLHttpRequest(), + fd = new FormData(), + params = utils.serializeParam(me.queryCommandValue('serverparam')) || '', + url = utils.formatUrl(actionUrl + (actionUrl.indexOf('?') == -1 ? '?':'&') + params); + + fd.append(fieldName, file, file.name || ('blob.' + file.type.substr('image/'.length))); + fd.append('type', 'ajax'); + xhr.open("post", url, true); + xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest"); + xhr.addEventListener('load', function (e) { + try{ + var json = (new Function("return " + utils.trim(e.target.response)))(); + if (json.state == 'SUCCESS' && json.url) { + successHandler(json); + } else { + errorHandler(json.state); + } + }catch(er){ + errorHandler(me.getLang('autoupload.loadError')); + } + }); + xhr.send(fd); + } + + function getPasteImage(e){ + return e.clipboardData && e.clipboardData.items && e.clipboardData.items.length == 1 && /^image\//.test(e.clipboardData.items[0].type) ? e.clipboardData.items:null; + } + function getDropImage(e){ + return e.dataTransfer && e.dataTransfer.files ? e.dataTransfer.files:null; + } + + return { + outputRule: function(root){ + utils.each(root.getNodesByTagName('img'),function(n){ + if (/\b(loaderrorclass)|(bloaderrorclass)\b/.test(n.getAttr('class'))) { + n.parentNode.removeChild(n); + } + }); + utils.each(root.getNodesByTagName('p'),function(n){ + if (/\bloadpara\b/.test(n.getAttr('class'))) { + n.parentNode.removeChild(n); + } + }); + }, + bindEvents:{ + //插入粘贴板的图片,拖放插入图片 + 'ready':function(e){ + var me = this; + if(window.FormData && window.FileReader) { + domUtils.on(me.body, 'paste drop', function(e){ + var hasImg = false, + items; + //获取粘贴板文件列表或者拖放文件列表 + items = e.type == 'paste' ? getPasteImage(e):getDropImage(e); + if(items){ + var len = items.length, + file; + while (len--){ + file = items[len]; + if(file.getAsFile) file = file.getAsFile(); + if(file && file.size > 0) { + sendAndInsertFile(file, me); + hasImg = true; + } + } + hasImg && e.preventDefault(); + } + + }); + //取消拖放图片时出现的文字光标位置提示 + domUtils.on(me.body, 'dragover', function (e) { + if(e.dataTransfer.types[0] == 'Files') { + e.preventDefault(); + } + }); + + //设置loading的样式 + utils.cssRule('loading', + '.loadingclass{display:inline-block;cursor:default;background: url(\'' + + this.options.themePath + + this.options.theme +'/images/loading.gif\') no-repeat center center transparent;border:1px solid #cccccc;margin-left:1px;height: 22px;width: 22px;}\n' + + '.loaderrorclass{display:inline-block;cursor:default;background: url(\'' + + this.options.themePath + + this.options.theme +'/images/loaderror.png\') no-repeat center center transparent;border:1px solid #cccccc;margin-right:1px;height: 22px;width: 22px;' + + '}', + this.document); + } + } + } + } +}); + +// plugins/autosave.js +UE.plugin.register('autosave', function (){ + + var me = this, + //无限循环保护 + lastSaveTime = new Date(), + //最小保存间隔时间 + MIN_TIME = 20, + //auto save key + saveKey = null; + + function save ( editor ) { + + var saveData; + + if ( new Date() - lastSaveTime < MIN_TIME ) { + return; + } + + if ( !editor.hasContents() ) { + //这里不能调用命令来删除, 会造成事件死循环 + saveKey && me.removePreferences( saveKey ); + return; + } + + lastSaveTime = new Date(); + + editor._saveFlag = null; + + saveData = me.body.innerHTML; + + if ( editor.fireEvent( "beforeautosave", { + content: saveData + } ) === false ) { + return; + } + + me.setPreferences( saveKey, saveData ); + + editor.fireEvent( "afterautosave", { + content: saveData + } ); + + } + + return { + defaultOptions: { + //默认间隔时间 + saveInterval: 500, + enableAutoSave: true // HaoChuan9421 + }, + bindEvents:{ + 'ready':function(){ + + var _suffix = "-drafts-data", + key = null; + + if ( me.key ) { + key = me.key + _suffix; + } else { + key = ( me.container.parentNode.id || 'ue-common' ) + _suffix; + } + + //页面地址+编辑器ID 保持唯一 + saveKey = ( location.protocol + location.host + location.pathname ).replace( /[.:\/]/g, '_' ) + key; + + }, + + 'contentchange': function () { + // HaoChuan9421 + if (!me.getOpt('enableAutoSave')) { + return; + } + + if ( !saveKey ) { + return; + } + + if ( me._saveFlag ) { + window.clearTimeout( me._saveFlag ); + } + + if ( me.options.saveInterval > 0 ) { + + me._saveFlag = window.setTimeout( function () { + + save( me ); + + }, me.options.saveInterval ); + + } else { + + save(me); + + } + + + } + }, + commands:{ + 'clearlocaldata':{ + execCommand:function (cmd, name) { + if ( saveKey && me.getPreferences( saveKey ) ) { + me.removePreferences( saveKey ) + } + }, + notNeedUndo: true, + ignoreContentChange:true + }, + + 'getlocaldata':{ + execCommand:function (cmd, name) { + return saveKey ? me.getPreferences( saveKey ) || '' : ''; + }, + notNeedUndo: true, + ignoreContentChange:true + }, + + 'drafts':{ + execCommand:function (cmd, name) { + if ( saveKey ) { + me.body.innerHTML = me.getPreferences( saveKey ) || '

    '+domUtils.fillHtml+'

    '; + me.focus(true); + } + }, + queryCommandState: function () { + return saveKey ? ( me.getPreferences( saveKey ) === null ? -1 : 0 ) : -1; + }, + notNeedUndo: true, + ignoreContentChange:true + } + } + } + +}); + +// plugins/charts.js +UE.plugin.register('charts', function (){ + + var me = this; + + return { + bindEvents: { + 'chartserror': function () { + } + }, + commands:{ + 'charts': { + execCommand: function ( cmd, data ) { + + var tableNode = domUtils.findParentByTagName(this.selection.getRange().startContainer, 'table', true), + flagText = [], + config = {}; + + if ( !tableNode ) { + return false; + } + + if ( !validData( tableNode ) ) { + me.fireEvent( "chartserror" ); + return false; + } + + config.title = data.title || ''; + config.subTitle = data.subTitle || ''; + config.xTitle = data.xTitle || ''; + config.yTitle = data.yTitle || ''; + config.suffix = data.suffix || ''; + config.tip = data.tip || ''; + //数据对齐方式 + config.dataFormat = data.tableDataFormat || ''; + //图表类型 + config.chartType = data.chartType || 0; + + for ( var key in config ) { + + if ( !config.hasOwnProperty( key ) ) { + continue; + } + + flagText.push( key+":"+config[ key ] ); + + } + + tableNode.setAttribute( "data-chart", flagText.join( ";" ) ); + domUtils.addClass( tableNode, "edui-charts-table" ); + + + + }, + queryCommandState: function ( cmd, name ) { + + var tableNode = domUtils.findParentByTagName(this.selection.getRange().startContainer, 'table', true); + return tableNode && validData( tableNode ) ? 0 : -1; + + } + } + }, + inputRule:function(root){ + utils.each(root.getNodesByTagName('table'),function( tableNode ){ + + if ( tableNode.getAttr("data-chart") !== undefined ) { + tableNode.setAttr("style"); + } + + }) + + }, + outputRule:function(root){ + utils.each(root.getNodesByTagName('table'),function( tableNode ){ + + if ( tableNode.getAttr("data-chart") !== undefined ) { + tableNode.setAttr("style", "display: none;"); + } + + }) + + } + } + + function validData ( table ) { + + var firstRows = null, + cellCount = 0; + + //行数不够 + if ( table.rows.length < 2 ) { + return false; + } + + //列数不够 + if ( table.rows[0].cells.length < 2 ) { + return false; + } + + //第一行所有cell必须是th + firstRows = table.rows[ 0 ].cells; + cellCount = firstRows.length; + + for ( var i = 0, cell; cell = firstRows[ i ]; i++ ) { + + if ( cell.tagName.toLowerCase() !== 'th' ) { + return false; + } + + } + + for ( var i = 1, row; row = table.rows[ i ]; i++ ) { + + //每行单元格数不匹配, 返回false + if ( row.cells.length != cellCount ) { + return false; + } + + //第一列不是th也返回false + if ( row.cells[0].tagName.toLowerCase() !== 'th' ) { + return false; + } + + for ( var j = 1, cell; cell = row.cells[ j ]; j++ ) { + + var value = utils.trim( ( cell.innerText || cell.textContent || '' ) ); + + value = value.replace( new RegExp( UE.dom.domUtils.fillChar, 'g' ), '' ).replace( /^\s+|\s+$/g, '' ); + + //必须是数字 + if ( !/^\d*\.?\d+$/.test( value ) ) { + return false; + } + + } + + } + + return true; + + } + +}); + +// plugins/section.js +/** + * 目录大纲支持插件 + * @file + * @since 1.3.0 + */ +UE.plugin.register('section', function (){ + /* 目录节点对象 */ + function Section(option){ + this.tag = ''; + this.level = -1, + this.dom = null; + this.nextSection = null; + this.previousSection = null; + this.parentSection = null; + this.startAddress = []; + this.endAddress = []; + this.children = []; + } + function getSection(option) { + var section = new Section(); + return utils.extend(section, option); + } + function getNodeFromAddress(startAddress, root) { + var current = root; + for(var i = 0;i < startAddress.length; i++) { + if(!current.childNodes) return null; + current = current.childNodes[startAddress[i]]; + } + return current; + } + + var me = this; + + return { + bindMultiEvents:{ + type: 'aftersetcontent afterscencerestore', + handler: function(){ + me.fireEvent('updateSections'); + } + }, + bindEvents:{ + /* 初始化、拖拽、粘贴、执行setcontent之后 */ + 'ready': function (){ + me.fireEvent('updateSections'); + domUtils.on(me.body, 'drop paste', function(){ + me.fireEvent('updateSections'); + }); + }, + /* 执行paragraph命令之后 */ + 'afterexeccommand': function (type, cmd) { + if(cmd == 'paragraph') { + me.fireEvent('updateSections'); + } + }, + /* 部分键盘操作,触发updateSections事件 */ + 'keyup': function (type, e) { + var me = this, + range = me.selection.getRange(); + if(range.collapsed != true) { + me.fireEvent('updateSections'); + } else { + var keyCode = e.keyCode || e.which; + if(keyCode == 13 || keyCode == 8 || keyCode == 46) { + me.fireEvent('updateSections'); + } + } + } + }, + commands:{ + 'getsections': { + execCommand: function (cmd, levels) { + var levelFn = levels || ['h1', 'h2', 'h3', 'h4', 'h5', 'h6']; + + for (var i = 0; i < levelFn.length; i++) { + if (typeof levelFn[i] == 'string') { + levelFn[i] = function(fn){ + return function(node){ + return node.tagName == fn.toUpperCase() + }; + }(levelFn[i]); + } else if (typeof levelFn[i] != 'function') { + levelFn[i] = function (node) { + return null; + } + } + } + function getSectionLevel(node) { + for (var i = 0; i < levelFn.length; i++) { + if (levelFn[i](node)) return i; + } + return -1; + } + + var me = this, + Directory = getSection({'level':-1, 'title':'root'}), + previous = Directory; + + function traversal(node, Directory) { + var level, + tmpSection = null, + parent, + child, + children = node.childNodes; + for (var i = 0, len = children.length; i < len; i++) { + child = children[i]; + level = getSectionLevel(child); + if (level >= 0) { + var address = me.selection.getRange().selectNode(child).createAddress(true).startAddress, + current = getSection({ + 'tag': child.tagName, + 'title': child.innerText || child.textContent || '', + 'level': level, + 'dom': child, + 'startAddress': utils.clone(address, []), + 'endAddress': utils.clone(address, []), + 'children': [] + }); + previous.nextSection = current; + current.previousSection = previous; + parent = previous; + while(level <= parent.level){ + parent = parent.parentSection; + } + current.parentSection = parent; + parent.children.push(current); + tmpSection = previous = current; + } else { + child.nodeType === 1 && traversal(child, Directory); + tmpSection && tmpSection.endAddress[tmpSection.endAddress.length - 1] ++; + } + } + } + traversal(me.body, Directory); + return Directory; + }, + notNeedUndo: true + }, + 'movesection': { + execCommand: function (cmd, sourceSection, targetSection, isAfter) { + + var me = this, + targetAddress, + target; + + if(!sourceSection || !targetSection || targetSection.level == -1) return; + + targetAddress = isAfter ? targetSection.endAddress:targetSection.startAddress; + target = getNodeFromAddress(targetAddress, me.body); + + /* 判断目标地址是否被源章节包含 */ + if(!targetAddress || !target || isContainsAddress(sourceSection.startAddress, sourceSection.endAddress, targetAddress)) return; + + var startNode = getNodeFromAddress(sourceSection.startAddress, me.body), + endNode = getNodeFromAddress(sourceSection.endAddress, me.body), + current, + nextNode; + + if(isAfter) { + current = endNode; + while ( current && !(domUtils.getPosition( startNode, current ) & domUtils.POSITION_FOLLOWING) ) { + nextNode = current.previousSibling; + domUtils.insertAfter(target, current); + if(current == startNode) break; + current = nextNode; + } + } else { + current = startNode; + while ( current && !(domUtils.getPosition( current, endNode ) & domUtils.POSITION_FOLLOWING) ) { + nextNode = current.nextSibling; + target.parentNode.insertBefore(current, target); + if(current == endNode) break; + current = nextNode; + } + } + + me.fireEvent('updateSections'); + + /* 获取地址的包含关系 */ + function isContainsAddress(startAddress, endAddress, addressTarget){ + var isAfterStartAddress = false, + isBeforeEndAddress = false; + for(var i = 0; i< startAddress.length; i++){ + if(i >= addressTarget.length) break; + if(addressTarget[i] > startAddress[i]) { + isAfterStartAddress = true; + break; + } else if(addressTarget[i] < startAddress[i]) { + break; + } + } + for(var i = 0; i< endAddress.length; i++){ + if(i >= addressTarget.length) break; + if(addressTarget[i] < startAddress[i]) { + isBeforeEndAddress = true; + break; + } else if(addressTarget[i] > startAddress[i]) { + break; + } + } + return isAfterStartAddress && isBeforeEndAddress; + } + } + }, + 'deletesection': { + execCommand: function (cmd, section, keepChildren) { + var me = this; + + if(!section) return; + + function getNodeFromAddress(startAddress) { + var current = me.body; + for(var i = 0;i < startAddress.length; i++) { + if(!current.childNodes) return null; + current = current.childNodes[startAddress[i]]; + } + return current; + } + + var startNode = getNodeFromAddress(section.startAddress), + endNode = getNodeFromAddress(section.endAddress), + current = startNode, + nextNode; + + if(!keepChildren) { + while ( current && domUtils.inDoc(endNode, me.document) && !(domUtils.getPosition( current, endNode ) & domUtils.POSITION_FOLLOWING) ) { + nextNode = current.nextSibling; + domUtils.remove(current); + current = nextNode; + } + } else { + domUtils.remove(current); + } + + me.fireEvent('updateSections'); + } + }, + 'selectsection': { + execCommand: function (cmd, section) { + if(!section && !section.dom) return false; + var me = this, + range = me.selection.getRange(), + address = { + 'startAddress':utils.clone(section.startAddress, []), + 'endAddress':utils.clone(section.endAddress, []) + }; + address.endAddress[address.endAddress.length - 1]++; + range.moveToAddress(address).select().scrollToView(); + return true; + }, + notNeedUndo: true + }, + 'scrolltosection': { + execCommand: function (cmd, section) { + if(!section && !section.dom) return false; + var me = this, + range = me.selection.getRange(), + address = { + 'startAddress':section.startAddress, + 'endAddress':section.endAddress + }; + address.endAddress[address.endAddress.length - 1]++; + range.moveToAddress(address).scrollToView(); + return true; + }, + notNeedUndo: true + } + } + } +}); + +// plugins/simpleupload.js +/** + * @description + * 简单上传:点击按钮,直接选择文件上传。 + * 原 UEditor 作者使用了 form 表单 + iframe 的方式上传 + * 但由于同源策略的限制,父页面无法访问跨域的 iframe 内容 + * 导致无法获取接口返回的数据,使得单图上传无法在跨域的情况下使用 + * 这里改为普通的XHR上传,兼容到IE10+ + * @author HaoChuan9421 + * @date 2018-12-20 + */ +UE.plugin.register('simpleupload', function() { + var me = this, + containerBtn, + timestrap = (+new Date()).toString(36); + + function initUploadBtn() { + var w = containerBtn.offsetWidth || 20, + h = containerBtn.offsetHeight || 20, + btnStyle = 'display:block;width:' + w + 'px;height:' + h + 'px;overflow:hidden;border:0;margin:0;padding:0;position:absolute;top:0;left:0;filter:alpha(opacity=0);-moz-opacity:0;-khtml-opacity: 0;opacity: 0;cursor:pointer;'; + + var form = document.createElement('form'); + var input = document.createElement('input'); + form.id = 'edui_form_' + timestrap; + form.enctype = 'multipart/form-data'; + form.style = btnStyle; + input.id = 'edui_input_' + timestrap; + input.type = 'file' + input.accept = 'image/*'; + input.name = me.options.imageFieldName; + input.style = btnStyle; + form.appendChild(input); + containerBtn.appendChild(form); + + input.addEventListener('change', function(event) { + if (!input.value) return; + var loadingId = 'loading_' + (+new Date()).toString(36); + var imageActionUrl = me.getActionUrl(me.getOpt('imageActionName')); + var params = utils.serializeParam(me.queryCommandValue('serverparam')) || ''; + var action = utils.formatUrl(imageActionUrl + (imageActionUrl.indexOf('?') == -1 ? '?' : '&') + params); + var allowFiles = me.getOpt('imageAllowFiles'); + me.focus(); + me.execCommand('inserthtml', ''); + + function showErrorLoader(title) { + if (loadingId) { + var loader = me.document.getElementById(loadingId); + loader && domUtils.remove(loader); + me.fireEvent('showmessage', { + 'id': loadingId, + 'content': title, + 'type': 'error', + 'timeout': 4000 + }); + } + } + /* 判断后端配置是否没有加载成功 */ + if (!me.getOpt('imageActionName')) { + showErrorLoader(me.getLang('autoupload.errorLoadConfig')); + return; + } + // 判断文件格式是否错误 + var filename = input.value, + fileext = filename ? filename.substr(filename.lastIndexOf('.')) : ''; + if (!fileext || (allowFiles && (allowFiles.join('') + '.').indexOf(fileext.toLowerCase() + '.') == -1)) { + showErrorLoader(me.getLang('simpleupload.exceedTypeError')); + return; + } + + var xhr = new XMLHttpRequest() + xhr.open('post', action, true) + if (me.options.headers && Object.prototype.toString.apply(me.options.headers) === "[object Object]") { + for (var key in me.options.headers) { + xhr.setRequestHeader(key, me.options.headers[key]) + } + } + xhr.onload = function() { + if ((xhr.status >= 200 && xhr.status < 300) || xhr.status == 304) { + var res = JSON.parse(xhr.responseText) + var link = me.options.imageUrlPrefix + res.url; + + if (res.state == 'SUCCESS' && res.url) { + loader = me.document.getElementById(loadingId); + loader.setAttribute('src', link); + loader.setAttribute('_src', link); + loader.setAttribute('title', res.title || ''); + loader.setAttribute('alt', res.original || ''); + loader.removeAttribute('id'); + domUtils.removeClasses(loader, 'loadingclass'); + me.fireEvent("contentchange"); + } else { + showErrorLoader(res.state); + } + } else { + showErrorLoader(me.getLang('simpleupload.loadError')); + } + }; + xhr.onerror = function() { + showErrorLoader(me.getLang('simpleupload.loadError')); + }; + xhr.send(new FormData(form)); + form.reset(); + }) + } + + return { + bindEvents: { + 'ready': function() { + //设置loading的样式 + utils.cssRule('loading', + '.loadingclass{display:inline-block;cursor:default;background: url(\'' + + this.options.themePath + + this.options.theme + '/images/loading.gif\') no-repeat center center transparent;border:1px solid #cccccc;margin-right:1px;height: 22px;width: 22px;}\n' + + '.loaderrorclass{display:inline-block;cursor:default;background: url(\'' + + this.options.themePath + + this.options.theme + '/images/loaderror.png\') no-repeat center center transparent;border:1px solid #cccccc;margin-right:1px;height: 22px;width: 22px;' + + '}', + this.document); + }, + /* 初始化简单上传按钮 */ + 'simpleuploadbtnready': function(type, container) { + containerBtn = container; + me.afterConfigReady(initUploadBtn); + } + }, + outputRule: function(root) { + utils.each(root.getNodesByTagName('img'), function(n) { + if (/\b(loaderrorclass)|(bloaderrorclass)\b/.test(n.getAttr('class'))) { + n.parentNode.removeChild(n); + } + }); + } + } +}); + +// plugins/serverparam.js +/** + * 服务器提交的额外参数列表设置插件 + * @file + * @since 1.2.6.1 + */ +UE.plugin.register('serverparam', function (){ + + var me = this, + serverParam = {}; + + return { + commands:{ + /** + * 修改服务器提交的额外参数列表,清除所有项 + * @command serverparam + * @method execCommand + * @param { String } cmd 命令字符串 + * @example + * ```javascript + * editor.execCommand('serverparam'); + * editor.queryCommandValue('serverparam'); //返回空 + * ``` + */ + /** + * 修改服务器提交的额外参数列表,删除指定项 + * @command serverparam + * @method execCommand + * @param { String } cmd 命令字符串 + * @param { String } key 要清除的属性 + * @example + * ```javascript + * editor.execCommand('serverparam', 'name'); //删除属性name + * ``` + */ + /** + * 修改服务器提交的额外参数列表,使用键值添加项 + * @command serverparam + * @method execCommand + * @param { String } cmd 命令字符串 + * @param { String } key 要添加的属性 + * @param { String } value 要添加属性的值 + * @example + * ```javascript + * editor.execCommand('serverparam', 'name', 'hello'); + * editor.queryCommandValue('serverparam'); //返回对象 {'name': 'hello'} + * ``` + */ + /** + * 修改服务器提交的额外参数列表,传入键值对对象添加多项 + * @command serverparam + * @method execCommand + * @param { String } cmd 命令字符串 + * @param { Object } key 传入的键值对对象 + * @example + * ```javascript + * editor.execCommand('serverparam', {'name': 'hello'}); + * editor.queryCommandValue('serverparam'); //返回对象 {'name': 'hello'} + * ``` + */ + /** + * 修改服务器提交的额外参数列表,使用自定义函数添加多项 + * @command serverparam + * @method execCommand + * @param { String } cmd 命令字符串 + * @param { Function } key 自定义获取参数的函数 + * @example + * ```javascript + * editor.execCommand('serverparam', function(editor){ + * return {'key': 'value'}; + * }); + * editor.queryCommandValue('serverparam'); //返回对象 {'key': 'value'} + * ``` + */ + + /** + * 获取服务器提交的额外参数列表 + * @command serverparam + * @method queryCommandValue + * @param { String } cmd 命令字符串 + * @example + * ```javascript + * editor.queryCommandValue( 'serverparam' ); //返回对象 {'key': 'value'} + * ``` + */ + 'serverparam':{ + execCommand:function (cmd, key, value) { + if (key === undefined || key === null) { //不传参数,清空列表 + serverParam = {}; + } else if (utils.isString(key)) { //传入键值 + if(value === undefined || value === null) { + delete serverParam[key]; + } else { + serverParam[key] = value; + } + } else if (utils.isObject(key)) { //传入对象,覆盖列表项 + utils.extend(serverParam, key, true); + } else if (utils.isFunction(key)){ //传入函数,添加列表项 + utils.extend(serverParam, key(), true); + } + }, + queryCommandValue: function(){ + return serverParam || {}; + } + } + } + } +}); + + +// plugins/insertfile.js +/** + * 插入附件 + */ +UE.plugin.register('insertfile', function (){ + + var me = this; + + function getFileIcon(url){ + var ext = url.substr(url.lastIndexOf('.') + 1).toLowerCase(), + maps = { + "rar":"icon_rar.gif", + "zip":"icon_rar.gif", + "tar":"icon_rar.gif", + "gz":"icon_rar.gif", + "bz2":"icon_rar.gif", + "doc":"icon_doc.gif", + "docx":"icon_doc.gif", + "pdf":"icon_pdf.gif", + "mp3":"icon_mp3.gif", + "xls":"icon_xls.gif", + "chm":"icon_chm.gif", + "ppt":"icon_ppt.gif", + "pptx":"icon_ppt.gif", + "avi":"icon_mv.gif", + "rmvb":"icon_mv.gif", + "wmv":"icon_mv.gif", + "flv":"icon_mv.gif", + "swf":"icon_mv.gif", + "rm":"icon_mv.gif", + "exe":"icon_exe.gif", + "psd":"icon_psd.gif", + "txt":"icon_txt.gif", + "jpg":"icon_jpg.gif", + "png":"icon_jpg.gif", + "jpeg":"icon_jpg.gif", + "gif":"icon_jpg.gif", + "ico":"icon_jpg.gif", + "bmp":"icon_jpg.gif" + }; + return maps[ext] ? maps[ext]:maps['txt']; + } + + return { + commands:{ + 'insertfile': { + execCommand: function (command, filelist){ + filelist = utils.isArray(filelist) ? filelist : [filelist]; + + var i, item, icon, title, + html = '', + URL = me.getOpt('UEDITOR_HOME_URL'), + iconDir = URL + (URL.substr(URL.length - 1) == '/' ? '':'/') + 'dialogs/attachment/fileTypeImages/'; + for (i = 0; i < filelist.length; i++) { + item = filelist[i]; + icon = iconDir + getFileIcon(item.url); + title = item.title || item.url.substr(item.url.lastIndexOf('/') + 1); + html += '

    ' + + '' + + '' + title + '' + + '

    '; + } + me.execCommand('insertHtml', html); + } + } + } + } +}); + + + + +// plugins/xssFilter.js +/** + * @file xssFilter.js + * @desc xss过滤器 + * @author robbenmu + */ + +UE.plugins.xssFilter = function() { + + var config = UEDITOR_CONFIG; + var whitList = config.whitList; + + function filter(node) { + + var tagName = node.tagName; + var attrs = node.attrs; + + if (!whitList.hasOwnProperty(tagName)) { + node.parentNode.removeChild(node); + return false; + } + + UE.utils.each(attrs, function (val, key) { + + if (whitList[tagName].indexOf(key) === -1) { + node.setAttr(key); + } + }); + } + + // 添加inserthtml\paste等操作用的过滤规则 + if (whitList && config.xssFilterRules) { + this.options.filterRules = function () { + + var result = {}; + + UE.utils.each(whitList, function(val, key) { + result[key] = function (node) { + return filter(node); + }; + }); + + return result; + }(); + } + + var tagList = []; + + UE.utils.each(whitList, function (val, key) { + tagList.push(key); + }); + + // 添加input过滤规则 + // + if (whitList && config.inputXssFilter) { + this.addInputRule(function (root) { + + root.traversal(function(node) { + if (node.type !== 'element') { + return false; + } + filter(node); + }); + }); + } + // 添加output过滤规则 + // + if (whitList && config.outputXssFilter) { + this.addOutputRule(function (root) { + + root.traversal(function(node) { + if (node.type !== 'element') { + return false; + } + filter(node); + }); + }); + } + +}; + + +// ui/ui.js +var baidu = baidu || {}; +baidu.editor = baidu.editor || {}; +UE.ui = baidu.editor.ui = {}; + +// ui/uiutils.js +(function (){ + var browser = baidu.editor.browser, + domUtils = baidu.editor.dom.domUtils; + + var magic = '$EDITORUI'; + var root = window[magic] = {}; + var uidMagic = 'ID' + magic; + var uidCount = 0; + + var uiUtils = baidu.editor.ui.uiUtils = { + uid: function (obj){ + return (obj ? obj[uidMagic] || (obj[uidMagic] = ++ uidCount) : ++ uidCount); + }, + hook: function ( fn, callback ) { + var dg; + if (fn && fn._callbacks) { + dg = fn; + } else { + dg = function (){ + var q; + if (fn) { + q = fn.apply(this, arguments); + } + var callbacks = dg._callbacks; + var k = callbacks.length; + while (k --) { + var r = callbacks[k].apply(this, arguments); + if (q === undefined) { + q = r; + } + } + return q; + }; + dg._callbacks = []; + } + dg._callbacks.push(callback); + return dg; + }, + createElementByHtml: function (html){ + var el = document.createElement('div'); + el.innerHTML = html; + el = el.firstChild; + el.parentNode.removeChild(el); + return el; + }, + getViewportElement: function (){ + return (browser.ie && browser.quirks) ? + document.body : document.documentElement; + }, + getClientRect: function (element){ + var bcr; + //trace IE6下在控制编辑器显隐时可能会报错,catch一下 + try{ + bcr = element.getBoundingClientRect(); + }catch(e){ + bcr={left:0,top:0,height:0,width:0} + } + var rect = { + left: Math.round(bcr.left), + top: Math.round(bcr.top), + height: Math.round(bcr.bottom - bcr.top), + width: Math.round(bcr.right - bcr.left) + }; + var doc; + while ((doc = element.ownerDocument) !== document && + (element = domUtils.getWindow(doc).frameElement)) { + bcr = element.getBoundingClientRect(); + rect.left += bcr.left; + rect.top += bcr.top; + } + rect.bottom = rect.top + rect.height; + rect.right = rect.left + rect.width; + return rect; + }, + getViewportRect: function (){ + var viewportEl = uiUtils.getViewportElement(); + var width = (window.innerWidth || viewportEl.clientWidth) | 0; + var height = (window.innerHeight ||viewportEl.clientHeight) | 0; + return { + left: 0, + top: 0, + height: height, + width: width, + bottom: height, + right: width + }; + }, + setViewportOffset: function (element, offset){ + var rect; + var fixedLayer = uiUtils.getFixedLayer(); + if (element.parentNode === fixedLayer) { + element.style.left = offset.left + 'px'; + element.style.top = offset.top + 'px'; + } else { + domUtils.setViewportOffset(element, offset); + } + }, + getEventOffset: function (evt){ + var el = evt.target || evt.srcElement; + var rect = uiUtils.getClientRect(el); + var offset = uiUtils.getViewportOffsetByEvent(evt); + return { + left: offset.left - rect.left, + top: offset.top - rect.top + }; + }, + getViewportOffsetByEvent: function (evt){ + var el = evt.target || evt.srcElement; + var frameEl = domUtils.getWindow(el).frameElement; + var offset = { + left: evt.clientX, + top: evt.clientY + }; + if (frameEl && el.ownerDocument !== document) { + var rect = uiUtils.getClientRect(frameEl); + offset.left += rect.left; + offset.top += rect.top; + } + return offset; + }, + setGlobal: function (id, obj){ + root[id] = obj; + return magic + '["' + id + '"]'; + }, + unsetGlobal: function (id){ + delete root[id]; + }, + copyAttributes: function (tgt, src){ + var attributes = src.attributes; + var k = attributes.length; + while (k --) { + var attrNode = attributes[k]; + if ( attrNode.nodeName != 'style' && attrNode.nodeName != 'class' && (!browser.ie || attrNode.specified) ) { + tgt.setAttribute(attrNode.nodeName, attrNode.nodeValue); + } + } + if (src.className) { + domUtils.addClass(tgt,src.className); + } + if (src.style.cssText) { + tgt.style.cssText += ';' + src.style.cssText; + } + }, + removeStyle: function (el, styleName){ + if (el.style.removeProperty) { + el.style.removeProperty(styleName); + } else if (el.style.removeAttribute) { + el.style.removeAttribute(styleName); + } else throw ''; + }, + contains: function (elA, elB){ + return elA && elB && (elA === elB ? false : ( + elA.contains ? elA.contains(elB) : + elA.compareDocumentPosition(elB) & 16 + )); + }, + startDrag: function (evt, callbacks,doc){ + var doc = doc || document; + var startX = evt.clientX; + var startY = evt.clientY; + function handleMouseMove(evt){ + var x = evt.clientX - startX; + var y = evt.clientY - startY; + callbacks.ondragmove(x, y,evt); + if (evt.stopPropagation) { + evt.stopPropagation(); + } else { + evt.cancelBubble = true; + } + } + if (doc.addEventListener) { + function handleMouseUp(evt){ + doc.removeEventListener('mousemove', handleMouseMove, true); + doc.removeEventListener('mouseup', handleMouseUp, true); + window.removeEventListener('mouseup', handleMouseUp, true); + callbacks.ondragstop(); + } + doc.addEventListener('mousemove', handleMouseMove, true); + doc.addEventListener('mouseup', handleMouseUp, true); + window.addEventListener('mouseup', handleMouseUp, true); + + evt.preventDefault(); + } else { + var elm = evt.srcElement; + elm.setCapture(); + function releaseCaptrue(){ + elm.releaseCapture(); + elm.detachEvent('onmousemove', handleMouseMove); + elm.detachEvent('onmouseup', releaseCaptrue); + elm.detachEvent('onlosecaptrue', releaseCaptrue); + callbacks.ondragstop(); + } + elm.attachEvent('onmousemove', handleMouseMove); + elm.attachEvent('onmouseup', releaseCaptrue); + elm.attachEvent('onlosecaptrue', releaseCaptrue); + evt.returnValue = false; + } + callbacks.ondragstart(); + }, + getFixedLayer: function (){ + var layer = document.getElementById('edui_fixedlayer'); + if (layer == null) { + layer = document.createElement('div'); + layer.id = 'edui_fixedlayer'; + document.body.appendChild(layer); + if (browser.ie && browser.version <= 8) { + layer.style.position = 'absolute'; + bindFixedLayer(); + setTimeout(updateFixedOffset); + } else { + layer.style.position = 'fixed'; + } + layer.style.left = '0'; + layer.style.top = '0'; + layer.style.width = '0'; + layer.style.height = '0'; + } + return layer; + }, + makeUnselectable: function (element){ + if (browser.opera || (browser.ie && browser.version < 9)) { + element.unselectable = 'on'; + if (element.hasChildNodes()) { + for (var i=0; i
    '; + } + }; + utils.inherits(Separator, UIBase); + +})(); + + +// ui/mask.js +///import core +///import uicore +(function (){ + var utils = baidu.editor.utils, + domUtils = baidu.editor.dom.domUtils, + UIBase = baidu.editor.ui.UIBase, + uiUtils = baidu.editor.ui.uiUtils; + + var Mask = baidu.editor.ui.Mask = function (options){ + this.initOptions(options); + this.initUIBase(); + }; + Mask.prototype = { + getHtmlTpl: function (){ + return '
    '; + }, + postRender: function (){ + var me = this; + domUtils.on(window, 'resize', function (){ + setTimeout(function (){ + if (!me.isHidden()) { + me._fill(); + } + }); + }); + }, + show: function (zIndex){ + this._fill(); + this.getDom().style.display = ''; + this.getDom().style.zIndex = zIndex; + }, + hide: function (){ + this.getDom().style.display = 'none'; + this.getDom().style.zIndex = ''; + }, + isHidden: function (){ + return this.getDom().style.display == 'none'; + }, + _onMouseDown: function (){ + return false; + }, + _onClick: function (e, target){ + this.fireEvent('click', e, target); + }, + _fill: function (){ + var el = this.getDom(); + var vpRect = uiUtils.getViewportRect(); + el.style.width = vpRect.width + 'px'; + el.style.height = vpRect.height + 'px'; + } + }; + utils.inherits(Mask, UIBase); +})(); + + +// ui/popup.js +///import core +///import uicore +(function () { + var utils = baidu.editor.utils, + uiUtils = baidu.editor.ui.uiUtils, + domUtils = baidu.editor.dom.domUtils, + UIBase = baidu.editor.ui.UIBase, + Popup = baidu.editor.ui.Popup = function (options){ + this.initOptions(options); + this.initPopup(); + }; + + var allPopups = []; + function closeAllPopup( evt,el ){ + for ( var i = 0; i < allPopups.length; i++ ) { + var pop = allPopups[i]; + if (!pop.isHidden()) { + if (pop.queryAutoHide(el) !== false) { + if(evt&&/scroll/ig.test(evt.type)&&pop.className=="edui-wordpastepop") return; + pop.hide(); + } + } + } + + if(allPopups.length) + pop.editor.fireEvent("afterhidepop"); + } + + Popup.postHide = closeAllPopup; + + var ANCHOR_CLASSES = ['edui-anchor-topleft','edui-anchor-topright', + 'edui-anchor-bottomleft','edui-anchor-bottomright']; + Popup.prototype = { + SHADOW_RADIUS: 5, + content: null, + _hidden: false, + autoRender: true, + canSideLeft: true, + canSideUp: true, + initPopup: function (){ + this.initUIBase(); + allPopups.push( this ); + }, + getHtmlTpl: function (){ + return '
    ' + + '
    ' + + ' ' + + '
    ' + + '
    ' + + this.getContentHtmlTpl() + + '
    ' + + '
    ' + + '
    '; + }, + getContentHtmlTpl: function (){ + if(this.content){ + if (typeof this.content == 'string') { + return this.content; + } + return this.content.renderHtml(); + }else{ + return '' + } + + }, + _UIBase_postRender: UIBase.prototype.postRender, + postRender: function (){ + + + if (this.content instanceof UIBase) { + this.content.postRender(); + } + + //捕获鼠标滚轮 + if( this.captureWheel && !this.captured ) { + + this.captured = true; + + var winHeight = ( document.documentElement.clientHeight || document.body.clientHeight ) - 80, + _height = this.getDom().offsetHeight, + _top = uiUtils.getClientRect( this.combox.getDom() ).top, + content = this.getDom('content'), + ifr = this.getDom('body').getElementsByTagName('iframe'), + me = this; + + ifr.length && ( ifr = ifr[0] ); + + while( _top + _height > winHeight ) { + _height -= 30; + } + content.style.height = _height + 'px'; + //同步更改iframe高度 + ifr && ( ifr.style.height = _height + 'px' ); + + //阻止在combox上的鼠标滚轮事件, 防止用户的正常操作被误解 + if( window.XMLHttpRequest ) { + + domUtils.on( content, ( 'onmousewheel' in document.body ) ? 'mousewheel' :'DOMMouseScroll' , function(e){ + + if(e.preventDefault) { + e.preventDefault(); + } else { + e.returnValue = false; + } + + if( e.wheelDelta ) { + + content.scrollTop -= ( e.wheelDelta / 120 )*60; + + } else { + + content.scrollTop -= ( e.detail / -3 )*60; + + } + + }); + + } else { + + //ie6 + domUtils.on( this.getDom(), 'mousewheel' , function(e){ + + e.returnValue = false; + + me.getDom('content').scrollTop -= ( e.wheelDelta / 120 )*60; + + }); + + } + + } + this.fireEvent('postRenderAfter'); + this.hide(true); + this._UIBase_postRender(); + }, + _doAutoRender: function (){ + if (!this.getDom() && this.autoRender) { + this.render(); + } + }, + mesureSize: function (){ + var box = this.getDom('content'); + return uiUtils.getClientRect(box); + }, + fitSize: function (){ + if( this.captureWheel && this.sized ) { + return this.__size; + } + this.sized = true; + var popBodyEl = this.getDom('body'); + popBodyEl.style.width = ''; + popBodyEl.style.height = ''; + var size = this.mesureSize(); + if( this.captureWheel ) { + popBodyEl.style.width = -(-20 -size.width) + 'px'; + var height = parseInt( this.getDom('content').style.height, 10 ); + !window.isNaN( height ) && ( size.height = height ); + } else { + popBodyEl.style.width = size.width + 'px'; + } + popBodyEl.style.height = size.height + 'px'; + this.__size = size; + this.captureWheel && (this.getDom('content').style.overflow = 'auto'); + return size; + }, + showAnchor: function ( element, hoz ){ + this.showAnchorRect( uiUtils.getClientRect( element ), hoz ); + }, + showAnchorRect: function ( rect, hoz, adj ){ + this._doAutoRender(); + var vpRect = uiUtils.getViewportRect(); + this.getDom().style.visibility = 'hidden'; + this._show(); + var popSize = this.fitSize(); + + var sideLeft, sideUp, left, top; + if (hoz) { + sideLeft = this.canSideLeft && (rect.right + popSize.width > vpRect.right && rect.left > popSize.width); + sideUp = this.canSideUp && (rect.top + popSize.height > vpRect.bottom && rect.bottom > popSize.height); + left = (sideLeft ? rect.left - popSize.width : rect.right); + top = (sideUp ? rect.bottom - popSize.height : rect.top); + } else { + sideLeft = this.canSideLeft && (rect.right + popSize.width > vpRect.right && rect.left > popSize.width); + sideUp = this.canSideUp && (rect.top + popSize.height > vpRect.bottom && rect.bottom > popSize.height); + left = (sideLeft ? rect.right - popSize.width : rect.left); + top = (sideUp ? rect.top - popSize.height : rect.bottom); + } + + var popEl = this.getDom(); + uiUtils.setViewportOffset(popEl, { + left: left, + top: top + }); + domUtils.removeClasses(popEl, ANCHOR_CLASSES); + popEl.className += ' ' + ANCHOR_CLASSES[(sideUp ? 1 : 0) * 2 + (sideLeft ? 1 : 0)]; + if(this.editor){ + popEl.style.zIndex = this.editor.container.style.zIndex * 1 + 10; + baidu.editor.ui.uiUtils.getFixedLayer().style.zIndex = popEl.style.zIndex - 1; + } + this.getDom().style.visibility = 'visible'; + + }, + showAt: function (offset) { + var left = offset.left; + var top = offset.top; + var rect = { + left: left, + top: top, + right: left, + bottom: top, + height: 0, + width: 0 + }; + this.showAnchorRect(rect, false, true); + }, + _show: function (){ + if (this._hidden) { + var box = this.getDom(); + box.style.display = ''; + this._hidden = false; +// if (box.setActive) { +// box.setActive(); +// } + this.fireEvent('show'); + } + }, + isHidden: function (){ + return this._hidden; + }, + show: function (){ + this._doAutoRender(); + this._show(); + }, + hide: function (notNofity){ + if (!this._hidden && this.getDom()) { + this.getDom().style.display = 'none'; + this._hidden = true; + if (!notNofity) { + this.fireEvent('hide'); + } + } + }, + queryAutoHide: function (el){ + return !el || !uiUtils.contains(this.getDom(), el); + } + }; + utils.inherits(Popup, UIBase); + + domUtils.on( document, 'mousedown', function ( evt ) { + var el = evt.target || evt.srcElement; + closeAllPopup( evt,el ); + } ); + domUtils.on( window, 'scroll', function (evt,el) { + closeAllPopup( evt,el ); + } ); + +})(); + + +// ui/colorpicker.js +///import core +///import uicore +(function (){ + var utils = baidu.editor.utils, + UIBase = baidu.editor.ui.UIBase, + ColorPicker = baidu.editor.ui.ColorPicker = function (options){ + this.initOptions(options); + this.noColorText = this.noColorText || this.editor.getLang("clearColor"); + this.initUIBase(); + }; + + ColorPicker.prototype = { + getHtmlTpl: function (){ + return genColorPicker(this.noColorText,this.editor); + }, + _onTableClick: function (evt){ + var tgt = evt.target || evt.srcElement; + var color = tgt.getAttribute('data-color'); + if (color) { + this.fireEvent('pickcolor', color); + } + }, + _onTableOver: function (evt){ + var tgt = evt.target || evt.srcElement; + var color = tgt.getAttribute('data-color'); + if (color) { + this.getDom('preview').style.backgroundColor = color; + } + }, + _onTableOut: function (){ + this.getDom('preview').style.backgroundColor = ''; + }, + _onPickNoColor: function (){ + this.fireEvent('picknocolor'); + } + }; + utils.inherits(ColorPicker, UIBase); + + var COLORS = ( + 'ffffff,000000,eeece1,1f497d,4f81bd,c0504d,9bbb59,8064a2,4bacc6,f79646,' + + 'f2f2f2,7f7f7f,ddd9c3,c6d9f0,dbe5f1,f2dcdb,ebf1dd,e5e0ec,dbeef3,fdeada,' + + 'd8d8d8,595959,c4bd97,8db3e2,b8cce4,e5b9b7,d7e3bc,ccc1d9,b7dde8,fbd5b5,' + + 'bfbfbf,3f3f3f,938953,548dd4,95b3d7,d99694,c3d69b,b2a2c7,92cddc,fac08f,' + + 'a5a5a5,262626,494429,17365d,366092,953734,76923c,5f497a,31859b,e36c09,' + + '7f7f7f,0c0c0c,1d1b10,0f243e,244061,632423,4f6128,3f3151,205867,974806,' + + 'c00000,ff0000,ffc000,ffff00,92d050,00b050,00b0f0,0070c0,002060,7030a0,').split(','); + + function genColorPicker(noColorText,editor){ + var html = '
    ' + + '
    ' + + '
    ' + + '
    '+ noColorText +'
    ' + + '
    ' + + '' + + ''+ + ''; + for (var i=0; i':'')+''; + } + html += i<70 ? '':''; + } + html += '
    '+editor.getLang("themeColor")+'
    '+editor.getLang("standardColor")+'
    '; + return html; + } +})(); + + +// ui/tablepicker.js +///import core +///import uicore +(function (){ + var utils = baidu.editor.utils, + uiUtils = baidu.editor.ui.uiUtils, + UIBase = baidu.editor.ui.UIBase; + + var TablePicker = baidu.editor.ui.TablePicker = function (options){ + this.initOptions(options); + this.initTablePicker(); + }; + TablePicker.prototype = { + defaultNumRows: 10, + defaultNumCols: 10, + maxNumRows: 20, + maxNumCols: 20, + numRows: 10, + numCols: 10, + lengthOfCellSide: 22, + initTablePicker: function (){ + this.initUIBase(); + }, + getHtmlTpl: function (){ + var me = this; + return '
    ' + + '
    ' + + '
    ' + + '' + + '
    ' + + '
    ' + + '
    ' + + '
    ' + + '
    ' + + '
    '; + }, + _UIBase_render: UIBase.prototype.render, + render: function (holder){ + this._UIBase_render(holder); + this.getDom('label').innerHTML = '0'+this.editor.getLang("t_row")+' x 0'+this.editor.getLang("t_col"); + }, + _track: function (numCols, numRows){ + var style = this.getDom('overlay').style; + var sideLen = this.lengthOfCellSide; + style.width = numCols * sideLen + 'px'; + style.height = numRows * sideLen + 'px'; + var label = this.getDom('label'); + label.innerHTML = numCols +this.editor.getLang("t_col")+' x ' + numRows + this.editor.getLang("t_row"); + this.numCols = numCols; + this.numRows = numRows; + }, + _onMouseOver: function (evt, el){ + var rel = evt.relatedTarget || evt.fromElement; + if (!uiUtils.contains(el, rel) && el !== rel) { + this.getDom('label').innerHTML = '0'+this.editor.getLang("t_col")+' x 0'+this.editor.getLang("t_row"); + this.getDom('overlay').style.visibility = ''; + } + }, + _onMouseOut: function (evt, el){ + var rel = evt.relatedTarget || evt.toElement; + if (!uiUtils.contains(el, rel) && el !== rel) { + this.getDom('label').innerHTML = '0'+this.editor.getLang("t_col")+' x 0'+this.editor.getLang("t_row"); + this.getDom('overlay').style.visibility = 'hidden'; + } + }, + _onMouseMove: function (evt, el){ + var style = this.getDom('overlay').style; + var offset = uiUtils.getEventOffset(evt); + var sideLen = this.lengthOfCellSide; + var numCols = Math.ceil(offset.left / sideLen); + var numRows = Math.ceil(offset.top / sideLen); + this._track(numCols, numRows); + }, + _onClick: function (){ + this.fireEvent('picktable', this.numCols, this.numRows); + } + }; + utils.inherits(TablePicker, UIBase); +})(); + + +// ui/stateful.js +(function (){ + var browser = baidu.editor.browser, + domUtils = baidu.editor.dom.domUtils, + uiUtils = baidu.editor.ui.uiUtils; + + var TPL_STATEFUL = 'onmousedown="$$.Stateful_onMouseDown(event, this);"' + + ' onmouseup="$$.Stateful_onMouseUp(event, this);"' + + ( browser.ie ? ( + ' onmouseenter="$$.Stateful_onMouseEnter(event, this);"' + + ' onmouseleave="$$.Stateful_onMouseLeave(event, this);"' ) + : ( + ' onmouseover="$$.Stateful_onMouseOver(event, this);"' + + ' onmouseout="$$.Stateful_onMouseOut(event, this);"' )); + + baidu.editor.ui.Stateful = { + alwalysHoverable: false, + target:null,//目标元素和this指向dom不一样 + Stateful_init: function (){ + this._Stateful_dGetHtmlTpl = this.getHtmlTpl; + this.getHtmlTpl = this.Stateful_getHtmlTpl; + }, + Stateful_getHtmlTpl: function (){ + var tpl = this._Stateful_dGetHtmlTpl(); + // 使用function避免$转义 + return tpl.replace(/stateful/g, function (){ return TPL_STATEFUL; }); + }, + Stateful_onMouseEnter: function (evt, el){ + this.target=el; + if (!this.isDisabled() || this.alwalysHoverable) { + this.addState('hover'); + this.fireEvent('over'); + } + }, + Stateful_onMouseLeave: function (evt, el){ + if (!this.isDisabled() || this.alwalysHoverable) { + this.removeState('hover'); + this.removeState('active'); + this.fireEvent('out'); + } + }, + Stateful_onMouseOver: function (evt, el){ + var rel = evt.relatedTarget; + if (!uiUtils.contains(el, rel) && el !== rel) { + this.Stateful_onMouseEnter(evt, el); + } + }, + Stateful_onMouseOut: function (evt, el){ + var rel = evt.relatedTarget; + if (!uiUtils.contains(el, rel) && el !== rel) { + this.Stateful_onMouseLeave(evt, el); + } + }, + Stateful_onMouseDown: function (evt, el){ + if (!this.isDisabled()) { + this.addState('active'); + } + }, + Stateful_onMouseUp: function (evt, el){ + if (!this.isDisabled()) { + this.removeState('active'); + } + }, + Stateful_postRender: function (){ + if (this.disabled && !this.hasState('disabled')) { + this.addState('disabled'); + } + }, + hasState: function (state){ + return domUtils.hasClass(this.getStateDom(), 'edui-state-' + state); + }, + addState: function (state){ + if (!this.hasState(state)) { + this.getStateDom().className += ' edui-state-' + state; + } + }, + removeState: function (state){ + if (this.hasState(state)) { + domUtils.removeClasses(this.getStateDom(), ['edui-state-' + state]); + } + }, + getStateDom: function (){ + return this.getDom('state'); + }, + isChecked: function (){ + return this.hasState('checked'); + }, + setChecked: function (checked){ + if (!this.isDisabled() && checked) { + this.addState('checked'); + } else { + this.removeState('checked'); + } + }, + isDisabled: function (){ + return this.hasState('disabled'); + }, + setDisabled: function (disabled){ + if (disabled) { + this.removeState('hover'); + this.removeState('checked'); + this.removeState('active'); + this.addState('disabled'); + } else { + this.removeState('disabled'); + } + } + }; +})(); + + +// ui/button.js +///import core +///import uicore +///import ui/stateful.js +(function (){ + var utils = baidu.editor.utils, + UIBase = baidu.editor.ui.UIBase, + Stateful = baidu.editor.ui.Stateful, + Button = baidu.editor.ui.Button = function (options){ + if(options.name){ + var btnName = options.name; + var cssRules = options.cssRules; + if(!options.className){ + options.className = 'edui-for-' + btnName; + } + options.cssRules = '.edui-default .edui-for-'+ btnName +' .edui-icon {'+ cssRules +'}' + } + this.initOptions(options); + this.initButton(); + }; + Button.prototype = { + uiName: 'button', + label: '', + title: '', + showIcon: true, + showText: true, + cssRules:'', + initButton: function (){ + this.initUIBase(); + this.Stateful_init(); + if(this.cssRules){ + utils.cssRule('edui-customize-'+this.name+'-style',this.cssRules); + } + }, + getHtmlTpl: function (){ + return '
    ' + + '
    ' + + '
    ' + + (this.showIcon ? '
    ' : '') + + (this.showText ? '
    ' + this.label + '
    ' : '') + + '
    ' + + '
    ' + + '
    '; + }, + postRender: function (){ + this.Stateful_postRender(); + this.setDisabled(this.disabled) + }, + _onMouseDown: function (e){ + var target = e.target || e.srcElement, + tagName = target && target.tagName && target.tagName.toLowerCase(); + if (tagName == 'input' || tagName == 'object' || tagName == 'object') { + return false; + } + }, + _onClick: function (){ + if (!this.isDisabled()) { + this.fireEvent('click'); + } + }, + setTitle: function(text){ + var label = this.getDom('label'); + label.innerHTML = text; + } + }; + utils.inherits(Button, UIBase); + utils.extend(Button.prototype, Stateful); + +})(); + + +// ui/splitbutton.js +///import core +///import uicore +///import ui/stateful.js +(function (){ + var utils = baidu.editor.utils, + uiUtils = baidu.editor.ui.uiUtils, + domUtils = baidu.editor.dom.domUtils, + UIBase = baidu.editor.ui.UIBase, + Stateful = baidu.editor.ui.Stateful, + SplitButton = baidu.editor.ui.SplitButton = function (options){ + this.initOptions(options); + this.initSplitButton(); + }; + SplitButton.prototype = { + popup: null, + uiName: 'splitbutton', + title: '', + initSplitButton: function (){ + this.initUIBase(); + this.Stateful_init(); + var me = this; + if (this.popup != null) { + var popup = this.popup; + this.popup = null; + this.setPopup(popup); + } + }, + _UIBase_postRender: UIBase.prototype.postRender, + postRender: function (){ + this.Stateful_postRender(); + this._UIBase_postRender(); + }, + setPopup: function (popup){ + if (this.popup === popup) return; + if (this.popup != null) { + this.popup.dispose(); + } + popup.addListener('show', utils.bind(this._onPopupShow, this)); + popup.addListener('hide', utils.bind(this._onPopupHide, this)); + popup.addListener('postrender', utils.bind(function (){ + popup.getDom('body').appendChild( + uiUtils.createElementByHtml('
    ') + ); + popup.getDom().className += ' ' + this.className; + }, this)); + this.popup = popup; + }, + _onPopupShow: function (){ + this.addState('opened'); + }, + _onPopupHide: function (){ + this.removeState('opened'); + }, + getHtmlTpl: function (){ + return '
    ' + + '
    ' + + '
    ' + + '
    ' + + '
    ' + + '
    ' + + '
    ' + + '
    '; + }, + showPopup: function (){ + // 当popup往上弹出的时候,做特殊处理 + var rect = uiUtils.getClientRect(this.getDom()); + rect.top -= this.popup.SHADOW_RADIUS; + rect.height += this.popup.SHADOW_RADIUS; + this.popup.showAnchorRect(rect); + }, + _onArrowClick: function (event, el){ + if (!this.isDisabled()) { + this.showPopup(); + } + }, + _onButtonClick: function (){ + if (!this.isDisabled()) { + this.fireEvent('buttonclick'); + } + } + }; + utils.inherits(SplitButton, UIBase); + utils.extend(SplitButton.prototype, Stateful, true); + +})(); + + +// ui/colorbutton.js +///import core +///import uicore +///import ui/colorpicker.js +///import ui/popup.js +///import ui/splitbutton.js +(function (){ + var utils = baidu.editor.utils, + uiUtils = baidu.editor.ui.uiUtils, + ColorPicker = baidu.editor.ui.ColorPicker, + Popup = baidu.editor.ui.Popup, + SplitButton = baidu.editor.ui.SplitButton, + ColorButton = baidu.editor.ui.ColorButton = function (options){ + this.initOptions(options); + this.initColorButton(); + }; + ColorButton.prototype = { + initColorButton: function (){ + var me = this; + this.popup = new Popup({ + content: new ColorPicker({ + noColorText: me.editor.getLang("clearColor"), + editor:me.editor, + onpickcolor: function (t, color){ + me._onPickColor(color); + }, + onpicknocolor: function (t, color){ + me._onPickNoColor(color); + } + }), + editor:me.editor + }); + this.initSplitButton(); + }, + _SplitButton_postRender: SplitButton.prototype.postRender, + postRender: function (){ + this._SplitButton_postRender(); + this.getDom('button_body').appendChild( + uiUtils.createElementByHtml('
    ') + ); + this.getDom().className += ' edui-colorbutton'; + }, + setColor: function (color){ + this.getDom('colorlump').style.backgroundColor = color; + this.color = color; + }, + _onPickColor: function (color){ + if (this.fireEvent('pickcolor', color) !== false) { + this.setColor(color); + this.popup.hide(); + } + }, + _onPickNoColor: function (color){ + if (this.fireEvent('picknocolor') !== false) { + this.popup.hide(); + } + } + }; + utils.inherits(ColorButton, SplitButton); + +})(); + + +// ui/tablebutton.js +///import core +///import uicore +///import ui/popup.js +///import ui/tablepicker.js +///import ui/splitbutton.js +(function (){ + var utils = baidu.editor.utils, + Popup = baidu.editor.ui.Popup, + TablePicker = baidu.editor.ui.TablePicker, + SplitButton = baidu.editor.ui.SplitButton, + TableButton = baidu.editor.ui.TableButton = function (options){ + this.initOptions(options); + this.initTableButton(); + }; + TableButton.prototype = { + initTableButton: function (){ + var me = this; + this.popup = new Popup({ + content: new TablePicker({ + editor:me.editor, + onpicktable: function (t, numCols, numRows){ + me._onPickTable(numCols, numRows); + } + }), + 'editor':me.editor + }); + this.initSplitButton(); + }, + _onPickTable: function (numCols, numRows){ + if (this.fireEvent('picktable', numCols, numRows) !== false) { + this.popup.hide(); + } + } + }; + utils.inherits(TableButton, SplitButton); + +})(); + + +// ui/autotypesetpicker.js +///import core +///import uicore +(function () { + var utils = baidu.editor.utils, + UIBase = baidu.editor.ui.UIBase; + + var AutoTypeSetPicker = baidu.editor.ui.AutoTypeSetPicker = function (options) { + this.initOptions(options); + this.initAutoTypeSetPicker(); + }; + AutoTypeSetPicker.prototype = { + initAutoTypeSetPicker:function () { + this.initUIBase(); + }, + getHtmlTpl:function () { + var me = this.editor, + opt = me.options.autotypeset, + lang = me.getLang("autoTypeSet"); + + var textAlignInputName = 'textAlignValue' + me.uid, + imageBlockInputName = 'imageBlockLineValue' + me.uid, + symbolConverInputName = 'symbolConverValue' + me.uid; + + return '
    ' + + '
    ' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '
    ' + lang.mergeLine + '' + lang.delLine + '
    ' + lang.removeFormat + '' + lang.indent + '
    ' + lang.alignment + '' + + '' + me.getLang("justifyleft") + + '' + me.getLang("justifycenter") + + '' + me.getLang("justifyright") + + '
    ' + lang.imageFloat + '' + + '' + me.getLang("default") + + '' + me.getLang("justifyleft") + + '' + me.getLang("justifycenter") + + '' + me.getLang("justifyright") + + '
    ' + lang.removeFontsize + '' + lang.removeFontFamily + '
    ' + lang.removeHtml + '
    ' + lang.pasteFilter + '
    ' + lang.symbol + '' + + '' + lang.bdc2sb + + '' + lang.tobdc + '' + + '
    ' + + '
    ' + + '
    '; + + + }, + _UIBase_render:UIBase.prototype.render + }; + utils.inherits(AutoTypeSetPicker, UIBase); +})(); + + +// ui/autotypesetbutton.js +///import core +///import uicore +///import ui/popup.js +///import ui/autotypesetpicker.js +///import ui/splitbutton.js +(function (){ + var utils = baidu.editor.utils, + Popup = baidu.editor.ui.Popup, + AutoTypeSetPicker = baidu.editor.ui.AutoTypeSetPicker, + SplitButton = baidu.editor.ui.SplitButton, + AutoTypeSetButton = baidu.editor.ui.AutoTypeSetButton = function (options){ + this.initOptions(options); + this.initAutoTypeSetButton(); + }; + function getPara(me){ + + var opt = {}, + cont = me.getDom(), + editorId = me.editor.uid, + inputType = null, + attrName = null, + ipts = domUtils.getElementsByTagName(cont,"input"); + for(var i=ipts.length-1,ipt;ipt=ipts[i--];){ + inputType = ipt.getAttribute("type"); + if(inputType=="checkbox"){ + attrName = ipt.getAttribute("name"); + opt[attrName] && delete opt[attrName]; + if(ipt.checked){ + var attrValue = document.getElementById( attrName + "Value" + editorId ); + if(attrValue){ + if(/input/ig.test(attrValue.tagName)){ + opt[attrName] = attrValue.value; + } else { + var iptChilds = attrValue.getElementsByTagName("input"); + for(var j=iptChilds.length-1,iptchild;iptchild=iptChilds[j--];){ + if(iptchild.checked){ + opt[attrName] = iptchild.value; + break; + } + } + } + } else { + opt[attrName] = true; + } + } else { + opt[attrName] = false; + } + } else { + opt[ipt.getAttribute("value")] = ipt.checked; + } + + } + + var selects = domUtils.getElementsByTagName(cont,"select"); + for(var i=0,si;si=selects[i++];){ + var attr = si.getAttribute('name'); + opt[attr] = opt[attr] ? si.value : ''; + } + + utils.extend(me.editor.options.autotypeset,opt); + + me.editor.setPreferences('autotypeset', opt); + } + + AutoTypeSetButton.prototype = { + initAutoTypeSetButton: function (){ + + var me = this; + this.popup = new Popup({ + //传入配置参数 + content: new AutoTypeSetPicker({editor:me.editor}), + 'editor':me.editor, + hide : function(){ + if (!this._hidden && this.getDom()) { + getPara(this); + this.getDom().style.display = 'none'; + this._hidden = true; + this.fireEvent('hide'); + } + } + }); + var flag = 0; + this.popup.addListener('postRenderAfter',function(){ + var popupUI = this; + if(flag)return; + var cont = this.getDom(), + btn = cont.getElementsByTagName('button')[0]; + + btn.onclick = function(){ + getPara(popupUI); + me.editor.execCommand('autotypeset'); + popupUI.hide() + }; + + domUtils.on(cont, 'click', function(e) { + var target = e.target || e.srcElement, + editorId = me.editor.uid; + if (target && target.tagName == 'INPUT') { + + // 点击图片浮动的checkbox,去除对应的radio + if (target.name == 'imageBlockLine' || target.name == 'textAlign' || target.name == 'symbolConver') { + var checked = target.checked, + radioTd = document.getElementById( target.name + 'Value' + editorId), + radios = radioTd.getElementsByTagName('input'), + defalutSelect = { + 'imageBlockLine': 'none', + 'textAlign': 'left', + 'symbolConver': 'tobdc' + }; + + for (var i = 0; i < radios.length; i++) { + if (checked) { + if (radios[i].value == defalutSelect[target.name]) { + radios[i].checked = 'checked'; + } + } else { + radios[i].checked = false; + } + } + } + // 点击radio,选中对应的checkbox + if (target.name == ('imageBlockLineValue' + editorId) || target.name == ('textAlignValue' + editorId) || target.name == 'bdc') { + var checkboxs = target.parentNode.previousSibling.getElementsByTagName('input'); + checkboxs && (checkboxs[0].checked = true); + } + + getPara(popupUI); + } + }); + + flag = 1; + }); + this.initSplitButton(); + } + }; + utils.inherits(AutoTypeSetButton, SplitButton); + +})(); + + +// ui/cellalignpicker.js +///import core +///import uicore +(function () { + var utils = baidu.editor.utils, + Popup = baidu.editor.ui.Popup, + Stateful = baidu.editor.ui.Stateful, + UIBase = baidu.editor.ui.UIBase; + + /** + * 该参数将新增一个参数: selected, 参数类型为一个Object, 形如{ 'align': 'center', 'valign': 'top' }, 表示单元格的初始 + * 对齐状态为: 竖直居上,水平居中; 其中 align的取值为:'center', 'left', 'right'; valign的取值为: 'top', 'middle', 'bottom' + * @update 2013/4/2 hancong03@baidu.com + */ + var CellAlignPicker = baidu.editor.ui.CellAlignPicker = function (options) { + this.initOptions(options); + this.initSelected(); + this.initCellAlignPicker(); + }; + CellAlignPicker.prototype = { + //初始化选中状态, 该方法将根据传递进来的参数获取到应该选中的对齐方式图标的索引 + initSelected: function(){ + + var status = { + + valign: { + top: 0, + middle: 1, + bottom: 2 + }, + align: { + left: 0, + center: 1, + right: 2 + }, + count: 3 + + }, + result = -1; + + if( this.selected ) { + this.selectedIndex = status.valign[ this.selected.valign ] * status.count + status.align[ this.selected.align ]; + } + + }, + initCellAlignPicker:function () { + this.initUIBase(); + this.Stateful_init(); + }, + getHtmlTpl:function () { + + var alignType = [ 'left', 'center', 'right' ], + COUNT = 9, + tempClassName = null, + tempIndex = -1, + tmpl = []; + + + for( var i= 0; i'); + + tmpl.push( '
    ' ); + + tempIndex === 2 && tmpl.push(''); + + } + + return '
    ' + + '
    ' + + '' + + tmpl.join('') + + '
    ' + + '
    ' + + '
    '; + }, + getStateDom: function (){ + return this.target; + }, + _onClick: function (evt){ + var target= evt.target || evt.srcElement; + if(/icon/.test(target.className)){ + this.items[target.parentNode.getAttribute("index")].onclick(); + Popup.postHide(evt); + } + }, + _UIBase_render:UIBase.prototype.render + }; + utils.inherits(CellAlignPicker, UIBase); + utils.extend(CellAlignPicker.prototype, Stateful,true); +})(); + + + + + +// ui/pastepicker.js +///import core +///import uicore +(function () { + var utils = baidu.editor.utils, + Stateful = baidu.editor.ui.Stateful, + uiUtils = baidu.editor.ui.uiUtils, + UIBase = baidu.editor.ui.UIBase; + + var PastePicker = baidu.editor.ui.PastePicker = function (options) { + this.initOptions(options); + this.initPastePicker(); + }; + PastePicker.prototype = { + initPastePicker:function () { + this.initUIBase(); + this.Stateful_init(); + }, + getHtmlTpl:function () { + return '
    ' + + '
    ' + + '
    ' + this.editor.getLang("pasteOpt") + '
    ' + + '
    ' + + '
    ' + + '
    ' + + '
    ' + + '
    ' + + '
    ' + + '
    ' + + '
    ' + + '
    ' + + '
    ' + }, + getStateDom:function () { + return this.target; + }, + format:function (param) { + this.editor.ui._isTransfer = true; + this.editor.fireEvent('pasteTransfer', param); + }, + _onClick:function (cur) { + var node = domUtils.getNextDomNode(cur), + screenHt = uiUtils.getViewportRect().height, + subPop = uiUtils.getClientRect(node); + + if ((subPop.top + subPop.height) > screenHt) + node.style.top = (-subPop.height - cur.offsetHeight) + "px"; + else + node.style.top = ""; + + if (/hidden/ig.test(domUtils.getComputedStyle(node, "visibility"))) { + node.style.visibility = "visible"; + domUtils.addClass(cur, "edui-state-opened"); + } else { + node.style.visibility = "hidden"; + domUtils.removeClasses(cur, "edui-state-opened") + } + }, + _UIBase_render:UIBase.prototype.render + }; + utils.inherits(PastePicker, UIBase); + utils.extend(PastePicker.prototype, Stateful, true); +})(); + + + + + + +// ui/toolbar.js +(function (){ + var utils = baidu.editor.utils, + uiUtils = baidu.editor.ui.uiUtils, + UIBase = baidu.editor.ui.UIBase, + Toolbar = baidu.editor.ui.Toolbar = function (options){ + this.initOptions(options); + this.initToolbar(); + }; + Toolbar.prototype = { + items: null, + initToolbar: function (){ + this.items = this.items || []; + this.initUIBase(); + }, + add: function (item,index){ + if(index === undefined){ + this.items.push(item); + }else{ + this.items.splice(index,0,item) + } + + }, + getHtmlTpl: function (){ + var buff = []; + for (var i=0; i' + + buff.join('') + + '
    '; + }, + postRender:function () { + }, + queryAutoHide:function () { + return true; + } + }; + Menu.prototype = { + items:null, + uiName:'menu', + initMenu:function () { + this.items = this.items || []; + this.initPopup(); + this.initItems(); + }, + initItems:function () { + for (var i = 0; i < this.items.length; i++) { + var item = this.items[i]; + if (item == '-') { + this.items[i] = this.getSeparator(); + } else if (!(item instanceof MenuItem)) { + item.editor = this.editor; + item.theme = this.editor.options.theme; + this.items[i] = this.createItem(item); + } + } + }, + getSeparator:function () { + return menuSeparator; + }, + createItem:function (item) { + //新增一个参数menu, 该参数存储了menuItem所对应的menu引用 + item.menu = this; + return new MenuItem(item); + }, + _Popup_getContentHtmlTpl:Popup.prototype.getContentHtmlTpl, + getContentHtmlTpl:function () { + if (this.items.length == 0) { + return this._Popup_getContentHtmlTpl(); + } + var buff = []; + for (var i = 0; i < this.items.length; i++) { + var item = this.items[i]; + buff[i] = item.renderHtml(); + } + return ('
    ' + buff.join('') + '
    '); + }, + _Popup_postRender:Popup.prototype.postRender, + postRender:function () { + var me = this; + for (var i = 0; i < this.items.length; i++) { + var item = this.items[i]; + item.ownerMenu = this; + item.postRender(); + } + domUtils.on(this.getDom(), 'mouseover', function (evt) { + evt = evt || event; + var rel = evt.relatedTarget || evt.fromElement; + var el = me.getDom(); + if (!uiUtils.contains(el, rel) && el !== rel) { + me.fireEvent('over'); + } + }); + this._Popup_postRender(); + }, + queryAutoHide:function (el) { + if (el) { + if (uiUtils.contains(this.getDom(), el)) { + return false; + } + for (var i = 0; i < this.items.length; i++) { + var item = this.items[i]; + if (item.queryAutoHide(el) === false) { + return false; + } + } + } + }, + clearItems:function () { + for (var i = 0; i < this.items.length; i++) { + var item = this.items[i]; + clearTimeout(item._showingTimer); + clearTimeout(item._closingTimer); + if (item.subMenu) { + item.subMenu.destroy(); + } + } + this.items = []; + }, + destroy:function () { + if (this.getDom()) { + domUtils.remove(this.getDom()); + } + this.clearItems(); + }, + dispose:function () { + this.destroy(); + } + }; + utils.inherits(Menu, Popup); + + /** + * @update 2013/04/03 hancong03 新增一个参数menu, 该参数存储了menuItem所对应的menu引用 + * @type {Function} + */ + var MenuItem = baidu.editor.ui.MenuItem = function (options) { + this.initOptions(options); + this.initUIBase(); + this.Stateful_init(); + if (this.subMenu && !(this.subMenu instanceof Menu)) { + if (options.className && options.className.indexOf("aligntd") != -1) { + var me = this; + + //获取单元格对齐初始状态 + this.subMenu.selected = this.editor.queryCommandValue( 'cellalignment' ); + + this.subMenu = new Popup({ + content:new CellAlignPicker(this.subMenu), + parentMenu:me, + editor:me.editor, + destroy:function () { + if (this.getDom()) { + domUtils.remove(this.getDom()); + } + } + }); + this.subMenu.addListener("postRenderAfter", function () { + domUtils.on(this.getDom(), "mouseover", function () { + me.addState('opened'); + }); + }); + } else { + this.subMenu = new Menu(this.subMenu); + } + } + }; + MenuItem.prototype = { + label:'', + subMenu:null, + ownerMenu:null, + uiName:'menuitem', + alwalysHoverable:true, + getHtmlTpl:function () { + return '
    ' + + '
    ' + + this.renderLabelHtml() + + '
    ' + + '
    '; + }, + postRender:function () { + var me = this; + this.addListener('over', function () { + me.ownerMenu.fireEvent('submenuover', me); + if (me.subMenu) { + me.delayShowSubMenu(); + } + }); + if (this.subMenu) { + this.getDom().className += ' edui-hassubmenu'; + this.subMenu.render(); + this.addListener('out', function () { + me.delayHideSubMenu(); + }); + this.subMenu.addListener('over', function () { + clearTimeout(me._closingTimer); + me._closingTimer = null; + me.addState('opened'); + }); + this.ownerMenu.addListener('hide', function () { + me.hideSubMenu(); + }); + this.ownerMenu.addListener('submenuover', function (t, subMenu) { + if (subMenu !== me) { + me.delayHideSubMenu(); + } + }); + this.subMenu._bakQueryAutoHide = this.subMenu.queryAutoHide; + this.subMenu.queryAutoHide = function (el) { + if (el && uiUtils.contains(me.getDom(), el)) { + return false; + } + return this._bakQueryAutoHide(el); + }; + } + this.getDom().style.tabIndex = '-1'; + uiUtils.makeUnselectable(this.getDom()); + this.Stateful_postRender(); + }, + delayShowSubMenu:function () { + var me = this; + if (!me.isDisabled()) { + me.addState('opened'); + clearTimeout(me._showingTimer); + clearTimeout(me._closingTimer); + me._closingTimer = null; + me._showingTimer = setTimeout(function () { + me.showSubMenu(); + }, 250); + } + }, + delayHideSubMenu:function () { + var me = this; + if (!me.isDisabled()) { + me.removeState('opened'); + clearTimeout(me._showingTimer); + if (!me._closingTimer) { + me._closingTimer = setTimeout(function () { + if (!me.hasState('opened')) { + me.hideSubMenu(); + } + me._closingTimer = null; + }, 400); + } + } + }, + renderLabelHtml:function () { + return '
    ' + + '
    ' + + '
    ' + (this.label || '') + '
    '; + }, + getStateDom:function () { + return this.getDom(); + }, + queryAutoHide:function (el) { + if (this.subMenu && this.hasState('opened')) { + return this.subMenu.queryAutoHide(el); + } + }, + _onClick:function (event, this_) { + if (this.hasState('disabled')) return; + if (this.fireEvent('click', event, this_) !== false) { + if (this.subMenu) { + this.showSubMenu(); + } else { + Popup.postHide(event); + } + } + }, + showSubMenu:function () { + var rect = uiUtils.getClientRect(this.getDom()); + rect.right -= 5; + rect.left += 2; + rect.width -= 7; + rect.top -= 4; + rect.bottom += 4; + rect.height += 8; + this.subMenu.showAnchorRect(rect, true, true); + }, + hideSubMenu:function () { + this.subMenu.hide(); + } + }; + utils.inherits(MenuItem, UIBase); + utils.extend(MenuItem.prototype, Stateful, true); +})(); + + +// ui/combox.js +///import core +///import uicore +///import ui/menu.js +///import ui/splitbutton.js +(function (){ + // todo: menu和item提成通用list + var utils = baidu.editor.utils, + uiUtils = baidu.editor.ui.uiUtils, + Menu = baidu.editor.ui.Menu, + SplitButton = baidu.editor.ui.SplitButton, + Combox = baidu.editor.ui.Combox = function (options){ + this.initOptions(options); + this.initCombox(); + }; + Combox.prototype = { + uiName: 'combox', + onbuttonclick:function () { + this.showPopup(); + }, + initCombox: function (){ + var me = this; + this.items = this.items || []; + for (var i=0; i vpRect.right) { + left = vpRect.right - rect.width; + } + var top = offset.top; + if (top + rect.height > vpRect.bottom) { + top = vpRect.bottom - rect.height; + } + el.style.left = Math.max(left, 0) + 'px'; + el.style.top = Math.max(top, 0) + 'px'; + }, + showAtCenter: function (){ + + var vpRect = uiUtils.getViewportRect(); + + if ( !this.fullscreen ) { + this.getDom().style.display = ''; + var popSize = this.fitSize(); + var titleHeight = this.getDom('titlebar').offsetHeight | 0; + var left = vpRect.width / 2 - popSize.width / 2; + var top = vpRect.height / 2 - (popSize.height - titleHeight) / 2 - titleHeight; + var popEl = this.getDom(); + this.safeSetOffset({ + left: Math.max(left | 0, 0), + top: Math.max(top | 0, 0) + }); + if (!domUtils.hasClass(popEl, 'edui-state-centered')) { + popEl.className += ' edui-state-centered'; + } + } else { + var dialogWrapNode = this.getDom(), + contentNode = this.getDom('content'); + + dialogWrapNode.style.display = "block"; + + var wrapRect = UE.ui.uiUtils.getClientRect( dialogWrapNode ), + contentRect = UE.ui.uiUtils.getClientRect( contentNode ); + dialogWrapNode.style.left = "-100000px"; + + contentNode.style.width = ( vpRect.width - wrapRect.width + contentRect.width ) + "px"; + contentNode.style.height = ( vpRect.height - wrapRect.height + contentRect.height ) + "px"; + + dialogWrapNode.style.width = vpRect.width + "px"; + dialogWrapNode.style.height = vpRect.height + "px"; + dialogWrapNode.style.left = 0; + + //保存环境的overflow值 + this._originalContext = { + html: { + overflowX: document.documentElement.style.overflowX, + overflowY: document.documentElement.style.overflowY + }, + body: { + overflowX: document.body.style.overflowX, + overflowY: document.body.style.overflowY + } + }; + + document.documentElement.style.overflowX = 'hidden'; + document.documentElement.style.overflowY = 'hidden'; + document.body.style.overflowX = 'hidden'; + document.body.style.overflowY = 'hidden'; + + } + + this._show(); + }, + getContentHtml: function (){ + var contentHtml = ''; + if (typeof this.content == 'string') { + contentHtml = this.content; + } else if (this.iframeUrl) { + contentHtml = ''; + } + return contentHtml; + }, + getHtmlTpl: function (){ + var footHtml = ''; + + if (this.buttons) { + var buff = []; + for (var i=0; i' + buff.join('') + '' + + ''; + } + + return '
    ' + + '
    ' + + '
    ' + + '
    ' + + '' + (this.title || '') + '' + + '
    ' + + this.closeButton.renderHtml() + + '
    ' + + '
    '+ ( this.autoReset ? '' : this.getContentHtml()) +'
    ' + + footHtml + + '
    '; + }, + postRender: function (){ + // todo: 保持居中/记住上次关闭位置选项 + if (!this.modalMask.getDom()) { + this.modalMask.render(); + this.modalMask.hide(); + } + if (!this.dragMask.getDom()) { + this.dragMask.render(); + this.dragMask.hide(); + } + var me = this; + this.addListener('show', function (){ + me.modalMask.show(this.getDom().style.zIndex - 2); + }); + this.addListener('hide', function (){ + me.modalMask.hide(); + }); + if (this.buttons) { + for (var i=0; i'; + me.editor.container.style.zIndex && (this.getDom().style.zIndex = me.editor.container.style.zIndex * 1 + 1); + } + } + // canSideUp:false, + // canSideLeft:false + }); + this.onbuttonclick = function(){ + this.showPopup(); + }; + this.initSplitButton(); + } + + }; + + utils.inherits(MultiMenuPop, SplitButton); +})(); + + +// ui/shortcutmenu.js +(function () { + var UI = baidu.editor.ui, + UIBase = UI.UIBase, + uiUtils = UI.uiUtils, + utils = baidu.editor.utils, + domUtils = baidu.editor.dom.domUtils; + + var allMenus = [],//存储所有快捷菜单 + timeID, + isSubMenuShow = false;//是否有子pop显示 + + var ShortCutMenu = UI.ShortCutMenu = function (options) { + this.initOptions (options); + this.initShortCutMenu (); + }; + + ShortCutMenu.postHide = hideAllMenu; + + ShortCutMenu.prototype = { + isHidden : true , + SPACE : 5 , + initShortCutMenu : function () { + this.items = this.items || []; + this.initUIBase (); + this.initItems (); + this.initEvent (); + allMenus.push (this); + } , + initEvent : function () { + var me = this, + doc = me.editor.document; + + domUtils.on (doc , "mousemove" , function (e) { + if (me.isHidden === false) { + //有pop显示就不隐藏快捷菜单 + if (me.getSubMenuMark () || me.eventType == "contextmenu") return; + + + var flag = true, + el = me.getDom (), + wt = el.offsetWidth, + ht = el.offsetHeight, + distanceX = wt / 2 + me.SPACE,//距离中心X标准 + distanceY = ht / 2,//距离中心Y标准 + x = Math.abs (e.screenX - me.left),//离中心距离横坐标 + y = Math.abs (e.screenY - me.top);//离中心距离纵坐标 + + clearTimeout (timeID); + timeID = setTimeout (function () { + if (y > 0 && y < distanceY) { + me.setOpacity (el , "1"); + } else if (y > distanceY && y < distanceY + 70) { + me.setOpacity (el , "0.5"); + flag = false; + } else if (y > distanceY + 70 && y < distanceY + 140) { + me.hide (); + } + + if (flag && x > 0 && x < distanceX) { + me.setOpacity (el , "1") + } else if (x > distanceX && x < distanceX + 70) { + me.setOpacity (el , "0.5") + } else if (x > distanceX + 70 && x < distanceX + 140) { + me.hide (); + } + }); + } + }); + + //ie\ff下 mouseout不准 + if (browser.chrome) { + domUtils.on (doc , "mouseout" , function (e) { + var relatedTgt = e.relatedTarget || e.toElement; + + if (relatedTgt == null || relatedTgt.tagName == "HTML") { + me.hide (); + } + }); + } + + me.editor.addListener ("afterhidepop" , function () { + if (!me.isHidden) { + isSubMenuShow = true; + } + }); + + } , + initItems : function () { + if (utils.isArray (this.items)) { + for (var i = 0, len = this.items.length ; i < len ; i++) { + var item = this.items[i].toLowerCase (); + + if (UI[item]) { + this.items[i] = new UI[item] (this.editor); + this.items[i].className += " edui-shortcutsubmenu "; + } + } + } + } , + setOpacity : function (el , value) { + if (browser.ie && browser.version < 9) { + el.style.filter = "alpha(opacity = " + parseFloat (value) * 100 + ");" + } else { + el.style.opacity = value; + } + } , + getSubMenuMark : function () { + isSubMenuShow = false; + var layerEle = uiUtils.getFixedLayer (); + var list = domUtils.getElementsByTagName (layerEle , "div" , function (node) { + return domUtils.hasClass (node , "edui-shortcutsubmenu edui-popup") + }); + + for (var i = 0, node ; node = list[i++] ;) { + if (node.style.display != "none") { + isSubMenuShow = true; + } + } + return isSubMenuShow; + } , + show : function (e , hasContextmenu) { + var me = this, + offset = {}, + el = this.getDom (), + fixedlayer = uiUtils.getFixedLayer (); + + function setPos (offset) { + if (offset.left < 0) { + offset.left = 0; + } + if (offset.top < 0) { + offset.top = 0; + } + el.style.cssText = "position:absolute;left:" + offset.left + "px;top:" + offset.top + "px;"; + } + + function setPosByCxtMenu (menu) { + if (!menu.tagName) { + menu = menu.getDom (); + } + offset.left = parseInt (menu.style.left); + offset.top = parseInt (menu.style.top); + offset.top -= el.offsetHeight + 15; + setPos (offset); + } + + + me.eventType = e.type; + el.style.cssText = "display:block;left:-9999px"; + + if (e.type == "contextmenu" && hasContextmenu) { + var menu = domUtils.getElementsByTagName (fixedlayer , "div" , "edui-contextmenu")[0]; + if (menu) { + setPosByCxtMenu (menu) + } else { + me.editor.addListener ("aftershowcontextmenu" , function (type , menu) { + setPosByCxtMenu (menu); + }); + } + } else { + offset = uiUtils.getViewportOffsetByEvent (e); + offset.top -= el.offsetHeight + me.SPACE; + offset.left += me.SPACE + 20; + setPos (offset); + me.setOpacity (el , 0.2); + } + + + me.isHidden = false; + me.left = e.screenX + el.offsetWidth / 2 - me.SPACE; + me.top = e.screenY - (el.offsetHeight / 2) - me.SPACE; + + if (me.editor) { + el.style.zIndex = me.editor.container.style.zIndex * 1 + 10; + fixedlayer.style.zIndex = el.style.zIndex - 1; + } + } , + hide : function () { + if (this.getDom ()) { + this.getDom ().style.display = "none"; + } + this.isHidden = true; + } , + postRender : function () { + if (utils.isArray (this.items)) { + for (var i = 0, item ; item = this.items[i++] ;) { + item.postRender (); + } + } + } , + getHtmlTpl : function () { + var buff; + if (utils.isArray (this.items)) { + buff = []; + for (var i = 0 ; i < this.items.length ; i++) { + buff[i] = this.items[i].renderHtml (); + } + buff = buff.join (""); + } else { + buff = this.items; + } + + return '
    ' + + buff + + '
    '; + } + }; + + utils.inherits (ShortCutMenu , UIBase); + + function hideAllMenu (e) { + var tgt = e.target || e.srcElement, + cur = domUtils.findParent (tgt , function (node) { + return domUtils.hasClass (node , "edui-shortcutmenu") || domUtils.hasClass (node , "edui-popup"); + } , true); + + if (!cur) { + for (var i = 0, menu ; menu = allMenus[i++] ;) { + menu.hide () + } + } + } + + domUtils.on (document , 'mousedown' , function (e) { + hideAllMenu (e); + }); + + domUtils.on (window , 'scroll' , function (e) { + hideAllMenu (e); + }); + +}) (); + + +// ui/breakline.js +(function (){ + var utils = baidu.editor.utils, + UIBase = baidu.editor.ui.UIBase, + Breakline = baidu.editor.ui.Breakline = function (options){ + this.initOptions(options); + this.initSeparator(); + }; + Breakline.prototype = { + uiName: 'Breakline', + initSeparator: function (){ + this.initUIBase(); + }, + getHtmlTpl: function (){ + return '
    '; + } + }; + utils.inherits(Breakline, UIBase); + +})(); + + +// ui/message.js +///import core +///import uicore +(function () { + var utils = baidu.editor.utils, + domUtils = baidu.editor.dom.domUtils, + UIBase = baidu.editor.ui.UIBase, + Message = baidu.editor.ui.Message = function (options){ + this.initOptions(options); + this.initMessage(); + }; + + Message.prototype = { + initMessage: function (){ + this.initUIBase(); + }, + getHtmlTpl: function (){ + return '
    ' + + '
    ×
    ' + + '
    ' + + ' ' + + '
    ' + + '
    ' + + '
    ' + + '
    ' + + '
    '; + }, + reset: function(opt){ + var me = this; + if (!opt.keepshow) { + clearTimeout(this.timer); + me.timer = setTimeout(function(){ + me.hide(); + }, opt.timeout || 4000); + } + + opt.content !== undefined && me.setContent(opt.content); + opt.type !== undefined && me.setType(opt.type); + + me.show(); + }, + postRender: function(){ + var me = this, + closer = this.getDom('closer'); + closer && domUtils.on(closer, 'click', function(){ + me.hide(); + }); + }, + setContent: function(content){ + this.getDom('content').innerHTML = content; + }, + setType: function(type){ + type = type || 'info'; + var body = this.getDom('body'); + body.className = body.className.replace(/edui-message-type-[\w-]+/, 'edui-message-type-' + type); + }, + getContent: function(){ + return this.getDom('content').innerHTML; + }, + getType: function(){ + var arr = this.getDom('body').match(/edui-message-type-([\w-]+)/); + return arr ? arr[1]:''; + }, + show: function (){ + this.getDom().style.display = 'block'; + }, + hide: function (){ + var dom = this.getDom(); + if (dom) { + dom.style.display = 'none'; + dom.parentNode && dom.parentNode.removeChild(dom); + } + } + }; + + utils.inherits(Message, UIBase); + +})(); + + +// adapter/editorui.js +//ui跟编辑器的适配層 +//那个按钮弹出是dialog,是下拉筐等都是在这个js中配置 +//自己写的ui也要在这里配置,放到baidu.editor.ui下边,当编辑器实例化的时候会根据ueditor.config中的toolbars找到相应的进行实例化 +(function () { + var utils = baidu.editor.utils; + var editorui = baidu.editor.ui; + var _Dialog = editorui.Dialog; + editorui.buttons = {}; + + editorui.Dialog = function (options) { + var dialog = new _Dialog(options); + dialog.addListener('hide', function () { + + if (dialog.editor) { + var editor = dialog.editor; + try { + if (browser.gecko) { + var y = editor.window.scrollY, + x = editor.window.scrollX; + editor.body.focus(); + editor.window.scrollTo(x, y); + } else { + editor.focus(); + } + + + } catch (ex) { + } + } + }); + return dialog; + }; + + var iframeUrlMap = { + 'anchor':'~/dialogs/anchor/anchor.html', + 'insertimage':'~/dialogs/image/image.html', + 'link':'~/dialogs/link/link.html', + 'spechars':'~/dialogs/spechars/spechars.html', + 'searchreplace':'~/dialogs/searchreplace/searchreplace.html', + 'map':'~/dialogs/map/map.html', + 'gmap':'~/dialogs/gmap/gmap.html', + 'insertvideo':'~/dialogs/video/video.html', + 'help':'~/dialogs/help/help.html', + 'preview':'~/dialogs/preview/preview.html', + 'emotion':'~/dialogs/emotion/emotion.html', + 'wordimage':'~/dialogs/wordimage/wordimage.html', + 'attachment':'~/dialogs/attachment/attachment.html', + 'insertframe':'~/dialogs/insertframe/insertframe.html', + 'edittip':'~/dialogs/table/edittip.html', + 'edittable':'~/dialogs/table/edittable.html', + 'edittd':'~/dialogs/table/edittd.html', + 'webapp':'~/dialogs/webapp/webapp.html', + 'snapscreen':'~/dialogs/snapscreen/snapscreen.html', + 'scrawl':'~/dialogs/scrawl/scrawl.html', + 'music':'~/dialogs/music/music.html', + 'template':'~/dialogs/template/template.html', + 'background':'~/dialogs/background/background.html', + 'charts': '~/dialogs/charts/charts.html' + }; + //为工具栏添加按钮,以下都是统一的按钮触发命令,所以写在一起 + var btnCmds = ['undo', 'redo', 'formatmatch', + 'bold', 'italic', 'underline', 'fontborder', 'touppercase', 'tolowercase', + 'strikethrough', 'subscript', 'superscript', 'source', 'indent', 'outdent', + 'blockquote', 'pasteplain', 'pagebreak', + 'selectall', 'print','horizontal', 'removeformat', 'time', 'date', 'unlink', + 'insertparagraphbeforetable', 'insertrow', 'insertcol', 'mergeright', 'mergedown', 'deleterow', + 'deletecol', 'splittorows', 'splittocols', 'splittocells', 'mergecells', 'deletetable', 'drafts']; + + for (var i = 0, ci; ci = btnCmds[i++];) { + ci = ci.toLowerCase(); + editorui[ci] = function (cmd) { + return function (editor) { + var ui = new editorui.Button({ + className:'edui-for-' + cmd, + title:editor.options.labelMap[cmd] || editor.getLang("labelMap." + cmd) || '', + onclick:function () { + editor.execCommand(cmd); + }, + theme:editor.options.theme, + showText:false + }); + editorui.buttons[cmd] = ui; + editor.addListener('selectionchange', function (type, causeByUi, uiReady) { + var state = editor.queryCommandState(cmd); + if (state == -1) { + ui.setDisabled(true); + ui.setChecked(false); + } else { + if (!uiReady) { + ui.setDisabled(false); + ui.setChecked(state); + } + } + }); + return ui; + }; + }(ci); + } + + //清除文档 + editorui.cleardoc = function (editor) { + var ui = new editorui.Button({ + className:'edui-for-cleardoc', + title:editor.options.labelMap.cleardoc || editor.getLang("labelMap.cleardoc") || '', + theme:editor.options.theme, + onclick:function () { + if (confirm(editor.getLang("confirmClear"))) { + editor.execCommand('cleardoc'); + } + } + }); + editorui.buttons["cleardoc"] = ui; + editor.addListener('selectionchange', function () { + ui.setDisabled(editor.queryCommandState('cleardoc') == -1); + }); + return ui; + }; + + //排版,图片排版,文字方向 + var typeset = { + 'justify':['left', 'right', 'center', 'justify'], + 'imagefloat':['none', 'left', 'center', 'right'], + 'directionality':['ltr', 'rtl'] + }; + + for (var p in typeset) { + + (function (cmd, val) { + for (var i = 0, ci; ci = val[i++];) { + (function (cmd2) { + editorui[cmd.replace('float', '') + cmd2] = function (editor) { + var ui = new editorui.Button({ + className:'edui-for-' + cmd.replace('float', '') + cmd2, + title:editor.options.labelMap[cmd.replace('float', '') + cmd2] || editor.getLang("labelMap." + cmd.replace('float', '') + cmd2) || '', + theme:editor.options.theme, + onclick:function () { + editor.execCommand(cmd, cmd2); + } + }); + editorui.buttons[cmd] = ui; + editor.addListener('selectionchange', function (type, causeByUi, uiReady) { + ui.setDisabled(editor.queryCommandState(cmd) == -1); + ui.setChecked(editor.queryCommandValue(cmd) == cmd2 && !uiReady); + }); + return ui; + }; + })(ci) + } + })(p, typeset[p]) + } + + //字体颜色和背景颜色 + for (var i = 0, ci; ci = ['backcolor', 'forecolor'][i++];) { + editorui[ci] = function (cmd) { + return function (editor) { + var ui = new editorui.ColorButton({ + className:'edui-for-' + cmd, + color:'default', + title:editor.options.labelMap[cmd] || editor.getLang("labelMap." + cmd) || '', + editor:editor, + onpickcolor:function (t, color) { + editor.execCommand(cmd, color); + }, + onpicknocolor:function () { + editor.execCommand(cmd, 'default'); + this.setColor('transparent'); + this.color = 'default'; + }, + onbuttonclick:function () { + editor.execCommand(cmd, this.color); + } + }); + editorui.buttons[cmd] = ui; + editor.addListener('selectionchange', function () { + ui.setDisabled(editor.queryCommandState(cmd) == -1); + }); + return ui; + }; + }(ci); + } + + + var dialogBtns = { + noOk:['searchreplace', 'help', 'spechars', 'webapp','preview'], + ok:['attachment', 'anchor', 'link', 'insertimage', 'map', 'gmap', 'insertframe', 'wordimage', + 'insertvideo', 'insertframe', 'edittip', 'edittable', 'edittd', 'scrawl', 'template', 'music', 'background', 'charts'] + }; + + for (var p in dialogBtns) { + (function (type, vals) { + for (var i = 0, ci; ci = vals[i++];) { + //todo opera下存在问题 + if (browser.opera && ci === "searchreplace") { + continue; + } + (function (cmd) { + editorui[cmd] = function (editor, iframeUrl, title) { + iframeUrl = iframeUrl || (editor.options.iframeUrlMap || {})[cmd] || iframeUrlMap[cmd]; + title = editor.options.labelMap[cmd] || editor.getLang("labelMap." + cmd) || ''; + + var dialog; + //没有iframeUrl不创建dialog + if (iframeUrl) { + dialog = new editorui.Dialog(utils.extend({ + iframeUrl:editor.ui.mapUrl(iframeUrl), + editor:editor, + className:'edui-for-' + cmd, + title:title, + holdScroll: cmd === 'insertimage', + fullscreen: /charts|preview/.test(cmd), + closeDialog:editor.getLang("closeDialog") + }, type == 'ok' ? { + buttons:[ + { + className:'edui-okbutton', + label:editor.getLang("ok"), + editor:editor, + onclick:function () { + dialog.close(true); + } + }, + { + className:'edui-cancelbutton', + label:editor.getLang("cancel"), + editor:editor, + onclick:function () { + dialog.close(false); + } + } + ] + } : {})); + + editor.ui._dialogs[cmd + "Dialog"] = dialog; + } + + var ui = new editorui.Button({ + className:'edui-for-' + cmd, + title:title, + onclick:function () { + if (dialog) { + switch (cmd) { + case "wordimage": + var images = editor.execCommand("wordimage"); + if (images && images.length) { + dialog.render(); + dialog.open(); + } + break; + case "scrawl": + if (editor.queryCommandState("scrawl") != -1) { + dialog.render(); + dialog.open(); + } + + break; + default: + dialog.render(); + dialog.open(); + } + } + }, + theme:editor.options.theme, + disabled:(cmd == 'scrawl' && editor.queryCommandState("scrawl") == -1) || ( cmd == 'charts' ) + }); + editorui.buttons[cmd] = ui; + editor.addListener('selectionchange', function () { + //只存在于右键菜单而无工具栏按钮的ui不需要检测状态 + var unNeedCheckState = {'edittable':1}; + if (cmd in unNeedCheckState)return; + + var state = editor.queryCommandState(cmd); + if (ui.getDom()) { + ui.setDisabled(state == -1); + ui.setChecked(state); + } + + }); + + return ui; + }; + })(ci.toLowerCase()) + } + })(p, dialogBtns[p]); + } + + editorui.snapscreen = function (editor, iframeUrl, title) { + title = editor.options.labelMap['snapscreen'] || editor.getLang("labelMap.snapscreen") || ''; + var ui = new editorui.Button({ + className:'edui-for-snapscreen', + title:title, + onclick:function () { + editor.execCommand("snapscreen"); + }, + theme:editor.options.theme + + }); + editorui.buttons['snapscreen'] = ui; + iframeUrl = iframeUrl || (editor.options.iframeUrlMap || {})["snapscreen"] || iframeUrlMap["snapscreen"]; + if (iframeUrl) { + var dialog = new editorui.Dialog({ + iframeUrl:editor.ui.mapUrl(iframeUrl), + editor:editor, + className:'edui-for-snapscreen', + title:title, + buttons:[ + { + className:'edui-okbutton', + label:editor.getLang("ok"), + editor:editor, + onclick:function () { + dialog.close(true); + } + }, + { + className:'edui-cancelbutton', + label:editor.getLang("cancel"), + editor:editor, + onclick:function () { + dialog.close(false); + } + } + ] + + }); + dialog.render(); + editor.ui._dialogs["snapscreenDialog"] = dialog; + } + editor.addListener('selectionchange', function () { + ui.setDisabled(editor.queryCommandState('snapscreen') == -1); + }); + return ui; + }; + + editorui.insertcode = function (editor, list, title) { + list = editor.options['insertcode'] || []; + title = editor.options.labelMap['insertcode'] || editor.getLang("labelMap.insertcode") || ''; + // if (!list.length) return; + var items = []; + utils.each(list,function(key,val){ + items.push({ + label:key, + value:val, + theme:editor.options.theme, + renderLabelHtml:function () { + return '
    ' + (this.label || '') + '
    '; + } + }); + }); + + var ui = new editorui.Combox({ + editor:editor, + items:items, + onselect:function (t, index) { + editor.execCommand('insertcode', this.items[index].value); + }, + onbuttonclick:function () { + this.showPopup(); + }, + title:title, + initValue:title, + className:'edui-for-insertcode', + indexByValue:function (value) { + if (value) { + for (var i = 0, ci; ci = this.items[i]; i++) { + if (ci.value.indexOf(value) != -1) + return i; + } + } + + return -1; + } + }); + editorui.buttons['insertcode'] = ui; + editor.addListener('selectionchange', function (type, causeByUi, uiReady) { + if (!uiReady) { + var state = editor.queryCommandState('insertcode'); + if (state == -1) { + ui.setDisabled(true); + } else { + ui.setDisabled(false); + var value = editor.queryCommandValue('insertcode'); + if(!value){ + ui.setValue(title); + return; + } + //trace:1871 ie下从源码模式切换回来时,字体会带单引号,而且会有逗号 + value && (value = value.replace(/['"]/g, '').split(',')[0]); + ui.setValue(value); + + } + } + + }); + return ui; + }; + editorui.fontfamily = function (editor, list, title) { + + list = editor.options['fontfamily'] || []; + title = editor.options.labelMap['fontfamily'] || editor.getLang("labelMap.fontfamily") || ''; + if (!list.length) return; + for (var i = 0, ci, items = []; ci = list[i]; i++) { + var langLabel = editor.getLang('fontfamily')[ci.name] || ""; + (function (key, val) { + items.push({ + label:key, + value:val, + theme:editor.options.theme, + renderLabelHtml:function () { + return '
    ' + (this.label || '') + '
    '; + } + }); + })(ci.label || langLabel, ci.val) + } + var ui = new editorui.Combox({ + editor:editor, + items:items, + onselect:function (t, index) { + editor.execCommand('FontFamily', this.items[index].value); + }, + onbuttonclick:function () { + this.showPopup(); + }, + title:title, + initValue:title, + className:'edui-for-fontfamily', + indexByValue:function (value) { + if (value) { + for (var i = 0, ci; ci = this.items[i]; i++) { + if (ci.value.indexOf(value) != -1) + return i; + } + } + + return -1; + } + }); + editorui.buttons['fontfamily'] = ui; + editor.addListener('selectionchange', function (type, causeByUi, uiReady) { + if (!uiReady) { + var state = editor.queryCommandState('FontFamily'); + if (state == -1) { + ui.setDisabled(true); + } else { + ui.setDisabled(false); + var value = editor.queryCommandValue('FontFamily'); + //trace:1871 ie下从源码模式切换回来时,字体会带单引号,而且会有逗号 + value && (value = value.replace(/['"]/g, '').split(',')[0]); + ui.setValue(value); + + } + } + + }); + return ui; + }; + + editorui.fontsize = function (editor, list, title) { + title = editor.options.labelMap['fontsize'] || editor.getLang("labelMap.fontsize") || ''; + list = list || editor.options['fontsize'] || []; + if (!list.length) return; + var items = []; + for (var i = 0; i < list.length; i++) { + var size = list[i] + 'px'; + items.push({ + label:size, + value:size, + theme:editor.options.theme, + renderLabelHtml:function () { + return '
    ' + (this.label || '') + '
    '; + } + }); + } + var ui = new editorui.Combox({ + editor:editor, + items:items, + title:title, + initValue:title, + onselect:function (t, index) { + editor.execCommand('FontSize', this.items[index].value); + }, + onbuttonclick:function () { + this.showPopup(); + }, + className:'edui-for-fontsize' + }); + editorui.buttons['fontsize'] = ui; + editor.addListener('selectionchange', function (type, causeByUi, uiReady) { + if (!uiReady) { + var state = editor.queryCommandState('FontSize'); + if (state == -1) { + ui.setDisabled(true); + } else { + ui.setDisabled(false); + ui.setValue(editor.queryCommandValue('FontSize')); + } + } + + }); + return ui; + }; + + editorui.paragraph = function (editor, list, title) { + title = editor.options.labelMap['paragraph'] || editor.getLang("labelMap.paragraph") || ''; + list = editor.options['paragraph'] || []; + if (utils.isEmptyObject(list)) return; + var items = []; + for (var i in list) { + items.push({ + value:i, + label:list[i] || editor.getLang("paragraph")[i], + theme:editor.options.theme, + renderLabelHtml:function () { + return '
    ' + (this.label || '') + '
    '; + } + }) + } + var ui = new editorui.Combox({ + editor:editor, + items:items, + title:title, + initValue:title, + className:'edui-for-paragraph', + onselect:function (t, index) { + editor.execCommand('Paragraph', this.items[index].value); + }, + onbuttonclick:function () { + this.showPopup(); + } + }); + editorui.buttons['paragraph'] = ui; + editor.addListener('selectionchange', function (type, causeByUi, uiReady) { + if (!uiReady) { + var state = editor.queryCommandState('Paragraph'); + if (state == -1) { + ui.setDisabled(true); + } else { + ui.setDisabled(false); + var value = editor.queryCommandValue('Paragraph'); + var index = ui.indexByValue(value); + if (index != -1) { + ui.setValue(value); + } else { + ui.setValue(ui.initValue); + } + } + } + + }); + return ui; + }; + + + //自定义标题 + editorui.customstyle = function (editor) { + var list = editor.options['customstyle'] || [], + title = editor.options.labelMap['customstyle'] || editor.getLang("labelMap.customstyle") || ''; + if (!list.length)return; + var langCs = editor.getLang('customstyle'); + for (var i = 0, items = [], t; t = list[i++];) { + (function (t) { + var ck = {}; + ck.label = t.label ? t.label : langCs[t.name]; + ck.style = t.style; + ck.className = t.className; + ck.tag = t.tag; + items.push({ + label:ck.label, + value:ck, + theme:editor.options.theme, + renderLabelHtml:function () { + return '
    ' + '<' + ck.tag + ' ' + (ck.className ? ' class="' + ck.className + '"' : "") + + (ck.style ? ' style="' + ck.style + '"' : "") + '>' + ck.label + "<\/" + ck.tag + ">" + + '
    '; + } + }); + })(t); + } + + var ui = new editorui.Combox({ + editor:editor, + items:items, + title:title, + initValue:title, + className:'edui-for-customstyle', + onselect:function (t, index) { + editor.execCommand('customstyle', this.items[index].value); + }, + onbuttonclick:function () { + this.showPopup(); + }, + indexByValue:function (value) { + for (var i = 0, ti; ti = this.items[i++];) { + if (ti.label == value) { + return i - 1 + } + } + return -1; + } + }); + editorui.buttons['customstyle'] = ui; + editor.addListener('selectionchange', function (type, causeByUi, uiReady) { + if (!uiReady) { + var state = editor.queryCommandState('customstyle'); + if (state == -1) { + ui.setDisabled(true); + } else { + ui.setDisabled(false); + var value = editor.queryCommandValue('customstyle'); + var index = ui.indexByValue(value); + if (index != -1) { + ui.setValue(value); + } else { + ui.setValue(ui.initValue); + } + } + } + + }); + return ui; + }; + editorui.inserttable = function (editor, iframeUrl, title) { + title = editor.options.labelMap['inserttable'] || editor.getLang("labelMap.inserttable") || ''; + var ui = new editorui.TableButton({ + editor:editor, + title:title, + className:'edui-for-inserttable', + onpicktable:function (t, numCols, numRows) { + editor.execCommand('InsertTable', {numRows:numRows, numCols:numCols, border:1}); + }, + onbuttonclick:function () { + this.showPopup(); + } + }); + editorui.buttons['inserttable'] = ui; + editor.addListener('selectionchange', function () { + ui.setDisabled(editor.queryCommandState('inserttable') == -1); + }); + return ui; + }; + + editorui.lineheight = function (editor) { + var val = editor.options.lineheight || []; + if (!val.length)return; + for (var i = 0, ci, items = []; ci = val[i++];) { + items.push({ + //todo:写死了 + label:ci, + value:ci, + theme:editor.options.theme, + onclick:function () { + editor.execCommand("lineheight", this.value); + } + }) + } + var ui = new editorui.MenuButton({ + editor:editor, + className:'edui-for-lineheight', + title:editor.options.labelMap['lineheight'] || editor.getLang("labelMap.lineheight") || '', + items:items, + onbuttonclick:function () { + var value = editor.queryCommandValue('LineHeight') || this.value; + editor.execCommand("LineHeight", value); + } + }); + editorui.buttons['lineheight'] = ui; + editor.addListener('selectionchange', function () { + var state = editor.queryCommandState('LineHeight'); + if (state == -1) { + ui.setDisabled(true); + } else { + ui.setDisabled(false); + var value = editor.queryCommandValue('LineHeight'); + value && ui.setValue((value + '').replace(/cm/, '')); + ui.setChecked(state) + } + }); + return ui; + }; + + var rowspacings = ['top', 'bottom']; + for (var r = 0, ri; ri = rowspacings[r++];) { + (function (cmd) { + editorui['rowspacing' + cmd] = function (editor) { + var val = editor.options['rowspacing' + cmd] || []; + if (!val.length) return null; + for (var i = 0, ci, items = []; ci = val[i++];) { + items.push({ + label:ci, + value:ci, + theme:editor.options.theme, + onclick:function () { + editor.execCommand("rowspacing", this.value, cmd); + } + }) + } + var ui = new editorui.MenuButton({ + editor:editor, + className:'edui-for-rowspacing' + cmd, + title:editor.options.labelMap['rowspacing' + cmd] || editor.getLang("labelMap.rowspacing" + cmd) || '', + items:items, + onbuttonclick:function () { + var value = editor.queryCommandValue('rowspacing', cmd) || this.value; + editor.execCommand("rowspacing", value, cmd); + } + }); + editorui.buttons[cmd] = ui; + editor.addListener('selectionchange', function () { + var state = editor.queryCommandState('rowspacing', cmd); + if (state == -1) { + ui.setDisabled(true); + } else { + ui.setDisabled(false); + var value = editor.queryCommandValue('rowspacing', cmd); + value && ui.setValue((value + '').replace(/%/, '')); + ui.setChecked(state) + } + }); + return ui; + } + })(ri) + } + //有序,无序列表 + var lists = ['insertorderedlist', 'insertunorderedlist']; + for (var l = 0, cl; cl = lists[l++];) { + (function (cmd) { + editorui[cmd] = function (editor) { + var vals = editor.options[cmd], + _onMenuClick = function () { + editor.execCommand(cmd, this.value); + }, items = []; + for (var i in vals) { + items.push({ + label:vals[i] || editor.getLang()[cmd][i] || "", + value:i, + theme:editor.options.theme, + onclick:_onMenuClick + }) + } + var ui = new editorui.MenuButton({ + editor:editor, + className:'edui-for-' + cmd, + title:editor.getLang("labelMap." + cmd) || '', + 'items':items, + onbuttonclick:function () { + var value = editor.queryCommandValue(cmd) || this.value; + editor.execCommand(cmd, value); + } + }); + editorui.buttons[cmd] = ui; + editor.addListener('selectionchange', function () { + var state = editor.queryCommandState(cmd); + if (state == -1) { + ui.setDisabled(true); + } else { + ui.setDisabled(false); + var value = editor.queryCommandValue(cmd); + ui.setValue(value); + ui.setChecked(state) + } + }); + return ui; + }; + })(cl) + } + + editorui.fullscreen = function (editor, title) { + title = editor.options.labelMap['fullscreen'] || editor.getLang("labelMap.fullscreen") || ''; + var ui = new editorui.Button({ + className:'edui-for-fullscreen', + title:title, + theme:editor.options.theme, + onclick:function () { + if (editor.ui) { + editor.ui.setFullScreen(!editor.ui.isFullScreen()); + } + this.setChecked(editor.ui.isFullScreen()); + } + }); + editorui.buttons['fullscreen'] = ui; + editor.addListener('selectionchange', function () { + var state = editor.queryCommandState('fullscreen'); + ui.setDisabled(state == -1); + ui.setChecked(editor.ui.isFullScreen()); + }); + return ui; + }; + + // 表情 + editorui["emotion"] = function (editor, iframeUrl) { + var cmd = "emotion"; + var ui = new editorui.MultiMenuPop({ + title:editor.options.labelMap[cmd] || editor.getLang("labelMap." + cmd + "") || '', + editor:editor, + className:'edui-for-' + cmd, + iframeUrl:editor.ui.mapUrl(iframeUrl || (editor.options.iframeUrlMap || {})[cmd] || iframeUrlMap[cmd]) + }); + editorui.buttons[cmd] = ui; + + editor.addListener('selectionchange', function () { + ui.setDisabled(editor.queryCommandState(cmd) == -1) + }); + return ui; + }; + + editorui.autotypeset = function (editor) { + var ui = new editorui.AutoTypeSetButton({ + editor:editor, + title:editor.options.labelMap['autotypeset'] || editor.getLang("labelMap.autotypeset") || '', + className:'edui-for-autotypeset', + onbuttonclick:function () { + editor.execCommand('autotypeset') + } + }); + editorui.buttons['autotypeset'] = ui; + editor.addListener('selectionchange', function () { + ui.setDisabled(editor.queryCommandState('autotypeset') == -1); + }); + return ui; + }; + + /* 简单上传插件 */ + editorui["simpleupload"] = function (editor) { + var name = 'simpleupload', + ui = new editorui.Button({ + className:'edui-for-' + name, + title:editor.options.labelMap[name] || editor.getLang("labelMap." + name) || '', + onclick:function () {}, + theme:editor.options.theme, + showText:false + }); + editorui.buttons[name] = ui; + editor.addListener('ready', function() { + var b = ui.getDom('body'), + iconSpan = b.children[0]; + editor.fireEvent('simpleuploadbtnready', iconSpan); + }); + editor.addListener('selectionchange', function (type, causeByUi, uiReady) { + var state = editor.queryCommandState(name); + if (state == -1) { + ui.setDisabled(true); + ui.setChecked(false); + } else { + if (!uiReady) { + ui.setDisabled(false); + ui.setChecked(state); + } + } + }); + return ui; + }; + +})(); + + +// adapter/editor.js +///import core +///commands 全屏 +///commandsName FullScreen +///commandsTitle 全屏 +(function () { + var utils = baidu.editor.utils, + uiUtils = baidu.editor.ui.uiUtils, + UIBase = baidu.editor.ui.UIBase, + domUtils = baidu.editor.dom.domUtils; + var nodeStack = []; + + function EditorUI(options) { + this.initOptions(options); + this.initEditorUI(); + } + + EditorUI.prototype = { + uiName:'editor', + initEditorUI:function () { + this.editor.ui = this; + this._dialogs = {}; + this.initUIBase(); + this._initToolbars(); + var editor = this.editor, + me = this; + + editor.addListener('ready', function () { + //提供getDialog方法 + editor.getDialog = function (name) { + return editor.ui._dialogs[name + "Dialog"]; + }; + domUtils.on(editor.window, 'scroll', function (evt) { + baidu.editor.ui.Popup.postHide(evt); + }); + //提供编辑器实时宽高(全屏时宽高不变化) + editor.ui._actualFrameWidth = editor.options.initialFrameWidth; + + UE.browser.ie && UE.browser.version === 6 && editor.container.ownerDocument.execCommand("BackgroundImageCache", false, true); + + //display bottom-bar label based on config + if (editor.options.elementPathEnabled) { + editor.ui.getDom('elementpath').innerHTML = '
    ' + editor.getLang("elementPathTip") + ':
    '; + } + if (editor.options.wordCount) { + function countFn() { + setCount(editor,me); + domUtils.un(editor.document, "click", arguments.callee); + } + domUtils.on(editor.document, "click", countFn); + editor.ui.getDom('wordcount').innerHTML = editor.getLang("wordCountTip"); + } + editor.ui._scale(); + if (editor.options.scaleEnabled) { + if (editor.autoHeightEnabled) { + editor.disableAutoHeight(); + } + me.enableScale(); + } else { + me.disableScale(); + } + if (!editor.options.elementPathEnabled && !editor.options.wordCount && !editor.options.scaleEnabled) { + editor.ui.getDom('elementpath').style.display = "none"; + editor.ui.getDom('wordcount').style.display = "none"; + editor.ui.getDom('scale').style.display = "none"; + } + + if (!editor.selection.isFocus())return; + editor.fireEvent('selectionchange', false, true); + + + }); + + editor.addListener('mousedown', function (t, evt) { + var el = evt.target || evt.srcElement; + baidu.editor.ui.Popup.postHide(evt, el); + baidu.editor.ui.ShortCutMenu.postHide(evt); + + }); + editor.addListener("delcells", function () { + if (UE.ui['edittip']) { + new UE.ui['edittip'](editor); + } + editor.getDialog('edittip').open(); + }); + + var pastePop, isPaste = false, timer; + editor.addListener("afterpaste", function () { + if(editor.queryCommandState('pasteplain')) + return; + if(baidu.editor.ui.PastePicker){ + pastePop = new baidu.editor.ui.Popup({ + content:new baidu.editor.ui.PastePicker({editor:editor}), + editor:editor, + className:'edui-wordpastepop' + }); + pastePop.render(); + } + isPaste = true; + }); + + editor.addListener("afterinserthtml", function () { + clearTimeout(timer); + timer = setTimeout(function () { + if (pastePop && (isPaste || editor.ui._isTransfer)) { + if(pastePop.isHidden()){ + var span = domUtils.createElement(editor.document, 'span', { + 'style':"line-height:0px;", + 'innerHTML':'\ufeff' + }), + range = editor.selection.getRange(); + range.insertNode(span); + var tmp= getDomNode(span, 'firstChild', 'previousSibling'); + tmp && pastePop.showAnchor(tmp.nodeType == 3 ? tmp.parentNode : tmp); + domUtils.remove(span); + }else{ + pastePop.show(); + } + delete editor.ui._isTransfer; + isPaste = false; + } + }, 200) + }); + editor.addListener('contextmenu', function (t, evt) { + baidu.editor.ui.Popup.postHide(evt); + }); + editor.addListener('keydown', function (t, evt) { + if (pastePop) pastePop.dispose(evt); + var keyCode = evt.keyCode || evt.which; + if(evt.altKey&&keyCode==90){ + UE.ui.buttons['fullscreen'].onclick(); + } + }); + editor.addListener('wordcount', function (type) { + setCount(this,me); + }); + function setCount(editor,ui) { + editor.setOpt({ + wordCount:true, + maximumWords:10000, + wordCountMsg:editor.options.wordCountMsg || editor.getLang("wordCountMsg"), + wordOverFlowMsg:editor.options.wordOverFlowMsg || editor.getLang("wordOverFlowMsg") + }); + var opt = editor.options, + max = opt.maximumWords, + msg = opt.wordCountMsg , + errMsg = opt.wordOverFlowMsg, + countDom = ui.getDom('wordcount'); + if (!opt.wordCount) { + return; + } + var count = editor.getContentLength(true); + if (count > max) { + countDom.innerHTML = errMsg; + editor.fireEvent("wordcountoverflow"); + } else { + countDom.innerHTML = msg.replace("{#leave}", max - count).replace("{#count}", count); + } + } + + editor.addListener('selectionchange', function () { + if (editor.options.elementPathEnabled) { + me[(editor.queryCommandState('elementpath') == -1 ? 'dis' : 'en') + 'ableElementPath']() + } + if (editor.options.scaleEnabled) { + me[(editor.queryCommandState('scale') == -1 ? 'dis' : 'en') + 'ableScale'](); + + } + }); + var popup = new baidu.editor.ui.Popup({ + editor:editor, + content:'', + className:'edui-bubble', + _onEditButtonClick:function () { + this.hide(); + editor.ui._dialogs.linkDialog.open(); + }, + _onImgEditButtonClick:function (name) { + this.hide(); + editor.ui._dialogs[name] && editor.ui._dialogs[name].open(); + + }, + _onImgSetFloat:function (value) { + this.hide(); + editor.execCommand("imagefloat", value); + + }, + _setIframeAlign:function (value) { + var frame = popup.anchorEl; + var newFrame = frame.cloneNode(true); + switch (value) { + case -2: + newFrame.setAttribute("align", ""); + break; + case -1: + newFrame.setAttribute("align", "left"); + break; + case 1: + newFrame.setAttribute("align", "right"); + break; + } + frame.parentNode.insertBefore(newFrame, frame); + domUtils.remove(frame); + popup.anchorEl = newFrame; + popup.showAnchor(popup.anchorEl); + }, + _updateIframe:function () { + var frame = editor._iframe = popup.anchorEl; + if(domUtils.hasClass(frame, 'ueditor_baidumap')) { + editor.selection.getRange().selectNode(frame).select(); + editor.ui._dialogs.mapDialog.open(); + popup.hide(); + } else { + editor.ui._dialogs.insertframeDialog.open(); + popup.hide(); + } + }, + _onRemoveButtonClick:function (cmdName) { + editor.execCommand(cmdName); + this.hide(); + }, + queryAutoHide:function (el) { + if (el && el.ownerDocument == editor.document) { + if (el.tagName.toLowerCase() == 'img' || domUtils.findParentByTagName(el, 'a', true)) { + return el !== popup.anchorEl; + } + } + return baidu.editor.ui.Popup.prototype.queryAutoHide.call(this, el); + } + }); + popup.render(); + if (editor.options.imagePopup) { + editor.addListener('mouseover', function (t, evt) { + evt = evt || window.event; + var el = evt.target || evt.srcElement; + if (editor.ui._dialogs.insertframeDialog && /iframe/ig.test(el.tagName)) { + var html = popup.formatHtml( + '' + editor.getLang("property") + ': ' + editor.getLang("default") + '  ' + editor.getLang("justifyleft") + '  ' + editor.getLang("justifyright") + '  ' + + ' ' + editor.getLang("modify") + ''); + if (html) { + popup.getDom('content').innerHTML = html; + popup.anchorEl = el; + popup.showAnchor(popup.anchorEl); + } else { + popup.hide(); + } + } + }); + editor.addListener('selectionchange', function (t, causeByUi) { + if (!causeByUi) return; + var html = '', str = "", + img = editor.selection.getRange().getClosedNode(), + dialogs = editor.ui._dialogs; + if (img && img.tagName == 'IMG') { + var dialogName = 'insertimageDialog'; + if (img.className.indexOf("edui-faked-video") != -1 || img.className.indexOf("edui-upload-video") != -1) { + dialogName = "insertvideoDialog" + } + if (img.className.indexOf("edui-faked-webapp") != -1) { + dialogName = "webappDialog" + } + if (img.src.indexOf("http://api.map.baidu.com") != -1) { + dialogName = "mapDialog" + } + if (img.className.indexOf("edui-faked-music") != -1) { + dialogName = "musicDialog" + } + if (img.src.indexOf("http://maps.google.com/maps/api/staticmap") != -1) { + dialogName = "gmapDialog" + } + if (img.getAttribute("anchorname")) { + dialogName = "anchorDialog"; + html = popup.formatHtml( + '' + editor.getLang("property") + ': ' + editor.getLang("modify") + '  ' + + '' + editor.getLang("delete") + ''); + } + if (img.getAttribute("word_img")) { + //todo 放到dialog去做查询 + editor.word_img = [img.getAttribute("word_img")]; + dialogName = "wordimageDialog" + } + if(domUtils.hasClass(img, 'loadingclass') || domUtils.hasClass(img, 'loaderrorclass')) { + dialogName = ""; + } + if (!dialogs[dialogName]) { + return; + } + str = '' + editor.getLang("property") + ': '+ + '' + editor.getLang("default") + '  ' + + '' + editor.getLang("justifyleft") + '  ' + + '' + editor.getLang("justifyright") + '  ' + + '' + editor.getLang("justifycenter") + '  '+ + '' + editor.getLang("modify") + ''; + + !html && (html = popup.formatHtml(str)) + + } + if (editor.ui._dialogs.linkDialog) { + var link = editor.queryCommandValue('link'); + var url; + if (link && (url = (link.getAttribute('_href') || link.getAttribute('href', 2)))) { + var txt = url; + if (url.length > 30) { + txt = url.substring(0, 20) + "..."; + } + if (html) { + html += '
    ' + } + html += popup.formatHtml( + '' + editor.getLang("anthorMsg") + ': ' + txt + '' + + ' ' + editor.getLang("modify") + '' + + ' ' + editor.getLang("clear") + ''); + popup.showAnchor(link); + } + } + + if (html) { + popup.getDom('content').innerHTML = html; + popup.anchorEl = img || link; + popup.showAnchor(popup.anchorEl); + } else { + popup.hide(); + } + }); + } + + }, + _initToolbars:function () { + var editor = this.editor; + var toolbars = this.toolbars || []; + var toolbarUis = []; + for (var i = 0; i < toolbars.length; i++) { + var toolbar = toolbars[i]; + var toolbarUi = new baidu.editor.ui.Toolbar({theme:editor.options.theme}); + for (var j = 0; j < toolbar.length; j++) { + var toolbarItem = toolbar[j]; + var toolbarItemUi = null; + if (typeof toolbarItem == 'string') { + toolbarItem = toolbarItem.toLowerCase(); + if (toolbarItem == '|') { + toolbarItem = 'Separator'; + } + if(toolbarItem == '||'){ + toolbarItem = 'Breakline'; + } + if (baidu.editor.ui[toolbarItem]) { + toolbarItemUi = new baidu.editor.ui[toolbarItem](editor); + } + + //fullscreen这里单独处理一下,放到首行去 + if (toolbarItem == 'fullscreen') { + if (toolbarUis && toolbarUis[0]) { + toolbarUis[0].items.splice(0, 0, toolbarItemUi); + } else { + toolbarItemUi && toolbarUi.items.splice(0, 0, toolbarItemUi); + } + + continue; + + + } + } else { + toolbarItemUi = toolbarItem; + } + if (toolbarItemUi && toolbarItemUi.id) { + + toolbarUi.add(toolbarItemUi); + } + } + toolbarUis[i] = toolbarUi; + } + + //接受外部定制的UI(修复因 utils.each 无法准确的循环出对象的全部元素而导致的自定义 UI 不符合预期的 BUG by HaoChuan9421) + + // utils.each(UE._customizeUI,function(obj,key){ + // var itemUI,index; + // if(obj.id && obj.id != editor.key){ + // return false; + // } + // itemUI = obj.execFn.call(editor,editor,key); + // if(itemUI){ + // index = obj.index; + // if(index === undefined){ + // index = toolbarUi.items.length; + // } + // toolbarUi.add(itemUI,index) + // } + // }); + + + for(var key in UE._customizeUI){ + var obj = UE._customizeUI[key] + var itemUI,index; + if(!obj.id || obj.id == editor.key){ + itemUI = obj.execFn.call(editor,editor,key); + if(itemUI){ + index = obj.index; + if(index === undefined){ + index = toolbarUi.items.length; + } + toolbarUi.add(itemUI,index) + } + } + } + + this.toolbars = toolbarUis; + }, + getHtmlTpl:function () { + return '
    ' + + '
    ' + + (this.toolbars.length ? + '
    ' + + this.renderToolbarBoxHtml() + + '
    ' : '') + + '' + + '
    ' + + '
    ' + + '
    ' + + '
    ' + + //modify wdcount by matao + '
    ' + + '' + + '' + + '' + + '
    ' + + '
    ' + + '
    '; + }, + showWordImageDialog:function () { + this._dialogs['wordimageDialog'].open(); + }, + renderToolbarBoxHtml:function () { + var buff = []; + for (var i = 0; i < this.toolbars.length; i++) { + buff.push(this.toolbars[i].renderHtml()); + } + return buff.join(''); + }, + setFullScreen:function (fullscreen) { + + var editor = this.editor, + container = editor.container.parentNode.parentNode; + if (this._fullscreen != fullscreen) { + this._fullscreen = fullscreen; + this.editor.fireEvent('beforefullscreenchange', fullscreen); + if (baidu.editor.browser.gecko) { + var bk = editor.selection.getRange().createBookmark(); + } + if (fullscreen) { + while (container.tagName != "BODY") { + var position = baidu.editor.dom.domUtils.getComputedStyle(container, "position"); + nodeStack.push(position); + container.style.position = "static"; + container = container.parentNode; + } + this._bakHtmlOverflow = document.documentElement.style.overflow; + this._bakBodyOverflow = document.body.style.overflow; + this._bakAutoHeight = this.editor.autoHeightEnabled; + this._bakScrollTop = Math.max(document.documentElement.scrollTop, document.body.scrollTop); + + this._bakEditorContaninerWidth = editor.iframe.parentNode.offsetWidth; + if (this._bakAutoHeight) { + //当全屏时不能执行自动长高 + editor.autoHeightEnabled = false; + this.editor.disableAutoHeight(); + } + + document.documentElement.style.overflow = 'hidden'; + //修复,滚动条不收起的问题 + + window.scrollTo(0,window.scrollY); + this._bakCssText = this.getDom().style.cssText; + this._bakCssText1 = this.getDom('iframeholder').style.cssText; + editor.iframe.parentNode.style.width = ''; + this._updateFullScreen(); + } else { + while (container.tagName != "BODY") { + container.style.position = nodeStack.shift(); + container = container.parentNode; + } + this.getDom().style.cssText = this._bakCssText; + this.getDom('iframeholder').style.cssText = this._bakCssText1; + if (this._bakAutoHeight) { + editor.autoHeightEnabled = true; + this.editor.enableAutoHeight(); + } + + document.documentElement.style.overflow = this._bakHtmlOverflow; + document.body.style.overflow = this._bakBodyOverflow; + editor.iframe.parentNode.style.width = this._bakEditorContaninerWidth + 'px'; + window.scrollTo(0, this._bakScrollTop); + } + if (browser.gecko && editor.body.contentEditable === 'true') { + var input = document.createElement('input'); + document.body.appendChild(input); + editor.body.contentEditable = false; + setTimeout(function () { + input.focus(); + setTimeout(function () { + editor.body.contentEditable = true; + editor.fireEvent('fullscreenchanged', fullscreen); + editor.selection.getRange().moveToBookmark(bk).select(true); + baidu.editor.dom.domUtils.remove(input); + fullscreen && window.scroll(0, 0); + }, 0) + }, 0) + } + + if(editor.body.contentEditable === 'true'){ + this.editor.fireEvent('fullscreenchanged', fullscreen); + this.triggerLayout(); + } + + } + }, + _updateFullScreen:function () { + if (this._fullscreen) { + var vpRect = uiUtils.getViewportRect(); + this.getDom().style.cssText = 'border:0;position:absolute;left:0;top:' + (this.editor.options.topOffset || 0) + 'px;width:' + vpRect.width + 'px;height:' + vpRect.height + 'px;z-index:' + (this.getDom().style.zIndex * 1 + 100); + uiUtils.setViewportOffset(this.getDom(), { left:0, top:this.editor.options.topOffset || 0 }); + this.editor.setHeight(vpRect.height - this.getDom('toolbarbox').offsetHeight - this.getDom('bottombar').offsetHeight - (this.editor.options.topOffset || 0),true); + //不手动调一下,会导致全屏失效 + if(browser.gecko){ + try{ + window.onresize(); + }catch(e){ + + } + + } + } + }, + _updateElementPath:function () { + var bottom = this.getDom('elementpath'), list; + if (this.elementPathEnabled && (list = this.editor.queryCommandValue('elementpath'))) { + + var buff = []; + for (var i = 0, ci; ci = list[i]; i++) { + buff[i] = this.formatHtml('' + ci + ''); + } + bottom.innerHTML = '
    ' + this.editor.getLang("elementPathTip") + ': ' + buff.join(' > ') + '
    '; + + } else { + bottom.style.display = 'none' + } + }, + disableElementPath:function () { + var bottom = this.getDom('elementpath'); + bottom.innerHTML = ''; + bottom.style.display = 'none'; + this.elementPathEnabled = false; + + }, + enableElementPath:function () { + var bottom = this.getDom('elementpath'); + bottom.style.display = ''; + this.elementPathEnabled = true; + this._updateElementPath(); + }, + _scale:function () { + var doc = document, + editor = this.editor, + editorHolder = editor.container, + editorDocument = editor.document, + toolbarBox = this.getDom("toolbarbox"), + bottombar = this.getDom("bottombar"), + scale = this.getDom("scale"), + scalelayer = this.getDom("scalelayer"); + + var isMouseMove = false, + position = null, + minEditorHeight = 0, + minEditorWidth = editor.options.minFrameWidth, + pageX = 0, + pageY = 0, + scaleWidth = 0, + scaleHeight = 0; + + function down() { + position = domUtils.getXY(editorHolder); + + if (!minEditorHeight) { + minEditorHeight = editor.options.minFrameHeight + toolbarBox.offsetHeight + bottombar.offsetHeight; + } + + scalelayer.style.cssText = "position:absolute;left:0;display:;top:0;background-color:#41ABFF;opacity:0.4;filter: Alpha(opacity=40);width:" + editorHolder.offsetWidth + "px;height:" + + editorHolder.offsetHeight + "px;z-index:" + (editor.options.zIndex + 1); + + domUtils.on(doc, "mousemove", move); + domUtils.on(editorDocument, "mouseup", up); + domUtils.on(doc, "mouseup", up); + } + + var me = this; + //by xuheng 全屏时关掉缩放 + this.editor.addListener('fullscreenchanged', function (e, fullScreen) { + if (fullScreen) { + me.disableScale(); + + } else { + if (me.editor.options.scaleEnabled) { + me.enableScale(); + var tmpNode = me.editor.document.createElement('span'); + me.editor.body.appendChild(tmpNode); + me.editor.body.style.height = Math.max(domUtils.getXY(tmpNode).y, me.editor.iframe.offsetHeight - 20) + 'px'; + domUtils.remove(tmpNode) + } + } + }); + function move(event) { + clearSelection(); + var e = event || window.event; + pageX = e.pageX || (doc.documentElement.scrollLeft + e.clientX); + pageY = e.pageY || (doc.documentElement.scrollTop + e.clientY); + scaleWidth = pageX - position.x; + scaleHeight = pageY - position.y; + + if (scaleWidth >= minEditorWidth) { + isMouseMove = true; + scalelayer.style.width = scaleWidth + 'px'; + } + if (scaleHeight >= minEditorHeight) { + isMouseMove = true; + scalelayer.style.height = scaleHeight + "px"; + } + } + + function up() { + if (isMouseMove) { + isMouseMove = false; + editor.ui._actualFrameWidth = scalelayer.offsetWidth - 2; + editorHolder.style.width = editor.ui._actualFrameWidth + 'px'; + + editor.setHeight(scalelayer.offsetHeight - bottombar.offsetHeight - toolbarBox.offsetHeight - 2,true); + } + if (scalelayer) { + scalelayer.style.display = "none"; + } + clearSelection(); + domUtils.un(doc, "mousemove", move); + domUtils.un(editorDocument, "mouseup", up); + domUtils.un(doc, "mouseup", up); + } + + function clearSelection() { + if (browser.ie) + doc.selection.clear(); + else + window.getSelection().removeAllRanges(); + } + + this.enableScale = function () { + //trace:2868 + if (editor.queryCommandState("source") == 1) return; + scale.style.display = ""; + this.scaleEnabled = true; + domUtils.on(scale, "mousedown", down); + }; + this.disableScale = function () { + scale.style.display = "none"; + this.scaleEnabled = false; + domUtils.un(scale, "mousedown", down); + }; + }, + isFullScreen:function () { + return this._fullscreen; + }, + postRender:function () { + UIBase.prototype.postRender.call(this); + for (var i = 0; i < this.toolbars.length; i++) { + this.toolbars[i].postRender(); + } + var me = this; + var timerId, + domUtils = baidu.editor.dom.domUtils, + updateFullScreenTime = function () { + clearTimeout(timerId); + timerId = setTimeout(function () { + me._updateFullScreen(); + }); + }; + domUtils.on(window, 'resize', updateFullScreenTime); + + me.addListener('destroy', function () { + domUtils.un(window, 'resize', updateFullScreenTime); + clearTimeout(timerId); + }) + }, + showToolbarMsg:function (msg, flag) { + this.getDom('toolbarmsg_label').innerHTML = msg; + this.getDom('toolbarmsg').style.display = ''; + // + if (!flag) { + var w = this.getDom('upload_dialog'); + w.style.display = 'none'; + } + }, + hideToolbarMsg:function () { + this.getDom('toolbarmsg').style.display = 'none'; + }, + mapUrl:function (url) { + return url ? url.replace('~/', this.editor.options.UEDITOR_HOME_URL || '') : '' + }, + triggerLayout:function () { + var dom = this.getDom(); + if (dom.style.zoom == '1') { + dom.style.zoom = '100%'; + } else { + dom.style.zoom = '1'; + } + } + }; + utils.inherits(EditorUI, baidu.editor.ui.UIBase); + + + var instances = {}; + + + UE.ui.Editor = function (options) { + var editor = new UE.Editor(options); + editor.options.editor = editor; + utils.loadFile(document, { + href:editor.options.themePath + editor.options.theme + "/css/ueditor.css", + tag:"link", + type:"text/css", + rel:"stylesheet" + }); + + var oldRender = editor.render; + editor.render = function (holder) { + if (holder.constructor === String) { + editor.key = holder; + instances[holder] = editor; + } + utils.domReady(function () { + editor.langIsReady ? renderUI() : editor.addListener("langReady", renderUI); + function renderUI() { + editor.setOpt({ + labelMap:editor.options.labelMap || editor.getLang('labelMap') + }); + new EditorUI(editor.options); + if (holder) { + if (holder.constructor === String) { + holder = document.getElementById(holder); + } + holder && holder.getAttribute('name') && ( editor.options.textarea = holder.getAttribute('name')); + if (holder && /script|textarea/ig.test(holder.tagName)) { + var newDiv = document.createElement('div'); + holder.parentNode.insertBefore(newDiv, holder); + var cont = holder.value || holder.innerHTML; + editor.options.initialContent = /^[\t\r\n ]*$/.test(cont) ? editor.options.initialContent : + cont.replace(/>[\n\r\t]+([ ]{4})+/g, '>') + .replace(/[\n\r\t]+([ ]{4})+[\n\r\t]+<'); + holder.className && (newDiv.className = holder.className); + holder.style.cssText && (newDiv.style.cssText = holder.style.cssText); + if (/textarea/i.test(holder.tagName)) { + editor.textarea = holder; + editor.textarea.style.display = 'none'; + + + } else { + holder.parentNode.removeChild(holder); + + + } + if(holder.id){ + newDiv.id = holder.id; + domUtils.removeAttributes(holder,'id'); + } + holder = newDiv; + holder.innerHTML = ''; + } + + } + domUtils.addClass(holder, "edui-" + editor.options.theme); + editor.ui.render(holder); + var opt = editor.options; + //给实例添加一个编辑器的容器引用 + editor.container = editor.ui.getDom(); + var parents = domUtils.findParents(holder,true); + var displays = []; + for(var i = 0 ,ci;ci=parents[i];i++){ + displays[i] = ci.style.display; + ci.style.display = 'block' + } + if (opt.initialFrameWidth) { + opt.minFrameWidth = opt.initialFrameWidth; + } else { + opt.minFrameWidth = opt.initialFrameWidth = holder.offsetWidth; + var styleWidth = holder.style.width; + if(/%$/.test(styleWidth)) { + opt.initialFrameWidth = styleWidth; + } + } + if (opt.initialFrameHeight) { + opt.minFrameHeight = opt.initialFrameHeight; + } else { + opt.initialFrameHeight = opt.minFrameHeight = holder.offsetHeight; + } + for(var i = 0 ,ci;ci=parents[i];i++){ + ci.style.display = displays[i] + } + //编辑器最外容器设置了高度,会导致,编辑器不占位 + //todo 先去掉,没有找到原因 + if(holder.style.height){ + holder.style.height = '' + } + editor.container.style.width = opt.initialFrameWidth + (/%$/.test(opt.initialFrameWidth) ? '' : 'px'); + editor.container.style.zIndex = opt.zIndex; + oldRender.call(editor, editor.ui.getDom('iframeholder')); + editor.fireEvent("afteruiready"); + } + }) + }; + return editor; + }; + + + /** + * @file + * @name UE + * @short UE + * @desc UEditor的顶部命名空间 + */ + /** + * @name getEditor + * @since 1.2.4+ + * @grammar UE.getEditor(id,[opt]) => Editor实例 + * @desc 提供一个全局的方法得到编辑器实例 + * + * * ''id'' 放置编辑器的容器id, 如果容器下的编辑器已经存在,就直接返回 + * * ''opt'' 编辑器的可选参数 + * @example + * UE.getEditor('containerId',{onready:function(){//创建一个编辑器实例 + * this.setContent('hello') + * }}); + * UE.getEditor('containerId'); //返回刚创建的实例 + * + */ + UE.getEditor = function (id, opt) { + var editor = instances[id]; + if (!editor) { + editor = instances[id] = new UE.ui.Editor(opt); + editor.render(id); + } + return editor; + }; + + + UE.delEditor = function (id) { + var editor; + if (editor = instances[id]) { + editor.key && editor.destroy(); + delete instances[id] + } + }; + + UE.registerUI = function(uiName,fn,index,editorId){ + utils.each(uiName.split(/\s+/), function (name) { + UE._customizeUI[name] = { + id : editorId, + execFn:fn, + index:index + }; + }) + + } + +})(); + +// adapter/message.js +UE.registerUI('message', function(editor) { + + var editorui = baidu.editor.ui; + var Message = editorui.Message; + var holder; + var _messageItems = []; + var me = editor; + + me.addListener('ready', function(){ + holder = document.getElementById(me.ui.id + '_message_holder'); + updateHolderPos(); + // HaoChuan9421 + // setTimeout(function(){ + // updateHolderPos(); + // }, 500); + }); + + me.addListener('showmessage', function(type, opt){ + opt = utils.isString(opt) ? { + 'content': opt + } : opt; + var message = new Message({ + 'timeout': opt.timeout, + 'type': opt.type, + 'content': opt.content, + 'keepshow': opt.keepshow, + 'editor': me + }), + mid = opt.id || ('msg_' + (+new Date()).toString(36)); + message.render(holder); + _messageItems[mid] = message; + message.reset(opt); + updateHolderPos(); + return mid; + }); + + me.addListener('updatemessage',function(type, id, opt){ + opt = utils.isString(opt) ? { + 'content': opt + } : opt; + var message = _messageItems[id]; + message.render(holder); + message && message.reset(opt); + }); + + me.addListener('hidemessage',function(type, id){ + var message = _messageItems[id]; + message && message.hide(); + }); + + function updateHolderPos(){ + var toolbarbox = me.ui.getDom('toolbarbox'); + if (toolbarbox) { + holder.style.top = toolbarbox.offsetHeight + 3 + 'px'; + } + holder.style.zIndex = Math.max(me.options.zIndex, me.iframe.style.zIndex) + 1; + } + +}); + + +// adapter/autosave.js +UE.registerUI('autosave', function(editor) { + var timer = null,uid = null; + editor.on('afterautosave',function(){ + clearTimeout(timer); + + timer = setTimeout(function(){ + if(uid){ + editor.trigger('hidemessage',uid); + } + uid = editor.trigger('showmessage',{ + content : editor.getLang('autosave.success'), + timeout : 2000 + }); + + },2000) + }) + +}); + + + +})(); diff --git a/admin/public/UEditor/ueditor.all.min.js b/admin/public/UEditor/ueditor.all.min.js new file mode 100644 index 00000000..1f48238c --- /dev/null +++ b/admin/public/UEditor/ueditor.all.min.js @@ -0,0 +1,18 @@ +/*! + * UEditor + * version: ueditor + * build: Wed Dec 26 2018 17:25:05 GMT+0800 (CST) + */ + +!function(){function getListener(a,b,c){var d;return b=b.toLowerCase(),(d=a.__allListeners||c&&(a.__allListeners={}))&&(d[b]||c&&(d[b]=[]))}function getDomNode(a,b,c,d,e,f){var g,h=d&&a[b];for(!h&&(h=a[c]);!h&&(g=(g||a).parentNode);){if("BODY"==g.tagName||f&&!f(g))return null;h=g[c]}return h&&e&&!e(h)?getDomNode(h,b,c,!1,e):h}UEDITOR_CONFIG=window.UEDITOR_CONFIG||{};var baidu=window.baidu||{};window.baidu=baidu,window.UE=baidu.editor=window.UE||{},UE.plugins={},UE.commands={},UE.instants={},UE.I18N={},UE._customizeUI={},UE.version="1.4.3";var dom=UE.dom={},browser=UE.browser=function(){var a=navigator.userAgent.toLowerCase(),b=window.opera,c={ie:/(msie\s|trident.*rv:)([\w.]+)/.test(a),opera:!!b&&b.version,webkit:a.indexOf(" applewebkit/")>-1,mac:a.indexOf("macintosh")>-1,quirks:"BackCompat"==document.compatMode};c.gecko="Gecko"==navigator.product&&!c.webkit&&!c.opera&&!c.ie;var d=0;if(c.ie){var e=a.match(/(?:msie\s([\w.]+))/),f=a.match(/(?:trident.*rv:([\w.]+))/);d=e&&f&&e[1]&&f[1]?Math.max(1*e[1],1*f[1]):e&&e[1]?1*e[1]:f&&f[1]?1*f[1]:0,c.ie11Compat=11==document.documentMode,c.ie9Compat=9==document.documentMode,c.ie8=!!document.documentMode,c.ie8Compat=8==document.documentMode,c.ie7Compat=7==d&&!document.documentMode||7==document.documentMode,c.ie6Compat=d<7||c.quirks,c.ie9above=d>8,c.ie9below=d<9,c.ie11above=d>10,c.ie11below=d<11}if(c.gecko){var g=a.match(/rv:([\d\.]+)/);g&&(g=g[1].split("."),d=1e4*g[0]+100*(g[1]||0)+1*(g[2]||0))}return/chrome\/(\d+\.\d)/i.test(a)&&(c.chrome=+RegExp.$1),/(\d+\.\d)?(?:\.\d)?\s+safari\/?(\d+\.\d+)?/i.test(a)&&!/chrome/i.test(a)&&(c.safari=+(RegExp.$1||RegExp.$2)),c.opera&&(d=parseFloat(b.version())),c.webkit&&(d=parseFloat(a.match(/ applewebkit\/(\d+)/)[1])),c.version=d,c.isCompatible=!c.mobile&&(c.ie&&d>=6||c.gecko&&d>=10801||c.opera&&d>=9.5||c.air&&d>=1||c.webkit&&d>=522||!1),c}(),ie=browser.ie,webkit=browser.webkit,gecko=browser.gecko,opera=browser.opera,utils=UE.utils={each:function(a,b,c){if(null!=a)if(a.length===+a.length){for(var d=0,e=a.length;d=c&&a===b)return d=e,!1}),d},removeItem:function(a,b){for(var c=0,d=a.length;c'](?:(amp|lt|quot|gt|#39|nbsp|#\d+);)?/g,function(a,b){return b?a:{"<":"<","&":"&",'"':""",">":">","'":"'"}[a]}):""},unhtmlForUrl:function(a,b){return a?a.replace(b||/[<">']/g,function(a){return{"<":"<","&":"&",'"':""",">":">","'":"'"}[a]}):""},html:function(a){return a?a.replace(/&((g|l|quo)t|amp|#39|nbsp);/g,function(a){return{"<":"<","&":"&",""":'"',">":">","'":"'"," ":" "}[a]}):""},cssStyleToDomStyle:function(){var a=document.createElement("div").style,b={"float":void 0!=a.cssFloat?"cssFloat":void 0!=a.styleFloat?"styleFloat":"float"};return function(a){return b[a]||(b[a]=a.toLowerCase().replace(/-./g,function(a){return a.charAt(1).toUpperCase()}))}}(),loadFile:function(){function a(a,c){try{for(var d,e=0;d=b[e++];)if(d.doc===a&&d.url==(c.src||c.href))return d}catch(f){return null}}var b=[];return function(c,d,e){var f=a(c,d);if(f)return void(f.ready?e&&e():f.funs.push(e));if(b.push({doc:c,url:d.src||d.href,funs:[e]}),!c.body){var g=[];for(var h in d)"tag"!=h&&g.push(h+'="'+d[h]+'"');return void c.write("<"+d.tag+" "+g.join(" ")+" >")}if(!d.id||!c.getElementById(d.id)){var i=c.createElement(d.tag);delete d.tag;for(var h in d)i.setAttribute(h,d[h]);i.onload=i.onreadystatechange=function(){if(!this.readyState||/loaded|complete/.test(this.readyState)){if(f=a(c,d),f.funs.length>0){f.ready=1;for(var b;b=f.funs.pop();)b()}i.onload=i.onreadystatechange=null}},i.onerror=function(){throw Error("The load "+(d.href||d.src)+" fails,check the url settings of file ueditor.config.js ")},c.getElementsByTagName("head")[0].appendChild(i)}}}(),isEmptyObject:function(a){if(null==a)return!0;if(this.isArray(a)||this.isString(a))return 0===a.length;for(var b in a)if(a.hasOwnProperty(b))return!1;return!0},fixColor:function(a,b){if(/color/i.test(a)&&/rgba?/.test(b)){var c=b.split(",");if(c.length>3)return"";b="#";for(var d,e=0;d=c[e++];)d=parseInt(d.replace(/[^\d]/gi,""),10).toString(16),b+=1==d.length?"0"+d:d;b=b.toUpperCase()}return b},optCss:function(a){function b(a,b){if(!a)return"";var c=a.top,d=a.bottom,e=a.left,f=a.right,g="";if(c&&e&&d&&f)g+=";"+b+":"+(c==d&&d==e&&e==f?c:c==d&&e==f?c+" "+e:e==f?c+" "+e+" "+d:c+" "+f+" "+d+" "+e)+";";else for(var h in a)g+=";"+b+"-"+h+":"+a[h]+";";return g}var c,d;return a=a.replace(/(padding|margin|border)\-([^:]+):([^;]+);?/gi,function(a,b,e,f){if(1==f.split(" ").length)switch(b){case"padding":return!c&&(c={}),c[e]=f,"";case"margin":return!d&&(d={}),d[e]=f,"";case"border":return"initial"==f?"":a}return a}),a+=b(c,"padding")+b(d,"margin"),a.replace(/^[ \n\r\t;]*|[ \n\r\t]*$/,"").replace(/;([ \n\r\t]+)|\1;/g,";").replace(/(&((l|g)t|quot|#39))?;{2,}/g,function(a,b){return b?b+";;":";"})},clone:function(a,b){var c;b=b||{};for(var d in a)a.hasOwnProperty(d)&&(c=a[d],"object"==typeof c?(b[d]=utils.isArray(c)?[]:{},utils.clone(a[d],b[d])):b[d]=c);return b},transUnitToPx:function(a){if(!/(pt|cm)/.test(a))return a;var b;switch(a.replace(/([\d.]+)(\w+)/,function(c,d,e){a=d,b=e}),b){case"cm":a=25*parseFloat(a);break;case"pt":a=Math.round(96*parseFloat(a)/72)}return a+(a?"px":"")},domReady:function(){function a(a){a.isReady=!0;for(var c;c=b.pop();c());}var b=[];return function(c,d){d=d||window;var e=d.document;c&&b.push(c),"complete"===e.readyState?a(e):(e.isReady&&a(e),browser.ie&&11!=browser.version?(!function(){if(!e.isReady){try{e.documentElement.doScroll("left")}catch(b){return void setTimeout(arguments.callee,0)}a(e)}}(),d.attachEvent("onload",function(){a(e)})):(e.addEventListener("DOMContentLoaded",function(){e.removeEventListener("DOMContentLoaded",arguments.callee,!1),a(e)},!1),d.addEventListener("load",function(){a(e)},!1)))}}(),cssRule:browser.ie&&11!=browser.version?function(a,b,c){var d,e;if(void 0===b||b&&b.nodeType&&9==b.nodeType){if(c=b&&b.nodeType&&9==b.nodeType?b:c||document,d=c.indexList||(c.indexList={}),e=d[a],void 0!==e)return c.styleSheets[e].cssText}else{if(c=c||document,d=c.indexList||(c.indexList={}),e=d[a],""===b)return void 0!==e&&(c.styleSheets[e].cssText="",delete d[a],!0);void 0!==e?sheetStyle=c.styleSheets[e]:(sheetStyle=c.createStyleSheet("",e=c.styleSheets.length),d[a]=e),sheetStyle.cssText=b}}:function(a,b,c){var d;return void 0===b||b&&b.nodeType&&9==b.nodeType?(c=b&&b.nodeType&&9==b.nodeType?b:c||document,d=c.getElementById(a),d?d.innerHTML:void 0):(c=c||document,d=c.getElementById(a),""===b?!!d&&(d.parentNode.removeChild(d),!0):void(d?d.innerHTML=b:(d=c.createElement("style"),d.id=a,d.innerHTML=b,c.getElementsByTagName("head")[0].appendChild(d))))},sort:function(a,b){b=b||function(a,b){return a.localeCompare(b)};for(var c=0,d=a.length;c0){var g=a[c];a[c]=a[e],a[e]=g}return a},serializeParam:function(a){var b=[];for(var c in a)if("method"!=c&&"timeout"!=c&&"async"!=c)if("function"!=(typeof a[c]).toLowerCase()&&"object"!=(typeof a[c]).toLowerCase())b.push(encodeURIComponent(c)+"="+encodeURIComponent(a[c]));else if(utils.isArray(a[c]))for(var d=0;d1||b!==a.parentNode){a.style.cssText=b.style.cssText+";"+a.style.cssText,b=b.parentNode;continue}b.style.cssText+=";"+a.style.cssText,"A"==b.tagName&&(b.style.textDecoration="underline")}if("A"!=b.tagName){b===a.parentNode&&domUtils.remove(a,!0);break}}b=b.parentNode}},mergeSibling:function(a,b,c){function d(a,b,c){var d;if((d=c[a])&&!domUtils.isBookmarkNode(d)&&1==d.nodeType&&domUtils.isSameElement(c,d)){for(;d.firstChild;)"firstChild"==b?c.insertBefore(d.lastChild,c.firstChild):c.appendChild(d.firstChild);domUtils.remove(d)}}!b&&d("previousSibling","firstChild",a),!c&&d("nextSibling","lastChild",a)},unSelectable:ie&&browser.ie9below||browser.opera?function(a){a.onselectstart=function(){return!1},a.onclick=a.onkeyup=a.onkeydown=function(){return!1},a.unselectable="on",a.setAttribute("unselectable","on");for(var b,c=0;b=a.all[c++];)switch(b.tagName.toLowerCase()){case"iframe":case"textarea":case"input":case"select":break;default:b.unselectable="on",a.setAttribute("unselectable","on")}}:function(a){a.style.MozUserSelect=a.style.webkitUserSelect=a.style.msUserSelect=a.style.KhtmlUserSelect="none"},removeAttributes:function(a,b){b=utils.isArray(b)?b:utils.trim(b).replace(/[ ]{2,}/g," ").split(" ");for(var c,d=0;c=b[d++];){switch(c=attrFix[c]||c){case"className":a[c]="";break;case"style":a.style.cssText="";var e=a.getAttributeNode("style");!browser.ie&&e&&a.removeAttributeNode(e)}a.removeAttribute(c)}},createElement:function(a,b,c){return domUtils.setAttributes(a.createElement(b),c)},setAttributes:function(a,b){for(var c in b)if(b.hasOwnProperty(c)){var d=b[c];switch(c){case"class":a.className=d;break;case"style":a.style.cssText=a.style.cssText+";"+d;break;case"innerHTML":a[c]=d;break;case"value":a.value=d;break;default:a.setAttribute(attrFix[c]||c,d)}}return a},getComputedStyle:function(a,b){var c="width height top left";if(c.indexOf(b)>-1)return a["offset"+b.replace(/^\w/,function(a){return a.toUpperCase()})]+"px";if(3==a.nodeType&&(a=a.parentNode),browser.ie&&browser.version<9&&"font-size"==b&&!a.style.fontSize&&!dtd.$empty[a.tagName]&&!dtd.$nonChild[a.tagName]){var d=a.ownerDocument.createElement("span");d.style.cssText="padding:0;border:0;font-family:simsun;",d.innerHTML=".",a.appendChild(d);var e=d.offsetHeight;return a.removeChild(d),d=null,e+"px"}try{var f=domUtils.getStyle(a,b)||(window.getComputedStyle?domUtils.getWindow(a).getComputedStyle(a,"").getPropertyValue(b):(a.currentStyle||a.style)[utils.cssStyleToDomStyle(b)])}catch(g){return""}return utils.transUnitToPx(utils.fixColor(b,f))},removeClasses:function(a,b){b=utils.isArray(b)?b:utils.trim(b).replace(/[ ]{2,}/g," ").split(" ");for(var c,d=0,e=a.className;c=b[d++];)e=e.replace(new RegExp("\\b"+c+"\\b"),"");e=utils.trim(e).replace(/[ ]{2,}/g," "),e?a.className=e:domUtils.removeAttributes(a,["class"])},addClass:function(a,b){if(a){b=utils.trim(b).replace(/[ ]{2,}/g," ").split(" ");for(var c,d=0,e=a.className;c=b[d++];)new RegExp("\\b"+c+"\\b").test(e)||(e+=" "+c);a.className=utils.trim(e)}},hasClass:function(a,b){if(utils.isRegExp(b))return b.test(a.className);b=utils.trim(b).replace(/[ ]{2,}/g," ").split(" ");for(var c,d=0,e=a.className;c=b[d++];)if(!new RegExp("\\b"+c+"\\b","i").test(e))return!1;return d-1==b.length},preventDefault:function(a){a.preventDefault?a.preventDefault():a.returnValue=!1},removeStyle:function(a,b){browser.ie?("color"==b&&(b="(^|;)"+b),a.style.cssText=a.style.cssText.replace(new RegExp(b+"[^:]*:[^;]+;?","ig"),"")):a.style.removeProperty?a.style.removeProperty(b):a.style.removeAttribute(utils.cssStyleToDomStyle(b)),a.style.cssText||domUtils.removeAttributes(a,["style"])},getStyle:function(a,b){var c=a.style[utils.cssStyleToDomStyle(b)];return utils.fixColor(b,c)},setStyle:function(a,b,c){a.style[utils.cssStyleToDomStyle(b)]=c,utils.trim(a.style.cssText)||this.removeAttributes(a,"style")},setStyles:function(a,b){for(var c in b)b.hasOwnProperty(c)&&domUtils.setStyle(a,c,b[c])},removeDirtyAttr:function(a){for(var b,c=0,d=a.getElementsByTagName("*");b=d[c++];)b.removeAttribute("_moz_dirty");a.removeAttribute("_moz_dirty")},getChildCount:function(a,b){var c=0,d=a.firstChild;for(b=b||function(){return 1};d;)b(d)&&c++,d=d.nextSibling;return c},isEmptyNode:function(a){return!a.firstChild||0==domUtils.getChildCount(a,function(a){return!domUtils.isBr(a)&&!domUtils.isBookmarkNode(a)&&!domUtils.isWhitespace(a)})},clearSelectedArr:function(a){for(var b;b=a.pop();)domUtils.removeAttributes(b,["class"])},scrollToView:function(a,b,c){var d=function(){var a=b.document,c="CSS1Compat"==a.compatMode;return{width:(c?a.documentElement.clientWidth:a.body.clientWidth)||0,height:(c?a.documentElement.clientHeight:a.body.clientHeight)||0}},e=function(a){if("pageXOffset"in a)return{x:a.pageXOffset||0,y:a.pageYOffset||0};var b=a.document;return{x:b.documentElement.scrollLeft||b.body.scrollLeft||0,y:b.documentElement.scrollTop||b.body.scrollTop||0}},f=d().height,g=f*-1+c;g+=a.offsetHeight||0;var h=domUtils.getXY(a);g+=h.y;var i=e(b).y;(g>i||g0)return 0;for(var c in dtd.$isNotEmpty)if(a.getElementsByTagName(c).length)return 0;return 1}},setViewportOffset:function(a,b){var c=0|parseInt(a.style.left),d=0|parseInt(a.style.top),e=a.getBoundingClientRect(),f=b.left-e.left,g=b.top-e.top;f&&(a.style.left=c+f+"px"),g&&(a.style.top=d+g+"px")},fillNode:function(a,b){var c=browser.ie?a.createTextNode(domUtils.fillChar):a.createElement("br");b.innerHTML="",b.appendChild(c)},moveChild:function(a,b,c){for(;a.firstChild;)c&&b.firstChild?b.insertBefore(a.lastChild,b.firstChild):b.appendChild(a.firstChild)},hasNoAttributes:function(a){return browser.ie?/^<\w+\s*?>/.test(a.outerHTML):0==a.attributes.length},isCustomeNode:function(a){return 1==a.nodeType&&a.getAttribute("_ue_custom_node_")},isTagNode:function(a,b){return 1==a.nodeType&&new RegExp("\\b"+a.tagName+"\\b","i").test(b)},filterNodeList:function(a,b,c){var d=[];if(!utils.isFunction(b)){var e=b;b=function(a){return utils.indexOf(utils.isArray(e)?e:e.split(" "),a.tagName.toLowerCase())!=-1}}return utils.each(a,function(a){b(a)&&d.push(a)}),0==d.length?null:1!=d.length&&c?d:d[0]},isInNodeEndBoundary:function(a,b){var c=a.startContainer;if(3==c.nodeType&&a.startOffset!=c.nodeValue.length)return 0;if(1==c.nodeType&&a.startOffset!=c.childNodes.length)return 0;for(;c!==b;){if(c.nextSibling)return 0;c=c.parentNode}return 1},isBoundaryNode:function(a,b){for(var c;!domUtils.isBody(a);)if(c=a,a=a.parentNode,c!==a[b])return!1;return!0},fillHtml:browser.ie11below?" ":"
    "},fillCharReg=new RegExp(domUtils.fillChar,"g");!function(){function a(a){a.collapsed=a.startContainer&&a.endContainer&&a.startContainer===a.endContainer&&a.startOffset==a.endOffset}function b(a){return!a.collapsed&&1==a.startContainer.nodeType&&a.startContainer===a.endContainer&&a.endOffset-a.startOffset==1}function c(b,c,d,e){return 1==c.nodeType&&(dtd.$empty[c.tagName]||dtd.$nonChild[c.tagName])&&(d=domUtils.getNodeIndex(c)+(b?0:1),c=c.parentNode),b?(e.startContainer=c,e.startOffset=d,e.endContainer||e.collapse(!0)):(e.endContainer=c,e.endOffset=d,e.startContainer||e.collapse(!1)),a(e),e}function d(a,b){var c,d,e=a.startContainer,f=a.endContainer,g=a.startOffset,h=a.endOffset,i=a.document,j=i.createDocumentFragment();if(1==e.nodeType&&(e=e.childNodes[g]||(c=e.appendChild(i.createTextNode("")))),1==f.nodeType&&(f=f.childNodes[h]||(d=f.appendChild(i.createTextNode("")))),e===f&&3==e.nodeType)return j.appendChild(i.createTextNode(e.substringData(g,h-g))),b&&(e.deleteData(g,h-g),a.collapse(!0)),j;for(var k,l,m=j,n=domUtils.findParents(e,!0),o=domUtils.findParents(f,!0),p=0;n[p]==o[p];)p++;for(var q,r=p;q=n[r];r++){for(k=q.nextSibling,q==e?c||(3==a.startContainer.nodeType?(m.appendChild(i.createTextNode(e.nodeValue.slice(g))),b&&e.deleteData(g,e.nodeValue.length-g)):m.appendChild(b?e:e.cloneNode(!0))):(l=q.cloneNode(!1),m.appendChild(l));k&&k!==f&&k!==o[r];)q=k.nextSibling,m.appendChild(b?k:k.cloneNode(!0)),k=q;m=l}m=j,n[p]||(m.appendChild(n[p-1].cloneNode(!1)),m=m.firstChild);for(var s,r=p;s=o[r];r++){if(k=s.previousSibling,s==f?d||3!=a.endContainer.nodeType||(m.appendChild(i.createTextNode(f.substringData(0,h))),b&&f.deleteData(0,h)):(l=s.cloneNode(!1),m.appendChild(l)),r!=p||!n[p])for(;k&&k!==e;)s=k.previousSibling,m.insertBefore(b?k:k.cloneNode(!0),m.firstChild),k=s;m=l}return b&&a.setStartBefore(o[p]?n[p]?o[p]:n[p-1]:o[p-1]).collapse(!0),c&&domUtils.remove(c),d&&domUtils.remove(d),j}function e(a,b){try{if(g&&domUtils.inDoc(g,a))if(g.nodeValue.replace(fillCharReg,"").length)g.nodeValue=g.nodeValue.replace(fillCharReg,"");else{var c=g.parentNode;for(domUtils.remove(g);c&&domUtils.isEmptyInlineElement(c)&&(browser.safari?!(domUtils.getPosition(c,b)&domUtils.POSITION_CONTAINS):!c.contains(b));)g=c.parentNode,domUtils.remove(c),c=g; +}}catch(d){}}function f(a,b){var c;for(a=a[b];a&&domUtils.isFillChar(a);)c=a[b],domUtils.remove(a),a=c}var g,h=0,i=domUtils.fillChar,j=dom.Range=function(a){var b=this;b.startContainer=b.startOffset=b.endContainer=b.endOffset=null,b.document=a,b.collapsed=!0};j.prototype={cloneContents:function(){return this.collapsed?null:d(this,0)},deleteContents:function(){var a;return this.collapsed||d(this,1),browser.webkit&&(a=this.startContainer,3!=a.nodeType||a.nodeValue.length||(this.setStartBefore(a).collapse(!0),domUtils.remove(a))),this},extractContents:function(){return this.collapsed?null:d(this,2)},setStart:function(a,b){return c(!0,a,b,this)},setEnd:function(a,b){return c(!1,a,b,this)},setStartAfter:function(a){return this.setStart(a.parentNode,domUtils.getNodeIndex(a)+1)},setStartBefore:function(a){return this.setStart(a.parentNode,domUtils.getNodeIndex(a))},setEndAfter:function(a){return this.setEnd(a.parentNode,domUtils.getNodeIndex(a)+1)},setEndBefore:function(a){return this.setEnd(a.parentNode,domUtils.getNodeIndex(a))},setStartAtFirst:function(a){return this.setStart(a,0)},setStartAtLast:function(a){return this.setStart(a,3==a.nodeType?a.nodeValue.length:a.childNodes.length)},setEndAtFirst:function(a){return this.setEnd(a,0)},setEndAtLast:function(a){return this.setEnd(a,3==a.nodeType?a.nodeValue.length:a.childNodes.length)},selectNode:function(a){return this.setStartBefore(a).setEndAfter(a)},selectNodeContents:function(a){return this.setStart(a,0).setEndAtLast(a)},cloneRange:function(){var a=this;return new j(a.document).setStart(a.startContainer,a.startOffset).setEnd(a.endContainer,a.endOffset)},collapse:function(a){var b=this;return a?(b.endContainer=b.startContainer,b.endOffset=b.startOffset):(b.startContainer=b.endContainer,b.startOffset=b.endOffset),b.collapsed=!0,b},shrinkBoundary:function(a){function b(a){return 1==a.nodeType&&!domUtils.isBookmarkNode(a)&&!dtd.$empty[a.tagName]&&!dtd.$nonChild[a.tagName]}for(var c,d=this,e=d.collapsed;1==d.startContainer.nodeType&&(c=d.startContainer.childNodes[d.startOffset])&&b(c);)d.setStart(c,0);if(e)return d.collapse(!0);if(!a)for(;1==d.endContainer.nodeType&&d.endOffset>0&&(c=d.endContainer.childNodes[d.endOffset-1])&&b(c);)d.setEnd(c,c.childNodes.length);return d},getCommonAncestor:function(a,c){var d=this,e=d.startContainer,f=d.endContainer;return e===f?a&&b(this)&&(e=e.childNodes[d.startOffset],1==e.nodeType)?e:c&&3==e.nodeType?e.parentNode:e:domUtils.getCommonAncestor(e,f)},trimBoundary:function(a){this.txtToElmBoundary();var b=this.startContainer,c=this.startOffset,d=this.collapsed,e=this.endContainer;if(3==b.nodeType){if(0==c)this.setStartBefore(b);else if(c>=b.nodeValue.length)this.setStartAfter(b);else{var f=domUtils.split(b,c);b===e?this.setEnd(f,this.endOffset-c):b.parentNode===e&&(this.endOffset+=1),this.setStartBefore(f)}if(d)return this.collapse(!0)}return a||(c=this.endOffset,e=this.endContainer,3==e.nodeType&&(0==c?this.setEndBefore(e):(c=c.nodeValue.length&&a["set"+b.replace(/(\w)/,function(a){return a.toUpperCase()})+"After"](c):a["set"+b.replace(/(\w)/,function(a){return a.toUpperCase()})+"Before"](c))}return!a&&this.collapsed||(b(this,"start"),b(this,"end")),this},insertNode:function(a){var b=a,c=1;11==a.nodeType&&(b=a.firstChild,c=a.childNodes.length),this.trimBoundary(!0);var d=this.startContainer,e=this.startOffset,f=d.childNodes[e];return f?d.insertBefore(a,f):d.appendChild(a),b.parentNode===this.endContainer&&(this.endOffset=this.endOffset+c),this.setStartBefore(b)},setCursor:function(a,b){return this.collapse(!a).select(b)},createBookmark:function(a,b){var c,d=this.document.createElement("span");return d.style.cssText="display:none;line-height:0px;",d.appendChild(this.document.createTextNode("‍")),d.id="_baidu_bookmark_start_"+(b?"":h++),this.collapsed||(c=d.cloneNode(!0),c.id="_baidu_bookmark_end_"+(b?"":h++)),this.insertNode(d),c&&this.collapse().insertNode(c).setEndBefore(c),this.setStartAfter(d),{start:a?d.id:d,end:c?a?c.id:c:null,id:a}},moveToBookmark:function(a){var b=a.id?this.document.getElementById(a.start):a.start,c=a.end&&a.id?this.document.getElementById(a.end):a.end;return this.setStartBefore(b),domUtils.remove(b),c?(this.setEndBefore(c),domUtils.remove(c)):this.collapse(!0),this},enlarge:function(a,b){var c,d,e=domUtils.isBody,f=this.document.createTextNode("");if(a){for(d=this.startContainer,1==d.nodeType?d.childNodes[this.startOffset]?c=d=d.childNodes[this.startOffset]:(d.appendChild(f),c=d=f):c=d;;){if(domUtils.isBlockElm(d)){for(d=c;(c=d.previousSibling)&&!domUtils.isBlockElm(c);)d=c;this.setStartBefore(d);break}c=d,d=d.parentNode}for(d=this.endContainer,1==d.nodeType?((c=d.childNodes[this.endOffset])?d.insertBefore(f,c):d.appendChild(f),c=d=f):c=d;;){if(domUtils.isBlockElm(d)){for(d=c;(c=d.nextSibling)&&!domUtils.isBlockElm(c);)d=c;this.setEndAfter(d);break}c=d,d=d.parentNode}f.parentNode===this.endContainer&&this.endOffset--,domUtils.remove(f)}if(!this.collapsed){for(;!(0!=this.startOffset||b&&b(this.startContainer)||e(this.startContainer));)this.setStartBefore(this.startContainer);for(;!(this.endOffset!=(1==this.endContainer.nodeType?this.endContainer.childNodes.length:this.endContainer.nodeValue.length)||b&&b(this.endContainer)||e(this.endContainer));)this.setEndAfter(this.endContainer)}return this},enlargeToBlockElm:function(a){for(;!domUtils.isBlockElm(this.startContainer);)this.setStartBefore(this.startContainer);if(!a)for(;!domUtils.isBlockElm(this.endContainer);)this.setEndAfter(this.endContainer);return this},adjustmentBoundary:function(){if(!this.collapsed){for(;!domUtils.isBody(this.startContainer)&&this.startOffset==this.startContainer[3==this.startContainer.nodeType?"nodeValue":"childNodes"].length&&this.startContainer[3==this.startContainer.nodeType?"nodeValue":"childNodes"].length;)this.setStartAfter(this.startContainer);for(;!domUtils.isBody(this.endContainer)&&!this.endOffset&&this.endContainer[3==this.endContainer.nodeType?"nodeValue":"childNodes"].length;)this.setEndBefore(this.endContainer)}return this},applyInlineStyle:function(a,b,c){if(this.collapsed)return this;this.trimBoundary().enlarge(!1,function(a){return 1==a.nodeType&&domUtils.isBlockElm(a)}).adjustmentBoundary();for(var d,e,f=this.createBookmark(),g=f.end,h=function(a){return 1==a.nodeType?"br"!=a.tagName.toLowerCase():!domUtils.isWhitespace(a)},i=domUtils.getNextDomNode(f.start,!1,h),j=this.cloneRange();i&&domUtils.getPosition(i,g)&domUtils.POSITION_PRECEDING;)if(3==i.nodeType||dtd[a][i.tagName]){for(j.setStartBefore(i),d=i;d&&(3==d.nodeType||dtd[a][d.tagName])&&d!==g;)e=d,d=domUtils.getNextDomNode(d,1==d.nodeType,null,function(b){return dtd[a][b.tagName]});var k,l=j.setEndAfter(e).extractContents();if(c&&c.length>0){var m,n;n=m=c[0].cloneNode(!1);for(var o,p=1;o=c[p++];)m.appendChild(o.cloneNode(!1)),m=m.firstChild;k=m}else k=j.document.createElement(a);b&&domUtils.setAttributes(k,b),k.appendChild(l),j.insertNode(c?n:k);var q;if("span"==a&&b.style&&/text\-decoration/.test(b.style)&&(q=domUtils.findParentByTagName(k,"a",!0))?(domUtils.setAttributes(q,b),domUtils.remove(k,!0),k=q):(domUtils.mergeSibling(k),domUtils.clearEmptySibling(k)),domUtils.mergeChild(k,b),i=domUtils.getNextDomNode(k,!1,h),domUtils.mergeToParent(k),d===g)break}else i=domUtils.getNextDomNode(i,!0,h);return this.moveToBookmark(f)},removeInlineStyle:function(a){if(this.collapsed)return this;a=utils.isArray(a)?a:[a],this.shrinkBoundary().adjustmentBoundary();for(var b=this.startContainer,c=this.endContainer;;){if(1==b.nodeType){if(utils.indexOf(a,b.tagName.toLowerCase())>-1)break;if("body"==b.tagName.toLowerCase()){b=null;break}}b=b.parentNode}for(;;){if(1==c.nodeType){if(utils.indexOf(a,c.tagName.toLowerCase())>-1)break;if("body"==c.tagName.toLowerCase()){c=null;break}}c=c.parentNode}var d,e,f=this.createBookmark();b&&(e=this.cloneRange().setEndBefore(f.start).setStartBefore(b),d=e.extractContents(),e.insertNode(d),domUtils.clearEmptySibling(b,!0),b.parentNode.insertBefore(f.start,b)),c&&(e=this.cloneRange().setStartAfter(f.end).setEndAfter(c),d=e.extractContents(),e.insertNode(d),domUtils.clearEmptySibling(c,!1,!0),c.parentNode.insertBefore(f.end,c.nextSibling));for(var g,h=domUtils.getNextDomNode(f.start,!1,function(a){return 1==a.nodeType});h&&h!==f.end;)g=domUtils.getNextDomNode(h,!0,function(a){return 1==a.nodeType}),utils.indexOf(a,h.tagName.toLowerCase())>-1&&domUtils.remove(h,!0),h=g;return this.moveToBookmark(f)},getClosedNode:function(){var a;if(!this.collapsed){var c=this.cloneRange().adjustmentBoundary().shrinkBoundary();if(b(c)){var d=c.startContainer.childNodes[c.startOffset];d&&1==d.nodeType&&(dtd.$empty[d.tagName]||dtd.$nonChild[d.tagName])&&(a=d)}}return a},select:browser.ie?function(a,b){var c;this.collapsed||this.shrinkBoundary();var d=this.getClosedNode();if(d&&!b){try{c=this.document.body.createControlRange(),c.addElement(d),c.select()}catch(h){}return this}var j,k=this.createBookmark(),l=k.start;if(c=this.document.body.createTextRange(),c.moveToElementText(l),c.moveStart("character",1),this.collapsed){if(!a&&3!=this.startContainer.nodeType){var m=this.document.createTextNode(i),n=this.document.createElement("span");n.appendChild(this.document.createTextNode(i)),l.parentNode.insertBefore(n,l),l.parentNode.insertBefore(m,l),e(this.document,m),g=m,f(n,"previousSibling"),f(l,"nextSibling"),c.moveStart("character",-1),c.collapse(!0)}}else{var o=this.document.body.createTextRange();j=k.end,o.moveToElementText(j),c.setEndPoint("EndToEnd",o)}this.moveToBookmark(k),n&&domUtils.remove(n);try{c.select()}catch(h){}return this}:function(a){function b(a){function b(b,c,d){3==b.nodeType&&b.nodeValue.length0)j=k-1;else{if(!(l<0))return{container:d,offset:c(e)};i=k+1}}if(k==-1){if(h.moveToElementText(d),h.setEndPoint("StartToStart",a),f=h.text.replace(/(\r\n|\r)/g,"\n").length,g=d.childNodes,!f)return e=g[g.length-1],{container:e,offset:e.nodeValue.length};for(var m=g.length;f>0;)f-=g[--m].nodeValue.length;return{container:g[m],offset:-f}}if(h.collapse(l>0),h.setEndPoint(l>0?"StartToStart":"EndToStart",a),f=h.text.replace(/(\r\n|\r)/g,"\n").length,!f)return dtd.$empty[e.tagName]||dtd.$nonChild[e.tagName]?{container:d,offset:c(e)+(l>0?0:1)}:{container:e,offset:l>0?0:e.childNodes.length};for(;f>0;)try{var n=e;e=e[l>0?"previousSibling":"nextSibling"],f-=e.nodeValue.length}catch(o){return{container:d,offset:c(n)}}return{container:e,offset:l>0?-f:e.nodeValue.length+f}}function b(b,c){if(b.item)c.selectNode(b.item(0));else{var d=a(b,!0);c.setStart(d.container,d.offset),0!=b.compareEndPoints("StartToEnd",b)&&(d=a(b,!1),c.setEnd(d.container,d.offset))}return c}function c(a){var b;try{b=a.getNative().createRange()}catch(c){return null}var d=b.item?b.item(0):b.parentElement();return(d.ownerDocument||d)===a.document?b:null}var d=dom.Selection=function(a){var b,d=this;d.document=a,browser.ie9below&&(b=domUtils.getWindow(a).frameElement,domUtils.on(b,"beforedeactivate",function(){d._bakIERange=d.getIERange()}),domUtils.on(b,"activate",function(){try{!c(d)&&d._bakIERange&&d._bakIERange.select()}catch(a){}d._bakIERange=null})),b=a=null};d.prototype={rangeInBody:function(a,b){var c=browser.ie9below||b?a.item?a.item():a.parentElement():a.startContainer;return c===this.document.body||domUtils.inDoc(c,this.document)},getNative:function(){var a=this.document;try{return a?browser.ie9below?a.selection:domUtils.getWindow(a).getSelection():null}catch(b){return null}},getIERange:function(){var a=c(this);return!a&&this._bakIERange?this._bakIERange:a},cache:function(){this.clear(),this._cachedRange=this.getRange(),this._cachedStartElement=this.getStart(),this._cachedStartElementPath=this.getStartElementPath()},getStartElementPath:function(){if(this._cachedStartElementPath)return this._cachedStartElementPath;var a=this.getStart();return a?domUtils.findParents(a,!0,null,!0):[]},clear:function(){this._cachedStartElementPath=this._cachedRange=this._cachedStartElement=null},isFocus:function(){try{if(browser.ie9below){var a=c(this);return!(!a||!this.rangeInBody(a))}return!!this.getNative().rangeCount}catch(b){return!1}},getRange:function(){function a(a){for(var b=c.document.body.firstChild,d=a.collapsed;b&&b.firstChild;)a.setStart(b,0),b=b.firstChild;a.startContainer||a.setStart(c.document.body,0),d&&a.collapse(!0)}var c=this;if(null!=c._cachedRange)return this._cachedRange;var d=new baidu.editor.dom.Range(c.document);if(browser.ie9below){var e=c.getIERange();if(e)try{b(e,d)}catch(f){a(d)}else a(d)}else{var g=c.getNative();if(g&&g.rangeCount){var h=g.getRangeAt(0),i=g.getRangeAt(g.rangeCount-1);d.setStart(h.startContainer,h.startOffset).setEnd(i.endContainer,i.endOffset),d.collapsed&&domUtils.isBody(d.startContainer)&&!d.startOffset&&a(d)}else{if(this._bakRange&&domUtils.inDoc(this._bakRange.startContainer,this.document))return this._bakRange;a(d)}}return this._bakRange=d},getStart:function(){if(this._cachedStartElement)return this._cachedStartElement;var a,b,c,d,e=browser.ie9below?this.getIERange():this.getRange();if(browser.ie9below){if(!e)return this.document.body.firstChild;if(e.item)return e.item(0);for(a=e.duplicate(),a.text.length>0&&a.moveStart("character",1),a.collapse(1),b=a.parentElement(),d=c=e.parentElement();c=c.parentNode;)if(c==b){b=d;break}}else if(e.shrinkBoundary(),b=e.startContainer,1==b.nodeType&&b.hasChildNodes()&&(b=b.childNodes[Math.min(b.childNodes.length-1,e.startOffset)]),3==b.nodeType)return b.parentNode;return b},getText:function(){var a,b;return this.isFocus()&&(a=this.getNative())?(b=browser.ie9below?a.createRange():a.getRangeAt(0),browser.ie9below?b.text:b.toString()):""},clearRange:function(){this.getNative()[browser.ie9below?"empty":"removeAllRanges"]()}}}(),function(){function a(a,b){var c;if(b.textarea)if(utils.isString(b.textarea)){for(var d,e=0,f=domUtils.getElementsByTagName(a,"textarea");d=f[e++];)if(d.id=="ueditor_textarea_"+b.options.textarea){c=d;break}}else c=b.textarea;c||(a.appendChild(c=domUtils.createElement(document,"textarea",{name:b.options.textarea,id:"ueditor_textarea_"+b.options.textarea,style:"display:none"})),b.textarea=c),!c.getAttribute("name")&&c.setAttribute("name",b.options.textarea),c.value=b.hasContents()?b.options.allHtmlEnabled?b.getAllHtml():b.getContent(null,null,!0):""}function b(a){for(var b in a)return b}function c(a){a.langIsReady=!0,a.fireEvent("langReady")}var d,e=0,f=UE.Editor=function(a){var d=this;d.uid=e++,EventBase.call(d),d.commands={},d.options=utils.extend(utils.clone(a||{}),UEDITOR_CONFIG,!0),d.shortcutkeys={},d.inputRules=[],d.outputRules=[],d.setOpt(f.defaultOptions(d)),d.loadServerConfig(),utils.isEmptyObject(UE.I18N)?utils.loadFile(document,{src:d.options.langPath+d.options.lang+"/"+d.options.lang+".js",tag:"script",type:"text/javascript",defer:"defer"},function(){UE.plugin.load(d),c(d)}):(d.options.lang=b(UE.I18N),UE.plugin.load(d),c(d)),UE.instants["ueditorInstant"+d.uid]=d};f.prototype={registerCommand:function(a,b){this.commands[a]=b},ready:function(a){var b=this;a&&(b.isReady?a.apply(b):b.addListener("ready",a))},setOpt:function(a,b){var c={};utils.isString(a)?c[a]=b:c=a,utils.extend(this.options,c,!0)},getOpt:function(a){return this.options[a]},destroy:function(){var a=this;a.fireEvent("destroy");var b=a.container.parentNode,c=a.textarea;c?c.style.display="":(c=document.createElement("textarea"),b.parentNode.insertBefore(c,b)),c.style.width=a.iframe.offsetWidth+"px",c.style.height=a.iframe.offsetHeight+"px",c.value=a.getContent(),c.id=a.key,b.innerHTML="",domUtils.remove(b);var d=a.key;for(var e in a)a.hasOwnProperty(e)&&delete this[e];UE.delEditor(d)},render:function(a){var b=this,c=b.options,d=function(b){return parseInt(domUtils.getComputedStyle(a,b))};if(utils.isString(a)&&(a=document.getElementById(a)),a){c.initialFrameWidth?c.minFrameWidth=c.initialFrameWidth:c.minFrameWidth=c.initialFrameWidth=a.offsetWidth,c.initialFrameHeight?c.minFrameHeight=c.initialFrameHeight:c.initialFrameHeight=c.minFrameHeight=a.offsetHeight,a.style.width=/%$/.test(c.initialFrameWidth)?"100%":c.initialFrameWidth-d("padding-left")-d("padding-right")+"px",a.style.height=/%$/.test(c.initialFrameHeight)?"100%":c.initialFrameHeight-d("padding-top")-d("padding-bottom")+"px",a.style.zIndex=c.zIndex;var e=(ie&&browser.version<9?"":"")+""+(c.iframeCssUrl?"":"")+(c.initialStyle?"":"")+"";a.appendChild(domUtils.createElement(document,"iframe",{id:"ueditor_"+b.uid,width:"100%",height:"100%",frameborder:"0",src:"javascript:void(function(){document.open();"+(c.customDomain&&document.domain!=location.hostname?'document.domain="'+document.domain+'";':"")+'document.write("'+e+'");document.close();}())'})),a.style.overflow="hidden",setTimeout(function(){/%$/.test(c.initialFrameWidth)&&(c.minFrameWidth=c.initialFrameWidth=a.offsetWidth),/%$/.test(c.initialFrameHeight)&&(c.minFrameHeight=c.initialFrameHeight=a.offsetHeight,a.style.height=c.initialFrameHeight+"px")})}},_setup:function(b){var c=this,d=c.options;ie?(b.body.disabled=!0,b.body.contentEditable=!0,b.body.disabled=!1):b.body.contentEditable=!0,b.body.spellcheck=!1,c.document=b,c.window=b.defaultView||b.parentWindow,c.iframe=c.window.frameElement,c.body=b.body,c.selection=new dom.Selection(b);var e;browser.gecko&&(e=this.selection.getNative())&&e.removeAllRanges(),this._initEvents();for(var f=this.iframe.parentNode;!domUtils.isBody(f);f=f.parentNode)if("FORM"==f.tagName){c.form=f,c.options.autoSyncData?domUtils.on(c.window,"blur",function(){a(f,c)}):domUtils.on(f,"submit",function(){a(this,c)});break}if(d.initialContent)if(d.autoClearinitialContent){var g=c.execCommand;c.execCommand=function(){return c.fireEvent("firstBeforeExecCommand"),g.apply(c,arguments)},this._setDefaultContent(d.initialContent)}else this.setContent(d.initialContent,!1,!0);domUtils.isEmptyNode(c.body)&&(c.body.innerHTML="

    "+(browser.ie?"":"
    ")+"

    "),d.focus&&setTimeout(function(){c.focus(c.options.focusInEnd),!c.options.autoClearinitialContent&&c._selectionChange()},0),c.container||(c.container=this.iframe.parentNode),d.fullscreen&&c.ui&&c.ui.setFullScreen(!0);try{c.document.execCommand("2D-position",!1,!1)}catch(h){}try{c.document.execCommand("enableInlineTableEditing",!1,!1)}catch(h){}try{c.document.execCommand("enableObjectResizing",!1,!1)}catch(h){}c._bindshortcutKeys(),c.isReady=1,c.fireEvent("ready"),d.onready&&d.onready.call(c),browser.ie9below||domUtils.on(c.window,["blur","focus"],function(a){if("blur"==a.type){c._bakRange=c.selection.getRange();try{c._bakNativeRange=c.selection.getNative().getRangeAt(0),c.selection.getNative().removeAllRanges()}catch(a){c._bakNativeRange=null}}else try{c._bakRange&&c._bakRange.select()}catch(a){}}),browser.gecko&&browser.version<=10902&&(c.body.contentEditable=!1,setTimeout(function(){c.body.contentEditable=!0},100),setInterval(function(){c.body.style.height=c.iframe.offsetHeight-20+"px"},100)),!d.isShow&&c.setHide(),d.readonly&&c.setDisabled()},sync:function(b){var c=this,d=b?document.getElementById(b):domUtils.findParent(c.iframe.parentNode,function(a){return"FORM"==a.tagName},!0);d&&a(d,c)},setHeight:function(a,b){a!==parseInt(this.iframe.parentNode.style.height)&&(this.iframe.parentNode.style.height=a+"px"),!b&&(this.options.minFrameHeight=this.options.initialFrameHeight=a),this.body.style.height=a+"px",!b&&this.trigger("setHeight")},addshortcutkey:function(a,b){var c={};b?c[a]=b:c=a,utils.extend(this.shortcutkeys,c)},_bindshortcutKeys:function(){var a=this,b=this.shortcutkeys;a.addListener("keydown",function(c,d){var e=d.keyCode||d.which;for(var f in b)for(var g,h=b[f].split(","),i=0;g=h[i++];){g=g.split(":");var j=g[0],k=g[1];(/^(ctrl)(\+shift)?\+(\d+)$/.test(j.toLowerCase())||/^(\d+)$/.test(j))&&(("ctrl"==RegExp.$1?d.ctrlKey||d.metaKey:0)&&(""!=RegExp.$2?d[RegExp.$2.slice(1)+"Key"]:1)&&e==RegExp.$3||e==RegExp.$1)&&(a.queryCommandState(f,k)!=-1&&a.execCommand(f,k),domUtils.preventDefault(d))}})},getContent:function(a,b,c,d,e){var f=this;if(a&&utils.isFunction(a)&&(b=a,a=""),b?!b():!this.hasContents())return"";f.fireEvent("beforegetcontent");var g=UE.htmlparser(f.body.innerHTML,d);return f.filterOutputRule(g),f.fireEvent("aftergetcontent",a,g),g.toHtml(e)},getAllHtml:function(){var a=this,b=[];if(a.fireEvent("getAllHtml",b),browser.ie&&browser.version>8){var c="";utils.each(a.document.styleSheets,function(a){c+=a.href?'':""}),utils.each(a.document.getElementsByTagName("script"),function(a){c+=a.outerHTML})}return""+(a.options.charset?'':"")+(c||a.document.getElementsByTagName("head")[0].innerHTML)+b.join("\n")+""+a.getContent(null,null,!0)+""},getPlainTxt:function(){var a=new RegExp(domUtils.fillChar,"g"),b=this.body.innerHTML.replace(/[\n\r]/g,"");return b=b.replace(/<(p|div)[^>]*>(| )<\/\1>/gi,"\n").replace(//gi,"\n").replace(/<[^>\/]+>/g,"").replace(/(\n)?<\/([^>]+)>/g,function(a,b,c){return dtd.$block[c]?"\n":b?b:""}),b.replace(a,"").replace(/\u00a0/g," ").replace(/ /g," ")},getContentTxt:function(){var a=new RegExp(domUtils.fillChar,"g");return this.body[browser.ie?"innerText":"textContent"].replace(a,"").replace(/\u00a0/g," ")},setContent:function(b,c,d){function e(a){return"DIV"==a.tagName&&a.getAttribute("cdata_tag")}var f=this;f.fireEvent("beforesetcontent",b);var g=UE.htmlparser(b);if(f.filterInputRule(g),b=g.toHtml(),f.body.innerHTML=(c?f.body.innerHTML:"")+b,"p"==f.options.enterTag){var h,i=this.body.firstChild;if(!i||1==i.nodeType&&(dtd.$cdata[i.tagName]||e(i)||domUtils.isCustomeNode(i))&&i===this.body.lastChild)this.body.innerHTML="

    "+(browser.ie?" ":"
    ")+"

    "+this.body.innerHTML;else for(var j=f.document.createElement("p");i;){for(;i&&(3==i.nodeType||1==i.nodeType&&dtd.p[i.tagName]&&!dtd.$cdata[i.tagName]);)h=i.nextSibling,j.appendChild(i),i=h;if(j.firstChild){if(!i){f.body.appendChild(j);break}i.parentNode.insertBefore(j,i),j=f.document.createElement("p")}i=i.nextSibling}}f.fireEvent("aftersetcontent"),f.fireEvent("contentchange"),!d&&f._selectionChange(),f._bakRange=f._bakIERange=f._bakNativeRange=null;var k;browser.gecko&&(k=this.selection.getNative())&&k.removeAllRanges(),f.options.autoSyncData&&f.form&&a(f.form,f)},focus:function(a){try{var b=this,c=b.selection.getRange();if(a){var d=b.body.lastChild;d&&1==d.nodeType&&!dtd.$empty[d.tagName]&&(domUtils.isEmptyBlock(d)?c.setStartAtFirst(d):c.setStartAtLast(d),c.collapse(!0)),c.setCursor(!0)}else{if(!c.collapsed&&domUtils.isBody(c.startContainer)&&0==c.startOffset){var d=b.body.firstChild;d&&1==d.nodeType&&!dtd.$empty[d.tagName]&&c.setStartAtFirst(d).collapse(!0)}c.select(!0)}this.fireEvent("focus selectionchange")}catch(e){}},isFocus:function(){return this.selection.isFocus()},blur:function(){var a=this.selection.getNative();if(a.empty&&browser.ie){var b=document.body.createTextRange();b.moveToElementText(document.body),b.collapse(!0),b.select(),a.empty()}else a.removeAllRanges()},_initEvents:function(){var a=this,b=a.document,c=a.window;a._proxyDomEvent=utils.bind(a._proxyDomEvent,a),domUtils.on(b,["click","contextmenu","mousedown","keydown","keyup","keypress","mouseup","mouseover","mouseout","selectstart"],a._proxyDomEvent),domUtils.on(c,["focus","blur"],a._proxyDomEvent),domUtils.on(a.body,"drop",function(b){browser.gecko&&b.stopPropagation&&b.stopPropagation(),a.fireEvent("contentchange")}),domUtils.on(b,["mouseup","keydown"],function(b){"keydown"==b.type&&(b.ctrlKey||b.metaKey||b.shiftKey||b.altKey)||2!=b.button&&a._selectionChange(250,b)})},_proxyDomEvent:function(a){return this.fireEvent("before"+a.type.replace(/^on/,"").toLowerCase())!==!1&&(this.fireEvent(a.type.replace(/^on/,""),a)!==!1&&this.fireEvent("after"+a.type.replace(/^on/,"").toLowerCase()))},_selectionChange:function(a,b){var c,e,f=this,g=!1;if(browser.ie&&browser.version<9&&b&&"mouseup"==b.type){var h=this.selection.getRange();h.collapsed||(g=!0,c=b.clientX,e=b.clientY)}clearTimeout(d),d=setTimeout(function(){if(f.selection&&f.selection.getNative()){var a;if(g&&"None"==f.selection.getNative().type){a=f.document.body.createTextRange();try{a.moveToPoint(c,e)}catch(d){a=null}}var h;a&&(h=f.selection.getIERange,f.selection.getIERange=function(){return a}),f.selection.cache(),h&&(f.selection.getIERange=h),f.selection._cachedRange&&f.selection._cachedStartElement&&(f.fireEvent("beforeselectionchange"),f.fireEvent("selectionchange",!!b),f.fireEvent("afterselectionchange"),f.selection.clear())}},a||50)},_callCmdFn:function(a,b){var c,d,e=b[0].toLowerCase();return c=this.commands[e]||UE.commands[e],d=c&&c[a],c&&d||"queryCommandState"!=a?d?d.apply(this,b):void 0:0},execCommand:function(a){a=a.toLowerCase();var b,c=this,d=c.commands[a]||UE.commands[a];return d&&d.execCommand?(d.notNeedUndo||c.__hasEnterExecCommand?(b=this._callCmdFn("execCommand",arguments),!c.__hasEnterExecCommand&&!d.ignoreContentChange&&!c._ignoreContentChange&&c.fireEvent("contentchange")):(c.__hasEnterExecCommand=!0,c.queryCommandState.apply(c,arguments)!=-1&&(c.fireEvent("saveScene"),c.fireEvent.apply(c,["beforeexeccommand",a].concat(arguments)),b=this._callCmdFn("execCommand",arguments),c.fireEvent.apply(c,["afterexeccommand",a].concat(arguments)),c.fireEvent("saveScene")),c.__hasEnterExecCommand=!1),!c.__hasEnterExecCommand&&!d.ignoreContentChange&&!c._ignoreContentChange&&c._selectionChange(),b):null},queryCommandState:function(a){return this._callCmdFn("queryCommandState",arguments)},queryCommandValue:function(a){return this._callCmdFn("queryCommandValue",arguments)},hasContents:function(a){if(a)for(var b,c=0;b=a[c++];)if(this.document.getElementsByTagName(b).length>0)return!0;if(!domUtils.isEmptyBlock(this.body))return!0;for(a=["div"],c=0;b=a[c++];)for(var d,e=domUtils.getElementsByTagName(this.document,b),f=0;d=e[f++];)if(domUtils.isCustomeNode(d))return!0;return!1},reset:function(){this.fireEvent("reset")},setEnabled:function(){var a,b=this;if("false"==b.body.contentEditable){b.body.contentEditable=!0,a=b.selection.getRange();try{a.moveToBookmark(b.lastBk),delete b.lastBk}catch(c){a.setStartAtFirst(b.body).collapse(!0)}a.select(!0),b.bkqueryCommandState&&(b.queryCommandState=b.bkqueryCommandState,delete b.bkqueryCommandState),b.bkqueryCommandValue&&(b.queryCommandValue=b.bkqueryCommandValue,delete b.bkqueryCommandValue),b.fireEvent("selectionchange")}},enable:function(){return this.setEnabled()},setDisabled:function(a){var b=this;a=a?utils.isArray(a)?a:[a]:[],"true"==b.body.contentEditable&&(b.lastBk||(b.lastBk=b.selection.getRange().createBookmark(!0)),b.body.contentEditable=!1,b.bkqueryCommandState=b.queryCommandState,b.bkqueryCommandValue=b.queryCommandValue,b.queryCommandState=function(c){return utils.indexOf(a,c)!=-1?b.bkqueryCommandState.apply(b,arguments):-1},b.queryCommandValue=function(c){return utils.indexOf(a,c)!=-1?b.bkqueryCommandValue.apply(b,arguments):null},b.fireEvent("selectionchange"))},disable:function(a){return this.setDisabled(a)},_setDefaultContent:function(){function a(){var b=this;b.document.getElementById("initContent")&&(b.body.innerHTML="

    "+(ie?"":"
    ")+"

    ",b.removeListener("firstBeforeExecCommand focus",a),setTimeout(function(){b.focus(),b._selectionChange()},0))}return function(b){var c=this;c.body.innerHTML='

    '+b+"

    ",c.addListener("firstBeforeExecCommand focus",a)}}(),setShow:function(){var a=this,b=a.selection.getRange();if("none"==a.container.style.display){try{b.moveToBookmark(a.lastBk),delete a.lastBk}catch(c){b.setStartAtFirst(a.body).collapse(!0)}setTimeout(function(){b.select(!0)},100),a.container.style.display=""}},show:function(){return this.setShow(); +},setHide:function(){var a=this;a.lastBk||(a.lastBk=a.selection.getRange().createBookmark(!0)),a.container.style.display="none"},hide:function(){return this.setHide()},getLang:function(a){if(!this.options)return"";var b=UE.I18N[this.options.lang];if(!b)throw Error("not import language file");a=(a||"").split(".");for(var c,d=0;(c=a[d++])&&(b=b[c],b););return b},getContentLength:function(a,b){var c=this.getContent(!1,!1,!0).length;if(a){b=(b||[]).concat(["hr","img","iframe"]),c=this.getContentTxt().replace(/[\t\r\n]+/g,"").length;for(var d,e=0;d=b[e++];)c+=this.document.getElementsByTagName(d).length}return c},addInputRule:function(a){this.inputRules.push(a)},filterInputRule:function(a){for(var b,c=0;b=this.inputRules[c++];)b.call(this,a)},addOutputRule:function(a){this.outputRules.push(a)},filterOutputRule:function(a){for(var b,c=0;b=this.outputRules[c++];)b.call(this,a)},getActionUrl:function(a){var b=this.getOpt(a)||a,c=this.getOpt("imageUrl"),d=this.getOpt("serverUrl");return!d&&c&&(d=c.replace(/^(.*[\/]).+([\.].+)$/,"$1controller$2")),d?(d=d+(d.indexOf("?")==-1?"?":"&")+"action="+(b||""),utils.formatUrl(d)):""}},utils.inherits(f,EventBase)}(),UE.Editor.defaultOptions=function(a){var b=a.options.UEDITOR_HOME_URL;return{isShow:!0,initialContent:"",initialStyle:"",autoClearinitialContent:!1,iframeCssUrl:b+"themes/iframe.css",textarea:"editorValue",focus:!1,focusInEnd:!0,autoClearEmptyNode:!0,fullscreen:!1,readonly:!1,zIndex:999,imagePopup:!0,enterTag:"p",customDomain:!1,lang:"zh-cn",langPath:b+"lang/",theme:"default",themePath:b+"themes/",allHtmlEnabled:!1,scaleEnabled:!1,tableNativeEditInFF:!1,autoSyncData:!0,fileNameFormat:"{time}{rand:6}"}},function(){UE.Editor.prototype.loadServerConfig=function(){function showErrorMsg(a){console&&console.error(a)}var me=this;setTimeout(function(){try{me.options.imageUrl&&me.setOpt("serverUrl",me.options.imageUrl.replace(/^(.*[\/]).+([\.].+)$/,"$1controller$2"));var configUrl=me.getActionUrl("config"),isJsonp=utils.isCrossDomainUrl(configUrl);me._serverConfigLoaded=!1,configUrl&&UE.ajax.request(configUrl,{method:"GET",dataType:isJsonp?"jsonp":"",onsuccess:function(r){try{var config=isJsonp?r:eval("("+r.responseText+")");utils.extend(me.options,config),me.fireEvent("serverConfigLoaded"),me._serverConfigLoaded=!0}catch(e){showErrorMsg(me.getLang("loadconfigFormatError"))}},onerror:function(){showErrorMsg(me.getLang("loadconfigHttpError"))}})}catch(e){showErrorMsg(me.getLang("loadconfigError"))}})},UE.Editor.prototype.isServerConfigLoaded=function(){var a=this;return a._serverConfigLoaded||!1},UE.Editor.prototype.afterConfigReady=function(a){if(a&&utils.isFunction(a)){var b=this,c=function(){a.apply(b,arguments),b.removeListener("serverConfigLoaded",c)};b.isServerConfigLoaded()?a.call(b,"serverConfigLoaded"):b.addListener("serverConfigLoaded",c)}}}(),UE.ajax=function(){function a(a){var b=[];for(var c in a)if("method"!=c&&"timeout"!=c&&"async"!=c&&"dataType"!=c&&"callback"!=c&&void 0!=a[c]&&null!=a[c])if("function"!=(typeof a[c]).toLowerCase()&&"object"!=(typeof a[c]).toLowerCase())b.push(encodeURIComponent(c)+"="+encodeURIComponent(a[c]));else if(utils.isArray(a[c]))for(var d=0;d/gi,"").replace(/]*>[\s\S]*?.<\/v:shape>/gi,function(a){if(browser.opera)return"";try{if(/Bitmap/i.test(a))return"";var c=a.match(/width:([ \d.]*p[tx])/i)[1],d=a.match(/height:([ \d.]*p[tx])/i)[1],e=a.match(/src=\s*"([^"]*)"/i)[1];return''}catch(f){return""}}).replace(/<\/?div[^>]*>/g,"").replace(/v:\w+=(["']?)[^'"]+\1/g,"").replace(/<(!|script[^>]*>.*?<\/script(?=[>\s])|\/?(\?xml(:\w+)?|xml|meta|link|style|\w+:\w+)(?=[\s\/>]))[^>]*>/gi,"").replace(/

    ]*class="?MsoHeading"?[^>]*>(.*?)<\/p>/gi,"

    $1

    ").replace(/\s+(class|lang|align)\s*=\s*(['"]?)([\w-]+)\2/gi,function(a,b,c,d){return"class"==b&&"MsoListParagraph"==d?a:""}).replace(/<(font|span)[^>]*>(\s*)<\/\1>/gi,function(a,b,c){return c.replace(/[\t\r\n ]+/g," ")}).replace(/(<[a-z][^>]*)\sstyle=(["'])([^\2]*?)\2/gi,function(a,c,d,e){for(var f,g=[],h=e.replace(/^\s+|\s+$/,"").replace(/'/g,"'").replace(/"/gi,"'").replace(/[\d.]+(cm|pt)/g,function(a){return utils.transUnitToPx(a)}).split(/;\s*/g),i=0;f=h[i];i++){var j,k,l=f.split(":");if(2==l.length){if(j=l[0].toLowerCase(),k=l[1].toLowerCase(),/^(background)\w*/.test(j)&&0==k.replace(/(initial|\s)/g,"").length||/^(margin)\w*/.test(j)&&/^0\w+$/.test(k))continue;switch(j){case"mso-padding-alt":case"mso-padding-top-alt":case"mso-padding-right-alt":case"mso-padding-bottom-alt":case"mso-padding-left-alt":case"mso-margin-alt":case"mso-margin-top-alt":case"mso-margin-right-alt":case"mso-margin-bottom-alt":case"mso-margin-left-alt":case"mso-height":case"mso-width":case"mso-vertical-align-alt":/1&&(a(h,j,!0),b(h,j)),c(k,h,i,j);break;case"text":d(g,h);break;case"element":e(g,h,i,j);break;case"comment":f(g,h,i)}return h}function d(a,b){"pre"==a.parentNode.tagName?b.push(a.data):b.push(l[a.parentNode.tagName]?utils.html(a.data):a.data.replace(/[ ]{2}/g,"  "))}function e(d,e,f,g){var h="";if(d.attrs){h=[];var i=d.attrs;for(var j in i)h.push(j+(void 0!==i[j]?'="'+(k[j]?utils.html(i[j]).replace(/["]/g,function(a){return"""}):utils.unhtml(i[j]))+'"':""));h=h.join(" ")}if(e.push("<"+d.tagName+(h?" "+h:"")+(dtd.$empty[d.tagName]?"/":"")+">"),f&&!dtd.$inlineWithA[d.tagName]&&"pre"!=d.tagName&&d.children&&d.children.length&&(g=a(e,g,!0),b(e,g)),d.children&&d.children.length)for(var l,m=0;l=d.children[m++];)f&&"element"==l.type&&!dtd.$inlineWithA[l.tagName]&&m>1&&(a(e,g),b(e,g)),c(l,e,f,g);dtd.$empty[d.tagName]||(f&&!dtd.$inlineWithA[d.tagName]&&"pre"!=d.tagName&&d.children&&d.children.length&&(g=a(e,g),b(e,g)),e.push(""))}function f(a,b){b.push("")}function g(a,b){var c;if("element"==a.type&&a.getAttr("id")==b)return a;if(a.children&&a.children.length)for(var d,e=0;d=a.children[e++];)if(c=g(d,b))return c}function h(a,b,c){if("element"==a.type&&a.tagName==b&&c.push(a),a.children&&a.children.length)for(var d,e=0;d=a.children[e++];)h(d,b,c)}function i(a,b){if(a.children&&a.children.length)for(var c,d=0;c=a.children[d];)i(c,b),c.parentNode&&(c.children&&c.children.length&&b(c),c.parentNode&&d++);else b(a)}var j=UE.uNode=function(a){this.type=a.type,this.data=a.data,this.tagName=a.tagName,this.parentNode=a.parentNode,this.attrs=a.attrs||{},this.children=a.children},k={href:1,src:1,_src:1,_href:1,cdata_data:1},l={style:1,script:1},m=" ",n="\n";j.createElement=function(a){return/[<>]/.test(a)?UE.htmlparser(a).children[0]:new j({type:"element",children:[],tagName:a})},j.createText=function(a,b){return new UE.uNode({type:"text",data:b?a:utils.unhtml(a||"")})},j.prototype={toHtml:function(a){var b=[];return c(this,b,a,0),b.join("")},innerHTML:function(a){if("element"!=this.type||dtd.$empty[this.tagName])return this;if(utils.isString(a)){if(this.children)for(var b,c=0;b=this.children[c++];)b.parentNode=null;this.children=[];for(var b,d=UE.htmlparser(a),c=0;b=d.children[c++];)this.children.push(b),b.parentNode=this;return this}var d=new UE.uNode({type:"root",children:this.children});return d.toHtml()},innerText:function(a,b){if("element"!=this.type||dtd.$empty[this.tagName])return this;if(a){if(this.children)for(var c,d=0;c=this.children[d++];)c.parentNode=null;return this.children=[],this.appendChild(j.createText(a,b)),this}return this.toHtml().replace(/<[^>]+>/g,"")},getData:function(){return"element"==this.type?"":this.data},firstChild:function(){return this.children?this.children[0]:null},lastChild:function(){return this.children?this.children[this.children.length-1]:null},previousSibling:function(){for(var a,b=this.parentNode,c=0;a=b.children[c];c++)if(a===this)return 0==c?null:b.children[c-1]},nextSibling:function(){for(var a,b=this.parentNode,c=0;a=b.children[c++];)if(a===this)return b.children[c]},replaceChild:function(a,b){if(this.children){a.parentNode&&a.parentNode.removeChild(a);for(var c,d=0;c=this.children[d];d++)if(c===b)return this.children.splice(d,1,a),b.parentNode=null,a.parentNode=this,a}},appendChild:function(a){if("root"==this.type||"element"==this.type&&!dtd.$empty[this.tagName]){this.children||(this.children=[]),a.parentNode&&a.parentNode.removeChild(a);for(var b,c=0;b=this.children[c];c++)if(b===a){this.children.splice(c,1);break}return this.children.push(a),a.parentNode=this,a}},insertBefore:function(a,b){if(this.children){a.parentNode&&a.parentNode.removeChild(a);for(var c,d=0;c=this.children[d];d++)if(c===b)return this.children.splice(d,0,a),a.parentNode=this,a}},insertAfter:function(a,b){if(this.children){a.parentNode&&a.parentNode.removeChild(a);for(var c,d=0;c=this.children[d];d++)if(c===b)return this.children.splice(d+1,0,a),a.parentNode=this,a}},removeChild:function(a,b){if(this.children)for(var c,d=0;c=this.children[d];d++)if(c===a){if(this.children.splice(d,1),c.parentNode=null,b&&c.children&&c.children.length)for(var e,f=0;e=c.children[f];f++)this.children.splice(d+f,0,e),e.parentNode=this;return c}},getAttr:function(a){return this.attrs&&this.attrs[a.toLowerCase()]},setAttr:function(a,b){if(!a)return void delete this.attrs;if(this.attrs||(this.attrs={}),utils.isObject(a))for(var c in a)a[c]?this.attrs[c.toLowerCase()]=a[c]:delete this.attrs[c];else b?this.attrs[a.toLowerCase()]=b:delete this.attrs[a]},getIndex:function(){for(var a,b=this.parentNode,c=0;a=b.children[c];c++)if(a===this)return c;return-1},getNodeById:function(a){var b;if(this.children&&this.children.length)for(var c,d=0;c=this.children[d++];)if(b=g(c,a))return b},getNodesByTagName:function(a){a=utils.trim(a).replace(/[ ]{2,}/g," ").split(" ");var b=[],c=this;return utils.each(a,function(a){if(c.children&&c.children.length)for(var d,e=0;d=c.children[e++];)h(d,a,b)}),b},getStyle:function(a){var b=this.getAttr("style");if(!b)return"";var c=new RegExp("(^|;)\\s*"+a+":([^;]+)","i"),d=b.match(c);return d&&d[0]?d[2]:""},setStyle:function(a,b){function c(a,b){var c=new RegExp("(^|;)\\s*"+a+":([^;]+;?)","gi");d=d.replace(c,"$1"),b&&(d=a+":"+utils.unhtml(b)+";"+d)}var d=this.getAttr("style");if(d||(d=""),utils.isObject(a))for(var e in a)c(e,a[e]);else c(a,b);this.setAttr("style",utils.trim(d))},traversal:function(a){return this.children&&this.children.length&&i(this,a),this}}}();var htmlparser=UE.htmlparser=function(a,b){function c(a,b){if(m[a.tagName]){var c=k.createElement(m[a.tagName]);a.appendChild(c),c.appendChild(k.createText(b)),a=c}else a.appendChild(k.createText(b))}function d(a,b,c){var e;if(e=l[b]){for(var f,h=a;"root"!=h.type;){if(utils.isArray(e)?utils.indexOf(e,h.tagName)!=-1:e==h.tagName){a=h,f=!0;break}h=h.parentNode}f||(a=d(a,utils.isArray(e)?e[0]:e))}var i=new k({parentNode:a,type:"element",tagName:b.toLowerCase(),children:dtd.$empty[b]?null:[]});if(c){for(var m,n={};m=g.exec(c);)n[m[1].toLowerCase()]=j[m[1].toLowerCase()]?m[2]||m[3]||m[4]:utils.unhtml(m[2]||m[3]||m[4]);i.attrs=n}return a.children.push(i),dtd.$empty[b]?a:i}function e(a,b){a.children.push(new k({type:"comment",data:b,parentNode:a}))}var f=/<(?:(?:\/([^>]+)>)|(?:!--([\S|\s]*?)-->)|(?:([^\s\/<>]+)\s*((?:(?:"[^"]*")|(?:'[^']*')|[^"'<>])*)\/?>))/g,g=/([\w\-:.]+)(?:(?:\s*=\s*(?:(?:"([^"]*)")|(?:'([^']*)')|([^\s>]+)))|(?=\s|$))/g,h={b:1,code:1,i:1,u:1,strike:1,s:1,tt:1,strong:1,q:1,samp:1,em:1,span:1,sub:1,img:1,sup:1,font:1,big:1,small:1,iframe:1,a:1,br:1,pre:1};a=a.replace(new RegExp(domUtils.fillChar,"g"),""),b||(a=a.replace(new RegExp("[\\r\\t\\n"+(b?"":" ")+"]*]*)>[\\r\\t\\n"+(b?"":" ")+"]*","g"),function(a,c){return c&&h[c.toLowerCase()]?a.replace(/(^[\n\r]+)|([\n\r]+$)/g,""):a.replace(new RegExp("^[\\r\\n"+(b?"":" ")+"]+"),"").replace(new RegExp("[\\r\\n"+(b?"":" ")+"]+$"),"")}));for(var i,j={href:1,src:1},k=UE.uNode,l={td:"tr",tr:["tbody","thead","tfoot"],tbody:"table",th:"tr",thead:"table",tfoot:"table",caption:"table",li:["ul","ol"],dt:"dl",dd:"dl",option:"select"},m={ol:"li",ul:"li"},n=0,o=0,p=new k({type:"root",children:[]}),q=p;i=f.exec(a);){n=i.index;try{if(n>o&&c(q,a.slice(o,n)),i[3])dtd.$cdata[q.tagName]?c(q,i[0]):q=d(q,i[3].toLowerCase(),i[4]);else if(i[1]){if("root"!=q.type)if(dtd.$cdata[q.tagName]&&!dtd.$cdata[i[1]])c(q,i[0]);else{for(var r=q;"element"==q.type&&q.tagName!=i[1].toLowerCase();)if(q=q.parentNode,"root"==q.type)throw q=r,"break";q=q.parentNode}}else i[2]&&e(q,i[2])}catch(s){}o=f.lastIndex}return o");break;case"div":if(b.getAttr("cdata_tag"))break;if(d=b.getAttr("class"),d&&/^line number\d+/.test(d))break;if(!e)break;for(var f,g=UE.uNode.createElement("p");f=b.firstChild();)"text"!=f.type&&UE.dom.dtd.$block[f.tagName]?g.firstChild()?(b.parentNode.insertBefore(g,b),g=UE.uNode.createElement("p")):b.parentNode.insertBefore(f,b):g.appendChild(f);g.firstChild()&&b.parentNode.insertBefore(g,b),b.parentNode.removeChild(b);break;case"dl":b.tagName="ul";break;case"dt":case"dd":b.tagName="li";break;case"li":var h=b.getAttr("class");h&&/list\-/.test(h)||b.setAttr();var i=b.getNodesByTagName("ol ul");UE.utils.each(i,function(a){b.parentNode.insertAfter(a,b)});break;case"td":case"th":case"caption":b.children&&b.children.length||b.appendChild(browser.ie11below?UE.uNode.createText(" "):UE.uNode.createElement("br"));break;case"table":a.options.disabledTableInTable&&c(b)&&(b.parentNode.insertBefore(UE.uNode.createText(b.innerText()),b),b.parentNode.removeChild(b))}}})}),a.addOutputRule(function(b){var c;b.traversal(function(b){if("element"==b.type){if(a.options.autoClearEmptyNode&&dtd.$inline[b.tagName]&&!dtd.$empty[b.tagName]&&(!b.attrs||utils.isEmptyObject(b.attrs)))return void(b.firstChild()?"span"!=b.tagName||b.attrs&&!utils.isEmptyObject(b.attrs)||b.parentNode.removeChild(b,!0):b.parentNode.removeChild(b));switch(b.tagName){case"div":(c=b.getAttr("cdata_tag"))&&(b.tagName=c,b.appendChild(UE.uNode.createText(b.getAttr("cdata_data"))),b.setAttr({cdata_tag:"",cdata_data:"",_ue_custom_node_:""}));break;case"a":(c=b.getAttr("_href"))&&b.setAttr({href:utils.html(c),_href:""});break;case"span":c=b.getAttr("id"),c&&/^_baidu_bookmark_/i.test(c)&&b.parentNode.removeChild(b);break;case"img":(c=b.getAttr("_src"))&&b.setAttr({src:b.getAttr("_src"),_src:""})}}})})},UE.commands.inserthtml={execCommand:function(a,b,c){var d,e,f=this;if(b&&f.fireEvent("beforeinserthtml",b)!==!0){if(d=f.selection.getRange(),e=d.document.createElement("div"),e.style.display="inline",!c){var g=UE.htmlparser(b);f.options.filterRules&&UE.filterNode(g,f.options.filterRules),f.filterInputRule(g),b=g.toHtml()}if(e.innerHTML=utils.trim(b),!d.collapsed){var h=d.startContainer;if(domUtils.isFillChar(h)&&d.setStartBefore(h),h=d.endContainer,domUtils.isFillChar(h)&&d.setEndAfter(h),d.txtToElmBoundary(),d.endContainer&&1==d.endContainer.nodeType&&(h=d.endContainer.childNodes[d.endOffset],h&&domUtils.isBr(h)&&d.setEndAfter(h)),0==d.startOffset&&(h=d.startContainer,domUtils.isBoundaryNode(h,"firstChild")&&(h=d.endContainer,d.endOffset==(3==h.nodeType?h.nodeValue.length:h.childNodes.length)&&domUtils.isBoundaryNode(h,"lastChild")&&(f.body.innerHTML="

    "+(browser.ie?"":"
    ")+"

    ",d.setStart(f.body.firstChild,0).collapse(!0)))),!d.collapsed&&d.deleteContents(),1==d.startContainer.nodeType){var i,j=d.startContainer.childNodes[d.startOffset];if(j&&domUtils.isBlockElm(j)&&(i=j.previousSibling)&&domUtils.isBlockElm(i)){for(d.setEnd(i,i.childNodes.length).collapse();j.firstChild;)i.appendChild(j.firstChild);domUtils.remove(j)}}}var j,k,i,l,m,n=0;d.inFillChar()&&(j=d.startContainer,domUtils.isFillChar(j)?(d.setStartBefore(j).collapse(!0),domUtils.remove(j)):domUtils.isFillChar(j,!0)&&(j.nodeValue=j.nodeValue.replace(fillCharReg,""),d.startOffset--,d.collapsed&&d.collapse(!0)));var o=domUtils.findParentByTagName(d.startContainer,"li",!0);if(o){for(var p,q;j=e.firstChild;){for(;j&&(3==j.nodeType||!domUtils.isBlockElm(j)||"HR"==j.tagName);)p=j.nextSibling,d.insertNode(j).collapse(),q=j,j=p;if(j)if(/^(ol|ul)$/i.test(j.tagName)){for(;j.firstChild;)q=j.firstChild,domUtils.insertAfter(o,j.firstChild),o=o.nextSibling;domUtils.remove(j)}else{var r;p=j.nextSibling,r=f.document.createElement("li"),domUtils.insertAfter(o,r),r.appendChild(j),q=j,j=p,o=r}}o=domUtils.findParentByTagName(d.startContainer,"li",!0),domUtils.isEmptyBlock(o)&&domUtils.remove(o),q&&d.setStartAfter(q).collapse(!0).select(!0)}else{for(;j=e.firstChild;){if(n){for(var s=f.document.createElement("p");j&&(3==j.nodeType||!dtd.$block[j.tagName]);)m=j.nextSibling,s.appendChild(j),j=m;s.firstChild&&(j=s)}if(d.insertNode(j),m=j.nextSibling,!n&&j.nodeType==domUtils.NODE_ELEMENT&&domUtils.isBlockElm(j)&&(k=domUtils.findParent(j,function(a){return domUtils.isBlockElm(a)}),k&&"body"!=k.tagName.toLowerCase()&&(!dtd[k.tagName][j.nodeName]||j.parentNode!==k))){if(dtd[k.tagName][j.nodeName])for(l=j.parentNode;l!==k;)i=l,l=l.parentNode;else i=k;domUtils.breakParent(j,i||l);var i=j.previousSibling;domUtils.trimWhiteTextNode(i),i.childNodes.length||domUtils.remove(i),!browser.ie&&(p=j.nextSibling)&&domUtils.isBlockElm(p)&&p.lastChild&&!domUtils.isBr(p.lastChild)&&p.appendChild(f.document.createElement("br")),n=1}var p=j.nextSibling;if(!e.firstChild&&p&&domUtils.isBlockElm(p)){d.setStart(p,0).collapse(!0);break}d.setEndAfter(j).collapse()}if(j=d.startContainer,m&&domUtils.isBr(m)&&domUtils.remove(m),domUtils.isBlockElm(j)&&domUtils.isEmptyNode(j))if(m=j.nextSibling)domUtils.remove(j),1==m.nodeType&&dtd.$block[m.tagName]&&d.setStart(m,0).collapse(!0).shrinkBoundary();else try{j.innerHTML=browser.ie?domUtils.fillChar:"
    "}catch(t){d.setStartBefore(j),domUtils.remove(j)}try{d.select(!0)}catch(t){}}setTimeout(function(){d=f.selection.getRange(),d.scrollToView(f.autoHeightEnabled,f.autoHeightEnabled?domUtils.getXY(f.iframe).y:0),f.fireEvent("afterinserthtml",b)},200)}}},UE.plugins.autotypeset=function(){function a(a,b){return a&&3!=a.nodeType?domUtils.isBr(a)?1:a&&a.parentNode&&l[a.tagName.toLowerCase()]?g&&g.contains(a)||a.getAttribute("pagebreak")?0:b?!domUtils.isEmptyBlock(a):domUtils.isEmptyBlock(a,new RegExp("[\\s"+domUtils.fillChar+"]","g")):void 0:0}function b(a){a.style.cssText||(domUtils.removeAttributes(a,["style"]),"span"==a.tagName.toLowerCase()&&domUtils.hasNoAttributes(a)&&domUtils.remove(a,!0))}function c(c,f){var h,l=this;if(f){if(!i.pasteFilter)return;h=l.document.createElement("div"),h.innerHTML=f.html}else h=l.document.body;for(var m,n=domUtils.getElementsByTagName(h,"*"),o=0;m=n[o++];)if(l.fireEvent("excludeNodeinautotype",m)!==!0){if(i.clearFontSize&&m.style.fontSize&&(domUtils.removeStyle(m,"font-size"),b(m)),i.clearFontFamily&&m.style.fontFamily&&(domUtils.removeStyle(m,"font-family"),b(m)),a(m)){if(i.mergeEmptyline)for(var p,q=m.nextSibling,r=domUtils.isBr(m);a(q)&&(p=q,q=p.nextSibling,!r||q&&(!q||domUtils.isBr(q)));)domUtils.remove(p);if(i.removeEmptyline&&domUtils.inDoc(m,h)&&!k[m.parentNode.tagName.toLowerCase()]){if(domUtils.isBr(m)&&(q=m.nextSibling,q&&!domUtils.isBr(q)))continue;domUtils.remove(m);continue}}if(a(m,!0)&&"SPAN"!=m.tagName&&(i.indent&&(m.style.textIndent=i.indentValue),i.textAlign&&(m.style.textAlign=i.textAlign)),i.removeClass&&m.className&&!j[m.className.toLowerCase()]){if(g&&g.contains(m))continue;domUtils.removeAttributes(m,["class"])}if(i.imageBlockLine&&"img"==m.tagName.toLowerCase()&&!m.getAttribute("emotion"))if(f){var s=m;switch(i.imageBlockLine){case"left":case"right":case"none":for(var p,t,q,u=s.parentNode;dtd.$inline[u.tagName]||"A"==u.tagName;)u=u.parentNode;if(p=u,"P"==p.tagName&&"center"==domUtils.getStyle(p,"text-align")&&!domUtils.isBody(p)&&1==domUtils.getChildCount(p,function(a){return!domUtils.isBr(a)&&!domUtils.isWhitespace(a)}))if(t=p.previousSibling,q=p.nextSibling,t&&q&&1==t.nodeType&&1==q.nodeType&&t.tagName==q.tagName&&domUtils.isBlockElm(t)){for(t.appendChild(p.firstChild);q.firstChild;)t.appendChild(q.firstChild);domUtils.remove(p),domUtils.remove(q)}else domUtils.setStyle(p,"text-align","");domUtils.setStyle(s,"float",i.imageBlockLine);break;case"center":if("center"!=l.queryCommandValue("imagefloat")){for(u=s.parentNode,domUtils.setStyle(s,"float","none"),p=s;u&&1==domUtils.getChildCount(u,function(a){return!domUtils.isBr(a)&&!domUtils.isWhitespace(a)})&&(dtd.$inline[u.tagName]||"A"==u.tagName);)p=u,u=u.parentNode;var v=l.document.createElement("p");domUtils.setAttributes(v,{style:"text-align:center"}),p.parentNode.insertBefore(v,p),v.appendChild(p),domUtils.setStyle(p,"float","")}}}else{var w=l.selection.getRange();w.selectNode(m).select(),l.execCommand("imagefloat",i.imageBlockLine)}i.removeEmptyNode&&i.removeTagNames[m.tagName.toLowerCase()]&&domUtils.hasNoAttributes(m)&&domUtils.isEmptyBlock(m)&&domUtils.remove(m)}if(i.tobdc){var x=UE.htmlparser(h.innerHTML);x.traversal(function(a){"text"==a.type&&(a.data=e(a.data))}),h.innerHTML=x.toHtml()}if(i.bdc2sb){var x=UE.htmlparser(h.innerHTML);x.traversal(function(a){"text"==a.type&&(a.data=d(a.data))}),h.innerHTML=x.toHtml()}f&&(f.html=h.innerHTML)}function d(a){for(var b="",c=0;c=65281&&d<=65373?String.fromCharCode(a.charCodeAt(c)-65248):12288==d?String.fromCharCode(a.charCodeAt(c)-12288+32):a.charAt(c)}return b}function e(a){a=utils.html(a);for(var b="",c=0;c0?e.substring(e.indexOf(d.options.imagePath),e.length-1).replace(/"|\(|\)/gi,""):"none"!=e?e.replace(/url\("?|"?\)/gi,""):"";var g=' ",b.push(g)},aftersetcontent:function(){0==c&&b()}},inputRule:function(d){c=!1,utils.each(d.getNodesByTagName("p"),function(d){var e=d.getAttr("data-background");e&&(c=!0,b(a(e)),d.parentNode.removeChild(d))})},outputRule:function(a){var b=this,c=(utils.cssRule(e,b.document)||"").replace(/[\n\r]+/g,"").match(f);c&&a.appendChild(UE.uNode.createElement('


    '))},commands:{background:{execCommand:function(a,c){b(c)},queryCommandValue:function(){var b=this,c=(utils.cssRule(e,b.document)||"").replace(/[\n\r]+/g,"").match(f);return c?a(c[1]):null},notNeedUndo:!0}}}}),UE.commands.imagefloat={execCommand:function(a,b){var c=this,d=c.selection.getRange();if(!d.collapsed){var e=d.getClosedNode();if(e&&"IMG"==e.tagName)switch(b){case"left":case"right":case"none":for(var f,g,h,i=e.parentNode;dtd.$inline[i.tagName]||"A"==i.tagName;)i=i.parentNode;if(f=i,"P"==f.tagName&&"center"==domUtils.getStyle(f,"text-align")){if(!domUtils.isBody(f)&&1==domUtils.getChildCount(f,function(a){return!domUtils.isBr(a)&&!domUtils.isWhitespace(a)}))if(g=f.previousSibling,h=f.nextSibling,g&&h&&1==g.nodeType&&1==h.nodeType&&g.tagName==h.tagName&&domUtils.isBlockElm(g)){for(g.appendChild(f.firstChild);h.firstChild;)g.appendChild(h.firstChild);domUtils.remove(f),domUtils.remove(h)}else domUtils.setStyle(f,"text-align","");d.selectNode(e).select()}domUtils.setStyle(e,"float","none"==b?"":b),"none"==b&&domUtils.removeAttributes(e,"align");break;case"center":if("center"!=c.queryCommandValue("imagefloat")){for(i=e.parentNode,domUtils.setStyle(e,"float",""),domUtils.removeAttributes(e,"align"),f=e;i&&1==domUtils.getChildCount(i,function(a){return!domUtils.isBr(a)&&!domUtils.isWhitespace(a)})&&(dtd.$inline[i.tagName]||"A"==i.tagName);)f=i,i=i.parentNode;d.setStartBefore(f).setCursor(!1),i=c.document.createElement("div"),i.appendChild(f),domUtils.setStyle(f,"float",""),c.execCommand("insertHtml",'

    '+i.innerHTML+"

    "),f=c.document.getElementById("_img_parent_tmp"),f.removeAttribute("id"),f=f.firstChild,d.selectNode(f).select(),h=f.parentNode.nextSibling,h&&domUtils.isEmptyNode(h)&&domUtils.remove(h)}}}},queryCommandValue:function(){var a,b,c=this.selection.getRange();return c.collapsed?"none":(a=c.getClosedNode(),a&&1==a.nodeType&&"IMG"==a.tagName?(b=domUtils.getComputedStyle(a,"float")||a.getAttribute("align"),"none"==b&&(b="center"==domUtils.getComputedStyle(a.parentNode,"text-align")?"center":b),{left:1,right:1,center:1}[b]?b:"none"):"none")},queryCommandState:function(){var a,b=this.selection.getRange();return b.collapsed?-1:(a=b.getClosedNode(),a&&1==a.nodeType&&"IMG"==a.tagName?0:-1)}},UE.commands.insertimage={execCommand:function(a,b){function c(a){utils.each("width,height,border,hspace,vspace".split(","),function(b){a[b]&&(a[b]=parseInt(a[b],10)||0)}),utils.each("src,_src".split(","),function(b){a[b]&&(a[b]=utils.unhtmlForUrl(a[b]))}),utils.each("title,alt".split(","),function(b){a[b]&&(a[b]=utils.unhtml(a[b]))})}if(b=utils.isArray(b)?b:[b],b.length){var d=this,e=d.selection.getRange(),f=e.getClosedNode();if(d.fireEvent("beforeinsertimage",b)!==!0){if(!f||!/img/i.test(f.tagName)||"edui-faked-video"==f.className&&f.className.indexOf("edui-upload-video")==-1||f.getAttribute("word_img")){var g,h=[],i="";if(g=b[0],1==b.length)c(g),i=''+g.alt+'","center"==g.floatStyle&&(i='

    '+i+"

    "),h.push(i);else for(var j=0;g=b[j++];)c(g),i="

    ",h.push(i);d.execCommand("insertHtml",h.join(""))}else{var k=b.shift(),l=k.floatStyle;delete k.floatStyle,domUtils.setAttributes(f,k),d.execCommand("imagefloat",l),b.length>0&&(e.setStartAfter(f).setCursor(!1,!0),d.execCommand("insertimage",b))}d.fireEvent("afterinsertimage",b)}}}},UE.plugins.justify=function(){var a=domUtils.isBlockElm,b={left:1,right:1,center:1,justify:1},c=function(b,c){var d=b.createBookmark(),e=function(a){return 1==a.nodeType?"br"!=a.tagName.toLowerCase()&&!domUtils.isBookmarkNode(a):!domUtils.isWhitespace(a)};b.enlarge(!0);for(var f,g=b.createBookmark(),h=domUtils.getNextDomNode(g.start,!1,e),i=b.cloneRange();h&&!(domUtils.getPosition(h,g.end)&domUtils.POSITION_FOLLOWING);)if(3!=h.nodeType&&a(h))h=domUtils.getNextDomNode(h,!0,e);else{for(i.setStartBefore(h);h&&h!==g.end&&!a(h);)f=h,h=domUtils.getNextDomNode(h,!1,null,function(b){return!a(b)});i.setEndAfter(f);var j=i.getCommonAncestor();if(!domUtils.isBody(j)&&a(j))domUtils.setStyles(j,utils.isString(c)?{"text-align":c}:c),h=j;else{var k=b.document.createElement("p");domUtils.setStyles(k,utils.isString(c)?{"text-align":c}:c);var l=i.extractContents();k.appendChild(l),i.insertNode(k),h=k}h=domUtils.getNextDomNode(h,!1,e)}return b.moveToBookmark(g).moveToBookmark(d)};UE.commands.justify={execCommand:function(a,b){var d,e=this.selection.getRange();return e.collapsed&&(d=this.document.createTextNode("p"),e.insertNode(d)),c(e,b),d&&(e.setStartBefore(d).collapse(!0),domUtils.remove(d)),e.select(),!0},queryCommandValue:function(){var a=this.selection.getStart(),c=domUtils.getComputedStyle(a,"text-align");return b[c]?c:"left"},queryCommandState:function(){var a=this.selection.getStart(),b=a&&domUtils.findParentByTagName(a,["td","th","caption"],!0);return b?-1:0}}},UE.plugins.font=function(){function a(a){for(var b;(b=a.parentNode)&&"SPAN"==b.tagName&&1==domUtils.getChildCount(b,function(a){return!domUtils.isBookmarkNode(a)&&!domUtils.isBr(a)});)b.style.cssText+=a.style.cssText,domUtils.remove(a,!0),a=b}function b(a,b,c){if(g[b]&&(a.adjustmentBoundary(),!a.collapsed&&1==a.startContainer.nodeType)){var d=a.startContainer.childNodes[a.startOffset];if(d&&domUtils.isTagNode(d,"span")){var e=a.createBookmark();utils.each(domUtils.getElementsByTagName(d,"span"),function(a){a.parentNode&&!domUtils.isBookmarkNode(a)&&("backcolor"==b&&domUtils.getComputedStyle(a,"background-color").toLowerCase()===c||(domUtils.removeStyle(a,g[b]),0==a.style.cssText.replace(/^\s+$/,"").length&&domUtils.remove(a,!0)))}),a.moveToBookmark(e)}}}function c(c,d,e){var f,g=c.collapsed,h=c.createBookmark();if(g)for(f=h.start.parentNode;dtd.$inline[f.tagName];)f=f.parentNode;else f=domUtils.getCommonAncestor(h.start,h.end);utils.each(domUtils.getElementsByTagName(f,"span"),function(b){if(b.parentNode&&!domUtils.isBookmarkNode(b)){if(/\s*border\s*:\s*none;?\s*/i.test(b.style.cssText))return void(/^\s*border\s*:\s*none;?\s*$/.test(b.style.cssText)?domUtils.remove(b,!0):domUtils.removeStyle(b,"border"));if(/border/i.test(b.style.cssText)&&"SPAN"==b.parentNode.tagName&&/border/i.test(b.parentNode.style.cssText)&&(b.style.cssText=b.style.cssText.replace(/border[^:]*:[^;]+;?/gi,"")),"fontborder"!=d||"none"!=e)for(var c=b.nextSibling;c&&1==c.nodeType&&"SPAN"==c.tagName;)if(domUtils.isBookmarkNode(c)&&"fontborder"==d)b.appendChild(c),c=b.nextSibling;else{if(c.style.cssText==b.style.cssText&&(domUtils.moveChild(c,b),domUtils.remove(c)),b.nextSibling===c)break;c=b.nextSibling}if(a(b),browser.ie&&browser.version>8){var f=domUtils.findParent(b,function(a){return"SPAN"==a.tagName&&/background-color/.test(a.style.cssText)});f&&!/background-color/.test(b.style.cssText)&&(b.style.backgroundColor=f.style.backgroundColor)}}}),c.moveToBookmark(h),b(c,d,e)}var d=this,e={forecolor:"color",backcolor:"background-color",fontsize:"font-size",fontfamily:"font-family",underline:"text-decoration",strikethrough:"text-decoration",fontborder:"border"},f={underline:1,strikethrough:1,fontborder:1},g={forecolor:"color",backcolor:"background-color",fontsize:"font-size",fontfamily:"font-family"};d.setOpt({fontfamily:[{name:"songti",val:"宋体,SimSun"},{name:"yahei",val:"微软雅黑,Microsoft YaHei"},{name:"kaiti",val:"楷体,楷体_GB2312, SimKai"},{name:"heiti",val:"黑体, SimHei"},{name:"lishu",val:"隶书, SimLi"},{name:"andaleMono",val:"andale mono"},{name:"arial",val:"arial, helvetica,sans-serif"},{name:"arialBlack",val:"arial black,avant garde"},{name:"comicSansMs",val:"comic sans ms"},{name:"impact",val:"impact,chicago"},{name:"timesNewRoman",val:"times new roman"}],fontsize:[10,11,12,14,16,18,20,24,36]}),d.addInputRule(function(a){utils.each(a.getNodesByTagName("u s del font strike"),function(a){if("font"==a.tagName){var b=[];for(var c in a.attrs)switch(c){case"size":b.push("font-size:"+({1:"10",2:"12",3:"16",4:"18",5:"24",6:"32",7:"48"}[a.attrs[c]]||a.attrs[c])+"px");break;case"color":b.push("color:"+a.attrs[c]);break;case"face":b.push("font-family:"+a.attrs[c]);break;case"style":b.push(a.attrs[c])}a.attrs={style:b.join(";")}}else{var d="u"==a.tagName?"underline":"line-through";a.attrs={style:(a.getAttr("style")||"")+"text-decoration:"+d+";"}}a.tagName="span"})});for(var h in e)!function(a,b){UE.commands[a]={execCommand:function(d,e){e=e||(this.queryCommandState(d)?"none":"underline"==d?"underline":"fontborder"==d?"1px solid #000":"line-through");var g,h=this,i=this.selection.getRange();if("default"==e)i.collapsed&&(g=h.document.createTextNode("font"),i.insertNode(g).select()),h.execCommand("removeFormat","span,a",b),g&&(i.setStartBefore(g).collapse(!0),domUtils.remove(g)),c(i,d,e),i.select();else if(i.collapsed){var j=domUtils.findParentByTagName(i.startContainer,"span",!0);if(g=h.document.createTextNode("font"),!j||j.children.length||j[browser.ie?"innerText":"textContent"].replace(fillCharReg,"").length){if(i.insertNode(g),i.selectNode(g).select(),j=i.document.createElement("span"),f[a]){if(domUtils.findParentByTagName(g,"a",!0))return i.setStartBefore(g).setCursor(),void domUtils.remove(g);h.execCommand("removeFormat","span,a",b)}if(j.style.cssText=b+":"+e,g.parentNode.insertBefore(j,g),!browser.ie||browser.ie&&9==browser.version)for(var k=j.parentNode;!domUtils.isBlockElm(k);)"SPAN"==k.tagName&&(j.style.cssText=k.style.cssText+";"+j.style.cssText),k=k.parentNode;opera?setTimeout(function(){i.setStart(j,0).collapse(!0),c(i,d,e),i.select()}):(i.setStart(j,0).collapse(!0),c(i,d,e),i.select())}else i.insertNode(g),f[a]&&(i.selectNode(g).select(),h.execCommand("removeFormat","span,a",b,null),j=domUtils.findParentByTagName(g,"span",!0),i.setStartBefore(g)),j&&(j.style.cssText+=";"+b+":"+e),i.collapse(!0).select();domUtils.remove(g)}else f[a]&&h.queryCommandValue(a)&&h.execCommand("removeFormat","span,a",b),i=h.selection.getRange(),i.applyInlineStyle("span",{style:b+":"+e}),c(i,d,e),i.select();return!0},queryCommandValue:function(a){var c=this.selection.getStart();if("underline"==a||"strikethrough"==a){for(var d,e=c;e&&!domUtils.isBlockElm(e)&&!domUtils.isBody(e);){if(1==e.nodeType&&(d=domUtils.getComputedStyle(e,b),"none"!=d))return d;e=e.parentNode}return"none"}if("fontborder"==a){for(var f,g=c;g&&dtd.$inline[g.tagName];){if((f=domUtils.getComputedStyle(g,"border"))&&/1px/.test(f)&&/solid/.test(f))return f;g=g.parentNode}return""}if("FontSize"==a){var h=domUtils.getComputedStyle(c,b),g=/^([\d\.]+)(\w+)$/.exec(h);return g?Math.floor(g[1])+g[2]:h}return domUtils.getComputedStyle(c,b)},queryCommandState:function(a){if(!f[a])return 0;var b=this.queryCommandValue(a);return"fontborder"==a?/1px/.test(b)&&/solid/.test(b):"underline"==a?/underline/.test(b):/line\-through/.test(b)}}}(h,e[h])},UE.plugins.link=function(){function a(a){var b=a.startContainer,c=a.endContainer;(b=domUtils.findParentByTagName(b,"a",!0))&&a.setStartBefore(b),(c=domUtils.findParentByTagName(c,"a",!0))&&a.setEndAfter(c)}function b(b,c,d){var e=b.cloneRange(),f=d.queryCommandValue("link");a(b=b.adjustmentBoundary());var g=b.startContainer;if(1==g.nodeType&&f&&(g=g.childNodes[b.startOffset],g&&1==g.nodeType&&"A"==g.tagName&&/^(?:https?|ftp|file)\s*:\s*\/\//.test(g[browser.ie?"innerText":"textContent"])&&(g[browser.ie?"innerText":"textContent"]=utils.html(c.textValue||c.href))),e.collapsed&&!f||(b.removeInlineStyle("a"),e=b.cloneRange()),e.collapsed){var h=b.document.createElement("a"),i="";c.textValue?(i=utils.html(c.textValue),delete c.textValue):i=utils.html(c.href),domUtils.setAttributes(h,c),g=domUtils.findParentByTagName(e.startContainer,"a",!0),g&&domUtils.isInNodeEndBoundary(e,g)&&b.setStartAfter(g).collapse(!0),h[browser.ie?"innerText":"textContent"]=i,b.insertNode(h).selectNode(h)}else b.applyInlineStyle("a",c)}UE.commands.unlink={execCommand:function(){var b,c=this.selection.getRange();c.collapsed&&!domUtils.findParentByTagName(c.startContainer,"a",!0)||(b=c.createBookmark(),a(c),c.removeInlineStyle("a").moveToBookmark(b).select())},queryCommandState:function(){return!this.highlight&&this.queryCommandValue("link")?0:-1}},UE.commands.link={execCommand:function(a,c){var d;c._href&&(c._href=utils.unhtml(c._href,/[<">]/g)),c.href&&(c.href=utils.unhtml(c.href,/[<">]/g)),c.textValue&&(c.textValue=utils.unhtml(c.textValue,/[<">]/g)),b(d=this.selection.getRange(),c,this),d.collapse().select(!0)},queryCommandValue:function(){var a,b=this.selection.getRange();if(!b.collapsed){b.shrinkBoundary();var c=3!=b.startContainer.nodeType&&b.startContainer.childNodes[b.startOffset]?b.startContainer.childNodes[b.startOffset]:b.startContainer,d=3==b.endContainer.nodeType||0==b.endOffset?b.endContainer:b.endContainer.childNodes[b.endOffset-1],e=b.getCommonAncestor();if(a=domUtils.findParentByTagName(e,"a",!0),!a&&1==e.nodeType)for(var f,g,h,i=e.getElementsByTagName("a"),j=0;h=i[j++];)if(f=domUtils.getPosition(h,c),g=domUtils.getPosition(h,d),(f&domUtils.POSITION_FOLLOWING||f&domUtils.POSITION_CONTAINS)&&(g&domUtils.POSITION_PRECEDING||g&domUtils.POSITION_CONTAINS)){a=h;break}return a}if(a=b.startContainer,a=1==a.nodeType?a:a.parentNode,a&&(a=domUtils.findParentByTagName(a,"a",!0))&&!domUtils.isInNodeEndBoundary(b,a))return a},queryCommandState:function(){var a=this.selection.getRange().getClosedNode(),b=a&&("edui-faked-video"==a.className||a.className.indexOf("edui-upload-video")!=-1);return b?-1:0}}},UE.plugins.insertframe=function(){function a(){b._iframe&&delete b._iframe}var b=this;b.addListener("selectionchange",function(){a()})},UE.commands.scrawl={queryCommandState:function(){return browser.ie&&browser.version<=8?-1:0}},UE.plugins.removeformat=function(){var a=this;a.setOpt({removeFormatTags:"b,big,code,del,dfn,em,font,i,ins,kbd,q,samp,small,span,strike,strong,sub,sup,tt,u,var",removeFormatAttributes:"class,style,lang,width,height,align,hspace,valign"}),a.commands.removeformat={execCommand:function(a,b,c,d,e){function f(a){if(3==a.nodeType||"span"!=a.tagName.toLowerCase())return 0;if(browser.ie){var b=a.attributes;if(b.length){for(var c=0,d=b.length;c
    "+this.getContent(null,null,!0)+"
    "),b.close()},notNeedUndo:1},UE.plugins.selectall=function(){var a=this;a.commands.selectall={execCommand:function(){var a=this,b=a.body,c=a.selection.getRange();c.selectNodeContents(b),domUtils.isEmptyBlock(b)&&(browser.opera&&b.firstChild&&1==b.firstChild.nodeType&&c.setStartAtFirst(b.firstChild),c.collapse(!0)),c.select(!0)},notNeedUndo:1},a.addshortcutkey({selectAll:"ctrl+65"})},UE.plugins.paragraph=function(){var a=this,b=domUtils.isBlockElm,c=["TD","LI","PRE"],d=function(a,d,e,f){var g,h=a.createBookmark(),i=function(a){return 1==a.nodeType?"br"!=a.tagName.toLowerCase()&&!domUtils.isBookmarkNode(a):!domUtils.isWhitespace(a)};a.enlarge(!0);for(var j,k=a.createBookmark(),l=domUtils.getNextDomNode(k.start,!1,i),m=a.cloneRange();l&&!(domUtils.getPosition(l,k.end)&domUtils.POSITION_FOLLOWING);)if(3!=l.nodeType&&b(l))l=domUtils.getNextDomNode(l,!0,i);else{for(m.setStartBefore(l);l&&l!==k.end&&!b(l);)j=l,l=domUtils.getNextDomNode(l,!1,null,function(a){return!b(a)});m.setEndAfter(j),g=a.document.createElement(d),e&&(domUtils.setAttributes(g,e),f&&"customstyle"==f&&e.style&&(g.style.cssText=e.style)),g.appendChild(m.extractContents()),domUtils.isEmptyNode(g)&&domUtils.fillChar(a.document,g),m.insertNode(g);var n=g.parentNode;b(n)&&!domUtils.isBody(g.parentNode)&&utils.indexOf(c,n.tagName)==-1&&(f&&"customstyle"==f||(n.getAttribute("dir")&&g.setAttribute("dir",n.getAttribute("dir")),n.style.cssText&&(g.style.cssText=n.style.cssText+";"+g.style.cssText),n.style.textAlign&&!g.style.textAlign&&(g.style.textAlign=n.style.textAlign),n.style.textIndent&&!g.style.textIndent&&(g.style.textIndent=n.style.textIndent),n.style.padding&&!g.style.padding&&(g.style.padding=n.style.padding)),e&&/h\d/i.test(n.tagName)&&!/h\d/i.test(g.tagName)?(domUtils.setAttributes(n,e),f&&"customstyle"==f&&e.style&&(n.style.cssText=e.style),domUtils.remove(g,!0),g=n):domUtils.remove(g.parentNode,!0)),l=utils.indexOf(c,n.tagName)!=-1?n:g,l=domUtils.getNextDomNode(l,!1,i)}return a.moveToBookmark(k).moveToBookmark(h)};a.setOpt("paragraph",{p:"",h1:"",h2:"",h3:"",h4:"",h5:"",h6:""}),a.commands.paragraph={execCommand:function(a,b,c,e){var f=this.selection.getRange();if(f.collapsed){var g=this.document.createTextNode("p");if(f.insertNode(g),browser.ie){var h=g.previousSibling;h&&domUtils.isWhitespace(h)&&domUtils.remove(h),h=g.nextSibling,h&&domUtils.isWhitespace(h)&&domUtils.remove(h)}}if(f=d(f,b,c,e),g&&(f.setStartBefore(g).collapse(!0),pN=g.parentNode,domUtils.remove(g),domUtils.isBlockElm(pN)&&domUtils.isEmptyNode(pN)&&domUtils.fillNode(this.document,pN)),browser.gecko&&f.collapsed&&1==f.startContainer.nodeType){var i=f.startContainer.childNodes[f.startOffset];i&&1==i.nodeType&&i.tagName.toLowerCase()==b&&f.setStart(i,0).collapse(!0)}return f.select(),!0},queryCommandValue:function(){var a=domUtils.filterNodeList(this.selection.getStartElementPath(),"p h1 h2 h3 h4 h5 h6");return a?a.tagName.toLowerCase():""}}},function(){var a=domUtils.isBlockElm,b=function(a){return domUtils.filterNodeList(a.selection.getStartElementPath(),function(a){return a&&1==a.nodeType&&a.getAttribute("dir")})},c=function(c,d,e){var f,g=function(a){return 1==a.nodeType?!domUtils.isBookmarkNode(a):!domUtils.isWhitespace(a)},h=b(d);if(h&&c.collapsed)return h.setAttribute("dir",e),c;f=c.createBookmark(),c.enlarge(!0);for(var i,j=c.createBookmark(),k=domUtils.getNextDomNode(j.start,!1,g),l=c.cloneRange();k&&!(domUtils.getPosition(k,j.end)&domUtils.POSITION_FOLLOWING);)if(3!=k.nodeType&&a(k))k=domUtils.getNextDomNode(k,!0,g);else{for(l.setStartBefore(k);k&&k!==j.end&&!a(k);)i=k,k=domUtils.getNextDomNode(k,!1,null,function(b){return!a(b)});l.setEndAfter(i);var m=l.getCommonAncestor();if(!domUtils.isBody(m)&&a(m))m.setAttribute("dir",e),k=m;else{var n=c.document.createElement("p");n.setAttribute("dir",e);var o=l.extractContents();n.appendChild(o),l.insertNode(n),k=n}k=domUtils.getNextDomNode(k,!1,g)}return c.moveToBookmark(j).moveToBookmark(f)};UE.commands.directionality={execCommand:function(a,b){var d=this.selection.getRange();if(d.collapsed){var e=this.document.createTextNode("d");d.insertNode(e)}return c(d,this,b),e&&(d.setStartBefore(e).collapse(!0),domUtils.remove(e)),d.select(),!0},queryCommandValue:function(){var a=b(this);return a?a.getAttribute("dir"):"ltr"}}}(),UE.plugins.horizontal=function(){var a=this;a.commands.horizontal={execCommand:function(a){var b=this;if(b.queryCommandState(a)!==-1){b.execCommand("insertHtml","
    ");var c=b.selection.getRange(),d=c.startContainer;if(1==d.nodeType&&!d.childNodes[c.startOffset]){var e;(e=d.childNodes[c.startOffset-1])&&1==e.nodeType&&"HR"==e.tagName&&("p"==b.options.enterTag?(e=b.document.createElement("p"),c.insertNode(e),c.setStart(e,0).setCursor()):(e=b.document.createElement("br"),c.insertNode(e),c.setStartBefore(e).setCursor()))}return!0}},queryCommandState:function(){return domUtils.filterNodeList(this.selection.getStartElementPath(),"table")?-1:0}},a.addListener("delkeydown",function(a,b){var c=this.selection.getRange();if(c.txtToElmBoundary(!0),domUtils.isStartInblock(c)){var d=c.startContainer,e=d.previousSibling;if(e&&domUtils.isTagNode(e,"hr"))return domUtils.remove(e),c.select(),domUtils.preventDefault(b),!0}})},UE.commands.time=UE.commands.date={execCommand:function(a,b){function c(a,b){var c=("0"+a.getHours()).slice(-2),d=("0"+a.getMinutes()).slice(-2),e=("0"+a.getSeconds()).slice(-2);return b=b||"hh:ii:ss",b.replace(/hh/gi,c).replace(/ii/gi,d).replace(/ss/gi,e)}function d(a,b){var c=("000"+a.getFullYear()).slice(-4),d=c.slice(-2),e=("0"+(a.getMonth()+1)).slice(-2),f=("0"+a.getDate()).slice(-2);return b=b||"yyyy-mm-dd",b.replace(/yyyy/gi,c).replace(/yy/gi,d).replace(/mm/gi,e).replace(/dd/gi,f)}var e=new Date;this.execCommand("insertHtml","time"==a?c(e,b):d(e,b))}},UE.plugins.rowspacing=function(){var a=this;a.setOpt({rowspacingtop:["5","10","15","20","25"],rowspacingbottom:["5","10","15","20","25"]}),a.commands.rowspacing={execCommand:function(a,b,c){return this.execCommand("paragraph","p",{style:"margin-"+c+":"+b+"px"}),!0},queryCommandValue:function(a,b){var c,d=domUtils.filterNodeList(this.selection.getStartElementPath(),function(a){return domUtils.isBlockElm(a)});return d?(c=domUtils.getComputedStyle(d,"margin-"+b).replace(/[^\d]/g,""),c?c:0):0}}},UE.plugins.lineheight=function(){var a=this;a.setOpt({lineheight:["1","1.5","1.75","2","3","4","5"]}),a.commands.lineheight={execCommand:function(a,b){return this.execCommand("paragraph","p",{style:"line-height:"+("1"==b?"normal":b+"em")}),!0},queryCommandValue:function(){var a=domUtils.filterNodeList(this.selection.getStartElementPath(),function(a){return domUtils.isBlockElm(a)});if(a){var b=domUtils.getComputedStyle(a,"line-height");return"normal"==b?1:b.replace(/[^\d.]*/gi,"")}}}},UE.plugins.insertcode=function(){var a=this;a.ready(function(){utils.cssRule("pre","pre{margin:.5em 0;padding:.4em .6em;border-radius:8px;background:#f8f8f8;}",a.document)}),a.setOpt("insertcode",{as3:"ActionScript3",bash:"Bash/Shell",cpp:"C/C++",css:"Css",cf:"CodeFunction","c#":"C#",delphi:"Delphi",diff:"Diff",erlang:"Erlang",groovy:"Groovy",html:"Html",java:"Java",jfx:"JavaFx",js:"Javascript",pl:"Perl",php:"Php",plain:"Plain Text",ps:"PowerShell",python:"Python",ruby:"Ruby",scala:"Scala",sql:"Sql",vb:"Vb",xml:"Xml"}),a.commands.insertcode={execCommand:function(a,b){var c=this,d=c.selection.getRange(),e=domUtils.findParentByTagName(d.startContainer,"pre",!0);if(e)e.className="brush:"+b+";toolbar:false;";else{var f="";if(d.collapsed)f=browser.ie&&browser.ie11below?browser.version<=8?" ":"":"
    ";else{var g=d.extractContents(),h=c.document.createElement("div");h.appendChild(g),utils.each(UE.filterNode(UE.htmlparser(h.innerHTML.replace(/[\r\t]/g,"")),c.options.filterTxtRules).children,function(a){if(browser.ie&&browser.ie11below&&browser.version>8)"element"==a.type?"br"==a.tagName?f+="\n":dtd.$empty[a.tagName]||(utils.each(a.children,function(b){"element"==b.type?"br"==b.tagName?f+="\n":dtd.$empty[a.tagName]||(f+=b.innerText()):f+=b.data}),/\n$/.test(f)||(f+="\n")):f+=a.data+"\n",!a.nextSibling()&&/\n$/.test(f)&&(f=f.replace(/\n$/,""));else if(browser.ie&&browser.ie11below)"element"==a.type?"br"==a.tagName?f+="
    ":dtd.$empty[a.tagName]||(utils.each(a.children,function(b){"element"==b.type?"br"==b.tagName?f+="
    ":dtd.$empty[a.tagName]||(f+=b.innerText()):f+=b.data}),/br>$/.test(f)||(f+="
    ")):f+=a.data+"
    ",!a.nextSibling()&&/
    $/.test(f)&&(f=f.replace(/
    $/,""));else if(f+="element"==a.type?dtd.$empty[a.tagName]?"":a.innerText():a.data,!/br\/?\s*>$/.test(f)){if(!a.nextSibling())return;f+="
    "}})}c.execCommand("inserthtml",'
    '+f+"
    ",!0),e=c.document.getElementById("coder"),domUtils.removeAttributes(e,"id");var i=e.previousSibling;i&&(3==i.nodeType&&1==i.nodeValue.length&&browser.ie&&6==browser.version||domUtils.isEmptyBlock(i))&&domUtils.remove(i);var d=c.selection.getRange();domUtils.isEmptyBlock(e)?d.setStart(e,0).setCursor(!1,!0):d.selectNodeContents(e).select()}},queryCommandValue:function(){var a=this.selection.getStartElementPath(),b="";return utils.each(a,function(a){if("PRE"==a.nodeName){var c=a.className.match(/brush:([^;]+)/);return b=c&&c[1]?c[1]:"",!1}}),b}},a.addInputRule(function(a){utils.each(a.getNodesByTagName("pre"),function(a){var b=a.getNodesByTagName("br");if(b.length)return void(browser.ie&&browser.ie11below&&browser.version>8&&utils.each(b,function(a){var b=UE.uNode.createText("\n");a.parentNode.insertBefore(b,a),a.parentNode.removeChild(a)}));if(!(browser.ie&&browser.ie11below&&browser.version>8)){var c=a.innerText().split(/\n/);a.innerHTML(""),utils.each(c,function(b){b.length&&a.appendChild(UE.uNode.createText(b)),a.appendChild(UE.uNode.createElement("br"))})}})}),a.addOutputRule(function(a){utils.each(a.getNodesByTagName("pre"),function(a){var b="";utils.each(a.children,function(a){b+="text"==a.type?a.data.replace(/[ ]/g," ").replace(/\n$/,""):"br"==a.tagName?"\n":dtd.$empty[a.tagName]?a.innerText():""}),a.innerText(b.replace(/( |\n)+$/,""))})}),a.notNeedCodeQuery={help:1,undo:1,redo:1,source:1,print:1,searchreplace:1,fullscreen:1,preview:1,insertparagraph:1,elementpath:1,insertcode:1,inserthtml:1,selectall:1};a.queryCommandState;a.queryCommandState=function(a){var b=this;return!b.notNeedCodeQuery[a.toLowerCase()]&&b.selection&&b.queryCommandValue("insertcode")?-1:UE.Editor.prototype.queryCommandState.apply(this,arguments)},a.addListener("beforeenterkeydown",function(){var b=a.selection.getRange(),c=domUtils.findParentByTagName(b.startContainer,"pre",!0);if(c){if(a.fireEvent("saveScene"),b.collapsed||b.deleteContents(),!browser.ie||browser.ie9above){var c,d=a.document.createElement("br");b.insertNode(d).setStartAfter(d).collapse(!0); +var e=d.nextSibling;e||browser.ie&&!(browser.version>10)?b.setStartAfter(d):b.insertNode(d.cloneNode(!1)),c=d.previousSibling;for(var f;c;)if(f=c,c=c.previousSibling,!c||"BR"==c.nodeName){c=f;break}if(c){for(var g="";c&&"BR"!=c.nodeName&&new RegExp("^[\\s"+domUtils.fillChar+"]*$").test(c.nodeValue);)g+=c.nodeValue,c=c.nextSibling;if("BR"!=c.nodeName){var h=c.nodeValue.match(new RegExp("^([\\s"+domUtils.fillChar+"]+)"));h&&h[1]&&(g+=h[1])}g&&(g=a.document.createTextNode(g),b.insertNode(g).setStartAfter(g))}b.collapse(!0).select(!0)}else if(browser.version>8){var i=a.document.createTextNode("\n"),j=b.startContainer;if(0==b.startOffset){var k=j.previousSibling;if(k){b.insertNode(i);var l=a.document.createTextNode(" ");b.setStartAfter(i).insertNode(l).setStart(l,0).collapse(!0).select(!0)}}else{b.insertNode(i).setStartAfter(i);var l=a.document.createTextNode(" ");j=b.startContainer.childNodes[b.startOffset],j&&!/^\n/.test(j.nodeValue)&&b.setStartBefore(i),b.insertNode(l).setStart(l,0).collapse(!0).select(!0)}}else{var d=a.document.createElement("br");b.insertNode(d),b.insertNode(a.document.createTextNode(domUtils.fillChar)),b.setStartAfter(d),c=d.previousSibling;for(var f;c;)if(f=c,c=c.previousSibling,!c||"BR"==c.nodeName){c=f;break}if(c){for(var g="";c&&"BR"!=c.nodeName&&new RegExp("^[ "+domUtils.fillChar+"]*$").test(c.nodeValue);)g+=c.nodeValue,c=c.nextSibling;if("BR"!=c.nodeName){var h=c.nodeValue.match(new RegExp("^([ "+domUtils.fillChar+"]+)"));h&&h[1]&&(g+=h[1])}g=a.document.createTextNode(g),b.insertNode(g).setStartAfter(g)}b.collapse(!0).select()}return a.fireEvent("saveScene"),!0}}),a.addListener("tabkeydown",function(b,c){var d=a.selection.getRange(),e=domUtils.findParentByTagName(d.startContainer,"pre",!0);if(e){if(a.fireEvent("saveScene"),c.shiftKey);else if(d.collapsed){var f=a.document.createTextNode(" ");d.insertNode(f).setStartAfter(f).collapse(!0).select(!0)}else{for(var g=d.createBookmark(),h=g.start.previousSibling;h;){if(e.firstChild===h&&!domUtils.isBr(h)){e.insertBefore(a.document.createTextNode(" "),h);break}if(domUtils.isBr(h)){e.insertBefore(a.document.createTextNode(" "),h.nextSibling);break}h=h.previousSibling}var i=g.end;for(h=g.start.nextSibling,e.firstChild===g.start&&e.insertBefore(a.document.createTextNode(" "),h.nextSibling);h&&h!==i;){if(domUtils.isBr(h)&&h.nextSibling){if(h.nextSibling===i)break;e.insertBefore(a.document.createTextNode(" "),h.nextSibling)}h=h.nextSibling}d.moveToBookmark(g).select()}return a.fireEvent("saveScene"),!0}}),a.addListener("beforeinserthtml",function(a,b){var c=this,d=c.selection.getRange(),e=domUtils.findParentByTagName(d.startContainer,"pre",!0);if(e){d.collapsed||d.deleteContents();var f="";if(browser.ie&&browser.version>8){utils.each(UE.filterNode(UE.htmlparser(b),c.options.filterTxtRules).children,function(a){"element"==a.type?"br"==a.tagName?f+="\n":dtd.$empty[a.tagName]||(utils.each(a.children,function(b){"element"==b.type?"br"==b.tagName?f+="\n":dtd.$empty[a.tagName]||(f+=b.innerText()):f+=b.data}),/\n$/.test(f)||(f+="\n")):f+=a.data+"\n",!a.nextSibling()&&/\n$/.test(f)&&(f=f.replace(/\n$/,""))});var g=c.document.createTextNode(utils.html(f.replace(/ /g," ")));d.insertNode(g).selectNode(g).select()}else{var h=c.document.createDocumentFragment();utils.each(UE.filterNode(UE.htmlparser(b),c.options.filterTxtRules).children,function(a){"element"==a.type?"br"==a.tagName?h.appendChild(c.document.createElement("br")):dtd.$empty[a.tagName]||(utils.each(a.children,function(b){"element"==b.type?"br"==b.tagName?h.appendChild(c.document.createElement("br")):dtd.$empty[a.tagName]||h.appendChild(c.document.createTextNode(utils.html(b.innerText().replace(/ /g," ")))):h.appendChild(c.document.createTextNode(utils.html(b.data.replace(/ /g," "))))}),"BR"!=h.lastChild.nodeName&&h.appendChild(c.document.createElement("br"))):h.appendChild(c.document.createTextNode(utils.html(a.data.replace(/ /g," ")))),a.nextSibling()||"BR"!=h.lastChild.nodeName||h.removeChild(h.lastChild)}),d.insertNode(h).select()}return!0}}),a.addListener("keydown",function(a,b){var c=this,d=b.keyCode||b.which;if(40==d){var e,f=c.selection.getRange(),g=f.startContainer;if(f.collapsed&&(e=domUtils.findParentByTagName(f.startContainer,"pre",!0))&&!e.nextSibling){for(var h=e.lastChild;h&&"BR"==h.nodeName;)h=h.previousSibling;(h===g||f.startContainer===e&&f.startOffset==e.childNodes.length)&&(c.execCommand("insertparagraph"),domUtils.preventDefault(b))}}}),a.addListener("delkeydown",function(b,c){var d=this.selection.getRange();d.txtToElmBoundary(!0);var e=d.startContainer;if(domUtils.isTagNode(e,"pre")&&d.collapsed&&domUtils.isStartInblock(d)){var f=a.document.createElement("p");return domUtils.fillNode(a.document,f),e.parentNode.insertBefore(f,e),domUtils.remove(e),d.setStart(f,0).setCursor(!1,!0),domUtils.preventDefault(c),!0}})},UE.commands.cleardoc={execCommand:function(a){var b=this,c=b.options.enterTag,d=b.selection.getRange();"br"==c?(b.body.innerHTML="
    ",d.setStart(b.body,0).setCursor()):(b.body.innerHTML="

    "+(ie?"":"
    ")+"

    ",d.setStart(b.body.firstChild,0).setCursor(!1,!0)),setTimeout(function(){b.fireEvent("clearDoc")},0)}},UE.plugin.register("anchor",function(){return{bindEvents:{ready:function(){utils.cssRule("anchor",".anchorclass{background: url('"+this.options.themePath+this.options.theme+"/images/anchor.gif') no-repeat scroll left center transparent;cursor: auto;display: inline-block;height: 16px;width: 15px;}",this.document)}},outputRule:function(a){utils.each(a.getNodesByTagName("img"),function(a){var b;(b=a.getAttr("anchorname"))&&(a.tagName="a",a.setAttr({anchorname:"",name:b,"class":""}))})},inputRule:function(a){utils.each(a.getNodesByTagName("a"),function(a){var b;(b=a.getAttr("name"))&&!a.getAttr("href")&&(a.tagName="img",a.setAttr({anchorname:a.getAttr("name"),"class":"anchorclass"}),a.setAttr("name"))})},commands:{anchor:{execCommand:function(a,b){var c=this.selection.getRange(),d=c.getClosedNode();if(d&&d.getAttribute("anchorname"))b?d.setAttribute("anchorname",b):(c.setStartBefore(d).setCursor(),domUtils.remove(d));else if(b){var e=this.document.createElement("img");c.collapse(!0),domUtils.setAttributes(e,{anchorname:b,"class":"anchorclass"}),c.insertNode(e).setStartAfter(e).setCursor(!1,!0)}}}}}}),UE.plugins.wordcount=function(){var a=this;a.setOpt("wordCount",!0),a.addListener("contentchange",function(){a.fireEvent("wordcount")});var b;a.addListener("ready",function(){var a=this;domUtils.on(a.body,"keyup",function(c){var d=c.keyCode||c.which,e={16:1,18:1,20:1,37:1,38:1,39:1,40:1};d in e||(clearTimeout(b),b=setTimeout(function(){a.fireEvent("wordcount")},200))})})},UE.plugins.pagebreak=function(){function a(a){if(domUtils.isEmptyBlock(a)){for(var b,d=a.firstChild;d&&1==d.nodeType&&domUtils.isEmptyBlock(d);)b=d,d=d.firstChild;!b&&(b=a),domUtils.fillNode(c.document,b)}}function b(a){return a&&1==a.nodeType&&"HR"==a.tagName&&"pagebreak"==a.className}var c=this,d=["td"];c.setOpt("pageBreakTag","_ueditor_page_break_tag_"),c.ready(function(){utils.cssRule("pagebreak",".pagebreak{display:block;clear:both !important;cursor:default !important;width: 100% !important;margin:0;}",c.document)}),c.addInputRule(function(a){a.traversal(function(a){if("text"==a.type&&a.data==c.options.pageBreakTag){var b=UE.uNode.createElement('
    ');a.parentNode.insertBefore(b,a),a.parentNode.removeChild(a)}})}),c.addOutputRule(function(a){utils.each(a.getNodesByTagName("hr"),function(a){if("pagebreak"==a.getAttr("class")){var b=UE.uNode.createText(c.options.pageBreakTag);a.parentNode.insertBefore(b,a),a.parentNode.removeChild(a)}})}),c.commands.pagebreak={execCommand:function(){var e=c.selection.getRange(),f=c.document.createElement("hr");domUtils.setAttributes(f,{"class":"pagebreak",noshade:"noshade",size:"5"}),domUtils.unSelectable(f);var g,h=domUtils.findParentByTagName(e.startContainer,d,!0),i=[];if(h)switch(h.tagName){case"TD":if(g=h.parentNode,g.previousSibling)g.parentNode.insertBefore(f,g),i=domUtils.findParents(f);else{var j=domUtils.findParentByTagName(g,"table");j.parentNode.insertBefore(f,j),i=domUtils.findParents(f,!0)}g=i[1],f!==g&&domUtils.breakParent(f,g),c.fireEvent("afteradjusttable",c.document)}else{if(!e.collapsed){e.deleteContents();for(var k=e.startContainer;!domUtils.isBody(k)&&domUtils.isBlockElm(k)&&domUtils.isEmptyNode(k);)e.setStartBefore(k).collapse(!0),domUtils.remove(k),k=e.startContainer}e.insertNode(f);for(var l,g=f.parentNode;!domUtils.isBody(g);)domUtils.breakParent(f,g),l=f.nextSibling,l&&domUtils.isEmptyBlock(l)&&domUtils.remove(l),g=f.parentNode;l=f.nextSibling;var m=f.previousSibling;if(b(m)?domUtils.remove(m):m&&a(m),l)b(l)?domUtils.remove(l):a(l),e.setEndAfter(f).collapse(!1);else{var n=c.document.createElement("p");f.parentNode.appendChild(n),domUtils.fillNode(c.document,n),e.setStart(n,0).collapse(!0)}e.select(!0)}}}},UE.plugin.register("wordimage",function(){var a=this,b=[];return{commands:{wordimage:{execCommand:function(){for(var b,c=domUtils.getElementsByTagName(a.body,"img"),d=[],e=0;b=c[e++];){var f=b.getAttribute("word_img");f&&d.push(f)}return d},queryCommandState:function(){b=domUtils.getElementsByTagName(a.body,"img");for(var c,d=0;c=b[d++];)if(c.getAttribute("word_img"))return 1;return-1},notNeedUndo:!0}},inputRule:function(b){utils.each(b.getNodesByTagName("img"),function(b){var c=b.attrs,d=parseInt(c.width)<128||parseInt(c.height)<43,e=a.options,f=e.UEDITOR_HOME_URL+"themes/default/images/spacer.gif";c.src&&/^(?:(file:\/+))/.test(c.src)&&b.setAttr({width:c.width,height:c.height,alt:c.alt,word_img:c.src,src:f,style:"background:url("+(d?e.themePath+e.theme+"/images/word.gif":e.langPath+e.lang+"/images/localimage.png")+") no-repeat center center;border:1px solid #ddd"})})}}}),UE.plugins.dragdrop=function(){var a=this;a.ready(function(){domUtils.on(this.body,"dragend",function(){var b=a.selection.getRange(),c=b.getClosedNode()||a.selection.getStart();if(c&&"IMG"==c.tagName){for(var d,e=c.previousSibling;(d=c.nextSibling)&&1==d.nodeType&&"SPAN"==d.tagName&&!d.firstChild;)domUtils.remove(d);(!e||1!=e.nodeType||domUtils.isEmptyBlock(e))&&e||d&&(!d||domUtils.isEmptyBlock(d))||(e&&"P"==e.tagName&&!domUtils.isEmptyBlock(e)?(e.appendChild(c),domUtils.moveChild(d,e),domUtils.remove(d)):d&&"P"==d.tagName&&!domUtils.isEmptyBlock(d)&&d.insertBefore(c,d.firstChild),e&&"P"==e.tagName&&domUtils.isEmptyBlock(e)&&domUtils.remove(e),d&&"P"==d.tagName&&domUtils.isEmptyBlock(d)&&domUtils.remove(d),b.selectNode(c).select(),a.fireEvent("saveScene"))}})}),a.addListener("keyup",function(b,c){var d=c.keyCode||c.which;if(13==d){var e,f=a.selection.getRange();(e=domUtils.findParentByTagName(f.startContainer,"p",!0))&&"center"==domUtils.getComputedStyle(e,"text-align")&&domUtils.removeStyle(e,"text-align")}})},UE.plugins.undo=function(){function a(a,b){if(a.length!=b.length)return 0;for(var c=0,d=a.length;cf&&this.list.shift(),this.index=this.list.length-1,this.clearKey(),this.update())},this.update=function(){this.hasRedo=!!this.list[this.index+1],this.hasUndo=!!this.list[this.index-1]},this.reset=function(){this.list=[],this.index=0,this.hasUndo=!1,this.hasRedo=!1,this.clearKey()},this.clearKey=function(){m=0,k=null}}var d,e=this,f=e.options.maxUndoCount||20,g=e.options.maxInputCount||20,h=new RegExp(domUtils.fillChar+"|","gi"),i={ol:1,ul:1,table:1,tbody:1,tr:1,body:1},j=e.options.autoClearEmptyNode;e.undoManger=new c,e.undoManger.editor=e,e.addListener("saveScene",function(){var a=Array.prototype.splice.call(arguments,1);this.undoManger.save.apply(this.undoManger,a)}),e.addListener("reset",function(a,b){b||this.undoManger.reset()}),e.commands.redo=e.commands.undo={execCommand:function(a){this.undoManger[a]()},queryCommandState:function(a){return this.undoManger["has"+("undo"==a.toLowerCase()?"Undo":"Redo")]?0:-1},notNeedUndo:1};var k,l={16:1,17:1,18:1,37:1,38:1,39:1,40:1},m=0,n=!1;e.addListener("ready",function(){domUtils.on(this.body,"compositionstart",function(){n=!0}),domUtils.on(this.body,"compositionend",function(){n=!1})}),e.addshortcutkey({Undo:"ctrl+90",Redo:"ctrl+89"});var o=!0;e.addListener("keydown",function(a,b){function c(a){a.undoManger.save(!1,!0),a.fireEvent("selectionchange")}var e=this,f=b.keyCode||b.which;if(!(l[f]||b.ctrlKey||b.metaKey||b.shiftKey||b.altKey)){if(n)return;if(!e.selection.getRange().collapsed)return e.undoManger.save(!1,!0),void(o=!1);0==e.undoManger.list.length&&e.undoManger.save(!0),clearTimeout(d),d=setTimeout(function(){if(n)var a=setInterval(function(){n||(c(e),clearInterval(a))},300);else c(e)},200),k=f,m++,m>=g&&c(e)}}),e.addListener("keyup",function(a,b){var c=b.keyCode||b.which;if(!(l[c]||b.ctrlKey||b.metaKey||b.shiftKey||b.altKey)){if(n)return;o||(this.undoManger.save(!1,!0),o=!0)}}),e.stopCmdUndo=function(){e.__hasEnterExecCommand=!0},e.startCmdUndo=function(){e.__hasEnterExecCommand=!1}},UE.plugin.register("copy",function(){function a(){ZeroClipboard.config({debug:!1,swfPath:b.options.UEDITOR_HOME_URL+"third-party/zeroclipboard/ZeroClipboard.swf"});var a=b.zeroclipboard=new ZeroClipboard;a.on("copy",function(a){var c=a.client,d=b.selection.getRange(),e=document.createElement("div");e.appendChild(d.cloneContents()),c.setText(e.innerText||e.textContent),c.setHtml(e.innerHTML),d.select()}),a.on("mouseover mouseout",function(a){var b=a.target;"mouseover"==a.type?domUtils.addClass(b,"edui-state-hover"):"mouseout"==a.type&&domUtils.removeClasses(b,"edui-state-hover")}),a.on("wrongflash noflash",function(){ZeroClipboard.destroy()})}var b=this;return{bindEvents:{ready:function(){browser.ie||(window.ZeroClipboard?a():utils.loadFile(document,{src:b.options.UEDITOR_HOME_URL+"third-party/zeroclipboard/ZeroClipboard.js",tag:"script",type:"text/javascript",defer:"defer"},function(){a()}))}},commands:{copy:{execCommand:function(a){b.document.execCommand("copy")||alert(b.getLang("copymsg"))}}}}}),UE.plugins.paste=function(){function a(a){var b=this.document;if(!b.getElementById("baidu_pastebin")){var c=this.selection.getRange(),d=c.createBookmark(),e=b.createElement("div");e.id="baidu_pastebin",browser.webkit&&e.appendChild(b.createTextNode(domUtils.fillChar+domUtils.fillChar)),b.body.appendChild(e),d.start.style.display="",e.style.cssText="position:absolute;width:1px;height:1px;overflow:hidden;left:-1000px;white-space:nowrap;top:"+domUtils.getXY(d.start).y+"px",c.selectNodeContents(e).select(!0),setTimeout(function(){if(browser.webkit)for(var f,g=0,h=b.querySelectorAll("#baidu_pastebin");f=h[g++];){if(!domUtils.isEmptyNode(f)){e=f;break}domUtils.remove(f)}try{e.parentNode.removeChild(e)}catch(i){}c.moveToBookmark(d).select(!0),a(e)},0)}}function b(a){return a.replace(/<(\/?)([\w\-]+)([^>]*)>/gi,function(a,b,c,d){return c=c.toLowerCase(),{img:1}[c]?a:(d=d.replace(/([\w\-]*?)\s*=\s*(("([^"]*)")|('([^']*)')|([^\s>]+))/gi,function(a,b,c){return{src:1,href:1,name:1}[b.toLowerCase()]?b+"="+c+" ":""}),{span:1,div:1}[c]?"":"<"+b+c+" "+utils.trim(d)+">")})}function c(a){var c;if(a.firstChild){for(var h,i=domUtils.getElementsByTagName(a,"span"),j=0;h=i[j++];)"_baidu_cut_start"!=h.id&&"_baidu_cut_end"!=h.id||domUtils.remove(h);if(browser.webkit){for(var k,l=a.querySelectorAll("div br"),j=0;k=l[j++];){var m=k.parentNode;"DIV"==m.tagName&&1==m.childNodes.length&&(m.innerHTML="


    ",domUtils.remove(m))}for(var n,o=a.querySelectorAll("#baidu_pastebin"),j=0;n=o[j++];){var p=d.document.createElement("p");for(n.parentNode.insertBefore(p,n);n.firstChild;)p.appendChild(n.firstChild);domUtils.remove(n)}for(var q,r=a.querySelectorAll("meta"),j=0;q=r[j++];)domUtils.remove(q);var l=a.querySelectorAll("br");for(j=0;q=l[j++];)/^apple-/i.test(q.className)&&domUtils.remove(q)}if(browser.gecko){var s=a.querySelectorAll("[_moz_dirty]");for(j=0;q=s[j++];)q.removeAttribute("_moz_dirty")}if(!browser.ie)for(var q,t=a.querySelectorAll("span.Apple-style-span"),j=0;q=t[j++];)domUtils.remove(q,!0);c=a.innerHTML,c=UE.filterWord(c);var u=UE.htmlparser(c);if(d.options.filterRules&&UE.filterNode(u,d.options.filterRules),d.filterInputRule(u),browser.webkit){var v=u.lastChild();v&&"element"==v.type&&"br"==v.tagName&&u.removeChild(v),utils.each(d.body.querySelectorAll("div"),function(a){domUtils.isEmptyBlock(a)&&domUtils.remove(a,!0)})}if(c={html:u.toHtml()},d.fireEvent("beforepaste",c,u),!c.html)return;u=UE.htmlparser(c.html,!0),1===d.queryCommandState("pasteplain")?d.execCommand("insertHtml",UE.filterNode(u,d.options.filterTxtRules).toHtml(),!0):(UE.filterNode(u,d.options.filterTxtRules),e=u.toHtml(),f=c.html,g=d.selection.getRange().createAddress(!0),d.execCommand("insertHtml",d.getOpt("retainOnlyLabelPasted")===!0?b(f):f,!0)),d.fireEvent("afterpaste",c)}}var d=this;d.setOpt({retainOnlyLabelPasted:!1});var e,f,g;d.addListener("pasteTransfer",function(a,c){if(g&&e&&f&&e!=f){var h=d.selection.getRange();if(h.moveToAddress(g,!0),!h.collapsed){for(;!domUtils.isBody(h.startContainer);){var i=h.startContainer;if(1==i.nodeType){if(i=i.childNodes[h.startOffset],!i){h.setStartBefore(h.startContainer);continue}var j=i.previousSibling;j&&3==j.nodeType&&new RegExp("^[\n\r\t "+domUtils.fillChar+"]*$").test(j.nodeValue)&&h.setStartBefore(j)}if(0!=h.startOffset)break;h.setStartBefore(h.startContainer)}for(;!domUtils.isBody(h.endContainer);){var k=h.endContainer;if(1==k.nodeType){if(k=k.childNodes[h.endOffset],!k){h.setEndAfter(h.endContainer);continue}var l=k.nextSibling;l&&3==l.nodeType&&new RegExp("^[\n\r\t"+domUtils.fillChar+"]*$").test(l.nodeValue)&&h.setEndAfter(l)}if(h.endOffset!=h.endContainer[3==h.endContainer.nodeType?"nodeValue":"childNodes"].length)break;h.setEndAfter(h.endContainer)}}h.deleteContents(),h.select(!0),d.__hasEnterExecCommand=!0;var m=f;2===c?m=b(m):c&&(m=e),d.execCommand("inserthtml",m,!0),d.__hasEnterExecCommand=!1;for(var n=d.selection.getRange();!domUtils.isBody(n.startContainer)&&!n.startOffset&&n.startContainer[3==n.startContainer.nodeType?"nodeValue":"childNodes"].length;)n.setStartBefore(n.startContainer);var o=n.createAddress(!0);g.endAddress=o.startAddress}}),d.addListener("ready",function(){domUtils.on(d.body,"cut",function(){var a=d.selection.getRange();!a.collapsed&&d.undoManger&&d.undoManger.save()}),domUtils.on(d.body,browser.ie||browser.opera?"keydown":"paste",function(b){(!browser.ie&&!browser.opera||(b.ctrlKey||b.metaKey)&&"86"==b.keyCode)&&a.call(d,function(a){c(a)})})}),d.commands.paste={execCommand:function(b){browser.ie?(a.call(d,function(a){c(a)}),d.document.execCommand("paste")):alert(d.getLang("pastemsg"))}}},UE.plugins.pasteplain=function(){var a=this;a.setOpt({pasteplain:!1,filterTxtRules:function(){function a(a){a.tagName="p",a.setStyle()}function b(a){a.parentNode.removeChild(a,!0)}return{"-":"script style object iframe embed input select",p:{$:{}},br:{$:{}},div:function(a){for(var b,c=UE.uNode.createElement("p");b=a.firstChild();)"text"!=b.type&&UE.dom.dtd.$block[b.tagName]?c.firstChild()?(a.parentNode.insertBefore(c,a),c=UE.uNode.createElement("p")):a.parentNode.insertBefore(b,a):c.appendChild(b);c.firstChild()&&a.parentNode.insertBefore(c,a),a.parentNode.removeChild(a)},ol:b,ul:b,dl:b,dt:b,dd:b,li:b,caption:a,th:a,tr:a,h1:a,h2:a,h3:a,h4:a,h5:a,h6:a,td:function(a){var b=!!a.innerText();b&&a.parentNode.insertAfter(UE.uNode.createText("    "),a),a.parentNode.removeChild(a,a.innerText())}}}()});var b=a.options.pasteplain;a.commands.pasteplain={queryCommandState:function(){return b?1:0},execCommand:function(){b=0|!b},notNeedUndo:1}},UE.plugins.list=function(){function a(a){var b=[];for(var c in a)b.push(c);return b}function b(a){var b=a.className;return domUtils.hasClass(a,/custom_/)?b.match(/custom_(\w+)/)[1]:domUtils.getStyle(a,"list-style-type")}function c(a,c){utils.each(domUtils.getElementsByTagName(a,"ol ul"),function(f){if(domUtils.inDoc(f,a)){var g=f.parentNode;if(g.tagName==f.tagName){var h=b(f)||("OL"==f.tagName?"decimal":"disc"),i=b(g)||("OL"==g.tagName?"decimal":"disc");if(h==i){var l=utils.indexOf(k[f.tagName],h);l=l+1==k[f.tagName].length?0:l+1,e(f,k[f.tagName][l])}}var m=0,n=2;domUtils.hasClass(f,/custom_/)?/[ou]l/i.test(g.tagName)&&domUtils.hasClass(g,/custom_/)||(n=1):/[ou]l/i.test(g.tagName)&&domUtils.hasClass(g,/custom_/)&&(n=3);var o=domUtils.getStyle(f,"list-style-type");o&&(f.style.cssText="list-style-type:"+o),f.className=utils.trim(f.className.replace(/list-paddingleft-\w+/,""))+" list-paddingleft-"+n,utils.each(domUtils.getElementsByTagName(f,"li"),function(a){if(a.style.cssText&&(a.style.cssText=""),!a.firstChild)return void domUtils.remove(a);if(a.parentNode===f){if(m++,domUtils.hasClass(f,/custom_/)){var c=1,d=b(f);if("OL"==f.tagName){if(d)switch(d){case"cn":case"cn1":case"cn2":m>10&&(m%10==0||m>10&&m<20)?c=2:m>20&&(c=3);break;case"num2":m>9&&(c=2)}a.className="list-"+j[d]+m+" list-"+d+"-paddingleft-"+c}else a.className="list-"+j[d]+" list-"+d+"-paddingleft"}else a.className=a.className.replace(/list-[\w\-]+/gi,"");var e=a.getAttribute("class");null===e||e.replace(/\s/g,"")||domUtils.removeAttributes(a,"class")}}),!c&&d(f,f.tagName.toLowerCase(),b(f)||domUtils.getStyle(f,"list-style-type"),!0)}})}function d(a,d,e,f){var g=a.nextSibling;g&&1==g.nodeType&&g.tagName.toLowerCase()==d&&(b(g)||domUtils.getStyle(g,"list-style-type")||("ol"==d?"decimal":"disc"))==e&&(domUtils.moveChild(g,a),0==g.childNodes.length&&domUtils.remove(g)),g&&domUtils.isFillChar(g)&&domUtils.remove(g);var h=a.previousSibling;h&&1==h.nodeType&&h.tagName.toLowerCase()==d&&(b(h)||domUtils.getStyle(h,"list-style-type")||("ol"==d?"decimal":"disc"))==e&&domUtils.moveChild(a,h),h&&domUtils.isFillChar(h)&&domUtils.remove(h),!f&&domUtils.isEmptyBlock(a)&&domUtils.remove(a),b(a)&&c(a.ownerDocument,!0)}function e(a,b){j[b]&&(a.className="custom_"+b);try{domUtils.setStyle(a,"list-style-type",b)}catch(c){}}function f(a){var b=a.previousSibling;b&&domUtils.isEmptyBlock(b)&&domUtils.remove(b),b=a.nextSibling,b&&domUtils.isEmptyBlock(b)&&domUtils.remove(b)}function g(a){for(;a&&!domUtils.isBody(a);){if("TABLE"==a.nodeName)return null;if("LI"==a.nodeName)return a;a=a.parentNode}}var h=this,i={TD:1,PRE:1,BLOCKQUOTE:1},j={cn:"cn-1-",cn1:"cn-2-",cn2:"cn-3-",num:"num-1-",num1:"num-2-",num2:"num-3-",dash:"dash",dot:"dot"};h.setOpt({autoTransWordToList:!1,insertorderedlist:{num:"",num1:"",num2:"",cn:"",cn1:"",cn2:"",decimal:"","lower-alpha":"","lower-roman":"","upper-alpha":"","upper-roman":""},insertunorderedlist:{circle:"",disc:"",square:"",dash:"",dot:""},listDefaultPaddingLeft:"30",listiconpath:"http://bs.baidu.com/listicon/",maxListLevel:-1,disablePInList:!1});var k={OL:a(h.options.insertorderedlist),UL:a(h.options.insertunorderedlist)},l=h.options.listiconpath;for(var m in j)h.options.insertorderedlist.hasOwnProperty(m)||h.options.insertunorderedlist.hasOwnProperty(m)||delete j[m];h.ready(function(){var a=[];for(var b in j){if("dash"==b||"dot"==b)a.push("li.list-"+j[b]+"{background-image:url("+l+j[b]+".gif)}"),a.push("ul.custom_"+b+"{list-style:none;}ul.custom_"+b+" li{background-position:0 3px;background-repeat:no-repeat}");else{for(var c=0;c<99;c++)a.push("li.list-"+j[b]+c+"{background-image:url("+l+"list-"+j[b]+c+".gif)}");a.push("ol.custom_"+b+"{list-style:none;}ol.custom_"+b+" li{background-position:0 3px;background-repeat:no-repeat}")}switch(b){case"cn":a.push("li.list-"+b+"-paddingleft-1{padding-left:25px}"),a.push("li.list-"+b+"-paddingleft-2{padding-left:40px}"),a.push("li.list-"+b+"-paddingleft-3{padding-left:55px}");break;case"cn1":a.push("li.list-"+b+"-paddingleft-1{padding-left:30px}"),a.push("li.list-"+b+"-paddingleft-2{padding-left:40px}"),a.push("li.list-"+b+"-paddingleft-3{padding-left:55px}");break;case"cn2":a.push("li.list-"+b+"-paddingleft-1{padding-left:40px}"),a.push("li.list-"+b+"-paddingleft-2{padding-left:55px}"),a.push("li.list-"+b+"-paddingleft-3{padding-left:68px}");break;case"num":case"num1":a.push("li.list-"+b+"-paddingleft-1{padding-left:25px}");break;case"num2":a.push("li.list-"+b+"-paddingleft-1{padding-left:35px}"),a.push("li.list-"+b+"-paddingleft-2{padding-left:40px}");break;case"dash":a.push("li.list-"+b+"-paddingleft{padding-left:35px}");break;case"dot":a.push("li.list-"+b+"-paddingleft{padding-left:20px}")}}a.push(".list-paddingleft-1{padding-left:0}"),a.push(".list-paddingleft-2{padding-left:"+h.options.listDefaultPaddingLeft+"px}"),a.push(".list-paddingleft-3{padding-left:"+2*h.options.listDefaultPaddingLeft+"px}"),utils.cssRule("list","ol,ul{margin:0;pading:0;"+(browser.ie?"":"width:95%")+"}li{clear:both;}"+a.join("\n"),h.document)}),h.ready(function(){domUtils.on(h.body,"cut",function(){setTimeout(function(){var a,b=h.selection.getRange();if(!b.collapsed&&(a=domUtils.findParentByTagName(b.startContainer,"li",!0))&&!a.nextSibling&&domUtils.isEmptyBlock(a)){var c,d=a.parentNode;if(c=d.previousSibling)domUtils.remove(d),b.setStartAtLast(c).collapse(!0),b.select(!0);else if(c=d.nextSibling)domUtils.remove(d),b.setStartAtFirst(c).collapse(!0),b.select(!0);else{var e=h.document.createElement("p");domUtils.fillNode(h.document,e),d.parentNode.insertBefore(e,d),domUtils.remove(d),b.setStart(e,0).collapse(!0),b.select(!0)}}})})}),h.addListener("beforepaste",function(a,c){var d,e=this,f=e.selection.getRange(),g=UE.htmlparser(c.html,!0);if(d=domUtils.findParentByTagName(f.startContainer,"li",!0)){var h=d.parentNode,i="OL"==h.tagName?"ul":"ol";utils.each(g.getNodesByTagName(i),function(c){if(c.tagName=h.tagName,c.setAttr(),c.parentNode===g)a=b(h)||("OL"==h.tagName?"decimal":"disc");else{var d=c.parentNode.getAttr("class");a=d&&/custom_/.test(d)?d.match(/custom_(\w+)/)[1]:c.parentNode.getStyle("list-style-type"),a||(a="OL"==h.tagName?"decimal":"disc")}var e=utils.indexOf(k[h.tagName],a);c.parentNode!==g&&(e=e+1==k[h.tagName].length?0:e+1);var f=k[h.tagName][e];j[f]?c.setAttr("class","custom_"+f):c.setStyle("list-style-type",f)})}c.html=g.toHtml()}),h.getOpt("disablePInList")===!0&&h.addOutputRule(function(a){utils.each(a.getNodesByTagName("li"),function(a){var b=[],c=0;utils.each(a.children,function(d){if("p"==d.tagName){for(var e;e=d.children.pop();)b.splice(c,0,e),e.parentNode=a,lastNode=e;if(e=b[b.length-1],!e||"element"!=e.type||"br"!=e.tagName){var f=UE.uNode.createElement("br");f.parentNode=a,b.push(f)}c=b.length}}),b.length&&(a.children=b)})}),h.addInputRule(function(a){function b(a,b){var e=b.firstChild();if(e&&"element"==e.type&&"span"==e.tagName&&/Wingdings|Symbol/.test(e.getStyle("font-family"))){for(var f in d)if(d[f]==e.data)return f;return"disc"}for(var f in c)if(c[f].test(a))return f}if(utils.each(a.getNodesByTagName("li"),function(a){for(var b,c=UE.uNode.createElement("p"),d=0;b=a.children[d];)"text"==b.type||dtd.p[b.tagName]?c.appendChild(b):c.firstChild()?(a.insertBefore(c,b),c=UE.uNode.createElement("p"),d+=2):d++;(c.firstChild()&&!c.parentNode||!a.firstChild())&&a.appendChild(c),c.firstChild()||c.innerHTML(browser.ie?" ":"
    ");var e=a.firstChild(),f=e.lastChild();f&&"text"==f.type&&/^\s*$/.test(f.data)&&e.removeChild(f)}),h.options.autoTransWordToList){var c={num1:/^\d+\)/,decimal:/^\d+\./,"lower-alpha":/^[a-z]+\)/,"upper-alpha":/^[A-Z]+\./,cn:/^[\u4E00\u4E8C\u4E09\u56DB\u516d\u4e94\u4e03\u516b\u4e5d]+[\u3001]/,cn2:/^\([\u4E00\u4E8C\u4E09\u56DB\u516d\u4e94\u4e03\u516b\u4e5d]+\)/},d={square:"n"};utils.each(a.getNodesByTagName("p"),function(a){function d(a,b,d){if("ol"==a.tagName)if(browser.ie){var e=b.firstChild();"element"==e.type&&"span"==e.tagName&&c[d].test(e.innerText())&&b.removeChild(e)}else b.innerHTML(b.innerHTML().replace(c[d],""));else b.removeChild(b.firstChild());var f=UE.uNode.createElement("li");f.appendChild(b),a.appendChild(f)}if("MsoListParagraph"==a.getAttr("class")){a.setStyle("margin",""),a.setStyle("margin-left",""),a.setAttr("class","");var e,f=a,g=a;if("li"!=a.parentNode.tagName&&(e=b(a.innerText(),a))){var i=UE.uNode.createElement(h.options.insertorderedlist.hasOwnProperty(e)?"ol":"ul");for(j[e]?i.setAttr("class","custom_"+e):i.setStyle("list-style-type",e);a&&"li"!=a.parentNode.tagName&&b(a.innerText(),a);)f=a.nextSibling(),f||a.parentNode.insertBefore(i,a),d(i,a,e),a=f;!i.parentNode&&a&&a.parentNode&&a.parentNode.insertBefore(i,a)}var k=g.firstChild();k&&"element"==k.type&&"span"==k.tagName&&/^\s*( )+\s*$/.test(k.innerText())&&k.parentNode.removeChild(k)}})}}),h.addListener("contentchange",function(){c(h.document)}),h.addListener("keydown",function(a,b){function c(){b.preventDefault?b.preventDefault():b.returnValue=!1,h.fireEvent("contentchange"),h.undoManger&&h.undoManger.save()}function d(a,b){for(;a&&!domUtils.isBody(a);){if(b(a))return null;if(1==a.nodeType&&/[ou]l/i.test(a.tagName))return a;a=a.parentNode}return null}var e=b.keyCode||b.which;if(13==e&&!b.shiftKey){var g=h.selection.getRange(),i=domUtils.findParent(g.startContainer,function(a){return domUtils.isBlockElm(a)},!0),j=domUtils.findParentByTagName(g.startContainer,"li",!0);if(i&&"PRE"!=i.tagName&&!j){var k=i.innerHTML.replace(new RegExp(domUtils.fillChar,"g"),"");/^\s*1\s*\.[^\d]/.test(k)&&(i.innerHTML=k.replace(/^\s*1\s*\./,""),g.setStartAtLast(i).collapse(!0).select(),h.__hasEnterExecCommand=!0,h.execCommand("insertorderedlist"),h.__hasEnterExecCommand=!1)}var l=h.selection.getRange(),m=d(l.startContainer,function(a){return"TABLE"==a.tagName}),n=l.collapsed?m:d(l.endContainer,function(a){return"TABLE"==a.tagName});if(m&&n&&m===n){if(!l.collapsed){if(m=domUtils.findParentByTagName(l.startContainer,"li",!0),n=domUtils.findParentByTagName(l.endContainer,"li",!0),!m||!n||m!==n){var o=l.cloneRange(),p=o.collapse(!1).createBookmark();l.deleteContents(),o.moveToBookmark(p);var j=domUtils.findParentByTagName(o.startContainer,"li",!0);return f(j),o.select(),void c()}if(l.deleteContents(),j=domUtils.findParentByTagName(l.startContainer,"li",!0),j&&domUtils.isEmptyBlock(j))return v=j.previousSibling,next=j.nextSibling,s=h.document.createElement("p"),domUtils.fillNode(h.document,s),q=j.parentNode,v&&next?(l.setStart(next,0).collapse(!0).select(!0),domUtils.remove(j)):((v||next)&&v?j.parentNode.parentNode.insertBefore(s,q.nextSibling):q.parentNode.insertBefore(s,q),domUtils.remove(j),q.firstChild||domUtils.remove(q), +l.setStart(s,0).setCursor()),void c()}if(j=domUtils.findParentByTagName(l.startContainer,"li",!0)){if(domUtils.isEmptyBlock(j)){p=l.createBookmark();var q=j.parentNode;if(j!==q.lastChild?(domUtils.breakParent(j,q),f(j)):(q.parentNode.insertBefore(j,q.nextSibling),domUtils.isEmptyNode(q)&&domUtils.remove(q)),!dtd.$list[j.parentNode.tagName])if(domUtils.isBlockElm(j.firstChild))domUtils.remove(j,!0);else{for(s=h.document.createElement("p"),j.parentNode.insertBefore(s,j);j.firstChild;)s.appendChild(j.firstChild);domUtils.remove(j)}l.moveToBookmark(p).select()}else{var r=j.firstChild;if(!r||!domUtils.isBlockElm(r)){var s=h.document.createElement("p");for(!j.firstChild&&domUtils.fillNode(h.document,s);j.firstChild;)s.appendChild(j.firstChild);j.appendChild(s),r=s}var t=h.document.createElement("span");l.insertNode(t),domUtils.breakParent(t,j);var u=t.nextSibling;r=u.firstChild,r||(s=h.document.createElement("p"),domUtils.fillNode(h.document,s),u.appendChild(s),r=s),domUtils.isEmptyNode(r)&&(r.innerHTML="",domUtils.fillNode(h.document,r)),l.setStart(r,0).collapse(!0).shrinkBoundary().select(),domUtils.remove(t);var v=u.previousSibling;v&&domUtils.isEmptyBlock(v)&&(v.innerHTML="

    ",domUtils.fillNode(h.document,v.firstChild))}c()}}}if(8==e&&(l=h.selection.getRange(),l.collapsed&&domUtils.isStartInblock(l)&&(o=l.cloneRange().trimBoundary(),j=domUtils.findParentByTagName(l.startContainer,"li",!0),j&&domUtils.isStartInblock(o)))){if(m=domUtils.findParentByTagName(l.startContainer,"p",!0),m&&m!==j.firstChild){var q=domUtils.findParentByTagName(m,["ol","ul"]);return domUtils.breakParent(m,q),f(m),h.fireEvent("contentchange"),l.setStart(m,0).setCursor(!1,!0),h.fireEvent("saveScene"),void domUtils.preventDefault(b)}if(j&&(v=j.previousSibling)){if(46==e&&j.childNodes.length)return;if(dtd.$list[v.tagName]&&(v=v.lastChild),h.undoManger&&h.undoManger.save(),r=j.firstChild,domUtils.isBlockElm(r))if(domUtils.isEmptyNode(r))for(v.appendChild(r),l.setStart(r,0).setCursor(!1,!0);j.firstChild;)v.appendChild(j.firstChild);else t=h.document.createElement("span"),l.insertNode(t),domUtils.isEmptyBlock(v)&&(v.innerHTML=""),domUtils.moveChild(j,v),l.setStartBefore(t).collapse(!0).select(!0),domUtils.remove(t);else if(domUtils.isEmptyNode(j)){var s=h.document.createElement("p");v.appendChild(s),l.setStart(s,0).setCursor()}else for(l.setEnd(v,v.childNodes.length).collapse().select(!0);j.firstChild;)v.appendChild(j.firstChild);return domUtils.remove(j),h.fireEvent("contentchange"),h.fireEvent("saveScene"),void domUtils.preventDefault(b)}if(j&&!j.previousSibling){var q=j.parentNode,p=l.createBookmark();if(domUtils.isTagNode(q.parentNode,"ol ul"))q.parentNode.insertBefore(j,q),domUtils.isEmptyNode(q)&&domUtils.remove(q);else{for(;j.firstChild;)q.parentNode.insertBefore(j.firstChild,q);domUtils.remove(j),domUtils.isEmptyNode(q)&&domUtils.remove(q)}return l.moveToBookmark(p).setCursor(!1,!0),h.fireEvent("contentchange"),h.fireEvent("saveScene"),void domUtils.preventDefault(b)}}}),h.addListener("keyup",function(a,c){var e=c.keyCode||c.which;if(8==e){var f,g=h.selection.getRange();(f=domUtils.findParentByTagName(g.startContainer,["ol","ul"],!0))&&d(f,f.tagName.toLowerCase(),b(f)||domUtils.getComputedStyle(f,"list-style-type"),!0)}}),h.addListener("tabkeydown",function(){function a(a){if(h.options.maxListLevel!=-1){for(var b=a.parentNode,c=0;/[ou]l/i.test(b.tagName);)c++,b=b.parentNode;if(c>=h.options.maxListLevel)return!0}}var c=h.selection.getRange(),f=domUtils.findParentByTagName(c.startContainer,"li",!0);if(f){var g;if(!c.collapsed){h.fireEvent("saveScene"),g=c.createBookmark();for(var i,j,l=0,m=domUtils.findParents(f);j=m[l++];)if(domUtils.isTagNode(j,"ol ul")){i=j;break}var n=f;if(g.end)for(;n&&!(domUtils.getPosition(n,g.end)&domUtils.POSITION_FOLLOWING);)if(a(n))n=domUtils.getNextDomNode(n,!1,null,function(a){return a!==i});else{var o=n.parentNode,p=h.document.createElement(o.tagName),q=utils.indexOf(k[p.tagName],b(o)||domUtils.getComputedStyle(o,"list-style-type")),r=q+1==k[p.tagName].length?0:q+1,s=k[p.tagName][r];for(e(p,s),o.insertBefore(p,n);n&&!(domUtils.getPosition(n,g.end)&domUtils.POSITION_FOLLOWING);){if(f=n.nextSibling,p.appendChild(n),!f||domUtils.isTagNode(f,"ol ul")){if(f)for(;(f=f.firstChild)&&"LI"!=f.tagName;);else f=domUtils.getNextDomNode(n,!1,null,function(a){return a!==i});break}n=f}d(p,p.tagName.toLowerCase(),s),n=f}return h.fireEvent("contentchange"),c.moveToBookmark(g).select(),!0}if(a(f))return!0;var o=f.parentNode,p=h.document.createElement(o.tagName),q=utils.indexOf(k[p.tagName],b(o)||domUtils.getComputedStyle(o,"list-style-type"));q=q+1==k[p.tagName].length?0:q+1;var s=k[p.tagName][q];if(e(p,s),domUtils.isStartInblock(c))return h.fireEvent("saveScene"),g=c.createBookmark(),o.insertBefore(p,f),p.appendChild(f),d(p,p.tagName.toLowerCase(),s),h.fireEvent("contentchange"),c.moveToBookmark(g).select(!0),!0}}),h.commands.insertorderedlist=h.commands.insertunorderedlist={execCommand:function(a,c){c||(c="insertorderedlist"==a.toLowerCase()?"decimal":"disc");var f=this,h=this.selection.getRange(),j=function(a){return 1==a.nodeType?"br"!=a.tagName.toLowerCase():!domUtils.isWhitespace(a)},k="insertorderedlist"==a.toLowerCase()?"ol":"ul",l=f.document.createDocumentFragment();h.adjustmentBoundary().shrinkBoundary();var m,n,o,p,q=h.createBookmark(!0),r=g(f.document.getElementById(q.start)),s=0,t=g(f.document.getElementById(q.end)),u=0;if(r||t){if(r&&(m=r.parentNode),q.end||(t=r),t&&(n=t.parentNode),m===n){for(;r!==t;){if(p=r,r=r.nextSibling,!domUtils.isBlockElm(p.firstChild)){for(var v=f.document.createElement("p");p.firstChild;)v.appendChild(p.firstChild);p.appendChild(v)}l.appendChild(p)}if(p=f.document.createElement("span"),m.insertBefore(p,t),!domUtils.isBlockElm(t.firstChild)){for(v=f.document.createElement("p");t.firstChild;)v.appendChild(t.firstChild);t.appendChild(v)}l.appendChild(t),domUtils.breakParent(p,m),domUtils.isEmptyNode(p.previousSibling)&&domUtils.remove(p.previousSibling),domUtils.isEmptyNode(p.nextSibling)&&domUtils.remove(p.nextSibling);var w=b(m)||domUtils.getComputedStyle(m,"list-style-type")||("insertorderedlist"==a.toLowerCase()?"decimal":"disc");if(m.tagName.toLowerCase()==k&&w==c){for(var x,y=0,z=f.document.createDocumentFragment();x=l.firstChild;)if(domUtils.isTagNode(x,"ol ul"))z.appendChild(x);else for(;x.firstChild;)z.appendChild(x.firstChild),domUtils.remove(x);p.parentNode.insertBefore(z,p)}else o=f.document.createElement(k),e(o,c),o.appendChild(l),p.parentNode.insertBefore(o,p);return domUtils.remove(p),o&&d(o,k,c),void h.moveToBookmark(q).select()}if(r){for(;r;){if(p=r.nextSibling,domUtils.isTagNode(r,"ol ul"))l.appendChild(r);else{for(var A=f.document.createDocumentFragment(),B=0;r.firstChild;)domUtils.isBlockElm(r.firstChild)&&(B=1),A.appendChild(r.firstChild);if(B)l.appendChild(A);else{var C=f.document.createElement("p");C.appendChild(A),l.appendChild(C)}domUtils.remove(r)}r=p}m.parentNode.insertBefore(l,m.nextSibling),domUtils.isEmptyNode(m)?(h.setStartBefore(m),domUtils.remove(m)):h.setStartAfter(m),s=1}if(t&&domUtils.inDoc(n,f.document)){for(r=n.firstChild;r&&r!==t;){if(p=r.nextSibling,domUtils.isTagNode(r,"ol ul"))l.appendChild(r);else{for(A=f.document.createDocumentFragment(),B=0;r.firstChild;)domUtils.isBlockElm(r.firstChild)&&(B=1),A.appendChild(r.firstChild);B?l.appendChild(A):(C=f.document.createElement("p"),C.appendChild(A),l.appendChild(C)),domUtils.remove(r)}r=p}var D=domUtils.createElement(f.document,"div",{tmpDiv:1});domUtils.moveChild(t,D),l.appendChild(D),domUtils.remove(t),n.parentNode.insertBefore(l,n),h.setEndBefore(n),domUtils.isEmptyNode(n)&&domUtils.remove(n),u=1}}s||h.setStartBefore(f.document.getElementById(q.start)),q.end&&!u&&h.setEndAfter(f.document.getElementById(q.end)),h.enlarge(!0,function(a){return i[a.tagName]}),l=f.document.createDocumentFragment();for(var E,F=h.createBookmark(),G=domUtils.getNextDomNode(F.start,!1,j),H=h.cloneRange(),I=domUtils.isBlockElm;G&&G!==F.end&&domUtils.getPosition(G,F.end)&domUtils.POSITION_PRECEDING;)if(3==G.nodeType||dtd.li[G.tagName]){if(1==G.nodeType&&dtd.$list[G.tagName]){for(;G.firstChild;)l.appendChild(G.firstChild);E=domUtils.getNextDomNode(G,!1,j),domUtils.remove(G),G=E;continue}for(E=G,H.setStartBefore(G);G&&G!==F.end&&(!I(G)||domUtils.isBookmarkNode(G));)E=G,G=domUtils.getNextDomNode(G,!1,null,function(a){return!i[a.tagName]});G&&I(G)&&(p=domUtils.getNextDomNode(E,!1,j),p&&domUtils.isBookmarkNode(p)&&(G=domUtils.getNextDomNode(p,!1,j),E=p)),H.setEndAfter(E),G=domUtils.getNextDomNode(E,!1,j);var J=h.document.createElement("li");if(J.appendChild(H.extractContents()),domUtils.isEmptyNode(J)){for(var E=h.document.createElement("p");J.firstChild;)E.appendChild(J.firstChild);J.appendChild(E)}l.appendChild(J)}else G=domUtils.getNextDomNode(G,!0,j);h.moveToBookmark(F).collapse(!0),o=f.document.createElement(k),e(o,c),o.appendChild(l),h.insertNode(o),d(o,k,c);for(var x,y=0,K=domUtils.getElementsByTagName(o,"div");x=K[y++];)x.getAttribute("tmpDiv")&&domUtils.remove(x,!0);h.moveToBookmark(q).select()},queryCommandState:function(a){for(var b,c="insertorderedlist"==a.toLowerCase()?"ol":"ul",d=this.selection.getStartElementPath(),e=0;b=d[e++];){if("TABLE"==b.nodeName)return 0;if(c==b.nodeName.toLowerCase())return 1}return 0},queryCommandValue:function(a){for(var c,d,e="insertorderedlist"==a.toLowerCase()?"ol":"ul",f=this.selection.getStartElementPath(),g=0;d=f[g++];){if("TABLE"==d.nodeName){c=null;break}if(e==d.nodeName.toLowerCase()){c=d;break}}return c?b(c)||domUtils.getComputedStyle(c,"list-style-type"):null}}},function(){var a={textarea:function(a,b){var c=b.ownerDocument.createElement("textarea");return c.style.cssText="position:absolute;resize:none;width:100%;height:100%;border:0;padding:0;margin:0;overflow-y:auto;",browser.ie&&browser.version<8&&(c.style.width=b.offsetWidth+"px",c.style.height=b.offsetHeight+"px",b.onresize=function(){c.style.width=b.offsetWidth+"px",c.style.height=b.offsetHeight+"px"}),b.appendChild(c),{setContent:function(a){c.value=a},getContent:function(){return c.value},select:function(){var a;browser.ie?(a=c.createTextRange(),a.collapse(!0),a.select()):(c.setSelectionRange(0,0),c.focus())},dispose:function(){b.removeChild(c),b.onresize=null,c=null,b=null}}},codemirror:function(a,b){var c=window.CodeMirror(b,{mode:"text/html",tabMode:"indent",lineNumbers:!0,lineWrapping:!0}),d=c.getWrapperElement();return d.style.cssText='position:absolute;left:0;top:0;width:100%;height:100%;font-family:consolas,"Courier new",monospace;font-size:13px;',c.getScrollerElement().style.cssText="position:absolute;left:0;top:0;width:100%;height:100%;",c.refresh(),{getCodeMirror:function(){return c},setContent:function(a){c.setValue(a)},getContent:function(){return c.getValue()},select:function(){c.focus()},dispose:function(){b.removeChild(d),d=null,c=null}}}};UE.plugins.source=function(){function b(b){return a["codemirror"==f.sourceEditor&&window.CodeMirror?"codemirror":"textarea"](e,b)}var c,d,e=this,f=this.options,g=!1;f.sourceEditor=browser.ie?"textarea":f.sourceEditor||"codemirror",e.setOpt({sourceEditorFirst:!1});var h,i,j;e.commands.source={execCommand:function(){if(g=!g){j=e.selection.getRange().createAddress(!1,!0),e.undoManger&&e.undoManger.save(!0),browser.gecko&&(e.body.contentEditable=!1),h=e.iframe.style.cssText,e.iframe.style.cssText+="position:absolute;left:-32768px;top:-32768px;",e.fireEvent("beforegetcontent");var a=UE.htmlparser(e.body.innerHTML);e.filterOutputRule(a),a.traversal(function(a){if("element"==a.type)switch(a.tagName){case"td":case"th":case"caption":a.children&&1==a.children.length&&"br"==a.firstChild().tagName&&a.removeChild(a.firstChild());break;case"pre":a.innerText(a.innerText().replace(/ /g," "))}}),e.fireEvent("aftergetcontent");var f=a.toHtml(!0);c=b(e.iframe.parentNode),c.setContent(f),d=e.setContent,e.setContent=function(a){var b=UE.htmlparser(a);e.filterInputRule(b),a=b.toHtml(),c.setContent(a)},setTimeout(function(){c.select(),e.addListener("fullscreenchanged",function(){try{c.getCodeMirror().refresh()}catch(a){}})}),i=e.getContent,e.getContent=function(){return c.getContent()||"

    "+(browser.ie?"":"
    ")+"

    "}}else{e.iframe.style.cssText=h;var k=c.getContent()||"

    "+(browser.ie?"":"
    ")+"

    ";k=k.replace(new RegExp("[\\r\\t\\n ]*]*)>","g"),function(a,b){return b&&!dtd.$inlineWithA[b.toLowerCase()]?a.replace(/(^[\n\r\t ]*)|([\n\r\t ]*$)/g,""):a.replace(/(^[\n\r\t]*)|([\n\r\t]*$)/g,"")}),e.setContent=d,e.setContent(k),c.dispose(),c=null,e.getContent=i;var l=e.body.firstChild;if(l||(e.body.innerHTML="

    "+(browser.ie?"":"
    ")+"

    ",l=e.body.firstChild),e.undoManger&&e.undoManger.save(!0),browser.gecko){var m=document.createElement("input");m.style.cssText="position:absolute;left:0;top:-32768px",document.body.appendChild(m),e.body.contentEditable=!1,setTimeout(function(){domUtils.setViewportOffset(m,{left:-32768,top:0}),m.focus(),setTimeout(function(){e.body.contentEditable=!0,e.selection.getRange().moveToAddress(j).select(!0),domUtils.remove(m)})})}else try{e.selection.getRange().moveToAddress(j).select(!0)}catch(n){}}this.fireEvent("sourcemodechanged",g)},queryCommandState:function(){return 0|g},notNeedUndo:1};var k=e.queryCommandState;e.queryCommandState=function(a){return a=a.toLowerCase(),g?a in{source:1,fullscreen:1}?1:-1:k.apply(this,arguments)},"codemirror"==f.sourceEditor&&e.addListener("ready",function(){utils.loadFile(document,{src:f.codeMirrorJsUrl||f.UEDITOR_HOME_URL+"third-party/codemirror/codemirror.js",tag:"script",type:"text/javascript",defer:"defer"},function(){f.sourceEditorFirst&&setTimeout(function(){e.execCommand("source")},0)}),utils.loadFile(document,{tag:"link",rel:"stylesheet",type:"text/css",href:f.codeMirrorCssUrl||f.UEDITOR_HOME_URL+"third-party/codemirror/codemirror.css"})})}}(),UE.plugins.enterkey=function(){var a,b=this,c=b.options.enterTag;b.addListener("keyup",function(c,d){var e=d.keyCode||d.which;if(13==e){var f,g=b.selection.getRange(),h=g.startContainer;if(browser.ie)b.fireEvent("saveScene",!0,!0);else{if(/h\d/i.test(a)){if(browser.gecko){var i=domUtils.findParentByTagName(h,["h1","h2","h3","h4","h5","h6","blockquote","caption","table"],!0);i||(b.document.execCommand("formatBlock",!1,"

    "),f=1)}else if(1==h.nodeType){var j,k=b.document.createTextNode("");if(g.insertNode(k),j=domUtils.findParentByTagName(k,"div",!0)){for(var l=b.document.createElement("p");j.firstChild;)l.appendChild(j.firstChild);j.parentNode.insertBefore(l,j),domUtils.remove(j),g.setStartBefore(k).setCursor(),f=1}domUtils.remove(k)}b.undoManger&&f&&b.undoManger.save()}browser.opera&&g.select()}}}),b.addListener("keydown",function(d,e){var f=e.keyCode||e.which;if(13==f){if(b.fireEvent("beforeenterkeydown"))return void domUtils.preventDefault(e);b.fireEvent("saveScene",!0,!0),a="";var g=b.selection.getRange();if(!g.collapsed){var h=g.startContainer,i=g.endContainer,j=domUtils.findParentByTagName(h,"td",!0),k=domUtils.findParentByTagName(i,"td",!0);if(j&&k&&j!==k||!j&&k||j&&!k)return void(e.preventDefault?e.preventDefault():e.returnValue=!1)}if("p"==c)browser.ie||(h=domUtils.findParentByTagName(g.startContainer,["ol","ul","p","h1","h2","h3","h4","h5","h6","blockquote","caption"],!0),h||browser.opera?(a=h.tagName,"p"==h.tagName.toLowerCase()&&browser.gecko&&domUtils.removeDirtyAttr(h)):(b.document.execCommand("formatBlock",!1,"

    "),browser.gecko&&(g=b.selection.getRange(),h=domUtils.findParentByTagName(g.startContainer,"p",!0),h&&domUtils.removeDirtyAttr(h))));else if(e.preventDefault?e.preventDefault():e.returnValue=!1,g.collapsed){m=g.document.createElement("br"),g.insertNode(m);var l=m.parentNode;l.lastChild===m?(m.parentNode.insertBefore(m.cloneNode(!0),m),g.setStartBefore(m)):g.setStartAfter(m),g.setCursor()}else if(g.deleteContents(),h=g.startContainer,1==h.nodeType&&(h=h.childNodes[g.startOffset])){for(;1==h.nodeType;){if(dtd.$empty[h.tagName])return g.setStartBefore(h).setCursor(),b.undoManger&&b.undoManger.save(),!1;if(!h.firstChild){var m=g.document.createElement("br");return h.appendChild(m),g.setStart(h,0).setCursor(),b.undoManger&&b.undoManger.save(),!1}h=h.firstChild}h===g.startContainer.childNodes[g.startOffset]?(m=g.document.createElement("br"),g.insertNode(m).setCursor()):g.setStart(h,0).setCursor()}else m=g.document.createElement("br"),g.insertNode(m).setStartAfter(m).setCursor()}})},UE.plugins.keystrokes=function(){var a=this,b=!0;a.addListener("keydown",function(c,d){var e=d.keyCode||d.which,f=a.selection.getRange();if(!f.collapsed&&!(d.ctrlKey||d.shiftKey||d.altKey||d.metaKey)&&(e>=65&&e<=90||e>=48&&e<=57||e>=96&&e<=111||{13:1,8:1,46:1}[e])){var g=f.startContainer;if(domUtils.isFillChar(g)&&f.setStartBefore(g),g=f.endContainer,domUtils.isFillChar(g)&&f.setEndAfter(g),f.txtToElmBoundary(),f.endContainer&&1==f.endContainer.nodeType&&(g=f.endContainer.childNodes[f.endOffset],g&&domUtils.isBr(g)&&f.setEndAfter(g)),0==f.startOffset&&(g=f.startContainer,domUtils.isBoundaryNode(g,"firstChild")&&(g=f.endContainer,f.endOffset==(3==g.nodeType?g.nodeValue.length:g.childNodes.length)&&domUtils.isBoundaryNode(g,"lastChild"))))return a.fireEvent("saveScene"),a.body.innerHTML="

    "+(browser.ie?"":"
    ")+"

    ",f.setStart(a.body.firstChild,0).setCursor(!1,!0),void a._selectionChange()}if(e==keymap.Backspace){if(f=a.selection.getRange(),b=f.collapsed,a.fireEvent("delkeydown",d))return;var h,i;if(f.collapsed&&f.inFillChar()&&(h=f.startContainer,domUtils.isFillChar(h)?(f.setStartBefore(h).shrinkBoundary(!0).collapse(!0),domUtils.remove(h)):(h.nodeValue=h.nodeValue.replace(new RegExp("^"+domUtils.fillChar),""),f.startOffset--,f.collapse(!0).select(!0))),h=f.getClosedNode())return a.fireEvent("saveScene"),f.setStartBefore(h),domUtils.remove(h),f.setCursor(),a.fireEvent("saveScene"),void domUtils.preventDefault(d);if(!browser.ie&&(h=domUtils.findParentByTagName(f.startContainer,"table",!0),i=domUtils.findParentByTagName(f.endContainer,"table",!0),h&&!i||!h&&i||h!==i))return void d.preventDefault()}if(e==keymap.Tab){var j={ol:1,ul:1,table:1};if(a.fireEvent("tabkeydown",d))return void domUtils.preventDefault(d);var k=a.selection.getRange();a.fireEvent("saveScene");for(var l=0,m="",n=a.options.tabSize||4,o=a.options.tabNode||" ";l"});d.insertNode(g).setStart(g,0).setCursor(!1,!0)}}if(!b&&(3==d.startContainer.nodeType||1==d.startContainer.nodeType&&domUtils.isEmptyBlock(d.startContainer)))if(browser.ie){var k=d.document.createElement("span");d.insertNode(k).setStartBefore(k).collapse(!0),d.select(),domUtils.remove(k)}else d.select()}})},UE.plugins.fiximgclick=function(){function a(){this.editor=null,this.resizer=null,this.cover=null,this.doc=document,this.prePos={x:0,y:0},this.startPos={x:0,y:0}}var b=!1;return function(){var c=[[0,0,-1,-1],[0,0,0,-1],[0,0,1,-1],[0,0,-1,0],[0,0,1,0],[0,0,-1,1],[0,0,0,1],[0,0,1,1]];a.prototype={init:function(a){var b=this;b.editor=a,b.startPos=this.prePos={x:0,y:0},b.dragId=-1;var c=[],d=b.cover=document.createElement("div"),e=b.resizer=document.createElement("div");for(d.id=b.editor.ui.id+"_imagescale_cover",d.style.cssText="position:absolute;display:none;z-index:"+b.editor.options.zIndex+";filter:alpha(opacity=0); opacity:0;background:#CCC;",domUtils.on(d,"mousedown click",function(){b.hide()}),i=0;i<8;i++)c.push('');e.id=b.editor.ui.id+"_imagescale",e.className="edui-editor-imagescale",e.innerHTML=c.join(""),e.style.cssText+=";display:none;border:1px solid #3b77ff;z-index:"+b.editor.options.zIndex+";",b.editor.ui.getDom().appendChild(d),b.editor.ui.getDom().appendChild(e),b.initStyle(),b.initEvents()},initStyle:function(){utils.cssRule("imagescale",".edui-editor-imagescale{display:none;position:absolute;border:1px solid #38B2CE;cursor:hand;-webkit-box-sizing: content-box;-moz-box-sizing: content-box;box-sizing: content-box;}.edui-editor-imagescale span{position:absolute;width:6px;height:6px;overflow:hidden;font-size:0px;display:block;background-color:#3C9DD0;}.edui-editor-imagescale .edui-editor-imagescale-hand0{cursor:nw-resize;top:0;margin-top:-4px;left:0;margin-left:-4px;}.edui-editor-imagescale .edui-editor-imagescale-hand1{cursor:n-resize;top:0;margin-top:-4px;left:50%;margin-left:-4px;}.edui-editor-imagescale .edui-editor-imagescale-hand2{cursor:ne-resize;top:0;margin-top:-4px;left:100%;margin-left:-3px;}.edui-editor-imagescale .edui-editor-imagescale-hand3{cursor:w-resize;top:50%;margin-top:-4px;left:0;margin-left:-4px;}.edui-editor-imagescale .edui-editor-imagescale-hand4{cursor:e-resize;top:50%;margin-top:-4px;left:100%;margin-left:-3px;}.edui-editor-imagescale .edui-editor-imagescale-hand5{cursor:sw-resize;top:100%;margin-top:-3px;left:0;margin-left:-4px;}.edui-editor-imagescale .edui-editor-imagescale-hand6{cursor:s-resize;top:100%;margin-top:-3px;left:50%;margin-left:-4px;}.edui-editor-imagescale .edui-editor-imagescale-hand7{cursor:se-resize;top:100%;margin-top:-3px;left:100%;margin-left:-3px;}")},initEvents:function(){var a=this;a.startPos.x=a.startPos.y=0,a.isDraging=!1},_eventHandler:function(a){var c=this;switch(a.type){case"mousedown":var d,d=a.target||a.srcElement;d.className.indexOf("edui-editor-imagescale-hand")!=-1&&c.dragId==-1&&(c.dragId=d.className.slice(-1),c.startPos.x=c.prePos.x=a.clientX,c.startPos.y=c.prePos.y=a.clientY,domUtils.on(c.doc,"mousemove",c.proxy(c._eventHandler,c)));break;case"mousemove":c.dragId!=-1&&(c.updateContainerStyle(c.dragId,{x:a.clientX-c.prePos.x,y:a.clientY-c.prePos.y}),c.prePos.x=a.clientX,c.prePos.y=a.clientY,b=!0,c.updateTargetElement());break;case"mouseup":c.dragId!=-1&&(c.updateContainerStyle(c.dragId,{x:a.clientX-c.prePos.x,y:a.clientY-c.prePos.y}),c.updateTargetElement(),c.target.parentNode&&c.attachTo(c.target),c.dragId=-1),domUtils.un(c.doc,"mousemove",c.proxy(c._eventHandler,c)),b&&(b=!1,c.editor.fireEvent("contentchange"))}},updateTargetElement:function(){var a=this;domUtils.setStyles(a.target,{width:a.resizer.style.width,height:a.resizer.style.height}),a.target.width=parseInt(a.resizer.style.width),a.target.height=parseInt(a.resizer.style.height),a.attachTo(a.target)},updateContainerStyle:function(a,b){var d,e=this,f=e.resizer;0!=c[a][0]&&(d=parseInt(f.style.left)+b.x,f.style.left=e._validScaledProp("left",d)+"px"),0!=c[a][1]&&(d=parseInt(f.style.top)+b.y,f.style.top=e._validScaledProp("top",d)+"px"),0!=c[a][2]&&(d=f.clientWidth+c[a][2]*b.x,f.style.width=e._validScaledProp("width",d)+"px"),0!=c[a][3]&&(d=f.clientHeight+c[a][3]*b.y,f.style.height=e._validScaledProp("height",d)+"px")},_validScaledProp:function(a,b){var c=this.resizer,d=document;switch(b=isNaN(b)?0:b,a){case"left":return b<0?0:b+c.clientWidth>d.clientWidth?d.clientWidth-c.clientWidth:b;case"top":return b<0?0:b+c.clientHeight>d.clientHeight?d.clientHeight-c.clientHeight:b;case"width":return b<=0?1:b+c.offsetLeft>d.clientWidth?d.clientWidth-c.offsetLeft:b;case"height":return b<=0?1:b+c.offsetTop>d.clientHeight?d.clientHeight-c.offsetTop:b}},hideCover:function(){this.cover.style.display="none"},showCover:function(){var a=this,b=domUtils.getXY(a.editor.ui.getDom()),c=domUtils.getXY(a.editor.iframe);domUtils.setStyles(a.cover,{width:a.editor.iframe.offsetWidth+"px",height:a.editor.iframe.offsetHeight+"px",top:c.y-b.y+"px",left:c.x-b.x+"px",position:"absolute",display:""})},show:function(a){var b=this;b.resizer.style.display="block",a&&b.attachTo(a),domUtils.on(this.resizer,"mousedown",b.proxy(b._eventHandler,b)),domUtils.on(b.doc,"mouseup",b.proxy(b._eventHandler,b)),b.showCover(),b.editor.fireEvent("afterscaleshow",b),b.editor.fireEvent("saveScene")},hide:function(){var a=this;a.hideCover(),a.resizer.style.display="none",domUtils.un(a.resizer,"mousedown",a.proxy(a._eventHandler,a)),domUtils.un(a.doc,"mouseup",a.proxy(a._eventHandler,a)),a.editor.fireEvent("afterscalehide",a)},proxy:function(a,b){return function(c){return a.apply(b||this,arguments)}},attachTo:function(a){var b=this,c=b.target=a,d=this.resizer,e=domUtils.getXY(c),f=domUtils.getXY(b.editor.iframe),g=domUtils.getXY(d.parentNode);domUtils.setStyles(d,{width:c.width+"px",height:c.height+"px",left:f.x+e.x-b.editor.document.body.scrollLeft-g.x-parseInt(d.style.borderLeftWidth)+"px",top:f.y+e.y-b.editor.document.body.scrollTop-g.y-parseInt(d.style.borderTopWidth)+"px"})}}}(),function(){var b,c=this;c.setOpt("imageScaleEnabled",!0),!browser.ie&&c.options.imageScaleEnabled&&c.addListener("click",function(d,e){var f=c.selection.getRange(),g=f.getClosedNode();if(g&&"IMG"==g.tagName&&"false"!=c.body.contentEditable){if(g.className.indexOf("edui-faked-music")!=-1||g.getAttribute("anchorname")||domUtils.hasClass(g,"loadingclass")||domUtils.hasClass(g,"loaderrorclass"))return;if(!b){b=new a,b.init(c),c.ui.getDom().appendChild(b.resizer);var h,i=function(a){b.hide(),b.target&&c.selection.getRange().selectNode(b.target).select()},j=function(a){var b=a.target||a.srcElement;!b||void 0!==b.className&&b.className.indexOf("edui-editor-imagescale")!=-1||i(a)};c.addListener("afterscaleshow",function(a){c.addListener("beforekeydown",i),c.addListener("beforemousedown",j),domUtils.on(document,"keydown",i),domUtils.on(document,"mousedown",j),c.selection.getNative().removeAllRanges()}),c.addListener("afterscalehide",function(a){c.removeListener("beforekeydown",i),c.removeListener("beforemousedown",j),domUtils.un(document,"keydown",i),domUtils.un(document,"mousedown",j);var d=b.target;d.parentNode&&c.selection.getRange().selectNode(d).select()}),domUtils.on(b.resizer,"mousedown",function(a){c.selection.getNative().removeAllRanges();var d=a.target||a.srcElement;d&&d.className.indexOf("edui-editor-imagescale-hand")==-1&&(h=setTimeout(function(){b.hide(),b.target&&c.selection.getRange().selectNode(d).select()},200))}),domUtils.on(b.resizer,"mouseup",function(a){var b=a.target||a.srcElement;b&&b.className.indexOf("edui-editor-imagescale-hand")==-1&&clearTimeout(h)})}b.show(g)}else b&&"none"!=b.resizer.style.display&&b.hide()}),browser.webkit&&c.addListener("click",function(a,b){if("IMG"==b.target.tagName&&"false"!=c.body.contentEditable){var d=new dom.Range(c.document);d.selectNode(b.target).select()}})}}(),UE.plugin.register("autolink",function(){var a=0;return browser.ie?{}:{bindEvents:{reset:function(){a=0},keydown:function(a,b){var c=this,d=b.keyCode||b.which;if(32==d||13==d){for(var e,f,g=c.selection.getNative(),h=g.getRangeAt(0).cloneRange(),i=h.startContainer;1==i.nodeType&&h.startOffset>0&&(i=h.startContainer.childNodes[h.startOffset-1]);)h.setStart(i,1==i.nodeType?i.childNodes.length:i.nodeValue.length),h.collapse(!0),i=h.startContainer;do{if(0==h.startOffset){for(i=h.startContainer.previousSibling;i&&1==i.nodeType;)i=i.lastChild;if(!i||domUtils.isFillChar(i))break;e=i.nodeValue.length}else i=h.startContainer,e=h.startOffset;h.setStart(i,e-1),f=h.toString().charCodeAt(0)}while(160!=f&&32!=f);if(h.toString().replace(new RegExp(domUtils.fillChar,"g"),"").match(/(?:https?:\/\/|ssh:\/\/|ftp:\/\/|file:\/|www\.)/i)){for(;h.toString().length&&!/^(?:https?:\/\/|ssh:\/\/|ftp:\/\/|file:\/|www\.)/i.test(h.toString());)try{h.setStart(h.startContainer,h.startOffset+1)}catch(j){for(var i=h.startContainer;!(next=i.nextSibling);){if(domUtils.isBody(i))return;i=i.parentNode}h.setStart(next,0)}if(domUtils.findParentByTagName(h.startContainer,"a",!0))return;var k,l=c.document.createElement("a"),m=c.document.createTextNode(" ");c.undoManger&&c.undoManger.save(),l.appendChild(h.extractContents()),l.href=l.innerHTML=l.innerHTML.replace(/<[^>]+>/g,""),k=l.getAttribute("href").replace(new RegExp(domUtils.fillChar,"g"),""),k=/^(?:https?:\/\/)/gi.test(k)?k:"http://"+k,l.setAttribute("_src",utils.html(k)),l.href=utils.html(k),h.insertNode(l),l.parentNode.insertBefore(m,l.nextSibling),h.setStart(m,0),h.collapse(!0),g.removeAllRanges(),g.addRange(h),c.undoManger&&c.undoManger.save()}}}}}},function(){function a(a){if(3==a.nodeType)return null;if("A"==a.nodeName)return a;for(var b=a.lastChild;b;){if("A"==b.nodeName)return b;if(3==b.nodeType){if(domUtils.isWhitespace(b)){b=b.previousSibling;continue}return null}b=b.lastChild}}var b={37:1,38:1,39:1,40:1,13:1,32:1};browser.ie&&this.addListener("keyup",function(c,d){var e=this,f=d.keyCode;if(b[f]){var g=e.selection.getRange(),h=g.startContainer;if(13==f){for(;h&&!domUtils.isBody(h)&&!domUtils.isBlockElm(h);)h=h.parentNode;if(h&&!domUtils.isBody(h)&&"P"==h.nodeName){var i=h.previousSibling;if(i&&1==i.nodeType){var i=a(i);i&&!i.getAttribute("_href")&&domUtils.remove(i,!0)}}}else if(32==f)3==h.nodeType&&/^\s$/.test(h.nodeValue)&&(h=h.previousSibling,h&&"A"==h.nodeName&&!h.getAttribute("_href")&&domUtils.remove(h,!0));else if(h=domUtils.findParentByTagName(h,"a",!0),h&&!h.getAttribute("_href")){var j=g.createBookmark();domUtils.remove(h,!0),g.moveToBookmark(j).select(!0)}}})}),UE.plugins.autoheight=function(){function a(){var a=this;clearTimeout(e),f||(!a.queryCommandState||a.queryCommandState&&1!=a.queryCommandState("source"))&&(e=setTimeout(function(){for(var b=a.body.lastChild;b&&1!=b.nodeType;)b=b.previousSibling;b&&1==b.nodeType&&(b.style.clear="both",d=Math.max(domUtils.getXY(b).y+b.offsetHeight+25,Math.max(h.minFrameHeight,h.initialFrameHeight)),d!=g&&(d!==parseInt(a.iframe.parentNode.style.height)&&(a.iframe.parentNode.style.height=d+"px"),a.body.style.height=d+"px",g=d),domUtils.removeStyle(b,"clear"))},50))}var b=this;if(b.autoHeightEnabled=b.options.autoHeightEnabled!==!1,b.autoHeightEnabled){var c,d,e,f,g=0,h=b.options;b.addListener("fullscreenchanged",function(a,b){f=b}),b.addListener("destroy",function(){b.removeListener("contentchange afterinserthtml keyup mouseup",a)}),b.enableAutoHeight=function(){var b=this;if(b.autoHeightEnabled){var d=b.document;b.autoHeightEnabled=!0,c=d.body.style.overflowY,d.body.style.overflowY="hidden",b.addListener("contentchange afterinserthtml keyup mouseup",a),setTimeout(function(){a.call(b)},browser.gecko?100:0),b.fireEvent("autoheightchanged",b.autoHeightEnabled)}},b.disableAutoHeight=function(){b.body.style.overflowY=c||"",b.removeListener("contentchange",a),b.removeListener("keyup",a),b.removeListener("mouseup",a),b.autoHeightEnabled=!1,b.fireEvent("autoheightchanged",b.autoHeightEnabled)},b.on("setHeight",function(){b.disableAutoHeight()}),b.addListener("ready",function(){b.enableAutoHeight();var c;domUtils.on(browser.ie?b.body:b.document,browser.webkit?"dragover":"drop",function(){ +clearTimeout(c),c=setTimeout(function(){a.call(b)},100)});var d;window.onscroll=function(){null===d?d=this.scrollY:0==this.scrollY&&0!=d&&(b.window.scrollTo(0,0),d=null)}})}},UE.plugins.autofloat=function(){function a(){return UE.ui?1:(alert(g.autofloatMsg),0)}function b(){var a=document.body.style;a.backgroundImage='url("about:blank")',a.backgroundAttachment="fixed"}function c(){var a=domUtils.getXY(k),b=domUtils.getComputedStyle(k,"position"),c=domUtils.getComputedStyle(k,"left");k.style.width=k.offsetWidth+"px",k.style.zIndex=1*f.options.zIndex+1,k.parentNode.insertBefore(q,k),o||p&&browser.ie?("absolute"!=k.style.position&&(k.style.position="absolute"),k.style.top=(document.body.scrollTop||document.documentElement.scrollTop)-l+i+"px"):(browser.ie7Compat&&r&&(r=!1,k.style.left=domUtils.getXY(k).x-document.documentElement.getBoundingClientRect().left+2+"px"),"fixed"!=k.style.position&&(k.style.position="fixed",k.style.top=i+"px",("absolute"==b||"relative"==b)&&parseFloat(c)&&(k.style.left=a.x+"px")))}function d(){r=!0,q.parentNode&&q.parentNode.removeChild(q),k.style.cssText=j}function e(){var a=m(f.container),b=f.options.toolbarTopOffset||0;a.top<0&&a.bottom-k.offsetHeight>b?c():d()}var f=this,g=f.getLang();f.setOpt({topOffset:0});var h=f.options.autoFloatEnabled!==!1,i=f.options.topOffset;if(h){var j,k,l,m,n=UE.ui.uiUtils,o=browser.ie&&browser.version<=6,p=browser.quirks,q=document.createElement("div"),r=!0,s=utils.defer(function(){e()},browser.ie?200:100,!0);f.addListener("destroy",function(){domUtils.un(window,["scroll","resize"],e),f.removeListener("keydown",s)}),f.addListener("ready",function(){if(a(f)){if(!f.ui)return;m=n.getClientRect,k=f.ui.getDom("toolbarbox"),l=m(k).top,j=k.style.cssText,q.style.height=k.offsetHeight+"px",o&&b(),domUtils.on(window,["scroll","resize"],e),f.addListener("keydown",s),f.addListener("beforefullscreenchange",function(a,b){b&&d()}),f.addListener("fullscreenchanged",function(a,b){b||e()}),f.addListener("sourcemodechanged",function(a,b){setTimeout(function(){e()},0)}),f.addListener("clearDoc",function(){setTimeout(function(){e()},0)})}})}},UE.plugins.video=function(){function a(a,b,d,e,f,g,h){a=utils.unhtmlForUrl(a),f=utils.unhtml(f),g=utils.unhtml(g).trim(),b=parseInt(b,10)||0,d=parseInt(d,10)||0;var i;switch(h){case"image":i="';break;case"embed":i='';break;case"video":var j=a.substr(a.lastIndexOf(".")+1);"ogv"==j&&(j="ogg"),i="'}return i}function b(b,c){utils.each(b.getNodesByTagName(c?"img":"embed video"),function(b){var d=b.getAttr("class");if(d&&d.indexOf("edui-faked-video")!=-1){var e=a(c?b.getAttr("_url"):b.getAttr("src"),b.getAttr("width"),b.getAttr("height"),null,b.getStyle("float")||"",d,c?"embed":"image");b.parentNode.replaceChild(UE.uNode.createElement(e),b)}if(d&&d.indexOf("edui-upload-video")!=-1){var e=a(c?b.getAttr("_url"):b.getAttr("src"),b.getAttr("width"),b.getAttr("height"),null,b.getStyle("float")||"",d,c?"video":"image");b.parentNode.replaceChild(UE.uNode.createElement(e),b)}})}var c=this;c.addOutputRule(function(a){b(a,!0)}),c.addInputRule(function(a){b(a)}),c.commands.insertvideo={execCommand:function(b,d,e){d=utils.isArray(d)?d:[d];for(var f,g,h=[],i="tmpVedio",j=0,k=d.length;j0)return 0;for(var c in dtd.$isNotEmpty)if(dtd.$isNotEmpty.hasOwnProperty(c)&&a.getElementsByTagName(c).length)return 0;return 1},b.getWidth=function(a){return a?parseInt(domUtils.getComputedStyle(a,"width"),10):0},b.getTableCellAlignState=function(a){!utils.isArray(a)&&(a=[a]);var b={},c=["align","valign"],d=null,e=!0;return utils.each(a,function(a){return utils.each(c,function(c){if(d=a.getAttribute(c),!b[c]&&d)b[c]=d;else if(!b[c]||d!==b[c])return e=!1,!1}),e}),e?b:null},b.getTableItemsByRange=function(a){var b=a.selection.getStart();b&&b.id&&0===b.id.indexOf("_baidu_bookmark_start_")&&b.nextSibling&&(b=b.nextSibling);var c=b&&domUtils.findParentByTagName(b,["td","th"],!0),d=c&&c.parentNode,e=b&&domUtils.findParentByTagName(b,"caption",!0),f=e?e.parentNode:d&&d.parentNode.parentNode;return{cell:c,tr:d,table:f,caption:e}},b.getUETableBySelected=function(a){var c=b.getTableItemsByRange(a).table;return c&&c.ueTable&&c.ueTable.selectedTds.length?c.ueTable:null},b.getDefaultValue=function(a,b){var c,d,e,f,g={thin:"0px",medium:"1px",thick:"2px"};if(b)return h=b.getElementsByTagName("td")[0],f=domUtils.getComputedStyle(b,"border-left-width"),c=parseInt(g[f]||f,10),f=domUtils.getComputedStyle(h,"padding-left"),d=parseInt(g[f]||f,10),f=domUtils.getComputedStyle(h,"border-left-width"),e=parseInt(g[f]||f,10),{tableBorder:c,tdPadding:d,tdBorder:e};b=a.document.createElement("table"),b.insertRow(0).insertCell(0).innerHTML="xxx",a.body.appendChild(b);var h=b.getElementsByTagName("td")[0];return f=domUtils.getComputedStyle(b,"border-left-width"),c=parseInt(g[f]||f,10),f=domUtils.getComputedStyle(h,"padding-left"),d=parseInt(g[f]||f,10),f=domUtils.getComputedStyle(h,"border-left-width"),e=parseInt(g[f]||f,10),domUtils.remove(b),{tableBorder:c,tdPadding:d,tdBorder:e}},b.getUETable=function(a){var c=a.tagName.toLowerCase();return a="td"==c||"th"==c||"caption"==c?domUtils.findParentByTagName(a,"table",!0):a,a.ueTable||(a.ueTable=new b(a)),a.ueTable},b.cloneCell=function(a,b,c){if(!a||utils.isString(a))return this.table.ownerDocument.createElement(a||"td");var d=domUtils.hasClass(a,"selectTdClass");d&&domUtils.removeClasses(a,"selectTdClass");var e=a.cloneNode(!0);return b&&(e.rowSpan=e.colSpan=1),!c&&domUtils.removeAttributes(e,"width height"),!c&&domUtils.removeAttributes(e,"style"),e.style.borderLeftStyle="",e.style.borderTopStyle="",e.style.borderLeftColor=a.style.borderRightColor,e.style.borderLeftWidth=a.style.borderRightWidth,e.style.borderTopColor=a.style.borderBottomColor,e.style.borderTopWidth=a.style.borderBottomWidth,d&&domUtils.addClass(a,"selectTdClass"),e},b.prototype={getMaxRows:function(){for(var a,b=this.table.rows,c=1,d=0;a=b[d];d++){for(var e,f=1,g=0;e=a.cells[g++];)f=Math.max(e.rowSpan||1,f);c=Math.max(f+d,c)}return c},getMaxCols:function(){for(var a,b=this.table.rows,c=0,d={},e=0;a=b[e];e++){for(var f,g=0,h=0;f=a.cells[h++];)if(g+=f.colSpan||1,f.rowSpan&&f.rowSpan>1)for(var i=1;ithis.rowsNum-1)?null:(e=c?h?i.endRowIndex+1:g.rowIndex+g.rowSpan:h?i.beginRowIndex-1:g.rowIndex-1,f=h?i.beginColIndex:g.colIndex,this.getCell(this.indexTable[e][f].rowIndex,this.indexTable[e][f].cellIndex))}catch(j){a(j)}},getSameEndPosCells:function(b,c){try{for(var d="x"===c.toLowerCase(),e=domUtils.getXY(b)[d?"x":"y"]+b["offset"+(d?"Width":"Height")],f=this.table.rows,g=null,h=[],i=0;ie&&d)break;if((b==j||e==l)&&(1==j[d?"colSpan":"rowSpan"]&&h.push(j),d))break}}return h}catch(m){a(m)}},setCellContent:function(a,b){a.innerHTML=b||(browser.ie?domUtils.fillChar:"
    ")},cloneCell:b.cloneCell,getSameStartPosXCells:function(b){try{for(var c,d=domUtils.getXY(b).x+b.offsetWidth,e=this.table.rows,f=[],g=0;gd)break;if(j==d&&1==h.colSpan){f.push(h);break}}}return f}catch(k){a(k)}},update:function(a){this.table=a||this.table,this.selectedTds=[],this.cellsRange={},this.indexTable=[];for(var b=this.table.rows,c=this.getMaxRows(),d=c-b.length,e=this.getMaxCols();d--;)this.table.insertRow(b.length);this.rowsNum=c,this.colsNum=e;for(var f=0,g=b.length;fc&&(j.rowSpan=c);for(var m=k,n=j.rowSpan||1,o=j.colSpan||1;this.indexTable[i][m];)m++;for(var p=0;p0)for(h=b;hf&&(m=Math.max(h,m));if(ee&&(l=Math.max(i,l));if(b>0)for(i=a;ig||d+b.colSpan-1>h)return null;j.push(this.getCell(c,b.cellIndex))}}return j},clearSelected:function(){b.removeSelectedClass(this.selectedTds),this.selectedTds=[],this.cellsRange={}},setSelected:function(a){var c=this.getCells(a);b.addSelectedClass(c),this.selectedTds=c,this.cellsRange=a},isFullRow:function(){var a=this.cellsRange;return a.endColIndex-a.beginColIndex+1==this.colsNum},isFullCol:function(){var a=this.cellsRange,b=this.table,c=b.getElementsByTagName("th"),d=a.endRowIndex-a.beginRowIndex+1;return c.length?d==this.rowsNum||d==this.rowsNum-1:d==this.rowsNum},getNextCell:function(b,c,d){try{var e,f,g=this.getCellInfo(b),h=this.selectedTds.length&&!d,i=this.cellsRange;return!c&&0==g.rowIndex||c&&(h?i.endRowIndex==this.rowsNum-1:g.rowIndex+g.rowSpan>this.rowsNum-1)?null:(e=c?h?i.endRowIndex+1:g.rowIndex+g.rowSpan:h?i.beginRowIndex-1:g.rowIndex-1,f=h?i.beginColIndex:g.colIndex,this.getCell(this.indexTable[e][f].rowIndex,this.indexTable[e][f].cellIndex))}catch(j){a(j)}},getPreviewCell:function(b,c){try{var d,e,f=this.getCellInfo(b),g=this.selectedTds.length,h=this.cellsRange;return!c&&(g?!h.beginColIndex:!f.colIndex)||c&&(g?h.endColIndex==this.colsNum-1:f.rowIndex>this.colsNum-1)?null:(d=c?g?h.beginRowIndex:f.rowIndex<1?0:f.rowIndex-1:g?h.beginRowIndex:f.rowIndex,e=c?g?h.endColIndex+1:f.colIndex:g?h.beginColIndex-1:f.colIndex<1?0:f.colIndex-1,this.getCell(this.indexTable[d][e].rowIndex,this.indexTable[d][e].cellIndex))}catch(i){a(i)}},moveContent:function(a,c){if(!b.isEmptyBlock(c)){if(b.isEmptyBlock(a))return void(a.innerHTML=c.innerHTML);var d=a.lastChild;for(3!=d.nodeType&&dtd.$block[d.tagName]||a.appendChild(a.ownerDocument.createElement("br"));d=c.firstChild;)a.appendChild(d)}},mergeRight:function(a){var b=this.getCellInfo(a),c=b.colIndex+b.colSpan,d=this.indexTable[b.rowIndex][c],e=this.getCell(d.rowIndex,d.cellIndex);a.colSpan=b.colSpan+d.colSpan,a.removeAttribute("width"),this.moveContent(a,e),this.deleteCell(e,d.rowIndex),this.update()},mergeDown:function(a){var b=this.getCellInfo(a),c=b.rowIndex+b.rowSpan,d=this.indexTable[c][b.colIndex],e=this.getCell(d.rowIndex,d.cellIndex);a.rowSpan=b.rowSpan+d.rowSpan,a.removeAttribute("height"),this.moveContent(a,e),this.deleteCell(e,d.rowIndex),this.update()},mergeRange:function(){var a=this.cellsRange,b=this.getCell(a.beginRowIndex,this.indexTable[a.beginRowIndex][a.beginColIndex].cellIndex);if("TH"==b.tagName&&a.endRowIndex!==a.beginRowIndex){var c=this.indexTable,d=this.getCellInfo(b);b=this.getCell(1,c[1][d.colIndex].cellIndex),a=this.getCellsRange(b,this.getCell(c[this.rowsNum-1][d.colIndex].rowIndex,c[this.rowsNum-1][d.colIndex].cellIndex))}for(var e,f=this.getCells(a),g=0;e=f[g++];)e!==b&&(this.moveContent(b,e),this.deleteCell(e));if(b.rowSpan=a.endRowIndex-a.beginRowIndex+1,b.rowSpan>1&&b.removeAttribute("height"),b.colSpan=a.endColIndex-a.beginColIndex+1,b.colSpan>1&&b.removeAttribute("width"),b.rowSpan==this.rowsNum&&1!=b.colSpan&&(b.colSpan=1),b.colSpan==this.colsNum&&1!=b.rowSpan){var h=b.parentNode.rowIndex;if(this.table.deleteRow)for(var g=h+1,i=h+1,j=b.rowSpan;g1&&g.rowIndex==a){var i=h.cloneNode(!0);i.rowSpan=h.rowSpan-1,i.innerHTML="",h.rowSpan=1;var j,k=a+1,l=this.table.rows[k],m=this.getPreviewMergedCellsNum(k,f)-e;m1?l.colSpan--:c[h].deleteCell(j.cellIndex),h+=j.rowSpan||1}}this.table.setAttribute("width",d-e),this.update()},splitToCells:function(a){var b=this,c=this.splitToRows(a);utils.each(c,function(a){b.splitToCols(a)})},splitToRows:function(a){var b=this.getCellInfo(a),c=b.rowIndex,d=b.colIndex,e=[];a.rowSpan=1,e.push(a);for(var f=c,g=c+b.rowSpan;f");for(var g=0;g'+(browser.ie&&browser.version<11?domUtils.fillChar:"
    ")+"");c.push("")}return"
    "+c.join("")+"
    "}b||(b=utils.extend({},{numCols:this.options.defaultCols,numRows:this.options.defaultRows,tdvalign:this.options.tdvalign}));var d=this,e=this.selection.getRange(),f=e.startContainer,h=domUtils.findParent(f,function(a){return domUtils.isBlockElm(a)},!0)||d.body,i=g(d),j=h.offsetWidth,k=Math.floor(j/b.numCols-2*i.tdPadding-i.tdBorder);!b.tdvalign&&(b.tdvalign=d.options.tdvalign),d.execCommand("inserthtml",c(b,k))}},UE.commands.insertparagraphbeforetable={queryCommandState:function(){return e(this).cell?0:-1},execCommand:function(){var a=e(this).table;if(a){var b=this.document.createElement("p");b.innerHTML=browser.ie?" ":"
    ",a.parentNode.insertBefore(b,a),this.selection.getRange().setStart(b,0).setCursor()}}},UE.commands.deletetable={queryCommandState:function(){var a=this.selection.getRange();return domUtils.findParentByTagName(a.startContainer,"table",!0)?0:-1},execCommand:function(a,b){var c=this.selection.getRange();if(b=b||domUtils.findParentByTagName(c.startContainer,"table",!0)){var d=b.nextSibling;d||(d=domUtils.createElement(this.document,"p",{innerHTML:browser.ie?domUtils.fillChar:"
    "}),b.parentNode.insertBefore(d,b)),domUtils.remove(b),c=this.selection.getRange(),3==d.nodeType?c.setStartBefore(d):c.setStart(d,0),c.setCursor(!1,!0),this.fireEvent("tablehasdeleted")}}},UE.commands.cellalign={queryCommandState:function(){return c(this).length?0:-1},execCommand:function(a,b){var d=c(this);if(d.length)for(var e,f=0;e=d[f++];)e.setAttribute("align",b)}},UE.commands.cellvalign={queryCommandState:function(){return c(this).length?0:-1},execCommand:function(a,b){var d=c(this);if(d.length)for(var e,f=0;e=d[f++];)e.setAttribute("vAlign",b)}},UE.commands.insertcaption={queryCommandState:function(){var a=e(this).table;return a&&0==a.getElementsByTagName("caption").length?1:-1},execCommand:function(){var a=e(this).table;if(a){var b=this.document.createElement("caption");b.innerHTML=browser.ie?domUtils.fillChar:"
    ",a.insertBefore(b,a.firstChild);var c=this.selection.getRange();c.setStart(b,0).setCursor()}}},UE.commands.deletecaption={queryCommandState:function(){var a=this.selection.getRange(),b=domUtils.findParentByTagName(a.startContainer,"table");return b?0==b.getElementsByTagName("caption").length?-1:1:-1},execCommand:function(){var a=this.selection.getRange(),b=domUtils.findParentByTagName(a.startContainer,"table");if(b){domUtils.remove(b.getElementsByTagName("caption")[0]);var c=this.selection.getRange();c.setStart(b.rows[0].cells[0],0).setCursor()}}},UE.commands.inserttitle={queryCommandState:function(){var a=e(this).table;if(a){var b=a.rows[0];return"th"!=b.cells[b.cells.length-1].tagName.toLowerCase()?0:-1}return-1},execCommand:function(){var a=e(this).table;a&&h(a).insertRow(0,"th");var b=a.getElementsByTagName("th")[0];this.selection.getRange().setStart(b,0).setCursor(!1,!0)}},UE.commands.deletetitle={queryCommandState:function(){var a=e(this).table;if(a){var b=a.rows[0];return"th"==b.cells[b.cells.length-1].tagName.toLowerCase()?0:-1}return-1},execCommand:function(){var a=e(this).table;a&&domUtils.remove(a.rows[0]);var b=a.getElementsByTagName("td")[0];this.selection.getRange().setStart(b,0).setCursor(!1,!0)}},UE.commands.inserttitlecol={queryCommandState:function(){var a=e(this).table;if(a){var b=a.rows[a.rows.length-1];return b.getElementsByTagName("th").length?-1:0}return-1},execCommand:function(b){var c=e(this).table;c&&h(c).insertCol(0,"th"),a(c,this);var d=c.getElementsByTagName("th")[0];this.selection.getRange().setStart(d,0).setCursor(!1,!0)}},UE.commands.deletetitlecol={queryCommandState:function(){var a=e(this).table;if(a){var b=a.rows[a.rows.length-1];return b.getElementsByTagName("th").length?0:-1}return-1},execCommand:function(){var b=e(this).table;if(b)for(var c=0;c=f.colsNum)return-1;var j=f.indexTable[g.rowIndex][i],k=c.rows[j.rowIndex].cells[j.cellIndex];return k&&d.tagName==k.tagName&&j.rowIndex==g.rowIndex&&j.rowSpan==g.rowSpan?0:-1},execCommand:function(a){var b=this.selection.getRange(),c=b.createBookmark(!0),d=e(this).cell,f=h(d);f.mergeRight(d),b.moveToBookmark(c).select()}},UE.commands.mergedown={queryCommandState:function(a){var b=e(this),c=b.table,d=b.cell;if(!c||!d)return-1;var f=h(c);if(f.selectedTds.length)return-1;var g=f.getCellInfo(d),i=g.rowIndex+g.rowSpan;if(i>=f.rowsNum)return-1;var j=f.indexTable[i][g.colIndex],k=c.rows[j.rowIndex].cells[j.cellIndex];return k&&d.tagName==k.tagName&&j.colIndex==g.colIndex&&j.colSpan==g.colSpan?0:-1},execCommand:function(){var a=this.selection.getRange(),b=a.createBookmark(!0),c=e(this).cell,d=h(c);d.mergeDown(c),a.moveToBookmark(b).select()}},UE.commands.mergecells={queryCommandState:function(){return f(this)?0:-1},execCommand:function(){var a=f(this);if(a&&a.selectedTds.length){var b=a.selectedTds[0];a.mergeRange();var c=this.selection.getRange();domUtils.isEmptyBlock(b)?c.setStart(b,0).collapse(!0):c.selectNodeContents(b),c.select()}}},UE.commands.insertrow={queryCommandState:function(){var a=e(this),b=a.cell;return b&&("TD"==b.tagName||"TH"==b.tagName&&a.tr!==a.table.rows[0])&&h(a.table).rowsNum0?-1:b&&(b.colSpan>1||b.rowSpan>1)?0:-1},execCommand:function(){var a=this.selection.getRange(),b=a.createBookmark(!0),c=e(this).cell,d=h(c);d.splitToCells(c),a.moveToBookmark(b).select()}},UE.commands.splittorows={queryCommandState:function(){var a=e(this),b=a.cell;if(!b)return-1;var c=h(a.table);return c.selectedTds.length>0?-1:b&&b.rowSpan>1?0:-1},execCommand:function(){var a=this.selection.getRange(),b=a.createBookmark(!0),c=e(this).cell,d=h(c);d.splitToRows(c),a.moveToBookmark(b).select()}},UE.commands.splittocols={queryCommandState:function(){var a=e(this),b=a.cell;if(!b)return-1;var c=h(a.table);return c.selectedTds.length>0?-1:b&&b.colSpan>1?0:-1},execCommand:function(){var a=this.selection.getRange(),b=a.createBookmark(!0),c=e(this).cell,d=h(c);d.splitToCols(c),a.moveToBookmark(b).select()}},UE.commands.adaptbytext=UE.commands.adaptbywindow={queryCommandState:function(){return e(this).table?0:-1},execCommand:function(b){var c=e(this),d=c.table;if(d)if("adaptbywindow"==b)a(d,this);else{var f=domUtils.getElementsByTagName(d,"td th");utils.each(f,function(a){a.removeAttribute("width")}),d.removeAttribute("width")}}},UE.commands.averagedistributecol={queryCommandState:function(){var a=f(this);return a&&(a.isFullRow()||a.isFullCol())?0:-1},execCommand:function(a){function b(){var a,b=e.table,c=0,f=0,h=g(d,b);if(e.isFullRow())c=b.offsetWidth,f=e.colsNum;else for(var i,j=e.cellsRange.beginColIndex,k=e.cellsRange.endColIndex,l=j;l<=k;)i=e.selectedTds[l],c+=i.offsetWidth,l+=i.colSpan,f+=1;return a=Math.ceil(c/f)-2*h.tdBorder-2*h.tdPadding}function c(a){utils.each(domUtils.getElementsByTagName(e.table,"th"),function(a){a.setAttribute("width","")});var b=e.isFullRow()?domUtils.getElementsByTagName(e.table,"td"):e.selectedTds;utils.each(b,function(b){1==b.colSpan&&b.setAttribute("width",a)})}var d=this,e=f(d);e&&e.selectedTds.length&&c(b())}},UE.commands.averagedistributerow={queryCommandState:function(){var a=f(this);return a?a.selectedTds&&/th/gi.test(a.selectedTds[0].tagName)?-1:a.isFullRow()||a.isFullCol()?0:-1:-1},execCommand:function(a){function b(){var a,b,c=0,f=e.table,h=g(d,f),i=parseInt(domUtils.getComputedStyle(f.getElementsByTagName("td")[0],"padding-top"));if(e.isFullCol()){var j,k,l=domUtils.getElementsByTagName(f,"caption"),m=domUtils.getElementsByTagName(f,"th");l.length>0&&(j=l[0].offsetHeight),m.length>0&&(k=m[0].offsetHeight),c=f.offsetHeight-(j||0)-(k||0),b=0==m.length?e.rowsNum:e.rowsNum-1}else{for(var n=e.cellsRange.beginRowIndex,o=e.cellsRange.endRowIndex,p=0,q=domUtils.getElementsByTagName(f,"tr"),r=n;r<=o;r++)c+=q[r].offsetHeight,p+=1;b=p}return a=browser.ie&&browser.version<9?Math.ceil(c/b):Math.ceil(c/b)-2*h.tdBorder-2*i}function c(a){var b=e.isFullCol()?domUtils.getElementsByTagName(e.table,"td"):e.selectedTds;utils.each(b,function(b){1==b.rowSpan&&b.setAttribute("height",a)})}var d=this,e=f(d);e&&e.selectedTds.length&&c(b())}},UE.commands.cellalignment={queryCommandState:function(){return e(this).table?0:-1},execCommand:function(a,b){var c=this,d=f(c);if(d)utils.each(d.selectedTds,function(a){domUtils.setAttributes(a,b)});else{var e=c.selection.getStart(),g=e&&domUtils.findParentByTagName(e,["td","th","caption"],!0);/caption/gi.test(g.tagName)?(g.style.textAlign=b.align,g.style.verticalAlign=b.vAlign):domUtils.setAttributes(g,b),c.selection.getRange().setCursor(!0)}},queryCommandValue:function(a){var b=e(this).cell;if(b||(b=c(this)[0]),b){var d=UE.UETable.getUETable(b).selectedTds;return!d.length&&(d=b),UE.UETable.getTableCellAlignState(d)}return null}},UE.commands.tablealignment={queryCommandState:function(){return browser.ie&&browser.version<8?-1:e(this).table?0:-1},execCommand:function(a,b){var c=this,d=c.selection.getStart(),e=d&&domUtils.findParentByTagName(d,["table"],!0);e&&e.setAttribute("align",b)}},UE.commands.edittable={queryCommandState:function(){return e(this).table?0:-1},execCommand:function(a,b){var c=this.selection.getRange(),d=domUtils.findParentByTagName(c.startContainer,"table");if(d){var e=domUtils.getElementsByTagName(d,"td").concat(domUtils.getElementsByTagName(d,"th"),domUtils.getElementsByTagName(d,"caption"));utils.each(e,function(a){a.style.borderColor=b})}}},UE.commands.edittd={queryCommandState:function(){return e(this).table?0:-1},execCommand:function(a,b){var c=this,d=f(c);if(d)utils.each(d.selectedTds,function(a){a.style.backgroundColor=b});else{var e=c.selection.getStart(),g=e&&domUtils.findParentByTagName(e,["td","th","caption"],!0);g&&(g.style.backgroundColor=b)}}},UE.commands.settablebackground={queryCommandState:function(){return c(this).length>1?0:-1},execCommand:function(a,b){var d,e;d=c(this),e=h(d[0]),e.setBackground(d,b)}},UE.commands.cleartablebackground={queryCommandState:function(){var a=c(this);if(!a.length)return-1;for(var b,d=0;b=a[d++];)if(""!==b.style.backgroundColor)return 0;return-1},execCommand:function(){var a=c(this),b=h(a[0]);b.removeBackground(a)}},UE.commands.interlacetable=UE.commands.uninterlacetable={queryCommandState:function(a){var b=e(this).table;if(!b)return-1;var c=b.getAttribute("interlaced");return"interlacetable"==a?"enabled"===c?-1:0:c&&"disabled"!==c?0:-1},execCommand:function(a,b){var c=e(this).table;"interlacetable"==a?(c.setAttribute("interlaced","enabled"),this.fireEvent("interlacetable",c,b)):(c.setAttribute("interlaced","disabled"),this.fireEvent("uninterlacetable",c))}},UE.commands.setbordervisible={queryCommandState:function(a){var b=e(this).table;return b?0:-1},execCommand:function(){var a=e(this).table;utils.each(domUtils.getElementsByTagName(a,"td"),function(a){a.style.borderWidth="1px",a.style.borderStyle="solid"})}}}(),UE.plugins.table=function(){function a(a){}function b(a,b){c(a,"width",!0),c(a,"height",!0)}function c(a,b,c){a.style[b]&&(c&&a.setAttribute(b,parseInt(a.style[b],10)),a.style[b]="")}function d(a){if("TD"==a.tagName||"TH"==a.tagName)return a;var b;return(b=domUtils.findParentByTagName(a,"td",!0)||domUtils.findParentByTagName(a,"th",!0))?b:null}function e(a){var b=new RegExp(domUtils.fillChar,"g");if(a[browser.ie?"innerText":"textContent"].replace(/^\s*$/,"").replace(b,"").length>0)return 0;for(var c in dtd.$isNotEmpty)if(a.getElementsByTagName(c).length)return 0;return 1}function f(a){return a.pageX||a.pageY?{x:a.pageX,y:a.pageY}:{x:a.clientX+N.document.body.scrollLeft-N.document.body.clientLeft,y:a.clientY+N.document.body.scrollTop-N.document.body.clientTop}}function g(b){if(!A())try{var c,e=d(b.target||b.srcElement);if(R&&(N.body.style.webkitUserSelect="none",(Math.abs(V.x-b.clientX)>T||Math.abs(V.y-b.clientY)>T)&&(t(),R=!1,U=0,v(b))),ca&&ha)return U=0,N.body.style.webkitUserSelect="none",N.selection.getNative()[browser.ie9below?"empty":"removeAllRanges"](),c=f(b),m(N,!0,ca,c,e),void("h"==ca?ga.style.left=k(ha,b)+"px":"v"==ca&&(ga.style.top=l(ha,b)+"px"));if(e){if(N.fireEvent("excludetable",e)===!0)return;c=f(b);var g=n(e,c),i=domUtils.findParentByTagName(e,"table",!0);if(j(i,e,b,!0)){if(N.fireEvent("excludetable",i)===!0)return;N.body.style.cursor="url("+N.options.cursorpath+"h.png),pointer"}else if(j(i,e,b)){if(N.fireEvent("excludetable",i)===!0)return;N.body.style.cursor="url("+N.options.cursorpath+"v.png),pointer"}else{N.body.style.cursor="text";/\d/.test(g)&&(g=g.replace(/\d/,""),e=Y(e).getPreviewCell(e,"v"==g)),m(N,!!e&&!!g,e?g:"",c,e)}}else h(!1,i,N)}catch(o){a(o)}}function h(a,b,c){if(a)i(b,c);else{if(fa)return;la=setTimeout(function(){!fa&&ea&&ea.parentNode&&ea.parentNode.removeChild(ea)},2e3)}}function i(a,b){function c(c,d){clearTimeout(g),g=setTimeout(function(){b.fireEvent("tableClicked",a,d)},300)}function d(c){clearTimeout(g);var d=Y(a),e=a.rows[0].cells[0],f=d.getLastCell(),h=d.getCellsRange(e,f);b.selection.getRange().setStart(e,0).setCursor(!1,!0),d.setSelected(h)}var e=domUtils.getXY(a),f=a.ownerDocument;if(ea&&ea.parentNode)return ea;ea=f.createElement("div"),ea.contentEditable=!1,ea.innerHTML="",ea.style.cssText="width:15px;height:15px;background-image:url("+b.options.UEDITOR_HOME_URL+"dialogs/table/dragicon.png);position: absolute;cursor:move;top:"+(e.y-15)+"px;left:"+e.x+"px;",domUtils.unSelectable(ea),ea.onmouseover=function(a){fa=!0},ea.onmouseout=function(a){fa=!1},domUtils.on(ea,"click",function(a,b){c(b,this)}),domUtils.on(ea,"dblclick",function(a,b){d(b)}),domUtils.on(ea,"dragstart",function(a,b){domUtils.preventDefault(b)});var g;f.body.appendChild(ea)}function j(a,b,c,d){var e=f(c),g=n(b,e);if(d){var h=a.getElementsByTagName("caption")[0],i=h?h.offsetHeight:0;return"v1"==g&&e.y-domUtils.getXY(a).y-i<8}return"h1"==g&&e.x-domUtils.getXY(a).x<8}function k(a,b){var c=Y(a);if(c){var d=c.getSameEndPosCells(a,"x")[0],e=c.getSameStartPosXCells(a)[0],g=f(b).x,h=(d?domUtils.getXY(d).x:domUtils.getXY(c.table).x)+20,i=e?domUtils.getXY(e).x+e.offsetWidth-20:N.body.offsetWidth+5||parseInt(domUtils.getComputedStyle(N.body,"width"),10);return h+=Q,i-=Q,gi?i:g}}function l(b,c){try{var d=domUtils.getXY(b).y,e=f(c).y;return ek[c]?(a=!1,!1):void l.push(d)});var b=a?l:k;utils.each(i,function(a,c){a.width=b[c]-G()})},0)}}}}function q(a){if(_(domUtils.getElementsByTagName(N.body,"td th")),utils.each(N.document.getElementsByTagName("table"),function(a){a.ueTable=null}),aa=M(N,a)){var b=domUtils.findParentByTagName(aa,"table",!0);ut=Y(b),ut&&ut.clearSelected(),da?r(a):(N.document.body.style.webkitUserSelect="",ia=!0,N.addListener("mouseover",x))}}function r(a){browser.ie&&(a=u(a)),t(),R=!0,O=setTimeout(function(){v(a)},W)}function s(a,b){for(var c=[],d=null,e=0,f=a.length;e0&&U--},W),2===U))return U=0,void p(b);if(2!=b.button){var c=this,d=c.selection.getRange(),e=domUtils.findParentByTagName(d.startContainer,"table",!0),f=domUtils.findParentByTagName(d.endContainer,"table",!0);if((e||f)&&(e===f?(e=domUtils.findParentByTagName(d.startContainer,["td","th","caption"],!0),f=domUtils.findParentByTagName(d.endContainer,["td","th","caption"],!0),e!==f&&c.selection.clearRange()):c.selection.clearRange()),ia=!1,c.document.body.style.webkitUserSelect="",ca&&ha&&(c.selection.getNative()[browser.ie9below?"empty":"removeAllRanges"](),U=0,ga=c.document.getElementById("ue_tableDragLine"))){var g=domUtils.getXY(ha),h=domUtils.getXY(ga);switch(ca){case"h":z(ha,h.x-g.x);break;case"v":B(ha,h.y-g.y-ha.offsetHeight)}return ca="",ha=null,I(c),void c.fireEvent("saveScene")}if(aa){var i=Y(aa),j=i?i.selectedTds[0]:null;if(j)d=new dom.Range(c.document),domUtils.isEmptyBlock(j)?d.setStart(j,0).setCursor(!1,!0):d.selectNodeContents(j).shrinkBoundary().setCursor(!1,!0);else if(d=c.selection.getRange().shrinkBoundary(),!d.collapsed){var e=domUtils.findParentByTagName(d.startContainer,["td","th"],!0),f=domUtils.findParentByTagName(d.endContainer,["td","th"],!0);(e&&!f||!e&&f||e&&f&&e!==f)&&d.setCursor(!1,!0)}aa=null,c.removeListener("mouseover",x)}else{var k=domUtils.findParentByTagName(b.target||b.srcElement,"td",!0);if(k||(k=domUtils.findParentByTagName(b.target||b.srcElement,"th",!0)),k&&("TD"==k.tagName||"TH"==k.tagName)){if(c.fireEvent("excludetable",k)===!0)return;d=new dom.Range(c.document),d.setStart(k,0).setCursor(!1,!0)}}c._selectionChange(250,b)}}}function x(a,b){if(!A()){var c=this,d=b.target||b.srcElement;if(ba=domUtils.findParentByTagName(d,"td",!0)||domUtils.findParentByTagName(d,"th",!0),aa&&ba&&("TD"==aa.tagName&&"TD"==ba.tagName||"TH"==aa.tagName&&"TH"==ba.tagName)&&domUtils.findParentByTagName(aa,"table")==domUtils.findParentByTagName(ba,"table")){var e=Y(ba);if(aa!=ba){c.document.body.style.webkitUserSelect="none",c.selection.getNative()[browser.ie9below?"empty":"removeAllRanges"]();var f=e.getCellsRange(aa,ba);e.setSelected(f)}else c.document.body.style.webkitUserSelect="",e.clearSelected()}b.preventDefault?b.preventDefault():b.returnValue=!1}}function y(a,b,c){var d=parseInt(domUtils.getComputedStyle(a,"line-height"),10),e=c+b;b=ef?(c&&g.push({left:a}),!1):void 0})}),g}function D(a,b,c){if(a-=G(),a<0)return 0;a-=E(b);var d=a<0?"left":"right";return a=Math.abs(a),utils.each(c,function(b){var c=b[d];c&&(a=Math.min(a,E(c)-Q))}),a=a<0?0:a,"left"===d?-a:a}function E(a){var b=0,b=a.offsetWidth-G();a.nextSibling||(b-=F(a)),b=b<0?0:b;try{a.width=b}catch(c){}return b}function F(a){if(tab=domUtils.findParentByTagName(a,"table",!1),void 0===tab.offsetVal){var b=a.previousSibling;b?tab.offsetVal=a.offsetWidth-b.offsetWidth===X.borderWidth?X.borderWidth:0:tab.offsetVal=0}return tab.offsetVal}function G(){if(void 0===X.tabcellSpace){var a=N.document.createElement("table"),b=N.document.createElement("tbody"),c=N.document.createElement("tr"),d=N.document.createElement("td"),e=null;d.style.cssText="border: 0;",d.width=1,c.appendChild(d),c.appendChild(e=d.cloneNode(!1)),b.appendChild(c),a.appendChild(b),a.style.cssText="visibility: hidden;",N.body.appendChild(a),X.paddingSpace=d.offsetWidth-1;var f=a.offsetWidth;d.style.cssText="",e.style.cssText="",X.borderWidth=(a.offsetWidth-f)/3,X.tabcellSpace=X.paddingSpace+X.borderWidth,N.body.removeChild(a)}return G=function(){return X.tabcellSpace},X.tabcellSpace}function H(a,b){ia||(ga=a.document.createElement("div"),domUtils.setAttributes(ga,{id:"ue_tableDragLine",unselectable:"on",contenteditable:!1,onresizestart:"return false",ondragstart:"return false",onselectstart:"return false",style:"background-color:blue;position:absolute;padding:0;margin:0;background-image:none;border:0px none;opacity:0;filter:alpha(opacity=0)"}),a.body.appendChild(ga))}function I(a){if(!ia)for(var b;b=a.document.getElementById("ue_tableDragLine");)domUtils.remove(b)}function J(a,b){if(b){var c,d=domUtils.findParentByTagName(b,"table"),e=d.getElementsByTagName("caption"),f=d.offsetWidth,g=d.offsetHeight-(e.length>0?e[0].offsetHeight:0),h=domUtils.getXY(d),i=domUtils.getXY(b);switch(a){case"h":c="height:"+g+"px;top:"+(h.y+(e.length>0?e[0].offsetHeight:0))+"px;left:"+(i.x+b.offsetWidth),ga.style.cssText=c+"px;position: absolute;display:block;background-color:blue;width:1px;border:0; color:blue;opacity:.3;filter:alpha(opacity=30)";break;case"v":c="width:"+f+"px;left:"+h.x+"px;top:"+(i.y+b.offsetHeight),ga.style.cssText=c+"px;overflow:hidden;position: absolute;display:block;background-color:blue;height:1px;border:0;color:blue;opacity:.2;filter:alpha(opacity=20)"}}}function K(a,b){for(var c,d,e=domUtils.getElementsByTagName(a.body,"table"),f=0;d=e[f++];){var g=domUtils.getElementsByTagName(d,"td");g[0]&&(b?(c=g[0].style.borderColor.replace(/\s/g,""),/(#ffffff)|(rgb\(255,255,255\))/gi.test(c)&&domUtils.addClass(d,"noBorderTable")):domUtils.removeClasses(d,"noBorderTable"))}}function L(a,b,c){var d=a.body;return d.offsetWidth-(b?2*parseInt(domUtils.getComputedStyle(d,"margin-left"),10):0)-2*c.tableBorder-(a.options.offsetWidth||0)}function M(a,b){var c=domUtils.findParentByTagName(b.target||b.srcElement,["td","th"],!0),d=null;if(!c)return null;if(d=n(c,f(b)),!c)return null;if("h1"===d&&c.previousSibling){var e=domUtils.getXY(c),g=c.offsetWidth;Math.abs(e.x+g-b.clientX)>g/3&&(c=c.previousSibling)}else if("v1"===d&&c.parentNode.previousSibling){var e=domUtils.getXY(c),h=c.offsetHeight;Math.abs(e.y+h-b.clientY)>h/3&&(c=c.parentNode.previousSibling.firstChild)}return c&&a.fireEvent("excludetable",c)!==!0?c:null}var N=this,O=null,P=null,Q=5,R=!1,S=5,T=10,U=0,V=null,W=360,X=UE.UETable,Y=function(a){return X.getUETable(a)},Z=function(a){return X.getUETableBySelected(a)},$=function(a,b){return X.getDefaultValue(a,b)},_=function(a){return X.removeSelectedClass(a)};N.ready(function(){var a=this,b=a.selection.getText;a.selection.getText=function(){var c=Z(a);if(c){var d="";return utils.each(c.selectedTds,function(a){d+=a[browser.ie?"innerText":"textContent"]}),d}return b.call(a.selection)}});var aa=null,ba=null,ca="",da=!1,ea=null,fa=!1,ga=null,ha=null,ia=!1,ja=!0;N.setOpt({maxColNum:20,maxRowNum:100,defaultCols:5,defaultRows:5,tdvalign:"top",cursorpath:N.options.UEDITOR_HOME_URL+"themes/default/images/cursor_",tableDragable:!1,classList:["ue-table-interlace-color-single","ue-table-interlace-color-double"]}),N.getUETable=Y;var ka={deletetable:1,inserttable:1,cellvalign:1,insertcaption:1,deletecaption:1,inserttitle:1,deletetitle:1,mergeright:1,mergedown:1,mergecells:1,insertrow:1,insertrownext:1,deleterow:1,insertcol:1,insertcolnext:1,deletecol:1,splittocells:1,splittorows:1,splittocols:1,adaptbytext:1,adaptbywindow:1,adaptbycustomer:1,insertparagraph:1,insertparagraphbeforetable:1,averagedistributecol:1,averagedistributerow:1};N.ready(function(){utils.cssRule("table",".selectTdClass{background-color:#edf5fa !important}table.noBorderTable td,table.noBorderTable th,table.noBorderTable caption{border:1px dashed #ddd !important}table{margin-bottom:10px;border-collapse:collapse;display:table;}td,th{padding: 5px 10px;border: 1px solid #DDD;}caption{border:1px dashed #DDD;border-bottom:0;padding:3px;text-align:center;}th{border-top:1px solid #BBB;background-color:#F7F7F7;}table tr.firstRow th{border-top-width:2px;}.ue-table-interlace-color-single{ background-color: #fcfcfc; } .ue-table-interlace-color-double{ background-color: #f7faff; }td p{margin:0;padding:0;}",N.document);var a,c,f;N.addListener("keydown",function(b,d){var g=this,h=d.keyCode||d.which;if(8==h){var i=Z(g);i&&i.selectedTds.length&&(i.isFullCol()?g.execCommand("deletecol"):i.isFullRow()?g.execCommand("deleterow"):g.fireEvent("delcells"),domUtils.preventDefault(d));var j=domUtils.findParentByTagName(g.selection.getStart(),"caption",!0),k=g.selection.getRange();if(k.collapsed&&j&&e(j)){g.fireEvent("saveScene");var l=j.parentNode;domUtils.remove(j),l&&k.setStart(l.rows[0].cells[0],0).setCursor(!1,!0),g.fireEvent("saveScene")}}if(46==h&&(i=Z(g))){g.fireEvent("saveScene");for(var m,n=0;m=i.selectedTds[n++];)domUtils.fillNode(g.document,m);g.fireEvent("saveScene"),domUtils.preventDefault(d)}if(13==h){var o=g.selection.getRange(),j=domUtils.findParentByTagName(o.startContainer,"caption",!0);if(j){var l=domUtils.findParentByTagName(j,"table");return o.collapsed?j&&o.setStart(l.rows[0].cells[0],0).setCursor(!1,!0):(o.deleteContents(),g.fireEvent("saveScene")),void domUtils.preventDefault(d)}if(o.collapsed){var l=domUtils.findParentByTagName(o.startContainer,"table");if(l){var p=l.rows[0].cells[0],q=domUtils.findParentByTagName(g.selection.getStart(),["td","th"],!0),r=l.previousSibling;if(p===q&&(!r||1==r.nodeType&&"TABLE"==r.tagName)&&domUtils.isStartInblock(o)){var s=domUtils.findParent(g.selection.getStart(),function(a){return domUtils.isBlockElm(a)},!0);s&&(/t(h|d)/i.test(s.tagName)||s===q.firstChild)&&(g.execCommand("insertparagraphbeforetable"),domUtils.preventDefault(d))}}}}if((d.ctrlKey||d.metaKey)&&"67"==d.keyCode){a=null;var i=Z(g);if(i){var t=i.selectedTds;c=i.isFullCol(),f=i.isFullRow(),a=[[i.cloneCell(t[0],null,!0)]];for(var m,n=1;m=t[n];n++)m.parentNode!==t[n-1].parentNode?a.push([i.cloneCell(m,null,!0)]):a[a.length-1].push(i.cloneCell(m,null,!0))}}}),N.addListener("tablehasdeleted",function(){m(this,!1,"",null),ea&&domUtils.remove(ea)}),N.addListener("beforepaste",function(d,g){var h=this,i=h.selection.getRange();if(domUtils.findParentByTagName(i.startContainer,"caption",!0)){var j=h.document.createElement("div");return j.innerHTML=g.html,void(g.html=j[browser.ie9below?"innerText":"textContent"])}var k=Z(h);if(a){h.fireEvent("saveScene");var l,m,i=h.selection.getRange(),n=domUtils.findParentByTagName(i.startContainer,["td","th"],!0);if(n){var o=Y(n);if(f){var p=o.getCellInfo(n).rowIndex;"TH"==n.tagName&&p++;for(var q,r=0;q=a[r++];){for(var s,t=o.insertRow(p++,"td"),u=0;s=q[u];u++){var v=t.cells[u];v||(v=t.insertCell(u)),v.innerHTML=s.innerHTML,s.getAttribute("width")&&v.setAttribute("width",s.getAttribute("width")),s.getAttribute("vAlign")&&v.setAttribute("vAlign",s.getAttribute("vAlign")),s.getAttribute("align")&&v.setAttribute("align",s.getAttribute("align")),s.style.cssText&&(v.style.cssText=s.style.cssText)}for(var s,u=0;(s=t.cells[u])&&q[u];u++)s.innerHTML=q[u].innerHTML,q[u].getAttribute("width")&&s.setAttribute("width",q[u].getAttribute("width")),q[u].getAttribute("vAlign")&&s.setAttribute("vAlign",q[u].getAttribute("vAlign")),q[u].getAttribute("align")&&s.setAttribute("align",q[u].getAttribute("align")),q[u].style.cssText&&(s.style.cssText=q[u].style.cssText)}}else{if(c){y=o.getCellInfo(n);for(var s,w=0,u=0,q=a[0];s=q[u++];)w+=s.colSpan||1;for(h.__hasEnterExecCommand=!0,r=0;r1&&(x.rowSpan=1)}var z=$(h),A=h.body.offsetWidth-(ja?2*parseInt(domUtils.getComputedStyle(h.body,"margin-left"),10):0)-2*z.tableBorder-(h.options.offsetWidth||0);h.execCommand("insertHTML",""+k.innerHTML.replace(/>\s*<").replace(/\bth\b/gi,"td")+"
    ")}return h.fireEvent("contentchange"),h.fireEvent("saveScene"),g.html="",!0}var B,j=h.document.createElement("div");j.innerHTML=g.html,B=j.getElementsByTagName("table"),domUtils.findParentByTagName(h.selection.getStart(),"table")?(utils.each(B,function(a){domUtils.remove(a)}),domUtils.findParentByTagName(h.selection.getStart(),"caption",!0)&&(j.innerHTML=j[browser.ie?"innerText":"textContent"])):utils.each(B,function(a){b(a,!0),domUtils.removeAttributes(a,["style","border"]),utils.each(domUtils.getElementsByTagName(a,"td"),function(a){e(a)&&domUtils.fillNode(h.document,a),b(a,!0)})}),g.html=j.innerHTML}),N.addListener("afterpaste",function(){utils.each(domUtils.getElementsByTagName(N.body,"table"),function(a){if(a.offsetWidth>N.body.offsetWidth){var b=$(N,a);a.style.width=N.body.offsetWidth-(ja?2*parseInt(domUtils.getComputedStyle(N.body,"margin-left"),10):0)-2*b.tableBorder-(N.options.offsetWidth||0)+"px"}})}),N.addListener("blur",function(){a=null});var i;N.addListener("keydown",function(){clearTimeout(i),i=setTimeout(function(){var a=N.selection.getRange(),b=domUtils.findParentByTagName(a.startContainer,["th","td"],!0);if(b){var c=b.parentNode.parentNode.parentNode;c.offsetWidth>c.getAttribute("width")&&(b.style.wordBreak="break-all")}},100)}),N.addListener("selectionchange",function(){m(N,!1,"",null)}),N.addListener("contentchange",function(){var a=this;if(I(a),!Z(a)){var b=a.selection.getRange(),c=b.startContainer;c=domUtils.findParentByTagName(c,["td","th"],!0),utils.each(domUtils.getElementsByTagName(a.document,"table"),function(b){a.fireEvent("excludetable",b)!==!0&&(b.ueTable=new X(b),b.onmouseover=function(){a.fireEvent("tablemouseover",b)},b.onmousemove=function(){a.fireEvent("tablemousemove",b),a.options.tableDragable&&h(!0,this,a),utils.defer(function(){a.fireEvent("contentchange",50)},!0)},b.onmouseout=function(){a.fireEvent("tablemouseout",b),m(a,!1,"",null),I(a)},b.onclick=function(b){b=a.window.event||b;var c=d(b.target||b.srcElement);if(c){var e,f=Y(c),g=f.table,h=f.getCellInfo(c),i=a.selection.getRange();if(j(g,c,b,!0)){var k=f.getCell(f.indexTable[f.rowsNum-1][h.colIndex].rowIndex,f.indexTable[f.rowsNum-1][h.colIndex].cellIndex);return void(b.shiftKey&&f.selectedTds.length?f.selectedTds[0]!==k?(e=f.getCellsRange(f.selectedTds[0],k),f.setSelected(e)):i&&i.selectNodeContents(k).select():c!==k?(e=f.getCellsRange(c,k),f.setSelected(e)):i&&i.selectNodeContents(k).select())}if(j(g,c,b)){var l=f.getCell(f.indexTable[h.rowIndex][f.colsNum-1].rowIndex,f.indexTable[h.rowIndex][f.colsNum-1].cellIndex);b.shiftKey&&f.selectedTds.length?f.selectedTds[0]!==l?(e=f.getCellsRange(f.selectedTds[0],l),f.setSelected(e)):i&&i.selectNodeContents(l).select():c!==l?(e=f.getCellsRange(c,l),f.setSelected(e)):i&&i.selectNodeContents(l).select()}}})}),K(a,!0)}}),domUtils.on(N.document,"mousemove",g),domUtils.on(N.document,"mouseout",function(a){var b=a.target||a.srcElement;"TABLE"==b.tagName&&m(N,!1,"",null)}),N.addListener("interlacetable",function(a,b,c){if(b)for(var d=this,e=b.rows,f=e.length,g=function(a,b,c){return a[b]?a[b]:c?a[b%a.length]:""},h=0;h1?k:f.getCellInfo(d).rowIndex;var g=f.getTabNextCell(d,k);g?e(g)?a.setStart(g,0).setCursor(!1,!0):a.selectNodeContents(g).select():(N.fireEvent("saveScene"),N.__hasEnterExecCommand=!0,this.execCommand("insertrownext"),N.__hasEnterExecCommand=!1,a=this.selection.getRange(),a.setStart(c.rows[c.rows.length-1].cells[0],0).setCursor(),N.fireEvent("saveScene"))}return!0}}),browser.ie&&N.addListener("selectionchange",function(){m(this,!1,"",null)}),N.addListener("keydown",function(a,b){var c=this,d=b.keyCode||b.which;if(8!=d&&46!=d){var e=!(b.ctrlKey||b.metaKey||b.shiftKey||b.altKey);e&&_(domUtils.getElementsByTagName(c.body,"td"));var f=Z(c);f&&e&&f.clearSelected()}}),N.addListener("beforegetcontent",function(){K(this,!1),browser.ie&&utils.each(this.document.getElementsByTagName("caption"),function(a){domUtils.isEmptyNode(a)&&(a.innerHTML=" ")})}),N.addListener("aftergetcontent",function(){K(this,!0)}),N.addListener("getAllHtml",function(){_(N.document.getElementsByTagName("td"))}),N.addListener("fullscreenchanged",function(a,b){if(!b){var c=this.body.offsetWidth/document.body.offsetWidth,d=domUtils.getElementsByTagName(this.body,"table");utils.each(d,function(a){if(a.offsetWidth1||c[e].getAttribute("rowspan")>1)return-1;return b?"enablesort"==a^"sortEnabled"!=b.getAttribute("data-sort")?-1:0:-1},execCommand:function(a){var b=d(this).table;b.setAttribute("data-sort","enablesort"==a?"sortEnabled":"sortDisabled"),"enablesort"==a?domUtils.addClass(b,"sortEnabled"):domUtils.removeClasses(b,"sortEnabled")}}},UE.plugins.contextmenu=function(){var a=this;if(a.setOpt("enableContextMenu",!0),a.getOpt("enableContextMenu")!==!1){var b,c=a.getLang("contextMenu"),d=a.options.contextMenu||[{label:c.selectall,cmdName:"selectall"},{label:c.cleardoc,cmdName:"cleardoc",exec:function(){confirm(c.confirmclear)&&this.execCommand("cleardoc")}},"-",{label:c.unlink,cmdName:"unlink"},"-",{group:c.paragraph,icon:"justifyjustify",subMenu:[{label:c.justifyleft,cmdName:"justify",value:"left"},{label:c.justifyright,cmdName:"justify",value:"right"},{label:c.justifycenter,cmdName:"justify",value:"center"},{label:c.justifyjustify,cmdName:"justify",value:"justify"}]},"-",{group:c.table,icon:"table",subMenu:[{label:c.inserttable,cmdName:"inserttable"},{label:c.deletetable,cmdName:"deletetable"},"-",{label:c.deleterow,cmdName:"deleterow"},{label:c.deletecol,cmdName:"deletecol"},{label:c.insertcol,cmdName:"insertcol"},{label:c.insertcolnext,cmdName:"insertcolnext"},{label:c.insertrow,cmdName:"insertrow"},{label:c.insertrownext,cmdName:"insertrownext"},"-",{label:c.insertcaption,cmdName:"insertcaption"},{label:c.deletecaption,cmdName:"deletecaption"},{label:c.inserttitle,cmdName:"inserttitle"},{label:c.deletetitle,cmdName:"deletetitle"},{label:c.inserttitlecol,cmdName:"inserttitlecol"},{label:c.deletetitlecol,cmdName:"deletetitlecol"},"-",{label:c.mergecells,cmdName:"mergecells"},{label:c.mergeright,cmdName:"mergeright"},{label:c.mergedown,cmdName:"mergedown"},"-",{label:c.splittorows,cmdName:"splittorows"},{label:c.splittocols,cmdName:"splittocols"},{label:c.splittocells,cmdName:"splittocells"},"-",{label:c.averageDiseRow,cmdName:"averagedistributerow"},{label:c.averageDisCol,cmdName:"averagedistributecol"},"-",{label:c.edittd,cmdName:"edittd",exec:function(){UE.ui.edittd&&new UE.ui.edittd(this),this.getDialog("edittd").open()}},{label:c.edittable,cmdName:"edittable",exec:function(){UE.ui.edittable&&new UE.ui.edittable(this),this.getDialog("edittable").open()}},{label:c.setbordervisible,cmdName:"setbordervisible"}]},{group:c.tablesort,icon:"tablesort",subMenu:[{label:c.enablesort,cmdName:"enablesort"},{label:c.disablesort,cmdName:"disablesort"},"-",{label:c.reversecurrent,cmdName:"sorttable",value:"reversecurrent"},{label:c.orderbyasc,cmdName:"sorttable",value:"orderbyasc"},{label:c.reversebyasc,cmdName:"sorttable",value:"reversebyasc"},{label:c.orderbynum,cmdName:"sorttable",value:"orderbynum"},{label:c.reversebynum,cmdName:"sorttable",value:"reversebynum"}]},{group:c.borderbk,icon:"borderBack",subMenu:[{label:c.setcolor,cmdName:"interlacetable",exec:function(){this.execCommand("interlacetable")}},{label:c.unsetcolor,cmdName:"uninterlacetable",exec:function(){this.execCommand("uninterlacetable")}},{label:c.setbackground,cmdName:"settablebackground",exec:function(){this.execCommand("settablebackground",{repeat:!0,colorList:["#bbb","#ccc"]})}},{label:c.unsetbackground,cmdName:"cleartablebackground",exec:function(){this.execCommand("cleartablebackground")}},{label:c.redandblue,cmdName:"settablebackground",exec:function(){this.execCommand("settablebackground",{repeat:!0,colorList:["red","blue"]})}},{label:c.threecolorgradient,cmdName:"settablebackground",exec:function(){this.execCommand("settablebackground",{repeat:!0,colorList:["#aaa","#bbb","#ccc"]})}}]},{group:c.aligntd,icon:"aligntd",subMenu:[{cmdName:"cellalignment",value:{align:"left",vAlign:"top"}},{cmdName:"cellalignment",value:{align:"center",vAlign:"top"}},{cmdName:"cellalignment",value:{align:"right",vAlign:"top"}},{cmdName:"cellalignment",value:{align:"left",vAlign:"middle"}},{cmdName:"cellalignment",value:{align:"center",vAlign:"middle"}},{cmdName:"cellalignment",value:{align:"right",vAlign:"middle"}},{cmdName:"cellalignment",value:{align:"left",vAlign:"bottom"}},{cmdName:"cellalignment",value:{align:"center",vAlign:"bottom"}},{cmdName:"cellalignment",value:{align:"right",vAlign:"bottom"}}]},{group:c.aligntable,icon:"aligntable",subMenu:[{cmdName:"tablealignment",className:"left",label:c.tableleft,value:"left"},{cmdName:"tablealignment",className:"center",label:c.tablecenter,value:"center"},{cmdName:"tablealignment",className:"right",label:c.tableright,value:"right"}]},"-",{label:c.insertparagraphbefore,cmdName:"insertparagraph",value:!0},{label:c.insertparagraphafter,cmdName:"insertparagraph"},{label:c.copy,cmdName:"copy"},{label:c.paste,cmdName:"paste"}];if(d.length){var e=UE.ui.uiUtils;a.addListener("contextmenu",function(f,g){var h=e.getViewportOffsetByEvent(g);a.fireEvent("beforeselectionchange"),b&&b.destroy();for(var i,j=0,k=[];i=d[j];j++){var l;!function(b){function d(){switch(b.icon){case"table":return a.getLang("contextMenu.table");case"justifyjustify":return a.getLang("contextMenu.paragraph");case"aligntd":return a.getLang("contextMenu.aligntd");case"aligntable":return a.getLang("contextMenu.aligntable");case"tablesort":return c.tablesort;case"borderBack":return c.borderbk;default:return""}}if("-"==b)(l=k[k.length-1])&&"-"!==l&&k.push("-");else if(b.hasOwnProperty("group")){for(var e,f=0,g=[];e=b.subMenu[f];f++)!function(b){"-"==b?(l=g[g.length-1])&&"-"!==l?g.push("-"):g.splice(g.length-1):(a.commands[b.cmdName]||UE.commands[b.cmdName]||b.query)&&(b.query?b.query():a.queryCommandState(b.cmdName))>-1&&g.push({label:b.label||a.getLang("contextMenu."+b.cmdName+(b.value||""))||"",className:"edui-for-"+b.cmdName+(b.className?" edui-for-"+b.cmdName+"-"+b.className:""),onclick:b.exec?function(){b.exec.call(a)}:function(){a.execCommand(b.cmdName,b.value)}})}(e);g.length&&k.push({label:d(),className:"edui-for-"+b.icon,subMenu:{items:g,editor:a}})}else(a.commands[b.cmdName]||UE.commands[b.cmdName]||b.query)&&(b.query?b.query.call(a):a.queryCommandState(b.cmdName))>-1&&k.push({label:b.label||a.getLang("contextMenu."+b.cmdName),className:"edui-for-"+(b.icon?b.icon:b.cmdName+(b.value||"")),onclick:b.exec?function(){b.exec.call(a)}:function(){a.execCommand(b.cmdName,b.value)}})}(i)}if("-"==k[k.length-1]&&k.pop(),b=new UE.ui.Menu({items:k,className:"edui-contextmenu",editor:a}),b.render(),b.showAt(h),a.fireEvent("aftershowcontextmenu",b),domUtils.preventDefault(g),browser.ie){var m;try{m=a.selection.getNative().createRange()}catch(n){return}if(m.item){var o=new dom.Range(a.document);o.selectNode(m.item(0)).select(!0,!0)}}}),a.addListener("aftershowcontextmenu",function(b,c){if(a.zeroclipboard){var d=c.items;for(var e in d)"edui-for-copy"==d[e].className&&a.zeroclipboard.clip(d[e].getDom())}})}}},UE.plugins.shortcutmenu=function(){var a,b=this,c=b.options.shortcutMenu||[];c.length&&(b.addListener("contextmenu mouseup",function(b,d){var e=this,f={type:b,target:d.target||d.srcElement,screenX:d.screenX,screenY:d.screenY,clientX:d.clientX,clientY:d.clientY};if(setTimeout(function(){var d=e.selection.getRange();d.collapsed!==!1&&"contextmenu"!=b||(a||(a=new baidu.editor.ui.ShortCutMenu({editor:e,items:c,theme:e.options.theme,className:"edui-shortcutmenu"}),a.render(),e.fireEvent("afterrendershortcutmenu",a)),a.show(f,!!UE.plugins.contextmenu))}),"contextmenu"==b&&(domUtils.preventDefault(d),browser.ie9below)){var g;try{g=e.selection.getNative().createRange()}catch(d){return}if(g.item){var h=new dom.Range(e.document);h.selectNode(g.item(0)).select(!0,!0)}}}),b.addListener("keydown",function(b){"keydown"==b&&a&&!a.isHidden&&a.hide()}))},UE.plugins.basestyle=function(){var a={bold:["strong","b"],italic:["em","i"],subscript:["sub"],superscript:["sup"]},b=function(a,b){return domUtils.filterNodeList(a.selection.getStartElementPath(),b)},c=this;c.addshortcutkey({Bold:"ctrl+66",Italic:"ctrl+73",Underline:"ctrl+85"}),c.addInputRule(function(a){utils.each(a.getNodesByTagName("b i"),function(a){switch(a.tagName){case"b":a.tagName="strong";break;case"i":a.tagName="em"}})});for(var d in a)!function(a,d){c.commands[a]={execCommand:function(a){var e=c.selection.getRange(),f=b(this,d);if(e.collapsed){if(f){var g=c.document.createTextNode("");e.insertNode(g).removeInlineStyle(d),e.setStartBefore(g),domUtils.remove(g)}else{var h=e.document.createElement(d[0]);"superscript"!=a&&"subscript"!=a||(g=c.document.createTextNode(""),e.insertNode(g).removeInlineStyle(["sub","sup"]).setStartBefore(g).collapse(!0)),e.insertNode(h).setStart(h,0)}e.collapse(!0)}else"superscript"!=a&&"subscript"!=a||f&&f.tagName.toLowerCase()==a||e.removeInlineStyle(["sub","sup"]),f?e.removeInlineStyle(d):e.applyInlineStyle(d[0]);e.select()},queryCommandState:function(){return b(this,d)?1:0}}}(d,a[d])},UE.plugins.elementpath=function(){var a,b,c=this;c.setOpt("elementPathEnabled",!0),c.options.elementPathEnabled&&(c.commands.elementpath={execCommand:function(d,e){var f=b[e],g=c.selection.getRange();a=1*e,g.selectNode(f).select()},queryCommandValue:function(){var c=[].concat(this.selection.getStartElementPath()).reverse(),d=[];b=c;for(var e,f=0;e=c[f];f++)if(3!=e.nodeType){var g=e.tagName.toLowerCase();if("img"==g&&e.getAttribute("anchorname")&&(g="anchor"),d[f]=g,a==f){a=-1;break}}return d}})},UE.plugins.formatmatch=function(){function a(f,g){function h(a){return m&&a.selectNode(m),a.applyInlineStyle(d[d.length-1].tagName,null,d)}if(browser.webkit)var i="IMG"==g.target.tagName?g.target:null;c.undoManger&&c.undoManger.save();var j=c.selection.getRange(),k=i||j.getClosedNode();if(b&&k&&"IMG"==k.tagName)k.style.cssText+=";float:"+(b.style.cssFloat||b.style.styleFloat||"none")+";display:"+(b.style.display||"inline"),b=null;else if(!b){var l=j.collapsed;if(l){var m=c.document.createTextNode("match");j.insertNode(m).select()}c.__hasEnterExecCommand=!0;var n=c.options.removeFormatAttributes;c.options.removeFormatAttributes="",c.execCommand("removeformat"),c.options.removeFormatAttributes=n,c.__hasEnterExecCommand=!1,j=c.selection.getRange(),d.length&&h(j),m&&j.setStartBefore(m).collapse(!0),j.select(),m&&domUtils.remove(m)}c.undoManger&&c.undoManger.save(),c.removeListener("mouseup",a),e=0}var b,c=this,d=[],e=0;c.addListener("reset",function(){d=[],e=0}),c.commands.formatmatch={execCommand:function(f){if(e)return e=0,d=[],void c.removeListener("mouseup",a);var g=c.selection.getRange();if(b=g.getClosedNode(),!b||"IMG"!=b.tagName){g.collapse(!0).shrinkBoundary();var h=g.startContainer;d=domUtils.findParents(h,!0,function(a){return!domUtils.isBlockElm(a)&&1==a.nodeType});for(var i,j=0;i=d[j];j++)if("A"==i.tagName){d.splice(j,1);break}}c.addListener("mouseup",a),e=1},queryCommandState:function(){return e},notNeedUndo:1}},UE.plugin.register("searchreplace",function(){function a(a,b,c){var d=b.searchStr;b.dir==-1&&(a=a.split("").reverse().join(""),d=d.split("").reverse().join(""),c=a.length-c);for(var e,f=new RegExp(d,"g"+(b.casesensitive?"":"i"));e=f.exec(a);)if(e.index>=c)return b.dir==-1?a.length-e.index-b.searchStr.length:e.index;return-1}function b(b,c,d){var e,f,h=d.all||1==d.dir?"getNextDomNode":"getPreDomNode";domUtils.isBody(b)&&(b=b.firstChild);for(var i=1;b;){if(e=3==b.nodeType?b.nodeValue:b[browser.ie?"innerText":"textContent"],f=a(e,d,c),i=0,f!=-1)return{node:b,index:f};for(b=domUtils[h](b);b&&g[b.nodeName.toLowerCase()];)b=domUtils[h](b,!0);b&&(c=d.dir==-1?(3==b.nodeType?b.nodeValue:b[browser.ie?"innerText":"textContent"]).length:0)}}function c(a,b,d){for(var e,f=0,g=a.firstChild,h=0;g;){if(3==g.nodeType){if(h=g.nodeValue.replace(/(^[\t\r\n]+)|([\t\r\n]+$)/,"").length,f+=h,f>=b)return{node:g,index:h-(f-b)}}else if(!dtd.$empty[g.tagName]&&(h=g[browser.ie?"innerText":"textContent"].replace(/(^[\t\r\n]+)|([\t\r\n]+$)/,"").length,f+=h,f>=b&&(e=c(g,h-(f-b),d))))return e;g=domUtils.getNextDomNode(g)}}function d(a,d){var f,g=a.selection.getRange(),h=d.searchStr,i=a.document.createElement("span");if(i.innerHTML="$$ueditor_searchreplace_key$$",g.shrinkBoundary(!0),!g.collapsed){g.select();var j=a.selection.getText();if(new RegExp("^"+d.searchStr+"$",d.casesensitive?"":"i").test(j)){if(void 0!=d.replaceStr)return e(g,d.replaceStr),g.select(),!0;g.collapse(d.dir==-1)}}g.insertNode(i),g.enlargeToBlockElm(!0),f=g.startContainer;var k=f[browser.ie?"innerText":"textContent"].indexOf("$$ueditor_searchreplace_key$$");g.setStartBefore(i),domUtils.remove(i);var l=b(f,k,d);if(l){var m=c(l.node,l.index,h),n=c(l.node,l.index+h.length,h);return g.setStart(m.node,m.index).setEnd(n.node,n.index),void 0!==d.replaceStr&&e(g,d.replaceStr),g.select(),!0}g.setCursor()}function e(a,b){b=f.document.createTextNode(b),a.deleteContents().insertNode(b)}var f=this,g={table:1,tbody:1,tr:1,ol:1,ul:1};return{commands:{searchreplace:{execCommand:function(a,b){utils.extend(b,{all:!1,casesensitive:!1,dir:1},!0);var c=0;if(b.all){var e=f.selection.getRange(),g=f.body.firstChild;for(g&&1==g.nodeType?(e.setStart(g,0),e.shrinkBoundary(!0)):3==g.nodeType&&e.setStartBefore(g),e.collapse(!0).select(!0),void 0!==b.replaceStr&&f.fireEvent("saveScene");d(this,b);)c++;c&&f.fireEvent("saveScene")}else void 0!==b.replaceStr&&f.fireEvent("saveScene"),d(this,b)&&c++,c&&f.fireEvent("saveScene");return c},notNeedUndo:1}}}}),UE.plugins.customstyle=function(){var a=this;a.setOpt({customstyle:[{tag:"h1",name:"tc",style:"font-size:32px;font-weight:bold;border-bottom:#ccc 2px solid;padding:0 4px 0 0;text-align:center;margin:0 0 20px 0;"},{tag:"h1",name:"tl",style:"font-size:32px;font-weight:bold;border-bottom:#ccc 2px solid;padding:0 4px 0 0;text-align:left;margin:0 0 10px 0;"},{tag:"span",name:"im",style:"font-size:16px;font-style:italic;font-weight:bold;line-height:18px;"},{tag:"span",name:"hi",style:"font-size:16px;font-style:italic;font-weight:bold;color:rgb(51, 153, 204);line-height:18px;"}]}),a.commands.customstyle={execCommand:function(a,b){var c,d,e=this,f=b.tag,g=domUtils.findParent(e.selection.getStart(),function(a){return a.getAttribute("label")},!0),h={};for(var i in b)void 0!==b[i]&&(h[i]=b[i]);if(delete h.tag,g&&g.getAttribute("label")==b.label){if(c=this.selection.getRange(),d=c.createBookmark(),c.collapsed)if(dtd.$block[g.tagName]){var j=e.document.createElement("p");domUtils.moveChild(g,j),g.parentNode.insertBefore(j,g),domUtils.remove(g)}else domUtils.remove(g,!0);else{var k=domUtils.getCommonAncestor(d.start,d.end),l=domUtils.getElementsByTagName(k,f);new RegExp(f,"i").test(k.tagName)&&l.push(k);for(var m,n=0;m=l[n++];)if(m.getAttribute("label")==b.label){var o=domUtils.getPosition(m,d.start),p=domUtils.getPosition(m,d.end);if((o&domUtils.POSITION_FOLLOWING||o&domUtils.POSITION_CONTAINS)&&(p&domUtils.POSITION_PRECEDING||p&domUtils.POSITION_CONTAINS)&&dtd.$block[f]){var j=e.document.createElement("p");domUtils.moveChild(m,j),m.parentNode.insertBefore(j,m)}domUtils.remove(m,!0)}g=domUtils.findParent(k,function(a){return a.getAttribute("label")==b.label},!0),g&&domUtils.remove(g,!0)}c.moveToBookmark(d).select()}else if(dtd.$block[f]){if(this.execCommand("paragraph",f,h,"customstyle"),c=e.selection.getRange(),!c.collapsed){c.collapse(),g=domUtils.findParent(e.selection.getStart(),function(a){return a.getAttribute("label")==b.label},!0);var q=e.document.createElement("p");domUtils.insertAfter(g,q),domUtils.fillNode(e.document,q),c.setStart(q,0).setCursor()}}else{if(c=e.selection.getRange(),c.collapsed)return g=e.document.createElement(f),domUtils.setAttributes(g,h),void c.insertNode(g).setStart(g,0).setCursor();d=c.createBookmark(),c.applyInlineStyle(f,h).moveToBookmark(d).select()}},queryCommandValue:function(){var a=domUtils.filterNodeList(this.selection.getStartElementPath(),function(a){return a.getAttribute("label")});return a?a.getAttribute("label"):""}},a.addListener("keyup",function(b,c){var d=c.keyCode||c.which;if(32==d||13==d){var e=a.selection.getRange();if(e.collapsed){var f=domUtils.findParent(a.selection.getStart(),function(a){return a.getAttribute("label")},!0);if(f&&dtd.$block[f.tagName]&&domUtils.isEmptyNode(f)){var g=a.document.createElement("p");domUtils.insertAfter(f,g),domUtils.fillNode(a.document,g),domUtils.remove(f),e.setStart(g,0).setCursor()}}}})},UE.plugins.catchremoteimage=function(){var me=this,ajax=UE.ajax;me.options.catchRemoteImageEnable!==!1&&(me.setOpt({catchRemoteImageEnable:!1}),me.addListener("afterpaste",function(){me.fireEvent("catchRemoteImage")}),me.addListener("catchRemoteImage",function(){function catchremoteimage(a,b){var c=utils.serializeParam(me.queryCommandValue("serverparam"))||"",d=utils.formatUrl(catcherActionUrl+(catcherActionUrl.indexOf("?")==-1?"?":"&")+c),e=utils.isCrossDomainUrl(d),f={method:"POST",dataType:e?"jsonp":"",timeout:6e4,onsuccess:b.success,onerror:b.error};f[catcherFieldName]=a,ajax.request(d,f)}for(var catcherLocalDomain=me.getOpt("catcherLocalDomain"),catcherActionUrl=me.getActionUrl(me.getOpt("catcherActionName")),catcherUrlPrefix=me.getOpt("catcherUrlPrefix"),catcherFieldName=me.getOpt("catcherFieldName"),remoteImages=[],imgs=domUtils.getElementsByTagName(me.document,"img"),test=function(a,b){if(a.indexOf(location.host)!=-1||/(^\.)|(^\/)/.test(a))return!0;if(b)for(var c,d=0;c=b[d++];)if(a.indexOf(c)!==-1)return!0;return!1},i=0,ci;ci=imgs[i++];)if(!ci.getAttribute("word_img")){var src=ci.getAttribute("_src")||ci.src||"";/^(https?|ftp):/i.test(src)&&!test(src,catcherLocalDomain)&&remoteImages.push(src)}remoteImages.length&&catchremoteimage(remoteImages,{success:function(r){try{var info=void 0!==r.state?r:eval("("+r.responseText+")")}catch(e){return}var i,j,ci,cj,oldSrc,newSrc,list=info.list;for(i=0;ci=imgs[i++];)for(oldSrc=ci.getAttribute("_src")||ci.src||"",j=0;cj=list[j++];)if(oldSrc==cj.source&&"SUCCESS"==cj.state){newSrc=catcherUrlPrefix+cj.url,domUtils.setAttributes(ci,{src:newSrc,_src:newSrc});break}me.fireEvent("catchremotesuccess")},error:function(){me.fireEvent("catchremoteerror")}})}))},UE.plugin.register("snapscreen",function(){function getLocation(a){var b,c=document.createElement("a"),d=utils.serializeParam(me.queryCommandValue("serverparam"))||"";return c.href=a,browser.ie&&(c.href=c.href),b=c.search,d&&(b=b+(b.indexOf("?")==-1?"?":"&")+d,b=b.replace(/[&]+/gi,"&")),{port:c.port,hostname:c.hostname,path:c.pathname+b||+c.hash}}var me=this,snapplugin;return{commands:{snapscreen:{execCommand:function(cmd){function onSuccess(rs){try{if(rs=eval("("+rs+")"),"SUCCESS"==rs.state){var opt=me.options;me.execCommand("insertimage",{src:opt.snapscreenUrlPrefix+rs.url,_src:opt.snapscreenUrlPrefix+rs.url,alt:rs.title||"",floatStyle:opt.snapscreenImgAlign})}else alert(rs.state)}catch(e){alert(lang.callBackErrorMsg)}}var url,local,res,lang=me.getLang("snapScreen_plugin");if(!snapplugin){var container=me.container,doc=me.container.ownerDocument||me.container.document;snapplugin=doc.createElement("object");try{snapplugin.type="application/x-pluginbaidusnap"}catch(e){return}snapplugin.style.cssText="position:absolute;left:-9999px;width:0;height:0;",snapplugin.setAttribute("width","0"),snapplugin.setAttribute("height","0"),container.appendChild(snapplugin)}url=me.getActionUrl(me.getOpt("snapscreenActionName")),local=getLocation(url),setTimeout(function(){try{res=snapplugin.saveSnapshot(local.hostname,local.path,local.port)}catch(a){return void me.ui._dialogs.snapscreenDialog.open()}onSuccess(res)},50)},queryCommandState:function(){return navigator.userAgent.indexOf("Windows",0)!=-1?0:-1}}}}}),UE.commands.insertparagraph={execCommand:function(a,b){for(var c,d=this,e=d.selection.getRange(),f=e.startContainer;f&&!domUtils.isBody(f);)c=f,f=f.parentNode;if(c){var g=d.document.createElement("p");b?c.parentNode.insertBefore(g,c):c.parentNode.insertBefore(g,c.nextSibling),domUtils.fillNode(d.document,g),e.setStart(g,0).setCursor(!1,!0)}}},UE.plugin.register("webapp",function(){function a(a,c){return c?'':'"}var b=this;return{outputRule:function(b){utils.each(b.getNodesByTagName("img"),function(b){var c;if("edui-faked-webapp"==b.getAttr("class")){c=a({title:b.getAttr("title"),width:b.getAttr("width"),height:b.getAttr("height"),align:b.getAttr("align"),cssfloat:b.getStyle("float"),url:b.getAttr("_url"),logo:b.getAttr("_logo_url")},!0);var d=UE.uNode.createElement(c);b.parentNode.replaceChild(d,b)}})},inputRule:function(b){utils.each(b.getNodesByTagName("iframe"),function(b){if("edui-faked-webapp"==b.getAttr("class")){var c=UE.uNode.createElement(a({title:b.getAttr("title"),width:b.getAttr("width"),height:b.getAttr("height"),align:b.getAttr("align"),cssfloat:b.getStyle("float"),url:b.getAttr("src"),logo:b.getAttr("logo_url")}));b.parentNode.replaceChild(c,b)}})},commands:{webapp:{execCommand:function(b,c){var d=this,e=a(utils.extend(c,{align:"none"}),!1);d.execCommand("inserthtml",e)},queryCommandState:function(){var a=this,b=a.selection.getRange().getClosedNode(),c=b&&"edui-faked-webapp"==b.className;return c?1:0}}}}}),UE.plugins.template=function(){UE.commands.template={execCommand:function(a,b){b.html&&this.execCommand("inserthtml",b.html)}},this.addListener("click",function(a,b){var c=b.target||b.srcElement,d=this.selection.getRange(),e=domUtils.findParent(c,function(a){if(a.className&&domUtils.hasClass(a,"ue_t"))return a},!0);e&&d.selectNode(e).shrinkBoundary().select()}),this.addListener("keydown",function(a,b){var c=this.selection.getRange();if(!c.collapsed&&!(b.ctrlKey||b.metaKey||b.shiftKey||b.altKey)){var d=domUtils.findParent(c.startContainer,function(a){if(a.className&&domUtils.hasClass(a,"ue_t"))return a},!0);d&&domUtils.removeClasses(d,["ue_t"])}})},UE.plugin.register("music",function(){function a(a,c,d,e,f,g){return g?'':"'}var b=this;return{outputRule:function(b){utils.each(b.getNodesByTagName("img"),function(b){var c;if("edui-faked-music"==b.getAttr("class")){var d=b.getStyle("float"),e=b.getAttr("align");c=a(b.getAttr("_url"),b.getAttr("width"),b.getAttr("height"),e,d,!0);var f=UE.uNode.createElement(c);b.parentNode.replaceChild(f,b)}})},inputRule:function(b){utils.each(b.getNodesByTagName("embed"),function(b){if("edui-faked-music"==b.getAttr("class")){var c=b.getStyle("float"),d=b.getAttr("align");html=a(b.getAttr("src"),b.getAttr("width"),b.getAttr("height"),d,c,!1);var e=UE.uNode.createElement(html);b.parentNode.replaceChild(e,b)}})},commands:{music:{execCommand:function(b,c){var d=this,e=a(c.url,c.width||400,c.height||95,"none",!1);d.execCommand("inserthtml",e)},queryCommandState:function(){var a=this,b=a.selection.getRange().getClosedNode(),c=b&&"edui-faked-music"==b.className;return c?1:0}}}}}),UE.plugin.register("autoupload",function(){function a(a,b){var c,d,e,f,g,h,i,j,k=b,l=/image\/\w+/i.test(a.type)?"image":"file",m="loading_"+(+new Date).toString(36);if(c=k.getOpt(l+"FieldName"),d=k.getOpt(l+"UrlPrefix"),e=k.getOpt(l+"MaxSize"),f=k.getOpt(l+"AllowFiles"),g=k.getActionUrl(k.getOpt(l+"ActionName")),i=function(a){var b=k.document.getElementById(m);b&&domUtils.remove(b),k.fireEvent("showmessage",{id:m,content:a,type:"error",timeout:4e3})},"image"==l?(h='',j=function(a){var b=d+a.url,c=k.document.getElementById(m);c&&(c.setAttribute("src",b),c.setAttribute("_src",b),c.setAttribute("title",a.title||""),c.setAttribute("alt",a.original||""),c.removeAttribute("id"),domUtils.removeClasses(c,"loadingclass"))}):(h='

    ',j=function(a){var b=d+a.url,c=k.document.getElementById(m),e=k.selection.getRange(),f=e.createBookmark();e.selectNode(c).select(),k.execCommand("insertfile",{url:b}),e.moveToBookmark(f).select()}),k.execCommand("inserthtml",h),!k.getOpt(l+"ActionName"))return void i(k.getLang("autoupload.errorLoadConfig"));if(a.size>e)return void i(k.getLang("autoupload.exceedSizeError"));var n=a.name?a.name.substr(a.name.lastIndexOf(".")):"";if(n&&"image"!=l||f&&(f.join("")+".").indexOf(n.toLowerCase()+".")==-1)return void i(k.getLang("autoupload.exceedTypeError"));var o=new XMLHttpRequest,p=new FormData,q=utils.serializeParam(k.queryCommandValue("serverparam"))||"",r=utils.formatUrl(g+(g.indexOf("?")==-1?"?":"&")+q);p.append(c,a,a.name||"blob."+a.type.substr("image/".length)),p.append("type","ajax"),o.open("post",r,!0),o.setRequestHeader("X-Requested-With","XMLHttpRequest"),o.addEventListener("load",function(a){try{var b=new Function("return "+utils.trim(a.target.response))();"SUCCESS"==b.state&&b.url?j(b):i(b.state)}catch(c){i(k.getLang("autoupload.loadError"))}}),o.send(p)}function b(a){return a.clipboardData&&a.clipboardData.items&&1==a.clipboardData.items.length&&/^image\//.test(a.clipboardData.items[0].type)?a.clipboardData.items:null}function c(a){return a.dataTransfer&&a.dataTransfer.files?a.dataTransfer.files:null}return{outputRule:function(a){utils.each(a.getNodesByTagName("img"),function(a){/\b(loaderrorclass)|(bloaderrorclass)\b/.test(a.getAttr("class"))&&a.parentNode.removeChild(a)}),utils.each(a.getNodesByTagName("p"),function(a){/\bloadpara\b/.test(a.getAttr("class"))&&a.parentNode.removeChild(a)})},bindEvents:{ready:function(d){var e=this;window.FormData&&window.FileReader&&(domUtils.on(e.body,"paste drop",function(d){var f,g=!1;if(f="paste"==d.type?b(d):c(d)){for(var h,i=f.length;i--;)h=f[i],h.getAsFile&&(h=h.getAsFile()),h&&h.size>0&&(a(h,e),g=!0);g&&d.preventDefault()}}),domUtils.on(e.body,"dragover",function(a){"Files"==a.dataTransfer.types[0]&&a.preventDefault()}),utils.cssRule("loading",".loadingclass{display:inline-block;cursor:default;background: url('"+this.options.themePath+this.options.theme+"/images/loading.gif') no-repeat center center transparent;border:1px solid #cccccc;margin-left:1px;height: 22px;width: 22px;}\n.loaderrorclass{display:inline-block;cursor:default;background: url('"+this.options.themePath+this.options.theme+"/images/loaderror.png') no-repeat center center transparent;border:1px solid #cccccc;margin-right:1px;height: 22px;width: 22px;}",this.document))}}}}),UE.plugin.register("autosave",function(){function a(a){var f;if(!(new Date-c0?b._saveFlag=window.setTimeout(function(){a(b)},b.options.saveInterval):a(b))}},commands:{clearlocaldata:{execCommand:function(a,c){e&&b.getPreferences(e)&&b.removePreferences(e)},notNeedUndo:!0,ignoreContentChange:!0},getlocaldata:{execCommand:function(a,c){return e?b.getPreferences(e)||"":""},notNeedUndo:!0,ignoreContentChange:!0},drafts:{execCommand:function(a,c){e&&(b.body.innerHTML=b.getPreferences(e)||"

    "+domUtils.fillHtml+"

    ",b.focus(!0))},queryCommandState:function(){return e?null===b.getPreferences(e)?-1:0:-1},notNeedUndo:!0,ignoreContentChange:!0}}}}),UE.plugin.register("charts",function(){function a(a){var b=null,c=0;if(a.rows.length<2)return!1;if(a.rows[0].cells.length<2)return!1;b=a.rows[0].cells,c=b.length;for(var d,e=0;d=b[e];e++)if("th"!==d.tagName.toLowerCase())return!1;for(var f,e=1;f=a.rows[e];e++){if(f.cells.length!=c)return!1;if("th"!==f.cells[0].tagName.toLowerCase())return!1;for(var d,g=1;d=f.cells[g];g++){var h=utils.trim(d.innerText||d.textContent||"");if(h=h.replace(new RegExp(UE.dom.domUtils.fillChar,"g"),"").replace(/^\s+|\s+$/g,""),!/^\d*\.?\d+$/.test(h))return!1}}return!0}var b=this;return{bindEvents:{chartserror:function(){}},commands:{charts:{execCommand:function(c,d){var e=domUtils.findParentByTagName(this.selection.getRange().startContainer,"table",!0),f=[],g={};if(!e)return!1;if(!a(e))return b.fireEvent("chartserror"),!1;g.title=d.title||"",g.subTitle=d.subTitle||"",g.xTitle=d.xTitle||"",g.yTitle=d.yTitle||"",g.suffix=d.suffix||"",g.tip=d.tip||"",g.dataFormat=d.tableDataFormat||"",g.chartType=d.chartType||0;for(var h in g)g.hasOwnProperty(h)&&f.push(h+":"+g[h]); +e.setAttribute("data-chart",f.join(";")),domUtils.addClass(e,"edui-charts-table")},queryCommandState:function(b,c){var d=domUtils.findParentByTagName(this.selection.getRange().startContainer,"table",!0);return d&&a(d)?0:-1}}},inputRule:function(a){utils.each(a.getNodesByTagName("table"),function(a){void 0!==a.getAttr("data-chart")&&a.setAttr("style")})},outputRule:function(a){utils.each(a.getNodesByTagName("table"),function(a){void 0!==a.getAttr("data-chart")&&a.setAttr("style","display: none;")})}}}),UE.plugin.register("section",function(){function a(a){this.tag="",this.level=-1,this.dom=null,this.nextSection=null,this.previousSection=null,this.parentSection=null,this.startAddress=[],this.endAddress=[],this.children=[]}function b(b){var c=new a;return utils.extend(c,b)}function c(a,b){for(var c=b,d=0;d=0){var o=h.selection.getRange().selectNode(i).createAddress(!0).startAddress,p=b({tag:i.tagName,title:i.innerText||i.textContent||"",level:f,dom:i,startAddress:utils.clone(o,[]),endAddress:utils.clone(o,[]),children:[]});for(j.nextSection=p,p.previousSection=j,g=j;f<=g.level;)g=g.parentSection;p.parentSection=g,g.children.push(p),k=j=p}else 1===i.nodeType&&e(i,c),k&&k.endAddress[k.endAddress.length-1]++}for(var f=c||["h1","h2","h3","h4","h5","h6"],g=0;g=c.length);f++){if(c[f]>a[f]){d=!0;break}if(c[f]=c.length);f++){if(c[f]a[f])break}return d&&e}var g,h,i=this;if(b&&d&&d.level!=-1&&(g=e?d.endAddress:d.startAddress,h=c(g,i.body),g&&h&&!f(b.startAddress,b.endAddress,g))){var j,k,l=c(b.startAddress,i.body),m=c(b.endAddress,i.body);if(e)for(j=m;j&&!(domUtils.getPosition(l,j)&domUtils.POSITION_FOLLOWING)&&(k=j.previousSibling,domUtils.insertAfter(h,j),j!=l);)j=k;else for(j=l;j&&!(domUtils.getPosition(j,m)&domUtils.POSITION_FOLLOWING)&&(k=j.nextSibling,h.parentNode.insertBefore(j,h),j!=m);)j=k;i.fireEvent("updateSections")}}},deletesection:{execCommand:function(a,b,c){function d(a){for(var b=e.body,c=0;c'),!c.getOpt("imageActionName"))return void b(c.getLang("autoupload.errorLoadConfig"));var k=h.value,l=k?k.substr(k.lastIndexOf(".")):"";if(!l||j&&(j.join("")+".").indexOf(l.toLowerCase()+".")==-1)return void b(c.getLang("simpleupload.exceedTypeError"));var m=new XMLHttpRequest;if(m.open("post",i,!0),c.options.headers&&"[object Object]"===Object.prototype.toString.apply(c.options.headers))for(var n in c.options.headers)m.setRequestHeader(n,c.options.headers[n]);m.onload=function(){if(m.status>=200&&m.status<300||304==m.status){var a=JSON.parse(m.responseText),e=c.options.imageUrlPrefix+a.url;"SUCCESS"==a.state&&a.url?(loader=c.document.getElementById(d),loader.setAttribute("src",e),loader.setAttribute("_src",e),loader.setAttribute("title",a.title||""),loader.setAttribute("alt",a.original||""),loader.removeAttribute("id"),domUtils.removeClasses(loader,"loadingclass"),c.fireEvent("contentchange")):b(a.state)}else b(c.getLang("simpleupload.loadError"))},m.onerror=function(){b(c.getLang("simpleupload.loadError"))},m.send(new FormData(g)),g.reset()}})}var b,c=this,d=(+new Date).toString(36);return{bindEvents:{ready:function(){utils.cssRule("loading",".loadingclass{display:inline-block;cursor:default;background: url('"+this.options.themePath+this.options.theme+"/images/loading.gif') no-repeat center center transparent;border:1px solid #cccccc;margin-right:1px;height: 22px;width: 22px;}\n.loaderrorclass{display:inline-block;cursor:default;background: url('"+this.options.themePath+this.options.theme+"/images/loaderror.png') no-repeat center center transparent;border:1px solid #cccccc;margin-right:1px;height: 22px;width: 22px;}",this.document)},simpleuploadbtnready:function(d,e){b=e,c.afterConfigReady(a)}},outputRule:function(a){utils.each(a.getNodesByTagName("img"),function(a){/\b(loaderrorclass)|(bloaderrorclass)\b/.test(a.getAttr("class"))&&a.parentNode.removeChild(a)})}}}),UE.plugin.register("serverparam",function(){var a={};return{commands:{serverparam:{execCommand:function(b,c,d){void 0===c||null===c?a={}:utils.isString(c)?void 0===d||null===d?delete a[c]:a[c]=d:utils.isObject(c)?utils.extend(a,c,!0):utils.isFunction(c)&&utils.extend(a,c(),!0)},queryCommandValue:function(){return a||{}}}}}}),UE.plugin.register("insertfile",function(){function a(a){var b=a.substr(a.lastIndexOf(".")+1).toLowerCase(),c={rar:"icon_rar.gif",zip:"icon_rar.gif",tar:"icon_rar.gif",gz:"icon_rar.gif",bz2:"icon_rar.gif",doc:"icon_doc.gif",docx:"icon_doc.gif",pdf:"icon_pdf.gif",mp3:"icon_mp3.gif",xls:"icon_xls.gif",chm:"icon_chm.gif",ppt:"icon_ppt.gif",pptx:"icon_ppt.gif",avi:"icon_mv.gif",rmvb:"icon_mv.gif",wmv:"icon_mv.gif",flv:"icon_mv.gif",swf:"icon_mv.gif",rm:"icon_mv.gif",exe:"icon_exe.gif",psd:"icon_psd.gif",txt:"icon_txt.gif",jpg:"icon_jpg.gif",png:"icon_jpg.gif",jpeg:"icon_jpg.gif",gif:"icon_jpg.gif",ico:"icon_jpg.gif",bmp:"icon_jpg.gif"};return c[b]?c[b]:c.txt}var b=this;return{commands:{insertfile:{execCommand:function(c,d){d=utils.isArray(d)?d:[d];var e,f,g,h,i="",j=b.getOpt("UEDITOR_HOME_URL"),k=j+("/"==j.substr(j.length-1)?"":"/")+"dialogs/attachment/fileTypeImages/";for(e=0;e'+h+"

    ";b.execCommand("insertHtml",i)}}}}}),UE.plugins.xssFilter=function(){function a(a){var b=a.tagName,d=a.attrs;return c.hasOwnProperty(b)?void UE.utils.each(d,function(d,e){c[b].indexOf(e)===-1&&a.setAttr(e)}):(a.parentNode.removeChild(a),!1)}var b=UEDITOR_CONFIG,c=b.whitList;c&&b.xssFilterRules&&(this.options.filterRules=function(){var b={};return UE.utils.each(c,function(c,d){b[d]=function(b){return a(b)}}),b}());var d=[];UE.utils.each(c,function(a,b){d.push(b)}),c&&b.inputXssFilter&&this.addInputRule(function(b){b.traversal(function(b){return"element"===b.type&&void a(b)})}),c&&b.outputXssFilter&&this.addOutputRule(function(b){b.traversal(function(b){return"element"===b.type&&void a(b)})})};var baidu=baidu||{};baidu.editor=baidu.editor||{},UE.ui=baidu.editor.ui={},function(){function a(){var a=document.getElementById("edui_fixedlayer");i.setViewportOffset(a,{left:0,top:0})}function b(b){d.on(window,"scroll",a),d.on(window,"resize",baidu.editor.utils.defer(a,0,!0))}var c=baidu.editor.browser,d=baidu.editor.dom.domUtils,e="$EDITORUI",f=window[e]={},g="ID"+e,h=0,i=baidu.editor.ui.uiUtils={uid:function(a){return a?a[g]||(a[g]=++h):++h},hook:function(a,b){var c;return a&&a._callbacks?c=a:(c=function(){var b;a&&(b=a.apply(this,arguments));for(var d=c._callbacks,e=d.length;e--;){var f=d[e].apply(this,arguments);void 0===b&&(b=f)}return b},c._callbacks=[]),c._callbacks.push(b),c},createElementByHtml:function(a){var b=document.createElement("div");return b.innerHTML=a,b=b.firstChild,b.parentNode.removeChild(b),b},getViewportElement:function(){return c.ie&&c.quirks?document.body:document.documentElement},getClientRect:function(a){var b;try{b=a.getBoundingClientRect()}catch(c){b={left:0,top:0,height:0,width:0}}for(var e,f={left:Math.round(b.left),top:Math.round(b.top),height:Math.round(b.bottom-b.top),width:Math.round(b.right-b.left)};(e=a.ownerDocument)!==document&&(a=d.getWindow(e).frameElement);)b=a.getBoundingClientRect(),f.left+=b.left,f.top+=b.top;return f.bottom=f.top+f.height,f.right=f.left+f.width,f},getViewportRect:function(){var a=i.getViewportElement(),b=0|(window.innerWidth||a.clientWidth),c=0|(window.innerHeight||a.clientHeight);return{left:0,top:0,height:c,width:b,bottom:c,right:b}},setViewportOffset:function(a,b){var c=i.getFixedLayer();a.parentNode===c?(a.style.left=b.left+"px",a.style.top=b.top+"px"):d.setViewportOffset(a,b)},getEventOffset:function(a){var b=a.target||a.srcElement,c=i.getClientRect(b),d=i.getViewportOffsetByEvent(a);return{left:d.left-c.left,top:d.top-c.top}},getViewportOffsetByEvent:function(a){var b=a.target||a.srcElement,c=d.getWindow(b).frameElement,e={left:a.clientX,top:a.clientY};if(c&&b.ownerDocument!==document){var f=i.getClientRect(c);e.left+=f.left,e.top+=f.top}return e},setGlobal:function(a,b){return f[a]=b,e+'["'+a+'"]'},unsetGlobal:function(a){delete f[a]},copyAttributes:function(a,b){for(var e=b.attributes,f=e.length;f--;){var g=e[f];"style"==g.nodeName||"class"==g.nodeName||c.ie&&!g.specified||a.setAttribute(g.nodeName,g.nodeValue)}b.className&&d.addClass(a,b.className),b.style.cssText&&(a.style.cssText+=";"+b.style.cssText)},removeStyle:function(a,b){if(a.style.removeProperty)a.style.removeProperty(b);else{if(!a.style.removeAttribute)throw"";a.style.removeAttribute(b)}},contains:function(a,b){return a&&b&&a!==b&&(a.contains?a.contains(b):16&a.compareDocumentPosition(b))},startDrag:function(a,b,c){function d(a){var c=a.clientX-g,d=a.clientY-h;b.ondragmove(c,d,a),a.stopPropagation?a.stopPropagation():a.cancelBubble=!0}function e(a){c.removeEventListener("mousemove",d,!0),c.removeEventListener("mouseup",e,!0),window.removeEventListener("mouseup",e,!0),b.ondragstop()}function f(){i.releaseCapture(),i.detachEvent("onmousemove",d),i.detachEvent("onmouseup",f),i.detachEvent("onlosecaptrue",f),b.ondragstop()}var c=c||document,g=a.clientX,h=a.clientY;if(c.addEventListener)c.addEventListener("mousemove",d,!0),c.addEventListener("mouseup",e,!0),window.addEventListener("mouseup",e,!0),a.preventDefault();else{var i=a.srcElement;i.setCapture(),i.attachEvent("onmousemove",d),i.attachEvent("onmouseup",f),i.attachEvent("onlosecaptrue",f),a.returnValue=!1}b.ondragstart()},getFixedLayer:function(){var d=document.getElementById("edui_fixedlayer");return null==d&&(d=document.createElement("div"),d.id="edui_fixedlayer",document.body.appendChild(d),c.ie&&c.version<=8?(d.style.position="absolute",b(),setTimeout(a)):d.style.position="fixed",d.style.left="0",d.style.top="0",d.style.width="0",d.style.height="0"),d},makeUnselectable:function(a){if(c.opera||c.ie&&c.version<9){if(a.unselectable="on",a.hasChildNodes())for(var b=0;b'}},a.inherits(c,b)}(),function(){var a=baidu.editor.utils,b=baidu.editor.dom.domUtils,c=baidu.editor.ui.UIBase,d=baidu.editor.ui.uiUtils,e=baidu.editor.ui.Mask=function(a){this.initOptions(a),this.initUIBase()};e.prototype={getHtmlTpl:function(){return'
    '},postRender:function(){var a=this;b.on(window,"resize",function(){setTimeout(function(){a.isHidden()||a._fill()})})},show:function(a){this._fill(),this.getDom().style.display="",this.getDom().style.zIndex=a},hide:function(){this.getDom().style.display="none",this.getDom().style.zIndex=""},isHidden:function(){return"none"==this.getDom().style.display},_onMouseDown:function(){return!1},_onClick:function(a,b){this.fireEvent("click",a,b)},_fill:function(){var a=this.getDom(),b=d.getViewportRect();a.style.width=b.width+"px",a.style.height=b.height+"px"}},a.inherits(e,c)}(),function(){function a(a,b){for(var c=0;c
    '+this.getContentHtmlTpl()+"
    "},getContentHtmlTpl:function(){return this.content?"string"==typeof this.content?this.content:this.content.renderHtml():""},_UIBase_postRender:e.prototype.postRender,postRender:function(){if(this.content instanceof e&&this.content.postRender(),this.captureWheel&&!this.captured){this.captured=!0;var a=(document.documentElement.clientHeight||document.body.clientHeight)-80,b=this.getDom().offsetHeight,f=c.getClientRect(this.combox.getDom()).top,g=this.getDom("content"),h=this.getDom("body").getElementsByTagName("iframe"),i=this;for(h.length&&(h=h[0]);f+b>a;)b-=30;g.style.height=b+"px",h&&(h.style.height=b+"px"),window.XMLHttpRequest?d.on(g,"onmousewheel"in document.body?"mousewheel":"DOMMouseScroll",function(a){a.preventDefault?a.preventDefault():a.returnValue=!1,a.wheelDelta?g.scrollTop-=a.wheelDelta/120*60:g.scrollTop-=a.detail/-3*60}):d.on(this.getDom(),"mousewheel",function(a){a.returnValue=!1,i.getDom("content").scrollTop-=a.wheelDelta/120*60})}this.fireEvent("postRenderAfter"),this.hide(!0),this._UIBase_postRender()},_doAutoRender:function(){!this.getDom()&&this.autoRender&&this.render()},mesureSize:function(){var a=this.getDom("content");return c.getClientRect(a)},fitSize:function(){if(this.captureWheel&&this.sized)return this.__size;this.sized=!0;var a=this.getDom("body");a.style.width="",a.style.height="";var b=this.mesureSize();if(this.captureWheel){a.style.width=-(-20-b.width)+"px";var c=parseInt(this.getDom("content").style.height,10);!window.isNaN(c)&&(b.height=c)}else a.style.width=b.width+"px";return a.style.height=b.height+"px",this.__size=b,this.captureWheel&&(this.getDom("content").style.overflow="auto"),b},showAnchor:function(a,b){this.showAnchorRect(c.getClientRect(a),b)},showAnchorRect:function(a,b,e){this._doAutoRender();var f=c.getViewportRect();this.getDom().style.visibility="hidden",this._show();var g,i,j,k,l=this.fitSize();b?(g=this.canSideLeft&&a.right+l.width>f.right&&a.left>l.width,i=this.canSideUp&&a.top+l.height>f.bottom&&a.bottom>l.height,j=g?a.left-l.width:a.right,k=i?a.bottom-l.height:a.top):(g=this.canSideLeft&&a.right+l.width>f.right&&a.left>l.width,i=this.canSideUp&&a.top+l.height>f.bottom&&a.bottom>l.height,j=g?a.right-l.width:a.left,k=i?a.top-l.height:a.bottom);var m=this.getDom();c.setViewportOffset(m,{left:j,top:k}),d.removeClasses(m,h),m.className+=" "+h[2*(i?1:0)+(g?1:0)],this.editor&&(m.style.zIndex=1*this.editor.container.style.zIndex+10,baidu.editor.ui.uiUtils.getFixedLayer().style.zIndex=m.style.zIndex-1),this.getDom().style.visibility="visible"},showAt:function(a){var b=a.left,c=a.top,d={left:b,top:c,right:b,bottom:c,height:0,width:0};this.showAnchorRect(d,!1,!0)},_show:function(){if(this._hidden){var a=this.getDom();a.style.display="",this._hidden=!1,this.fireEvent("show")}},isHidden:function(){return this._hidden},show:function(){this._doAutoRender(),this._show()},hide:function(a){!this._hidden&&this.getDom()&&(this.getDom().style.display="none",this._hidden=!0,a||this.fireEvent("hide"))},queryAutoHide:function(a){return!a||!c.contains(this.getDom(),a)}},b.inherits(f,e),d.on(document,"mousedown",function(b){var c=b.target||b.srcElement;a(b,c)}),d.on(window,"scroll",function(b,c){a(b,c)})}(),function(){function a(a,b){for(var c='
    '+a+'
    ',d=0;d"+(60==d?'":"")+""),c+=d<70?'':"";return c+="
    '+b.getLang("themeColor")+'
    '+b.getLang("standardColor")+"
    =60?"border-width:1px;":d>=10&&d<20?"border-width:1px 1px 0 1px;":"border-width:0 1px 0 1px;")+'">
    "}var b=baidu.editor.utils,c=baidu.editor.ui.UIBase,d=baidu.editor.ui.ColorPicker=function(a){this.initOptions(a),this.noColorText=this.noColorText||this.editor.getLang("clearColor"),this.initUIBase()};d.prototype={getHtmlTpl:function(){return a(this.noColorText,this.editor)},_onTableClick:function(a){var b=a.target||a.srcElement,c=b.getAttribute("data-color");c&&this.fireEvent("pickcolor",c)},_onTableOver:function(a){var b=a.target||a.srcElement,c=b.getAttribute("data-color");c&&(this.getDom("preview").style.backgroundColor=c)},_onTableOut:function(){this.getDom("preview").style.backgroundColor=""},_onPickNoColor:function(){this.fireEvent("picknocolor")}},b.inherits(d,c);var e="ffffff,000000,eeece1,1f497d,4f81bd,c0504d,9bbb59,8064a2,4bacc6,f79646,f2f2f2,7f7f7f,ddd9c3,c6d9f0,dbe5f1,f2dcdb,ebf1dd,e5e0ec,dbeef3,fdeada,d8d8d8,595959,c4bd97,8db3e2,b8cce4,e5b9b7,d7e3bc,ccc1d9,b7dde8,fbd5b5,bfbfbf,3f3f3f,938953,548dd4,95b3d7,d99694,c3d69b,b2a2c7,92cddc,fac08f,a5a5a5,262626,494429,17365d,366092,953734,76923c,5f497a,31859b,e36c09,7f7f7f,0c0c0c,1d1b10,0f243e,244061,632423,4f6128,3f3151,205867,974806,c00000,ff0000,ffc000,ffff00,92d050,00b050,00b0f0,0070c0,002060,7030a0,".split(",")}(),function(){var a=baidu.editor.utils,b=baidu.editor.ui.uiUtils,c=baidu.editor.ui.UIBase,d=baidu.editor.ui.TablePicker=function(a){this.initOptions(a),this.initTablePicker()};d.prototype={defaultNumRows:10,defaultNumCols:10,maxNumRows:20,maxNumCols:20,numRows:10,numCols:10,lengthOfCellSide:22,initTablePicker:function(){this.initUIBase()},getHtmlTpl:function(){return'
    '},_UIBase_render:c.prototype.render,render:function(a){this._UIBase_render(a),this.getDom("label").innerHTML="0"+this.editor.getLang("t_row")+" x 0"+this.editor.getLang("t_col")},_track:function(a,b){var c=this.getDom("overlay").style,d=this.lengthOfCellSide;c.width=a*d+"px",c.height=b*d+"px";var e=this.getDom("label");e.innerHTML=a+this.editor.getLang("t_col")+" x "+b+this.editor.getLang("t_row"),this.numCols=a,this.numRows=b},_onMouseOver:function(a,c){var d=a.relatedTarget||a.fromElement;b.contains(c,d)||c===d||(this.getDom("label").innerHTML="0"+this.editor.getLang("t_col")+" x 0"+this.editor.getLang("t_row"),this.getDom("overlay").style.visibility="")},_onMouseOut:function(a,c){var d=a.relatedTarget||a.toElement;b.contains(c,d)||c===d||(this.getDom("label").innerHTML="0"+this.editor.getLang("t_col")+" x 0"+this.editor.getLang("t_row"),this.getDom("overlay").style.visibility="hidden")},_onMouseMove:function(a,c){var d=(this.getDom("overlay").style,b.getEventOffset(a)),e=this.lengthOfCellSide,f=Math.ceil(d.left/e),g=Math.ceil(d.top/e);this._track(f,g)},_onClick:function(){this.fireEvent("picktable",this.numCols,this.numRows)}},a.inherits(d,c)}(),function(){var a=baidu.editor.browser,b=baidu.editor.dom.domUtils,c=baidu.editor.ui.uiUtils,d='onmousedown="$$.Stateful_onMouseDown(event, this);" onmouseup="$$.Stateful_onMouseUp(event, this);"'+(a.ie?' onmouseenter="$$.Stateful_onMouseEnter(event, this);" onmouseleave="$$.Stateful_onMouseLeave(event, this);"':' onmouseover="$$.Stateful_onMouseOver(event, this);" onmouseout="$$.Stateful_onMouseOut(event, this);"');baidu.editor.ui.Stateful={alwalysHoverable:!1,target:null,Stateful_init:function(){this._Stateful_dGetHtmlTpl=this.getHtmlTpl,this.getHtmlTpl=this.Stateful_getHtmlTpl},Stateful_getHtmlTpl:function(){var a=this._Stateful_dGetHtmlTpl();return a.replace(/stateful/g,function(){return d})},Stateful_onMouseEnter:function(a,b){this.target=b,this.isDisabled()&&!this.alwalysHoverable||(this.addState("hover"),this.fireEvent("over"))},Stateful_onMouseLeave:function(a,b){this.isDisabled()&&!this.alwalysHoverable||(this.removeState("hover"),this.removeState("active"),this.fireEvent("out"))},Stateful_onMouseOver:function(a,b){var d=a.relatedTarget;c.contains(b,d)||b===d||this.Stateful_onMouseEnter(a,b)},Stateful_onMouseOut:function(a,b){var d=a.relatedTarget;c.contains(b,d)||b===d||this.Stateful_onMouseLeave(a,b)},Stateful_onMouseDown:function(a,b){this.isDisabled()||this.addState("active")},Stateful_onMouseUp:function(a,b){this.isDisabled()||this.removeState("active")},Stateful_postRender:function(){this.disabled&&!this.hasState("disabled")&&this.addState("disabled")},hasState:function(a){return b.hasClass(this.getStateDom(),"edui-state-"+a)},addState:function(a){this.hasState(a)||(this.getStateDom().className+=" edui-state-"+a)},removeState:function(a){this.hasState(a)&&b.removeClasses(this.getStateDom(),["edui-state-"+a])},getStateDom:function(){return this.getDom("state")},isChecked:function(){return this.hasState("checked")},setChecked:function(a){!this.isDisabled()&&a?this.addState("checked"):this.removeState("checked")},isDisabled:function(){return this.hasState("disabled")},setDisabled:function(a){a?(this.removeState("hover"),this.removeState("checked"),this.removeState("active"),this.addState("disabled")):this.removeState("disabled")}}}(),function(){var a=baidu.editor.utils,b=baidu.editor.ui.UIBase,c=baidu.editor.ui.Stateful,d=baidu.editor.ui.Button=function(a){if(a.name){var b=a.name,c=a.cssRules;a.className||(a.className="edui-for-"+b),a.cssRules=".edui-default .edui-for-"+b+" .edui-icon {"+c+"}"}this.initOptions(a),this.initButton()};d.prototype={uiName:"button",label:"",title:"",showIcon:!0,showText:!0,cssRules:"",initButton:function(){this.initUIBase(),this.Stateful_init(),this.cssRules&&a.cssRule("edui-customize-"+this.name+"-style",this.cssRules)},getHtmlTpl:function(){return'
    '+(this.showIcon?'
    ':"")+(this.showText?'
    '+this.label+"
    ":"")+"
    "},postRender:function(){this.Stateful_postRender(),this.setDisabled(this.disabled)},_onMouseDown:function(a){var b=a.target||a.srcElement,c=b&&b.tagName&&b.tagName.toLowerCase();if("input"==c||"object"==c||"object"==c)return!1},_onClick:function(){this.isDisabled()||this.fireEvent("click")},setTitle:function(a){var b=this.getDom("label");b.innerHTML=a}},a.inherits(d,b),a.extend(d.prototype,c)}(),function(){var a=baidu.editor.utils,b=baidu.editor.ui.uiUtils,c=(baidu.editor.dom.domUtils,baidu.editor.ui.UIBase),d=baidu.editor.ui.Stateful,e=baidu.editor.ui.SplitButton=function(a){this.initOptions(a),this.initSplitButton()};e.prototype={popup:null,uiName:"splitbutton",title:"",initSplitButton:function(){this.initUIBase(),this.Stateful_init();if(null!=this.popup){var a=this.popup;this.popup=null,this.setPopup(a)}},_UIBase_postRender:c.prototype.postRender,postRender:function(){this.Stateful_postRender(),this._UIBase_postRender()},setPopup:function(c){this.popup!==c&&(null!=this.popup&&this.popup.dispose(),c.addListener("show",a.bind(this._onPopupShow,this)),c.addListener("hide",a.bind(this._onPopupHide,this)),c.addListener("postrender",a.bind(function(){c.getDom("body").appendChild(b.createElementByHtml('
    ')),c.getDom().className+=" "+this.className},this)),this.popup=c)},_onPopupShow:function(){this.addState("opened")},_onPopupHide:function(){this.removeState("opened")},getHtmlTpl:function(){return'
    '},showPopup:function(){var a=b.getClientRect(this.getDom());a.top-=this.popup.SHADOW_RADIUS,a.height+=this.popup.SHADOW_RADIUS,this.popup.showAnchorRect(a)},_onArrowClick:function(a,b){this.isDisabled()||this.showPopup()},_onButtonClick:function(){this.isDisabled()||this.fireEvent("buttonclick")}},a.inherits(e,c),a.extend(e.prototype,d,!0)}(),function(){var a=baidu.editor.utils,b=baidu.editor.ui.uiUtils,c=baidu.editor.ui.ColorPicker,d=baidu.editor.ui.Popup,e=baidu.editor.ui.SplitButton,f=baidu.editor.ui.ColorButton=function(a){this.initOptions(a),this.initColorButton()};f.prototype={initColorButton:function(){var a=this;this.popup=new d({content:new c({noColorText:a.editor.getLang("clearColor"),editor:a.editor,onpickcolor:function(b,c){a._onPickColor(c)},onpicknocolor:function(b,c){a._onPickNoColor(c)}}),editor:a.editor}),this.initSplitButton()},_SplitButton_postRender:e.prototype.postRender,postRender:function(){this._SplitButton_postRender(),this.getDom("button_body").appendChild(b.createElementByHtml('
    ')),this.getDom().className+=" edui-colorbutton"},setColor:function(a){this.getDom("colorlump").style.backgroundColor=a,this.color=a},_onPickColor:function(a){this.fireEvent("pickcolor",a)!==!1&&(this.setColor(a),this.popup.hide())},_onPickNoColor:function(a){this.fireEvent("picknocolor")!==!1&&this.popup.hide()}},a.inherits(f,e)}(),function(){var a=baidu.editor.utils,b=baidu.editor.ui.Popup,c=baidu.editor.ui.TablePicker,d=baidu.editor.ui.SplitButton,e=baidu.editor.ui.TableButton=function(a){this.initOptions(a),this.initTableButton()};e.prototype={initTableButton:function(){var a=this;this.popup=new b({content:new c({editor:a.editor,onpicktable:function(b,c,d){ +a._onPickTable(c,d)}}),editor:a.editor}),this.initSplitButton()},_onPickTable:function(a,b){this.fireEvent("picktable",a,b)!==!1&&this.popup.hide()}},a.inherits(e,d)}(),function(){var a=baidu.editor.utils,b=baidu.editor.ui.UIBase,c=baidu.editor.ui.AutoTypeSetPicker=function(a){this.initOptions(a),this.initAutoTypeSetPicker()};c.prototype={initAutoTypeSetPicker:function(){this.initUIBase()},getHtmlTpl:function(){var a=this.editor,b=a.options.autotypeset,c=a.getLang("autoTypeSet"),d="textAlignValue"+a.uid,e="imageBlockLineValue"+a.uid,f="symbolConverValue"+a.uid;return'
    "+c.mergeLine+'"+c.delLine+'
    "+c.removeFormat+'"+c.indent+'
    "+c.alignment+'"+a.getLang("justifyleft")+'"+a.getLang("justifycenter")+'"+a.getLang("justifyright")+'
    "+c.imageFloat+'"+a.getLang("default")+'"+a.getLang("justifyleft")+'"+a.getLang("justifycenter")+'"+a.getLang("justifyright")+'
    "+c.removeFontsize+'"+c.removeFontFamily+'
    "+c.removeHtml+'
    "+c.pasteFilter+'
    "+c.symbol+'"+c.bdc2sb+'"+c.tobdc+'
    "},_UIBase_render:b.prototype.render},a.inherits(c,b)}(),function(){function a(a){for(var c,d={},e=a.getDom(),f=a.editor.uid,g=null,h=null,i=domUtils.getElementsByTagName(e,"input"),j=i.length-1;c=i[j--];)if(g=c.getAttribute("type"),"checkbox"==g)if(h=c.getAttribute("name"),d[h]&&delete d[h],c.checked){var k=document.getElementById(h+"Value"+f);if(k){if(/input/gi.test(k.tagName))d[h]=k.value;else for(var l,m=k.getElementsByTagName("input"),n=m.length-1;l=m[n--];)if(l.checked){d[h]=l.value;break}}else d[h]=!0}else d[h]=!1;else d[c.getAttribute("value")]=c.checked;for(var o,p=domUtils.getElementsByTagName(e,"select"),j=0;o=p[j++];){var q=o.getAttribute("name");d[q]=d[q]?o.value:""}b.extend(a.editor.options.autotypeset,d),a.editor.setPreferences("autotypeset",d)}var b=baidu.editor.utils,c=baidu.editor.ui.Popup,d=baidu.editor.ui.AutoTypeSetPicker,e=baidu.editor.ui.SplitButton,f=baidu.editor.ui.AutoTypeSetButton=function(a){this.initOptions(a),this.initAutoTypeSetButton()};f.prototype={initAutoTypeSetButton:function(){var b=this;this.popup=new c({content:new d({editor:b.editor}),editor:b.editor,hide:function(){!this._hidden&&this.getDom()&&(a(this),this.getDom().style.display="none",this._hidden=!0,this.fireEvent("hide"))}});var e=0;this.popup.addListener("postRenderAfter",function(){var c=this;if(!e){var d=this.getDom(),f=d.getElementsByTagName("button")[0];f.onclick=function(){a(c),b.editor.execCommand("autotypeset"),c.hide()},domUtils.on(d,"click",function(d){var e=d.target||d.srcElement,f=b.editor.uid;if(e&&"INPUT"==e.tagName){if("imageBlockLine"==e.name||"textAlign"==e.name||"symbolConver"==e.name)for(var g=e.checked,h=document.getElementById(e.name+"Value"+f),i=h.getElementsByTagName("input"),j={imageBlockLine:"none",textAlign:"left",symbolConver:"tobdc"},k=0;k"),e.push('
    '),2===d&&e.push("");return'
    '+e.join("")+"
    "},getStateDom:function(){return this.target},_onClick:function(a){var c=a.target||a.srcElement;/icon/.test(c.className)&&(this.items[c.parentNode.getAttribute("index")].onclick(),b.postHide(a))},_UIBase_render:d.prototype.render},a.inherits(e,d),a.extend(e.prototype,c,!0)}(),function(){var a=baidu.editor.utils,b=baidu.editor.ui.Stateful,c=baidu.editor.ui.uiUtils,d=baidu.editor.ui.UIBase,e=baidu.editor.ui.PastePicker=function(a){this.initOptions(a),this.initPastePicker()};e.prototype={initPastePicker:function(){this.initUIBase(),this.Stateful_init()},getHtmlTpl:function(){return'
    '+this.editor.getLang("pasteOpt")+'
    '},getStateDom:function(){return this.target},format:function(a){this.editor.ui._isTransfer=!0,this.editor.fireEvent("pasteTransfer",a)},_onClick:function(a){var b=domUtils.getNextDomNode(a),d=c.getViewportRect().height,e=c.getClientRect(b);e.top+e.height>d?b.style.top=-e.height-a.offsetHeight+"px":b.style.top="",/hidden/gi.test(domUtils.getComputedStyle(b,"visibility"))?(b.style.visibility="visible",domUtils.addClass(a,"edui-state-opened")):(b.style.visibility="hidden",domUtils.removeClasses(a,"edui-state-opened"))},_UIBase_render:d.prototype.render},a.inherits(e,d),a.extend(e.prototype,b,!0)}(),function(){var a=baidu.editor.utils,b=baidu.editor.ui.uiUtils,c=baidu.editor.ui.UIBase,d=baidu.editor.ui.Toolbar=function(a){this.initOptions(a),this.initToolbar()};d.prototype={items:null,initToolbar:function(){this.items=this.items||[],this.initUIBase()},add:function(a,b){void 0===b?this.items.push(a):this.items.splice(b,0,a)},getHtmlTpl:function(){for(var a=[],b=0;b'+a.join("")+""},postRender:function(){for(var a=this.getDom(),c=0;c
    '},postRender:function(){},queryAutoHide:function(){return!0}};h.prototype={items:null,uiName:"menu",initMenu:function(){this.items=this.items||[],this.initPopup(),this.initItems()},initItems:function(){for(var a=0;a'+a.join("")+""},_Popup_postRender:e.prototype.postRender,postRender:function(){for(var a=this,d=0;d
    '+this.renderLabelHtml()+"
    "},postRender:function(){var a=this;this.addListener("over",function(){a.ownerMenu.fireEvent("submenuover",a),a.subMenu&&a.delayShowSubMenu()}),this.subMenu&&(this.getDom().className+=" edui-hassubmenu",this.subMenu.render(),this.addListener("out",function(){a.delayHideSubMenu()}),this.subMenu.addListener("over",function(){clearTimeout(a._closingTimer),a._closingTimer=null,a.addState("opened")}),this.ownerMenu.addListener("hide",function(){a.hideSubMenu()}),this.ownerMenu.addListener("submenuover",function(b,c){c!==a&&a.delayHideSubMenu()}),this.subMenu._bakQueryAutoHide=this.subMenu.queryAutoHide,this.subMenu.queryAutoHide=function(b){return(!b||!c.contains(a.getDom(),b))&&this._bakQueryAutoHide(b)}),this.getDom().style.tabIndex="-1",c.makeUnselectable(this.getDom()),this.Stateful_postRender()},delayShowSubMenu:function(){var a=this;a.isDisabled()||(a.addState("opened"),clearTimeout(a._showingTimer),clearTimeout(a._closingTimer),a._closingTimer=null,a._showingTimer=setTimeout(function(){a.showSubMenu()},250))},delayHideSubMenu:function(){var a=this;a.isDisabled()||(a.removeState("opened"),clearTimeout(a._showingTimer),a._closingTimer||(a._closingTimer=setTimeout(function(){a.hasState("opened")||a.hideSubMenu(),a._closingTimer=null},400)))},renderLabelHtml:function(){return'
    '+(this.label||"")+"
    "},getStateDom:function(){return this.getDom()},queryAutoHide:function(a){if(this.subMenu&&this.hasState("opened"))return this.subMenu.queryAutoHide(a)},_onClick:function(a,b){this.hasState("disabled")||this.fireEvent("click",a,b)!==!1&&(this.subMenu?this.showSubMenu():e.postHide(a))},showSubMenu:function(){var a=c.getClientRect(this.getDom());a.right-=5,a.left+=2,a.width-=7,a.top-=4,a.bottom+=4,a.height+=8,this.subMenu.showAnchorRect(a,!0,!0)},hideSubMenu:function(){this.subMenu.hide()}},a.inherits(j,d),a.extend(j.prototype,f,!0)}(),function(){var a=baidu.editor.utils,b=baidu.editor.ui.uiUtils,c=baidu.editor.ui.Menu,d=baidu.editor.ui.SplitButton,e=baidu.editor.ui.Combox=function(a){this.initOptions(a),this.initCombox()};e.prototype={uiName:"combox",onbuttonclick:function(){this.showPopup()},initCombox:function(){var a=this;this.items=this.items||[];for(var b=0;bd.right&&(g=d.right-e.width);var h=a.top;h+e.height>d.bottom&&(h=d.bottom-e.height),c.style.left=Math.max(g,0)+"px",c.style.top=Math.max(h,0)+"px"},showAtCenter:function(){var a=f.getViewportRect();if(this.fullscreen){var b=this.getDom(),c=this.getDom("content");b.style.display="block";var d=UE.ui.uiUtils.getClientRect(b),g=UE.ui.uiUtils.getClientRect(c);b.style.left="-100000px",c.style.width=a.width-d.width+g.width+"px",c.style.height=a.height-d.height+g.height+"px",b.style.width=a.width+"px",b.style.height=a.height+"px",b.style.left=0,this._originalContext={html:{overflowX:document.documentElement.style.overflowX,overflowY:document.documentElement.style.overflowY},body:{overflowX:document.body.style.overflowX,overflowY:document.body.style.overflowY}},document.documentElement.style.overflowX="hidden",document.documentElement.style.overflowY="hidden",document.body.style.overflowX="hidden",document.body.style.overflowY="hidden"}else{this.getDom().style.display="";var h=this.fitSize(),i=0|this.getDom("titlebar").offsetHeight,j=a.width/2-h.width/2,k=a.height/2-(h.height-i)/2-i,l=this.getDom();this.safeSetOffset({left:Math.max(0|j,0),top:Math.max(0|k,0)}),e.hasClass(l,"edui-state-centered")||(l.className+=" edui-state-centered")}this._show()},getContentHtml:function(){var a="";return"string"==typeof this.content?a=this.content:this.iframeUrl&&(a=''),a},getHtmlTpl:function(){var a="";if(this.buttons){for(var b=[],c=0;c
    '+b.join("")+"
    "}return'
    '+(this.title||"")+"
    "+this.closeButton.renderHtml()+'
    '+(this.autoReset?"":this.getContentHtml())+"
    "+a+"
    "},postRender:function(){this.modalMask.getDom()||(this.modalMask.render(),this.modalMask.hide()),this.dragMask.getDom()||(this.dragMask.render(),this.dragMask.hide());var a=this;if(this.addListener("show",function(){a.modalMask.show(this.getDom().style.zIndex-2)}),this.addListener("hide",function(){a.modalMask.hide()}),this.buttons)for(var b=0;b',a.editor.container.style.zIndex&&(this.getDom().style.zIndex=1*a.editor.container.style.zIndex+1))}}),this.onbuttonclick=function(){this.showPopup()},this.initSplitButton()}},a.inherits(d,c)}(),function(){function a(a){var b=a.target||a.srcElement,c=g.findParent(b,function(a){return g.hasClass(a,"edui-shortcutmenu")||g.hasClass(a,"edui-popup")},!0);if(!c)for(var d,e=0;d=h[e++];)d.hide()}var b,c=baidu.editor.ui,d=c.UIBase,e=c.uiUtils,f=baidu.editor.utils,g=baidu.editor.dom.domUtils,h=[],i=!1,j=c.ShortCutMenu=function(a){this.initOptions(a),this.initShortCutMenu()};j.postHide=a,j.prototype={isHidden:!0,SPACE:5,initShortCutMenu:function(){this.items=this.items||[],this.initUIBase(),this.initItems(),this.initEvent(),h.push(this)},initEvent:function(){var a=this,c=a.editor.document;g.on(c,"mousemove",function(c){if(a.isHidden===!1){if(a.getSubMenuMark()||"contextmenu"==a.eventType)return;var d=!0,e=a.getDom(),f=e.offsetWidth,g=e.offsetHeight,h=f/2+a.SPACE,i=g/2,j=Math.abs(c.screenX-a.left),k=Math.abs(c.screenY-a.top);clearTimeout(b),b=setTimeout(function(){k>0&&ki&&ki+70&&k0&&jh&&jh+70&&j'+a+""}},f.inherits(j,d),g.on(document,"mousedown",function(b){a(b)}),g.on(window,"scroll",function(b){a(b)})}(),function(){var a=baidu.editor.utils,b=baidu.editor.ui.UIBase,c=baidu.editor.ui.Breakline=function(a){this.initOptions(a),this.initSeparator()};c.prototype={uiName:"Breakline",initSeparator:function(){this.initUIBase()},getHtmlTpl:function(){return"
    "}},a.inherits(c,b)}(),function(){var a=baidu.editor.utils,b=baidu.editor.dom.domUtils,c=baidu.editor.ui.UIBase,d=baidu.editor.ui.Message=function(a){this.initOptions(a),this.initMessage()};d.prototype={initMessage:function(){this.initUIBase()},getHtmlTpl:function(){return'
    ×
    '},reset:function(a){var b=this;a.keepshow||(clearTimeout(this.timer),b.timer=setTimeout(function(){b.hide()},a.timeout||4e3)),void 0!==a.content&&b.setContent(a.content),void 0!==a.type&&b.setType(a.type),b.show()},postRender:function(){var a=this,c=this.getDom("closer");c&&b.on(c,"click",function(){a.hide()})},setContent:function(a){this.getDom("content").innerHTML=a},setType:function(a){a=a||"info";var b=this.getDom("body");b.className=b.className.replace(/edui-message-type-[\w-]+/,"edui-message-type-"+a)},getContent:function(){return this.getDom("content").innerHTML},getType:function(){var a=this.getDom("body").match(/edui-message-type-([\w-]+)/);return a?a[1]:""},show:function(){this.getDom().style.display="block"},hide:function(){var a=this.getDom();a&&(a.style.display="none",a.parentNode&&a.parentNode.removeChild(a))}},a.inherits(d,c)}(),function(){var a=baidu.editor.utils,b=baidu.editor.ui,c=b.Dialog;b.buttons={},b.Dialog=function(a){var b=new c(a);return b.addListener("hide",function(){if(b.editor){var a=b.editor;try{if(browser.gecko){var c=a.window.scrollY,d=a.window.scrollX;a.body.focus(),a.window.scrollTo(d,c)}else a.focus()}catch(e){}}}),b};for(var d,e={anchor:"~/dialogs/anchor/anchor.html",insertimage:"~/dialogs/image/image.html",link:"~/dialogs/link/link.html",spechars:"~/dialogs/spechars/spechars.html",searchreplace:"~/dialogs/searchreplace/searchreplace.html",map:"~/dialogs/map/map.html",gmap:"~/dialogs/gmap/gmap.html",insertvideo:"~/dialogs/video/video.html",help:"~/dialogs/help/help.html",preview:"~/dialogs/preview/preview.html",emotion:"~/dialogs/emotion/emotion.html",wordimage:"~/dialogs/wordimage/wordimage.html",attachment:"~/dialogs/attachment/attachment.html",insertframe:"~/dialogs/insertframe/insertframe.html",edittip:"~/dialogs/table/edittip.html",edittable:"~/dialogs/table/edittable.html",edittd:"~/dialogs/table/edittd.html",webapp:"~/dialogs/webapp/webapp.html",snapscreen:"~/dialogs/snapscreen/snapscreen.html",scrawl:"~/dialogs/scrawl/scrawl.html",music:"~/dialogs/music/music.html",template:"~/dialogs/template/template.html",background:"~/dialogs/background/background.html",charts:"~/dialogs/charts/charts.html"},f=["undo","redo","formatmatch","bold","italic","underline","fontborder","touppercase","tolowercase","strikethrough","subscript","superscript","source","indent","outdent","blockquote","pasteplain","pagebreak","selectall","print","horizontal","removeformat","time","date","unlink","insertparagraphbeforetable","insertrow","insertcol","mergeright","mergedown","deleterow","deletecol","splittorows","splittocols","splittocells","mergecells","deletetable","drafts"],g=0;d=f[g++];)d=d.toLowerCase(),b[d]=function(a){return function(c){var d=new b.Button({className:"edui-for-"+a,title:c.options.labelMap[a]||c.getLang("labelMap."+a)||"",onclick:function(){c.execCommand(a)},theme:c.options.theme,showText:!1});return b.buttons[a]=d,c.addListener("selectionchange",function(b,e,f){var g=c.queryCommandState(a);g==-1?(d.setDisabled(!0),d.setChecked(!1)):f||(d.setDisabled(!1),d.setChecked(g))}),d}}(d);b.cleardoc=function(a){var c=new b.Button({className:"edui-for-cleardoc",title:a.options.labelMap.cleardoc||a.getLang("labelMap.cleardoc")||"",theme:a.options.theme,onclick:function(){confirm(a.getLang("confirmClear"))&&a.execCommand("cleardoc")}});return b.buttons.cleardoc=c,a.addListener("selectionchange",function(){c.setDisabled(a.queryCommandState("cleardoc")==-1)}),c};var h={justify:["left","right","center","justify"],imagefloat:["none","left","center","right"],directionality:["ltr","rtl"]};for(var i in h)!function(a,c){for(var d,e=0;d=c[e++];)!function(c){b[a.replace("float","")+c]=function(d){var e=new b.Button({className:"edui-for-"+a.replace("float","")+c,title:d.options.labelMap[a.replace("float","")+c]||d.getLang("labelMap."+a.replace("float","")+c)||"",theme:d.options.theme,onclick:function(){d.execCommand(a,c)}});return b.buttons[a]=e,d.addListener("selectionchange",function(b,f,g){e.setDisabled(d.queryCommandState(a)==-1),e.setChecked(d.queryCommandValue(a)==c&&!g)}),e}}(d)}(i,h[i]);for(var d,g=0;d=["backcolor","forecolor"][g++];)b[d]=function(a){return function(c){var d=new b.ColorButton({className:"edui-for-"+a,color:"default",title:c.options.labelMap[a]||c.getLang("labelMap."+a)||"",editor:c,onpickcolor:function(b,d){ +c.execCommand(a,d)},onpicknocolor:function(){c.execCommand(a,"default"),this.setColor("transparent"),this.color="default"},onbuttonclick:function(){c.execCommand(a,this.color)}});return b.buttons[a]=d,c.addListener("selectionchange",function(){d.setDisabled(c.queryCommandState(a)==-1)}),d}}(d);var j={noOk:["searchreplace","help","spechars","webapp","preview"],ok:["attachment","anchor","link","insertimage","map","gmap","insertframe","wordimage","insertvideo","insertframe","edittip","edittable","edittd","scrawl","template","music","background","charts"]};for(var i in j)!function(c,d){for(var f,g=0;f=d[g++];)browser.opera&&"searchreplace"===f||!function(d){b[d]=function(f,g,h){g=g||(f.options.iframeUrlMap||{})[d]||e[d],h=f.options.labelMap[d]||f.getLang("labelMap."+d)||"";var i;g&&(i=new b.Dialog(a.extend({iframeUrl:f.ui.mapUrl(g),editor:f,className:"edui-for-"+d,title:h,holdScroll:"insertimage"===d,fullscreen:/charts|preview/.test(d),closeDialog:f.getLang("closeDialog")},"ok"==c?{buttons:[{className:"edui-okbutton",label:f.getLang("ok"),editor:f,onclick:function(){i.close(!0)}},{className:"edui-cancelbutton",label:f.getLang("cancel"),editor:f,onclick:function(){i.close(!1)}}]}:{})),f.ui._dialogs[d+"Dialog"]=i);var j=new b.Button({className:"edui-for-"+d,title:h,onclick:function(){if(i)switch(d){case"wordimage":var a=f.execCommand("wordimage");a&&a.length&&(i.render(),i.open());break;case"scrawl":f.queryCommandState("scrawl")!=-1&&(i.render(),i.open());break;default:i.render(),i.open()}},theme:f.options.theme,disabled:"scrawl"==d&&f.queryCommandState("scrawl")==-1||"charts"==d});return b.buttons[d]=j,f.addListener("selectionchange",function(){var a={edittable:1};if(!(d in a)){var b=f.queryCommandState(d);j.getDom()&&(j.setDisabled(b==-1),j.setChecked(b))}}),j}}(f.toLowerCase())}(i,j[i]);b.snapscreen=function(a,c,d){d=a.options.labelMap.snapscreen||a.getLang("labelMap.snapscreen")||"";var f=new b.Button({className:"edui-for-snapscreen",title:d,onclick:function(){a.execCommand("snapscreen")},theme:a.options.theme});if(b.buttons.snapscreen=f,c=c||(a.options.iframeUrlMap||{}).snapscreen||e.snapscreen){var g=new b.Dialog({iframeUrl:a.ui.mapUrl(c),editor:a,className:"edui-for-snapscreen",title:d,buttons:[{className:"edui-okbutton",label:a.getLang("ok"),editor:a,onclick:function(){g.close(!0)}},{className:"edui-cancelbutton",label:a.getLang("cancel"),editor:a,onclick:function(){g.close(!1)}}]});g.render(),a.ui._dialogs.snapscreenDialog=g}return a.addListener("selectionchange",function(){f.setDisabled(a.queryCommandState("snapscreen")==-1)}),f},b.insertcode=function(c,d,e){d=c.options.insertcode||[],e=c.options.labelMap.insertcode||c.getLang("labelMap.insertcode")||"";var f=[];a.each(d,function(a,b){f.push({label:a,value:b,theme:c.options.theme,renderLabelHtml:function(){return'
    '+(this.label||"")+"
    "}})});var g=new b.Combox({editor:c,items:f,onselect:function(a,b){c.execCommand("insertcode",this.items[b].value)},onbuttonclick:function(){this.showPopup()},title:e,initValue:e,className:"edui-for-insertcode",indexByValue:function(a){if(a)for(var b,c=0;b=this.items[c];c++)if(b.value.indexOf(a)!=-1)return c;return-1}});return b.buttons.insertcode=g,c.addListener("selectionchange",function(a,b,d){if(!d){var f=c.queryCommandState("insertcode");if(f==-1)g.setDisabled(!0);else{g.setDisabled(!1);var h=c.queryCommandValue("insertcode");if(!h)return void g.setValue(e);h&&(h=h.replace(/['"]/g,"").split(",")[0]),g.setValue(h)}}}),g},b.fontfamily=function(c,d,e){if(d=c.options.fontfamily||[],e=c.options.labelMap.fontfamily||c.getLang("labelMap.fontfamily")||"",d.length){for(var f,g=0,h=[];f=d[g];g++){var i=c.getLang("fontfamily")[f.name]||"";!function(b,d){h.push({label:b,value:d,theme:c.options.theme,renderLabelHtml:function(){return'
    '+(this.label||"")+"
    "}})}(f.label||i,f.val)}var j=new b.Combox({editor:c,items:h,onselect:function(a,b){c.execCommand("FontFamily",this.items[b].value)},onbuttonclick:function(){this.showPopup()},title:e,initValue:e,className:"edui-for-fontfamily",indexByValue:function(a){if(a)for(var b,c=0;b=this.items[c];c++)if(b.value.indexOf(a)!=-1)return c;return-1}});return b.buttons.fontfamily=j,c.addListener("selectionchange",function(a,b,d){if(!d){var e=c.queryCommandState("FontFamily");if(e==-1)j.setDisabled(!0);else{j.setDisabled(!1);var f=c.queryCommandValue("FontFamily");f&&(f=f.replace(/['"]/g,"").split(",")[0]),j.setValue(f)}}}),j}},b.fontsize=function(a,c,d){if(d=a.options.labelMap.fontsize||a.getLang("labelMap.fontsize")||"",c=c||a.options.fontsize||[],c.length){for(var e=[],f=0;f'+(this.label||"")+""}})}var h=new b.Combox({editor:a,items:e,title:d,initValue:d,onselect:function(b,c){a.execCommand("FontSize",this.items[c].value)},onbuttonclick:function(){this.showPopup()},className:"edui-for-fontsize"});return b.buttons.fontsize=h,a.addListener("selectionchange",function(b,c,d){if(!d){var e=a.queryCommandState("FontSize");e==-1?h.setDisabled(!0):(h.setDisabled(!1),h.setValue(a.queryCommandValue("FontSize")))}}),h}},b.paragraph=function(c,d,e){if(e=c.options.labelMap.paragraph||c.getLang("labelMap.paragraph")||"",d=c.options.paragraph||[],!a.isEmptyObject(d)){var f=[];for(var g in d)f.push({value:g,label:d[g]||c.getLang("paragraph")[g],theme:c.options.theme,renderLabelHtml:function(){return'
    '+(this.label||"")+"
    "}});var h=new b.Combox({editor:c,items:f,title:e,initValue:e,className:"edui-for-paragraph",onselect:function(a,b){c.execCommand("Paragraph",this.items[b].value)},onbuttonclick:function(){this.showPopup()}});return b.buttons.paragraph=h,c.addListener("selectionchange",function(a,b,d){if(!d){var e=c.queryCommandState("Paragraph");if(e==-1)h.setDisabled(!0);else{h.setDisabled(!1);var f=c.queryCommandValue("Paragraph"),g=h.indexByValue(f);g!=-1?h.setValue(f):h.setValue(h.initValue)}}}),h}},b.customstyle=function(a){var c=a.options.customstyle||[],d=a.options.labelMap.customstyle||a.getLang("labelMap.customstyle")||"";if(c.length){for(var e,f=a.getLang("customstyle"),g=0,h=[];e=c[g++];)!function(b){var c={};c.label=b.label?b.label:f[b.name],c.style=b.style,c.className=b.className,c.tag=b.tag,h.push({label:c.label,value:c,theme:a.options.theme,renderLabelHtml:function(){return'
    <'+c.tag+" "+(c.className?' class="'+c.className+'"':"")+(c.style?' style="'+c.style+'"':"")+">"+c.label+"
    "}})}(e);var i=new b.Combox({editor:a,items:h,title:d,initValue:d,className:"edui-for-customstyle",onselect:function(b,c){a.execCommand("customstyle",this.items[c].value)},onbuttonclick:function(){this.showPopup()},indexByValue:function(a){for(var b,c=0;b=this.items[c++];)if(b.label==a)return c-1;return-1}});return b.buttons.customstyle=i,a.addListener("selectionchange",function(b,c,d){if(!d){var e=a.queryCommandState("customstyle");if(e==-1)i.setDisabled(!0);else{i.setDisabled(!1);var f=a.queryCommandValue("customstyle"),g=i.indexByValue(f);g!=-1?i.setValue(f):i.setValue(i.initValue)}}}),i}},b.inserttable=function(a,c,d){d=a.options.labelMap.inserttable||a.getLang("labelMap.inserttable")||"";var e=new b.TableButton({editor:a,title:d,className:"edui-for-inserttable",onpicktable:function(b,c,d){a.execCommand("InsertTable",{numRows:d,numCols:c,border:1})},onbuttonclick:function(){this.showPopup()}});return b.buttons.inserttable=e,a.addListener("selectionchange",function(){e.setDisabled(a.queryCommandState("inserttable")==-1)}),e},b.lineheight=function(a){var c=a.options.lineheight||[];if(c.length){for(var d,e=0,f=[];d=c[e++];)f.push({label:d,value:d,theme:a.options.theme,onclick:function(){a.execCommand("lineheight",this.value)}});var g=new b.MenuButton({editor:a,className:"edui-for-lineheight",title:a.options.labelMap.lineheight||a.getLang("labelMap.lineheight")||"",items:f,onbuttonclick:function(){var b=a.queryCommandValue("LineHeight")||this.value;a.execCommand("LineHeight",b)}});return b.buttons.lineheight=g,a.addListener("selectionchange",function(){var b=a.queryCommandState("LineHeight");if(b==-1)g.setDisabled(!0);else{g.setDisabled(!1);var c=a.queryCommandValue("LineHeight");c&&g.setValue((c+"").replace(/cm/,"")),g.setChecked(b)}}),g}};for(var k,l=["top","bottom"],m=0;k=l[m++];)!function(a){b["rowspacing"+a]=function(c){var d=c.options["rowspacing"+a]||[];if(!d.length)return null;for(var e,f=0,g=[];e=d[f++];)g.push({label:e,value:e,theme:c.options.theme,onclick:function(){c.execCommand("rowspacing",this.value,a)}});var h=new b.MenuButton({editor:c,className:"edui-for-rowspacing"+a,title:c.options.labelMap["rowspacing"+a]||c.getLang("labelMap.rowspacing"+a)||"",items:g,onbuttonclick:function(){var b=c.queryCommandValue("rowspacing",a)||this.value;c.execCommand("rowspacing",b,a)}});return b.buttons[a]=h,c.addListener("selectionchange",function(){var b=c.queryCommandState("rowspacing",a);if(b==-1)h.setDisabled(!0);else{h.setDisabled(!1);var d=c.queryCommandValue("rowspacing",a);d&&h.setValue((d+"").replace(/%/,"")),h.setChecked(b)}}),h}}(k);for(var n,o=["insertorderedlist","insertunorderedlist"],p=0;n=o[p++];)!function(a){b[a]=function(c){var d=c.options[a],e=function(){c.execCommand(a,this.value)},f=[];for(var g in d)f.push({label:d[g]||c.getLang()[a][g]||"",value:g,theme:c.options.theme,onclick:e});var h=new b.MenuButton({editor:c,className:"edui-for-"+a,title:c.getLang("labelMap."+a)||"",items:f,onbuttonclick:function(){var b=c.queryCommandValue(a)||this.value;c.execCommand(a,b)}});return b.buttons[a]=h,c.addListener("selectionchange",function(){var b=c.queryCommandState(a);if(b==-1)h.setDisabled(!0);else{h.setDisabled(!1);var d=c.queryCommandValue(a);h.setValue(d),h.setChecked(b)}}),h}}(n);b.fullscreen=function(a,c){c=a.options.labelMap.fullscreen||a.getLang("labelMap.fullscreen")||"";var d=new b.Button({className:"edui-for-fullscreen",title:c,theme:a.options.theme,onclick:function(){a.ui&&a.ui.setFullScreen(!a.ui.isFullScreen()),this.setChecked(a.ui.isFullScreen())}});return b.buttons.fullscreen=d,a.addListener("selectionchange",function(){var b=a.queryCommandState("fullscreen");d.setDisabled(b==-1),d.setChecked(a.ui.isFullScreen())}),d},b.emotion=function(a,c){var d="emotion",f=new b.MultiMenuPop({title:a.options.labelMap[d]||a.getLang("labelMap."+d)||"",editor:a,className:"edui-for-"+d,iframeUrl:a.ui.mapUrl(c||(a.options.iframeUrlMap||{})[d]||e[d])});return b.buttons[d]=f,a.addListener("selectionchange",function(){f.setDisabled(a.queryCommandState(d)==-1)}),f},b.autotypeset=function(a){var c=new b.AutoTypeSetButton({editor:a,title:a.options.labelMap.autotypeset||a.getLang("labelMap.autotypeset")||"",className:"edui-for-autotypeset",onbuttonclick:function(){a.execCommand("autotypeset")}});return b.buttons.autotypeset=c,a.addListener("selectionchange",function(){c.setDisabled(a.queryCommandState("autotypeset")==-1)}),c},b.simpleupload=function(a){var c="simpleupload",d=new b.Button({className:"edui-for-"+c,title:a.options.labelMap[c]||a.getLang("labelMap."+c)||"",onclick:function(){},theme:a.options.theme,showText:!1});return b.buttons[c]=d,a.addListener("ready",function(){var b=d.getDom("body"),c=b.children[0];a.fireEvent("simpleuploadbtnready",c)}),a.addListener("selectionchange",function(b,e,f){var g=a.queryCommandState(c);g==-1?(d.setDisabled(!0),d.setChecked(!1)):f||(d.setDisabled(!1),d.setChecked(g))}),d}}(),function(){function a(a){this.initOptions(a),this.initEditorUI()}var b=baidu.editor.utils,c=baidu.editor.ui.uiUtils,d=baidu.editor.ui.UIBase,e=baidu.editor.dom.domUtils,f=[];a.prototype={uiName:"editor",initEditorUI:function(){function a(a,b){a.setOpt({wordCount:!0,maximumWords:1e4,wordCountMsg:a.options.wordCountMsg||a.getLang("wordCountMsg"),wordOverFlowMsg:a.options.wordOverFlowMsg||a.getLang("wordOverFlowMsg")});var c=a.options,d=c.maximumWords,e=c.wordCountMsg,f=c.wordOverFlowMsg,g=b.getDom("wordcount");if(c.wordCount){var h=a.getContentLength(!0);h>d?(g.innerHTML=f,a.fireEvent("wordcountoverflow")):g.innerHTML=e.replace("{#leave}",d-h).replace("{#count}",h)}}this.editor.ui=this,this._dialogs={},this.initUIBase(),this._initToolbars();var b=this.editor,c=this;b.addListener("ready",function(){function d(){a(b,c),e.un(b.document,"click",arguments.callee)}b.getDialog=function(a){return b.ui._dialogs[a+"Dialog"]},e.on(b.window,"scroll",function(a){baidu.editor.ui.Popup.postHide(a)}),b.ui._actualFrameWidth=b.options.initialFrameWidth,UE.browser.ie&&6===UE.browser.version&&b.container.ownerDocument.execCommand("BackgroundImageCache",!1,!0),b.options.elementPathEnabled&&(b.ui.getDom("elementpath").innerHTML='
    '+b.getLang("elementPathTip")+":
    "),b.options.wordCount&&(e.on(b.document,"click",d),b.ui.getDom("wordcount").innerHTML=b.getLang("wordCountTip")),b.ui._scale(),b.options.scaleEnabled?(b.autoHeightEnabled&&b.disableAutoHeight(),c.enableScale()):c.disableScale(),b.options.elementPathEnabled||b.options.wordCount||b.options.scaleEnabled||(b.ui.getDom("elementpath").style.display="none",b.ui.getDom("wordcount").style.display="none",b.ui.getDom("scale").style.display="none"),b.selection.isFocus()&&b.fireEvent("selectionchange",!1,!0)}),b.addListener("mousedown",function(a,b){var c=b.target||b.srcElement;baidu.editor.ui.Popup.postHide(b,c),baidu.editor.ui.ShortCutMenu.postHide(b)}),b.addListener("delcells",function(){UE.ui.edittip&&new UE.ui.edittip(b),b.getDialog("edittip").open()});var d,f,g=!1;b.addListener("afterpaste",function(){b.queryCommandState("pasteplain")||(baidu.editor.ui.PastePicker&&(d=new baidu.editor.ui.Popup({content:new baidu.editor.ui.PastePicker({editor:b}),editor:b,className:"edui-wordpastepop"}),d.render()),g=!0)}),b.addListener("afterinserthtml",function(){clearTimeout(f),f=setTimeout(function(){if(d&&(g||b.ui._isTransfer)){if(d.isHidden()){var a=e.createElement(b.document,"span",{style:"line-height:0px;",innerHTML:"\ufeff"}),c=b.selection.getRange();c.insertNode(a);var f=getDomNode(a,"firstChild","previousSibling");f&&d.showAnchor(3==f.nodeType?f.parentNode:f),e.remove(a)}else d.show();delete b.ui._isTransfer,g=!1}},200)}),b.addListener("contextmenu",function(a,b){baidu.editor.ui.Popup.postHide(b)}),b.addListener("keydown",function(a,b){d&&d.dispose(b);var c=b.keyCode||b.which;b.altKey&&90==c&&UE.ui.buttons.fullscreen.onclick()}),b.addListener("wordcount",function(b){a(this,c)}),b.addListener("selectionchange",function(){b.options.elementPathEnabled&&c[(b.queryCommandState("elementpath")==-1?"dis":"en")+"ableElementPath"](),b.options.scaleEnabled&&c[(b.queryCommandState("scale")==-1?"dis":"en")+"ableScale"]()});var h=new baidu.editor.ui.Popup({editor:b,content:"",className:"edui-bubble",_onEditButtonClick:function(){this.hide(),b.ui._dialogs.linkDialog.open()},_onImgEditButtonClick:function(a){this.hide(),b.ui._dialogs[a]&&b.ui._dialogs[a].open()},_onImgSetFloat:function(a){this.hide(),b.execCommand("imagefloat",a)},_setIframeAlign:function(a){var b=h.anchorEl,c=b.cloneNode(!0);switch(a){case-2:c.setAttribute("align","");break;case-1:c.setAttribute("align","left");break;case 1:c.setAttribute("align","right")}b.parentNode.insertBefore(c,b),e.remove(b),h.anchorEl=c,h.showAnchor(h.anchorEl)},_updateIframe:function(){var a=b._iframe=h.anchorEl;e.hasClass(a,"ueditor_baidumap")?(b.selection.getRange().selectNode(a).select(),b.ui._dialogs.mapDialog.open(),h.hide()):(b.ui._dialogs.insertframeDialog.open(),h.hide())},_onRemoveButtonClick:function(a){b.execCommand(a),this.hide()},queryAutoHide:function(a){return a&&a.ownerDocument==b.document&&("img"==a.tagName.toLowerCase()||e.findParentByTagName(a,"a",!0))?a!==h.anchorEl:baidu.editor.ui.Popup.prototype.queryAutoHide.call(this,a)}});h.render(),b.options.imagePopup&&(b.addListener("mouseover",function(a,c){c=c||window.event;var d=c.target||c.srcElement;if(b.ui._dialogs.insertframeDialog&&/iframe/gi.test(d.tagName)){var e=h.formatHtml(""+b.getLang("property")+': '+b.getLang("default")+'  '+b.getLang("justifyleft")+'  '+b.getLang("justifyright")+'   '+b.getLang("modify")+"");e?(h.getDom("content").innerHTML=e,h.anchorEl=d,h.showAnchor(h.anchorEl)):h.hide()}}),b.addListener("selectionchange",function(a,c){if(c){var d="",f="",g=b.selection.getRange().getClosedNode(),i=b.ui._dialogs;if(g&&"IMG"==g.tagName){var j="insertimageDialog";if(g.className.indexOf("edui-faked-video")==-1&&g.className.indexOf("edui-upload-video")==-1||(j="insertvideoDialog"),g.className.indexOf("edui-faked-webapp")!=-1&&(j="webappDialog"),g.src.indexOf("http://api.map.baidu.com")!=-1&&(j="mapDialog"),g.className.indexOf("edui-faked-music")!=-1&&(j="musicDialog"),g.src.indexOf("http://maps.google.com/maps/api/staticmap")!=-1&&(j="gmapDialog"),g.getAttribute("anchorname")&&(j="anchorDialog",d=h.formatHtml(""+b.getLang("property")+': '+b.getLang("modify")+"  "+b.getLang("delete")+"")),g.getAttribute("word_img")&&(b.word_img=[g.getAttribute("word_img")],j="wordimageDialog"),(e.hasClass(g,"loadingclass")||e.hasClass(g,"loaderrorclass"))&&(j=""),!i[j])return;f=""+b.getLang("property")+': '+b.getLang("default")+'  '+b.getLang("justifyleft")+'  '+b.getLang("justifyright")+'  '+b.getLang("justifycenter")+"  '+b.getLang("modify")+"",!d&&(d=h.formatHtml(f))}if(b.ui._dialogs.linkDialog){var k,l=b.queryCommandValue("link");if(l&&(k=l.getAttribute("_href")||l.getAttribute("href",2))){var m=k;k.length>30&&(m=k.substring(0,20)+"..."),d&&(d+='
    '),d+=h.formatHtml(""+b.getLang("anthorMsg")+': '+m+' '+b.getLang("modify")+' '+b.getLang("clear")+""),h.showAnchor(l)}}d?(h.getDom("content").innerHTML=d,h.anchorEl=g||l,h.showAnchor(h.anchorEl)):h.hide()}}))},_initToolbars:function(){for(var a=this.editor,b=this.toolbars||[],c=[],d=0;d
    '+(this.toolbars.length?'
    '+this.renderToolbarBoxHtml()+"
    ":"")+'
    '},showWordImageDialog:function(){this._dialogs.wordimageDialog.open()},renderToolbarBoxHtml:function(){for(var a=[],b=0;b'+c+"");b.innerHTML='
    '+this.editor.getLang("elementPathTip")+": "+d.join(" > ")+"
    "}else b.style.display="none"},disableElementPath:function(){var a=this.getDom("elementpath");a.innerHTML="",a.style.display="none",this.elementPathEnabled=!1},enableElementPath:function(){var a=this.getDom("elementpath");a.style.display="",this.elementPathEnabled=!0,this._updateElementPath()},_scale:function(){function a(){o=e.getXY(h),p||(p=g.options.minFrameHeight+j.offsetHeight+k.offsetHeight),m.style.cssText="position:absolute;left:0;display:;top:0;background-color:#41ABFF;opacity:0.4;filter: Alpha(opacity=40);width:"+h.offsetWidth+"px;height:"+h.offsetHeight+"px;z-index:"+(g.options.zIndex+1),e.on(f,"mousemove",b),e.on(i,"mouseup",c),e.on(f,"mouseup",c)}function b(a){d();var b=a||window.event;r=b.pageX||f.documentElement.scrollLeft+b.clientX,s=b.pageY||f.documentElement.scrollTop+b.clientY,t=r-o.x,u=s-o.y,t>=q&&(n=!0,m.style.width=t+"px"),u>=p&&(n=!0,m.style.height=u+"px")}function c(){n&&(n=!1,g.ui._actualFrameWidth=m.offsetWidth-2,h.style.width=g.ui._actualFrameWidth+"px",g.setHeight(m.offsetHeight-k.offsetHeight-j.offsetHeight-2,!0)),m&&(m.style.display="none"),d(),e.un(f,"mousemove",b),e.un(i,"mouseup",c),e.un(f,"mouseup",c)}function d(){browser.ie?f.selection.clear():window.getSelection().removeAllRanges()}var f=document,g=this.editor,h=g.container,i=g.document,j=this.getDom("toolbarbox"),k=this.getDom("bottombar"),l=this.getDom("scale"),m=this.getDom("scalelayer"),n=!1,o=null,p=0,q=g.options.minFrameWidth,r=0,s=0,t=0,u=0,v=this;this.editor.addListener("fullscreenchanged",function(a,b){if(b)v.disableScale();else if(v.editor.options.scaleEnabled){v.enableScale();var c=v.editor.document.createElement("span");v.editor.body.appendChild(c),v.editor.body.style.height=Math.max(e.getXY(c).y,v.editor.iframe.offsetHeight-20)+"px",e.remove(c)}}),this.enableScale=function(){1!=g.queryCommandState("source")&&(l.style.display="",this.scaleEnabled=!0,e.on(l,"mousedown",a))},this.disableScale=function(){l.style.display="none",this.scaleEnabled=!1,e.un(l,"mousedown",a)}},isFullScreen:function(){return this._fullscreen},postRender:function(){d.prototype.postRender.call(this);for(var a=0;a[\n\r\t]+([ ]{4})+/g,">").replace(/[\n\r\t]+([ ]{4})+[\n\r\t]+<"),c.className&&(b.className=c.className),c.style.cssText&&(b.style.cssText=c.style.cssText),/textarea/i.test(c.tagName)?(d.textarea=c,d.textarea.style.display="none"):c.parentNode.removeChild(c),c.id&&(b.id=c.id,e.removeAttributes(c,"id")),c=b,c.innerHTML=""}e.addClass(c,"edui-"+d.options.theme),d.ui.render(c);var h=d.options;d.container=d.ui.getDom();for(var i,j=e.findParents(c,!0),k=[],l=0;i=j[l];l++)k[l]=i.style.display,i.style.display="block";if(h.initialFrameWidth)h.minFrameWidth=h.initialFrameWidth;else{h.minFrameWidth=h.initialFrameWidth=c.offsetWidth;var m=c.style.width;/%$/.test(m)&&(h.initialFrameWidth=m)}h.initialFrameHeight?h.minFrameHeight=h.initialFrameHeight:h.initialFrameHeight=h.minFrameHeight=c.offsetHeight;for(var i,l=0;i=j[l];l++)i.style.display=k[l];c.style.height&&(c.style.height=""),d.container.style.width=h.initialFrameWidth+(/%$/.test(h.initialFrameWidth)?"":"px"),d.container.style.zIndex=h.zIndex,f.call(d,d.ui.getDom("iframeholder")),d.fireEvent("afteruiready")}d.langIsReady?b():d.addListener("langReady",b)})},d},UE.getEditor=function(a,b){var c=g[a];return c||(c=g[a]=new UE.ui.Editor(b),c.render(a)),c},UE.delEditor=function(a){var b;(b=g[a])&&(b.key&&b.destroy(),delete g[a])},UE.registerUI=function(a,c,d,e){b.each(a.split(/\s+/),function(a){UE._customizeUI[a]={id:e,execFn:c,index:d}})}}(),UE.registerUI("message",function(a){function b(){var a=g.ui.getDom("toolbarbox");a&&(c.style.top=a.offsetHeight+3+"px"),c.style.zIndex=Math.max(g.options.zIndex,g.iframe.style.zIndex)+1}var c,d=baidu.editor.ui,e=d.Message,f=[],g=a;g.addListener("ready",function(){c=document.getElementById(g.ui.id+"_message_holder"),b()}),g.addListener("showmessage",function(a,d){d=utils.isString(d)?{content:d}:d;var h=new e({timeout:d.timeout,type:d.type,content:d.content,keepshow:d.keepshow,editor:g}),i=d.id||"msg_"+(+new Date).toString(36);return h.render(c),f[i]=h,h.reset(d),b(),i}),g.addListener("updatemessage",function(a,b,d){d=utils.isString(d)?{content:d}:d;var e=f[b];e.render(c),e&&e.reset(d)}),g.addListener("hidemessage",function(a,b){var c=f[b];c&&c.hide()})}),UE.registerUI("autosave",function(a){var b=null,c=null;a.on("afterautosave",function(){clearTimeout(b),b=setTimeout(function(){c&&a.trigger("hidemessage",c),c=a.trigger("showmessage",{content:a.getLang("autosave.success"),timeout:2e3})},2e3)})})}(); \ No newline at end of file diff --git a/admin/public/UEditor/ueditor.config.js b/admin/public/UEditor/ueditor.config.js new file mode 100644 index 00000000..55dcafef --- /dev/null +++ b/admin/public/UEditor/ueditor.config.js @@ -0,0 +1,481 @@ +/** + * ueditor完整配置项 + * 可以在这里配置整个编辑器的特性 + */ +/** ************************提示******************************** + * 所有被注释的配置项均为UEditor默认值。 + * 修改默认配置请首先确保已经完全明确该参数的真实用途。 + * 主要有两种修改方案,一种是取消此处注释,然后修改成对应参数;另一种是在实例化编辑器时传入对应参数。 + * 当升级编辑器时,可直接使用旧版配置文件替换新版配置文件,不用担心旧版配置文件中因缺少新功能所需的参数而导致脚本报错。 + **************************提示********************************/ + +(function () { + /** + * 编辑器资源文件根路径。它所表示的含义是:以编辑器实例化页面为当前路径,指向编辑器资源文件(即dialog等文件夹)的路径。 + * 鉴于很多同学在使用编辑器的时候出现的种种路径问题,此处强烈建议大家使用"相对于网站根目录的相对路径"进行配置。 + * "相对于网站根目录的相对路径"也就是以斜杠开头的形如"/myProject/ueditor/"这样的路径。 + * 如果站点中有多个不在同一层级的页面需要实例化编辑器,且引用了同一UEditor的时候,此处的URL可能不适用于每个页面的编辑器。 + * 因此,UEditor提供了针对不同页面的编辑器可单独配置的根路径,具体来说,在需要实例化编辑器的页面最顶部写上如下代码即可。当然,需要令此处的URL等于对应的配置。 + * window.UEDITOR_HOME_URL = "/xxxx/xxxx/"; + */ + var URL = window.UEDITOR_HOME_URL || getUEBasePath(); + + /** + * 配置项主体。注意,此处所有涉及到路径的配置别遗漏URL变量。 + */ + window.UEDITOR_CONFIG = { + + // 为编辑器实例添加一个路径,这个不能被注释 + UEDITOR_HOME_URL: URL, + + // 服务器统一请求接口路径 + serverUrl: URL + 'php/controller.php', + + // 工具栏上的所有的功能按钮和下拉框,可以在new编辑器的实例时选择自己需要的重新定义 + toolbars: [[ + 'source', '|', 'undo', 'redo', '|', + 'bold', 'italic', 'underline', 'strikethrough', '|', 'superscript', 'subscript', '|', 'forecolor', 'backcolor', '|', + 'removeformat', '|', 'insertorderedlist', 'insertunorderedlist', '|', 'selectall', 'cleardoc', 'paragraph', '|', + 'fontfamily', 'fontsize', '|', 'justifyleft', 'justifycenter', 'justifyright', 'justifyjustify', '|', + 'horizontal', 'print', 'preview', 'fullscreen' + ]], + // toolbars: [[ + // 'source', '|', 'undo', 'redo', '|', + // 'bold', 'italic', 'underline', 'strikethrough', '|', 'superscript', 'subscript', '|', 'forecolor', 'backcolor', '|', + // 'removeformat', '|', 'insertorderedlist', 'insertunorderedlist', '|', 'selectall', 'cleardoc', 'paragraph', '|', + // 'fontfamily', 'fontsize', '|', 'justifyleft', 'justifycenter', 'justifyright', 'justifyjustify', '|', + // 'link', 'unlink', '|', 'emotion', '|', + // '|', 'horizontal', 'print', 'preview', 'fullscreen', 'drafts', 'formula' + // ]], + // 当鼠标放在工具栏上时显示的tooltip提示,留空支持自动多语言配置,否则以配置值为准 + //, + // labelMap:{ + // 'anchor':'', 'undo':'' + // }, + + // 语言配置项,默认是zh-cn。有需要的话也可以使用如下这样的方式来自动多语言切换,当然,前提条件是lang文件夹下存在对应的语言文件: + // lang值也可以通过自动获取 (navigator.language||navigator.browserLanguage ||navigator.userLanguage).toLowerCase() + //, lang:"zh-cn" + //, langPath:URL +"lang/" + + // 主题配置项,默认是default。有需要的话也可以使用如下这样的方式来自动多主题切换,当然,前提条件是themes文件夹下存在对应的主题文件: + // 现有如下皮肤:default + //, theme:'default' + //, themePath:URL +"themes/" + + //, zIndex : 900 //编辑器层级的基数,默认是900 + + // 针对getAllHtml方法,会在对应的head标签中增加该编码设置。 + //, charset:"utf-8" + + // 若实例化编辑器的页面手动修改的domain,此处需要设置为true + //, customDomain:false + + // 常用配置项目 + //, isShow : true //默认显示编辑器 + + //, textarea:'editorValue' // 提交表单时,服务器获取编辑器提交内容的所用的参数,多实例时可以给容器name属性,会将name给定的值最为每个实例的键值,不用每次实例化的时候都设置这个值 + + //, initialContent:'欢迎使用ueditor!' //初始化编辑器的内容,也可以通过textarea/script给值,看官网例子 + + //, autoClearinitialContent:true //是否自动清除编辑器初始内容,注意:如果focus属性设置为true,这个也为真,那么编辑器一上来就会触发导致初始化的内容看不到了 + + //, focus:false //初始化时,是否让编辑器获得焦点true或false + + // 如果自定义,最好给p标签如下的行高,要不输入中文时,会有跳动感 + //, initialStyle:'p{line-height:1em}'//编辑器层级的基数,可以用来改变字体等 + + //, iframeCssUrl: URL + '/themes/iframe.css' //给编辑区域的iframe引入一个css文件 + + // indentValue + // 首行缩进距离,默认是2em + //, indentValue:'2em' + + //, initialFrameWidth:1000 //初始化编辑器宽度,默认1000 + //, initialFrameHeight:320 //初始化编辑器高度,默认320 + + //, readonly : false //编辑器初始化结束后,编辑区域是否是只读的,默认是false + + //, autoClearEmptyNode : true //getContent时,是否删除空的inlineElement节点(包括嵌套的情况) + + // 启用自动保存 + //, enableAutoSave: true + // 自动保存间隔时间, 单位ms + //, saveInterval: 500 + + //, fullscreen : false //是否开启初始化时即全屏,默认关闭 + + //, imagePopup:true //图片操作的浮层开关,默认打开 + + //, autoSyncData:true //自动同步编辑器要提交的数据 + //, emotionLocalization:false //是否开启表情本地化,默认关闭。若要开启请确保emotion文件夹下包含官网提供的images表情文件夹 + + // 粘贴只保留标签,去除标签所有属性 + //, retainOnlyLabelPasted: false + + //, pasteplain:false //是否默认为纯文本粘贴。false为不使用纯文本粘贴,true为使用纯文本粘贴 + // 纯文本粘贴模式下的过滤规则 + // 'filterTxtRules' : function(){ + // function transP(node){ + // node.tagName = 'p'; + // node.setStyle(); + // } + // return { + // //直接删除及其字节点内容 + // '-' : 'script style object iframe embed input select', + // 'p': {$:{}}, + // 'br':{$:{}}, + // 'div':{'$':{}}, + // 'li':{'$':{}}, + // 'caption':transP, + // 'th':transP, + // 'tr':transP, + // 'h1':transP,'h2':transP,'h3':transP,'h4':transP,'h5':transP,'h6':transP, + // 'td':function(node){ + // //没有内容的td直接删掉 + // var txt = !!node.innerText(); + // if(txt){ + // node.parentNode.insertAfter(UE.uNode.createText('    '),node); + // } + // node.parentNode.removeChild(node,node.innerText()) + // } + // } + // }() + + //, allHtmlEnabled:false //提交到后台的数据是否包含整个html字符串 + + // insertorderedlist + // 有序列表的下拉配置,值留空时支持多语言自动识别,若配置值,则以此值为准 + //, 'insertorderedlist':{ + // //自定的样式 + // 'num':'1,2,3...', + // 'num1':'1),2),3)...', + // 'num2':'(1),(2),(3)...', + // 'cn':'一,二,三....', + // 'cn1':'一),二),三)....', + // 'cn2':'(一),(二),(三)....', + // //系统自带 + // 'decimal' : '' , //'1,2,3...' + // 'lower-alpha' : '' , // 'a,b,c...' + // 'lower-roman' : '' , //'i,ii,iii...' + // 'upper-alpha' : '' , lang //'A,B,C' + // 'upper-roman' : '' //'I,II,III...' + // } + + // insertunorderedlist + // 无序列表的下拉配置,值留空时支持多语言自动识别,若配置值,则以此值为准 + //, insertunorderedlist : { //自定的样式 + // 'dash' :'— 破折号', //-破折号 + // 'dot':' 。 小圆圈', //系统自带 + // 'circle' : '', // '○ 小圆圈' + // 'disc' : '', // '● 小圆点' + // 'square' : '' //'■ 小方块' + // } + //, listDefaultPaddingLeft : '30'//默认的左边缩进的基数倍 + //, listiconpath : 'http://bs.baidu.com/listicon/'//自定义标号的路径 + //, maxListLevel : 3 //限制可以tab的级数, 设置-1为不限制 + + //, autoTransWordToList:false //禁止word中粘贴进来的列表自动变成列表标签 + + // fontfamily + // 字体设置 label留空支持多语言自动切换,若配置,则以配置值为准 + 'fontfamily':[ + { label:'',name:'songti',val:'宋体,SimSun'}, + { label:'',name:'kaiti',val:'楷体,楷体_GB2312, SimKai'}, + { label:'',name:'yahei',val:'微软雅黑,Microsoft YaHei'}, + { label:'',name:'heiti',val:'黑体, SimHei'}, + { label:'',name:'lishu',val:'隶书, SimLi'}, + { label:'',name:'andaleMono',val:'andale mono'}, + { label:'',name:'arial',val:'arial, helvetica,sans-serif'}, + { label:'',name:'arialBlack',val:'arial black,avant garde'}, + { label:'',name:'comicSansMs',val:'comic sans ms'}, + { label:'',name:'impact',val:'impact,chicago'}, + { label:'',name:'timesNewRoman',val:'times new roman'} + ], + + // fontsize + // 字号 + 'fontsize':[10, 11, 12, 14, 16, 18, 20, 24, 36], + + // paragraph + // 段落格式 值留空时支持多语言自动识别,若配置,则以配置值为准 + //, 'paragraph':{'p':'', 'h1':'', 'h2':'', 'h3':'', 'h4':'', 'h5':'', 'h6':''} + + // rowspacingtop + // 段间距 值和显示的名字相同 + //, 'rowspacingtop':['5', '10', '15', '20', '25'] + + // rowspacingBottom + // 段间距 值和显示的名字相同 + //, 'rowspacingbottom':['5', '10', '15', '20', '25'] + + // lineheight + // 行内间距 值和显示的名字相同 + //, 'lineheight':['1', '1.5','1.75','2', '3', '4', '5'] + + // customstyle + // 自定义样式,不支持国际化,此处配置值即可最后显示值 + // block的元素是依据设置段落的逻辑设置的,inline的元素依据BIU的逻辑设置 + // 尽量使用一些常用的标签 + // 参数说明 + // tag 使用的标签名字 + // label 显示的名字也是用来标识不同类型的标识符,注意这个值每个要不同, + // style 添加的样式 + // 每一个对象就是一个自定义的样式 + //, 'customstyle':[ + // {tag:'h1', name:'tc', label:'', style:'border-bottom:#ccc 2px solid;padding:0 4px 0 0;text-align:center;margin:0 0 20px 0;'}, + // {tag:'h1', name:'tl',label:'', style:'border-bottom:#ccc 2px solid;padding:0 4px 0 0;margin:0 0 10px 0;'}, + // {tag:'span',name:'im', label:'', style:'font-style:italic;font-weight:bold'}, + // {tag:'span',name:'hi', label:'', style:'font-style:italic;font-weight:bold;color:rgb(51, 153, 204)'} + // ] + + // 打开右键菜单功能 + //, enableContextMenu: true + // 右键菜单的内容,可以参考plugins/contextmenu.js里边的默认菜单的例子,label留空支持国际化,否则以此配置为准 + //, contextMenu:[ + // { + // label:'', //显示的名称 + // cmdName:'selectall',//执行的command命令,当点击这个右键菜单时 + // //exec可选,有了exec就会在点击时执行这个function,优先级高于cmdName + // exec:function () { + // //this是当前编辑器的实例 + // //this.ui._dialogs['inserttableDialog'].open(); + // } + // } + // ] + + // 快捷菜单 + //, shortcutMenu:["fontfamily", "fontsize", "bold", "italic", "underline", "forecolor", "backcolor", "insertorderedlist", "insertunorderedlist"] + + // elementPathEnabled + // 是否启用元素路径,默认是显示 + //, elementPathEnabled : true + + // wordCount + //, wordCount:true //是否开启字数统计 + //, maximumWords:10000 //允许的最大字符数 + // 字数统计提示,{#count}代表当前字数,{#leave}代表还可以输入多少字符数,留空支持多语言自动切换,否则按此配置显示 + //, wordCountMsg:'' //当前已输入 {#count} 个字符,您还可以输入{#leave} 个字符 + // 超出字数限制提示 留空支持多语言自动切换,否则按此配置显示 + //, wordOverFlowMsg:'' //你输入的字符个数已经超出最大允许值,服务器可能会拒绝保存! + + // tab + // 点击tab键时移动的距离,tabSize倍数,tabNode什么字符做为单位 + //, tabSize:4 + //, tabNode:' ' + + // removeFormat + // 清除格式时可以删除的标签和属性 + // removeForamtTags标签 + //, removeFormatTags:'b,big,code,del,dfn,em,font,i,ins,kbd,q,samp,small,span,strike,strong,sub,sup,tt,u,var' + // removeFormatAttributes属性 + //, removeFormatAttributes:'class,style,lang,width,height,align,hspace,valign' + + // undo + // 可以最多回退的次数,默认20 + //, maxUndoCount:20 + // 当输入的字符数超过该值时,保存一次现场 + //, maxInputCount:1 + + // autoHeightEnabled + // 是否自动长高,默认true + //, autoHeightEnabled:true + + // scaleEnabled + // 是否可以拉伸长高,默认true(当开启时,自动长高失效) + //, scaleEnabled:false + //, minFrameWidth:800 //编辑器拖动时最小宽度,默认800 + //, minFrameHeight:220 //编辑器拖动时最小高度,默认220 + + // autoFloatEnabled + // 是否保持toolbar的位置不动,默认true + //, autoFloatEnabled:true + // 浮动时工具栏距离浏览器顶部的高度,用于某些具有固定头部的页面 + //, topOffset:30 + // 编辑器底部距离工具栏高度(如果参数大于等于编辑器高度,则设置无效) + //, toolbarTopOffset:400 + + // 设置远程图片是否抓取到本地保存 + //, catchRemoteImageEnable: true //设置是否抓取远程图片 + + // pageBreakTag + // 分页标识符,默认是_ueditor_page_break_tag_ + //, pageBreakTag:'_ueditor_page_break_tag_' + + // autotypeset + // 自动排版参数 + //, autotypeset: { + // mergeEmptyline: true, //合并空行 + // removeClass: true, //去掉冗余的class + // removeEmptyline: false, //去掉空行 + // textAlign:"left", //段落的排版方式,可以是 left,right,center,justify 去掉这个属性表示不执行排版 + // imageBlockLine: 'center', //图片的浮动方式,独占一行剧中,左右浮动,默认: center,left,right,none 去掉这个属性表示不执行排版 + // pasteFilter: false, //根据规则过滤没事粘贴进来的内容 + // clearFontSize: false, //去掉所有的内嵌字号,使用编辑器默认的字号 + // clearFontFamily: false, //去掉所有的内嵌字体,使用编辑器默认的字体 + // removeEmptyNode: false, // 去掉空节点 + // //可以去掉的标签 + // removeTagNames: {标签名字:1}, + // indent: false, // 行首缩进 + // indentValue : '2em', //行首缩进的大小 + // bdc2sb: false, + // tobdc: false + // } + + // tableDragable + // 表格是否可以拖拽 + //, tableDragable: true + + // sourceEditor + // 源码的查看方式,codemirror 是代码高亮,textarea是文本框,默认是codemirror + // 注意默认codemirror只能在ie8+和非ie中使用 + //, sourceEditor:"codemirror" + // 如果sourceEditor是codemirror,还用配置一下两个参数 + // codeMirrorJsUrl js加载的路径,默认是 URL + "third-party/codemirror/codemirror.js" + //, codeMirrorJsUrl:URL + "third-party/codemirror/codemirror.js" + // codeMirrorCssUrl css加载的路径,默认是 URL + "third-party/codemirror/codemirror.css" + //, codeMirrorCssUrl:URL + "third-party/codemirror/codemirror.css" + // 编辑器初始化完成后是否进入源码模式,默认为否。 + //, sourceEditorFirst:false + + // iframeUrlMap + // dialog内容的路径 ~会被替换成URL,垓属性一旦打开,将覆盖所有的dialog的默认路径 + //, iframeUrlMap:{ + // 'anchor':'~/dialogs/anchor/anchor.html', + // } + + // allowLinkProtocol 允许的链接地址,有这些前缀的链接地址不会自动添加http + //, allowLinkProtocols: ['http:', 'https:', '#', '/', 'ftp:', 'mailto:', 'tel:', 'git:', 'svn:'] + + // webAppKey 百度应用的APIkey,每个站长必须首先去百度官网注册一个key后方能正常使用app功能,注册介绍,http://app.baidu.com/static/cms/getapikey.html + //, webAppKey: "" + + // 默认过滤规则相关配置项目 + //, disabledTableInTable:true //禁止表格嵌套 + //, allowDivTransToP:true //允许进入编辑器的div标签自动变成p标签 + //, rgb2Hex:true //默认产出的数据中的color自动从rgb格式变成16进制格式 + + // xss 过滤是否开启,inserthtml等操作 + xssFilterRules: true, + // input xss过滤 + inputXssFilter: true, + // output xss过滤 + outputXssFilter: true, + // xss过滤白名单 名单来源: https://raw.githubusercontent.com/leizongmin/js-xss/master/lib/default.js + whiteList: { + a: ['target', 'href', 'title', 'class', 'style'], + abbr: ['title', 'class', 'style'], + address: ['class', 'style'], + area: ['shape', 'coords', 'href', 'alt'], + article: [], + aside: [], + audio: ['autoplay', 'controls', 'loop', 'preload', 'src', 'class', 'style'], + b: ['class', 'style'], + bdi: ['dir'], + bdo: ['dir'], + big: [], + blockquote: ['cite', 'class', 'style'], + br: [], + caption: ['class', 'style'], + center: [], + cite: [], + code: ['class', 'style'], + col: ['align', 'valign', 'span', 'width', 'class', 'style'], + colgroup: ['align', 'valign', 'span', 'width', 'class', 'style'], + dd: ['class', 'style'], + del: ['datetime'], + details: ['open'], + div: ['class', 'style'], + dl: ['class', 'style'], + dt: ['class', 'style'], + em: ['class', 'style'], + font: ['color', 'size', 'face'], + footer: [], + h1: ['class', 'style'], + h2: ['class', 'style'], + h3: ['class', 'style'], + h4: ['class', 'style'], + h5: ['class', 'style'], + h6: ['class', 'style'], + header: [], + hr: [], + i: ['class', 'style'], + img: ['src', 'alt', 'title', 'width', 'height', 'id', '_src', 'loadingclass', 'class', 'data-latex'], + ins: ['datetime'], + li: ['class', 'style'], + mark: [], + nav: [], + ol: ['class', 'style'], + p: ['class', 'style'], + pre: ['class', 'style'], + s: [], + section: [], + small: [], + span: ['class', 'style'], + sub: ['class', 'style'], + sup: ['class', 'style'], + strong: ['class', 'style'], + table: ['width', 'border', 'align', 'valign', 'class', 'style'], + tbody: ['align', 'valign', 'class', 'style'], + td: ['width', 'rowspan', 'colspan', 'align', 'valign', 'class', 'style'], + tfoot: ['align', 'valign', 'class', 'style'], + th: ['width', 'rowspan', 'colspan', 'align', 'valign', 'class', 'style'], + thead: ['align', 'valign', 'class', 'style'], + tr: ['rowspan', 'align', 'valign', 'class', 'style'], + tt: [], + u: [], + ul: ['class', 'style'], + video: ['autoplay', 'controls', 'loop', 'preload', 'src', 'height', 'width', 'class', 'style'] + } + }; + + function getUEBasePath (docUrl, confUrl) { + return getBasePath(docUrl || self.document.URL || self.location.href, confUrl || getConfigFilePath()); + } + + function getConfigFilePath () { + var configPath = document.getElementsByTagName('script'); + + return configPath[ configPath.length - 1 ].src; + } + + function getBasePath (docUrl, confUrl) { + var basePath = confUrl; + + if (/^(\/|\\\\)/.test(confUrl)) { + basePath = /^.+?\w(\/|\\\\)/.exec(docUrl)[0] + confUrl.replace(/^(\/|\\\\)/, ''); + } else if (!/^[a-z]+:/i.test(confUrl)) { + docUrl = docUrl.split('#')[0].split('?')[0].replace(/[^\\\/]+$/, ''); + + basePath = docUrl + '' + confUrl; + } + + return optimizationPath(basePath); + } + + function optimizationPath (path) { + let protocol = /^[a-z]+:\/\//.exec(path)[ 0 ], + tmp = null, + res = []; + + path = path.replace(protocol, '').split('?')[0].split('#')[0]; + + path = path.replace(/\\/g, '/').split(/\//); + + path[ path.length - 1 ] = ''; + + while (path.length) { + if ((tmp = path.shift()) === '..') { + res.pop(); + } else if (tmp !== '.') { + res.push(tmp); + } + } + + return protocol + res.join('/'); + } + + window.UE = { + getUEBasePath: getUEBasePath + }; +})(); diff --git a/admin/public/UEditor/ueditor.parse.js b/admin/public/UEditor/ueditor.parse.js new file mode 100644 index 00000000..5e770745 --- /dev/null +++ b/admin/public/UEditor/ueditor.parse.js @@ -0,0 +1,1022 @@ +/*! + * UEditor + * version: ueditor + * build: Wed Dec 26 2018 17:25:05 GMT+0800 (CST) + */ + +(function(){ + +(function(){ + UE = window.UE || {}; + var isIE = !!window.ActiveXObject; + //定义utils工具 + var utils = { + removeLastbs : function(url){ + return url.replace(/\/$/,'') + }, + extend : function(t,s){ + var a = arguments, + notCover = this.isBoolean(a[a.length - 1]) ? a[a.length - 1] : false, + len = this.isBoolean(a[a.length - 1]) ? a.length - 1 : a.length; + for (var i = 1; i < len; i++) { + var x = a[i]; + for (var k in x) { + if (!notCover || !t.hasOwnProperty(k)) { + t[k] = x[k]; + } + } + } + return t; + }, + isIE : isIE, + cssRule : isIE ? function(key,style,doc){ + var indexList,index; + doc = doc || document; + if(doc.indexList){ + indexList = doc.indexList; + }else{ + indexList = doc.indexList = {}; + } + var sheetStyle; + if(!indexList[key]){ + if(style === undefined){ + return '' + } + sheetStyle = doc.createStyleSheet('',index = doc.styleSheets.length); + indexList[key] = index; + }else{ + sheetStyle = doc.styleSheets[indexList[key]]; + } + if(style === undefined){ + return sheetStyle.cssText + } + sheetStyle.cssText = sheetStyle.cssText + '\n' + (style || '') + } : function(key,style,doc){ + doc = doc || document; + var head = doc.getElementsByTagName('head')[0],node; + if(!(node = doc.getElementById(key))){ + if(style === undefined){ + return '' + } + node = doc.createElement('style'); + node.id = key; + head.appendChild(node) + } + if(style === undefined){ + return node.innerHTML + } + if(style !== ''){ + node.innerHTML = node.innerHTML + '\n' + style; + }else{ + head.removeChild(node) + } + }, + domReady : function (onready) { + var doc = window.document; + if (doc.readyState === "complete") { + onready(); + }else{ + if (isIE) { + (function () { + if (doc.isReady) return; + try { + doc.documentElement.doScroll("left"); + } catch (error) { + setTimeout(arguments.callee, 0); + return; + } + onready(); + })(); + window.attachEvent('onload', function(){ + onready() + }); + } else { + doc.addEventListener("DOMContentLoaded", function () { + doc.removeEventListener("DOMContentLoaded", arguments.callee, false); + onready(); + }, false); + window.addEventListener('load', function(){onready()}, false); + } + } + + }, + each : function(obj, iterator, context) { + if (obj == null) return; + if (obj.length === +obj.length) { + for (var i = 0, l = obj.length; i < l; i++) { + if(iterator.call(context, obj[i], i, obj) === false) + return false; + } + } else { + for (var key in obj) { + if (obj.hasOwnProperty(key)) { + if(iterator.call(context, obj[key], key, obj) === false) + return false; + } + } + } + }, + inArray : function(arr,item){ + var index = -1; + this.each(arr,function(v,i){ + if(v === item){ + index = i; + return false; + } + }); + return index; + }, + pushItem : function(arr,item){ + if(this.inArray(arr,item)==-1){ + arr.push(item) + } + }, + trim: function (str) { + return str.replace(/(^[ \t\n\r]+)|([ \t\n\r]+$)/g, ''); + }, + indexOf: function (array, item, start) { + var index = -1; + start = this.isNumber(start) ? start : 0; + this.each(array, function (v, i) { + if (i >= start && v === item) { + index = i; + return false; + } + }); + return index; + }, + hasClass: function (element, className) { + className = className.replace(/(^[ ]+)|([ ]+$)/g, '').replace(/[ ]{2,}/g, ' ').split(' '); + for (var i = 0, ci, cls = element.className; ci = className[i++];) { + if (!new RegExp('\\b' + ci + '\\b', 'i').test(cls)) { + return false; + } + } + return i - 1 == className.length; + }, + addClass:function (elm, classNames) { + if(!elm)return; + classNames = this.trim(classNames).replace(/[ ]{2,}/g,' ').split(' '); + for(var i = 0,ci,cls = elm.className;ci=classNames[i++];){ + if(!new RegExp('\\b' + ci + '\\b').test(cls)){ + cls += ' ' + ci; + } + } + elm.className = utils.trim(cls); + }, + removeClass:function (elm, classNames) { + classNames = this.isArray(classNames) ? classNames : + this.trim(classNames).replace(/[ ]{2,}/g,' ').split(' '); + for(var i = 0,ci,cls = elm.className;ci=classNames[i++];){ + cls = cls.replace(new RegExp('\\b' + ci + '\\b'),'') + } + cls = this.trim(cls).replace(/[ ]{2,}/g,' '); + elm.className = cls; + !cls && elm.removeAttribute('className'); + }, + on: function (element, type, handler) { + var types = this.isArray(type) ? type : type.split(/\s+/), + k = types.length; + if (k) while (k--) { + type = types[k]; + if (element.addEventListener) { + element.addEventListener(type, handler, false); + } else { + if (!handler._d) { + handler._d = { + els : [] + }; + } + var key = type + handler.toString(),index = utils.indexOf(handler._d.els,element); + if (!handler._d[key] || index == -1) { + if(index == -1){ + handler._d.els.push(element); + } + if(!handler._d[key]){ + handler._d[key] = function (evt) { + return handler.call(evt.srcElement, evt || window.event); + }; + } + + + element.attachEvent('on' + type, handler._d[key]); + } + } + } + element = null; + }, + off: function (element, type, handler) { + var types = this.isArray(type) ? type : type.split(/\s+/), + k = types.length; + if (k) while (k--) { + type = types[k]; + if (element.removeEventListener) { + element.removeEventListener(type, handler, false); + } else { + var key = type + handler.toString(); + try{ + element.detachEvent('on' + type, handler._d ? handler._d[key] : handler); + }catch(e){} + if (handler._d && handler._d[key]) { + var index = utils.indexOf(handler._d.els,element); + if(index!=-1){ + handler._d.els.splice(index,1); + } + handler._d.els.length == 0 && delete handler._d[key]; + } + } + } + }, + loadFile : function () { + var tmpList = []; + function getItem(doc,obj){ + try{ + for(var i= 0,ci;ci=tmpList[i++];){ + if(ci.doc === doc && ci.url == (obj.src || obj.href)){ + return ci; + } + } + }catch(e){ + return null; + } + + } + return function (doc, obj, fn) { + var item = getItem(doc,obj); + if (item) { + if(item.ready){ + fn && fn(); + }else{ + item.funs.push(fn) + } + return; + } + tmpList.push({ + doc:doc, + url:obj.src||obj.href, + funs:[fn] + }); + if (!doc.body) { + var html = []; + for(var p in obj){ + if(p == 'tag')continue; + html.push(p + '="' + obj[p] + '"') + } + doc.write('<' + obj.tag + ' ' + html.join(' ') + ' >'); + return; + } + if (obj.id && doc.getElementById(obj.id)) { + return; + } + var element = doc.createElement(obj.tag); + delete obj.tag; + for (var p in obj) { + element.setAttribute(p, obj[p]); + } + element.onload = element.onreadystatechange = function () { + if (!this.readyState || /loaded|complete/.test(this.readyState)) { + item = getItem(doc,obj); + if (item.funs.length > 0) { + item.ready = 1; + for (var fi; fi = item.funs.pop();) { + fi(); + } + } + element.onload = element.onreadystatechange = null; + } + }; + element.onerror = function(){ + throw Error('The load '+(obj.href||obj.src)+' fails,check the url') + }; + doc.getElementsByTagName("head")[0].appendChild(element); + } + }() + }; + utils.each(['String', 'Function', 'Array', 'Number', 'RegExp', 'Object','Boolean'], function (v) { + utils['is' + v] = function (obj) { + return Object.prototype.toString.apply(obj) == '[object ' + v + ']'; + } + }); + var parselist = {}; + UE.parse = { + register : function(parseName,fn){ + parselist[parseName] = fn; + }, + load : function(opt){ + utils.each(parselist,function(v){ + v.call(opt,utils); + }) + } + }; + uParse = function(selector,opt){ + utils.domReady(function(){ + var contents; + if(document.querySelectorAll){ + contents = document.querySelectorAll(selector) + }else{ + if(/^#/.test(selector)){ + contents = [document.getElementById(selector.replace(/^#/,''))] + }else if(/^\./.test(selector)){ + var contents = []; + utils.each(document.getElementsByTagName('*'),function(node){ + if(node.className && new RegExp('\\b' + selector.replace(/^\./,'') + '\\b','i').test(node.className)){ + contents.push(node) + } + }) + }else{ + contents = document.getElementsByTagName(selector) + } + } + utils.each(contents,function(v){ + UE.parse.load(utils.extend({root:v,selector:selector},opt)) + }) + }) + } +})(); + +UE.parse.register('insertcode',function(utils){ + var pres = this.root.getElementsByTagName('pre'); + if(pres.length){ + if(typeof XRegExp == "undefined"){ + var jsurl,cssurl; + if(this.rootPath !== undefined){ + jsurl = utils.removeLastbs(this.rootPath) + '/third-party/SyntaxHighlighter/shCore.js'; + cssurl = utils.removeLastbs(this.rootPath) + '/third-party/SyntaxHighlighter/shCoreDefault.css'; + }else{ + jsurl = this.highlightJsUrl; + cssurl = this.highlightCssUrl; + } + utils.loadFile(document,{ + id : "syntaxhighlighter_css", + tag : "link", + rel : "stylesheet", + type : "text/css", + href : cssurl + }); + utils.loadFile(document,{ + id : "syntaxhighlighter_js", + src : jsurl, + tag : "script", + type : "text/javascript", + defer : "defer" + },function(){ + utils.each(pres,function(pi){ + if(pi && /brush/i.test(pi.className)){ + SyntaxHighlighter.highlight(pi); + } + }); + }); + }else{ + utils.each(pres,function(pi){ + if(pi && /brush/i.test(pi.className)){ + SyntaxHighlighter.highlight(pi); + } + }); + } + } + +}); +UE.parse.register('table', function (utils) { + var me = this, + root = this.root, + tables = root.getElementsByTagName('table'); + if (tables.length) { + var selector = this.selector; + //追加默认的表格样式 + utils.cssRule('table', + selector + ' table.noBorderTable td,' + + selector + ' table.noBorderTable th,' + + selector + ' table.noBorderTable caption{border:1px dashed #ddd !important}' + + selector + ' table.sortEnabled tr.firstRow th,' + selector + ' table.sortEnabled tr.firstRow td{padding-right:20px; background-repeat: no-repeat;' + + 'background-position: center right; background-image:url(' + this.rootPath + 'themes/default/images/sortable.png);}' + + selector + ' table.sortEnabled tr.firstRow th:hover,' + selector + ' table.sortEnabled tr.firstRow td:hover{background-color: #EEE;}' + + selector + ' table{margin-bottom:10px;border-collapse:collapse;display:table;}' + + selector + ' td,' + selector + ' th{ background:white; padding: 5px 10px;border: 1px solid #DDD;}' + + selector + ' caption{border:1px dashed #DDD;border-bottom:0;padding:3px;text-align:center;}' + + selector + ' th{border-top:1px solid #BBB;background:#F7F7F7;}' + + selector + ' table tr.firstRow th{border-top:2px solid #BBB;background:#F7F7F7;}' + + selector + ' tr.ue-table-interlace-color-single td{ background: #fcfcfc; }' + + selector + ' tr.ue-table-interlace-color-double td{ background: #f7faff; }' + + selector + ' td p{margin:0;padding:0;}', + document); + //填充空的单元格 + + utils.each('td th caption'.split(' '), function (tag) { + var cells = root.getElementsByTagName(tag); + cells.length && utils.each(cells, function (node) { + if (!node.firstChild) { + node.innerHTML = ' '; + + } + }) + }); + + //表格可排序 + var tables = root.getElementsByTagName('table'); + utils.each(tables, function (table) { + if (/\bsortEnabled\b/.test(table.className)) { + utils.on(table, 'click', function(e){ + var target = e.target || e.srcElement, + cell = findParentByTagName(target, ['td', 'th']); + var table = findParentByTagName(target, 'table'), + colIndex = utils.indexOf(table.rows[0].cells, cell), + sortType = table.getAttribute('data-sort-type'); + if(colIndex != -1) { + sortTable(table, colIndex, me.tableSortCompareFn || sortType); + updateTable(table); + } + }); + } + }); + + //按照标签名查找父节点 + function findParentByTagName(target, tagNames) { + var i, current = target; + tagNames = utils.isArray(tagNames) ? tagNames:[tagNames]; + while(current){ + for(i = 0;i < tagNames.length; i++) { + if(current.tagName == tagNames[i].toUpperCase()) return current; + } + current = current.parentNode; + } + return null; + } + //表格排序 + function sortTable(table, sortByCellIndex, compareFn) { + var rows = table.rows, + trArray = [], + flag = rows[0].cells[0].tagName === "TH", + lastRowIndex = 0; + + for (var i = 0,len = rows.length; i < len; i++) { + trArray[i] = rows[i]; + } + + var Fn = { + 'reversecurrent': function(td1,td2){ + return 1; + }, + 'orderbyasc': function(td1,td2){ + var value1 = td1.innerText||td1.textContent, + value2 = td2.innerText||td2.textContent; + return value1.localeCompare(value2); + }, + 'reversebyasc': function(td1,td2){ + var value1 = td1.innerHTML, + value2 = td2.innerHTML; + return value2.localeCompare(value1); + }, + 'orderbynum': function(td1,td2){ + var value1 = td1[utils.isIE ? 'innerText':'textContent'].match(/\d+/), + value2 = td2[utils.isIE ? 'innerText':'textContent'].match(/\d+/); + if(value1) value1 = +value1[0]; + if(value2) value2 = +value2[0]; + return (value1||0) - (value2||0); + }, + 'reversebynum': function(td1,td2){ + var value1 = td1[utils.isIE ? 'innerText':'textContent'].match(/\d+/), + value2 = td2[utils.isIE ? 'innerText':'textContent'].match(/\d+/); + if(value1) value1 = +value1[0]; + if(value2) value2 = +value2[0]; + return (value2||0) - (value1||0); + } + }; + + //对表格设置排序的标记data-sort-type + table.setAttribute('data-sort-type', compareFn && typeof compareFn === "string" && Fn[compareFn] ? compareFn:''); + + //th不参与排序 + flag && trArray.splice(0, 1); + trArray = sort(trArray,function (tr1, tr2) { + var result; + if (compareFn && typeof compareFn === "function") { + result = compareFn.call(this, tr1.cells[sortByCellIndex], tr2.cells[sortByCellIndex]); + } else if (compareFn && typeof compareFn === "number") { + result = 1; + } else if (compareFn && typeof compareFn === "string" && Fn[compareFn]) { + result = Fn[compareFn].call(this, tr1.cells[sortByCellIndex], tr2.cells[sortByCellIndex]); + } else { + result = Fn['orderbyasc'].call(this, tr1.cells[sortByCellIndex], tr2.cells[sortByCellIndex]); + } + return result; + }); + var fragment = table.ownerDocument.createDocumentFragment(); + for (var j = 0, len = trArray.length; j < len; j++) { + fragment.appendChild(trArray[j]); + } + var tbody = table.getElementsByTagName("tbody")[0]; + if(!lastRowIndex){ + tbody.appendChild(fragment); + }else{ + tbody.insertBefore(fragment,rows[lastRowIndex- range.endRowIndex + range.beginRowIndex - 1]) + } + } + //冒泡排序 + function sort(array, compareFn){ + compareFn = compareFn || function(item1, item2){ return item1.localeCompare(item2);}; + for(var i= 0,len = array.length; i 0){ + var t = array[i]; + array[i] = array[j]; + array[j] = t; + } + } + } + return array; + } + //更新表格 + function updateTable(table) { + //给第一行设置firstRow的样式名称,在排序图标的样式上使用到 + if(!utils.hasClass(table.rows[0], "firstRow")) { + for(var i = 1; i< table.rows.length; i++) { + utils.removeClass(table.rows[i], "firstRow"); + } + utils.addClass(table.rows[0], "firstRow"); + } + } + } +}); +UE.parse.register('charts',function( utils ){ + + utils.cssRule('chartsContainerHeight','.edui-chart-container { height:'+(this.chartContainerHeight||300)+'px}'); + var resourceRoot = this.rootPath, + containers = this.root, + sources = null; + + //不存在指定的根路径, 则直接退出 + if ( !resourceRoot ) { + return; + } + + if ( sources = parseSources() ) { + + loadResources(); + + } + + + function parseSources () { + + if ( !containers ) { + return null; + } + + return extractChartData( containers ); + + } + + /** + * 提取数据 + */ + function extractChartData ( rootNode ) { + + var data = [], + tables = rootNode.getElementsByTagName( "table" ); + + for ( var i = 0, tableNode; tableNode = tables[ i ]; i++ ) { + + if ( tableNode.getAttribute( "data-chart" ) !== null ) { + + data.push( formatData( tableNode ) ); + + } + + } + + return data.length ? data : null; + + } + + function formatData ( tableNode ) { + + var meta = tableNode.getAttribute( "data-chart" ), + metaConfig = {}, + data = []; + + //提取table数据 + for ( var i = 0, row; row = tableNode.rows[ i ]; i++ ) { + + var rowData = []; + + for ( var j = 0, cell; cell = row.cells[ j ]; j++ ) { + + var value = ( cell.innerText || cell.textContent || '' ); + rowData.push( cell.tagName == 'TH' ? value:(value | 0) ); + + } + + data.push( rowData ); + + } + + //解析元信息 + meta = meta.split( ";" ); + for ( var i = 0, metaData; metaData = meta[ i ]; i++ ) { + + metaData = metaData.split( ":" ); + metaConfig[ metaData[ 0 ] ] = metaData[ 1 ]; + + } + + + return { + table: tableNode, + meta: metaConfig, + data: data + }; + + } + + //加载资源 + function loadResources () { + + loadJQuery(); + + } + + function loadJQuery () { + + //不存在jquery, 则加载jquery + if ( !window.jQuery ) { + + utils.loadFile(document,{ + src : resourceRoot + "/third-party/jquery-1.10.2.min.js", + tag : "script", + type : "text/javascript", + defer : "defer" + },function(){ + + loadHighcharts(); + + }); + + } else { + + loadHighcharts(); + + } + + } + + function loadHighcharts () { + + //不存在Highcharts, 则加载Highcharts + if ( !window.Highcharts ) { + + utils.loadFile(document,{ + src : resourceRoot + "/third-party/highcharts/highcharts.js", + tag : "script", + type : "text/javascript", + defer : "defer" + },function(){ + + loadTypeConfig(); + + }); + + } else { + + loadTypeConfig(); + + } + + } + + //加载图表差异化配置文件 + function loadTypeConfig () { + + utils.loadFile(document,{ + src : resourceRoot + "/dialogs/charts/chart.config.js", + tag : "script", + type : "text/javascript", + defer : "defer" + },function(){ + + render(); + + }); + + } + + //渲染图表 + function render () { + + var config = null, + chartConfig = null, + container = null; + + for ( var i = 0, len = sources.length; i < len; i++ ) { + + config = sources[ i ]; + + chartConfig = analysisConfig( config ); + + container = createContainer( config.table ); + + renderChart( container, typeConfig[ config.meta.chartType ], chartConfig ); + + } + + + } + + /** + * 渲染图表 + * @param container 图表容器节点对象 + * @param typeConfig 图表类型配置 + * @param config 图表通用配置 + * */ + function renderChart ( container, typeConfig, config ) { + + + $( container ).highcharts( $.extend( {}, typeConfig, { + + credits: { + enabled: false + }, + exporting: { + enabled: false + }, + title: { + text: config.title, + x: -20 //center + }, + subtitle: { + text: config.subTitle, + x: -20 + }, + xAxis: { + title: { + text: config.xTitle + }, + categories: config.categories + }, + yAxis: { + title: { + text: config.yTitle + }, + plotLines: [{ + value: 0, + width: 1, + color: '#808080' + }] + }, + tooltip: { + enabled: true, + valueSuffix: config.suffix + }, + legend: { + layout: 'vertical', + align: 'right', + verticalAlign: 'middle', + borderWidth: 1 + }, + series: config.series + + } )); + + } + + /** + * 创建图表的容器 + * 新创建的容器会替换掉对应的table对象 + * */ + function createContainer ( tableNode ) { + + var container = document.createElement( "div" ); + container.className = "edui-chart-container"; + + tableNode.parentNode.replaceChild( container, tableNode ); + + return container; + + } + + //根据config解析出正确的类别和图表数据信息 + function analysisConfig ( config ) { + + var series = [], + //数据类别 + categories = [], + result = [], + data = config.data, + meta = config.meta; + + //数据对齐方式为相反的方式, 需要反转数据 + if ( meta.dataFormat != "1" ) { + + for ( var i = 0, len = data.length; i < len ; i++ ) { + + for ( var j = 0, jlen = data[ i ].length; j < jlen; j++ ) { + + if ( !result[ j ] ) { + result[ j ] = []; + } + + result[ j ][ i ] = data[ i ][ j ]; + + } + + } + + data = result; + + } + + result = {}; + + //普通图表 + if ( meta.chartType != typeConfig.length - 1 ) { + + categories = data[ 0 ].slice( 1 ); + + for ( var i = 1, curData; curData = data[ i ]; i++ ) { + series.push( { + name: curData[ 0 ], + data: curData.slice( 1 ) + } ); + } + + result.series = series; + result.categories = categories; + result.title = meta.title; + result.subTitle = meta.subTitle; + result.xTitle = meta.xTitle; + result.yTitle = meta.yTitle; + result.suffix = meta.suffix; + + } else { + + var curData = []; + + for ( var i = 1, len = data[ 0 ].length; i < len; i++ ) { + + curData.push( [ data[ 0 ][ i ], data[ 1 ][ i ] | 0 ] ); + + } + + //饼图 + series[ 0 ] = { + type: 'pie', + name: meta.tip, + data: curData + }; + + result.series = series; + result.title = meta.title; + result.suffix = meta.suffix; + + } + + return result; + + } + +}); +UE.parse.register('background', function (utils) { + var me = this, + root = me.root, + p = root.getElementsByTagName('p'), + styles; + + for (var i = 0,ci; ci = p[i++];) { + styles = ci.getAttribute('data-background'); + if (styles){ + ci.parentNode.removeChild(ci); + } + } + + //追加默认的表格样式 + styles && utils.cssRule('ueditor_background', me.selector + '{' + styles + '}', document); +}); +UE.parse.register('list',function(utils){ + var customCss = [], + customStyle = { + 'cn' : 'cn-1-', + 'cn1' : 'cn-2-', + 'cn2' : 'cn-3-', + 'num' : 'num-1-', + 'num1' : 'num-2-', + 'num2' : 'num-3-', + 'dash' : 'dash', + 'dot' : 'dot' + }; + + + utils.extend(this,{ + liiconpath : 'http://bs.baidu.com/listicon/', + listDefaultPaddingLeft : '20' + }); + + var root = this.root, + ols = root.getElementsByTagName('ol'), + uls = root.getElementsByTagName('ul'), + selector = this.selector; + + if(ols.length){ + applyStyle.call(this,ols); + } + + if(uls.length){ + applyStyle.call(this,uls); + } + + if(ols.length || uls.length){ + customCss.push(selector +' .list-paddingleft-1{padding-left:0}'); + customCss.push(selector +' .list-paddingleft-2{padding-left:'+ this.listDefaultPaddingLeft+'px}'); + customCss.push(selector +' .list-paddingleft-3{padding-left:'+ this.listDefaultPaddingLeft*2+'px}'); + + utils.cssRule('list', selector +' ol,'+selector +' ul{margin:0;padding:0;}li{clear:both;}'+customCss.join('\n'), document); + } + function applyStyle(nodes){ + var T = this; + utils.each(nodes,function(list){ + if(list.className && /custom_/i.test(list.className)){ + var listStyle = list.className.match(/custom_(\w+)/)[1]; + if(listStyle == 'dash' || listStyle == 'dot'){ + utils.pushItem(customCss,selector +' li.list-' + customStyle[listStyle] + '{background-image:url(' + T.liiconpath +customStyle[listStyle]+'.gif)}'); + utils.pushItem(customCss,selector +' ul.custom_'+listStyle+'{list-style:none;} '+ selector +' ul.custom_'+listStyle+' li{background-position:0 3px;background-repeat:no-repeat}'); + + }else{ + var index = 1; + utils.each(list.childNodes,function(li){ + if(li.tagName == 'LI'){ + utils.pushItem(customCss,selector + ' li.list-' + customStyle[listStyle] + index + '{background-image:url(' + T.liiconpath + 'list-'+customStyle[listStyle] +index + '.gif)}'); + index++; + } + }); + utils.pushItem(customCss,selector + ' ol.custom_'+listStyle+'{list-style:none;}'+selector+' ol.custom_'+listStyle+' li{background-position:0 3px;background-repeat:no-repeat}'); + } + switch(listStyle){ + case 'cn': + utils.pushItem(customCss,selector + ' li.list-'+listStyle+'-paddingleft-1{padding-left:25px}'); + utils.pushItem(customCss,selector + ' li.list-'+listStyle+'-paddingleft-2{padding-left:40px}'); + utils.pushItem(customCss,selector + ' li.list-'+listStyle+'-paddingleft-3{padding-left:55px}'); + break; + case 'cn1': + utils.pushItem(customCss,selector + ' li.list-'+listStyle+'-paddingleft-1{padding-left:30px}'); + utils.pushItem(customCss,selector + ' li.list-'+listStyle+'-paddingleft-2{padding-left:40px}'); + utils.pushItem(customCss,selector + ' li.list-'+listStyle+'-paddingleft-3{padding-left:55px}'); + break; + case 'cn2': + utils.pushItem(customCss,selector + ' li.list-'+listStyle+'-paddingleft-1{padding-left:40px}'); + utils.pushItem(customCss,selector + ' li.list-'+listStyle+'-paddingleft-2{padding-left:55px}'); + utils.pushItem(customCss,selector + ' li.list-'+listStyle+'-paddingleft-3{padding-left:68px}'); + break; + case 'num': + case 'num1': + utils.pushItem(customCss,selector + ' li.list-'+listStyle+'-paddingleft-1{padding-left:25px}'); + break; + case 'num2': + utils.pushItem(customCss,selector + ' li.list-'+listStyle+'-paddingleft-1{padding-left:35px}'); + utils.pushItem(customCss,selector + ' li.list-'+listStyle+'-paddingleft-2{padding-left:40px}'); + break; + case 'dash': + utils.pushItem(customCss,selector + ' li.list-'+listStyle+'-paddingleft{padding-left:35px}'); + break; + case 'dot': + utils.pushItem(customCss,selector + ' li.list-'+listStyle+'-paddingleft{padding-left:20px}'); + } + } + }); + } + + +}); +UE.parse.register('vedio',function(utils){ + var video = this.root.getElementsByTagName('video'), + audio = this.root.getElementsByTagName('audio'); + + document.createElement('video');document.createElement('audio'); + if(video.length || audio.length){ + var sourcePath = utils.removeLastbs(this.rootPath), + jsurl = sourcePath + '/third-party/video-js/video.js', + cssurl = sourcePath + '/third-party/video-js/video-js.min.css', + swfUrl = sourcePath + '/third-party/video-js/video-js.swf'; + + if(window.videojs) { + videojs.autoSetup(); + } else { + utils.loadFile(document,{ + id : "video_css", + tag : "link", + rel : "stylesheet", + type : "text/css", + href : cssurl + }); + utils.loadFile(document,{ + id : "video_js", + src : jsurl, + tag : "script", + type : "text/javascript" + },function(){ + videojs.options.flash.swf = swfUrl; + videojs.autoSetup(); + }); + } + + } +}); + +})(); diff --git a/admin/public/UEditor/ueditor.parse.min.js b/admin/public/UEditor/ueditor.parse.min.js new file mode 100644 index 00000000..d996fd0c --- /dev/null +++ b/admin/public/UEditor/ueditor.parse.min.js @@ -0,0 +1,7 @@ +/*! + * UEditor + * version: ueditor + * build: Wed Dec 26 2018 17:25:07 GMT+0800 (CST) + */ + +!function(){!function(){UE=window.UE||{};var a=!!window.ActiveXObject,b={removeLastbs:function(a){return a.replace(/\/$/,"")},extend:function(a,b){for(var c=arguments,d=!!this.isBoolean(c[c.length-1])&&c[c.length-1],e=this.isBoolean(c[c.length-1])?c.length-1:c.length,f=1;f=c&&a===b)return d=e,!1}),d},hasClass:function(a,b){b=b.replace(/(^[ ]+)|([ ]+$)/g,"").replace(/[ ]{2,}/g," ").split(" ");for(var c,d=0,e=a.className;c=b[d++];)if(!new RegExp("\\b"+c+"\\b","i").test(e))return!1;return d-1==b.length},addClass:function(a,c){if(a){c=this.trim(c).replace(/[ ]{2,}/g," ").split(" ");for(var d,e=0,f=a.className;d=c[e++];)new RegExp("\\b"+d+"\\b").test(f)||(f+=" "+d);a.className=b.trim(f)}},removeClass:function(a,b){b=this.isArray(b)?b:this.trim(b).replace(/[ ]{2,}/g," ").split(" ");for(var c,d=0,e=a.className;c=b[d++];)e=e.replace(new RegExp("\\b"+c+"\\b"),"");e=this.trim(e).replace(/[ ]{2,}/g," "),a.className=e,!e&&a.removeAttribute("className")},on:function(a,c,d){var e=this.isArray(c)?c:c.split(/\s+/),f=e.length;if(f)for(;f--;)if(c=e[f],a.addEventListener)a.addEventListener(c,d,!1);else{d._d||(d._d={els:[]});var g=c+d.toString(),h=b.indexOf(d._d.els,a);d._d[g]&&h!=-1||(h==-1&&d._d.els.push(a),d._d[g]||(d._d[g]=function(a){return d.call(a.srcElement,a||window.event)}),a.attachEvent("on"+c,d._d[g]))}a=null},off:function(a,c,d){var e=this.isArray(c)?c:c.split(/\s+/),f=e.length;if(f)for(;f--;)if(c=e[f],a.removeEventListener)a.removeEventListener(c,d,!1);else{var g=c+d.toString();try{a.detachEvent("on"+c,d._d?d._d[g]:d)}catch(h){}if(d._d&&d._d[g]){var i=b.indexOf(d._d.els,a);i!=-1&&d._d.els.splice(i,1),0==d._d.els.length&&delete d._d[g]}}},loadFile:function(){function a(a,c){try{for(var d,e=0;d=b[e++];)if(d.doc===a&&d.url==(c.src||c.href))return d}catch(f){return null}}var b=[];return function(c,d,e){var f=a(c,d);if(f)return void(f.ready?e&&e():f.funs.push(e));if(b.push({doc:c,url:d.src||d.href,funs:[e]}),!c.body){var g=[];for(var h in d)"tag"!=h&&g.push(h+'="'+d[h]+'"');return void c.write("<"+d.tag+" "+g.join(" ")+" >")}if(!d.id||!c.getElementById(d.id)){var i=c.createElement(d.tag);delete d.tag;for(var h in d)i.setAttribute(h,d[h]);i.onload=i.onreadystatechange=function(){if(!this.readyState||/loaded|complete/.test(this.readyState)){if(f=a(c,d),f.funs.length>0){f.ready=1;for(var b;b=f.funs.pop();)b()}i.onload=i.onreadystatechange=null}},i.onerror=function(){throw Error("The load "+(d.href||d.src)+" fails,check the url")},c.getElementsByTagName("head")[0].appendChild(i)}}}()};b.each(["String","Function","Array","Number","RegExp","Object","Boolean"],function(a){b["is"+a]=function(b){return Object.prototype.toString.apply(b)=="[object "+a+"]"}});var c={};UE.parse={register:function(a,b){c[a]=b},load:function(a){b.each(c,function(c){c.call(a,b)})}},uParse=function(a,c){b.domReady(function(){var d;if(document.querySelectorAll)d=document.querySelectorAll(a);else if(/^#/.test(a))d=[document.getElementById(a.replace(/^#/,""))];else if(/^\./.test(a)){var d=[];b.each(document.getElementsByTagName("*"),function(b){b.className&&new RegExp("\\b"+a.replace(/^\./,"")+"\\b","i").test(b.className)&&d.push(b)})}else d=document.getElementsByTagName(a);b.each(d,function(d){UE.parse.load(b.extend({root:d,selector:a},c))})})}}(),UE.parse.register("insertcode",function(a){var b=this.root.getElementsByTagName("pre");if(b.length)if("undefined"==typeof XRegExp){var c,d;void 0!==this.rootPath?(c=a.removeLastbs(this.rootPath)+"/third-party/SyntaxHighlighter/shCore.js",d=a.removeLastbs(this.rootPath)+"/third-party/SyntaxHighlighter/shCoreDefault.css"):(c=this.highlightJsUrl,d=this.highlightCssUrl),a.loadFile(document,{id:"syntaxhighlighter_css",tag:"link",rel:"stylesheet",type:"text/css",href:d}),a.loadFile(document,{id:"syntaxhighlighter_js",src:c,tag:"script",type:"text/javascript",defer:"defer"},function(){a.each(b,function(a){a&&/brush/i.test(a.className)&&SyntaxHighlighter.highlight(a)})})}else a.each(b,function(a){a&&/brush/i.test(a.className)&&SyntaxHighlighter.highlight(a)})}),UE.parse.register("table",function(a){function b(b,c){var d,e=b;for(c=a.isArray(c)?c:[c];e;){for(d=0;d0){var g=a[c];a[c]=a[e],a[e]=g}return a}function e(b){if(!a.hasClass(b.rows[0],"firstRow")){for(var c=1;cN#4YIW(H- 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 X;@D+E7Ad=S_FbjlW&KY_+xPzm3MBT? literal 0 HcmV?d00001 diff --git a/admin/public/index.html b/admin/public/index.html new file mode 100644 index 00000000..eab1147d --- /dev/null +++ b/admin/public/index.html @@ -0,0 +1,20 @@ + + + + + + + + + <%= webpackConfig.name %> + + +
    + +
    +
    +
    +
    +
    + + diff --git a/admin/public/preview.html b/admin/public/preview.html new file mode 100644 index 00000000..8e43983c --- /dev/null +++ b/admin/public/preview.html @@ -0,0 +1,38 @@ + + + + + + + + form-generator-preview + + + + + + + + + +
    + + \ No newline at end of file diff --git a/admin/src/App.vue b/admin/src/App.vue new file mode 100644 index 00000000..ec9032c1 --- /dev/null +++ b/admin/src/App.vue @@ -0,0 +1,11 @@ + + + diff --git a/admin/src/api/article.js b/admin/src/api/article.js new file mode 100644 index 00000000..4bd370bf --- /dev/null +++ b/admin/src/api/article.js @@ -0,0 +1,123 @@ +import request from '@/utils/request' + +/** + * 绑定产品 + * @param pram + */ +export function bindProduct(pram) { + const data = { + id: pram.id, + productId: pram.productId + } + return request({ + url: '/admin/article/bind/product', + method: 'POST', + params: data + }) +} + +/** + * 删除文章 + * @param id + * @constructor + */ +export function DelArticle(pram) { + const data = { + id: pram.id + } + return request({ + url: '/admin/article/delete', + method: 'GET', + params: data + }) +} + +/** + * 文章详情 + * @param id + * @constructor + */ +export function InfoArticle(id) { + const data = { + id: id + } + return request({ + url: '/admin/article/info', + method: 'get', + params: data + }) +} + +/** + * 文章列表 + * @param pram + * @constructor + */ +export function ListArticle(pram) { + const data = { + keywords: pram.keywords, + cid: pram.cid, + page: pram.page, + limit: pram.limit + } + return request({ + url: '/admin/article/list', + method: 'GET', + params: data + }) +} + +/** + * 新增文章 + * @param pram + * @constructor + */ +export function AddArticle(pram) { + const data = { + author: pram.author, + cid: pram.cid, + content: pram.content, + imageInput: pram.imageInput, + isBanner: pram.isBanner, + isHot: pram.isHot, + shareSynopsis: pram.shareSynopsis, + shareTitle: pram.shareTitle, + sort: pram.sort, + synopsis: pram.synopsis, + title: pram.title, + url: pram.url + } + return request({ + url: '/admin/article/save', + method: 'post', + params: data + }) +} + +/** + * 更新文章 + * @param pram + * @constructor + */ +export function UpdateArticle(pram) { + const data = { + id: pram.id, + author: pram.author, + cid: pram.cid, + content: pram.content, + imageInput: pram.imageInput, + isBanner: pram.isBanner, + isHot: pram.isHot, + shareSynopsis: pram.shareSynopsis, + shareTitle: pram.shareTitle, + sort: pram.sort, + synopsis: pram.synopsis, + title: pram.title, + url: pram.url + } + return request({ + url: '/admin/article/update', + method: 'post', + params: data + }) +} diff --git a/admin/src/api/categoryApi.js b/admin/src/api/categoryApi.js new file mode 100644 index 00000000..ea714470 --- /dev/null +++ b/admin/src/api/categoryApi.js @@ -0,0 +1,126 @@ +import request from '@/utils/request' + +/** + * 新增分类 + * @param pram + */ +export function addCategroy(pram) { + const data = { + extra: pram.extra, + name: pram.name, + pid: pram.pid, + sort: pram.sort, + status: pram.status, + type: pram.type, + url: pram.url + } + return request({ + url: '/admin/category/save', + method: 'POST', + params: data + }) +} + +/** + * 分类详情 + * @param pram + */ +export function infoCategroy(pram) { + const data = { + id: pram.id + } + return request({ + url: '/admin/category/info', + method: 'GET', + params: data + }) +} + +/** + * 删除分类 + * @param pram + */ +export function deleteCategroy(pram) { + const data = { + id: pram.id + } + return request({ + url: '/admin/category/delete', + method: 'GET', + params: data + }) +} + +/** + * 分类列表 + * @param pram + */ +export function listCategroy(pram) { + const data = { + limit: pram.limit, + name: pram.name, + page: pram.page, + pid: pram.pid, + status: pram.status, + type: pram.type + + } + return request({ + url: '/admin/category/list', + method: 'GET', + params: data + }) +} + +/** + * 分类数据tree数据 + * @param pram + */ +export function treeCategroy(pram) { + const data = { + type: pram.type, + status: pram.status + } + return request({ + url: '/admin/category/list/tree', + method: 'GET', + params: data + }) +} + +/** + * 更新分类 + * @param pram + */ +export function updateCategroy(pram) { + const data = { + extra: pram.extra, + name: pram.name, + pid: pram.pid, + sort: pram.sort, + status: pram.status, + type: pram.type, + url: pram.url, + id: pram.id + } + return request({ + url: '/admin/category/update', + method: 'POST', + params: data + }) +} + +/** + * 根据id集合查询对应分类列表 + * @param pram + */ +export function categroyByIds(pram) { + const data = { + ids: pram.ids + } + return request({ + url: '/admin/category/list/ids', + method: 'GET', + params: data + }) +} diff --git a/admin/src/api/configApi.js b/admin/src/api/configApi.js new file mode 100644 index 00000000..d64413be --- /dev/null +++ b/admin/src/api/configApi.js @@ -0,0 +1,101 @@ +import request from '@/utils/request' + +// 配置管理 + +export function configDelete(pram) { + const data = { + id: pram.id + } + return request({ + url: 'admin/system/config/delete', + method: 'GET', + params: data + }) +} + +export function configInfo(pram) { + const data = { + id: pram.id + } + return request({ + url: 'admin/system/config/info', + method: 'GET', + params: data + }) +} +export function configList(pram) { + const data = { + id: pram.id, + configTabId: pram.configTabId, + desc: pram.desc, + high: pram.high, + info: pram.info, + inputType: pram.inputType, + menuName: pram.menuName, + parameter: pram.parameter, + required: pram.required, + sort: pram.sort, + status: pram.status, + type: pram.type, + updateType: pram.updateType, + value: pram.value, + width: pram.width, + page: pram.page, + limit: pram.limit + } + return request({ + url: 'admin/system/config/list', + method: 'POST', + params: data + }) +} + +export function configSave(pram) { + const data = { + id: pram.id, + configTabId: pram.configTabId, + desc: pram.desc, + high: pram.high, + info: pram.info, + inputType: pram.inputType, + menuName: pram.menuName, + parameter: pram.parameter, + required: pram.required, + sort: pram.sort, + status: pram.status, + type: pram.type, + updateType: pram.updateType, + value: pram.value, + width: pram.width + } + return request({ + url: 'admin/system/config/save', + method: 'POST', + params: data + }) +} + +export function configUpdate(pram) { + const data = { + id: pram.id, + configTabId: pram.configTabId, + desc: pram.desc, + high: pram.high, + info: pram.info, + inputType: pram.inputType, + menuName: pram.menuName, + parameter: pram.parameter, + required: pram.required, + sort: pram.sort, + status: pram.status, + type: pram.type, + updateType: pram.updateType, + value: pram.value, + width: pram.width + } + return request({ + url: 'admin/system/config/update', + method: 'POST', + params: data + }) +} diff --git a/admin/src/api/configTabApi.js b/admin/src/api/configTabApi.js new file mode 100644 index 00000000..15fde745 --- /dev/null +++ b/admin/src/api/configTabApi.js @@ -0,0 +1,95 @@ +import request from '@/utils/request' + +// 配置分类管理 +// 注意暂时没用到,使用无限极分类实现 + +export function configTabDelete(pram) { + const data = { + id: pram.id + } + return request({ + url: 'admin/system/config/tab/delete', + method: 'GET', + params: data + }) +} + +export function configTabInfo(pram) { + const data = { + id: pram.id + } + return request({ + url: 'admin/system/config/tab/info', + method: 'GET', + params: data + }) +} + +export function configTabList(pram) { + const data = { + id: pram.id, + engTitle: pram.engTitle, + icon: pram.icon, + info: pram.info, + title: pram.title, + parameter: pram.parameter, + status: pram.status, + page: pram.page, + limit: pram.limit + } + return request({ + url: 'admin/system/config/tab/list', + method: 'POST', + params: data + }) +} + +export function configSave(pram) { + const data = { + id: pram.id, + configTabId: pram.configTabId, + desc: pram.desc, + high: pram.high, + info: pram.info, + inputType: pram.inputType, + menuName: pram.menuName, + parameter: pram.parameter, + required: pram.required, + sort: pram.sort, + status: pram.status, + type: pram.type, + updateType: pram.updateType, + value: pram.value, + width: pram.width + } + return request({ + url: 'admin/system/config/save', + method: 'POST', + params: data + }) +} + +export function configUpdate(pram) { + const data = { + id: pram.id, + configTabId: pram.configTabId, + desc: pram.desc, + high: pram.high, + info: pram.info, + inputType: pram.inputType, + menuName: pram.menuName, + parameter: pram.parameter, + required: pram.required, + sort: pram.sort, + status: pram.status, + type: pram.type, + updateType: pram.updateType, + value: pram.value, + width: pram.width + } + return request({ + url: 'admin/system/config/update', + method: 'POST', + params: data + }) +} diff --git a/admin/src/api/dashboard.js b/admin/src/api/dashboard.js new file mode 100644 index 00000000..1e48f64d --- /dev/null +++ b/admin/src/api/dashboard.js @@ -0,0 +1,81 @@ +import request from '@/utils/request' + +// 订单量 +export function statisticsOrderApi() { + return request({ + url: '/admin/statistics/home/order', + method: 'get' + }) +} + +// 销售额 +export function statisticsSalesApi() { + return request({ + url: '/admin/statistics/home/sales', + method: 'get' + }) +} + +// 新增用户 +export function statisticsUserApi() { + return request({ + url: '/admin/statistics/home/user', + method: 'get' + }) +} + +// 用户访问量 +export function statisticsViewsApi() { + return request({ + url: '/admin/statistics/home/views', + method: 'get' + }) +} + +// 用户曲线图 +export function chartUserApi() { + return request({ + url: '/admin/statistics/home/chart/user', + method: 'get' + }) +} + +// 用户购买统计 +export function chartBuyApi() { + return request({ + url: '/admin/statistics/home/chart/user/buy', + method: 'get' + }) +} + +// 订单量趋势 30天 +export function chartOrder30Api() { + return request({ + url: '/admin/statistics/home/chart/order', + method: 'get' + }) +} + +// 订单量趋势 月 +export function chartOrderMonthApi() { + return request({ + url: '/admin/statistics/home/chart/order/month', + method: 'get' + }) +} + +// 订单量趋势 周 +export function chartOrderWeekApi() { + return request({ + url: '/admin/statistics/home/chart/order/week', + method: 'get' + }) +} + +// 订单量趋势 年 +export function chartOrderYearApi() { + return request({ + url: '/admin/statistics/home/chart/order/year', + method: 'get' + }) +} diff --git a/admin/src/api/distribution.js b/admin/src/api/distribution.js new file mode 100644 index 00000000..338319ab --- /dev/null +++ b/admin/src/api/distribution.js @@ -0,0 +1,90 @@ +import request from '@/utils/request' + + +/** + * @description 分销设置 -- 详情 + */ +export function configApi() { + return request({ + url: '/admin/store/retail/spread/manage/get', + method: 'get' + }) +} + +/** + * @description 分销设置 -- 表单提交 + */ +export function configUpdateApi(params) { + return request({ + url: '/admin/marketing/coupon/list', + method: 'get', + params + }) +} + +/** + * @description 分销设置 -- 表单提交 + */ +export function productCheckApi(data) { + return request({ + url: '/admin/store/retail/spread/manage/set', + method: 'post', + data + }) +} + +/** + * @description 分销员 -- 列表 + */ +export function promoterListApi(params) { + return request({ + url: '/admin/store/retail/list', + method: 'get', + params + }) +} + +/** + * @description 推广人 -- 列表 + */ +export function spreadListApi( params, data) { + return request({ + url: '/admin/store/retail/spread/userlist', + method: 'post', + params, + data + }) +} + +/** + * @description 推广人订单 -- 列表 + */ +export function spreadOrderListApi(params, data) { + return request({ + url: '/admin/store/retail/spread/orderlist', + method: 'post', + params, + data + }) +} + +/** + * @description 推广人 -- 清除上级推广人 + */ +export function spreadClearApi(id) { + return request({ + url: `/admin/store/retail/spread/clean/${id}`, + method: 'get' + }) +} + +/** + * @description 分销统计 + */ +export function spreadStatisticsApi(params) { + return request({ + url: `/admin/store/retail/statistics`, + method: 'get', + params + }) +} diff --git a/admin/src/api/logistics.js b/admin/src/api/logistics.js new file mode 100644 index 00000000..425fbebc --- /dev/null +++ b/admin/src/api/logistics.js @@ -0,0 +1,154 @@ +import request from '@/utils/request' + +// 城市列表 +export function cityList(data) { + return request({ + url: '/admin/system/city/list', + method: 'get', + params: { ...data } + }) +} + +// 城市列表 +export function cityListTree() { + return request({ + url: '/admin/system/city/list/tree', + method: 'get' + }) +} + +// 城市修改状态 +export function updateStatus(data) { + return request({ + url: '/admin/system/city/update/status', + method: 'post', + params: { ...data } + }) +} + +// 城市修改 +export function cityUpdate(data) { + return request({ + url: '/admin/system/city/update', + method: 'post', + params: { ...data } + }) +} + +// 城市详情 +export function cityInfo(data) { + return request({ + url: '/admin/system/city/info', + method: 'get', + params: { ...data } + }) +} + +// 物流公司列表 +export function expressList(data) { + return request({ + url: '/admin/express/list', + method: 'get', + params: { ...data } + }) +} + +// 物流公司修改状态 +export function expressUpdate(data) { + return request({ + url: '/admin/express/update', + method: 'post', + params: { ...data } + }) +} + +// 新增物流公司 +export function expressSave(data) { + return request({ + url: '/admin/express/save', + method: 'post', + params: { ...data } + }) +} + +// 删除物流公司 +export function expressDelete(data) { + return request({ + url: '/admin/express/delete', + method: 'GET', + params: { ...data } + }) +} + +// 物流运费模板列表 +export function shippingTemplatesList(data) { + return request({ + url: '/admin/express/shipping/templates/list', + method: 'get', + params: { ...data } + }) +} + +// 物流运费模板详情 +export function templateDetailApi(data) { + return request({ + url: '/admin/express/shipping/templates/info', + method: 'get', + params: { ...data } + }) +} + +// 物流运费模板包邮 +export function shippingFree(data) { + return request({ + url: '/admin/express/shipping/free/list', + method: 'get', + params: { ...data } + }) +} + +// 物流运费模板不包邮 +export function shippingRegion(data) { + return request({ + url: 'admin/express/shipping/region/list', + method: 'get', + params: { ...data } + }) +} + +// 物流运费模板新增 +export function shippingSave(data) { + return request({ + url: 'admin/express/shipping/templates/save', + method: 'post', + data: data + }) +} + +// 物流运费模板更新 +export function shippingUpdate(data, id) { + return request({ + url: 'admin/express/shipping/templates/update', + method: 'post', + data: data, + params: { ...id } + }) +} + +// 物流运费模板删除 +export function shippingDetete(data) { + return request({ + url: 'admin/express/shipping/templates/delete', + method: 'get', + params: data + }) +} + +// 物流公司详情 +export function expressInfo(data) { + return request({ + url: 'admin/express/info', + method: 'get', + params: { ...data } + }) +} diff --git a/admin/src/api/marketing.js b/admin/src/api/marketing.js new file mode 100644 index 00000000..058ba8fb --- /dev/null +++ b/admin/src/api/marketing.js @@ -0,0 +1,86 @@ +import request from '@/utils/request' + +/** + * 优惠券 列表 + * @param pram + */ +export function marketingListApi(params) { + return request({ + url: '/admin/marketing/coupon/list', + method: 'get', + params + }) +} + + +/** + * 优惠券 详情 + * @param pram + */ +export function couponInfoApi(params) { + return request({ + url: '/admin/marketing/coupon/info', + method: 'post', + params + }) +} + +/** + * 优惠券 发送 + * @param pram + */ +export function couponUserApi(params) { + return request({ + url: '/admin/marketing/coupon/user/receive', + method: 'post', + params + }) +} + +/** + * 优惠券 发送 + * @param pram + */ +export function couponSaveApi(data) { + return request({ + url: '/admin/marketing/coupon/save', + method: 'post', + data + }) +} + +/** + * 优惠券 修改状态 + * @param pram + */ +export function couponIssueStatusApi(params) { + return request({ + url: '/admin/marketing/coupon/update/status', + method: 'post', + params + }) +} + +/** + * 会员领取记录 列表 + * @param pram + */ +export function couponUserListApi(params) { + return request({ + url: '/admin/marketing/coupon/user/list', + method: 'get', + params + }) +} + +/** + * 积分日志 列表 + * @param pram + */ +export function integralListApi(data) { + return request({ + url: '/admin/user/bill/list', + method: 'post', + data + }) +} diff --git a/admin/src/api/order.js b/admin/src/api/order.js new file mode 100644 index 00000000..8e705f34 --- /dev/null +++ b/admin/src/api/order.js @@ -0,0 +1,111 @@ +import request from '@/utils/request' + +/** + * 订单 列表 + * @param pram + */ +export function orderListApi(params) { + return request({ + url: '/admin/store/order/list', + method: 'get', + params + }) +} + + +/** + * 订单 删除 + * @param pram + */ +export function orderDeleteApi(params) { + return request({ + url: '/admin/store/order/delete', + method: 'get', + params + }) +} + +/** + * 订单 编辑 + * @param pram + */ +export function orderUpdateApi(data, params) { + return request({ + url: '/admin/store/order/update', + method: 'post', + data, + params + }) +} + +/** + * 订单 记录 + * @param pram + */ +export function orderLogApi(params) { + return request({ + url: '/admin/store/order/status/list', + method: 'get', + params + }) +} + +/** + * 订单 详情 + * @param pram + */ +export function orderDetailApi(params) { + return request({ + url: '/admin/store/order/info', + method: 'get', + params + }) +} + +/** + * 订单 备注 + * @param pram + */ +export function orderMarkApi(params) { + return request({ + url: '/admin/store/order/mark', + method: 'post', + params + }) +} + +/** + * 订单 发货 + * @param pram + */ +export function orderSendApi(params) { + return request({ + url: '/admin/store/order/send', + method: 'get', + params + }) +} + +/** + * 订单 拒绝退款 + * @param pram + */ +export function orderRefuseApi(params) { + return request({ + url: '/admin/store/order/refund/refuse', + method: 'get', + params + }) +} + +/** + * 订单 立即退款 + * @param pram + */ +export function orderRefundApi(params) { + return request({ + url: '/admin/store/order/refund', + method: 'get', + params + }) +} diff --git a/admin/src/api/qiniu.js b/admin/src/api/qiniu.js new file mode 100644 index 00000000..a0375844 --- /dev/null +++ b/admin/src/api/qiniu.js @@ -0,0 +1,8 @@ +import request from '@/utils/request' + +export function getToken() { + return request({ + url: '/qiniu/upload/token', // 假地址 自行替换 + method: 'get' + }) +} diff --git a/admin/src/api/remote-search.js b/admin/src/api/remote-search.js new file mode 100644 index 00000000..8b71d53d --- /dev/null +++ b/admin/src/api/remote-search.js @@ -0,0 +1,17 @@ +import request from '@/utils/request' + +export function searchUser(name) { + return request({ + url: '/vue-element-admin/search/user', + method: 'get', + params: { name } + }) +} + +export function transactionList(query) { + // return request({ + // url: '/vue-element-admin/transaction/list', + // method: 'get', + // params: query + // }) +} diff --git a/admin/src/api/role.js b/admin/src/api/role.js new file mode 100644 index 00000000..b1df07a9 --- /dev/null +++ b/admin/src/api/role.js @@ -0,0 +1,70 @@ +import request from '@/utils/request' + +export function addRole(pram) { + const data = { + level: pram.level, + roleName: pram.roleName, + status: pram.status + } + data.rules = pram.rules.join(',') + return request({ + url: '/admin/system/role/save', + method: 'POST', + params: data + }) +} + +export function delRole(pram) { + const data = { + id: pram.id + } + return request({ + url: '/admin/system/role/delete', + method: 'GET', + params: data + }) +} + +export function getInfo(pram) { + const data = { + id: pram.id + } + return request({ + url: '/admin/system/role/info', + method: 'get', + params: data + }) +} + +export function getRoleList(pram) { + const data = { + createTime: pram.createTime, + updateTime: pram.updateTime, + level: pram.level, + page: pram.page, + limit: pram.limit, + roleName: pram.roleName, + rules: pram.rules, + status: pram.status + } + return request({ + url: '/admin/system/role/list', + method: 'get', + params: data + }) +} + +export function updateRole(pram) { + const data = { + id: pram.id, + level: pram.level, + roleName: pram.roleName, + rules: pram.rules.join(','), + status: pram.status + } + return request({ + url: '/admin/system/role/update', + method: 'post', + params: data + }) +} diff --git a/admin/src/api/roleApi.js b/admin/src/api/roleApi.js new file mode 100644 index 00000000..7449b9b0 --- /dev/null +++ b/admin/src/api/roleApi.js @@ -0,0 +1,21 @@ +import request from '@/utils/request' + +export function getRoleById(pram) { + const data = { id: pram.id } + return request({ + url: '/admin/system/role/info', + method: 'GET', + params: data + }) +} + +/** + * 菜单 + * @param pram + */ +export function menuListApi() { + return request({ + url: '/admin/system/role/menu', + method: 'GET' + }) +} diff --git a/admin/src/api/sms.js b/admin/src/api/sms.js new file mode 100644 index 00000000..062a0612 --- /dev/null +++ b/admin/src/api/sms.js @@ -0,0 +1,127 @@ +import request from '@/utils/request' +/** + * @description 短信发送记录 -- 列表 + */ +export function smsLstApi(params) { + return request({ + url: '/admin/sms/record/list', + method: 'get', + params + }) +} +/** + * @description 短信账户 -- 登录 + */ +export function configApi(params) { + return request({ + url: '/admin/sms/login', + method: 'get', + params + }) +} +/** + * @description 短信账户 -- 获取验证码 + */ +export function captchaApi(phone) { + return request({ + url: `/admin/sms/sendCodeForRegister/${phone}`, + method: 'get' + }) +} +/** + * @description 短信账户 -- 注册 + */ +export function registerApi(params) { + return request({ + url: '/admin/sms/register', + method: 'post', + params + }) +} +/** + * @description 短信账户 -- 是否登录 + */ +export function isLoginApi() { + return request({ + url: '/admin/sms/islogin', + method: 'get' + }) +} +/** + * @description 短信账户 -- 退出登录 + */ +export function logoutApi() { + return request({ + url: '/admin/sms/logout', + method: 'get' + }) +} +/** + * @description 短信账户 -- 剩余条数 + */ +export function smsNumberApi() { + return request({ + url: '/admin/sms/logout', + method: 'get' + }) +} +/** + * @description 短信模板 -- 列表 + */ +export function smsTempLstApi(params) { + return request({ + url: '/admin/sms/temp/list', + method: 'get', + params + }) +} +/** + * @description 短信购买 -- 支付套餐 + */ +export function smsPriceApi(params) { + return request({ + url: '/admin/sms/pay/list', + method: 'get', + params + }) +} +/** + * @description 短信购买 -- 支付码 + */ +export function payCodeApi(params) { + return request({ + url: '/admin/sms/pay/qrCode', + method: 'get', + params + }) +} +/** + * @description 短信模板 -- 添加表单 + */ +export function tempCreateApi(params) { + return request({ + url: '/admin/sms/temp/apply', + method: 'post', + params + }) +} +/** + * @description 短信 -- 用户信息 + */ +export function smsInfoApi() { + return request({ + url: '/admin/sms/info', + method: 'get' + }) +} + +/** + * @description 短信 -- 短信提醒开关保存 + */ +export function smsSaveApi(params) { + return request({ + url: '/admin/sms/config/save', + method: 'post', + params + }) +} diff --git a/admin/src/api/store.js b/admin/src/api/store.js new file mode 100644 index 00000000..7dada2b3 --- /dev/null +++ b/admin/src/api/store.js @@ -0,0 +1,243 @@ +import request from '@/utils/request' + +/** + * 新增商品 + * @param pram + */ +export function productCreateApi(data) { + return request({ + url: '/admin/store/product/save', + method: 'POST', + data + }) +} + +/** + * 编辑商品 + * @param pram + */ +export function productUpdateApi(data) { + return request({ + url: '/admin/store/product/update', + method: 'POST', + data + }) +} + +/** + * 商品详情 + * @param pram + */ +export function productDetailApi(id) { + return request({ + url: `/admin/store/product/info/${id}`, + method: 'GET' + }) +} + +/** + * 删除商品 + * @param pram + */ +export function productDeleteApi(id) { + return request({ + url: `/admin/store/product/delete/${id}`, + method: 'get' + }) +} + +/** + * 商品列表 表头数量 + */ +export function productHeadersApi() { + return request({ + url: '/admin/store/product/tabs/headers', + method: 'GET' + }) +} + +/** + * 商品列表 + * @param pram + */ +export function productLstApi(params) { + return request({ + url: '/admin/store/product/list', + method: 'GET', + params + }) +} +/** + * 商品分类 + * @param pram + */ +export function categoryApi(params) { + return request({ + url: '/admin/category/list/tree', + method: 'GET', + params + }) +} +/** + * 商品上架 + * @param pram + */ +export function putOnShellApi(id) { + return request({ + url: `/admin/store/product/putOnShell/${id}`, + method: 'GET' + }) +} +/** + * 商品下架 + * @param pram + */ +export function offShellApi(id) { + return request({ + url: `/admin/store/product/offShell/${id}`, + method: 'GET' + }) +} +/** + * 商品规格 列表 + * @param pram + */ +export function templateListApi(params) { + return request({ + url: '/admin/store/product/rule/list', + method: 'GET', + params + }) +} +/** + * 商品规格 删除 + * @param pram + */ +export function attrDeleteApi(id) { + return request({ + url: `/admin/store/product/rule/delete/${id}`, + method: 'get' + }) +} +/** + * 商品规格 新增 + * @param pram + */ +export function attrCreatApi(data) { + return request({ + url: '/admin/store/product/rule/save', + method: 'POST', + data + }) +} +/** + * 商品规格 编辑 + * @param pram + */ +export function attrEditApi(data) { + return request({ + url: '/admin/store/product/rule/update', + method: 'POST', + data + }) +} +/** + * 商品规格 详情 + * @param pram + */ +export function attrInfoApi(id) { + return request({ + url: `admin/store/product/rule/info/${id}`, + method: 'GET' + }) +} +/** + * 商品评论 列表 + * @param pram + */ +export function replyListApi(params) { + return request({ + url: '/admin/store/product/reply/list', + method: 'GET', + params + }) +} +/** + * 商品评论 新增 + * @param pram + */ +export function replyCreatApi(data) { + return request({ + url: '/admin/store/product/reply/save', + method: 'POST', + data + }) +} +/** + * 商品评论 编辑 + * @param pram + */ +export function replyEditApi(data) { + return request({ + url: '/admin/store/product/reply/update', + method: 'POST', + data + }) +} +/** + * 商品评论 详情 + * @param pram + */ +export function replyInfoApi(id) { + return request({ + url: `/admin/store/product/reply/info/${id}`, + method: 'GET' + }) +} +/** + * 商品评论 删除 + * @param pram + */ +export function replyDeleteApi(id) { + return request({ + url: `/admin/store/product/reply/delete/${id}`, + method: 'GET' + }) +} + +/** + * 商品评论 回复 + * @param pram + */ +export function replyCommentApi(data) { + console.log(data) + return request({ + url: `/admin/store/product/reply/comment`, + method: 'post', + data + }) +} + +/** + * 商品评论 导出 + * @param pram + */ +export function productExportApi(params) { + return request({ + url: `/admin/export/excel/product`, + method: 'get', + params + }) +} + +/** + * 商品复制 + * @param pram + */ +export function importProductApi(params) { + return request({ + url: `/admin/store/product/importProduct`, + method: 'post', + params + }) +} diff --git a/admin/src/api/storePoint.js b/admin/src/api/storePoint.js new file mode 100644 index 00000000..6b4485c9 --- /dev/null +++ b/admin/src/api/storePoint.js @@ -0,0 +1,193 @@ +import request from '@/utils/request' + +/** + * 提货点分页列表 + * @param pram + */ +export function storeListApi(data) { + return request({ + url: '/admin/system/store/list', + method: 'get', + params: data + }) +} + +/** + * 提货点数量 + * @param pram + */ +export function storeGetCountApi() { + return request({ + url: '/admin/system/store/getCount', + method: 'get' + }) +} + +/** + * 提货点门店状态 + * @param pram + */ +export function storeUpdateStatusApi(data) { + return request({ + url: '/admin/system/store/update/status', + method: 'get', + params: data + }) +} + +/** + * 提货点门店刪除 + * @param pram + */ +export function storeDeleteApi(data) { + return request({ + url: '/admin/system/store/delete', + method: 'get', + params: data + }) +} + +/** + * 提货点添加 + * @param pram + */ +export function storeSaveApi(data) { + return request({ + url: '/admin/system/store/save', + method: 'post', + data + }) +} + +/** + * 提货点详情 + * @param pram + */ +export function storeInfoApi(data) { + return request({ + url: '/admin/system/store/info', + method: 'get', + params: data + }) +} + +/** + * 提货点修改 + * @param pram + */ +export function storeUpdateApi(data,id) { + // const param = ; + return request({ + url: '/admin/system/store/update', + method: 'post', + params: {id: id}, + data + }) +} + +/** + * 核销员分页列表 + * @param pram + */ +export function storeStaffListApi(data) { + return request({ + url: '/admin/system/store/staff/list', + method: 'get', + params: data + }) +} + +/** + * 核销员添加 + * @param pram + */ +export function storeStaffSaveApi(data) { + return request({ + url: '/admin/system/store/staff/save', + method: 'POST', + params: data + }) +} + +/** + * 核销员删除 + * @param pram + */ +export function storeStaffDeleteApi(data) { + return request({ + url: '/admin/system/store/staff/delete', + method: 'get', + params: data + }) +} + + +/** + * 核销员编辑 + * @param pram + */ +export function storeStaffUpdateApi(data) { + return request({ + url: '/admin/system/store/staff/update', + method: 'POST', + params: data + }) +} + +/** + * 核销员编辑 + * @param pram + */ +export function storeStaffInfoApi(id) { + return request({ + url: '/admin/system/store/staff/info', + method: 'get', + params: id + }) +} + +/** + * 核销员编辑 + * @param pram + */ +export function storeStaffUpdateStatusApi(data) { + return request({ + url: '/admin/system/store/staff/update/status', + method: 'get', + params: data + }) +} + +/** + * 核销员编辑 + * @param pram + */ +export function userListApi(data) { + return request({ + url: '/admin/wechat/user/list', + method: 'get', + params: data + }) +} + +/** + * 核销订单 + * @param pram + */ +export function orderListApi(params) { + return request({ + url: '/admin/system/store/order/list', + method: 'post', + params + }) +} + + + + + + + + + + diff --git a/admin/src/api/system.js b/admin/src/api/system.js new file mode 100644 index 00000000..e8a51a9d --- /dev/null +++ b/admin/src/api/system.js @@ -0,0 +1,59 @@ +import request from '@/utils/request' + +/** + * 新增商品 + * @param pram + */ +export function productCreateApi(data) { + return request({ + url: '/admin/product/save', + method: 'POST', + data + }) +} +/** + * @description 附件分类 -- 所有分类 + */ +export function formatLstApi(data) { + return request.get({ + url: '/admin/product/save', + method: 'POST', + data + }) +} +/** + * @description 附件分类 -- 添加分类 + */ +export function attachmentCreateApi() { + return request.get(`system/attachment/category/create/form`) +} +/** + * @description 附件分类 -- 编辑分类 + */ +export function attachmentUpdateApi(id) { + return request.get(`system/attachment/category/update/form/${id}`) +} +/** + * @description 附件分类 -- 删除分类 + */ +export function attachmentDeleteApi(id) { + return request.delete(`system/attachment/category/delete/${id}`) +} +/** + * @description 图片列表 + */ +export function attachmentListApi(data) { + return request.get(`system/attachment/lst`, data) +} +/** + * @description 图片列表 -- 删除 + */ +export function picDeleteApi(id) { + return request.delete(`system/attachment/delete`, id) +} +/** + * @description 图片列表 -- 修改附件分类 + */ +export function categoryApi(ids, attachment_category_id) { + return request.post(`system/attachment/category`, { ids, attachment_category_id }) +} diff --git a/admin/src/api/systemConfig.js b/admin/src/api/systemConfig.js new file mode 100644 index 00000000..fba52630 --- /dev/null +++ b/admin/src/api/systemConfig.js @@ -0,0 +1,111 @@ +import request from '@/utils/request' + +export function configCheckUnique(pram) { + const data = { + name: pram.name + } + return request({ + url: '/admin/system/config/check', + method: 'GET', + params: data + }) +} + +export function configDelete(pram) { + const data = { + id: pram.id + } + return request({ + url: '/admin/system/config/delete', + method: 'GET', + params: data + }) +} + +export function configInfo(pram) { + const data = { + formId: pram.id + } + return request({ + url: '/admin/system/config/info', + method: 'GET', + params: data + }) +} + +export function configList(pram) { + const data = { + page: pram.page, + limit: pram.limit + } + return request({ + url: '/admin/system/config/list', + method: 'GET', + params: data + }) +} + +export function configSave(pram) { + const data = { + systemConfigRequest: { + desc: pram.desc, + groupId: pram.groupId, + info: pram.info, + name: pram.name, + pid: pram.pid, + status: pram.status, + type: pram.type, + value: pram.value // value 存储表单配置数据,其他的参数来自于父级数据 justForAPI + } + } + return request({ + url: '/admin/system/config/save', + method: 'POST', + params: data + }) +} + +export function configSaveForm(pram) { + return request({ + url: '/admin/system/config/save/form', + method: 'POST', + data: pram + }) +} + +export function configUpdate(pram) { + const data = { + id: pram.id, + systemConfigRequest: pram.systemConfigRequest + } + return request({ + url: '/admin/system/config/update', + method: 'POST', + params: data + }) +} + +export function configSaveUniq(pram) { + const data = { + key: pram.key, + value: pram.value + } + return request({ + url: '/admin/system/config/saveuniq', + method: 'POST', + params: data + }) +} + +export function configGetUniq(pram) { + const data = { + key: pram.key + } + return request({ + url: '/admin/system/config/getuniq', + method: 'GET', + params: data + }) +} + + diff --git a/admin/src/api/systemFormConfig.js b/admin/src/api/systemFormConfig.js new file mode 100644 index 00000000..d7802674 --- /dev/null +++ b/admin/src/api/systemFormConfig.js @@ -0,0 +1,53 @@ +import request from '@/utils/request' + +export function getFormConfigInfo(pram) { + const data = { + id: pram.id + } + return request({ + url: '/admin/system/form/temp/info', + method: 'GET', + params: data + }) +} + +export function getFormConfigList(pram) { + const data = { + keywords: pram.keywords, + page: pram.page, + limit: pram.limit + } + return request({ + url: '/admin/system/form/temp/list', + method: 'GET', + params: data + }) +} + +export function getFormConfigSave(pram) { + const data = { + content: pram.content, + info: pram.info, + name: pram.name + } + return request({ + url: '/admin/system/form/temp/save', + method: 'POST', + data: data + }) +} + +export function getFormConfigEdit(pram) { + const params = { id: pram.id } + const data = { + content: pram.content, + info: pram.info, + name: pram.name + } + return request({ + url: '/admin/system/form/temp/update', + method: 'POST', + params: params, + data: data + }) +} diff --git a/admin/src/api/systemGroup.js b/admin/src/api/systemGroup.js new file mode 100644 index 00000000..17a90c48 --- /dev/null +++ b/admin/src/api/systemGroup.js @@ -0,0 +1,63 @@ +import request from '@/utils/request' + +export function groupDelete(pram) { + const data = { + id: pram.id + } + return request({ + url: '/admin/system/group/delete', + method: 'GET', + params: data + }) +} + +export function groupInfo(pram) { + const data = { + id: pram.id + } + return request({ + url: '/admin/system/group/info', + method: 'GET', + params: data + }) +} + +export function groupList(pram) { + const data = { + keywords: pram.keywords, + page: pram.page, + limit: pram.limit + } + return request({ + url: '/admin/system/group/list', + method: 'GET', + params: data + }) +} + +export function groupSave(pram) { + const data = { + formId: pram.formId, + info: pram.info, + name: pram.name + } + return request({ + url: '/admin/system/group/save', + method: 'POST', + params: data + }) +} + +export function groupEdit(pram) { + const data = { + formId: pram.formId, + info: pram.info, + name: pram.name, + id: pram.id + } + return request({ + url: '/admin/system/group/update', + method: 'POST', + params: data + }) +} diff --git a/admin/src/api/systemGroupData.js b/admin/src/api/systemGroupData.js new file mode 100644 index 00000000..b33a4206 --- /dev/null +++ b/admin/src/api/systemGroupData.js @@ -0,0 +1,55 @@ +import request from '@/utils/request' + +export function groupDataDelete(pram) { + const data = { + id: pram.id + } + return request({ + url: '/admin/system/group/data/delete', + method: 'GET', + params: data + }) +} + +export function groupDataInfo(pram) { + const data = { + id: pram.id + } + return request({ + url: '/admin/system/group/data/info', + method: 'GET', + params: data + }) +} + +export function groupDataList(pram) { + const data = { + gid: pram.gid, + keywords: pram.keywords, + status: pram.status, // 1=开启 2=关闭 + page: pram.page, + limit: pram.limit + } + return request({ + url: '/admin/system/group/data/list', + method: 'GET', + params: data + }) +} + +export function groupDataSave(pram) { + return request({ + url: '/admin/system/group/data/save', + method: 'POST', + data: pram + }) +} + +export function groupDataEdit(pram, id) { + return request({ + url: '/admin/system/group/data/update', + method: 'POST', + data: pram, + params: { id: id } + }) +} diff --git a/admin/src/api/systemSetting.js b/admin/src/api/systemSetting.js new file mode 100644 index 00000000..14677340 --- /dev/null +++ b/admin/src/api/systemSetting.js @@ -0,0 +1,93 @@ +import request from '@/utils/request' + +export function systemConfigCheck(pram) { + const data = { + name: pram.name + } + return request({ + url: '/admin/system/config/check', + method: 'GET', + params: data + }) +} + +export function systemConfigInfo(pram) { + const data = { + formId: pram.id + } + return request({ + url: '/admin/system/config/info', + method: 'GET', + params: data + }) +} + +export function systemConfigSave(pram) { + return request({ + url: '/admin/system/config/save/form', + method: 'POST', + data: pram + }) +} + + +/** + * 文件上传 + * @param data + */ +export function fileFileApi(data, params) { + return request({ + url: '/admin/upload/file', + method: 'POST', + params, + data + }) +} + +/** + * 图片上传 + * @param data + */ +export function fileImageApi(data, params) { + return request({ + url: '/admin/wechat/media/upload', + method: 'POST', + params, + data + }) +} + +/** + * 图片列表 + * @param data + */ +export function fileListApi(params) { + return request({ + url: '/admin/system/attachment/list', + method: 'get', + params + }) +} + +/** + * 图片列表 删除图片 + * @param data + */ +export function fileDeleteApi(id) { + return request({ + url: `/admin/system/attachment/delete/${id}`, + method: 'get' + }) +} + +/** + * 图片列表 移動分類 + * @param data + */ +export function attachmentMoveApi(data) { + return request({ + url: `/admin/system/attachment/move`, + method: 'post', + data + }) +} diff --git a/admin/src/api/systemadmin.js b/admin/src/api/systemadmin.js new file mode 100644 index 00000000..75cc6856 --- /dev/null +++ b/admin/src/api/systemadmin.js @@ -0,0 +1,86 @@ +import request from '@/utils/request' + +export function getMenu() { + return request({ + url: '/admin/system/role/testMenu', + method: 'GET' + }) +} + +export function adminDel(pram) { + const data = { + id: pram.id + } + return request({ + url: '/admin/system/admin/delete', + method: 'GET', + params: data + }) +} + +export function adminInfo(pram) { + const data = { + id: pram.id + } + return request({ + url: '/admin/system/admin/info', + method: 'GET', + params: data + }) +} + +export function adminList(pram) { + const data = { + account: pram.account, + addTime: pram.addTime, + isDel: pram.isDel, + lastIp: pram.lastIp, + lastTime: pram.lastTime, + level: pram.level, + loginCount: pram.loginCount, + page: pram.page, + limit: pram.limit, + realName: pram.realName, + roles: pram.roles, + status: pram.status + } + return request({ + url: '/admin/system/admin/list', + method: 'GET', + params: data + }) +} + +export function adminAdd(pram) { + const data = { + account: pram.account, + level: pram.level, + pwd: pram.pwd, + realName: pram.realName, + roles: pram.roles.join(','), + status: pram.status + } + return request({ + url: '/admin/system/admin/save', + method: 'POST', + params: data + }) +} + +export function adminUpdate(pram) { + // const data = { + // account: pram.account, + // level: pram.level, + // pwd: pram.pwd, + // realName: pram.realName, + // roles: pram.roles.join(','), + // status: pram.status, + // id: pram.id, + // isDel: pram.isDel + // } + return request({ + url: '/admin/system/admin/update', + method: 'POST', + params: pram + }) +} diff --git a/admin/src/api/user.js b/admin/src/api/user.js new file mode 100644 index 00000000..373f5d72 --- /dev/null +++ b/admin/src/api/user.js @@ -0,0 +1,349 @@ +import request from '@/utils/request' + +export function login(data) { + return request({ + url: '/admin/login', + method: 'post', + data + }) +} + +export function getInfo(token) { + return request({ + url: '/admin/getAdminInfoByToken', + method: 'get', + params: { token } + }) +} + +export function logout() { + return request({ + url: '/admin/logout', + method: 'get' + }) +} + +/** + * 会员管理 列表 + * @param pram + */ +export function userListApi(params) { + return request({ + url: `/admin/user/list`, + method: 'get', + params + }) +} + +/** + * 会员管理 修改 + * @param pram + */ +export function userUpdateApi(params, data) { + return request({ + url: `/admin/user/update`, + method: 'post', + params, + data + }) +} + +/** + * 会员管理 详情 + * @param pram + */ +export function userInfoApi(params) { + return request({ + url: `/admin/user/info`, + method: 'get', + params + }) +} + +/** + * 会员管理 账户详情 + * @param pram + */ +export function infobyconditionApi(params) { + return request({ + url: `/admin/user/infobycondition`, + method: 'get', + params + }) +} + +/** + * 会员管理 账户详情top数据 + * @param pram + */ +export function topdetailApi(params) { + return request({ + url: `/admin/user/topdetail`, + method: 'get', + params + }) +} + +/** + * 会员管理 批量设置分组 + * @param pram + */ +export function groupPiApi(params) { + return request({ + url: `/admin/user/group`, + method: 'post', + params + }) +} + +/** + * 会员管理 批量设置标签 + * @param pram + */ +export function tagPiApi(params) { + return request({ + url: `/admin/user/tag`, + method: 'post', + params + }) +} + +/** + * 会员管理 积分余额 + * @param pram + */ +export function foundsApi(params) { + return request({ + url: `/admin/user/operate/founds`, + method: 'get', + params + }) +} + +/** + * 会员管理 删除 + * @param pram + */ +export function userDeleteApi(params) { + return request({ + url: `/admin/user/delete`, + method: 'get', + params + }) +} + +/** + * 会员等级 列表 + * @param pram + */ +export function levelListApi(params) { + return request({ + url: `/admin/system/user/level/list`, + method: 'get', + params + }) +} + +/** + * 会员等级 新增 + * @param pram + */ +export function levelSaveApi(data) { + return request({ + url: `/admin/system/user/level/save`, + method: 'post', + data + }) +} + +/** + * 会员等级 编辑 + * @param pram + */ +export function levelUpdateApi(params, data) { + return request({ + url: `/admin/system/user/level/update`, + method: 'post', + params, + data + }) +} + +/** + * 会员等级 详情 + * @param pram + */ +export function levelInfoApi(params) { + return request({ + url: `/admin/system/user/level/info`, + method: 'get', + params + }) +} + +/** + * 会员等级 删除 + * @param pram + */ +export function levelDeleteApi(params) { + return request({ + url: `/admin/system/user/level/delete`, + method: 'get', + params + }) +} + +/** + * 会员等级 是否显示 + * @param pram + */ +export function levelUseApi(params) { + return request({ + url: `/admin/system/user/level/use`, + method: 'get', + params + }) +} + +/** + * 会员标签 列表 + * @param pram + */ +export function tagListApi(params) { + return request({ + url: `/admin/user/tag/list`, + method: 'get', + params + }) +} + +/** + * 会员标签 新增 + * @param pram + */ +export function tagSaveApi(data) { + return request({ + url: `/admin/user/tag/save`, + method: 'post', + data + }) +} + +/** + * 会员标签 编辑 + * @param pram + */ +export function tagUpdateApi(params, data) { + return request({ + url: `/admin/user/tag/update`, + method: 'post', + params, + data + }) +} + +/** + * 会员标签 详情 + * @param pram + */ +export function tagInfoApi(params) { + return request({ + url: `/admin/user/tag/info`, + method: 'get', + params + }) +} + +/** + * 会员标签 删除 + * @param pram + */ +export function tagDeleteApi(params) { + return request({ + url: `/admin/user/tag/delete`, + method: 'get', + params + }) +} + +/** + * 会员分组 列表 + * @param pram + */ +export function groupListApi(params) { + return request({ + url: `/admin/user/group/list`, + method: 'get', + params + }) +} + +/** + * 会员分组 新增 + * @param pram + */ +export function groupSaveApi(data) { + return request({ + url: `/admin/user/group/save`, + method: 'post', + data + }) +} + +/** + * 会员分组 编辑 + * @param pram + */ +export function groupUpdateApi(params, data) { + console.log(params, data) + return request({ + url: `/admin/user/group/update`, + method: 'post', + params, + data + }) +} + +/** + * 会员分组 详情 + * @param pram + */ +export function groupInfoApi(params) { + return request({ + url: `/admin/user/group/info`, + method: 'get', + params + }) +} + +/** + * 会员分组 删除 + * @param pram + */ +export function groupDeleteApi(params) { + return request({ + url: `/admin/user/group/delete`, + method: 'get', + params + }) +} + +/** + *获取登录页图片 + */ +export function getLoginPicApi() { + return request({ + url: `/admin/getLoginPic`, + method: 'get' + }) +} + +/** + * @description 验证码 + */ +export function captchaApi() { + return request({ + url: `/admin/validate/code/get`, + method: 'get' + }) +} diff --git a/admin/src/api/wxApi.js b/admin/src/api/wxApi.js new file mode 100644 index 00000000..60ebbcea --- /dev/null +++ b/admin/src/api/wxApi.js @@ -0,0 +1,197 @@ +import request from '@/utils/request' +// TODO 微信沟通难度大暂放 呵呵 + +export function menuCreate(data) { + return request({ + url: '/admin/wechat/menu/public/create', + method: 'post', + params: data + }) +} + +export function menuDelete(data) { + return request({ + url: '/admin/wechat/menu/public/delete', + method: 'post', + params: data + }) +} + +export function menuInfo(pram) { + const data = { + isAsync: pram.isAsync + } + return request({ + url: '/admin/wechat/menu/public/get', + method: 'post', + params: data + }) +} + +/** + * 微信模板消息 列表 + * @param pram + */ +export function wechatTemplateListApi(params) { + return request({ + url: `/admin/wechat/template/list`, + method: 'get', + params + }) +} + +/** + * 微信模板消息 新增 + * @param pram + */ +export function wechatTemplateSaveApi(data) { + return request({ + url: `/admin/wechat/template/save`, + method: 'post', + data + }) +} + +/** + * 微信模板消息 编辑 + * @param pram + */ +export function wechatTemplateUpdateApi(id, data) { + console.log(id) + return request({ + url: `/admin/wechat/template/update/${id}`, + method: 'post', + data + }) +} + +/** + * 微信模板消息 详情 + * @param pram + */ +export function wechatTemplateInfoApi(id) { + return request({ + url: `/admin/wechat/template/info/${id}`, + method: 'get' + }) +} + +/** + * 微信模板消息 修改状态 + * @param pram + */ +export function wechatTemplateStatusApi(id, params) { + return request({ + url: `/admin/wechat/template/update/status/${id}`, + method: 'post', + params + }) +} + +/** + * 微信模板消息 删除 + * @param pram + */ +export function wechatTemplateDeleteApi(id) { + return request({ + url: `/admin/wechat/template/delete/${id}`, + method: 'get' + }) +} + +/** + * 关键字回复 列表 + * @param pram + */ +export function replyListApi(params) { + return request({ + url: `/admin/wechat/keywords/reply/list`, + method: 'get', + params + }) +} + +/** + * 关键字回复 新增 + * @param pram + */ +export function replySaveApi(data) { + return request({ + url: `/admin/wechat/keywords/reply/save`, + method: 'post', + data + }) +} + +/** + * 关键字回复 编辑 + * @param pram + */ +export function replyUpdateApi(params, data) { + return request({ + url: `/admin/wechat/keywords/reply/update`, + method: 'post', + params, + data + }) +} + +/** + * 关键字回复 详情 + * @param pram + */ +export function replyInfoApi(params) { + return request({ + url: `/admin/wechat/keywords/reply/info`, + method: 'get', + params + }) +} + +/** + * 关键字回复 删除 + * @param pram + */ +export function replyDeleteApi(params) { + return request({ + url: `/admin/wechat/keywords/reply/delete`, + method: 'get', + params + }) +} + +/** + * 关键字查询数据 + * @param pram + */ +export function keywordsInfoApi(params) { + return request({ + url: `/admin/wechat/keywords/reply/info/keywords`, + method: 'get', + params + }) +} + +/** + * 微信菜单 获取数据 + * @param pram + */ +export function wechatMenuApi(params) { + return request({ + url: `/admin/wechat/menu/public/get`, + method: 'get', + params + }) +} + +/** + * 微信菜单 新增 + * @param pram + */ +export function wechatMenuAddApi(data) { + return request({ + url: `/admin/wechat/menu/public/create`, + method: 'post', + data + }) +} diff --git a/admin/src/assets/401_images/401.gif b/admin/src/assets/401_images/401.gif new file mode 100644 index 0000000000000000000000000000000000000000..cd6e0d9433421b3f29d0ec0c40f755e354728000 GIT binary patch literal 164227 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⋘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 GY5fOuZZib{ literal 0 HcmV?d00001 diff --git a/admin/src/assets/404_images/404.png b/admin/src/assets/404_images/404.png new file mode 100644 index 0000000000000000000000000000000000000000..3d8e2305cc973ad2121403aee4bf08728f76c461 GIT binary patch literal 98071 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 literal 0 HcmV?d00001 diff --git a/admin/src/assets/404_images/404_cloud.png b/admin/src/assets/404_images/404_cloud.png new file mode 100644 index 0000000000000000000000000000000000000000..c6281d09013e0a2c5f8e699a0a6038d9480291e5 GIT binary patch literal 4766 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 literal 0 HcmV?d00001 diff --git a/admin/src/assets/custom-theme/fonts/element-icons.ttf b/admin/src/assets/custom-theme/fonts/element-icons.ttf new file mode 100644 index 0000000000000000000000000000000000000000..570a3e11b2f002c146d7fdc20528951442f6fd93 GIT binary patch literal 11028 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.el-input__inner{vertical-align:middle;display:table-cell}.custom-theme .el-input-group__append,.custom-theme .el-input-group__prepend{background-color:#f5f7fa;color:#0a76a4;vertical-align:middle;display:table-cell;position:relative;border:1px solid #d8dce5;border-radius:4px;padding:0 20px;width:1px;white-space:nowrap}.custom-theme .el-input-group__append:focus,.custom-theme .el-input-group__prepend:focus{outline:0}.custom-theme .el-input-group__append .el-button,.custom-theme .el-input-group__append .el-select,.custom-theme .el-input-group__prepend .el-button,.custom-theme .el-input-group__prepend .el-select{display:inline-block;margin:-20px}.custom-theme .el-input-group__append button.el-button,.custom-theme .el-input-group__append div.el-select .el-input__inner,.custom-theme .el-input-group__append div.el-select:hover .el-input__inner,.custom-theme .el-input-group__prepend button.el-button,.custom-theme .el-input-group__prepend div.el-select .el-input__inner,.custom-theme .el-input-group__prepend div.el-select:hover .el-input__inner{border-color:transparent;background-color:transparent;color:inherit;border-top:0;border-bottom:0}.custom-theme .el-input-group__append .el-button,.custom-theme .el-input-group__append .el-input,.custom-theme .el-input-group__prepend .el-button,.custom-theme .el-input-group__prepend .el-input{font-size:inherit}.custom-theme .el-input-group__prepend{border-right:0;border-top-right-radius:0;border-bottom-right-radius:0}.custom-theme .el-input-group__append{border-left:0;border-top-left-radius:0;border-bottom-left-radius:0}.custom-theme .el-input-group--prepend .el-input__inner{border-top-left-radius:0;border-bottom-left-radius:0}.custom-theme .el-input-group--append .el-input__inner{border-top-right-radius:0;border-bottom-right-radius:0}.custom-theme .el-textarea{display:inline-block;width:100%;vertical-align:bottom}.custom-theme .el-textarea__inner{display:block;resize:vertical;padding:5px 15px;line-height:1.5;-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;font-size:14px;color:#5a5e66;background-color:#fff;background-image:none;border:1px solid #d8dce5;border-radius:4px;-webkit-transition:border-color .2s cubic-bezier(.645,.045,.355,1);transition:border-color .2s cubic-bezier(.645,.045,.355,1)}.custom-theme .el-textarea__inner::-webkit-input-placeholder{color:#b4bccc}.custom-theme .el-textarea__inner:-ms-input-placeholder{color:#b4bccc}.custom-theme .el-textarea__inner::-ms-input-placeholder{color:#b4bccc}.custom-theme .el-textarea__inner::placeholder{color:#b4bccc}.custom-theme .el-textarea__inner:hover{border-color:#b4bccc}.custom-theme .el-textarea__inner:focus{outline:0;border-color:#262729}.custom-theme .el-textarea.is-disabled .el-textarea__inner{background-color:#f5f7fa;border-color:#dfe4ed;color:#b4bccc;cursor:not-allowed}.custom-theme .el-textarea.is-disabled .el-textarea__inner::-webkit-input-placeholder{color:#b4bccc}.custom-theme .el-textarea.is-disabled .el-textarea__inner:-ms-input-placeholder{color:#b4bccc}.custom-theme .el-textarea.is-disabled .el-textarea__inner::-ms-input-placeholder{color:#b4bccc}.custom-theme .el-textarea.is-disabled .el-textarea__inner::placeholder{color:#b4bccc}.custom-theme .el-tag{background-color:rgba(38,39,41,.1);display:inline-block;padding:0 10px;height:32px;line-height:30px;font-size:12px;color:#262729;border-radius:4px;-webkit-box-sizing:border-box;box-sizing:border-box;border:1px solid rgba(38,39,41,.2);white-space:nowrap}.custom-theme .el-tag .el-icon-close{border-radius:50%;text-align:center;position:relative;cursor:pointer;font-size:12px;height:18px;width:18px;line-height:18px;vertical-align:middle;top:-1px;right:-5px;color:#262729}.custom-theme .el-tag .el-icon-close::before{display:block}.custom-theme .el-tag .el-icon-close:hover{background-color:#262729;color:#fff}.custom-theme .el-tag--info{background-color:rgba(10,118,164,.1);border-color:rgba(10,118,164,.2);color:#0a76a4}.custom-theme .el-tag--info.is-hit{border-color:#0a76a4}.custom-theme .el-tag--info .el-tag__close{color:#0a76a4}.custom-theme .el-tag--info .el-tag__close:hover{background-color:#0a76a4;color:#fff}.custom-theme .el-tag--success{background-color:rgba(64,145,103,.1);border-color:rgba(64,145,103,.2);color:#409167}.custom-theme .el-tag--success.is-hit{border-color:#409167}.custom-theme .el-tag--success .el-tag__close{color:#409167}.custom-theme .el-tag--success .el-tag__close:hover{background-color:#409167;color:#fff}.custom-theme .el-tag--warning{background-color:rgba(157,164,8,.1);border-color:rgba(157,164,8,.2);color:#9da408}.custom-theme .el-tag--warning.is-hit{border-color:#9da408}.custom-theme .el-tag--warning .el-tag__close{color:#9da408}.custom-theme .el-tag--warning .el-tag__close:hover{background-color:#9da408;color:#fff}.custom-theme .el-tag--danger{background-color:rgba(179,69,14,.1);border-color:rgba(179,69,14,.2);color:#b3450e}.custom-theme .el-tag--danger.is-hit{border-color:#b3450e}.custom-theme .el-tag--danger .el-tag__close{color:#b3450e}.custom-theme .el-tag--danger .el-tag__close:hover{background-color:#b3450e;color:#fff}.custom-theme .el-tag--medium{height:28px;line-height:26px}.custom-theme .el-tag--medium .el-icon-close{-webkit-transform:scale(.8);transform:scale(.8)}.custom-theme .el-tag--small{height:24px;padding:0 8px;line-height:22px}.custom-theme .el-tag--small .el-icon-close{-webkit-transform:scale(.8);transform:scale(.8)}.custom-theme .el-tag--mini{height:20px;padding:0 5px;line-height:19px}.custom-theme .el-tag--mini .el-icon-close{margin-left:-3px;-webkit-transform:scale(.7);transform:scale(.7)}.custom-theme .el-select-dropdown__item{font-size:14px;padding:0 20px;position:relative;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#5a5e66;height:34px;line-height:34px;-webkit-box-sizing:border-box;box-sizing:border-box;cursor:pointer}.custom-theme .el-select-dropdown__item.is-disabled{color:#b4bccc;cursor:not-allowed}.custom-theme .el-select-dropdown__item.is-disabled:hover{background-color:#fff}.custom-theme .el-select-dropdown__item.hover,.custom-theme .el-select-dropdown__item:hover{background-color:#f5f7fa}.custom-theme .el-select-dropdown__item.selected{color:#262729;font-weight:700}.custom-theme .el-select-dropdown__item span{line-height:34px!important}.custom-theme .el-select-group{margin:0;padding:0}.custom-theme .el-select-group__wrap{position:relative;list-style:none;margin:0;padding:0}.custom-theme .el-select-group__wrap:not(:last-of-type){padding-bottom:24px}.custom-theme .el-select-group__wrap:not(:last-of-type)::after{content:'';position:absolute;display:block;left:20px;right:20px;bottom:12px;height:1px;background:#dfe4ed}.custom-theme .el-select-group__title{padding-left:20px;font-size:12px;color:#0a76a4;line-height:30px}.custom-theme .el-select-group .el-select-dropdown__item{padding-left:20px}.custom-theme .el-scrollbar{overflow:hidden;position:relative}.custom-theme .el-scrollbar:active>.el-scrollbar__bar,.custom-theme .el-scrollbar:focus>.el-scrollbar__bar,.custom-theme .el-scrollbar:hover>.el-scrollbar__bar{opacity:1;-webkit-transition:opacity 340ms ease-out;transition:opacity 340ms ease-out}.custom-theme .el-scrollbar__wrap{overflow:scroll;height:100%}.custom-theme .el-scrollbar__wrap--hidden-default::-webkit-scrollbar{width:0;height:0}.custom-theme .el-scrollbar__thumb{position:relative;display:block;width:0;height:0;cursor:pointer;border-radius:inherit;background-color:rgba(135,141,153,.3);-webkit-transition:.3s background-color;transition:.3s background-color}.custom-theme .el-scrollbar__thumb:hover{background-color:rgba(135,141,153,.5)}.custom-theme .el-scrollbar__bar{position:absolute;right:2px;bottom:2px;z-index:1;border-radius:4px;opacity:0;-webkit-transition:opacity 120ms ease-out;transition:opacity 120ms ease-out}.custom-theme .el-scrollbar__bar.is-vertical{width:6px;top:2px}.custom-theme .el-scrollbar__bar.is-vertical>div{width:100%}.custom-theme .el-scrollbar__bar.is-horizontal{height:6px;left:2px}.custom-theme .el-scrollbar__bar.is-horizontal>div{height:100%}.custom-theme .el-select{display:inline-block;position:relative}.custom-theme .el-select:hover .el-input__inner{border-color:#b4bccc}.custom-theme .el-select .el-input__inner{cursor:pointer;padding-right:35px}.custom-theme .el-select .el-input__inner:focus{border-color:#262729}.custom-theme .el-select .el-input .el-select__caret{color:#b4bccc;font-size:14px;-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;-webkit-transform:rotateZ(180deg);transform:rotateZ(180deg);line-height:16px;cursor:pointer}.custom-theme .el-select .el-input .el-select__caret.is-reverse{-webkit-transform:rotateZ(0);transform:rotateZ(0)}.custom-theme .el-select .el-input .el-select__caret.is-show-close{font-size:14px;text-align:center;-webkit-transform:rotateZ(180deg);transform:rotateZ(180deg);border-radius:100%;color:#b4bccc;-webkit-transition:color .2s cubic-bezier(.645,.045,.355,1);transition:color .2s cubic-bezier(.645,.045,.355,1)}.custom-theme .el-select .el-input .el-select__caret.is-show-close:hover{color:#878d99}.custom-theme .el-select .el-input.is-disabled .el-input__inner{cursor:not-allowed}.custom-theme .el-select .el-input.is-disabled .el-input__inner:hover{border-color:#dfe4ed}.custom-theme .el-select>.el-input{display:block}.custom-theme .el-select__input{border:none;outline:0;padding:0;margin-left:15px;color:#666;font-size:14px;vertical-align:baseline;-webkit-appearance:none;-moz-appearance:none;appearance:none;height:28px;background-color:transparent}.custom-theme .el-select__input.is-mini{height:14px}.custom-theme .el-select__close{cursor:pointer;position:absolute;top:8px;z-index:1000;right:25px;color:#b4bccc;line-height:18px;font-size:14px}.custom-theme .el-select__close:hover{color:#878d99}.custom-theme .el-select__tags{position:absolute;line-height:normal;white-space:normal;z-index:1;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.custom-theme .el-select .el-tag__close{margin-top:-2px}.custom-theme .el-select .el-tag{-webkit-box-sizing:border-box;box-sizing:border-box;border-color:transparent;margin:3px 0 3px 6px;background-color:#f0f2f5}.custom-theme .el-select .el-tag__close.el-icon-close{background-color:#b4bccc;right:-7px;color:#fff}.custom-theme .el-select .el-tag__close.el-icon-close:hover{background-color:#878d99}.custom-theme .el-select .el-tag__close.el-icon-close::before{display:block;-webkit-transform:translate(0,.5px);transform:translate(0,.5px)}.custom-theme .el-select__tag{display:inline-block;height:24px;line-height:24px;font-size:14px;border-radius:4px;color:#fff;background-color:#262729}.custom-theme .el-select__tag .el-icon-close{font-size:14px}.custom-theme .el-pagination{white-space:nowrap;padding:2px 5px;color:#2d2f33;font-weight:700}.custom-theme .el-pagination::after,.custom-theme .el-pagination::before{display:table;content:""}.custom-theme .el-pagination::after{clear:both}.custom-theme .el-pagination button,.custom-theme .el-pagination span:not([class*=suffix]){display:inline-block;font-size:13px;min-width:35.5px;height:28px;line-height:28px;vertical-align:top;-webkit-box-sizing:border-box;box-sizing:border-box}.custom-theme .el-pagination .el-input__inner{text-align:center}.custom-theme .el-pagination .el-input__suffix{right:0;-webkit-transform:scale(.8);transform:scale(.8)}.custom-theme .el-pagination .el-select .el-input{width:100px;margin:0 5px}.custom-theme .el-pagination .el-select .el-input .el-input__inner{padding-right:25px;border-radius:3px;height:28px}.custom-theme .el-pagination button{border:none;padding:0 6px;background:0 0}.custom-theme .el-pagination button:focus{outline:0}.custom-theme .el-pagination button:hover{color:#262729}.custom-theme .el-pagination button.disabled{color:#b4bccc;background-color:#fff;cursor:not-allowed}.custom-theme .el-pagination .btn-next,.custom-theme .el-pagination .btn-prev{background:center center no-repeat;background-size:16px;background-color:#fff;cursor:pointer;margin:0;color:#2d2f33}.custom-theme .el-pagination .btn-next .el-icon,.custom-theme .el-pagination .btn-prev .el-icon{display:block;font-size:12px}.custom-theme .el-pagination .btn-prev{padding-right:12px}.custom-theme .el-pagination .btn-next{padding-left:12px}.custom-theme .el-pagination--small .btn-next,.custom-theme .el-pagination--small .btn-prev,.custom-theme .el-pagination--small .el-pager li,.custom-theme .el-pagination--small .el-pager li:last-child{border-color:transparent;font-size:12px;line-height:22px;height:22px;min-width:22px}.custom-theme .el-pagination--small .arrow.disabled{visibility:hidden}.custom-theme .el-pagination__sizes{margin:0 10px 0 0;font-weight:400;color:#5a5e66}.custom-theme .el-pagination__sizes .el-input .el-input__inner{font-size:13px;padding-left:8px}.custom-theme .el-pagination__sizes .el-input .el-input__inner:hover{border-color:#262729}.custom-theme .el-pagination__total{margin-right:10px;font-weight:400;color:#5a5e66}.custom-theme .el-pagination__jump{margin-left:24px;font-weight:400;color:#5a5e66}.custom-theme .el-pagination__jump .el-input__inner{padding:0 3px}.custom-theme .el-pagination__rightwrapper{float:right}.custom-theme .el-pagination__editor{line-height:18px;padding:0 2px;height:28px;text-align:center;margin:0 2px;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:3px;-moz-appearance:textfield}.custom-theme .el-pagination__editor.el-input{width:50px}.custom-theme .el-pagination__editor.el-input .el-input__inner{height:28px}.custom-theme .el-pagination__editor .el-input__inner::-webkit-inner-spin-button,.custom-theme .el-pagination__editor .el-input__inner::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.custom-theme .el-pager{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;list-style:none;display:inline-block;vertical-align:top;font-size:0;padding:0;margin:0}.custom-theme .el-pager .el-icon-more::before{vertical-align:-4px}.custom-theme .el-pager li{padding:0 4px;background:#fff;vertical-align:top;display:inline-block;font-size:13px;min-width:35.5px;height:28px;line-height:28px;cursor:pointer;-webkit-box-sizing:border-box;box-sizing:border-box;text-align:center;margin:0}.custom-theme .el-pager li.btn-quicknext,.custom-theme .el-pager li.btn-quickprev{line-height:28px;color:#2d2f33}.custom-theme .el-pager li.btn-quickprev:hover{cursor:pointer}.custom-theme .el-pager li.btn-quicknext:hover{cursor:pointer}.custom-theme .el-pager li.active+li{border-left:0}.custom-theme .el-pager li:hover{color:#262729}.custom-theme .el-pager li.active{color:#262729;cursor:default}.custom-theme .v-modal-enter{-webkit-animation:v-modal-in .2s ease;animation:v-modal-in .2s ease}.custom-theme .v-modal-leave{-webkit-animation:v-modal-out .2s ease forwards;animation:v-modal-out .2s ease forwards}@-webkit-keyframes v-modal-in{0%{opacity:0}}@keyframes v-modal-in{0%{opacity:0}}@-webkit-keyframes v-modal-out{100%{opacity:0}}@keyframes v-modal-out{100%{opacity:0}}.custom-theme .v-modal{position:fixed;left:0;top:0;width:100%;height:100%;opacity:.5;background:#000}.custom-theme .el-dialog{position:relative;margin:0 auto 50px;background:#fff;border-radius:2px;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.3);box-shadow:0 1px 3px rgba(0,0,0,.3);-webkit-box-sizing:border-box;box-sizing:border-box;width:50%}.custom-theme .el-dialog.is-fullscreen{width:100%;margin-top:0;margin-bottom:0;height:100%;overflow:auto}.custom-theme .el-dialog__wrapper{position:fixed;top:0;right:0;bottom:0;left:0;overflow:auto;margin:0}.custom-theme .el-dialog__header{padding:15px;padding-bottom:10px}.custom-theme .el-dialog__headerbtn{position:absolute;top:15px;right:15px;padding:0;background:0 0;border:none;outline:0;cursor:pointer;font-size:16px}.custom-theme .el-dialog__headerbtn .el-dialog__close{color:#0a76a4}.custom-theme .el-dialog__headerbtn:focus .el-dialog__close,.custom-theme .el-dialog__headerbtn:hover .el-dialog__close{color:#262729}.custom-theme .el-dialog__title{line-height:24px;font-size:18px;color:#2d2f33}.custom-theme .el-dialog__body{padding:30px 20px;color:#5a5e66;line-height:24px;font-size:14px}.custom-theme .el-dialog__footer{padding:15px;padding-top:10px;text-align:right;-webkit-box-sizing:border-box;box-sizing:border-box}.custom-theme .el-dialog--center{text-align:center}.custom-theme .el-dialog--center .el-dialog__header{padding-top:30px}.custom-theme .el-dialog--center .el-dialog__body{text-align:initial;padding:25px 27px 30px}.custom-theme .el-dialog--center .el-dialog__footer{text-align:inherit;padding-bottom:30px}.custom-theme .dialog-fade-enter-active{-webkit-animation:dialog-fade-in .3s;animation:dialog-fade-in .3s}.custom-theme .dialog-fade-leave-active{-webkit-animation:dialog-fade-out .3s;animation:dialog-fade-out .3s}@-webkit-keyframes dialog-fade-in{0%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@keyframes dialog-fade-in{0%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@-webkit-keyframes dialog-fade-out{0%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}100%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}}@keyframes dialog-fade-out{0%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}100%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}}.custom-theme .el-input{position:relative;font-size:14px;display:inline-block;width:100%}.custom-theme .el-input::-webkit-scrollbar{z-index:11;width:6px}.custom-theme .el-input::-webkit-scrollbar:horizontal{height:6px}.custom-theme .el-input::-webkit-scrollbar-thumb{border-radius:5px;width:6px;background:#b4bccc}.custom-theme .el-input::-webkit-scrollbar-corner{background:#fff}.custom-theme .el-input::-webkit-scrollbar-track{background:#fff}.custom-theme .el-input::-webkit-scrollbar-track-piece{background:#fff;width:6px}.custom-theme .el-input__inner{-webkit-appearance:none;background-color:#fff;background-image:none;border-radius:4px;border:1px solid #d8dce5;-webkit-box-sizing:border-box;box-sizing:border-box;color:#5a5e66;display:inline-block;font-size:inherit;height:40px;line-height:1;outline:0;padding:0 15px;-webkit-transition:border-color .2s cubic-bezier(.645,.045,.355,1);transition:border-color .2s cubic-bezier(.645,.045,.355,1);width:100%}.custom-theme .el-input__inner::-webkit-input-placeholder{color:#b4bccc}.custom-theme .el-input__inner:-ms-input-placeholder{color:#b4bccc}.custom-theme .el-input__inner::-ms-input-placeholder{color:#b4bccc}.custom-theme .el-input__inner::placeholder{color:#b4bccc}.custom-theme .el-input__inner:hover{border-color:#b4bccc}.custom-theme .el-input__inner:focus{outline:0;border-color:#262729}.custom-theme .el-input__suffix{position:absolute;height:100%;right:5px;top:0;text-align:center;color:#b4bccc;-webkit-transition:all .3s;transition:all .3s;pointer-events:none}.custom-theme .el-input__suffix-inner{pointer-events:all}.custom-theme .el-input__prefix{position:absolute;height:100%;left:5px;top:0;text-align:center;color:#b4bccc;-webkit-transition:all .3s;transition:all .3s}.custom-theme .el-input__icon{height:100%;width:25px;text-align:center;-webkit-transition:all .3s;transition:all .3s;line-height:40px}.custom-theme .el-input__icon:after{content:'';height:100%;width:0;display:inline-block;vertical-align:middle}.custom-theme .el-input__validateIcon{pointer-events:none}.custom-theme .el-input.is-active .el-input__inner{outline:0;border-color:#262729}.custom-theme .el-input.is-disabled .el-input__inner{background-color:#f5f7fa;border-color:#dfe4ed;color:#b4bccc;cursor:not-allowed}.custom-theme .el-input.is-disabled .el-input__inner::-webkit-input-placeholder{color:#b4bccc}.custom-theme .el-input.is-disabled .el-input__inner:-ms-input-placeholder{color:#b4bccc}.custom-theme .el-input.is-disabled .el-input__inner::-ms-input-placeholder{color:#b4bccc}.custom-theme .el-input.is-disabled .el-input__inner::placeholder{color:#b4bccc}.custom-theme .el-input.is-disabled .el-input__icon{cursor:not-allowed}.custom-theme .el-input--suffix .el-input__inner{padding-right:30px}.custom-theme .el-input--prefix .el-input__inner{padding-left:30px}.custom-theme .el-input--medium{font-size:14px}.custom-theme .el-input--medium .el-input__inner{height:36px}.custom-theme .el-input--medium .el-input__icon{line-height:36px}.custom-theme .el-input--small{font-size:13px}.custom-theme .el-input--small .el-input__inner{height:32px}.custom-theme .el-input--small .el-input__icon{line-height:32px}.custom-theme .el-input--mini{font-size:12px}.custom-theme .el-input--mini .el-input__inner{height:28px}.custom-theme .el-input--mini .el-input__icon{line-height:28px}.custom-theme .el-input-group{line-height:normal;display:inline-table;width:100%;border-collapse:separate}.custom-theme .el-input-group>.el-input__inner{vertical-align:middle;display:table-cell}.custom-theme .el-input-group__append,.custom-theme .el-input-group__prepend{background-color:#f5f7fa;color:#0a76a4;vertical-align:middle;display:table-cell;position:relative;border:1px solid #d8dce5;border-radius:4px;padding:0 20px;width:1px;white-space:nowrap}.custom-theme .el-input-group__append:focus,.custom-theme .el-input-group__prepend:focus{outline:0}.custom-theme .el-input-group__append .el-button,.custom-theme .el-input-group__append .el-select,.custom-theme .el-input-group__prepend .el-button,.custom-theme .el-input-group__prepend .el-select{display:inline-block;margin:-20px}.custom-theme .el-input-group__append button.el-button,.custom-theme .el-input-group__append div.el-select .el-input__inner,.custom-theme .el-input-group__append div.el-select:hover .el-input__inner,.custom-theme .el-input-group__prepend button.el-button,.custom-theme .el-input-group__prepend div.el-select .el-input__inner,.custom-theme .el-input-group__prepend div.el-select:hover .el-input__inner{border-color:transparent;background-color:transparent;color:inherit;border-top:0;border-bottom:0}.custom-theme .el-input-group__append .el-button,.custom-theme .el-input-group__append .el-input,.custom-theme .el-input-group__prepend .el-button,.custom-theme .el-input-group__prepend .el-input{font-size:inherit}.custom-theme .el-input-group__prepend{border-right:0;border-top-right-radius:0;border-bottom-right-radius:0}.custom-theme .el-input-group__append{border-left:0;border-top-left-radius:0;border-bottom-left-radius:0}.custom-theme .el-input-group--prepend .el-input__inner{border-top-left-radius:0;border-bottom-left-radius:0}.custom-theme .el-input-group--append .el-input__inner{border-top-right-radius:0;border-bottom-right-radius:0}.custom-theme .el-textarea{display:inline-block;width:100%;vertical-align:bottom}.custom-theme .el-textarea__inner{display:block;resize:vertical;padding:5px 15px;line-height:1.5;-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;font-size:14px;color:#5a5e66;background-color:#fff;background-image:none;border:1px solid #d8dce5;border-radius:4px;-webkit-transition:border-color .2s cubic-bezier(.645,.045,.355,1);transition:border-color .2s cubic-bezier(.645,.045,.355,1)}.custom-theme .el-textarea__inner::-webkit-input-placeholder{color:#b4bccc}.custom-theme .el-textarea__inner:-ms-input-placeholder{color:#b4bccc}.custom-theme .el-textarea__inner::-ms-input-placeholder{color:#b4bccc}.custom-theme .el-textarea__inner::placeholder{color:#b4bccc}.custom-theme .el-textarea__inner:hover{border-color:#b4bccc}.custom-theme .el-textarea__inner:focus{outline:0;border-color:#262729}.custom-theme .el-textarea.is-disabled .el-textarea__inner{background-color:#f5f7fa;border-color:#dfe4ed;color:#b4bccc;cursor:not-allowed}.custom-theme .el-textarea.is-disabled .el-textarea__inner::-webkit-input-placeholder{color:#b4bccc}.custom-theme .el-textarea.is-disabled .el-textarea__inner:-ms-input-placeholder{color:#b4bccc}.custom-theme .el-textarea.is-disabled .el-textarea__inner::-ms-input-placeholder{color:#b4bccc}.custom-theme .el-textarea.is-disabled .el-textarea__inner::placeholder{color:#b4bccc}.custom-theme .el-scrollbar{overflow:hidden;position:relative}.custom-theme .el-scrollbar:active>.el-scrollbar__bar,.custom-theme .el-scrollbar:focus>.el-scrollbar__bar,.custom-theme .el-scrollbar:hover>.el-scrollbar__bar{opacity:1;-webkit-transition:opacity 340ms ease-out;transition:opacity 340ms ease-out}.custom-theme .el-scrollbar__wrap{overflow:scroll;height:100%}.custom-theme .el-scrollbar__wrap--hidden-default::-webkit-scrollbar{width:0;height:0}.custom-theme .el-scrollbar__thumb{position:relative;display:block;width:0;height:0;cursor:pointer;border-radius:inherit;background-color:rgba(135,141,153,.3);-webkit-transition:.3s background-color;transition:.3s background-color}.custom-theme .el-scrollbar__thumb:hover{background-color:rgba(135,141,153,.5)}.custom-theme .el-scrollbar__bar{position:absolute;right:2px;bottom:2px;z-index:1;border-radius:4px;opacity:0;-webkit-transition:opacity 120ms ease-out;transition:opacity 120ms ease-out}.custom-theme .el-scrollbar__bar.is-vertical{width:6px;top:2px}.custom-theme .el-scrollbar__bar.is-vertical>div{width:100%}.custom-theme .el-scrollbar__bar.is-horizontal{height:6px;left:2px}.custom-theme .el-scrollbar__bar.is-horizontal>div{height:100%}.custom-theme .el-popper .popper__arrow,.custom-theme .el-popper .popper__arrow::after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.custom-theme .el-popper .popper__arrow{border-width:6px;-webkit-filter:drop-shadow(0 2px 12px rgba(0, 0, 0, .03));filter:drop-shadow(0 2px 12px rgba(0, 0, 0, .03))}.custom-theme .el-popper .popper__arrow::after{content:" ";border-width:6px}.custom-theme .el-popper[x-placement^=top]{margin-bottom:12px}.custom-theme .el-popper[x-placement^=top] .popper__arrow{bottom:-6px;left:50%;margin-right:3px;border-top-color:#e6ebf5;border-bottom-width:0}.custom-theme .el-popper[x-placement^=top] .popper__arrow::after{bottom:1px;margin-left:-6px;border-top-color:#fff;border-bottom-width:0}.custom-theme .el-popper[x-placement^=bottom]{margin-top:12px}.custom-theme .el-popper[x-placement^=bottom] .popper__arrow{top:-6px;left:50%;margin-right:3px;border-top-width:0;border-bottom-color:#e6ebf5}.custom-theme .el-popper[x-placement^=bottom] .popper__arrow::after{top:1px;margin-left:-6px;border-top-width:0;border-bottom-color:#fff}.custom-theme .el-popper[x-placement^=right]{margin-left:12px}.custom-theme .el-popper[x-placement^=right] .popper__arrow{top:50%;left:-6px;margin-bottom:3px;border-right-color:#e6ebf5;border-left-width:0}.custom-theme .el-popper[x-placement^=right] .popper__arrow::after{bottom:-6px;left:1px;border-right-color:#fff;border-left-width:0}.custom-theme .el-popper[x-placement^=left]{margin-right:12px}.custom-theme .el-popper[x-placement^=left] .popper__arrow{top:50%;right:-6px;margin-bottom:3px;border-right-width:0;border-left-color:#e6ebf5}.custom-theme .el-popper[x-placement^=left] .popper__arrow::after{right:1px;bottom:-6px;margin-left:-6px;border-right-width:0;border-left-color:#fff}.custom-theme .el-autocomplete{position:relative;display:inline-block}.custom-theme .el-autocomplete-suggestion{margin:5px 0;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);border-radius:4px}.custom-theme .el-autocomplete-suggestion.el-popper .popper__arrow{left:24px!important}.custom-theme .el-autocomplete-suggestion__wrap{max-height:280px;padding:10px 0;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:auto;background-color:#fff;border:1px solid #dfe4ed;border-radius:4px}.custom-theme .el-autocomplete-suggestion__list{margin:0;padding:0}.custom-theme .el-autocomplete-suggestion li{padding:0 20px;margin:0;line-height:34px;cursor:pointer;color:#5a5e66;font-size:14px;list-style:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.custom-theme .el-autocomplete-suggestion li:hover{background-color:#f5f7fa}.custom-theme .el-autocomplete-suggestion li.highlighted{background-color:#f5f7fa}.custom-theme .el-autocomplete-suggestion li.divider{margin-top:6px;border-top:1px solid #000}.custom-theme .el-autocomplete-suggestion li.divider:last-child{margin-bottom:-6px}.custom-theme .el-autocomplete-suggestion.is-loading li{text-align:center;height:100px;line-height:100px;font-size:20px;color:#999}.custom-theme .el-autocomplete-suggestion.is-loading li::after{display:inline-block;content:"";height:100%;vertical-align:middle}.custom-theme .el-autocomplete-suggestion.is-loading li:hover{background-color:#fff}.custom-theme .el-autocomplete-suggestion.is-loading .el-icon-loading{vertical-align:middle}.custom-theme .el-button{display:inline-block;line-height:1;white-space:nowrap;cursor:pointer;background:#fff;border:1px solid #d8dce5;border-color:#d8dce5;color:#5a5e66;-webkit-appearance:none;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;outline:0;margin:0;-webkit-transition:.1s;transition:.1s;font-weight:500;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;padding:12px 20px;font-size:14px;border-radius:4px}.custom-theme .el-button+.el-button{margin-left:10px}.custom-theme .el-button.is-round{padding:12px 20px}.custom-theme .el-button:focus,.custom-theme .el-button:hover{color:#262729;border-color:#bebebf;background-color:#e9e9ea}.custom-theme .el-button:active{color:#222325;border-color:#222325;outline:0}.custom-theme .el-button::-moz-focus-inner{border:0}.custom-theme .el-button [class*=el-icon-]+span{margin-left:5px}.custom-theme .el-button.is-plain:focus,.custom-theme .el-button.is-plain:hover{background:#fff;border-color:#262729;color:#262729}.custom-theme .el-button.is-plain:active{background:#fff;border-color:#222325;color:#222325;outline:0}.custom-theme .el-button.is-active{color:#222325;border-color:#222325}.custom-theme .el-button.is-disabled,.custom-theme .el-button.is-disabled:focus,.custom-theme .el-button.is-disabled:hover{color:#b4bccc;cursor:not-allowed;background-image:none;background-color:#fff;border-color:#e6ebf5}.custom-theme .el-button.is-disabled.el-button--text{background-color:transparent}.custom-theme .el-button.is-disabled.is-plain,.custom-theme .el-button.is-disabled.is-plain:focus,.custom-theme .el-button.is-disabled.is-plain:hover{background-color:#fff;border-color:#e6ebf5;color:#b4bccc}.custom-theme .el-button.is-loading{position:relative;pointer-events:none}.custom-theme .el-button.is-loading:before{pointer-events:none;content:'';position:absolute;left:-1px;top:-1px;right:-1px;bottom:-1px;border-radius:inherit;background-color:rgba(255,255,255,.35)}.custom-theme .el-button.is-round{border-radius:20px;padding:12px 23px}.custom-theme .el-button--primary{color:#fff;background-color:#262729;border-color:#262729}.custom-theme .el-button--primary:focus,.custom-theme .el-button--primary:hover{background:#515254;border-color:#515254;color:#fff}.custom-theme .el-button--primary:active{background:#222325;border-color:#222325;color:#fff;outline:0}.custom-theme .el-button--primary.is-active{background:#222325;border-color:#222325;color:#fff}.custom-theme .el-button--primary.is-disabled,.custom-theme .el-button--primary.is-disabled:active,.custom-theme .el-button--primary.is-disabled:focus,.custom-theme .el-button--primary.is-disabled:hover{color:#fff;background-color:#939394;border-color:#939394}.custom-theme .el-button--primary.is-plain{color:#262729;background:#e9e9ea;border-color:#a8a9a9}.custom-theme .el-button--primary.is-plain:focus,.custom-theme .el-button--primary.is-plain:hover{background:#262729;border-color:#262729;color:#fff}.custom-theme .el-button--primary.is-plain:active{background:#222325;border-color:#222325;color:#fff;outline:0}.custom-theme .el-button--primary.is-plain.is-disabled,.custom-theme .el-button--primary.is-plain.is-disabled:active,.custom-theme .el-button--primary.is-plain.is-disabled:focus,.custom-theme .el-button--primary.is-plain.is-disabled:hover{color:#7d7d7f;background-color:#e9e9ea;border-color:#d4d4d4}.custom-theme .el-button--success{color:#fff;background-color:#409167;border-color:#409167}.custom-theme .el-button--success:focus,.custom-theme .el-button--success:hover{background:#66a785;border-color:#66a785;color:#fff}.custom-theme .el-button--success:active{background:#3a835d;border-color:#3a835d;color:#fff;outline:0}.custom-theme .el-button--success.is-active{background:#3a835d;border-color:#3a835d;color:#fff}.custom-theme .el-button--success.is-disabled,.custom-theme .el-button--success.is-disabled:active,.custom-theme .el-button--success.is-disabled:focus,.custom-theme .el-button--success.is-disabled:hover{color:#fff;background-color:#a0c8b3;border-color:#a0c8b3}.custom-theme .el-button--success.is-plain{color:#409167;background:#ecf4f0;border-color:#b3d3c2}.custom-theme .el-button--success.is-plain:focus,.custom-theme .el-button--success.is-plain:hover{background:#409167;border-color:#409167;color:#fff}.custom-theme .el-button--success.is-plain:active{background:#3a835d;border-color:#3a835d;color:#fff;outline:0}.custom-theme .el-button--success.is-plain.is-disabled,.custom-theme .el-button--success.is-plain.is-disabled:active,.custom-theme .el-button--success.is-plain.is-disabled:focus,.custom-theme .el-button--success.is-plain.is-disabled:hover{color:#8cbda4;background-color:#ecf4f0;border-color:#d9e9e1}.custom-theme .el-button--warning{color:#fff;background-color:#9da408;border-color:#9da408}.custom-theme .el-button--warning:focus,.custom-theme .el-button--warning:hover{background:#b1b639;border-color:#b1b639;color:#fff}.custom-theme .el-button--warning:active{background:#8d9407;border-color:#8d9407;color:#fff;outline:0}.custom-theme .el-button--warning.is-active{background:#8d9407;border-color:#8d9407;color:#fff}.custom-theme .el-button--warning.is-disabled,.custom-theme .el-button--warning.is-disabled:active,.custom-theme .el-button--warning.is-disabled:focus,.custom-theme .el-button--warning.is-disabled:hover{color:#fff;background-color:#ced284;border-color:#ced284}.custom-theme .el-button--warning.is-plain{color:#9da408;background:#f5f6e6;border-color:#d8db9c}.custom-theme .el-button--warning.is-plain:focus,.custom-theme .el-button--warning.is-plain:hover{background:#9da408;border-color:#9da408;color:#fff}.custom-theme .el-button--warning.is-plain:active{background:#8d9407;border-color:#8d9407;color:#fff;outline:0}.custom-theme .el-button--warning.is-plain.is-disabled,.custom-theme .el-button--warning.is-plain.is-disabled:active,.custom-theme .el-button--warning.is-plain.is-disabled:focus,.custom-theme .el-button--warning.is-plain.is-disabled:hover{color:#c4c86b;background-color:#f5f6e6;border-color:#ebedce}.custom-theme .el-button--danger{color:#fff;background-color:#b3450e;border-color:#b3450e}.custom-theme .el-button--danger:focus,.custom-theme .el-button--danger:hover{background:#c26a3e;border-color:#c26a3e;color:#fff}.custom-theme .el-button--danger:active{background:#a13e0d;border-color:#a13e0d;color:#fff;outline:0}.custom-theme .el-button--danger.is-active{background:#a13e0d;border-color:#a13e0d;color:#fff}.custom-theme .el-button--danger.is-disabled,.custom-theme .el-button--danger.is-disabled:active,.custom-theme .el-button--danger.is-disabled:focus,.custom-theme .el-button--danger.is-disabled:hover{color:#fff;background-color:#d9a287;border-color:#d9a287}.custom-theme .el-button--danger.is-plain{color:#b3450e;background:#f7ece7;border-color:#e1b59f}.custom-theme .el-button--danger.is-plain:focus,.custom-theme .el-button--danger.is-plain:hover{background:#b3450e;border-color:#b3450e;color:#fff}.custom-theme .el-button--danger.is-plain:active{background:#a13e0d;border-color:#a13e0d;color:#fff;outline:0}.custom-theme .el-button--danger.is-plain.is-disabled,.custom-theme .el-button--danger.is-plain.is-disabled:active,.custom-theme .el-button--danger.is-plain.is-disabled:focus,.custom-theme .el-button--danger.is-plain.is-disabled:hover{color:#d18f6e;background-color:#f7ece7;border-color:#f0dacf}.custom-theme .el-button--info{color:#fff;background-color:#0a76a4;border-color:#0a76a4}.custom-theme .el-button--info:focus,.custom-theme .el-button--info:hover{background:#3b91b6;border-color:#3b91b6;color:#fff}.custom-theme .el-button--info:active{background:#096a94;border-color:#096a94;color:#fff;outline:0}.custom-theme .el-button--info.is-active{background:#096a94;border-color:#096a94;color:#fff}.custom-theme .el-button--info.is-disabled,.custom-theme .el-button--info.is-disabled:active,.custom-theme .el-button--info.is-disabled:focus,.custom-theme .el-button--info.is-disabled:hover{color:#fff;background-color:#85bbd2;border-color:#85bbd2}.custom-theme .el-button--info.is-plain{color:#0a76a4;background:#e7f1f6;border-color:#9dc8db}.custom-theme .el-button--info.is-plain:focus,.custom-theme .el-button--info.is-plain:hover{background:#0a76a4;border-color:#0a76a4;color:#fff}.custom-theme .el-button--info.is-plain:active{background:#096a94;border-color:#096a94;color:#fff;outline:0}.custom-theme .el-button--info.is-plain.is-disabled,.custom-theme .el-button--info.is-plain.is-disabled:active,.custom-theme .el-button--info.is-plain.is-disabled:focus,.custom-theme .el-button--info.is-plain.is-disabled:hover{color:#6cadc8;background-color:#e7f1f6;border-color:#cee4ed}.custom-theme .el-button--medium{padding:10px 20px;font-size:14px;border-radius:4px}.custom-theme .el-button--medium.is-round{padding:10px 20px}.custom-theme .el-button--small{padding:9px 15px;font-size:12px;border-radius:3px}.custom-theme .el-button--small.is-round{padding:9px 15px}.custom-theme .el-button--mini{padding:7px 15px;font-size:12px;border-radius:3px}.custom-theme .el-button--mini.is-round{padding:7px 15px}.custom-theme .el-button--text{border:none;color:#262729;background:0 0;padding-left:0;padding-right:0}.custom-theme .el-button--text:focus,.custom-theme .el-button--text:hover{color:#515254;border-color:transparent;background-color:transparent}.custom-theme .el-button--text:active{color:#222325;border-color:transparent;background-color:transparent}.custom-theme .el-button-group{display:inline-block;vertical-align:middle}.custom-theme .el-button-group::after,.custom-theme .el-button-group::before{display:table;content:""}.custom-theme .el-button-group::after{clear:both}.custom-theme .el-button-group .el-button{float:left;position:relative}.custom-theme .el-button-group .el-button+.el-button{margin-left:0}.custom-theme .el-button-group .el-button:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.custom-theme .el-button-group .el-button:last-child{border-top-left-radius:0;border-bottom-left-radius:0}.custom-theme .el-button-group .el-button:not(:first-child):not(:last-child){border-radius:0}.custom-theme .el-button-group .el-button:not(:last-child){margin-right:-1px}.custom-theme .el-button-group .el-button:active,.custom-theme .el-button-group .el-button:focus,.custom-theme .el-button-group .el-button:hover{z-index:1}.custom-theme .el-button-group .el-button.is-active{z-index:1}.custom-theme .el-button-group .el-button--primary:first-child{border-right-color:rgba(255,255,255,.5)}.custom-theme .el-button-group .el-button--primary:last-child{border-left-color:rgba(255,255,255,.5)}.custom-theme .el-button-group .el-button--primary:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.custom-theme .el-button-group .el-button--success:first-child{border-right-color:rgba(255,255,255,.5)}.custom-theme .el-button-group .el-button--success:last-child{border-left-color:rgba(255,255,255,.5)}.custom-theme .el-button-group .el-button--success:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.custom-theme .el-button-group .el-button--warning:first-child{border-right-color:rgba(255,255,255,.5)}.custom-theme .el-button-group .el-button--warning:last-child{border-left-color:rgba(255,255,255,.5)}.custom-theme .el-button-group .el-button--warning:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.custom-theme .el-button-group .el-button--danger:first-child{border-right-color:rgba(255,255,255,.5)}.custom-theme .el-button-group .el-button--danger:last-child{border-left-color:rgba(255,255,255,.5)}.custom-theme .el-button-group .el-button--danger:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.custom-theme .el-button-group .el-button--info:first-child{border-right-color:rgba(255,255,255,.5)}.custom-theme .el-button-group .el-button--info:last-child{border-left-color:rgba(255,255,255,.5)}.custom-theme .el-button-group .el-button--info:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.custom-theme .el-popper .popper__arrow,.custom-theme .el-popper .popper__arrow::after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.custom-theme .el-popper .popper__arrow{border-width:6px;-webkit-filter:drop-shadow(0 2px 12px rgba(0, 0, 0, .03));filter:drop-shadow(0 2px 12px rgba(0, 0, 0, .03))}.custom-theme .el-popper .popper__arrow::after{content:" ";border-width:6px}.custom-theme .el-popper[x-placement^=top]{margin-bottom:12px}.custom-theme .el-popper[x-placement^=top] .popper__arrow{bottom:-6px;left:50%;margin-right:3px;border-top-color:#e6ebf5;border-bottom-width:0}.custom-theme .el-popper[x-placement^=top] .popper__arrow::after{bottom:1px;margin-left:-6px;border-top-color:#fff;border-bottom-width:0}.custom-theme .el-popper[x-placement^=bottom]{margin-top:12px}.custom-theme .el-popper[x-placement^=bottom] .popper__arrow{top:-6px;left:50%;margin-right:3px;border-top-width:0;border-bottom-color:#e6ebf5}.custom-theme .el-popper[x-placement^=bottom] .popper__arrow::after{top:1px;margin-left:-6px;border-top-width:0;border-bottom-color:#fff}.custom-theme .el-popper[x-placement^=right]{margin-left:12px}.custom-theme .el-popper[x-placement^=right] .popper__arrow{top:50%;left:-6px;margin-bottom:3px;border-right-color:#e6ebf5;border-left-width:0}.custom-theme .el-popper[x-placement^=right] .popper__arrow::after{bottom:-6px;left:1px;border-right-color:#fff;border-left-width:0}.custom-theme .el-popper[x-placement^=left]{margin-right:12px}.custom-theme .el-popper[x-placement^=left] .popper__arrow{top:50%;right:-6px;margin-bottom:3px;border-right-width:0;border-left-color:#e6ebf5}.custom-theme .el-popper[x-placement^=left] .popper__arrow::after{right:1px;bottom:-6px;margin-left:-6px;border-right-width:0;border-left-color:#fff}.custom-theme .el-dropdown{display:inline-block;position:relative;color:#5a5e66;font-size:14px}.custom-theme .el-dropdown .el-button-group{display:block}.custom-theme .el-dropdown .el-button-group .el-button{float:none}.custom-theme .el-dropdown .el-dropdown__caret-button{padding-left:5px;padding-right:5px;position:relative;border-left:none}.custom-theme .el-dropdown .el-dropdown__caret-button::before{content:'';position:absolute;display:block;width:1px;top:5px;bottom:5px;left:0;background:rgba(255,255,255,.5)}.custom-theme .el-dropdown .el-dropdown__caret-button:hover::before{top:0;bottom:0}.custom-theme .el-dropdown .el-dropdown__caret-button .el-dropdown__icon{padding-left:0}.custom-theme .el-dropdown__icon{font-size:12px;margin:0 3px}.custom-theme .el-dropdown-menu{position:absolute;top:0;left:0;z-index:10;padding:10px 0;margin:5px 0;background-color:#fff;border:1px solid #e6ebf5;border-radius:4px;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.custom-theme .el-dropdown-menu__item{list-style:none;line-height:36px;padding:0 20px;margin:0;font-size:14px;color:#5a5e66;cursor:pointer}.custom-theme .el-dropdown-menu__item:not(.is-disabled):hover{background-color:#e9e9ea;color:#515254}.custom-theme .el-dropdown-menu__item--divided{position:relative;margin-top:6px;border-top:1px solid #e6ebf5}.custom-theme .el-dropdown-menu__item--divided:before{content:'';height:6px;display:block;margin:0 -20px;background-color:#fff}.custom-theme .el-dropdown-menu__item.is-disabled{cursor:default;color:#bbb;pointer-events:none}.custom-theme .el-dropdown-menu--medium{padding:6px 0}.custom-theme .el-dropdown-menu--medium .el-dropdown-menu__item{line-height:30px;padding:0 17px;font-size:14px}.custom-theme .el-dropdown-menu--medium .el-dropdown-menu__item.el-dropdown-menu__item--divided{margin-top:6px}.custom-theme .el-dropdown-menu--medium .el-dropdown-menu__item.el-dropdown-menu__item--divided:before{height:6px;margin:0 -17px}.custom-theme .el-dropdown-menu--small{padding:6px 0}.custom-theme .el-dropdown-menu--small .el-dropdown-menu__item{line-height:27px;padding:0 15px;font-size:13px}.custom-theme .el-dropdown-menu--small .el-dropdown-menu__item.el-dropdown-menu__item--divided{margin-top:4px}.custom-theme .el-dropdown-menu--small .el-dropdown-menu__item.el-dropdown-menu__item--divided:before{height:4px;margin:0 -15px}.custom-theme .el-dropdown-menu--mini{padding:3px 0}.custom-theme .el-dropdown-menu--mini .el-dropdown-menu__item{line-height:24px;padding:0 10px;font-size:12px}.custom-theme .el-dropdown-menu--mini .el-dropdown-menu__item.el-dropdown-menu__item--divided{margin-top:3px}.custom-theme .el-dropdown-menu--mini .el-dropdown-menu__item.el-dropdown-menu__item--divided:before{height:3px;margin:0 -10px}.custom-theme .el-menu{border-right:solid 1px #e6e6e6;list-style:none;position:relative;margin:0;padding-left:0;background-color:#fff}.custom-theme .el-menu::after,.custom-theme .el-menu::before{display:table;content:""}.custom-theme .el-menu::after{clear:both}.custom-theme .el-menu li{list-style:none}.custom-theme .el-menu--horizontal{border-right:none;border-bottom:solid 1px #e6e6e6}.custom-theme .el-menu--horizontal .el-menu-item{float:left;height:60px;line-height:60px;margin:0;cursor:pointer;position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;border-bottom:2px solid transparent;color:#878d99}.custom-theme .el-menu--horizontal .el-menu-item a,.custom-theme .el-menu--horizontal .el-menu-item a:hover{color:inherit}.custom-theme .el-menu--horizontal .el-menu-item:focus,.custom-theme .el-menu--horizontal .el-menu-item:hover{background-color:#fff}.custom-theme .el-menu--horizontal .el-submenu{float:left;position:relative}.custom-theme .el-menu--horizontal .el-submenu:focus{outline:0}.custom-theme .el-menu--horizontal .el-submenu:focus>.el-submenu__title{color:#2d2f33}.custom-theme .el-menu--horizontal .el-submenu>.el-menu{position:absolute;top:65px;left:0;border:none;padding:5px 0;background-color:#fff;z-index:100;min-width:100%;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);border-radius:2px}.custom-theme .el-menu--horizontal .el-submenu .el-submenu__title{height:60px;line-height:60px;border-bottom:2px solid transparent;color:#878d99}.custom-theme .el-menu--horizontal .el-submenu .el-submenu__title:hover{background-color:#fff}.custom-theme .el-menu--horizontal .el-submenu .el-menu-item{background-color:#fff;float:none;height:36px;line-height:36px;padding:0 10px}.custom-theme .el-menu--horizontal .el-submenu .el-submenu__icon-arrow{position:static;vertical-align:middle;margin-left:8px;margin-top:-3px}.custom-theme .el-menu--horizontal .el-menu-item:focus,.custom-theme .el-menu--horizontal .el-menu-item:hover,.custom-theme .el-menu--horizontal .el-submenu__title:hover{outline:0;color:#2d2f33}.custom-theme .el-menu--horizontal>.el-menu-item.is-active,.custom-theme .el-menu--horizontal>.el-submenu.is-active .el-submenu__title{border-bottom:2px solid #262729;color:#2d2f33}.custom-theme .el-menu--collapse{width:64px}.custom-theme .el-menu--collapse>.el-menu-item [class^=el-icon-],.custom-theme .el-menu--collapse>.el-submenu>.el-submenu__title [class^=el-icon-]{margin:0;vertical-align:middle;width:24px;text-align:center}.custom-theme .el-menu--collapse>.el-menu-item .el-submenu__icon-arrow,.custom-theme .el-menu--collapse>.el-submenu>.el-submenu__title .el-submenu__icon-arrow{display:none}.custom-theme .el-menu--collapse>.el-menu-item span,.custom-theme .el-menu--collapse>.el-submenu>.el-submenu__title span{height:0;width:0;overflow:hidden;visibility:hidden;display:inline-block}.custom-theme .el-menu--collapse>.el-menu-item.is-active i{color:inherit}.custom-theme .el-menu--collapse .el-menu .el-submenu{min-width:200px}.custom-theme .el-menu--collapse .el-submenu{position:relative}.custom-theme .el-menu--collapse .el-submenu .el-menu{position:absolute;margin-left:5px;top:0;left:100%;z-index:10;border:1px solid #dfe4ed;border-radius:2px;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.custom-theme .el-menu--collapse .el-submenu.is-opened>.el-submenu__title .el-submenu__icon-arrow{-webkit-transform:none;transform:none}.custom-theme .el-menu-item{height:56px;line-height:56px;font-size:14px;color:#2d2f33;padding:0 20px;cursor:pointer;position:relative;-webkit-transition:border-color .3s,background-color .3s,color .3s;transition:border-color .3s,background-color .3s,color .3s;-webkit-box-sizing:border-box;box-sizing:border-box;white-space:nowrap}.custom-theme .el-menu-item [class^=el-icon-]{margin-right:5px;width:24px;text-align:center;font-size:18px}.custom-theme .el-menu-item *{vertical-align:middle}.custom-theme .el-menu-item:first-child{margin-left:0}.custom-theme .el-menu-item:last-child{margin-right:0}.custom-theme .el-menu-item:focus,.custom-theme .el-menu-item:hover{outline:0;background-color:#e9e9ea}.custom-theme .el-menu-item i{color:#878d99}.custom-theme .el-menu-item.is-active{color:#262729}.custom-theme .el-menu-item.is-active i{color:inherit}.custom-theme .el-submenu__title{position:relative;height:56px;line-height:56px;font-size:14px;color:#2d2f33;padding:0 20px;cursor:pointer;position:relative;-webkit-transition:border-color .3s,background-color .3s,color .3s;transition:border-color .3s,background-color .3s,color .3s;-webkit-box-sizing:border-box;box-sizing:border-box;white-space:nowrap}.custom-theme .el-submenu__title *{vertical-align:middle}.custom-theme .el-submenu__title i{color:#878d99}.custom-theme .el-submenu__title:hover{background-color:#e9e9ea}.custom-theme .el-submenu .el-menu{border:none}.custom-theme .el-submenu .el-menu-item{height:50px;line-height:50px;padding:0 45px;min-width:200px}.custom-theme .el-submenu__icon-arrow{position:absolute;top:50%;right:20px;margin-top:-7px;-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;font-size:12px}.custom-theme .el-submenu.is-active .el-submenu__title{border-bottom-color:#262729}.custom-theme .el-submenu.is-opened>.el-submenu__title .el-submenu__icon-arrow{-webkit-transform:rotateZ(180deg);transform:rotateZ(180deg)}.custom-theme .el-submenu [class^=el-icon-]{vertical-align:middle;margin-right:5px;width:24px;text-align:center;font-size:18px}.custom-theme .el-menu-item-group>ul{padding:0}.custom-theme .el-menu-item-group__title{padding:7px 0 7px 20px;line-height:normal;font-size:12px;color:#878d99}.custom-theme .horizontal-collapse-transition .el-submenu__title .el-submenu__icon-arrow{-webkit-transition:.2s;transition:.2s;opacity:0}.custom-theme .el-input{position:relative;font-size:14px;display:inline-block;width:100%}.custom-theme .el-input::-webkit-scrollbar{z-index:11;width:6px}.custom-theme .el-input::-webkit-scrollbar:horizontal{height:6px}.custom-theme .el-input::-webkit-scrollbar-thumb{border-radius:5px;width:6px;background:#b4bccc}.custom-theme .el-input::-webkit-scrollbar-corner{background:#fff}.custom-theme .el-input::-webkit-scrollbar-track{background:#fff}.custom-theme .el-input::-webkit-scrollbar-track-piece{background:#fff;width:6px}.custom-theme .el-input__inner{-webkit-appearance:none;background-color:#fff;background-image:none;border-radius:4px;border:1px solid #d8dce5;-webkit-box-sizing:border-box;box-sizing:border-box;color:#5a5e66;display:inline-block;font-size:inherit;height:40px;line-height:1;outline:0;padding:0 15px;-webkit-transition:border-color .2s cubic-bezier(.645,.045,.355,1);transition:border-color .2s cubic-bezier(.645,.045,.355,1);width:100%}.custom-theme .el-input__inner::-webkit-input-placeholder{color:#b4bccc}.custom-theme .el-input__inner:-ms-input-placeholder{color:#b4bccc}.custom-theme .el-input__inner::-ms-input-placeholder{color:#b4bccc}.custom-theme .el-input__inner::placeholder{color:#b4bccc}.custom-theme .el-input__inner:hover{border-color:#b4bccc}.custom-theme .el-input__inner:focus{outline:0;border-color:#262729}.custom-theme .el-input__suffix{position:absolute;height:100%;right:5px;top:0;text-align:center;color:#b4bccc;-webkit-transition:all .3s;transition:all .3s;pointer-events:none}.custom-theme .el-input__suffix-inner{pointer-events:all}.custom-theme .el-input__prefix{position:absolute;height:100%;left:5px;top:0;text-align:center;color:#b4bccc;-webkit-transition:all .3s;transition:all .3s}.custom-theme .el-input__icon{height:100%;width:25px;text-align:center;-webkit-transition:all .3s;transition:all .3s;line-height:40px}.custom-theme .el-input__icon:after{content:'';height:100%;width:0;display:inline-block;vertical-align:middle}.custom-theme .el-input__validateIcon{pointer-events:none}.custom-theme .el-input.is-active .el-input__inner{outline:0;border-color:#262729}.custom-theme .el-input.is-disabled .el-input__inner{background-color:#f5f7fa;border-color:#dfe4ed;color:#b4bccc;cursor:not-allowed}.custom-theme .el-input.is-disabled .el-input__inner::-webkit-input-placeholder{color:#b4bccc}.custom-theme .el-input.is-disabled .el-input__inner:-ms-input-placeholder{color:#b4bccc}.custom-theme .el-input.is-disabled .el-input__inner::-ms-input-placeholder{color:#b4bccc}.custom-theme .el-input.is-disabled .el-input__inner::placeholder{color:#b4bccc}.custom-theme .el-input.is-disabled .el-input__icon{cursor:not-allowed}.custom-theme .el-input--suffix .el-input__inner{padding-right:30px}.custom-theme .el-input--prefix .el-input__inner{padding-left:30px}.custom-theme .el-input--medium{font-size:14px}.custom-theme .el-input--medium .el-input__inner{height:36px}.custom-theme .el-input--medium .el-input__icon{line-height:36px}.custom-theme .el-input--small{font-size:13px}.custom-theme .el-input--small .el-input__inner{height:32px}.custom-theme .el-input--small .el-input__icon{line-height:32px}.custom-theme .el-input--mini{font-size:12px}.custom-theme .el-input--mini .el-input__inner{height:28px}.custom-theme .el-input--mini .el-input__icon{line-height:28px}.custom-theme .el-input-group{line-height:normal;display:inline-table;width:100%;border-collapse:separate}.custom-theme .el-input-group>.el-input__inner{vertical-align:middle;display:table-cell}.custom-theme .el-input-group__append,.custom-theme .el-input-group__prepend{background-color:#f5f7fa;color:#0a76a4;vertical-align:middle;display:table-cell;position:relative;border:1px solid #d8dce5;border-radius:4px;padding:0 20px;width:1px;white-space:nowrap}.custom-theme .el-input-group__append:focus,.custom-theme .el-input-group__prepend:focus{outline:0}.custom-theme .el-input-group__append .el-button,.custom-theme .el-input-group__append .el-select,.custom-theme .el-input-group__prepend .el-button,.custom-theme .el-input-group__prepend .el-select{display:inline-block;margin:-20px}.custom-theme .el-input-group__append button.el-button,.custom-theme .el-input-group__append div.el-select .el-input__inner,.custom-theme .el-input-group__append div.el-select:hover .el-input__inner,.custom-theme .el-input-group__prepend button.el-button,.custom-theme .el-input-group__prepend div.el-select .el-input__inner,.custom-theme .el-input-group__prepend div.el-select:hover .el-input__inner{border-color:transparent;background-color:transparent;color:inherit;border-top:0;border-bottom:0}.custom-theme .el-input-group__append .el-button,.custom-theme .el-input-group__append .el-input,.custom-theme .el-input-group__prepend .el-button,.custom-theme .el-input-group__prepend .el-input{font-size:inherit}.custom-theme .el-input-group__prepend{border-right:0;border-top-right-radius:0;border-bottom-right-radius:0}.custom-theme .el-input-group__append{border-left:0;border-top-left-radius:0;border-bottom-left-radius:0}.custom-theme .el-input-group--prepend .el-input__inner{border-top-left-radius:0;border-bottom-left-radius:0}.custom-theme .el-input-group--append .el-input__inner{border-top-right-radius:0;border-bottom-right-radius:0}.custom-theme .el-textarea{display:inline-block;width:100%;vertical-align:bottom}.custom-theme .el-textarea__inner{display:block;resize:vertical;padding:5px 15px;line-height:1.5;-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;font-size:14px;color:#5a5e66;background-color:#fff;background-image:none;border:1px solid #d8dce5;border-radius:4px;-webkit-transition:border-color .2s cubic-bezier(.645,.045,.355,1);transition:border-color .2s cubic-bezier(.645,.045,.355,1)}.custom-theme .el-textarea__inner::-webkit-input-placeholder{color:#b4bccc}.custom-theme .el-textarea__inner:-ms-input-placeholder{color:#b4bccc}.custom-theme .el-textarea__inner::-ms-input-placeholder{color:#b4bccc}.custom-theme .el-textarea__inner::placeholder{color:#b4bccc}.custom-theme .el-textarea__inner:hover{border-color:#b4bccc}.custom-theme .el-textarea__inner:focus{outline:0;border-color:#262729}.custom-theme .el-textarea.is-disabled .el-textarea__inner{background-color:#f5f7fa;border-color:#dfe4ed;color:#b4bccc;cursor:not-allowed}.custom-theme .el-textarea.is-disabled .el-textarea__inner::-webkit-input-placeholder{color:#b4bccc}.custom-theme .el-textarea.is-disabled .el-textarea__inner:-ms-input-placeholder{color:#b4bccc}.custom-theme .el-textarea.is-disabled .el-textarea__inner::-ms-input-placeholder{color:#b4bccc}.custom-theme .el-textarea.is-disabled .el-textarea__inner::placeholder{color:#b4bccc}.custom-theme .el-input{position:relative;font-size:14px;display:inline-block;width:100%}.custom-theme .el-input::-webkit-scrollbar{z-index:11;width:6px}.custom-theme .el-input::-webkit-scrollbar:horizontal{height:6px}.custom-theme .el-input::-webkit-scrollbar-thumb{border-radius:5px;width:6px;background:#b4bccc}.custom-theme .el-input::-webkit-scrollbar-corner{background:#fff}.custom-theme .el-input::-webkit-scrollbar-track{background:#fff}.custom-theme .el-input::-webkit-scrollbar-track-piece{background:#fff;width:6px}.custom-theme .el-input__inner{-webkit-appearance:none;background-color:#fff;background-image:none;border-radius:4px;border:1px solid #d8dce5;-webkit-box-sizing:border-box;box-sizing:border-box;color:#5a5e66;display:inline-block;font-size:inherit;height:40px;line-height:1;outline:0;padding:0 15px;-webkit-transition:border-color .2s cubic-bezier(.645,.045,.355,1);transition:border-color .2s cubic-bezier(.645,.045,.355,1);width:100%}.custom-theme .el-input__inner::-webkit-input-placeholder{color:#b4bccc}.custom-theme .el-input__inner:-ms-input-placeholder{color:#b4bccc}.custom-theme .el-input__inner::-ms-input-placeholder{color:#b4bccc}.custom-theme .el-input__inner::placeholder{color:#b4bccc}.custom-theme .el-input__inner:hover{border-color:#b4bccc}.custom-theme .el-input__inner:focus{outline:0;border-color:#262729}.custom-theme .el-input__suffix{position:absolute;height:100%;right:5px;top:0;text-align:center;color:#b4bccc;-webkit-transition:all .3s;transition:all .3s;pointer-events:none}.custom-theme .el-input__suffix-inner{pointer-events:all}.custom-theme .el-input__prefix{position:absolute;height:100%;left:5px;top:0;text-align:center;color:#b4bccc;-webkit-transition:all .3s;transition:all .3s}.custom-theme .el-input__icon{height:100%;width:25px;text-align:center;-webkit-transition:all .3s;transition:all .3s;line-height:40px}.custom-theme .el-input__icon:after{content:'';height:100%;width:0;display:inline-block;vertical-align:middle}.custom-theme .el-input__validateIcon{pointer-events:none}.custom-theme .el-input.is-active .el-input__inner{outline:0;border-color:#262729}.custom-theme .el-input.is-disabled .el-input__inner{background-color:#f5f7fa;border-color:#dfe4ed;color:#b4bccc;cursor:not-allowed}.custom-theme .el-input.is-disabled .el-input__inner::-webkit-input-placeholder{color:#b4bccc}.custom-theme .el-input.is-disabled .el-input__inner:-ms-input-placeholder{color:#b4bccc}.custom-theme .el-input.is-disabled .el-input__inner::-ms-input-placeholder{color:#b4bccc}.custom-theme .el-input.is-disabled .el-input__inner::placeholder{color:#b4bccc}.custom-theme .el-input.is-disabled .el-input__icon{cursor:not-allowed}.custom-theme .el-input--suffix .el-input__inner{padding-right:30px}.custom-theme .el-input--prefix .el-input__inner{padding-left:30px}.custom-theme .el-input--medium{font-size:14px}.custom-theme .el-input--medium .el-input__inner{height:36px}.custom-theme .el-input--medium .el-input__icon{line-height:36px}.custom-theme .el-input--small{font-size:13px}.custom-theme .el-input--small .el-input__inner{height:32px}.custom-theme .el-input--small .el-input__icon{line-height:32px}.custom-theme .el-input--mini{font-size:12px}.custom-theme .el-input--mini .el-input__inner{height:28px}.custom-theme .el-input--mini .el-input__icon{line-height:28px}.custom-theme .el-input-group{line-height:normal;display:inline-table;width:100%;border-collapse:separate}.custom-theme .el-input-group>.el-input__inner{vertical-align:middle;display:table-cell}.custom-theme .el-input-group__append,.custom-theme .el-input-group__prepend{background-color:#f5f7fa;color:#0a76a4;vertical-align:middle;display:table-cell;position:relative;border:1px solid #d8dce5;border-radius:4px;padding:0 20px;width:1px;white-space:nowrap}.custom-theme .el-input-group__append:focus,.custom-theme .el-input-group__prepend:focus{outline:0}.custom-theme .el-input-group__append .el-button,.custom-theme .el-input-group__append .el-select,.custom-theme .el-input-group__prepend .el-button,.custom-theme .el-input-group__prepend .el-select{display:inline-block;margin:-20px}.custom-theme .el-input-group__append button.el-button,.custom-theme .el-input-group__append div.el-select .el-input__inner,.custom-theme .el-input-group__append div.el-select:hover .el-input__inner,.custom-theme .el-input-group__prepend button.el-button,.custom-theme .el-input-group__prepend div.el-select .el-input__inner,.custom-theme .el-input-group__prepend div.el-select:hover .el-input__inner{border-color:transparent;background-color:transparent;color:inherit;border-top:0;border-bottom:0}.custom-theme .el-input-group__append .el-button,.custom-theme .el-input-group__append .el-input,.custom-theme .el-input-group__prepend .el-button,.custom-theme .el-input-group__prepend .el-input{font-size:inherit}.custom-theme .el-input-group__prepend{border-right:0;border-top-right-radius:0;border-bottom-right-radius:0}.custom-theme .el-input-group__append{border-left:0;border-top-left-radius:0;border-bottom-left-radius:0}.custom-theme .el-input-group--prepend .el-input__inner{border-top-left-radius:0;border-bottom-left-radius:0}.custom-theme .el-input-group--append .el-input__inner{border-top-right-radius:0;border-bottom-right-radius:0}.custom-theme .el-textarea{display:inline-block;width:100%;vertical-align:bottom}.custom-theme .el-textarea__inner{display:block;resize:vertical;padding:5px 15px;line-height:1.5;-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;font-size:14px;color:#5a5e66;background-color:#fff;background-image:none;border:1px solid #d8dce5;border-radius:4px;-webkit-transition:border-color .2s cubic-bezier(.645,.045,.355,1);transition:border-color .2s cubic-bezier(.645,.045,.355,1)}.custom-theme .el-textarea__inner::-webkit-input-placeholder{color:#b4bccc}.custom-theme .el-textarea__inner:-ms-input-placeholder{color:#b4bccc}.custom-theme .el-textarea__inner::-ms-input-placeholder{color:#b4bccc}.custom-theme .el-textarea__inner::placeholder{color:#b4bccc}.custom-theme .el-textarea__inner:hover{border-color:#b4bccc}.custom-theme .el-textarea__inner:focus{outline:0;border-color:#262729}.custom-theme .el-textarea.is-disabled .el-textarea__inner{background-color:#f5f7fa;border-color:#dfe4ed;color:#b4bccc;cursor:not-allowed}.custom-theme .el-textarea.is-disabled .el-textarea__inner::-webkit-input-placeholder{color:#b4bccc}.custom-theme .el-textarea.is-disabled .el-textarea__inner:-ms-input-placeholder{color:#b4bccc}.custom-theme .el-textarea.is-disabled .el-textarea__inner::-ms-input-placeholder{color:#b4bccc}.custom-theme .el-textarea.is-disabled .el-textarea__inner::placeholder{color:#b4bccc}.custom-theme .el-input-number{position:relative;display:inline-block;width:180px;line-height:38px}.custom-theme .el-input-number .el-input{display:block}.custom-theme .el-input-number .el-input__inner{-webkit-appearance:none;padding-left:50px;padding-right:50px;text-align:center}.custom-theme .el-input-number__decrease,.custom-theme .el-input-number__increase{position:absolute;z-index:1;top:1px;width:40px;height:auto;text-align:center;background:#f5f7fa;color:#5a5e66;cursor:pointer;font-size:13px}.custom-theme .el-input-number__decrease:hover,.custom-theme .el-input-number__increase:hover{color:#262729}.custom-theme .el-input-number__decrease:hover:not(.is-disabled)~.el-input .el-input__inner:not(.is-disabled),.custom-theme .el-input-number__increase:hover:not(.is-disabled)~.el-input .el-input__inner:not(.is-disabled){border-color:#262729}.custom-theme .el-input-number__decrease.is-disabled,.custom-theme .el-input-number__increase.is-disabled{color:#b4bccc;cursor:not-allowed}.custom-theme .el-input-number__increase{right:1px;border-radius:0 4px 4px 0;border-left:1px solid #d8dce5}.custom-theme .el-input-number__decrease{left:1px;border-radius:4px 0 0 4px;border-right:1px solid #d8dce5}.custom-theme .el-input-number.is-disabled .el-input-number__decrease,.custom-theme .el-input-number.is-disabled .el-input-number__increase{border-color:#dfe4ed;color:#dfe4ed}.custom-theme .el-input-number.is-disabled .el-input-number__decrease:hover,.custom-theme .el-input-number.is-disabled .el-input-number__increase:hover{color:#dfe4ed;cursor:not-allowed}.custom-theme .el-input-number--medium{width:200px;line-height:34px}.custom-theme .el-input-number--medium .el-input-number__decrease,.custom-theme .el-input-number--medium .el-input-number__increase{width:36px;font-size:14px}.custom-theme .el-input-number--medium .el-input__inner{padding-left:43px;padding-right:43px}.custom-theme .el-input-number--small{width:130px;line-height:30px}.custom-theme .el-input-number--small .el-input-number__decrease,.custom-theme .el-input-number--small .el-input-number__increase{width:32px;font-size:13px}.custom-theme .el-input-number--small .el-input-number__decrease [class*=el-icon],.custom-theme .el-input-number--small .el-input-number__increase [class*=el-icon]{-webkit-transform:scale(.9);transform:scale(.9)}.custom-theme .el-input-number--small .el-input__inner{padding-left:39px;padding-right:39px}.custom-theme .el-input-number--mini{width:130px;line-height:26px}.custom-theme .el-input-number--mini .el-input-number__decrease,.custom-theme .el-input-number--mini .el-input-number__increase{width:28px;font-size:12px}.custom-theme .el-input-number--mini .el-input-number__decrease [class*=el-icon],.custom-theme .el-input-number--mini .el-input-number__increase [class*=el-icon]{-webkit-transform:scale(.8);transform:scale(.8)}.custom-theme .el-input-number--mini .el-input__inner{padding-left:35px;padding-right:35px}.custom-theme .el-input-number.is-without-controls .el-input__inner{padding-left:15px;padding-right:15px}.custom-theme .el-input-number.is-controls-right .el-input__inner{padding-left:15px;padding-right:50px}.custom-theme .el-input-number.is-controls-right .el-input-number__decrease,.custom-theme .el-input-number.is-controls-right .el-input-number__increase{height:auto;line-height:19px}.custom-theme .el-input-number.is-controls-right .el-input-number__decrease [class*=el-icon],.custom-theme .el-input-number.is-controls-right .el-input-number__increase [class*=el-icon]{-webkit-transform:scale(.8);transform:scale(.8)}.custom-theme .el-input-number.is-controls-right .el-input-number__increase{border-radius:0 4px 0 0;border-bottom:1px solid #d8dce5}.custom-theme .el-input-number.is-controls-right .el-input-number__decrease{right:1px;bottom:1px;top:auto;left:auto;border-right:none;border-left:1px solid #d8dce5;border-radius:0 0 4px 0}.custom-theme .el-input-number.is-controls-right[class*=medium] [class*=decrease],.custom-theme .el-input-number.is-controls-right[class*=medium] [class*=increase]{line-height:17px}.custom-theme .el-input-number.is-controls-right[class*=small] [class*=decrease],.custom-theme .el-input-number.is-controls-right[class*=small] [class*=increase]{line-height:15px}.custom-theme .el-input-number.is-controls-right[class*=mini] [class*=decrease],.custom-theme .el-input-number.is-controls-right[class*=mini] [class*=increase]{line-height:13px}.custom-theme .el-radio{color:#5a5e66;font-weight:500;line-height:1;position:relative;cursor:pointer;display:inline-block;white-space:nowrap;outline:0;font-size:14px;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.custom-theme .el-radio.is-bordered{padding:10px 20px 10px 10px;border-radius:4px;border:1px solid #d8dce5}.custom-theme .el-radio.is-bordered.is-checked{border-color:#262729}.custom-theme .el-radio.is-bordered.is-disabled{cursor:not-allowed;border-color:#e6ebf5}.custom-theme .el-radio.is-bordered+.el-radio.is-bordered{margin-left:10px}.custom-theme .el-radio--medium.is-bordered{padding:8px 20px 8px 10px;border-radius:4px}.custom-theme .el-radio--medium.is-bordered .el-radio__label{font-size:14px}.custom-theme .el-radio--medium.is-bordered .el-radio__inner{height:14px;width:14px}.custom-theme .el-radio--small.is-bordered{padding:6px 15px 6px 10px;border-radius:3px}.custom-theme .el-radio--small.is-bordered .el-radio__label{font-size:12px}.custom-theme .el-radio--small.is-bordered .el-radio__inner{height:12px;width:12px}.custom-theme .el-radio--mini.is-bordered{padding:4px 15px 4px 10px;border-radius:3px}.custom-theme .el-radio--mini.is-bordered .el-radio__label{font-size:12px}.custom-theme .el-radio--mini.is-bordered .el-radio__inner{height:12px;width:12px}.custom-theme .el-radio+.el-radio{margin-left:30px}.custom-theme .el-radio__input{white-space:nowrap;cursor:pointer;outline:0;display:inline-block;line-height:1;position:relative;vertical-align:middle}.custom-theme .el-radio__input.is-disabled .el-radio__inner{background-color:#f5f7fa;border-color:#dfe4ed;cursor:not-allowed}.custom-theme .el-radio__input.is-disabled .el-radio__inner::after{cursor:not-allowed;background-color:#f5f7fa}.custom-theme .el-radio__input.is-disabled .el-radio__inner+.el-radio__label{cursor:not-allowed}.custom-theme .el-radio__input.is-disabled.is-checked .el-radio__inner{background-color:#f5f7fa;border-color:#dfe4ed}.custom-theme .el-radio__input.is-disabled.is-checked .el-radio__inner::after{background-color:#b4bccc}.custom-theme .el-radio__input.is-disabled+span.el-radio__label{color:#b4bccc;cursor:not-allowed}.custom-theme .el-radio__input.is-checked .el-radio__inner{border-color:#262729;background:#262729}.custom-theme .el-radio__input.is-checked .el-radio__inner::after{-webkit-transform:translate(-50%,-50%) scale(1);transform:translate(-50%,-50%) scale(1)}.custom-theme .el-radio__input.is-checked+.el-radio__label{color:#262729}.custom-theme .el-radio__input.is-focus .el-radio__inner{border-color:#262729}.custom-theme .el-radio__inner{border:1px solid #d8dce5;border-radius:100%;width:14px;height:14px;background-color:#fff;position:relative;cursor:pointer;display:inline-block;-webkit-box-sizing:border-box;box-sizing:border-box}.custom-theme .el-radio__inner:hover{border-color:#262729}.custom-theme .el-radio__inner::after{width:4px;height:4px;border-radius:100%;background-color:#fff;content:"";position:absolute;left:50%;top:50%;-webkit-transform:translate(-50%,-50%) scale(0);transform:translate(-50%,-50%) scale(0);-webkit-transition:-webkit-transform .15s cubic-bezier(.71,-.46,.88,.6);transition:-webkit-transform .15s cubic-bezier(.71,-.46,.88,.6);transition:transform .15s cubic-bezier(.71,-.46,.88,.6);transition:transform .15s cubic-bezier(.71,-.46,.88,.6),-webkit-transform .15s cubic-bezier(.71,-.46,.88,.6)}.custom-theme .el-radio__original{opacity:0;outline:0;position:absolute;z-index:-1;top:0;left:0;right:0;bottom:0;margin:0}.custom-theme .el-radio:focus:not(.is-focus):not(:active) .el-radio__inner{-webkit-box-shadow:0 0 2px 2px #262729;box-shadow:0 0 2px 2px #262729}.custom-theme .el-radio__label{font-size:14px;padding-left:10px}.custom-theme .el-radio-group{display:inline-block;line-height:1;vertical-align:middle;font-size:0}.custom-theme .el-radio-button{position:relative;display:inline-block;outline:0}.custom-theme .el-radio-button__inner{display:inline-block;line-height:1;white-space:nowrap;vertical-align:middle;background:#fff;border:1px solid #d8dce5;font-weight:500;border-left:0;color:#5a5e66;-webkit-appearance:none;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;outline:0;margin:0;position:relative;cursor:pointer;-webkit-transition:all .3s cubic-bezier(.645,.045,.355,1);transition:all .3s cubic-bezier(.645,.045,.355,1);padding:12px 20px;font-size:14px;border-radius:0}.custom-theme .el-radio-button__inner.is-round{padding:12px 20px}.custom-theme .el-radio-button__inner:hover{color:#262729}.custom-theme .el-radio-button__inner [class*=el-icon-]{line-height:.9}.custom-theme .el-radio-button__inner [class*=el-icon-]+span{margin-left:5px}.custom-theme .el-radio-button__orig-radio{opacity:0;outline:0;position:absolute;z-index:-1;left:-999px}.custom-theme .el-radio-button__orig-radio:checked+.el-radio-button__inner{color:#fff;background-color:#262729;border-color:#262729;-webkit-box-shadow:-1px 0 0 0 #262729;box-shadow:-1px 0 0 0 #262729}.custom-theme .el-radio-button__orig-radio:disabled+.el-radio-button__inner{color:#b4bccc;cursor:not-allowed;background-image:none;background-color:#fff;border-color:#e6ebf5;-webkit-box-shadow:none;box-shadow:none}.custom-theme .el-radio-button__orig-radio:disabled:checked+.el-radio-button__inner{background-color:#edf2fc}.custom-theme .el-radio-button:first-child .el-radio-button__inner{border-left:1px solid #d8dce5;border-radius:4px 0 0 4px;-webkit-box-shadow:none!important;box-shadow:none!important}.custom-theme .el-radio-button:last-child .el-radio-button__inner{border-radius:0 4px 4px 0}.custom-theme .el-radio-button:first-child:last-child .el-radio-button__inner{border-radius:4px}.custom-theme .el-radio-button--medium .el-radio-button__inner{padding:10px 20px;font-size:14px;border-radius:0}.custom-theme .el-radio-button--medium .el-radio-button__inner.is-round{padding:10px 20px}.custom-theme .el-radio-button--small .el-radio-button__inner{padding:9px 15px;font-size:12px;border-radius:0}.custom-theme .el-radio-button--small .el-radio-button__inner.is-round{padding:9px 15px}.custom-theme .el-radio-button--mini .el-radio-button__inner{padding:7px 15px;font-size:12px;border-radius:0}.custom-theme .el-radio-button--mini .el-radio-button__inner.is-round{padding:7px 15px}.custom-theme .el-radio-button:focus:not(.is-focus):not(:active){-webkit-box-shadow:0 0 2px 2px #262729;box-shadow:0 0 2px 2px #262729}.custom-theme .el-checkbox{color:#5a5e66;font-weight:500;font-size:14px;position:relative;cursor:pointer;display:inline-block;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.custom-theme .el-checkbox.is-bordered{padding:9px 20px 9px 10px;border-radius:4px;border:1px solid #d8dce5}.custom-theme .el-checkbox.is-bordered.is-checked{border-color:#262729}.custom-theme .el-checkbox.is-bordered.is-disabled{border-color:#e6ebf5;cursor:not-allowed}.custom-theme .el-checkbox.is-bordered+.el-checkbox.is-bordered{margin-left:10px}.custom-theme .el-checkbox.is-bordered.el-checkbox--medium{padding:7px 20px 7px 10px;border-radius:4px}.custom-theme .el-checkbox.is-bordered.el-checkbox--medium .el-checkbox__label{line-height:17px;font-size:14px}.custom-theme .el-checkbox.is-bordered.el-checkbox--medium .el-checkbox__inner{height:14px;width:14px}.custom-theme .el-checkbox.is-bordered.el-checkbox--small{padding:3px 15px 7px 10px;border-radius:3px}.custom-theme .el-checkbox.is-bordered.el-checkbox--small .el-checkbox__label{line-height:15px;font-size:12px}.custom-theme .el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner{height:12px;width:12px}.custom-theme .el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner::after{height:6px;width:2px}.custom-theme .el-checkbox.is-bordered.el-checkbox--mini{padding:1px 15px 5px 10px;border-radius:3px}.custom-theme .el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__label{line-height:12px;font-size:12px}.custom-theme .el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__inner{height:12px;width:12px}.custom-theme .el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__inner::after{height:6px;width:2px}.custom-theme .el-checkbox__input{white-space:nowrap;cursor:pointer;outline:0;display:inline-block;line-height:1;position:relative;vertical-align:middle}.custom-theme .el-checkbox__input.is-disabled .el-checkbox__inner{background-color:#edf2fc;border-color:#d8dce5;cursor:not-allowed}.custom-theme .el-checkbox__input.is-disabled .el-checkbox__inner::after{cursor:not-allowed;border-color:#b4bccc}.custom-theme .el-checkbox__input.is-disabled .el-checkbox__inner+.el-checkbox__label{cursor:not-allowed}.custom-theme .el-checkbox__input.is-disabled.is-checked .el-checkbox__inner{background-color:#edf2fc;border-color:#d8dce5}.custom-theme .el-checkbox__input.is-disabled.is-checked .el-checkbox__inner::after{border-color:#b4bccc}.custom-theme .el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner{background-color:#edf2fc;border-color:#d8dce5}.custom-theme .el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner::before{background-color:#b4bccc;border-color:#b4bccc}.custom-theme .el-checkbox__input.is-disabled+span.el-checkbox__label{color:#b4bccc;cursor:not-allowed}.custom-theme .el-checkbox__input.is-checked .el-checkbox__inner{background-color:#262729;border-color:#262729}.custom-theme .el-checkbox__input.is-checked .el-checkbox__inner::after{-webkit-transform:rotate(45deg) scaleY(1);transform:rotate(45deg) scaleY(1)}.custom-theme .el-checkbox__input.is-checked+.el-checkbox__label{color:#262729}.custom-theme .el-checkbox__input.is-focus .el-checkbox__inner{border-color:#262729}.custom-theme .el-checkbox__input.is-indeterminate .el-checkbox__inner{background-color:#262729;border-color:#262729}.custom-theme .el-checkbox__input.is-indeterminate .el-checkbox__inner::before{content:'';position:absolute;display:block;background-color:#fff;height:2px;-webkit-transform:scale(.5);transform:scale(.5);left:0;right:0;top:5px}.custom-theme .el-checkbox__input.is-indeterminate .el-checkbox__inner::after{display:none}.custom-theme .el-checkbox__inner{display:inline-block;position:relative;border:1px solid #d8dce5;border-radius:2px;-webkit-box-sizing:border-box;box-sizing:border-box;width:14px;height:14px;background-color:#fff;z-index:1;-webkit-transition:border-color .25s cubic-bezier(.71,-.46,.29,1.46),background-color .25s cubic-bezier(.71,-.46,.29,1.46);transition:border-color .25s cubic-bezier(.71,-.46,.29,1.46),background-color .25s cubic-bezier(.71,-.46,.29,1.46)}.custom-theme .el-checkbox__inner:hover{border-color:#262729}.custom-theme .el-checkbox__inner::after{-webkit-box-sizing:content-box;box-sizing:content-box;content:"";border:1px solid #fff;border-left:0;border-top:0;height:7px;left:4px;position:absolute;top:1px;-webkit-transform:rotate(45deg) scaleY(0);transform:rotate(45deg) scaleY(0);width:3px;-webkit-transition:-webkit-transform .15s cubic-bezier(.71,-.46,.88,.6) 50ms;transition:-webkit-transform .15s cubic-bezier(.71,-.46,.88,.6) 50ms;transition:transform .15s cubic-bezier(.71,-.46,.88,.6) 50ms;transition:transform .15s cubic-bezier(.71,-.46,.88,.6) 50ms,-webkit-transform .15s cubic-bezier(.71,-.46,.88,.6) 50ms;-webkit-transform-origin:center;transform-origin:center}.custom-theme .el-checkbox__original{opacity:0;outline:0;position:absolute;margin:0;width:0;height:0;left:-999px}.custom-theme .el-checkbox__label{display:inline-block;padding-left:10px;line-height:19px;font-size:14px}.custom-theme .el-checkbox+.el-checkbox{margin-left:30px}.custom-theme .el-checkbox-button{position:relative;display:inline-block}.custom-theme .el-checkbox-button__inner{display:inline-block;line-height:1;font-weight:500;white-space:nowrap;vertical-align:middle;cursor:pointer;background:#fff;border:1px solid #d8dce5;border-left:0;color:#5a5e66;-webkit-appearance:none;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;outline:0;margin:0;position:relative;-webkit-transition:all .3s cubic-bezier(.645,.045,.355,1);transition:all .3s cubic-bezier(.645,.045,.355,1);-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;padding:12px 20px;font-size:14px;border-radius:0}.custom-theme .el-checkbox-button__inner.is-round{padding:12px 20px}.custom-theme .el-checkbox-button__inner:hover{color:#262729}.custom-theme .el-checkbox-button__inner [class*=el-icon-]{line-height:.9}.custom-theme .el-checkbox-button__inner [class*=el-icon-]+span{margin-left:5px}.custom-theme .el-checkbox-button__original{opacity:0;outline:0;position:absolute;margin:0;left:-999px}.custom-theme .el-checkbox-button.is-checked .el-checkbox-button__inner{color:#fff;background-color:#262729;border-color:#262729;-webkit-box-shadow:-1px 0 0 0 #7d7d7f;box-shadow:-1px 0 0 0 #7d7d7f}.custom-theme .el-checkbox-button.is-disabled .el-checkbox-button__inner{color:#b4bccc;cursor:not-allowed;background-image:none;background-color:#fff;border-color:#e6ebf5;-webkit-box-shadow:none;box-shadow:none}.custom-theme .el-checkbox-button:first-child .el-checkbox-button__inner{border-left:1px solid #d8dce5;border-radius:4px 0 0 4px;-webkit-box-shadow:none!important;box-shadow:none!important}.custom-theme .el-checkbox-button.is-focus .el-checkbox-button__inner{border-color:#262729}.custom-theme .el-checkbox-button:last-child .el-checkbox-button__inner{border-radius:0 4px 4px 0}.custom-theme .el-checkbox-button--medium .el-checkbox-button__inner{padding:10px 20px;font-size:14px;border-radius:0}.custom-theme .el-checkbox-button--medium .el-checkbox-button__inner.is-round{padding:10px 20px}.custom-theme .el-checkbox-button--small .el-checkbox-button__inner{padding:9px 15px;font-size:12px;border-radius:0}.custom-theme .el-checkbox-button--small .el-checkbox-button__inner.is-round{padding:9px 15px}.custom-theme .el-checkbox-button--mini .el-checkbox-button__inner{padding:7px 15px;font-size:12px;border-radius:0}.custom-theme .el-checkbox-button--mini .el-checkbox-button__inner.is-round{padding:7px 15px}.custom-theme .el-checkbox-group{font-size:0}.custom-theme .el-switch{display:inline-block;position:relative;font-size:14px;line-height:20px;height:20px;vertical-align:middle}.custom-theme .el-switch.is-disabled .el-switch__core,.custom-theme .el-switch.is-disabled .el-switch__label{cursor:not-allowed}.custom-theme .el-switch__label{-webkit-transition:.2s;transition:.2s;height:20px;display:inline-block;font-size:14px;font-weight:500;cursor:pointer;vertical-align:middle;color:#2d2f33}.custom-theme .el-switch__label.is-active{color:#262729}.custom-theme .el-switch__label--left{margin-right:10px}.custom-theme .el-switch__label--right{margin-left:10px}.custom-theme .el-switch__label *{line-height:1;font-size:14px;display:inline-block}.custom-theme .el-switch__input{position:absolute;width:0;height:0;opacity:0;margin:0}.custom-theme .el-switch__input:focus~.el-switch__core{outline:1px solid #262729}.custom-theme .el-switch__core{margin:0;display:inline-block;position:relative;width:40px;height:20px;border:1px solid #d8dce5;outline:0;border-radius:10px;-webkit-box-sizing:border-box;box-sizing:border-box;background:#d8dce5;cursor:pointer;-webkit-transition:border-color .3s,background-color .3s;transition:border-color .3s,background-color .3s;vertical-align:middle}.custom-theme .el-switch__core .el-switch__button{position:absolute;top:1px;left:1px;border-radius:100%;-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;width:16px;height:16px;background-color:#fff}.custom-theme .el-switch.is-checked .el-switch__core{border-color:#262729;background-color:#262729}.custom-theme .el-switch.is-disabled{opacity:.6}.custom-theme .el-switch--wide .el-switch__label.el-switch__label--left span{left:10px}.custom-theme .el-switch--wide .el-switch__label.el-switch__label--right span{right:10px}.custom-theme .el-switch .label-fade-enter,.custom-theme .el-switch .label-fade-leave-active{opacity:0}.custom-theme .el-popper .popper__arrow,.custom-theme .el-popper .popper__arrow::after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.custom-theme .el-popper .popper__arrow{border-width:6px;-webkit-filter:drop-shadow(0 2px 12px rgba(0, 0, 0, .03));filter:drop-shadow(0 2px 12px rgba(0, 0, 0, .03))}.custom-theme .el-popper .popper__arrow::after{content:" ";border-width:6px}.custom-theme .el-popper[x-placement^=top]{margin-bottom:12px}.custom-theme .el-popper[x-placement^=top] .popper__arrow{bottom:-6px;left:50%;margin-right:3px;border-top-color:#e6ebf5;border-bottom-width:0}.custom-theme .el-popper[x-placement^=top] .popper__arrow::after{bottom:1px;margin-left:-6px;border-top-color:#fff;border-bottom-width:0}.custom-theme .el-popper[x-placement^=bottom]{margin-top:12px}.custom-theme .el-popper[x-placement^=bottom] .popper__arrow{top:-6px;left:50%;margin-right:3px;border-top-width:0;border-bottom-color:#e6ebf5}.custom-theme .el-popper[x-placement^=bottom] .popper__arrow::after{top:1px;margin-left:-6px;border-top-width:0;border-bottom-color:#fff}.custom-theme .el-popper[x-placement^=right]{margin-left:12px}.custom-theme .el-popper[x-placement^=right] .popper__arrow{top:50%;left:-6px;margin-bottom:3px;border-right-color:#e6ebf5;border-left-width:0}.custom-theme .el-popper[x-placement^=right] .popper__arrow::after{bottom:-6px;left:1px;border-right-color:#fff;border-left-width:0}.custom-theme .el-popper[x-placement^=left]{margin-right:12px}.custom-theme .el-popper[x-placement^=left] .popper__arrow{top:50%;right:-6px;margin-bottom:3px;border-right-width:0;border-left-color:#e6ebf5}.custom-theme .el-popper[x-placement^=left] .popper__arrow::after{right:1px;bottom:-6px;margin-left:-6px;border-right-width:0;border-left-color:#fff}.custom-theme .el-select-dropdown{position:absolute;z-index:1001;border:solid 1px #dfe4ed;border-radius:4px;background-color:#fff;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);-webkit-box-sizing:border-box;box-sizing:border-box;margin:5px 0}.custom-theme .el-select-dropdown.is-multiple .el-select-dropdown__item.selected{color:#262729;background-color:#fff}.custom-theme .el-select-dropdown.is-multiple .el-select-dropdown__item.selected.hover{background-color:#f5f7fa}.custom-theme .el-select-dropdown.is-multiple .el-select-dropdown__item.selected::after{position:absolute;right:20px;font-family:element-icons;content:"\E611";font-size:12px;font-weight:700;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.custom-theme .el-select-dropdown .el-scrollbar.is-empty .el-select-dropdown__list{padding:0}.custom-theme .el-select-dropdown .popper__arrow{-webkit-transform:translateX(-400%);transform:translateX(-400%)}.custom-theme .el-select-dropdown.is-arrow-fixed .popper__arrow{-webkit-transform:translateX(-200%);transform:translateX(-200%)}.custom-theme .el-select-dropdown__empty{padding:10px 0;margin:0;text-align:center;color:#999;font-size:14px}.custom-theme .el-select-dropdown__wrap{max-height:274px}.custom-theme .el-select-dropdown__list{list-style:none;padding:6px 0;margin:0;-webkit-box-sizing:border-box;box-sizing:border-box}.custom-theme .el-input{position:relative;font-size:14px;display:inline-block;width:100%}.custom-theme .el-input::-webkit-scrollbar{z-index:11;width:6px}.custom-theme .el-input::-webkit-scrollbar:horizontal{height:6px}.custom-theme .el-input::-webkit-scrollbar-thumb{border-radius:5px;width:6px;background:#b4bccc}.custom-theme .el-input::-webkit-scrollbar-corner{background:#fff}.custom-theme .el-input::-webkit-scrollbar-track{background:#fff}.custom-theme .el-input::-webkit-scrollbar-track-piece{background:#fff;width:6px}.custom-theme .el-input__inner{-webkit-appearance:none;background-color:#fff;background-image:none;border-radius:4px;border:1px solid #d8dce5;-webkit-box-sizing:border-box;box-sizing:border-box;color:#5a5e66;display:inline-block;font-size:inherit;height:40px;line-height:1;outline:0;padding:0 15px;-webkit-transition:border-color .2s cubic-bezier(.645,.045,.355,1);transition:border-color .2s cubic-bezier(.645,.045,.355,1);width:100%}.custom-theme .el-input__inner::-webkit-input-placeholder{color:#b4bccc}.custom-theme .el-input__inner:-ms-input-placeholder{color:#b4bccc}.custom-theme .el-input__inner::-ms-input-placeholder{color:#b4bccc}.custom-theme .el-input__inner::placeholder{color:#b4bccc}.custom-theme .el-input__inner:hover{border-color:#b4bccc}.custom-theme .el-input__inner:focus{outline:0;border-color:#262729}.custom-theme .el-input__suffix{position:absolute;height:100%;right:5px;top:0;text-align:center;color:#b4bccc;-webkit-transition:all .3s;transition:all .3s;pointer-events:none}.custom-theme .el-input__suffix-inner{pointer-events:all}.custom-theme .el-input__prefix{position:absolute;height:100%;left:5px;top:0;text-align:center;color:#b4bccc;-webkit-transition:all .3s;transition:all .3s}.custom-theme .el-input__icon{height:100%;width:25px;text-align:center;-webkit-transition:all .3s;transition:all .3s;line-height:40px}.custom-theme .el-input__icon:after{content:'';height:100%;width:0;display:inline-block;vertical-align:middle}.custom-theme .el-input__validateIcon{pointer-events:none}.custom-theme .el-input.is-active .el-input__inner{outline:0;border-color:#262729}.custom-theme .el-input.is-disabled .el-input__inner{background-color:#f5f7fa;border-color:#dfe4ed;color:#b4bccc;cursor:not-allowed}.custom-theme .el-input.is-disabled .el-input__inner::-webkit-input-placeholder{color:#b4bccc}.custom-theme .el-input.is-disabled .el-input__inner:-ms-input-placeholder{color:#b4bccc}.custom-theme .el-input.is-disabled .el-input__inner::-ms-input-placeholder{color:#b4bccc}.custom-theme .el-input.is-disabled .el-input__inner::placeholder{color:#b4bccc}.custom-theme .el-input.is-disabled .el-input__icon{cursor:not-allowed}.custom-theme .el-input--suffix .el-input__inner{padding-right:30px}.custom-theme .el-input--prefix .el-input__inner{padding-left:30px}.custom-theme .el-input--medium{font-size:14px}.custom-theme .el-input--medium .el-input__inner{height:36px}.custom-theme .el-input--medium .el-input__icon{line-height:36px}.custom-theme .el-input--small{font-size:13px}.custom-theme .el-input--small .el-input__inner{height:32px}.custom-theme .el-input--small .el-input__icon{line-height:32px}.custom-theme .el-input--mini{font-size:12px}.custom-theme .el-input--mini .el-input__inner{height:28px}.custom-theme .el-input--mini .el-input__icon{line-height:28px}.custom-theme .el-input-group{line-height:normal;display:inline-table;width:100%;border-collapse:separate}.custom-theme .el-input-group>.el-input__inner{vertical-align:middle;display:table-cell}.custom-theme .el-input-group__append,.custom-theme .el-input-group__prepend{background-color:#f5f7fa;color:#0a76a4;vertical-align:middle;display:table-cell;position:relative;border:1px solid #d8dce5;border-radius:4px;padding:0 20px;width:1px;white-space:nowrap}.custom-theme .el-input-group__append:focus,.custom-theme .el-input-group__prepend:focus{outline:0}.custom-theme .el-input-group__append .el-button,.custom-theme .el-input-group__append .el-select,.custom-theme .el-input-group__prepend .el-button,.custom-theme .el-input-group__prepend .el-select{display:inline-block;margin:-20px}.custom-theme .el-input-group__append button.el-button,.custom-theme .el-input-group__append div.el-select .el-input__inner,.custom-theme .el-input-group__append div.el-select:hover .el-input__inner,.custom-theme .el-input-group__prepend button.el-button,.custom-theme .el-input-group__prepend div.el-select .el-input__inner,.custom-theme .el-input-group__prepend div.el-select:hover .el-input__inner{border-color:transparent;background-color:transparent;color:inherit;border-top:0;border-bottom:0}.custom-theme .el-input-group__append .el-button,.custom-theme .el-input-group__append .el-input,.custom-theme .el-input-group__prepend .el-button,.custom-theme .el-input-group__prepend .el-input{font-size:inherit}.custom-theme .el-input-group__prepend{border-right:0;border-top-right-radius:0;border-bottom-right-radius:0}.custom-theme .el-input-group__append{border-left:0;border-top-left-radius:0;border-bottom-left-radius:0}.custom-theme .el-input-group--prepend .el-input__inner{border-top-left-radius:0;border-bottom-left-radius:0}.custom-theme .el-input-group--append .el-input__inner{border-top-right-radius:0;border-bottom-right-radius:0}.custom-theme .el-textarea{display:inline-block;width:100%;vertical-align:bottom}.custom-theme .el-textarea__inner{display:block;resize:vertical;padding:5px 15px;line-height:1.5;-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;font-size:14px;color:#5a5e66;background-color:#fff;background-image:none;border:1px solid #d8dce5;border-radius:4px;-webkit-transition:border-color .2s cubic-bezier(.645,.045,.355,1);transition:border-color .2s cubic-bezier(.645,.045,.355,1)}.custom-theme .el-textarea__inner::-webkit-input-placeholder{color:#b4bccc}.custom-theme .el-textarea__inner:-ms-input-placeholder{color:#b4bccc}.custom-theme .el-textarea__inner::-ms-input-placeholder{color:#b4bccc}.custom-theme .el-textarea__inner::placeholder{color:#b4bccc}.custom-theme .el-textarea__inner:hover{border-color:#b4bccc}.custom-theme .el-textarea__inner:focus{outline:0;border-color:#262729}.custom-theme .el-textarea.is-disabled .el-textarea__inner{background-color:#f5f7fa;border-color:#dfe4ed;color:#b4bccc;cursor:not-allowed}.custom-theme .el-textarea.is-disabled .el-textarea__inner::-webkit-input-placeholder{color:#b4bccc}.custom-theme .el-textarea.is-disabled .el-textarea__inner:-ms-input-placeholder{color:#b4bccc}.custom-theme .el-textarea.is-disabled .el-textarea__inner::-ms-input-placeholder{color:#b4bccc}.custom-theme .el-textarea.is-disabled .el-textarea__inner::placeholder{color:#b4bccc}.custom-theme .el-tag{background-color:rgba(38,39,41,.1);display:inline-block;padding:0 10px;height:32px;line-height:30px;font-size:12px;color:#262729;border-radius:4px;-webkit-box-sizing:border-box;box-sizing:border-box;border:1px solid rgba(38,39,41,.2);white-space:nowrap}.custom-theme .el-tag .el-icon-close{border-radius:50%;text-align:center;position:relative;cursor:pointer;font-size:12px;height:18px;width:18px;line-height:18px;vertical-align:middle;top:-1px;right:-5px;color:#262729}.custom-theme .el-tag .el-icon-close::before{display:block}.custom-theme .el-tag .el-icon-close:hover{background-color:#262729;color:#fff}.custom-theme .el-tag--info{background-color:rgba(10,118,164,.1);border-color:rgba(10,118,164,.2);color:#0a76a4}.custom-theme .el-tag--info.is-hit{border-color:#0a76a4}.custom-theme .el-tag--info .el-tag__close{color:#0a76a4}.custom-theme .el-tag--info .el-tag__close:hover{background-color:#0a76a4;color:#fff}.custom-theme .el-tag--success{background-color:rgba(64,145,103,.1);border-color:rgba(64,145,103,.2);color:#409167}.custom-theme .el-tag--success.is-hit{border-color:#409167}.custom-theme .el-tag--success .el-tag__close{color:#409167}.custom-theme .el-tag--success .el-tag__close:hover{background-color:#409167;color:#fff}.custom-theme .el-tag--warning{background-color:rgba(157,164,8,.1);border-color:rgba(157,164,8,.2);color:#9da408}.custom-theme .el-tag--warning.is-hit{border-color:#9da408}.custom-theme .el-tag--warning .el-tag__close{color:#9da408}.custom-theme .el-tag--warning .el-tag__close:hover{background-color:#9da408;color:#fff}.custom-theme .el-tag--danger{background-color:rgba(179,69,14,.1);border-color:rgba(179,69,14,.2);color:#b3450e}.custom-theme .el-tag--danger.is-hit{border-color:#b3450e}.custom-theme .el-tag--danger .el-tag__close{color:#b3450e}.custom-theme .el-tag--danger .el-tag__close:hover{background-color:#b3450e;color:#fff}.custom-theme .el-tag--medium{height:28px;line-height:26px}.custom-theme .el-tag--medium .el-icon-close{-webkit-transform:scale(.8);transform:scale(.8)}.custom-theme .el-tag--small{height:24px;padding:0 8px;line-height:22px}.custom-theme .el-tag--small .el-icon-close{-webkit-transform:scale(.8);transform:scale(.8)}.custom-theme .el-tag--mini{height:20px;padding:0 5px;line-height:19px}.custom-theme .el-tag--mini .el-icon-close{margin-left:-3px;-webkit-transform:scale(.7);transform:scale(.7)}.custom-theme .el-select-dropdown__item{font-size:14px;padding:0 20px;position:relative;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#5a5e66;height:34px;line-height:34px;-webkit-box-sizing:border-box;box-sizing:border-box;cursor:pointer}.custom-theme .el-select-dropdown__item.is-disabled{color:#b4bccc;cursor:not-allowed}.custom-theme .el-select-dropdown__item.is-disabled:hover{background-color:#fff}.custom-theme .el-select-dropdown__item.hover,.custom-theme .el-select-dropdown__item:hover{background-color:#f5f7fa}.custom-theme .el-select-dropdown__item.selected{color:#262729;font-weight:700}.custom-theme .el-select-dropdown__item span{line-height:34px!important}.custom-theme .el-select-group{margin:0;padding:0}.custom-theme .el-select-group__wrap{position:relative;list-style:none;margin:0;padding:0}.custom-theme .el-select-group__wrap:not(:last-of-type){padding-bottom:24px}.custom-theme .el-select-group__wrap:not(:last-of-type)::after{content:'';position:absolute;display:block;left:20px;right:20px;bottom:12px;height:1px;background:#dfe4ed}.custom-theme .el-select-group__title{padding-left:20px;font-size:12px;color:#0a76a4;line-height:30px}.custom-theme .el-select-group .el-select-dropdown__item{padding-left:20px}.custom-theme .el-scrollbar{overflow:hidden;position:relative}.custom-theme .el-scrollbar:active>.el-scrollbar__bar,.custom-theme .el-scrollbar:focus>.el-scrollbar__bar,.custom-theme .el-scrollbar:hover>.el-scrollbar__bar{opacity:1;-webkit-transition:opacity 340ms ease-out;transition:opacity 340ms ease-out}.custom-theme .el-scrollbar__wrap{overflow:scroll;height:100%}.custom-theme .el-scrollbar__wrap--hidden-default::-webkit-scrollbar{width:0;height:0}.custom-theme .el-scrollbar__thumb{position:relative;display:block;width:0;height:0;cursor:pointer;border-radius:inherit;background-color:rgba(135,141,153,.3);-webkit-transition:.3s background-color;transition:.3s background-color}.custom-theme .el-scrollbar__thumb:hover{background-color:rgba(135,141,153,.5)}.custom-theme .el-scrollbar__bar{position:absolute;right:2px;bottom:2px;z-index:1;border-radius:4px;opacity:0;-webkit-transition:opacity 120ms ease-out;transition:opacity 120ms ease-out}.custom-theme .el-scrollbar__bar.is-vertical{width:6px;top:2px}.custom-theme .el-scrollbar__bar.is-vertical>div{width:100%}.custom-theme .el-scrollbar__bar.is-horizontal{height:6px;left:2px}.custom-theme .el-scrollbar__bar.is-horizontal>div{height:100%}.custom-theme .el-select{display:inline-block;position:relative}.custom-theme .el-select:hover .el-input__inner{border-color:#b4bccc}.custom-theme .el-select .el-input__inner{cursor:pointer;padding-right:35px}.custom-theme .el-select .el-input__inner:focus{border-color:#262729}.custom-theme .el-select .el-input .el-select__caret{color:#b4bccc;font-size:14px;-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;-webkit-transform:rotateZ(180deg);transform:rotateZ(180deg);line-height:16px;cursor:pointer}.custom-theme .el-select .el-input .el-select__caret.is-reverse{-webkit-transform:rotateZ(0);transform:rotateZ(0)}.custom-theme .el-select .el-input .el-select__caret.is-show-close{font-size:14px;text-align:center;-webkit-transform:rotateZ(180deg);transform:rotateZ(180deg);border-radius:100%;color:#b4bccc;-webkit-transition:color .2s cubic-bezier(.645,.045,.355,1);transition:color .2s cubic-bezier(.645,.045,.355,1)}.custom-theme .el-select .el-input .el-select__caret.is-show-close:hover{color:#878d99}.custom-theme .el-select .el-input.is-disabled .el-input__inner{cursor:not-allowed}.custom-theme .el-select .el-input.is-disabled .el-input__inner:hover{border-color:#dfe4ed}.custom-theme .el-select>.el-input{display:block}.custom-theme .el-select__input{border:none;outline:0;padding:0;margin-left:15px;color:#666;font-size:14px;vertical-align:baseline;-webkit-appearance:none;-moz-appearance:none;appearance:none;height:28px;background-color:transparent}.custom-theme .el-select__input.is-mini{height:14px}.custom-theme .el-select__close{cursor:pointer;position:absolute;top:8px;z-index:1000;right:25px;color:#b4bccc;line-height:18px;font-size:14px}.custom-theme .el-select__close:hover{color:#878d99}.custom-theme .el-select__tags{position:absolute;line-height:normal;white-space:normal;z-index:1;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.custom-theme .el-select .el-tag__close{margin-top:-2px}.custom-theme .el-select .el-tag{-webkit-box-sizing:border-box;box-sizing:border-box;border-color:transparent;margin:3px 0 3px 6px;background-color:#f0f2f5}.custom-theme .el-select .el-tag__close.el-icon-close{background-color:#b4bccc;right:-7px;color:#fff}.custom-theme .el-select .el-tag__close.el-icon-close:hover{background-color:#878d99}.custom-theme .el-select .el-tag__close.el-icon-close::before{display:block;-webkit-transform:translate(0,.5px);transform:translate(0,.5px)}.custom-theme .el-select__tag{display:inline-block;height:24px;line-height:24px;font-size:14px;border-radius:4px;color:#fff;background-color:#262729}.custom-theme .el-select__tag .el-icon-close{font-size:14px}.custom-theme .el-button{display:inline-block;line-height:1;white-space:nowrap;cursor:pointer;background:#fff;border:1px solid #d8dce5;border-color:#d8dce5;color:#5a5e66;-webkit-appearance:none;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;outline:0;margin:0;-webkit-transition:.1s;transition:.1s;font-weight:500;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;padding:12px 20px;font-size:14px;border-radius:4px}.custom-theme .el-button+.el-button{margin-left:10px}.custom-theme .el-button.is-round{padding:12px 20px}.custom-theme .el-button:focus,.custom-theme .el-button:hover{color:#262729;border-color:#bebebf;background-color:#e9e9ea}.custom-theme .el-button:active{color:#222325;border-color:#222325;outline:0}.custom-theme .el-button::-moz-focus-inner{border:0}.custom-theme .el-button [class*=el-icon-]+span{margin-left:5px}.custom-theme .el-button.is-plain:focus,.custom-theme .el-button.is-plain:hover{background:#fff;border-color:#262729;color:#262729}.custom-theme .el-button.is-plain:active{background:#fff;border-color:#222325;color:#222325;outline:0}.custom-theme .el-button.is-active{color:#222325;border-color:#222325}.custom-theme .el-button.is-disabled,.custom-theme .el-button.is-disabled:focus,.custom-theme .el-button.is-disabled:hover{color:#b4bccc;cursor:not-allowed;background-image:none;background-color:#fff;border-color:#e6ebf5}.custom-theme .el-button.is-disabled.el-button--text{background-color:transparent}.custom-theme .el-button.is-disabled.is-plain,.custom-theme .el-button.is-disabled.is-plain:focus,.custom-theme .el-button.is-disabled.is-plain:hover{background-color:#fff;border-color:#e6ebf5;color:#b4bccc}.custom-theme .el-button.is-loading{position:relative;pointer-events:none}.custom-theme .el-button.is-loading:before{pointer-events:none;content:'';position:absolute;left:-1px;top:-1px;right:-1px;bottom:-1px;border-radius:inherit;background-color:rgba(255,255,255,.35)}.custom-theme .el-button.is-round{border-radius:20px;padding:12px 23px}.custom-theme .el-button--primary{color:#fff;background-color:#262729;border-color:#262729}.custom-theme .el-button--primary:focus,.custom-theme .el-button--primary:hover{background:#515254;border-color:#515254;color:#fff}.custom-theme .el-button--primary:active{background:#222325;border-color:#222325;color:#fff;outline:0}.custom-theme .el-button--primary.is-active{background:#222325;border-color:#222325;color:#fff}.custom-theme .el-button--primary.is-disabled,.custom-theme .el-button--primary.is-disabled:active,.custom-theme .el-button--primary.is-disabled:focus,.custom-theme .el-button--primary.is-disabled:hover{color:#fff;background-color:#939394;border-color:#939394}.custom-theme .el-button--primary.is-plain{color:#262729;background:#e9e9ea;border-color:#a8a9a9}.custom-theme .el-button--primary.is-plain:focus,.custom-theme .el-button--primary.is-plain:hover{background:#262729;border-color:#262729;color:#fff}.custom-theme .el-button--primary.is-plain:active{background:#222325;border-color:#222325;color:#fff;outline:0}.custom-theme .el-button--primary.is-plain.is-disabled,.custom-theme .el-button--primary.is-plain.is-disabled:active,.custom-theme .el-button--primary.is-plain.is-disabled:focus,.custom-theme .el-button--primary.is-plain.is-disabled:hover{color:#7d7d7f;background-color:#e9e9ea;border-color:#d4d4d4}.custom-theme .el-button--success{color:#fff;background-color:#409167;border-color:#409167}.custom-theme .el-button--success:focus,.custom-theme .el-button--success:hover{background:#66a785;border-color:#66a785;color:#fff}.custom-theme .el-button--success:active{background:#3a835d;border-color:#3a835d;color:#fff;outline:0}.custom-theme .el-button--success.is-active{background:#3a835d;border-color:#3a835d;color:#fff}.custom-theme .el-button--success.is-disabled,.custom-theme .el-button--success.is-disabled:active,.custom-theme .el-button--success.is-disabled:focus,.custom-theme .el-button--success.is-disabled:hover{color:#fff;background-color:#a0c8b3;border-color:#a0c8b3}.custom-theme .el-button--success.is-plain{color:#409167;background:#ecf4f0;border-color:#b3d3c2}.custom-theme .el-button--success.is-plain:focus,.custom-theme .el-button--success.is-plain:hover{background:#409167;border-color:#409167;color:#fff}.custom-theme .el-button--success.is-plain:active{background:#3a835d;border-color:#3a835d;color:#fff;outline:0}.custom-theme .el-button--success.is-plain.is-disabled,.custom-theme .el-button--success.is-plain.is-disabled:active,.custom-theme .el-button--success.is-plain.is-disabled:focus,.custom-theme .el-button--success.is-plain.is-disabled:hover{color:#8cbda4;background-color:#ecf4f0;border-color:#d9e9e1}.custom-theme .el-button--warning{color:#fff;background-color:#9da408;border-color:#9da408}.custom-theme .el-button--warning:focus,.custom-theme .el-button--warning:hover{background:#b1b639;border-color:#b1b639;color:#fff}.custom-theme .el-button--warning:active{background:#8d9407;border-color:#8d9407;color:#fff;outline:0}.custom-theme .el-button--warning.is-active{background:#8d9407;border-color:#8d9407;color:#fff}.custom-theme .el-button--warning.is-disabled,.custom-theme .el-button--warning.is-disabled:active,.custom-theme .el-button--warning.is-disabled:focus,.custom-theme .el-button--warning.is-disabled:hover{color:#fff;background-color:#ced284;border-color:#ced284}.custom-theme .el-button--warning.is-plain{color:#9da408;background:#f5f6e6;border-color:#d8db9c}.custom-theme .el-button--warning.is-plain:focus,.custom-theme .el-button--warning.is-plain:hover{background:#9da408;border-color:#9da408;color:#fff}.custom-theme .el-button--warning.is-plain:active{background:#8d9407;border-color:#8d9407;color:#fff;outline:0}.custom-theme .el-button--warning.is-plain.is-disabled,.custom-theme .el-button--warning.is-plain.is-disabled:active,.custom-theme .el-button--warning.is-plain.is-disabled:focus,.custom-theme .el-button--warning.is-plain.is-disabled:hover{color:#c4c86b;background-color:#f5f6e6;border-color:#ebedce}.custom-theme .el-button--danger{color:#fff;background-color:#b3450e;border-color:#b3450e}.custom-theme .el-button--danger:focus,.custom-theme .el-button--danger:hover{background:#c26a3e;border-color:#c26a3e;color:#fff}.custom-theme .el-button--danger:active{background:#a13e0d;border-color:#a13e0d;color:#fff;outline:0}.custom-theme .el-button--danger.is-active{background:#a13e0d;border-color:#a13e0d;color:#fff}.custom-theme .el-button--danger.is-disabled,.custom-theme .el-button--danger.is-disabled:active,.custom-theme .el-button--danger.is-disabled:focus,.custom-theme .el-button--danger.is-disabled:hover{color:#fff;background-color:#d9a287;border-color:#d9a287}.custom-theme .el-button--danger.is-plain{color:#b3450e;background:#f7ece7;border-color:#e1b59f}.custom-theme .el-button--danger.is-plain:focus,.custom-theme .el-button--danger.is-plain:hover{background:#b3450e;border-color:#b3450e;color:#fff}.custom-theme .el-button--danger.is-plain:active{background:#a13e0d;border-color:#a13e0d;color:#fff;outline:0}.custom-theme .el-button--danger.is-plain.is-disabled,.custom-theme .el-button--danger.is-plain.is-disabled:active,.custom-theme .el-button--danger.is-plain.is-disabled:focus,.custom-theme .el-button--danger.is-plain.is-disabled:hover{color:#d18f6e;background-color:#f7ece7;border-color:#f0dacf}.custom-theme .el-button--info{color:#fff;background-color:#0a76a4;border-color:#0a76a4}.custom-theme .el-button--info:focus,.custom-theme .el-button--info:hover{background:#3b91b6;border-color:#3b91b6;color:#fff}.custom-theme .el-button--info:active{background:#096a94;border-color:#096a94;color:#fff;outline:0}.custom-theme .el-button--info.is-active{background:#096a94;border-color:#096a94;color:#fff}.custom-theme .el-button--info.is-disabled,.custom-theme .el-button--info.is-disabled:active,.custom-theme .el-button--info.is-disabled:focus,.custom-theme .el-button--info.is-disabled:hover{color:#fff;background-color:#85bbd2;border-color:#85bbd2}.custom-theme .el-button--info.is-plain{color:#0a76a4;background:#e7f1f6;border-color:#9dc8db}.custom-theme .el-button--info.is-plain:focus,.custom-theme .el-button--info.is-plain:hover{background:#0a76a4;border-color:#0a76a4;color:#fff}.custom-theme .el-button--info.is-plain:active{background:#096a94;border-color:#096a94;color:#fff;outline:0}.custom-theme .el-button--info.is-plain.is-disabled,.custom-theme .el-button--info.is-plain.is-disabled:active,.custom-theme .el-button--info.is-plain.is-disabled:focus,.custom-theme .el-button--info.is-plain.is-disabled:hover{color:#6cadc8;background-color:#e7f1f6;border-color:#cee4ed}.custom-theme .el-button--medium{padding:10px 20px;font-size:14px;border-radius:4px}.custom-theme .el-button--medium.is-round{padding:10px 20px}.custom-theme .el-button--small{padding:9px 15px;font-size:12px;border-radius:3px}.custom-theme .el-button--small.is-round{padding:9px 15px}.custom-theme .el-button--mini{padding:7px 15px;font-size:12px;border-radius:3px}.custom-theme .el-button--mini.is-round{padding:7px 15px}.custom-theme .el-button--text{border:none;color:#262729;background:0 0;padding-left:0;padding-right:0}.custom-theme .el-button--text:focus,.custom-theme .el-button--text:hover{color:#515254;border-color:transparent;background-color:transparent}.custom-theme .el-button--text:active{color:#222325;border-color:transparent;background-color:transparent}.custom-theme .el-button-group{display:inline-block;vertical-align:middle}.custom-theme .el-button-group::after,.custom-theme .el-button-group::before{display:table;content:""}.custom-theme .el-button-group::after{clear:both}.custom-theme .el-button-group .el-button{float:left;position:relative}.custom-theme .el-button-group .el-button+.el-button{margin-left:0}.custom-theme .el-button-group .el-button:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.custom-theme .el-button-group .el-button:last-child{border-top-left-radius:0;border-bottom-left-radius:0}.custom-theme .el-button-group .el-button:not(:first-child):not(:last-child){border-radius:0}.custom-theme .el-button-group .el-button:not(:last-child){margin-right:-1px}.custom-theme .el-button-group .el-button:active,.custom-theme .el-button-group .el-button:focus,.custom-theme .el-button-group .el-button:hover{z-index:1}.custom-theme .el-button-group .el-button.is-active{z-index:1}.custom-theme .el-button-group .el-button--primary:first-child{border-right-color:rgba(255,255,255,.5)}.custom-theme .el-button-group .el-button--primary:last-child{border-left-color:rgba(255,255,255,.5)}.custom-theme .el-button-group .el-button--primary:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.custom-theme .el-button-group .el-button--success:first-child{border-right-color:rgba(255,255,255,.5)}.custom-theme .el-button-group .el-button--success:last-child{border-left-color:rgba(255,255,255,.5)}.custom-theme .el-button-group .el-button--success:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.custom-theme .el-button-group .el-button--warning:first-child{border-right-color:rgba(255,255,255,.5)}.custom-theme .el-button-group .el-button--warning:last-child{border-left-color:rgba(255,255,255,.5)}.custom-theme .el-button-group .el-button--warning:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.custom-theme .el-button-group .el-button--danger:first-child{border-right-color:rgba(255,255,255,.5)}.custom-theme .el-button-group .el-button--danger:last-child{border-left-color:rgba(255,255,255,.5)}.custom-theme .el-button-group .el-button--danger:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.custom-theme .el-button-group .el-button--info:first-child{border-right-color:rgba(255,255,255,.5)}.custom-theme .el-button-group .el-button--info:last-child{border-left-color:rgba(255,255,255,.5)}.custom-theme .el-button-group .el-button--info:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.custom-theme .el-checkbox{color:#5a5e66;font-weight:500;font-size:14px;position:relative;cursor:pointer;display:inline-block;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.custom-theme .el-checkbox.is-bordered{padding:9px 20px 9px 10px;border-radius:4px;border:1px solid #d8dce5}.custom-theme .el-checkbox.is-bordered.is-checked{border-color:#262729}.custom-theme .el-checkbox.is-bordered.is-disabled{border-color:#e6ebf5;cursor:not-allowed}.custom-theme .el-checkbox.is-bordered+.el-checkbox.is-bordered{margin-left:10px}.custom-theme .el-checkbox.is-bordered.el-checkbox--medium{padding:7px 20px 7px 10px;border-radius:4px}.custom-theme .el-checkbox.is-bordered.el-checkbox--medium .el-checkbox__label{line-height:17px;font-size:14px}.custom-theme .el-checkbox.is-bordered.el-checkbox--medium .el-checkbox__inner{height:14px;width:14px}.custom-theme .el-checkbox.is-bordered.el-checkbox--small{padding:3px 15px 7px 10px;border-radius:3px}.custom-theme .el-checkbox.is-bordered.el-checkbox--small .el-checkbox__label{line-height:15px;font-size:12px}.custom-theme .el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner{height:12px;width:12px}.custom-theme .el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner::after{height:6px;width:2px}.custom-theme .el-checkbox.is-bordered.el-checkbox--mini{padding:1px 15px 5px 10px;border-radius:3px}.custom-theme .el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__label{line-height:12px;font-size:12px}.custom-theme .el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__inner{height:12px;width:12px}.custom-theme .el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__inner::after{height:6px;width:2px}.custom-theme .el-checkbox__input{white-space:nowrap;cursor:pointer;outline:0;display:inline-block;line-height:1;position:relative;vertical-align:middle}.custom-theme .el-checkbox__input.is-disabled .el-checkbox__inner{background-color:#edf2fc;border-color:#d8dce5;cursor:not-allowed}.custom-theme .el-checkbox__input.is-disabled .el-checkbox__inner::after{cursor:not-allowed;border-color:#b4bccc}.custom-theme .el-checkbox__input.is-disabled .el-checkbox__inner+.el-checkbox__label{cursor:not-allowed}.custom-theme .el-checkbox__input.is-disabled.is-checked .el-checkbox__inner{background-color:#edf2fc;border-color:#d8dce5}.custom-theme .el-checkbox__input.is-disabled.is-checked .el-checkbox__inner::after{border-color:#b4bccc}.custom-theme .el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner{background-color:#edf2fc;border-color:#d8dce5}.custom-theme .el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner::before{background-color:#b4bccc;border-color:#b4bccc}.custom-theme .el-checkbox__input.is-disabled+span.el-checkbox__label{color:#b4bccc;cursor:not-allowed}.custom-theme .el-checkbox__input.is-checked .el-checkbox__inner{background-color:#262729;border-color:#262729}.custom-theme .el-checkbox__input.is-checked .el-checkbox__inner::after{-webkit-transform:rotate(45deg) scaleY(1);transform:rotate(45deg) scaleY(1)}.custom-theme .el-checkbox__input.is-checked+.el-checkbox__label{color:#262729}.custom-theme .el-checkbox__input.is-focus .el-checkbox__inner{border-color:#262729}.custom-theme .el-checkbox__input.is-indeterminate .el-checkbox__inner{background-color:#262729;border-color:#262729}.custom-theme .el-checkbox__input.is-indeterminate .el-checkbox__inner::before{content:'';position:absolute;display:block;background-color:#fff;height:2px;-webkit-transform:scale(.5);transform:scale(.5);left:0;right:0;top:5px}.custom-theme .el-checkbox__input.is-indeterminate .el-checkbox__inner::after{display:none}.custom-theme .el-checkbox__inner{display:inline-block;position:relative;border:1px solid #d8dce5;border-radius:2px;-webkit-box-sizing:border-box;box-sizing:border-box;width:14px;height:14px;background-color:#fff;z-index:1;-webkit-transition:border-color .25s cubic-bezier(.71,-.46,.29,1.46),background-color .25s cubic-bezier(.71,-.46,.29,1.46);transition:border-color .25s cubic-bezier(.71,-.46,.29,1.46),background-color .25s cubic-bezier(.71,-.46,.29,1.46)}.custom-theme .el-checkbox__inner:hover{border-color:#262729}.custom-theme .el-checkbox__inner::after{-webkit-box-sizing:content-box;box-sizing:content-box;content:"";border:1px solid #fff;border-left:0;border-top:0;height:7px;left:4px;position:absolute;top:1px;-webkit-transform:rotate(45deg) scaleY(0);transform:rotate(45deg) scaleY(0);width:3px;-webkit-transition:-webkit-transform .15s cubic-bezier(.71,-.46,.88,.6) 50ms;transition:-webkit-transform .15s cubic-bezier(.71,-.46,.88,.6) 50ms;transition:transform .15s cubic-bezier(.71,-.46,.88,.6) 50ms;transition:transform .15s cubic-bezier(.71,-.46,.88,.6) 50ms,-webkit-transform .15s cubic-bezier(.71,-.46,.88,.6) 50ms;-webkit-transform-origin:center;transform-origin:center}.custom-theme .el-checkbox__original{opacity:0;outline:0;position:absolute;margin:0;width:0;height:0;left:-999px}.custom-theme .el-checkbox__label{display:inline-block;padding-left:10px;line-height:19px;font-size:14px}.custom-theme .el-checkbox+.el-checkbox{margin-left:30px}.custom-theme .el-checkbox-button{position:relative;display:inline-block}.custom-theme .el-checkbox-button__inner{display:inline-block;line-height:1;font-weight:500;white-space:nowrap;vertical-align:middle;cursor:pointer;background:#fff;border:1px solid #d8dce5;border-left:0;color:#5a5e66;-webkit-appearance:none;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;outline:0;margin:0;position:relative;-webkit-transition:all .3s cubic-bezier(.645,.045,.355,1);transition:all .3s cubic-bezier(.645,.045,.355,1);-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;padding:12px 20px;font-size:14px;border-radius:0}.custom-theme .el-checkbox-button__inner.is-round{padding:12px 20px}.custom-theme .el-checkbox-button__inner:hover{color:#262729}.custom-theme .el-checkbox-button__inner [class*=el-icon-]{line-height:.9}.custom-theme .el-checkbox-button__inner [class*=el-icon-]+span{margin-left:5px}.custom-theme .el-checkbox-button__original{opacity:0;outline:0;position:absolute;margin:0;left:-999px}.custom-theme .el-checkbox-button.is-checked .el-checkbox-button__inner{color:#fff;background-color:#262729;border-color:#262729;-webkit-box-shadow:-1px 0 0 0 #7d7d7f;box-shadow:-1px 0 0 0 #7d7d7f}.custom-theme .el-checkbox-button.is-disabled .el-checkbox-button__inner{color:#b4bccc;cursor:not-allowed;background-image:none;background-color:#fff;border-color:#e6ebf5;-webkit-box-shadow:none;box-shadow:none}.custom-theme .el-checkbox-button:first-child .el-checkbox-button__inner{border-left:1px solid #d8dce5;border-radius:4px 0 0 4px;-webkit-box-shadow:none!important;box-shadow:none!important}.custom-theme .el-checkbox-button.is-focus .el-checkbox-button__inner{border-color:#262729}.custom-theme .el-checkbox-button:last-child .el-checkbox-button__inner{border-radius:0 4px 4px 0}.custom-theme .el-checkbox-button--medium .el-checkbox-button__inner{padding:10px 20px;font-size:14px;border-radius:0}.custom-theme .el-checkbox-button--medium .el-checkbox-button__inner.is-round{padding:10px 20px}.custom-theme .el-checkbox-button--small .el-checkbox-button__inner{padding:9px 15px;font-size:12px;border-radius:0}.custom-theme .el-checkbox-button--small .el-checkbox-button__inner.is-round{padding:9px 15px}.custom-theme .el-checkbox-button--mini .el-checkbox-button__inner{padding:7px 15px;font-size:12px;border-radius:0}.custom-theme .el-checkbox-button--mini .el-checkbox-button__inner.is-round{padding:7px 15px}.custom-theme .el-checkbox-group{font-size:0}.custom-theme .el-tag{background-color:rgba(38,39,41,.1);display:inline-block;padding:0 10px;height:32px;line-height:30px;font-size:12px;color:#262729;border-radius:4px;-webkit-box-sizing:border-box;box-sizing:border-box;border:1px solid rgba(38,39,41,.2);white-space:nowrap}.custom-theme .el-tag .el-icon-close{border-radius:50%;text-align:center;position:relative;cursor:pointer;font-size:12px;height:18px;width:18px;line-height:18px;vertical-align:middle;top:-1px;right:-5px;color:#262729}.custom-theme .el-tag .el-icon-close::before{display:block}.custom-theme .el-tag .el-icon-close:hover{background-color:#262729;color:#fff}.custom-theme .el-tag--info{background-color:rgba(10,118,164,.1);border-color:rgba(10,118,164,.2);color:#0a76a4}.custom-theme .el-tag--info.is-hit{border-color:#0a76a4}.custom-theme .el-tag--info .el-tag__close{color:#0a76a4}.custom-theme .el-tag--info .el-tag__close:hover{background-color:#0a76a4;color:#fff}.custom-theme .el-tag--success{background-color:rgba(64,145,103,.1);border-color:rgba(64,145,103,.2);color:#409167}.custom-theme .el-tag--success.is-hit{border-color:#409167}.custom-theme .el-tag--success .el-tag__close{color:#409167}.custom-theme .el-tag--success .el-tag__close:hover{background-color:#409167;color:#fff}.custom-theme .el-tag--warning{background-color:rgba(157,164,8,.1);border-color:rgba(157,164,8,.2);color:#9da408}.custom-theme .el-tag--warning.is-hit{border-color:#9da408}.custom-theme .el-tag--warning .el-tag__close{color:#9da408}.custom-theme .el-tag--warning .el-tag__close:hover{background-color:#9da408;color:#fff}.custom-theme .el-tag--danger{background-color:rgba(179,69,14,.1);border-color:rgba(179,69,14,.2);color:#b3450e}.custom-theme .el-tag--danger.is-hit{border-color:#b3450e}.custom-theme .el-tag--danger .el-tag__close{color:#b3450e}.custom-theme .el-tag--danger .el-tag__close:hover{background-color:#b3450e;color:#fff}.custom-theme .el-tag--medium{height:28px;line-height:26px}.custom-theme .el-tag--medium .el-icon-close{-webkit-transform:scale(.8);transform:scale(.8)}.custom-theme .el-tag--small{height:24px;padding:0 8px;line-height:22px}.custom-theme .el-tag--small .el-icon-close{-webkit-transform:scale(.8);transform:scale(.8)}.custom-theme .el-tag--mini{height:20px;padding:0 5px;line-height:19px}.custom-theme .el-tag--mini .el-icon-close{margin-left:-3px;-webkit-transform:scale(.7);transform:scale(.7)}.custom-theme .el-table{position:relative;overflow:hidden;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-box-flex:1;-ms-flex:1;flex:1;width:100%;max-width:100%;background-color:#fff;font-size:14px;color:#5a5e66}.custom-theme .el-table__empty-block{position:relative;min-height:60px;text-align:center;width:100%;height:100%}.custom-theme .el-table__empty-text{position:absolute;left:50%;top:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);color:color(#262729 s(16%) l(44%))}.custom-theme .el-table__expand-column .cell{padding:0;text-align:center}.custom-theme .el-table__expand-icon{position:relative;cursor:pointer;color:#666;font-size:12px;-webkit-transition:-webkit-transform .2s ease-in-out;transition:-webkit-transform .2s ease-in-out;transition:transform .2s ease-in-out;transition:transform .2s ease-in-out,-webkit-transform .2s ease-in-out;height:20px}.custom-theme .el-table__expand-icon--expanded{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.custom-theme .el-table__expand-icon>.el-icon{position:absolute;left:50%;top:50%;margin-left:-5px;margin-top:-5px}.custom-theme .el-table__expanded-cell{background-color:#fff}.custom-theme .el-table__expanded-cell[class*=cell]{padding:20px 50px}.custom-theme .el-table__expanded-cell:hover{background-color:#f5f7fa!important}.custom-theme .el-table--fit{border-right:0;border-bottom:0}.custom-theme .el-table--fit td.gutter,.custom-theme .el-table--fit th.gutter{border-right-width:1px}.custom-theme .el-table thead{color:#878d99;font-weight:500}.custom-theme .el-table thead.is-group th{background:#f5f7fa}.custom-theme .el-table td,.custom-theme .el-table th{padding:12px 0;min-width:0;-webkit-box-sizing:border-box;box-sizing:border-box;text-overflow:ellipsis;vertical-align:middle;position:relative}.custom-theme .el-table td.is-center,.custom-theme .el-table th.is-center{text-align:center}.custom-theme .el-table td.is-left,.custom-theme .el-table th.is-left{text-align:left}.custom-theme .el-table td.is-right,.custom-theme .el-table th.is-right{text-align:right}.custom-theme .el-table td.gutter,.custom-theme .el-table th.gutter{width:15px;border-right-width:0;border-bottom-width:0;padding:0}.custom-theme .el-table td.is-hidden>*,.custom-theme .el-table th.is-hidden>*{visibility:hidden}.custom-theme .el-table--medium td,.custom-theme .el-table--medium th{padding:10px 0}.custom-theme .el-table--small{font-size:12px}.custom-theme .el-table--small td,.custom-theme .el-table--small th{padding:8px 0}.custom-theme .el-table--mini{font-size:12px}.custom-theme .el-table--mini td,.custom-theme .el-table--mini th{padding:6px 0}.custom-theme .el-table tr{background-color:#fff}.custom-theme .el-table tr input[type=checkbox]{margin:0}.custom-theme .el-table td,.custom-theme .el-table th.is-leaf{border-bottom:1px solid #e6ebf5}.custom-theme .el-table th.is-sortable{cursor:pointer}.custom-theme .el-table th{white-space:nowrap;overflow:hidden;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;text-align:left}.custom-theme .el-table th div{display:inline-block;padding-left:10px;padding-right:10px;line-height:40px;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.custom-theme .el-table th>.cell{position:relative;word-wrap:normal;text-overflow:ellipsis;display:inline-block;vertical-align:middle;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.custom-theme .el-table th>.cell.highlight{color:#262729}.custom-theme .el-table th.required>div::before{display:inline-block;content:"";width:8px;height:8px;border-radius:50%;background:#ff4d51;margin-right:5px;vertical-align:middle}.custom-theme .el-table td div{-webkit-box-sizing:border-box;box-sizing:border-box}.custom-theme .el-table td.gutter{width:0}.custom-theme .el-table .cell{-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;text-overflow:ellipsis;white-space:normal;word-break:break-all;line-height:23px;padding-left:10px;padding-right:10px}.custom-theme .el-table .cell.el-tooltip{white-space:nowrap;min-width:50px}.custom-theme .el-table td:first-child .cell,.custom-theme .el-table th:first-child .cell{padding-left:0}.custom-theme .el-table--border,.custom-theme .el-table--group{border:1px solid #e6ebf5}.custom-theme .el-table--border::after,.custom-theme .el-table--group::after,.custom-theme .el-table::before{content:'';position:absolute;background-color:#e6ebf5;z-index:1}.custom-theme .el-table--border::after,.custom-theme .el-table--group::after{top:0;right:0;width:1px;height:100%}.custom-theme .el-table::before{left:0;bottom:0;width:100%;height:1px}.custom-theme .el-table--border{border-right:none;border-bottom:none}.custom-theme .el-table--border td,.custom-theme .el-table--border th{border-right:1px solid #e6ebf5}.custom-theme .el-table--border td:first-child .cell,.custom-theme .el-table--border th:first-child .cell{padding-left:10px}.custom-theme .el-table--border .has-gutter td:nth-last-of-type(2),.custom-theme .el-table--border .has-gutter th:nth-last-of-type(2){border-right:none}.custom-theme .el-table--border th.gutter:last-of-type{border-bottom:1px solid #e6ebf5;border-bottom-width:1px}.custom-theme .el-table--border th{border-bottom:1px solid #e6ebf5}.custom-theme .el-table--hidden{visibility:hidden}.custom-theme .el-table__fixed,.custom-theme .el-table__fixed-right{position:absolute;top:0;left:0;overflow-x:hidden;-webkit-box-shadow:0 0 10px rgba(0,0,0,.12);box-shadow:0 0 10px rgba(0,0,0,.12)}.custom-theme .el-table__fixed-right::before,.custom-theme .el-table__fixed::before{content:'';position:absolute;left:0;bottom:0;width:100%;height:1px;background-color:#e6ebf5;z-index:4}.custom-theme .el-table__fixed-right-patch{position:absolute;top:-1px;right:0;background-color:#fff;border-bottom:1px solid #e6ebf5}.custom-theme .el-table__fixed-right{top:0;left:auto;right:0}.custom-theme .el-table__fixed-right .el-table__fixed-body-wrapper,.custom-theme .el-table__fixed-right .el-table__fixed-footer-wrapper,.custom-theme .el-table__fixed-right .el-table__fixed-header-wrapper{left:auto;right:0}.custom-theme .el-table__fixed-header-wrapper{position:absolute;left:0;top:0;z-index:3}.custom-theme .el-table__fixed-footer-wrapper{position:absolute;left:0;bottom:0;z-index:3}.custom-theme .el-table__fixed-footer-wrapper tbody td{border-top:1px solid #e6ebf5;background-color:#f5f7fa;color:#5a5e66}.custom-theme .el-table__fixed-body-wrapper{position:absolute;left:0;top:37px;overflow:hidden;z-index:3}.custom-theme .el-table__body-wrapper,.custom-theme .el-table__footer-wrapper,.custom-theme .el-table__header-wrapper{width:100%}.custom-theme .el-table__footer-wrapper{margin-top:-1px}.custom-theme .el-table__footer-wrapper td{border-top:1px solid #e6ebf5}.custom-theme .el-table__body,.custom-theme .el-table__footer,.custom-theme .el-table__header{table-layout:fixed}.custom-theme .el-table__footer-wrapper,.custom-theme .el-table__header-wrapper{overflow:hidden}.custom-theme .el-table__footer-wrapper tbody td,.custom-theme .el-table__header-wrapper tbody td{background-color:#f5f7fa;color:#5a5e66}.custom-theme .el-table__body-wrapper{overflow:auto;position:relative}.custom-theme .el-table__body-wrapper.is-scroll-none~.el-table__fixed,.custom-theme .el-table__body-wrapper.is-scroll-none~.el-table__fixed-right{-webkit-box-shadow:none;box-shadow:none}.custom-theme .el-table__body-wrapper.is-scroll-left~.el-table__fixed{-webkit-box-shadow:none;box-shadow:none}.custom-theme .el-table__body-wrapper.is-scroll-right~.el-table__fixed-right{-webkit-box-shadow:none;box-shadow:none}.custom-theme .el-table__body-wrapper .el-table--border.is-scroll-right~.el-table__fixed-right{border-left:1px solid #e6ebf5}.custom-theme .el-table__body-wrapper .el-table--border.is-scroll-left~.el-table__fixed{border-right:1px solid #e6ebf5}.custom-theme .el-table .caret-wrapper{position:relative;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:13px;width:24px;cursor:pointer;overflow:initial}.custom-theme .el-table .sort-caret{color:#0a76a4;width:14px;overflow:hidden;font-size:13px}.custom-theme .el-table .ascending .sort-caret.ascending{color:#262729}.custom-theme .el-table .descending .sort-caret.descending{color:#262729}.custom-theme .el-table .hidden-columns{visibility:hidden;position:absolute;z-index:-1}.custom-theme .el-table--striped .el-table__body tr.el-table__row--striped td{background:#fafafa}.custom-theme .el-table--striped .el-table__body tr.el-table__row--striped.current-row td{background-color:#e9e9ea}.custom-theme .el-table__body tr.hover-row.current-row>td,.custom-theme .el-table__body tr.hover-row.el-table__row--striped.current-row>td,.custom-theme .el-table__body tr.hover-row.el-table__row--striped>td,.custom-theme .el-table__body tr.hover-row>td{background-color:#e9e9ea}.custom-theme .el-table__body tr.current-row>td{background-color:#e9e9ea}.custom-theme .el-table__column-resize-proxy{position:absolute;left:200px;top:0;bottom:0;width:0;border-left:1px solid #e6ebf5;z-index:10}.custom-theme .el-table__column-filter-trigger{display:inline-block;line-height:34px;cursor:pointer}.custom-theme .el-table__column-filter-trigger i{color:#0a76a4;font-size:12px;-webkit-transform:scale(.75);transform:scale(.75)}.custom-theme .el-table--enable-row-transition .el-table__body td{-webkit-transition:background-color .25s ease;transition:background-color .25s ease}.custom-theme .el-table--enable-row-hover .el-table__body tr:hover>td{background-color:#f5f7fa}.custom-theme .el-table--fluid-height .el-table__fixed,.custom-theme .el-table--fluid-height .el-table__fixed-right{bottom:0;overflow:hidden}.custom-theme .el-checkbox{color:#5a5e66;font-weight:500;font-size:14px;position:relative;cursor:pointer;display:inline-block;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.custom-theme .el-checkbox.is-bordered{padding:9px 20px 9px 10px;border-radius:4px;border:1px solid #d8dce5}.custom-theme .el-checkbox.is-bordered.is-checked{border-color:#262729}.custom-theme .el-checkbox.is-bordered.is-disabled{border-color:#e6ebf5;cursor:not-allowed}.custom-theme .el-checkbox.is-bordered+.el-checkbox.is-bordered{margin-left:10px}.custom-theme .el-checkbox.is-bordered.el-checkbox--medium{padding:7px 20px 7px 10px;border-radius:4px}.custom-theme .el-checkbox.is-bordered.el-checkbox--medium .el-checkbox__label{line-height:17px;font-size:14px}.custom-theme .el-checkbox.is-bordered.el-checkbox--medium .el-checkbox__inner{height:14px;width:14px}.custom-theme .el-checkbox.is-bordered.el-checkbox--small{padding:3px 15px 7px 10px;border-radius:3px}.custom-theme .el-checkbox.is-bordered.el-checkbox--small .el-checkbox__label{line-height:15px;font-size:12px}.custom-theme .el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner{height:12px;width:12px}.custom-theme .el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner::after{height:6px;width:2px}.custom-theme .el-checkbox.is-bordered.el-checkbox--mini{padding:1px 15px 5px 10px;border-radius:3px}.custom-theme .el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__label{line-height:12px;font-size:12px}.custom-theme .el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__inner{height:12px;width:12px}.custom-theme .el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__inner::after{height:6px;width:2px}.custom-theme .el-checkbox__input{white-space:nowrap;cursor:pointer;outline:0;display:inline-block;line-height:1;position:relative;vertical-align:middle}.custom-theme .el-checkbox__input.is-disabled .el-checkbox__inner{background-color:#edf2fc;border-color:#d8dce5;cursor:not-allowed}.custom-theme .el-checkbox__input.is-disabled .el-checkbox__inner::after{cursor:not-allowed;border-color:#b4bccc}.custom-theme .el-checkbox__input.is-disabled .el-checkbox__inner+.el-checkbox__label{cursor:not-allowed}.custom-theme .el-checkbox__input.is-disabled.is-checked .el-checkbox__inner{background-color:#edf2fc;border-color:#d8dce5}.custom-theme .el-checkbox__input.is-disabled.is-checked .el-checkbox__inner::after{border-color:#b4bccc}.custom-theme .el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner{background-color:#edf2fc;border-color:#d8dce5}.custom-theme .el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner::before{background-color:#b4bccc;border-color:#b4bccc}.custom-theme .el-checkbox__input.is-disabled+span.el-checkbox__label{color:#b4bccc;cursor:not-allowed}.custom-theme .el-checkbox__input.is-checked .el-checkbox__inner{background-color:#262729;border-color:#262729}.custom-theme .el-checkbox__input.is-checked .el-checkbox__inner::after{-webkit-transform:rotate(45deg) scaleY(1);transform:rotate(45deg) scaleY(1)}.custom-theme .el-checkbox__input.is-checked+.el-checkbox__label{color:#262729}.custom-theme .el-checkbox__input.is-focus .el-checkbox__inner{border-color:#262729}.custom-theme .el-checkbox__input.is-indeterminate .el-checkbox__inner{background-color:#262729;border-color:#262729}.custom-theme .el-checkbox__input.is-indeterminate .el-checkbox__inner::before{content:'';position:absolute;display:block;background-color:#fff;height:2px;-webkit-transform:scale(.5);transform:scale(.5);left:0;right:0;top:5px}.custom-theme .el-checkbox__input.is-indeterminate .el-checkbox__inner::after{display:none}.custom-theme .el-checkbox__inner{display:inline-block;position:relative;border:1px solid #d8dce5;border-radius:2px;-webkit-box-sizing:border-box;box-sizing:border-box;width:14px;height:14px;background-color:#fff;z-index:1;-webkit-transition:border-color .25s cubic-bezier(.71,-.46,.29,1.46),background-color .25s cubic-bezier(.71,-.46,.29,1.46);transition:border-color .25s cubic-bezier(.71,-.46,.29,1.46),background-color .25s cubic-bezier(.71,-.46,.29,1.46)}.custom-theme .el-checkbox__inner:hover{border-color:#262729}.custom-theme .el-checkbox__inner::after{-webkit-box-sizing:content-box;box-sizing:content-box;content:"";border:1px solid #fff;border-left:0;border-top:0;height:7px;left:4px;position:absolute;top:1px;-webkit-transform:rotate(45deg) scaleY(0);transform:rotate(45deg) scaleY(0);width:3px;-webkit-transition:-webkit-transform .15s cubic-bezier(.71,-.46,.88,.6) 50ms;transition:-webkit-transform .15s cubic-bezier(.71,-.46,.88,.6) 50ms;transition:transform .15s cubic-bezier(.71,-.46,.88,.6) 50ms;transition:transform .15s cubic-bezier(.71,-.46,.88,.6) 50ms,-webkit-transform .15s cubic-bezier(.71,-.46,.88,.6) 50ms;-webkit-transform-origin:center;transform-origin:center}.custom-theme .el-checkbox__original{opacity:0;outline:0;position:absolute;margin:0;width:0;height:0;left:-999px}.custom-theme .el-checkbox__label{display:inline-block;padding-left:10px;line-height:19px;font-size:14px}.custom-theme .el-checkbox+.el-checkbox{margin-left:30px}.custom-theme .el-checkbox-button{position:relative;display:inline-block}.custom-theme .el-checkbox-button__inner{display:inline-block;line-height:1;font-weight:500;white-space:nowrap;vertical-align:middle;cursor:pointer;background:#fff;border:1px solid #d8dce5;border-left:0;color:#5a5e66;-webkit-appearance:none;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;outline:0;margin:0;position:relative;-webkit-transition:all .3s cubic-bezier(.645,.045,.355,1);transition:all .3s cubic-bezier(.645,.045,.355,1);-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;padding:12px 20px;font-size:14px;border-radius:0}.custom-theme .el-checkbox-button__inner.is-round{padding:12px 20px}.custom-theme .el-checkbox-button__inner:hover{color:#262729}.custom-theme .el-checkbox-button__inner [class*=el-icon-]{line-height:.9}.custom-theme .el-checkbox-button__inner [class*=el-icon-]+span{margin-left:5px}.custom-theme .el-checkbox-button__original{opacity:0;outline:0;position:absolute;margin:0;left:-999px}.custom-theme .el-checkbox-button.is-checked .el-checkbox-button__inner{color:#fff;background-color:#262729;border-color:#262729;-webkit-box-shadow:-1px 0 0 0 #7d7d7f;box-shadow:-1px 0 0 0 #7d7d7f}.custom-theme .el-checkbox-button.is-disabled .el-checkbox-button__inner{color:#b4bccc;cursor:not-allowed;background-image:none;background-color:#fff;border-color:#e6ebf5;-webkit-box-shadow:none;box-shadow:none}.custom-theme .el-checkbox-button:first-child .el-checkbox-button__inner{border-left:1px solid #d8dce5;border-radius:4px 0 0 4px;-webkit-box-shadow:none!important;box-shadow:none!important}.custom-theme .el-checkbox-button.is-focus .el-checkbox-button__inner{border-color:#262729}.custom-theme .el-checkbox-button:last-child .el-checkbox-button__inner{border-radius:0 4px 4px 0}.custom-theme .el-checkbox-button--medium .el-checkbox-button__inner{padding:10px 20px;font-size:14px;border-radius:0}.custom-theme .el-checkbox-button--medium .el-checkbox-button__inner.is-round{padding:10px 20px}.custom-theme .el-checkbox-button--small .el-checkbox-button__inner{padding:9px 15px;font-size:12px;border-radius:0}.custom-theme .el-checkbox-button--small .el-checkbox-button__inner.is-round{padding:9px 15px}.custom-theme .el-checkbox-button--mini .el-checkbox-button__inner{padding:7px 15px;font-size:12px;border-radius:0}.custom-theme .el-checkbox-button--mini .el-checkbox-button__inner.is-round{padding:7px 15px}.custom-theme .el-checkbox-group{font-size:0}.custom-theme .el-tag{background-color:rgba(38,39,41,.1);display:inline-block;padding:0 10px;height:32px;line-height:30px;font-size:12px;color:#262729;border-radius:4px;-webkit-box-sizing:border-box;box-sizing:border-box;border:1px solid rgba(38,39,41,.2);white-space:nowrap}.custom-theme .el-tag .el-icon-close{border-radius:50%;text-align:center;position:relative;cursor:pointer;font-size:12px;height:18px;width:18px;line-height:18px;vertical-align:middle;top:-1px;right:-5px;color:#262729}.custom-theme .el-tag .el-icon-close::before{display:block}.custom-theme .el-tag .el-icon-close:hover{background-color:#262729;color:#fff}.custom-theme .el-tag--info{background-color:rgba(10,118,164,.1);border-color:rgba(10,118,164,.2);color:#0a76a4}.custom-theme .el-tag--info.is-hit{border-color:#0a76a4}.custom-theme .el-tag--info .el-tag__close{color:#0a76a4}.custom-theme .el-tag--info .el-tag__close:hover{background-color:#0a76a4;color:#fff}.custom-theme .el-tag--success{background-color:rgba(64,145,103,.1);border-color:rgba(64,145,103,.2);color:#409167}.custom-theme .el-tag--success.is-hit{border-color:#409167}.custom-theme .el-tag--success .el-tag__close{color:#409167}.custom-theme .el-tag--success .el-tag__close:hover{background-color:#409167;color:#fff}.custom-theme .el-tag--warning{background-color:rgba(157,164,8,.1);border-color:rgba(157,164,8,.2);color:#9da408}.custom-theme .el-tag--warning.is-hit{border-color:#9da408}.custom-theme .el-tag--warning .el-tag__close{color:#9da408}.custom-theme .el-tag--warning .el-tag__close:hover{background-color:#9da408;color:#fff}.custom-theme .el-tag--danger{background-color:rgba(179,69,14,.1);border-color:rgba(179,69,14,.2);color:#b3450e}.custom-theme .el-tag--danger.is-hit{border-color:#b3450e}.custom-theme .el-tag--danger .el-tag__close{color:#b3450e}.custom-theme .el-tag--danger .el-tag__close:hover{background-color:#b3450e;color:#fff}.custom-theme .el-tag--medium{height:28px;line-height:26px}.custom-theme .el-tag--medium .el-icon-close{-webkit-transform:scale(.8);transform:scale(.8)}.custom-theme .el-tag--small{height:24px;padding:0 8px;line-height:22px}.custom-theme .el-tag--small .el-icon-close{-webkit-transform:scale(.8);transform:scale(.8)}.custom-theme .el-tag--mini{height:20px;padding:0 5px;line-height:19px}.custom-theme .el-tag--mini .el-icon-close{margin-left:-3px;-webkit-transform:scale(.7);transform:scale(.7)}.custom-theme .el-table-column--selection .cell{padding-left:14px;padding-right:14px}.custom-theme .el-table-filter{border:solid 1px #e6ebf5;border-radius:2px;background-color:#fff;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);-webkit-box-sizing:border-box;box-sizing:border-box;margin:2px 0}.custom-theme .el-table-filter__list{padding:5px 0;margin:0;list-style:none;min-width:100px}.custom-theme .el-table-filter__list-item{line-height:36px;padding:0 10px;cursor:pointer;font-size:14px}.custom-theme .el-table-filter__list-item:hover{background-color:#e9e9ea;color:#515254}.custom-theme .el-table-filter__list-item.is-active{background-color:#262729;color:#fff}.custom-theme .el-table-filter__content{min-width:100px}.custom-theme .el-table-filter__bottom{border-top:1px solid #e6ebf5;padding:8px}.custom-theme .el-table-filter__bottom button{background:0 0;border:none;color:#5a5e66;cursor:pointer;font-size:13px;padding:0 3px}.custom-theme .el-table-filter__bottom button:hover{color:#262729}.custom-theme .el-table-filter__bottom button:focus{outline:0}.custom-theme .el-table-filter__bottom button.is-disabled{color:#b4bccc;cursor:not-allowed}.custom-theme .el-table-filter__checkbox-group{padding:10px}.custom-theme .el-table-filter__checkbox-group label.el-checkbox{display:block;margin-bottom:8px;margin-left:5px}.custom-theme .el-table-filter__checkbox-group .el-checkbox:last-child{margin-bottom:0}.custom-theme .el-date-table{font-size:12px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.custom-theme .el-date-table.is-week-mode .el-date-table__row:hover div{background-color:#edf2fc}.custom-theme .el-date-table.is-week-mode .el-date-table__row:hover td.available:hover{color:#5a5e66}.custom-theme .el-date-table.is-week-mode .el-date-table__row:hover td:first-child div{margin-left:5px;border-top-left-radius:15px;border-bottom-left-radius:15px}.custom-theme .el-date-table.is-week-mode .el-date-table__row:hover td:last-child div{margin-right:5px;border-top-right-radius:15px;border-bottom-right-radius:15px}.custom-theme .el-date-table.is-week-mode .el-date-table__row.current div{background-color:#edf2fc}.custom-theme .el-date-table td{width:32px;height:30px;padding:4px 0;-webkit-box-sizing:border-box;box-sizing:border-box;text-align:center;cursor:pointer;position:relative}.custom-theme .el-date-table td div{height:30px;padding:3px 0;-webkit-box-sizing:border-box;box-sizing:border-box}.custom-theme .el-date-table td span{width:24px;height:24px;display:block;margin:0 auto;line-height:24px;position:absolute;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);border-radius:50%}.custom-theme .el-date-table td.next-month,.custom-theme .el-date-table td.prev-month{color:#b4bccc}.custom-theme .el-date-table td.today{position:relative}.custom-theme .el-date-table td.today span{color:#262729}.custom-theme .el-date-table td.today.end-date span,.custom-theme .el-date-table td.today.start-date span{color:#fff}.custom-theme .el-date-table td.available:hover{color:#262729}.custom-theme .el-date-table td.in-range div{background-color:#edf2fc}.custom-theme .el-date-table td.in-range div:hover{background-color:#edf2fc}.custom-theme .el-date-table td.current:not(.disabled) span{color:#fff;background-color:#262729}.custom-theme .el-date-table td.end-date div,.custom-theme .el-date-table td.start-date div{color:#fff}.custom-theme .el-date-table td.end-date span,.custom-theme .el-date-table td.start-date span{background-color:#262729}.custom-theme .el-date-table td.start-date div{margin-left:5px;border-top-left-radius:15px;border-bottom-left-radius:15px}.custom-theme .el-date-table td.end-date div{margin-right:5px;border-top-right-radius:15px;border-bottom-right-radius:15px}.custom-theme .el-date-table td.disabled div{background-color:#f5f7fa;opacity:1;cursor:not-allowed;color:#b4bccc}.custom-theme .el-date-table td.week{font-size:80%;color:#5a5e66}.custom-theme .el-date-table th{padding:5px;color:#5a5e66;font-weight:400;border-bottom:solid 1px #e6ebf5}.custom-theme .el-month-table{font-size:12px;margin:-1px;border-collapse:collapse}.custom-theme .el-month-table td{text-align:center;padding:20px 3px;cursor:pointer}.custom-theme .el-month-table td.disabled .cell{background-color:#f5f7fa;cursor:not-allowed;color:#b4bccc}.custom-theme .el-month-table td.disabled .cell:hover{color:#b4bccc}.custom-theme .el-month-table td .cell{width:48px;height:32px;display:block;line-height:32px;color:#5a5e66;margin:0 auto}.custom-theme .el-month-table td .cell:hover{color:#262729}.custom-theme .el-month-table td.current:not(.disabled) .cell{color:#262729}.custom-theme .el-year-table{font-size:12px;margin:-1px;border-collapse:collapse}.custom-theme .el-year-table .el-icon{color:#2d2f33}.custom-theme .el-year-table td{text-align:center;padding:20px 3px;cursor:pointer}.custom-theme .el-year-table td.disabled .cell{background-color:#f5f7fa;cursor:not-allowed;color:#b4bccc}.custom-theme .el-year-table td.disabled .cell:hover{color:#b4bccc}.custom-theme .el-year-table td .cell{width:48px;height:32px;display:block;line-height:32px;color:#5a5e66;margin:0 auto}.custom-theme .el-year-table td .cell:hover{color:#262729}.custom-theme .el-year-table td.current:not(.disabled) .cell{color:#262729}.custom-theme .el-time-spinner.has-seconds .el-time-spinner__wrapper{width:33.3%}.custom-theme .el-time-spinner.has-seconds .el-time-spinner__wrapper:nth-child(2){margin-left:1%}.custom-theme .el-time-spinner__wrapper{max-height:190px;overflow:auto;display:inline-block;width:50%;vertical-align:top;position:relative}.custom-theme .el-time-spinner__wrapper .el-scrollbar__wrap:not(.el-scrollbar__wrap--hidden-default){padding-bottom:15px}.custom-theme .el-time-spinner__wrapper.is-arrow{-webkit-box-sizing:border-box;box-sizing:border-box;text-align:center;overflow:hidden}.custom-theme .el-time-spinner__wrapper.is-arrow .el-time-spinner__list{-webkit-transform:translateY(-32px);transform:translateY(-32px)}.custom-theme .el-time-spinner__wrapper.is-arrow .el-time-spinner__item:hover:not(.disabled):not(.active){background:#fff;cursor:default}.custom-theme .el-time-spinner__arrow{font-size:12px;color:#878d99;position:absolute;left:0;width:100%;z-index:1;text-align:center;height:30px;line-height:30px;cursor:pointer}.custom-theme .el-time-spinner__arrow:hover{color:#262729}.custom-theme .el-time-spinner__arrow.el-icon-arrow-up{top:10px}.custom-theme .el-time-spinner__arrow.el-icon-arrow-down{bottom:10px}.custom-theme .el-time-spinner__input.el-input{width:70%}.custom-theme .el-time-spinner__input.el-input .el-input__inner{padding:0;text-align:center}.custom-theme .el-time-spinner__list{padding:0;margin:0;list-style:none;text-align:center}.custom-theme .el-time-spinner__list::after,.custom-theme .el-time-spinner__list::before{content:'';display:block;width:100%;height:80px}.custom-theme .el-time-spinner__item{height:32px;line-height:32px;font-size:12px;color:#5a5e66}.custom-theme .el-time-spinner__item:hover:not(.disabled):not(.active){background:#f5f7fa;cursor:pointer}.custom-theme .el-time-spinner__item.active:not(.disabled){color:#2d2f33;font-weight:700}.custom-theme .el-time-spinner__item.disabled{color:#b4bccc;cursor:not-allowed}.custom-theme .fade-in-linear-enter-active,.custom-theme .fade-in-linear-leave-active{-webkit-transition:opacity .2s linear;transition:opacity .2s linear}.custom-theme .fade-in-linear-enter,.custom-theme .fade-in-linear-leave,.custom-theme .fade-in-linear-leave-active{opacity:0}.custom-theme .el-fade-in-linear-enter-active,.custom-theme .el-fade-in-linear-leave-active{-webkit-transition:opacity .2s linear;transition:opacity .2s linear}.custom-theme .el-fade-in-linear-enter,.custom-theme .el-fade-in-linear-leave,.custom-theme .el-fade-in-linear-leave-active{opacity:0}.custom-theme .el-fade-in-enter-active,.custom-theme .el-fade-in-leave-active{-webkit-transition:all .3s cubic-bezier(.55,0,.1,1);transition:all .3s cubic-bezier(.55,0,.1,1)}.custom-theme .el-fade-in-enter,.custom-theme .el-fade-in-leave-active{opacity:0}.custom-theme .el-zoom-in-center-enter-active,.custom-theme .el-zoom-in-center-leave-active{-webkit-transition:all .3s cubic-bezier(.55,0,.1,1);transition:all .3s cubic-bezier(.55,0,.1,1)}.custom-theme .el-zoom-in-center-enter,.custom-theme .el-zoom-in-center-leave-active{opacity:0;-webkit-transform:scaleX(0);transform:scaleX(0)}.custom-theme .el-zoom-in-top-enter-active,.custom-theme .el-zoom-in-top-leave-active{opacity:1;-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transition:opacity .3s cubic-bezier(.23,1,.32,1) .1s,-webkit-transform .3s cubic-bezier(.23,1,.32,1) .1s;transition:opacity .3s cubic-bezier(.23,1,.32,1) .1s,-webkit-transform .3s cubic-bezier(.23,1,.32,1) .1s;transition:transform .3s cubic-bezier(.23,1,.32,1) .1s,opacity .3s cubic-bezier(.23,1,.32,1) .1s;transition:transform .3s cubic-bezier(.23,1,.32,1) .1s,opacity .3s cubic-bezier(.23,1,.32,1) .1s,-webkit-transform .3s cubic-bezier(.23,1,.32,1) .1s;-webkit-transform-origin:center top;transform-origin:center top}.custom-theme .el-zoom-in-top-enter,.custom-theme .el-zoom-in-top-leave-active{opacity:0;-webkit-transform:scaleY(0);transform:scaleY(0)}.custom-theme .el-zoom-in-bottom-enter-active,.custom-theme .el-zoom-in-bottom-leave-active{opacity:1;-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transition:opacity .3s cubic-bezier(.23,1,.32,1) .1s,-webkit-transform .3s cubic-bezier(.23,1,.32,1) .1s;transition:opacity .3s cubic-bezier(.23,1,.32,1) .1s,-webkit-transform .3s cubic-bezier(.23,1,.32,1) .1s;transition:transform .3s cubic-bezier(.23,1,.32,1) .1s,opacity .3s cubic-bezier(.23,1,.32,1) .1s;transition:transform .3s cubic-bezier(.23,1,.32,1) .1s,opacity .3s cubic-bezier(.23,1,.32,1) .1s,-webkit-transform .3s cubic-bezier(.23,1,.32,1) .1s;-webkit-transform-origin:center bottom;transform-origin:center bottom}.custom-theme .el-zoom-in-bottom-enter,.custom-theme .el-zoom-in-bottom-leave-active{opacity:0;-webkit-transform:scaleY(0);transform:scaleY(0)}.custom-theme .el-zoom-in-left-enter-active,.custom-theme .el-zoom-in-left-leave-active{opacity:1;-webkit-transform:scale(1,1);transform:scale(1,1);-webkit-transition:opacity .3s cubic-bezier(.23,1,.32,1) .1s,-webkit-transform .3s cubic-bezier(.23,1,.32,1) .1s;transition:opacity .3s cubic-bezier(.23,1,.32,1) .1s,-webkit-transform .3s cubic-bezier(.23,1,.32,1) .1s;transition:transform .3s cubic-bezier(.23,1,.32,1) .1s,opacity .3s cubic-bezier(.23,1,.32,1) .1s;transition:transform .3s cubic-bezier(.23,1,.32,1) .1s,opacity .3s cubic-bezier(.23,1,.32,1) .1s,-webkit-transform .3s cubic-bezier(.23,1,.32,1) .1s;-webkit-transform-origin:top left;transform-origin:top left}.custom-theme .el-zoom-in-left-enter,.custom-theme .el-zoom-in-left-leave-active{opacity:0;-webkit-transform:scale(.45,.45);transform:scale(.45,.45)}.custom-theme .collapse-transition{-webkit-transition:.3s height ease-in-out,.3s padding-top ease-in-out,.3s padding-bottom ease-in-out;transition:.3s height ease-in-out,.3s padding-top ease-in-out,.3s padding-bottom ease-in-out}.custom-theme .horizontal-collapse-transition{-webkit-transition:.3s width ease-in-out,.3s padding-left ease-in-out,.3s padding-right ease-in-out;transition:.3s width ease-in-out,.3s padding-left ease-in-out,.3s padding-right ease-in-out}.custom-theme .el-list-enter-active,.custom-theme .el-list-leave-active{-webkit-transition:all 1s;transition:all 1s}.custom-theme .el-list-enter,.custom-theme .el-list-leave-active{opacity:0;-webkit-transform:translateY(-30px);transform:translateY(-30px)}.custom-theme .el-opacity-transition{-webkit-transition:opacity .3s cubic-bezier(.55,0,.1,1);transition:opacity .3s cubic-bezier(.55,0,.1,1)}.custom-theme .el-date-editor{position:relative;display:inline-block;text-align:left}.custom-theme .el-date-editor.el-input,.custom-theme .el-date-editor.el-input__inner{width:220px}.custom-theme .el-date-editor--daterange.el-input,.custom-theme .el-date-editor--daterange.el-input__inner,.custom-theme .el-date-editor--timerange.el-input,.custom-theme .el-date-editor--timerange.el-input__inner{width:350px}.custom-theme .el-date-editor--datetimerange.el-input,.custom-theme .el-date-editor--datetimerange.el-input__inner{width:400px}.custom-theme .el-date-editor .el-range__icon{font-size:14px;margin-left:-5px;color:#b4bccc;float:left;line-height:32px}.custom-theme .el-date-editor .el-range-input{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;outline:0;display:inline-block;height:100%;margin:0;padding:0;width:39%;text-align:center;font-size:14px;color:#5a5e66}.custom-theme .el-date-editor .el-range-input::-webkit-input-placeholder{color:#b4bccc}.custom-theme .el-date-editor .el-range-input:-ms-input-placeholder{color:#b4bccc}.custom-theme .el-date-editor .el-range-input::-ms-input-placeholder{color:#b4bccc}.custom-theme .el-date-editor .el-range-input::placeholder{color:#b4bccc}.custom-theme .el-date-editor .el-range-separator{display:inline-block;height:100%;padding:0 5px;margin:0;text-align:center;line-height:32px;font-size:14px;width:5%;color:#2d2f33}.custom-theme .el-date-editor .el-range__close-icon{font-size:14px;color:#b4bccc;width:25px;display:inline-block;float:right;line-height:32px}.custom-theme .el-range-editor.el-input__inner{padding:3px 10px}.custom-theme .el-range-editor.is-active{border-color:#262729}.custom-theme .el-range-editor.is-active:hover{border-color:#262729}.custom-theme .el-range-editor--medium.el-input__inner{height:36px}.custom-theme .el-range-editor--medium .el-range-separator{line-height:28px;font-size:14px}.custom-theme .el-range-editor--medium .el-range-input{font-size:14px}.custom-theme .el-range-editor--medium .el-range__close-icon,.custom-theme .el-range-editor--medium .el-range__icon{line-height:28px}.custom-theme .el-range-editor--small.el-input__inner{height:32px}.custom-theme .el-range-editor--small .el-range-separator{line-height:24px;font-size:13px}.custom-theme .el-range-editor--small .el-range-input{font-size:13px}.custom-theme .el-range-editor--small .el-range__close-icon,.custom-theme .el-range-editor--small .el-range__icon{line-height:24px}.custom-theme .el-range-editor--mini.el-input__inner{height:28px}.custom-theme .el-range-editor--mini .el-range-separator{line-height:20px;font-size:12px}.custom-theme .el-range-editor--mini .el-range-input{font-size:12px}.custom-theme .el-range-editor--mini .el-range__close-icon,.custom-theme .el-range-editor--mini .el-range__icon{line-height:20px}.custom-theme .el-range-editor.is-disabled{background-color:#f5f7fa;border-color:#dfe4ed;color:#b4bccc;cursor:not-allowed}.custom-theme .el-range-editor.is-disabled:focus,.custom-theme .el-range-editor.is-disabled:hover{border-color:#dfe4ed}.custom-theme .el-range-editor.is-disabled input{background-color:#f5f7fa;color:#b4bccc;cursor:not-allowed}.custom-theme .el-range-editor.is-disabled input::-webkit-input-placeholder{color:#b4bccc}.custom-theme .el-range-editor.is-disabled input:-ms-input-placeholder{color:#b4bccc}.custom-theme .el-range-editor.is-disabled input::-ms-input-placeholder{color:#b4bccc}.custom-theme .el-range-editor.is-disabled input::placeholder{color:#b4bccc}.custom-theme .el-range-editor.is-disabled .el-range-separator{color:#b4bccc}.custom-theme .el-picker-panel{color:#5a5e66;border:1px solid #dfe4ed;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);background:#fff;border-radius:4px;line-height:30px;margin:5px 0}.custom-theme .el-picker-panel__body-wrapper::after,.custom-theme .el-picker-panel__body::after{content:"";display:table;clear:both}.custom-theme .el-picker-panel__content{position:relative;margin:15px}.custom-theme .el-picker-panel__footer{border-top:1px solid #e4e4e4;padding:4px;text-align:right;background-color:#fff;position:relative;font-size:0}.custom-theme .el-picker-panel__shortcut{display:block;width:100%;border:0;background-color:transparent;line-height:28px;font-size:14px;color:#5a5e66;padding-left:12px;text-align:left;outline:0;cursor:pointer}.custom-theme .el-picker-panel__shortcut:hover{color:#262729}.custom-theme .el-picker-panel__shortcut.active{background-color:#e6f1fe;color:#262729}.custom-theme .el-picker-panel__btn{border:1px solid #dcdcdc;color:#333;line-height:24px;border-radius:2px;padding:0 20px;cursor:pointer;background-color:transparent;outline:0;font-size:12px}.custom-theme .el-picker-panel__btn[disabled]{color:#ccc;cursor:not-allowed}.custom-theme .el-picker-panel__icon-btn{font-size:12px;color:#2d2f33;border:0;background:0 0;cursor:pointer;outline:0;margin-top:8px}.custom-theme .el-picker-panel__icon-btn:hover{color:#262729}.custom-theme .el-picker-panel__icon-btn.is-disabled{color:#bbb}.custom-theme .el-picker-panel__icon-btn.is-disabled:hover{cursor:not-allowed}.custom-theme .el-picker-panel__link-btn{vertical-align:middle}.custom-theme .el-picker-panel .popper__arrow{-webkit-transform:translateX(-400%);transform:translateX(-400%)}.custom-theme .el-picker-panel [slot=sidebar],.custom-theme .el-picker-panel__sidebar{position:absolute;top:0;bottom:0;width:110px;border-right:1px solid #e4e4e4;-webkit-box-sizing:border-box;box-sizing:border-box;padding-top:6px;background-color:#fff;overflow:auto}.custom-theme .el-picker-panel [slot=sidebar]+.el-picker-panel__body,.custom-theme .el-picker-panel__sidebar+.el-picker-panel__body{margin-left:110px}.custom-theme .el-date-picker{width:322px}.custom-theme .el-date-picker.has-sidebar.has-time{width:434px}.custom-theme .el-date-picker.has-sidebar{width:438px}.custom-theme .el-date-picker.has-time .el-picker-panel__body-wrapper{position:relative}.custom-theme .el-date-picker .el-picker-panel__content{width:292px}.custom-theme .el-date-picker table{table-layout:fixed;width:100%}.custom-theme .el-date-picker__editor-wrap{position:relative;display:table-cell;padding:0 5px}.custom-theme .el-date-picker__time-header{position:relative;border-bottom:1px solid #e4e4e4;font-size:12px;padding:8px 5px 5px 5px;display:table;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.custom-theme .el-date-picker__header{margin:12px;text-align:center}.custom-theme .el-date-picker__header--bordered{margin-bottom:0;padding-bottom:12px;border-bottom:solid 1px #e6ebf5}.custom-theme .el-date-picker__header--bordered+.el-picker-panel__content{margin-top:0}.custom-theme .el-date-picker__header-label{font-size:16px;font-weight:500;padding:0 5px;line-height:22px;text-align:center;cursor:pointer;color:#5a5e66}.custom-theme .el-date-picker__header-label:hover{color:#262729}.custom-theme .el-date-picker__header-label.active{color:#262729}.custom-theme .el-date-picker__prev-btn{float:left}.custom-theme .el-date-picker__next-btn{float:right}.custom-theme .el-date-picker__time-wrap{padding:10px;text-align:center}.custom-theme .el-date-picker__time-label{float:left;cursor:pointer;line-height:30px;margin-left:10px}.custom-theme .el-date-range-picker{width:646px}.custom-theme .el-date-range-picker.has-sidebar{width:756px}.custom-theme .el-date-range-picker table{table-layout:fixed;width:100%}.custom-theme .el-date-range-picker .el-picker-panel__body{min-width:513px}.custom-theme .el-date-range-picker .el-picker-panel__content{margin:0}.custom-theme .el-date-range-picker__header{position:relative;text-align:center;height:28px}.custom-theme .el-date-range-picker__header [class*=arrow-left]{float:left}.custom-theme .el-date-range-picker__header [class*=arrow-right]{float:right}.custom-theme .el-date-range-picker__header div{font-size:16px;font-weight:500;margin-right:50px}.custom-theme .el-date-range-picker__content{float:left;width:50%;-webkit-box-sizing:border-box;box-sizing:border-box;margin:0;padding:16px}.custom-theme .el-date-range-picker__content.is-left{border-right:1px solid #e4e4e4}.custom-theme .el-date-range-picker__content.is-right .el-date-range-picker__header div{margin-left:50px;margin-right:50px}.custom-theme .el-date-range-picker__editors-wrap{-webkit-box-sizing:border-box;box-sizing:border-box;display:table-cell}.custom-theme .el-date-range-picker__editors-wrap.is-right{text-align:right}.custom-theme .el-date-range-picker__time-header{position:relative;border-bottom:1px solid #e4e4e4;font-size:12px;padding:8px 5px 5px 5px;display:table;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.custom-theme .el-date-range-picker__time-header>.el-icon-arrow-right{font-size:20px;vertical-align:middle;display:table-cell;color:#2d2f33}.custom-theme .el-date-range-picker__time-picker-wrap{position:relative;display:table-cell;padding:0 5px}.custom-theme .el-date-range-picker__time-picker-wrap .el-picker-panel{position:absolute;top:13px;right:0;z-index:1;background:#fff}.custom-theme .el-time-range-picker{width:354px;overflow:visible}.custom-theme .el-time-range-picker__content{position:relative;text-align:center;padding:10px}.custom-theme .el-time-range-picker__cell{-webkit-box-sizing:border-box;box-sizing:border-box;margin:0;padding:4px 7px 7px;width:50%;display:inline-block}.custom-theme .el-time-range-picker__header{margin-bottom:5px;text-align:center;font-size:14px}.custom-theme .el-time-range-picker__body{border-radius:2px;border:1px solid #dfe4ed}.custom-theme .el-time-panel{margin:5px 0;border:solid 1px #dfe4ed;background-color:#fff;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);border-radius:2px;position:absolute;width:180px;left:0;z-index:1000;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.custom-theme .el-time-panel__content{font-size:0;position:relative;overflow:hidden}.custom-theme .el-time-panel__content::after,.custom-theme .el-time-panel__content::before{content:"";top:50%;position:absolute;margin-top:-15px;height:32px;z-index:-1;left:0;right:0;-webkit-box-sizing:border-box;box-sizing:border-box;padding-top:6px;text-align:left;border-top:1px solid #dfe4ed;border-bottom:1px solid #dfe4ed}.custom-theme .el-time-panel__content::after{left:50%;margin-left:12%;margin-right:12%}.custom-theme .el-time-panel__content::before{padding-left:50%;margin-right:12%;margin-left:12%}.custom-theme .el-time-panel__content.has-seconds::after{left:calc(100% / 3 * 2)}.custom-theme .el-time-panel__content.has-seconds::before{padding-left:calc(100% / 3)}.custom-theme .el-time-panel__footer{border-top:1px solid #e4e4e4;padding:4px;height:36px;line-height:25px;text-align:right;-webkit-box-sizing:border-box;box-sizing:border-box}.custom-theme .el-time-panel__btn{border:none;line-height:28px;padding:0 5px;margin:0 5px;cursor:pointer;background-color:transparent;outline:0;font-size:12px;color:#2d2f33}.custom-theme .el-time-panel__btn.confirm{font-weight:800;color:#262729}.custom-theme .el-time-panel .popper__arrow{-webkit-transform:translateX(-400%);transform:translateX(-400%)}.custom-theme .el-input{position:relative;font-size:14px;display:inline-block;width:100%}.custom-theme .el-input::-webkit-scrollbar{z-index:11;width:6px}.custom-theme .el-input::-webkit-scrollbar:horizontal{height:6px}.custom-theme .el-input::-webkit-scrollbar-thumb{border-radius:5px;width:6px;background:#b4bccc}.custom-theme .el-input::-webkit-scrollbar-corner{background:#fff}.custom-theme .el-input::-webkit-scrollbar-track{background:#fff}.custom-theme .el-input::-webkit-scrollbar-track-piece{background:#fff;width:6px}.custom-theme .el-input__inner{-webkit-appearance:none;background-color:#fff;background-image:none;border-radius:4px;border:1px solid #d8dce5;-webkit-box-sizing:border-box;box-sizing:border-box;color:#5a5e66;display:inline-block;font-size:inherit;height:40px;line-height:1;outline:0;padding:0 15px;-webkit-transition:border-color .2s cubic-bezier(.645,.045,.355,1);transition:border-color .2s cubic-bezier(.645,.045,.355,1);width:100%}.custom-theme .el-input__inner::-webkit-input-placeholder{color:#b4bccc}.custom-theme .el-input__inner:-ms-input-placeholder{color:#b4bccc}.custom-theme .el-input__inner::-ms-input-placeholder{color:#b4bccc}.custom-theme .el-input__inner::placeholder{color:#b4bccc}.custom-theme .el-input__inner:hover{border-color:#b4bccc}.custom-theme .el-input__inner:focus{outline:0;border-color:#262729}.custom-theme .el-input__suffix{position:absolute;height:100%;right:5px;top:0;text-align:center;color:#b4bccc;-webkit-transition:all .3s;transition:all .3s;pointer-events:none}.custom-theme .el-input__suffix-inner{pointer-events:all}.custom-theme .el-input__prefix{position:absolute;height:100%;left:5px;top:0;text-align:center;color:#b4bccc;-webkit-transition:all .3s;transition:all .3s}.custom-theme .el-input__icon{height:100%;width:25px;text-align:center;-webkit-transition:all .3s;transition:all .3s;line-height:40px}.custom-theme .el-input__icon:after{content:'';height:100%;width:0;display:inline-block;vertical-align:middle}.custom-theme .el-input__validateIcon{pointer-events:none}.custom-theme .el-input.is-active .el-input__inner{outline:0;border-color:#262729}.custom-theme .el-input.is-disabled .el-input__inner{background-color:#f5f7fa;border-color:#dfe4ed;color:#b4bccc;cursor:not-allowed}.custom-theme .el-input.is-disabled .el-input__inner::-webkit-input-placeholder{color:#b4bccc}.custom-theme .el-input.is-disabled .el-input__inner:-ms-input-placeholder{color:#b4bccc}.custom-theme .el-input.is-disabled .el-input__inner::-ms-input-placeholder{color:#b4bccc}.custom-theme .el-input.is-disabled .el-input__inner::placeholder{color:#b4bccc}.custom-theme .el-input.is-disabled .el-input__icon{cursor:not-allowed}.custom-theme .el-input--suffix .el-input__inner{padding-right:30px}.custom-theme .el-input--prefix .el-input__inner{padding-left:30px}.custom-theme .el-input--medium{font-size:14px}.custom-theme .el-input--medium .el-input__inner{height:36px}.custom-theme .el-input--medium .el-input__icon{line-height:36px}.custom-theme .el-input--small{font-size:13px}.custom-theme .el-input--small .el-input__inner{height:32px}.custom-theme .el-input--small .el-input__icon{line-height:32px}.custom-theme .el-input--mini{font-size:12px}.custom-theme .el-input--mini .el-input__inner{height:28px}.custom-theme .el-input--mini .el-input__icon{line-height:28px}.custom-theme .el-input-group{line-height:normal;display:inline-table;width:100%;border-collapse:separate}.custom-theme .el-input-group>.el-input__inner{vertical-align:middle;display:table-cell}.custom-theme .el-input-group__append,.custom-theme .el-input-group__prepend{background-color:#f5f7fa;color:#0a76a4;vertical-align:middle;display:table-cell;position:relative;border:1px solid #d8dce5;border-radius:4px;padding:0 20px;width:1px;white-space:nowrap}.custom-theme .el-input-group__append:focus,.custom-theme .el-input-group__prepend:focus{outline:0}.custom-theme .el-input-group__append .el-button,.custom-theme .el-input-group__append .el-select,.custom-theme .el-input-group__prepend .el-button,.custom-theme .el-input-group__prepend .el-select{display:inline-block;margin:-20px}.custom-theme .el-input-group__append button.el-button,.custom-theme .el-input-group__append div.el-select .el-input__inner,.custom-theme .el-input-group__append div.el-select:hover .el-input__inner,.custom-theme .el-input-group__prepend button.el-button,.custom-theme .el-input-group__prepend div.el-select .el-input__inner,.custom-theme .el-input-group__prepend div.el-select:hover .el-input__inner{border-color:transparent;background-color:transparent;color:inherit;border-top:0;border-bottom:0}.custom-theme .el-input-group__append .el-button,.custom-theme .el-input-group__append .el-input,.custom-theme .el-input-group__prepend .el-button,.custom-theme .el-input-group__prepend .el-input{font-size:inherit}.custom-theme .el-input-group__prepend{border-right:0;border-top-right-radius:0;border-bottom-right-radius:0}.custom-theme .el-input-group__append{border-left:0;border-top-left-radius:0;border-bottom-left-radius:0}.custom-theme .el-input-group--prepend .el-input__inner{border-top-left-radius:0;border-bottom-left-radius:0}.custom-theme .el-input-group--append .el-input__inner{border-top-right-radius:0;border-bottom-right-radius:0}.custom-theme .el-textarea{display:inline-block;width:100%;vertical-align:bottom}.custom-theme .el-textarea__inner{display:block;resize:vertical;padding:5px 15px;line-height:1.5;-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;font-size:14px;color:#5a5e66;background-color:#fff;background-image:none;border:1px solid #d8dce5;border-radius:4px;-webkit-transition:border-color .2s cubic-bezier(.645,.045,.355,1);transition:border-color .2s cubic-bezier(.645,.045,.355,1)}.custom-theme .el-textarea__inner::-webkit-input-placeholder{color:#b4bccc}.custom-theme .el-textarea__inner:-ms-input-placeholder{color:#b4bccc}.custom-theme .el-textarea__inner::-ms-input-placeholder{color:#b4bccc}.custom-theme .el-textarea__inner::placeholder{color:#b4bccc}.custom-theme .el-textarea__inner:hover{border-color:#b4bccc}.custom-theme .el-textarea__inner:focus{outline:0;border-color:#262729}.custom-theme .el-textarea.is-disabled .el-textarea__inner{background-color:#f5f7fa;border-color:#dfe4ed;color:#b4bccc;cursor:not-allowed}.custom-theme .el-textarea.is-disabled .el-textarea__inner::-webkit-input-placeholder{color:#b4bccc}.custom-theme .el-textarea.is-disabled .el-textarea__inner:-ms-input-placeholder{color:#b4bccc}.custom-theme .el-textarea.is-disabled .el-textarea__inner::-ms-input-placeholder{color:#b4bccc}.custom-theme .el-textarea.is-disabled .el-textarea__inner::placeholder{color:#b4bccc}.custom-theme .el-scrollbar{overflow:hidden;position:relative}.custom-theme .el-scrollbar:active>.el-scrollbar__bar,.custom-theme .el-scrollbar:focus>.el-scrollbar__bar,.custom-theme .el-scrollbar:hover>.el-scrollbar__bar{opacity:1;-webkit-transition:opacity 340ms ease-out;transition:opacity 340ms ease-out}.custom-theme .el-scrollbar__wrap{overflow:scroll;height:100%}.custom-theme .el-scrollbar__wrap--hidden-default::-webkit-scrollbar{width:0;height:0}.custom-theme .el-scrollbar__thumb{position:relative;display:block;width:0;height:0;cursor:pointer;border-radius:inherit;background-color:rgba(135,141,153,.3);-webkit-transition:.3s background-color;transition:.3s background-color}.custom-theme .el-scrollbar__thumb:hover{background-color:rgba(135,141,153,.5)}.custom-theme .el-scrollbar__bar{position:absolute;right:2px;bottom:2px;z-index:1;border-radius:4px;opacity:0;-webkit-transition:opacity 120ms ease-out;transition:opacity 120ms ease-out}.custom-theme .el-scrollbar__bar.is-vertical{width:6px;top:2px}.custom-theme .el-scrollbar__bar.is-vertical>div{width:100%}.custom-theme .el-scrollbar__bar.is-horizontal{height:6px;left:2px}.custom-theme .el-scrollbar__bar.is-horizontal>div{height:100%}.custom-theme .el-popper .popper__arrow,.custom-theme .el-popper .popper__arrow::after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.custom-theme .el-popper .popper__arrow{border-width:6px;-webkit-filter:drop-shadow(0 2px 12px rgba(0, 0, 0, .03));filter:drop-shadow(0 2px 12px rgba(0, 0, 0, .03))}.custom-theme .el-popper .popper__arrow::after{content:" ";border-width:6px}.custom-theme .el-popper[x-placement^=top]{margin-bottom:12px}.custom-theme .el-popper[x-placement^=top] .popper__arrow{bottom:-6px;left:50%;margin-right:3px;border-top-color:#e6ebf5;border-bottom-width:0}.custom-theme .el-popper[x-placement^=top] .popper__arrow::after{bottom:1px;margin-left:-6px;border-top-color:#fff;border-bottom-width:0}.custom-theme .el-popper[x-placement^=bottom]{margin-top:12px}.custom-theme .el-popper[x-placement^=bottom] .popper__arrow{top:-6px;left:50%;margin-right:3px;border-top-width:0;border-bottom-color:#e6ebf5}.custom-theme .el-popper[x-placement^=bottom] .popper__arrow::after{top:1px;margin-left:-6px;border-top-width:0;border-bottom-color:#fff}.custom-theme .el-popper[x-placement^=right]{margin-left:12px}.custom-theme .el-popper[x-placement^=right] .popper__arrow{top:50%;left:-6px;margin-bottom:3px;border-right-color:#e6ebf5;border-left-width:0}.custom-theme .el-popper[x-placement^=right] .popper__arrow::after{bottom:-6px;left:1px;border-right-color:#fff;border-left-width:0}.custom-theme .el-popper[x-placement^=left]{margin-right:12px}.custom-theme .el-popper[x-placement^=left] .popper__arrow{top:50%;right:-6px;margin-bottom:3px;border-right-width:0;border-left-color:#e6ebf5}.custom-theme .el-popper[x-placement^=left] .popper__arrow::after{right:1px;bottom:-6px;margin-left:-6px;border-right-width:0;border-left-color:#fff}.custom-theme .fade-in-linear-enter-active,.custom-theme .fade-in-linear-leave-active{-webkit-transition:opacity .2s linear;transition:opacity .2s linear}.custom-theme .fade-in-linear-enter,.custom-theme .fade-in-linear-leave,.custom-theme .fade-in-linear-leave-active{opacity:0}.custom-theme .el-fade-in-linear-enter-active,.custom-theme .el-fade-in-linear-leave-active{-webkit-transition:opacity .2s linear;transition:opacity .2s linear}.custom-theme .el-fade-in-linear-enter,.custom-theme .el-fade-in-linear-leave,.custom-theme .el-fade-in-linear-leave-active{opacity:0}.custom-theme .el-fade-in-enter-active,.custom-theme .el-fade-in-leave-active{-webkit-transition:all .3s cubic-bezier(.55,0,.1,1);transition:all .3s cubic-bezier(.55,0,.1,1)}.custom-theme .el-fade-in-enter,.custom-theme .el-fade-in-leave-active{opacity:0}.custom-theme .el-zoom-in-center-enter-active,.custom-theme .el-zoom-in-center-leave-active{-webkit-transition:all .3s cubic-bezier(.55,0,.1,1);transition:all .3s cubic-bezier(.55,0,.1,1)}.custom-theme .el-zoom-in-center-enter,.custom-theme .el-zoom-in-center-leave-active{opacity:0;-webkit-transform:scaleX(0);transform:scaleX(0)}.custom-theme .el-zoom-in-top-enter-active,.custom-theme .el-zoom-in-top-leave-active{opacity:1;-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transition:opacity .3s cubic-bezier(.23,1,.32,1) .1s,-webkit-transform .3s cubic-bezier(.23,1,.32,1) .1s;transition:opacity .3s cubic-bezier(.23,1,.32,1) .1s,-webkit-transform .3s cubic-bezier(.23,1,.32,1) .1s;transition:transform .3s cubic-bezier(.23,1,.32,1) .1s,opacity .3s cubic-bezier(.23,1,.32,1) .1s;transition:transform .3s cubic-bezier(.23,1,.32,1) .1s,opacity .3s cubic-bezier(.23,1,.32,1) .1s,-webkit-transform .3s cubic-bezier(.23,1,.32,1) .1s;-webkit-transform-origin:center top;transform-origin:center top}.custom-theme .el-zoom-in-top-enter,.custom-theme .el-zoom-in-top-leave-active{opacity:0;-webkit-transform:scaleY(0);transform:scaleY(0)}.custom-theme .el-zoom-in-bottom-enter-active,.custom-theme .el-zoom-in-bottom-leave-active{opacity:1;-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transition:opacity .3s cubic-bezier(.23,1,.32,1) .1s,-webkit-transform .3s cubic-bezier(.23,1,.32,1) .1s;transition:opacity .3s cubic-bezier(.23,1,.32,1) .1s,-webkit-transform .3s cubic-bezier(.23,1,.32,1) .1s;transition:transform .3s cubic-bezier(.23,1,.32,1) .1s,opacity .3s cubic-bezier(.23,1,.32,1) .1s;transition:transform .3s cubic-bezier(.23,1,.32,1) .1s,opacity .3s cubic-bezier(.23,1,.32,1) .1s,-webkit-transform .3s cubic-bezier(.23,1,.32,1) .1s;-webkit-transform-origin:center bottom;transform-origin:center bottom}.custom-theme .el-zoom-in-bottom-enter,.custom-theme .el-zoom-in-bottom-leave-active{opacity:0;-webkit-transform:scaleY(0);transform:scaleY(0)}.custom-theme .el-zoom-in-left-enter-active,.custom-theme .el-zoom-in-left-leave-active{opacity:1;-webkit-transform:scale(1,1);transform:scale(1,1);-webkit-transition:opacity .3s cubic-bezier(.23,1,.32,1) .1s,-webkit-transform .3s cubic-bezier(.23,1,.32,1) .1s;transition:opacity .3s cubic-bezier(.23,1,.32,1) .1s,-webkit-transform .3s cubic-bezier(.23,1,.32,1) .1s;transition:transform .3s cubic-bezier(.23,1,.32,1) .1s,opacity .3s cubic-bezier(.23,1,.32,1) .1s;transition:transform .3s cubic-bezier(.23,1,.32,1) .1s,opacity .3s cubic-bezier(.23,1,.32,1) .1s,-webkit-transform .3s cubic-bezier(.23,1,.32,1) .1s;-webkit-transform-origin:top left;transform-origin:top left}.custom-theme .el-zoom-in-left-enter,.custom-theme .el-zoom-in-left-leave-active{opacity:0;-webkit-transform:scale(.45,.45);transform:scale(.45,.45)}.custom-theme .collapse-transition{-webkit-transition:.3s height ease-in-out,.3s padding-top ease-in-out,.3s padding-bottom ease-in-out;transition:.3s height ease-in-out,.3s padding-top ease-in-out,.3s padding-bottom ease-in-out}.custom-theme .horizontal-collapse-transition{-webkit-transition:.3s width ease-in-out,.3s padding-left ease-in-out,.3s padding-right ease-in-out;transition:.3s width ease-in-out,.3s padding-left ease-in-out,.3s padding-right ease-in-out}.custom-theme .el-list-enter-active,.custom-theme .el-list-leave-active{-webkit-transition:all 1s;transition:all 1s}.custom-theme .el-list-enter,.custom-theme .el-list-leave-active{opacity:0;-webkit-transform:translateY(-30px);transform:translateY(-30px)}.custom-theme .el-opacity-transition{-webkit-transition:opacity .3s cubic-bezier(.55,0,.1,1);transition:opacity .3s cubic-bezier(.55,0,.1,1)}.custom-theme .el-date-editor{position:relative;display:inline-block;text-align:left}.custom-theme .el-date-editor.el-input,.custom-theme .el-date-editor.el-input__inner{width:220px}.custom-theme .el-date-editor--daterange.el-input,.custom-theme .el-date-editor--daterange.el-input__inner,.custom-theme .el-date-editor--timerange.el-input,.custom-theme .el-date-editor--timerange.el-input__inner{width:350px}.custom-theme .el-date-editor--datetimerange.el-input,.custom-theme .el-date-editor--datetimerange.el-input__inner{width:400px}.custom-theme .el-date-editor .el-range__icon{font-size:14px;margin-left:-5px;color:#b4bccc;float:left;line-height:32px}.custom-theme .el-date-editor .el-range-input{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;outline:0;display:inline-block;height:100%;margin:0;padding:0;width:39%;text-align:center;font-size:14px;color:#5a5e66}.custom-theme .el-date-editor .el-range-input::-webkit-input-placeholder{color:#b4bccc}.custom-theme .el-date-editor .el-range-input:-ms-input-placeholder{color:#b4bccc}.custom-theme .el-date-editor .el-range-input::-ms-input-placeholder{color:#b4bccc}.custom-theme .el-date-editor .el-range-input::placeholder{color:#b4bccc}.custom-theme .el-date-editor .el-range-separator{display:inline-block;height:100%;padding:0 5px;margin:0;text-align:center;line-height:32px;font-size:14px;width:5%;color:#2d2f33}.custom-theme .el-date-editor .el-range__close-icon{font-size:14px;color:#b4bccc;width:25px;display:inline-block;float:right;line-height:32px}.custom-theme .el-range-editor.el-input__inner{padding:3px 10px}.custom-theme .el-range-editor.is-active{border-color:#262729}.custom-theme .el-range-editor.is-active:hover{border-color:#262729}.custom-theme .el-range-editor--medium.el-input__inner{height:36px}.custom-theme .el-range-editor--medium .el-range-separator{line-height:28px;font-size:14px}.custom-theme .el-range-editor--medium .el-range-input{font-size:14px}.custom-theme .el-range-editor--medium .el-range__close-icon,.custom-theme .el-range-editor--medium .el-range__icon{line-height:28px}.custom-theme .el-range-editor--small.el-input__inner{height:32px}.custom-theme .el-range-editor--small .el-range-separator{line-height:24px;font-size:13px}.custom-theme .el-range-editor--small .el-range-input{font-size:13px}.custom-theme .el-range-editor--small .el-range__close-icon,.custom-theme .el-range-editor--small .el-range__icon{line-height:24px}.custom-theme .el-range-editor--mini.el-input__inner{height:28px}.custom-theme .el-range-editor--mini .el-range-separator{line-height:20px;font-size:12px}.custom-theme .el-range-editor--mini .el-range-input{font-size:12px}.custom-theme .el-range-editor--mini .el-range__close-icon,.custom-theme .el-range-editor--mini .el-range__icon{line-height:20px}.custom-theme .el-range-editor.is-disabled{background-color:#f5f7fa;border-color:#dfe4ed;color:#b4bccc;cursor:not-allowed}.custom-theme .el-range-editor.is-disabled:focus,.custom-theme .el-range-editor.is-disabled:hover{border-color:#dfe4ed}.custom-theme .el-range-editor.is-disabled input{background-color:#f5f7fa;color:#b4bccc;cursor:not-allowed}.custom-theme .el-range-editor.is-disabled input::-webkit-input-placeholder{color:#b4bccc}.custom-theme .el-range-editor.is-disabled input:-ms-input-placeholder{color:#b4bccc}.custom-theme .el-range-editor.is-disabled input::-ms-input-placeholder{color:#b4bccc}.custom-theme .el-range-editor.is-disabled input::placeholder{color:#b4bccc}.custom-theme .el-range-editor.is-disabled .el-range-separator{color:#b4bccc}.custom-theme .el-picker-panel{color:#5a5e66;border:1px solid #dfe4ed;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);background:#fff;border-radius:4px;line-height:30px;margin:5px 0}.custom-theme .el-picker-panel__body-wrapper::after,.custom-theme .el-picker-panel__body::after{content:"";display:table;clear:both}.custom-theme .el-picker-panel__content{position:relative;margin:15px}.custom-theme .el-picker-panel__footer{border-top:1px solid #e4e4e4;padding:4px;text-align:right;background-color:#fff;position:relative;font-size:0}.custom-theme .el-picker-panel__shortcut{display:block;width:100%;border:0;background-color:transparent;line-height:28px;font-size:14px;color:#5a5e66;padding-left:12px;text-align:left;outline:0;cursor:pointer}.custom-theme .el-picker-panel__shortcut:hover{color:#262729}.custom-theme .el-picker-panel__shortcut.active{background-color:#e6f1fe;color:#262729}.custom-theme .el-picker-panel__btn{border:1px solid #dcdcdc;color:#333;line-height:24px;border-radius:2px;padding:0 20px;cursor:pointer;background-color:transparent;outline:0;font-size:12px}.custom-theme .el-picker-panel__btn[disabled]{color:#ccc;cursor:not-allowed}.custom-theme .el-picker-panel__icon-btn{font-size:12px;color:#2d2f33;border:0;background:0 0;cursor:pointer;outline:0;margin-top:8px}.custom-theme .el-picker-panel__icon-btn:hover{color:#262729}.custom-theme .el-picker-panel__icon-btn.is-disabled{color:#bbb}.custom-theme .el-picker-panel__icon-btn.is-disabled:hover{cursor:not-allowed}.custom-theme .el-picker-panel__link-btn{vertical-align:middle}.custom-theme .el-picker-panel .popper__arrow{-webkit-transform:translateX(-400%);transform:translateX(-400%)}.custom-theme .el-picker-panel [slot=sidebar],.custom-theme .el-picker-panel__sidebar{position:absolute;top:0;bottom:0;width:110px;border-right:1px solid #e4e4e4;-webkit-box-sizing:border-box;box-sizing:border-box;padding-top:6px;background-color:#fff;overflow:auto}.custom-theme .el-picker-panel [slot=sidebar]+.el-picker-panel__body,.custom-theme .el-picker-panel__sidebar+.el-picker-panel__body{margin-left:110px}.custom-theme .el-date-picker{width:322px}.custom-theme .el-date-picker.has-sidebar.has-time{width:434px}.custom-theme .el-date-picker.has-sidebar{width:438px}.custom-theme .el-date-picker.has-time .el-picker-panel__body-wrapper{position:relative}.custom-theme .el-date-picker .el-picker-panel__content{width:292px}.custom-theme .el-date-picker table{table-layout:fixed;width:100%}.custom-theme .el-date-picker__editor-wrap{position:relative;display:table-cell;padding:0 5px}.custom-theme .el-date-picker__time-header{position:relative;border-bottom:1px solid #e4e4e4;font-size:12px;padding:8px 5px 5px 5px;display:table;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.custom-theme .el-date-picker__header{margin:12px;text-align:center}.custom-theme .el-date-picker__header--bordered{margin-bottom:0;padding-bottom:12px;border-bottom:solid 1px #e6ebf5}.custom-theme .el-date-picker__header--bordered+.el-picker-panel__content{margin-top:0}.custom-theme .el-date-picker__header-label{font-size:16px;font-weight:500;padding:0 5px;line-height:22px;text-align:center;cursor:pointer;color:#5a5e66}.custom-theme .el-date-picker__header-label:hover{color:#262729}.custom-theme .el-date-picker__header-label.active{color:#262729}.custom-theme .el-date-picker__prev-btn{float:left}.custom-theme .el-date-picker__next-btn{float:right}.custom-theme .el-date-picker__time-wrap{padding:10px;text-align:center}.custom-theme .el-date-picker__time-label{float:left;cursor:pointer;line-height:30px;margin-left:10px}.custom-theme .el-scrollbar{overflow:hidden;position:relative}.custom-theme .el-scrollbar:active>.el-scrollbar__bar,.custom-theme .el-scrollbar:focus>.el-scrollbar__bar,.custom-theme .el-scrollbar:hover>.el-scrollbar__bar{opacity:1;-webkit-transition:opacity 340ms ease-out;transition:opacity 340ms ease-out}.custom-theme .el-scrollbar__wrap{overflow:scroll;height:100%}.custom-theme .el-scrollbar__wrap--hidden-default::-webkit-scrollbar{width:0;height:0}.custom-theme .el-scrollbar__thumb{position:relative;display:block;width:0;height:0;cursor:pointer;border-radius:inherit;background-color:rgba(135,141,153,.3);-webkit-transition:.3s background-color;transition:.3s background-color}.custom-theme .el-scrollbar__thumb:hover{background-color:rgba(135,141,153,.5)}.custom-theme .el-scrollbar__bar{position:absolute;right:2px;bottom:2px;z-index:1;border-radius:4px;opacity:0;-webkit-transition:opacity 120ms ease-out;transition:opacity 120ms ease-out}.custom-theme .el-scrollbar__bar.is-vertical{width:6px;top:2px}.custom-theme .el-scrollbar__bar.is-vertical>div{width:100%}.custom-theme .el-scrollbar__bar.is-horizontal{height:6px;left:2px}.custom-theme .el-scrollbar__bar.is-horizontal>div{height:100%}.custom-theme .el-popper .popper__arrow,.custom-theme .el-popper .popper__arrow::after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.custom-theme .el-popper .popper__arrow{border-width:6px;-webkit-filter:drop-shadow(0 2px 12px rgba(0, 0, 0, .03));filter:drop-shadow(0 2px 12px rgba(0, 0, 0, .03))}.custom-theme .el-popper .popper__arrow::after{content:" ";border-width:6px}.custom-theme .el-popper[x-placement^=top]{margin-bottom:12px}.custom-theme .el-popper[x-placement^=top] .popper__arrow{bottom:-6px;left:50%;margin-right:3px;border-top-color:#e6ebf5;border-bottom-width:0}.custom-theme .el-popper[x-placement^=top] .popper__arrow::after{bottom:1px;margin-left:-6px;border-top-color:#fff;border-bottom-width:0}.custom-theme .el-popper[x-placement^=bottom]{margin-top:12px}.custom-theme .el-popper[x-placement^=bottom] .popper__arrow{top:-6px;left:50%;margin-right:3px;border-top-width:0;border-bottom-color:#e6ebf5}.custom-theme .el-popper[x-placement^=bottom] .popper__arrow::after{top:1px;margin-left:-6px;border-top-width:0;border-bottom-color:#fff}.custom-theme .el-popper[x-placement^=right]{margin-left:12px}.custom-theme .el-popper[x-placement^=right] .popper__arrow{top:50%;left:-6px;margin-bottom:3px;border-right-color:#e6ebf5;border-left-width:0}.custom-theme .el-popper[x-placement^=right] .popper__arrow::after{bottom:-6px;left:1px;border-right-color:#fff;border-left-width:0}.custom-theme .el-popper[x-placement^=left]{margin-right:12px}.custom-theme .el-popper[x-placement^=left] .popper__arrow{top:50%;right:-6px;margin-bottom:3px;border-right-width:0;border-left-color:#e6ebf5}.custom-theme .el-popper[x-placement^=left] .popper__arrow::after{right:1px;bottom:-6px;margin-left:-6px;border-right-width:0;border-left-color:#fff}.custom-theme .time-select{margin:5px 0;min-width:0}.custom-theme .time-select .el-picker-panel__content{max-height:200px;margin:0}.custom-theme .time-select-item{padding:8px 10px;font-size:14px;line-height:20px}.custom-theme .time-select-item.selected:not(.disabled){color:#262729;font-weight:700}.custom-theme .time-select-item.disabled{color:#dfe4ed;cursor:not-allowed}.custom-theme .time-select-item:hover{background-color:#f5f7fa;font-weight:700;cursor:pointer}.custom-theme .fade-in-linear-enter-active,.custom-theme .fade-in-linear-leave-active{-webkit-transition:opacity .2s linear;transition:opacity .2s linear}.custom-theme .fade-in-linear-enter,.custom-theme .fade-in-linear-leave,.custom-theme .fade-in-linear-leave-active{opacity:0}.custom-theme .el-fade-in-linear-enter-active,.custom-theme .el-fade-in-linear-leave-active{-webkit-transition:opacity .2s linear;transition:opacity .2s linear}.custom-theme .el-fade-in-linear-enter,.custom-theme .el-fade-in-linear-leave,.custom-theme .el-fade-in-linear-leave-active{opacity:0}.custom-theme .el-fade-in-enter-active,.custom-theme .el-fade-in-leave-active{-webkit-transition:all .3s cubic-bezier(.55,0,.1,1);transition:all .3s cubic-bezier(.55,0,.1,1)}.custom-theme .el-fade-in-enter,.custom-theme .el-fade-in-leave-active{opacity:0}.custom-theme .el-zoom-in-center-enter-active,.custom-theme .el-zoom-in-center-leave-active{-webkit-transition:all .3s cubic-bezier(.55,0,.1,1);transition:all .3s cubic-bezier(.55,0,.1,1)}.custom-theme .el-zoom-in-center-enter,.custom-theme .el-zoom-in-center-leave-active{opacity:0;-webkit-transform:scaleX(0);transform:scaleX(0)}.custom-theme .el-zoom-in-top-enter-active,.custom-theme .el-zoom-in-top-leave-active{opacity:1;-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transition:opacity .3s cubic-bezier(.23,1,.32,1) .1s,-webkit-transform .3s cubic-bezier(.23,1,.32,1) .1s;transition:opacity .3s cubic-bezier(.23,1,.32,1) .1s,-webkit-transform .3s cubic-bezier(.23,1,.32,1) .1s;transition:transform .3s cubic-bezier(.23,1,.32,1) .1s,opacity .3s cubic-bezier(.23,1,.32,1) .1s;transition:transform .3s cubic-bezier(.23,1,.32,1) .1s,opacity .3s cubic-bezier(.23,1,.32,1) .1s,-webkit-transform .3s cubic-bezier(.23,1,.32,1) .1s;-webkit-transform-origin:center top;transform-origin:center top}.custom-theme .el-zoom-in-top-enter,.custom-theme .el-zoom-in-top-leave-active{opacity:0;-webkit-transform:scaleY(0);transform:scaleY(0)}.custom-theme .el-zoom-in-bottom-enter-active,.custom-theme .el-zoom-in-bottom-leave-active{opacity:1;-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transition:opacity .3s cubic-bezier(.23,1,.32,1) .1s,-webkit-transform .3s cubic-bezier(.23,1,.32,1) .1s;transition:opacity .3s cubic-bezier(.23,1,.32,1) .1s,-webkit-transform .3s cubic-bezier(.23,1,.32,1) .1s;transition:transform .3s cubic-bezier(.23,1,.32,1) .1s,opacity .3s cubic-bezier(.23,1,.32,1) .1s;transition:transform .3s cubic-bezier(.23,1,.32,1) .1s,opacity .3s cubic-bezier(.23,1,.32,1) .1s,-webkit-transform .3s cubic-bezier(.23,1,.32,1) .1s;-webkit-transform-origin:center bottom;transform-origin:center bottom}.custom-theme .el-zoom-in-bottom-enter,.custom-theme .el-zoom-in-bottom-leave-active{opacity:0;-webkit-transform:scaleY(0);transform:scaleY(0)}.custom-theme .el-zoom-in-left-enter-active,.custom-theme .el-zoom-in-left-leave-active{opacity:1;-webkit-transform:scale(1,1);transform:scale(1,1);-webkit-transition:opacity .3s cubic-bezier(.23,1,.32,1) .1s,-webkit-transform .3s cubic-bezier(.23,1,.32,1) .1s;transition:opacity .3s cubic-bezier(.23,1,.32,1) .1s,-webkit-transform .3s cubic-bezier(.23,1,.32,1) .1s;transition:transform .3s cubic-bezier(.23,1,.32,1) .1s,opacity .3s cubic-bezier(.23,1,.32,1) .1s;transition:transform .3s cubic-bezier(.23,1,.32,1) .1s,opacity .3s cubic-bezier(.23,1,.32,1) .1s,-webkit-transform .3s cubic-bezier(.23,1,.32,1) .1s;-webkit-transform-origin:top left;transform-origin:top left}.custom-theme .el-zoom-in-left-enter,.custom-theme .el-zoom-in-left-leave-active{opacity:0;-webkit-transform:scale(.45,.45);transform:scale(.45,.45)}.custom-theme .collapse-transition{-webkit-transition:.3s height ease-in-out,.3s padding-top ease-in-out,.3s padding-bottom ease-in-out;transition:.3s height ease-in-out,.3s padding-top ease-in-out,.3s padding-bottom ease-in-out}.custom-theme .horizontal-collapse-transition{-webkit-transition:.3s width ease-in-out,.3s padding-left ease-in-out,.3s padding-right ease-in-out;transition:.3s width ease-in-out,.3s padding-left ease-in-out,.3s padding-right ease-in-out}.custom-theme .el-list-enter-active,.custom-theme .el-list-leave-active{-webkit-transition:all 1s;transition:all 1s}.custom-theme .el-list-enter,.custom-theme .el-list-leave-active{opacity:0;-webkit-transform:translateY(-30px);transform:translateY(-30px)}.custom-theme .el-opacity-transition{-webkit-transition:opacity .3s cubic-bezier(.55,0,.1,1);transition:opacity .3s cubic-bezier(.55,0,.1,1)}.custom-theme .el-date-editor{position:relative;display:inline-block;text-align:left}.custom-theme .el-date-editor.el-input,.custom-theme .el-date-editor.el-input__inner{width:220px}.custom-theme .el-date-editor--daterange.el-input,.custom-theme .el-date-editor--daterange.el-input__inner,.custom-theme .el-date-editor--timerange.el-input,.custom-theme .el-date-editor--timerange.el-input__inner{width:350px}.custom-theme .el-date-editor--datetimerange.el-input,.custom-theme .el-date-editor--datetimerange.el-input__inner{width:400px}.custom-theme .el-date-editor .el-range__icon{font-size:14px;margin-left:-5px;color:#b4bccc;float:left;line-height:32px}.custom-theme .el-date-editor .el-range-input{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;outline:0;display:inline-block;height:100%;margin:0;padding:0;width:39%;text-align:center;font-size:14px;color:#5a5e66}.custom-theme .el-date-editor .el-range-input::-webkit-input-placeholder{color:#b4bccc}.custom-theme .el-date-editor .el-range-input:-ms-input-placeholder{color:#b4bccc}.custom-theme .el-date-editor .el-range-input::-ms-input-placeholder{color:#b4bccc}.custom-theme .el-date-editor .el-range-input::placeholder{color:#b4bccc}.custom-theme .el-date-editor .el-range-separator{display:inline-block;height:100%;padding:0 5px;margin:0;text-align:center;line-height:32px;font-size:14px;width:5%;color:#2d2f33}.custom-theme .el-date-editor .el-range__close-icon{font-size:14px;color:#b4bccc;width:25px;display:inline-block;float:right;line-height:32px}.custom-theme .el-range-editor.el-input__inner{padding:3px 10px}.custom-theme .el-range-editor.is-active{border-color:#262729}.custom-theme .el-range-editor.is-active:hover{border-color:#262729}.custom-theme .el-range-editor--medium.el-input__inner{height:36px}.custom-theme .el-range-editor--medium .el-range-separator{line-height:28px;font-size:14px}.custom-theme .el-range-editor--medium .el-range-input{font-size:14px}.custom-theme .el-range-editor--medium .el-range__close-icon,.custom-theme .el-range-editor--medium .el-range__icon{line-height:28px}.custom-theme .el-range-editor--small.el-input__inner{height:32px}.custom-theme .el-range-editor--small .el-range-separator{line-height:24px;font-size:13px}.custom-theme .el-range-editor--small .el-range-input{font-size:13px}.custom-theme .el-range-editor--small .el-range__close-icon,.custom-theme .el-range-editor--small .el-range__icon{line-height:24px}.custom-theme .el-range-editor--mini.el-input__inner{height:28px}.custom-theme .el-range-editor--mini .el-range-separator{line-height:20px;font-size:12px}.custom-theme .el-range-editor--mini .el-range-input{font-size:12px}.custom-theme .el-range-editor--mini .el-range__close-icon,.custom-theme .el-range-editor--mini .el-range__icon{line-height:20px}.custom-theme .el-range-editor.is-disabled{background-color:#f5f7fa;border-color:#dfe4ed;color:#b4bccc;cursor:not-allowed}.custom-theme .el-range-editor.is-disabled:focus,.custom-theme .el-range-editor.is-disabled:hover{border-color:#dfe4ed}.custom-theme .el-range-editor.is-disabled input{background-color:#f5f7fa;color:#b4bccc;cursor:not-allowed}.custom-theme .el-range-editor.is-disabled input::-webkit-input-placeholder{color:#b4bccc}.custom-theme .el-range-editor.is-disabled input:-ms-input-placeholder{color:#b4bccc}.custom-theme .el-range-editor.is-disabled input::-ms-input-placeholder{color:#b4bccc}.custom-theme .el-range-editor.is-disabled input::placeholder{color:#b4bccc}.custom-theme .el-range-editor.is-disabled .el-range-separator{color:#b4bccc}.custom-theme .el-time-spinner.has-seconds .el-time-spinner__wrapper{width:33.3%}.custom-theme .el-time-spinner.has-seconds .el-time-spinner__wrapper:nth-child(2){margin-left:1%}.custom-theme .el-time-spinner__wrapper{max-height:190px;overflow:auto;display:inline-block;width:50%;vertical-align:top;position:relative}.custom-theme .el-time-spinner__wrapper .el-scrollbar__wrap:not(.el-scrollbar__wrap--hidden-default){padding-bottom:15px}.custom-theme .el-time-spinner__wrapper.is-arrow{-webkit-box-sizing:border-box;box-sizing:border-box;text-align:center;overflow:hidden}.custom-theme .el-time-spinner__wrapper.is-arrow .el-time-spinner__list{-webkit-transform:translateY(-32px);transform:translateY(-32px)}.custom-theme .el-time-spinner__wrapper.is-arrow .el-time-spinner__item:hover:not(.disabled):not(.active){background:#fff;cursor:default}.custom-theme .el-time-spinner__arrow{font-size:12px;color:#878d99;position:absolute;left:0;width:100%;z-index:1;text-align:center;height:30px;line-height:30px;cursor:pointer}.custom-theme .el-time-spinner__arrow:hover{color:#262729}.custom-theme .el-time-spinner__arrow.el-icon-arrow-up{top:10px}.custom-theme .el-time-spinner__arrow.el-icon-arrow-down{bottom:10px}.custom-theme .el-time-spinner__input.el-input{width:70%}.custom-theme .el-time-spinner__input.el-input .el-input__inner{padding:0;text-align:center}.custom-theme .el-time-spinner__list{padding:0;margin:0;list-style:none;text-align:center}.custom-theme .el-time-spinner__list::after,.custom-theme .el-time-spinner__list::before{content:'';display:block;width:100%;height:80px}.custom-theme .el-time-spinner__item{height:32px;line-height:32px;font-size:12px;color:#5a5e66}.custom-theme .el-time-spinner__item:hover:not(.disabled):not(.active){background:#f5f7fa;cursor:pointer}.custom-theme .el-time-spinner__item.active:not(.disabled){color:#2d2f33;font-weight:700}.custom-theme .el-time-spinner__item.disabled{color:#b4bccc;cursor:not-allowed}.custom-theme .el-time-panel{margin:5px 0;border:solid 1px #dfe4ed;background-color:#fff;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);border-radius:2px;position:absolute;width:180px;left:0;z-index:1000;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.custom-theme .el-time-panel__content{font-size:0;position:relative;overflow:hidden}.custom-theme .el-time-panel__content::after,.custom-theme .el-time-panel__content::before{content:"";top:50%;position:absolute;margin-top:-15px;height:32px;z-index:-1;left:0;right:0;-webkit-box-sizing:border-box;box-sizing:border-box;padding-top:6px;text-align:left;border-top:1px solid #dfe4ed;border-bottom:1px solid #dfe4ed}.custom-theme .el-time-panel__content::after{left:50%;margin-left:12%;margin-right:12%}.custom-theme .el-time-panel__content::before{padding-left:50%;margin-right:12%;margin-left:12%}.custom-theme .el-time-panel__content.has-seconds::after{left:calc(100% / 3 * 2)}.custom-theme .el-time-panel__content.has-seconds::before{padding-left:calc(100% / 3)}.custom-theme .el-time-panel__footer{border-top:1px solid #e4e4e4;padding:4px;height:36px;line-height:25px;text-align:right;-webkit-box-sizing:border-box;box-sizing:border-box}.custom-theme .el-time-panel__btn{border:none;line-height:28px;padding:0 5px;margin:0 5px;cursor:pointer;background-color:transparent;outline:0;font-size:12px;color:#2d2f33}.custom-theme .el-time-panel__btn.confirm{font-weight:800;color:#262729}.custom-theme .el-time-panel .popper__arrow{-webkit-transform:translateX(-400%);transform:translateX(-400%)}.custom-theme .el-input{position:relative;font-size:14px;display:inline-block;width:100%}.custom-theme .el-input::-webkit-scrollbar{z-index:11;width:6px}.custom-theme .el-input::-webkit-scrollbar:horizontal{height:6px}.custom-theme .el-input::-webkit-scrollbar-thumb{border-radius:5px;width:6px;background:#b4bccc}.custom-theme .el-input::-webkit-scrollbar-corner{background:#fff}.custom-theme .el-input::-webkit-scrollbar-track{background:#fff}.custom-theme .el-input::-webkit-scrollbar-track-piece{background:#fff;width:6px}.custom-theme .el-input__inner{-webkit-appearance:none;background-color:#fff;background-image:none;border-radius:4px;border:1px solid #d8dce5;-webkit-box-sizing:border-box;box-sizing:border-box;color:#5a5e66;display:inline-block;font-size:inherit;height:40px;line-height:1;outline:0;padding:0 15px;-webkit-transition:border-color .2s cubic-bezier(.645,.045,.355,1);transition:border-color .2s cubic-bezier(.645,.045,.355,1);width:100%}.custom-theme .el-input__inner::-webkit-input-placeholder{color:#b4bccc}.custom-theme .el-input__inner:-ms-input-placeholder{color:#b4bccc}.custom-theme .el-input__inner::-ms-input-placeholder{color:#b4bccc}.custom-theme .el-input__inner::placeholder{color:#b4bccc}.custom-theme .el-input__inner:hover{border-color:#b4bccc}.custom-theme .el-input__inner:focus{outline:0;border-color:#262729}.custom-theme .el-input__suffix{position:absolute;height:100%;right:5px;top:0;text-align:center;color:#b4bccc;-webkit-transition:all .3s;transition:all .3s;pointer-events:none}.custom-theme .el-input__suffix-inner{pointer-events:all}.custom-theme .el-input__prefix{position:absolute;height:100%;left:5px;top:0;text-align:center;color:#b4bccc;-webkit-transition:all .3s;transition:all .3s}.custom-theme .el-input__icon{height:100%;width:25px;text-align:center;-webkit-transition:all .3s;transition:all .3s;line-height:40px}.custom-theme .el-input__icon:after{content:'';height:100%;width:0;display:inline-block;vertical-align:middle}.custom-theme .el-input__validateIcon{pointer-events:none}.custom-theme .el-input.is-active .el-input__inner{outline:0;border-color:#262729}.custom-theme .el-input.is-disabled .el-input__inner{background-color:#f5f7fa;border-color:#dfe4ed;color:#b4bccc;cursor:not-allowed}.custom-theme .el-input.is-disabled .el-input__inner::-webkit-input-placeholder{color:#b4bccc}.custom-theme .el-input.is-disabled .el-input__inner:-ms-input-placeholder{color:#b4bccc}.custom-theme .el-input.is-disabled .el-input__inner::-ms-input-placeholder{color:#b4bccc}.custom-theme .el-input.is-disabled .el-input__inner::placeholder{color:#b4bccc}.custom-theme .el-input.is-disabled .el-input__icon{cursor:not-allowed}.custom-theme .el-input--suffix .el-input__inner{padding-right:30px}.custom-theme .el-input--prefix .el-input__inner{padding-left:30px}.custom-theme .el-input--medium{font-size:14px}.custom-theme .el-input--medium .el-input__inner{height:36px}.custom-theme .el-input--medium .el-input__icon{line-height:36px}.custom-theme .el-input--small{font-size:13px}.custom-theme .el-input--small .el-input__inner{height:32px}.custom-theme .el-input--small .el-input__icon{line-height:32px}.custom-theme .el-input--mini{font-size:12px}.custom-theme .el-input--mini .el-input__inner{height:28px}.custom-theme .el-input--mini .el-input__icon{line-height:28px}.custom-theme .el-input-group{line-height:normal;display:inline-table;width:100%;border-collapse:separate}.custom-theme .el-input-group>.el-input__inner{vertical-align:middle;display:table-cell}.custom-theme .el-input-group__append,.custom-theme .el-input-group__prepend{background-color:#f5f7fa;color:#0a76a4;vertical-align:middle;display:table-cell;position:relative;border:1px solid #d8dce5;border-radius:4px;padding:0 20px;width:1px;white-space:nowrap}.custom-theme .el-input-group__append:focus,.custom-theme .el-input-group__prepend:focus{outline:0}.custom-theme .el-input-group__append .el-button,.custom-theme .el-input-group__append .el-select,.custom-theme .el-input-group__prepend .el-button,.custom-theme .el-input-group__prepend .el-select{display:inline-block;margin:-20px}.custom-theme .el-input-group__append button.el-button,.custom-theme .el-input-group__append div.el-select .el-input__inner,.custom-theme .el-input-group__append div.el-select:hover .el-input__inner,.custom-theme .el-input-group__prepend button.el-button,.custom-theme .el-input-group__prepend div.el-select .el-input__inner,.custom-theme .el-input-group__prepend div.el-select:hover .el-input__inner{border-color:transparent;background-color:transparent;color:inherit;border-top:0;border-bottom:0}.custom-theme .el-input-group__append .el-button,.custom-theme .el-input-group__append .el-input,.custom-theme .el-input-group__prepend .el-button,.custom-theme .el-input-group__prepend .el-input{font-size:inherit}.custom-theme .el-input-group__prepend{border-right:0;border-top-right-radius:0;border-bottom-right-radius:0}.custom-theme .el-input-group__append{border-left:0;border-top-left-radius:0;border-bottom-left-radius:0}.custom-theme .el-input-group--prepend .el-input__inner{border-top-left-radius:0;border-bottom-left-radius:0}.custom-theme .el-input-group--append .el-input__inner{border-top-right-radius:0;border-bottom-right-radius:0}.custom-theme .el-textarea{display:inline-block;width:100%;vertical-align:bottom}.custom-theme .el-textarea__inner{display:block;resize:vertical;padding:5px 15px;line-height:1.5;-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;font-size:14px;color:#5a5e66;background-color:#fff;background-image:none;border:1px solid #d8dce5;border-radius:4px;-webkit-transition:border-color .2s cubic-bezier(.645,.045,.355,1);transition:border-color .2s cubic-bezier(.645,.045,.355,1)}.custom-theme .el-textarea__inner::-webkit-input-placeholder{color:#b4bccc}.custom-theme .el-textarea__inner:-ms-input-placeholder{color:#b4bccc}.custom-theme .el-textarea__inner::-ms-input-placeholder{color:#b4bccc}.custom-theme .el-textarea__inner::placeholder{color:#b4bccc}.custom-theme .el-textarea__inner:hover{border-color:#b4bccc}.custom-theme .el-textarea__inner:focus{outline:0;border-color:#262729}.custom-theme .el-textarea.is-disabled .el-textarea__inner{background-color:#f5f7fa;border-color:#dfe4ed;color:#b4bccc;cursor:not-allowed}.custom-theme .el-textarea.is-disabled .el-textarea__inner::-webkit-input-placeholder{color:#b4bccc}.custom-theme .el-textarea.is-disabled .el-textarea__inner:-ms-input-placeholder{color:#b4bccc}.custom-theme .el-textarea.is-disabled .el-textarea__inner::-ms-input-placeholder{color:#b4bccc}.custom-theme .el-textarea.is-disabled .el-textarea__inner::placeholder{color:#b4bccc}.custom-theme .el-scrollbar{overflow:hidden;position:relative}.custom-theme .el-scrollbar:active>.el-scrollbar__bar,.custom-theme .el-scrollbar:focus>.el-scrollbar__bar,.custom-theme .el-scrollbar:hover>.el-scrollbar__bar{opacity:1;-webkit-transition:opacity 340ms ease-out;transition:opacity 340ms ease-out}.custom-theme .el-scrollbar__wrap{overflow:scroll;height:100%}.custom-theme .el-scrollbar__wrap--hidden-default::-webkit-scrollbar{width:0;height:0}.custom-theme .el-scrollbar__thumb{position:relative;display:block;width:0;height:0;cursor:pointer;border-radius:inherit;background-color:rgba(135,141,153,.3);-webkit-transition:.3s background-color;transition:.3s background-color}.custom-theme .el-scrollbar__thumb:hover{background-color:rgba(135,141,153,.5)}.custom-theme .el-scrollbar__bar{position:absolute;right:2px;bottom:2px;z-index:1;border-radius:4px;opacity:0;-webkit-transition:opacity 120ms ease-out;transition:opacity 120ms ease-out}.custom-theme .el-scrollbar__bar.is-vertical{width:6px;top:2px}.custom-theme .el-scrollbar__bar.is-vertical>div{width:100%}.custom-theme .el-scrollbar__bar.is-horizontal{height:6px;left:2px}.custom-theme .el-scrollbar__bar.is-horizontal>div{height:100%}.custom-theme .el-popper .popper__arrow,.custom-theme .el-popper .popper__arrow::after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.custom-theme .el-popper .popper__arrow{border-width:6px;-webkit-filter:drop-shadow(0 2px 12px rgba(0, 0, 0, .03));filter:drop-shadow(0 2px 12px rgba(0, 0, 0, .03))}.custom-theme .el-popper .popper__arrow::after{content:" ";border-width:6px}.custom-theme .el-popper[x-placement^=top]{margin-bottom:12px}.custom-theme .el-popper[x-placement^=top] .popper__arrow{bottom:-6px;left:50%;margin-right:3px;border-top-color:#e6ebf5;border-bottom-width:0}.custom-theme .el-popper[x-placement^=top] .popper__arrow::after{bottom:1px;margin-left:-6px;border-top-color:#fff;border-bottom-width:0}.custom-theme .el-popper[x-placement^=bottom]{margin-top:12px}.custom-theme .el-popper[x-placement^=bottom] .popper__arrow{top:-6px;left:50%;margin-right:3px;border-top-width:0;border-bottom-color:#e6ebf5}.custom-theme .el-popper[x-placement^=bottom] .popper__arrow::after{top:1px;margin-left:-6px;border-top-width:0;border-bottom-color:#fff}.custom-theme .el-popper[x-placement^=right]{margin-left:12px}.custom-theme .el-popper[x-placement^=right] .popper__arrow{top:50%;left:-6px;margin-bottom:3px;border-right-color:#e6ebf5;border-left-width:0}.custom-theme .el-popper[x-placement^=right] .popper__arrow::after{bottom:-6px;left:1px;border-right-color:#fff;border-left-width:0}.custom-theme .el-popper[x-placement^=left]{margin-right:12px}.custom-theme .el-popper[x-placement^=left] .popper__arrow{top:50%;right:-6px;margin-bottom:3px;border-right-width:0;border-left-color:#e6ebf5}.custom-theme .el-popper[x-placement^=left] .popper__arrow::after{right:1px;bottom:-6px;margin-left:-6px;border-right-width:0;border-left-color:#fff}.custom-theme .el-popper .popper__arrow,.custom-theme .el-popper .popper__arrow::after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.custom-theme .el-popper .popper__arrow{border-width:6px;-webkit-filter:drop-shadow(0 2px 12px rgba(0, 0, 0, .03));filter:drop-shadow(0 2px 12px rgba(0, 0, 0, .03))}.custom-theme .el-popper .popper__arrow::after{content:" ";border-width:6px}.custom-theme .el-popper[x-placement^=top]{margin-bottom:12px}.custom-theme .el-popper[x-placement^=top] .popper__arrow{bottom:-6px;left:50%;margin-right:3px;border-top-color:#e6ebf5;border-bottom-width:0}.custom-theme .el-popper[x-placement^=top] .popper__arrow::after{bottom:1px;margin-left:-6px;border-top-color:#fff;border-bottom-width:0}.custom-theme .el-popper[x-placement^=bottom]{margin-top:12px}.custom-theme .el-popper[x-placement^=bottom] .popper__arrow{top:-6px;left:50%;margin-right:3px;border-top-width:0;border-bottom-color:#e6ebf5}.custom-theme .el-popper[x-placement^=bottom] .popper__arrow::after{top:1px;margin-left:-6px;border-top-width:0;border-bottom-color:#fff}.custom-theme .el-popper[x-placement^=right]{margin-left:12px}.custom-theme .el-popper[x-placement^=right] .popper__arrow{top:50%;left:-6px;margin-bottom:3px;border-right-color:#e6ebf5;border-left-width:0}.custom-theme .el-popper[x-placement^=right] .popper__arrow::after{bottom:-6px;left:1px;border-right-color:#fff;border-left-width:0}.custom-theme .el-popper[x-placement^=left]{margin-right:12px}.custom-theme .el-popper[x-placement^=left] .popper__arrow{top:50%;right:-6px;margin-bottom:3px;border-right-width:0;border-left-color:#e6ebf5}.custom-theme .el-popper[x-placement^=left] .popper__arrow::after{right:1px;bottom:-6px;margin-left:-6px;border-right-width:0;border-left-color:#fff}.custom-theme .el-popover{position:absolute;background:#fff;min-width:150px;border-radius:4px;border:1px solid #e6ebf5;padding:12px;z-index:2000;color:#5a5e66;line-height:1.4;text-align:justify;word-break:break-all;font-size:14px;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.custom-theme .el-popover--plain{padding:18px 20px}.custom-theme .el-popover__title{color:#2d2f33;font-size:16px;line-height:1;margin-bottom:12px}.custom-theme .el-tooltip__popper{position:absolute;border-radius:4px;padding:10px;z-index:2000;font-size:12px;line-height:1.2}.custom-theme .el-tooltip__popper .popper__arrow,.custom-theme .el-tooltip__popper .popper__arrow::after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.custom-theme .el-tooltip__popper .popper__arrow{border-width:6px}.custom-theme .el-tooltip__popper .popper__arrow::after{content:" ";border-width:5px}.custom-theme .el-tooltip__popper[x-placement^=top]{margin-bottom:12px}.custom-theme .el-tooltip__popper[x-placement^=top] .popper__arrow{bottom:-6px;border-top-color:#2d2f33;border-bottom-width:0}.custom-theme .el-tooltip__popper[x-placement^=top] .popper__arrow::after{bottom:1px;margin-left:-5px;border-top-color:#2d2f33;border-bottom-width:0}.custom-theme .el-tooltip__popper[x-placement^=bottom]{margin-top:12px}.custom-theme .el-tooltip__popper[x-placement^=bottom] .popper__arrow{top:-6px;border-top-width:0;border-bottom-color:#2d2f33}.custom-theme .el-tooltip__popper[x-placement^=bottom] .popper__arrow::after{top:1px;margin-left:-5px;border-top-width:0;border-bottom-color:#2d2f33}.custom-theme .el-tooltip__popper[x-placement^=right]{margin-left:12px}.custom-theme .el-tooltip__popper[x-placement^=right] .popper__arrow{left:-6px;border-right-color:#2d2f33;border-left-width:0}.custom-theme .el-tooltip__popper[x-placement^=right] .popper__arrow::after{bottom:-5px;left:1px;border-right-color:#2d2f33;border-left-width:0}.custom-theme .el-tooltip__popper[x-placement^=left]{margin-right:12px}.custom-theme .el-tooltip__popper[x-placement^=left] .popper__arrow{right:-6px;border-right-width:0;border-left-color:#2d2f33}.custom-theme .el-tooltip__popper[x-placement^=left] .popper__arrow::after{right:1px;bottom:-5px;margin-left:-5px;border-right-width:0;border-left-color:#2d2f33}.custom-theme .el-tooltip__popper.is-dark{background:#2d2f33;color:#fff}.custom-theme .el-tooltip__popper.is-light{background:#fff;border:1px solid #2d2f33}.custom-theme .el-tooltip__popper.is-light[x-placement^=top] .popper__arrow{border-top-color:#2d2f33}.custom-theme .el-tooltip__popper.is-light[x-placement^=top] .popper__arrow::after{border-top-color:#fff}.custom-theme .el-tooltip__popper.is-light[x-placement^=bottom] .popper__arrow{border-bottom-color:#2d2f33}.custom-theme .el-tooltip__popper.is-light[x-placement^=bottom] .popper__arrow::after{border-bottom-color:#fff}.custom-theme .el-tooltip__popper.is-light[x-placement^=left] .popper__arrow{border-left-color:#2d2f33}.custom-theme .el-tooltip__popper.is-light[x-placement^=left] .popper__arrow::after{border-left-color:#fff}.custom-theme .el-tooltip__popper.is-light[x-placement^=right] .popper__arrow{border-right-color:#2d2f33}.custom-theme .el-tooltip__popper.is-light[x-placement^=right] .popper__arrow::after{border-right-color:#fff}.custom-theme .v-modal-enter{-webkit-animation:v-modal-in .2s ease;animation:v-modal-in .2s ease}.custom-theme .v-modal-leave{-webkit-animation:v-modal-out .2s ease forwards;animation:v-modal-out .2s ease forwards}@keyframes v-modal-in{0%{opacity:0}}@keyframes v-modal-out{100%{opacity:0}}.custom-theme .v-modal{position:fixed;left:0;top:0;width:100%;height:100%;opacity:.5;background:#000}.custom-theme .el-button{display:inline-block;line-height:1;white-space:nowrap;cursor:pointer;background:#fff;border:1px solid #d8dce5;border-color:#d8dce5;color:#5a5e66;-webkit-appearance:none;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;outline:0;margin:0;-webkit-transition:.1s;transition:.1s;font-weight:500;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;padding:12px 20px;font-size:14px;border-radius:4px}.custom-theme .el-button+.el-button{margin-left:10px}.custom-theme .el-button.is-round{padding:12px 20px}.custom-theme .el-button:focus,.custom-theme .el-button:hover{color:#262729;border-color:#bebebf;background-color:#e9e9ea}.custom-theme .el-button:active{color:#222325;border-color:#222325;outline:0}.custom-theme .el-button::-moz-focus-inner{border:0}.custom-theme .el-button [class*=el-icon-]+span{margin-left:5px}.custom-theme .el-button.is-plain:focus,.custom-theme .el-button.is-plain:hover{background:#fff;border-color:#262729;color:#262729}.custom-theme .el-button.is-plain:active{background:#fff;border-color:#222325;color:#222325;outline:0}.custom-theme .el-button.is-active{color:#222325;border-color:#222325}.custom-theme .el-button.is-disabled,.custom-theme .el-button.is-disabled:focus,.custom-theme .el-button.is-disabled:hover{color:#b4bccc;cursor:not-allowed;background-image:none;background-color:#fff;border-color:#e6ebf5}.custom-theme .el-button.is-disabled.el-button--text{background-color:transparent}.custom-theme .el-button.is-disabled.is-plain,.custom-theme .el-button.is-disabled.is-plain:focus,.custom-theme .el-button.is-disabled.is-plain:hover{background-color:#fff;border-color:#e6ebf5;color:#b4bccc}.custom-theme .el-button.is-loading{position:relative;pointer-events:none}.custom-theme .el-button.is-loading:before{pointer-events:none;content:'';position:absolute;left:-1px;top:-1px;right:-1px;bottom:-1px;border-radius:inherit;background-color:rgba(255,255,255,.35)}.custom-theme .el-button.is-round{border-radius:20px;padding:12px 23px}.custom-theme .el-button--primary{color:#fff;background-color:#262729;border-color:#262729}.custom-theme .el-button--primary:focus,.custom-theme .el-button--primary:hover{background:#515254;border-color:#515254;color:#fff}.custom-theme .el-button--primary:active{background:#222325;border-color:#222325;color:#fff;outline:0}.custom-theme .el-button--primary.is-active{background:#222325;border-color:#222325;color:#fff}.custom-theme .el-button--primary.is-disabled,.custom-theme .el-button--primary.is-disabled:active,.custom-theme .el-button--primary.is-disabled:focus,.custom-theme .el-button--primary.is-disabled:hover{color:#fff;background-color:#939394;border-color:#939394}.custom-theme .el-button--primary.is-plain{color:#262729;background:#e9e9ea;border-color:#a8a9a9}.custom-theme .el-button--primary.is-plain:focus,.custom-theme .el-button--primary.is-plain:hover{background:#262729;border-color:#262729;color:#fff}.custom-theme .el-button--primary.is-plain:active{background:#222325;border-color:#222325;color:#fff;outline:0}.custom-theme .el-button--primary.is-plain.is-disabled,.custom-theme .el-button--primary.is-plain.is-disabled:active,.custom-theme .el-button--primary.is-plain.is-disabled:focus,.custom-theme .el-button--primary.is-plain.is-disabled:hover{color:#7d7d7f;background-color:#e9e9ea;border-color:#d4d4d4}.custom-theme .el-button--success{color:#fff;background-color:#409167;border-color:#409167}.custom-theme .el-button--success:focus,.custom-theme .el-button--success:hover{background:#66a785;border-color:#66a785;color:#fff}.custom-theme .el-button--success:active{background:#3a835d;border-color:#3a835d;color:#fff;outline:0}.custom-theme .el-button--success.is-active{background:#3a835d;border-color:#3a835d;color:#fff}.custom-theme .el-button--success.is-disabled,.custom-theme .el-button--success.is-disabled:active,.custom-theme .el-button--success.is-disabled:focus,.custom-theme .el-button--success.is-disabled:hover{color:#fff;background-color:#a0c8b3;border-color:#a0c8b3}.custom-theme .el-button--success.is-plain{color:#409167;background:#ecf4f0;border-color:#b3d3c2}.custom-theme .el-button--success.is-plain:focus,.custom-theme .el-button--success.is-plain:hover{background:#409167;border-color:#409167;color:#fff}.custom-theme .el-button--success.is-plain:active{background:#3a835d;border-color:#3a835d;color:#fff;outline:0}.custom-theme .el-button--success.is-plain.is-disabled,.custom-theme .el-button--success.is-plain.is-disabled:active,.custom-theme .el-button--success.is-plain.is-disabled:focus,.custom-theme .el-button--success.is-plain.is-disabled:hover{color:#8cbda4;background-color:#ecf4f0;border-color:#d9e9e1}.custom-theme .el-button--warning{color:#fff;background-color:#9da408;border-color:#9da408}.custom-theme .el-button--warning:focus,.custom-theme .el-button--warning:hover{background:#b1b639;border-color:#b1b639;color:#fff}.custom-theme .el-button--warning:active{background:#8d9407;border-color:#8d9407;color:#fff;outline:0}.custom-theme .el-button--warning.is-active{background:#8d9407;border-color:#8d9407;color:#fff}.custom-theme .el-button--warning.is-disabled,.custom-theme .el-button--warning.is-disabled:active,.custom-theme .el-button--warning.is-disabled:focus,.custom-theme .el-button--warning.is-disabled:hover{color:#fff;background-color:#ced284;border-color:#ced284}.custom-theme .el-button--warning.is-plain{color:#9da408;background:#f5f6e6;border-color:#d8db9c}.custom-theme .el-button--warning.is-plain:focus,.custom-theme .el-button--warning.is-plain:hover{background:#9da408;border-color:#9da408;color:#fff}.custom-theme .el-button--warning.is-plain:active{background:#8d9407;border-color:#8d9407;color:#fff;outline:0}.custom-theme .el-button--warning.is-plain.is-disabled,.custom-theme .el-button--warning.is-plain.is-disabled:active,.custom-theme .el-button--warning.is-plain.is-disabled:focus,.custom-theme .el-button--warning.is-plain.is-disabled:hover{color:#c4c86b;background-color:#f5f6e6;border-color:#ebedce}.custom-theme .el-button--danger{color:#fff;background-color:#b3450e;border-color:#b3450e}.custom-theme .el-button--danger:focus,.custom-theme .el-button--danger:hover{background:#c26a3e;border-color:#c26a3e;color:#fff}.custom-theme .el-button--danger:active{background:#a13e0d;border-color:#a13e0d;color:#fff;outline:0}.custom-theme .el-button--danger.is-active{background:#a13e0d;border-color:#a13e0d;color:#fff}.custom-theme .el-button--danger.is-disabled,.custom-theme .el-button--danger.is-disabled:active,.custom-theme .el-button--danger.is-disabled:focus,.custom-theme .el-button--danger.is-disabled:hover{color:#fff;background-color:#d9a287;border-color:#d9a287}.custom-theme .el-button--danger.is-plain{color:#b3450e;background:#f7ece7;border-color:#e1b59f}.custom-theme .el-button--danger.is-plain:focus,.custom-theme .el-button--danger.is-plain:hover{background:#b3450e;border-color:#b3450e;color:#fff}.custom-theme .el-button--danger.is-plain:active{background:#a13e0d;border-color:#a13e0d;color:#fff;outline:0}.custom-theme .el-button--danger.is-plain.is-disabled,.custom-theme .el-button--danger.is-plain.is-disabled:active,.custom-theme .el-button--danger.is-plain.is-disabled:focus,.custom-theme .el-button--danger.is-plain.is-disabled:hover{color:#d18f6e;background-color:#f7ece7;border-color:#f0dacf}.custom-theme .el-button--info{color:#fff;background-color:#0a76a4;border-color:#0a76a4}.custom-theme .el-button--info:focus,.custom-theme .el-button--info:hover{background:#3b91b6;border-color:#3b91b6;color:#fff}.custom-theme .el-button--info:active{background:#096a94;border-color:#096a94;color:#fff;outline:0}.custom-theme .el-button--info.is-active{background:#096a94;border-color:#096a94;color:#fff}.custom-theme .el-button--info.is-disabled,.custom-theme .el-button--info.is-disabled:active,.custom-theme .el-button--info.is-disabled:focus,.custom-theme .el-button--info.is-disabled:hover{color:#fff;background-color:#85bbd2;border-color:#85bbd2}.custom-theme .el-button--info.is-plain{color:#0a76a4;background:#e7f1f6;border-color:#9dc8db}.custom-theme .el-button--info.is-plain:focus,.custom-theme .el-button--info.is-plain:hover{background:#0a76a4;border-color:#0a76a4;color:#fff}.custom-theme .el-button--info.is-plain:active{background:#096a94;border-color:#096a94;color:#fff;outline:0}.custom-theme .el-button--info.is-plain.is-disabled,.custom-theme .el-button--info.is-plain.is-disabled:active,.custom-theme .el-button--info.is-plain.is-disabled:focus,.custom-theme .el-button--info.is-plain.is-disabled:hover{color:#6cadc8;background-color:#e7f1f6;border-color:#cee4ed}.custom-theme .el-button--medium{padding:10px 20px;font-size:14px;border-radius:4px}.custom-theme .el-button--medium.is-round{padding:10px 20px}.custom-theme .el-button--small{padding:9px 15px;font-size:12px;border-radius:3px}.custom-theme .el-button--small.is-round{padding:9px 15px}.custom-theme .el-button--mini{padding:7px 15px;font-size:12px;border-radius:3px}.custom-theme .el-button--mini.is-round{padding:7px 15px}.custom-theme .el-button--text{border:none;color:#262729;background:0 0;padding-left:0;padding-right:0}.custom-theme .el-button--text:focus,.custom-theme .el-button--text:hover{color:#515254;border-color:transparent;background-color:transparent}.custom-theme .el-button--text:active{color:#222325;border-color:transparent;background-color:transparent}.custom-theme .el-button-group{display:inline-block;vertical-align:middle}.custom-theme .el-button-group::after,.custom-theme .el-button-group::before{display:table;content:""}.custom-theme .el-button-group::after{clear:both}.custom-theme .el-button-group .el-button{float:left;position:relative}.custom-theme .el-button-group .el-button+.el-button{margin-left:0}.custom-theme .el-button-group .el-button:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.custom-theme .el-button-group .el-button:last-child{border-top-left-radius:0;border-bottom-left-radius:0}.custom-theme .el-button-group .el-button:not(:first-child):not(:last-child){border-radius:0}.custom-theme .el-button-group .el-button:not(:last-child){margin-right:-1px}.custom-theme .el-button-group .el-button:active,.custom-theme .el-button-group .el-button:focus,.custom-theme .el-button-group .el-button:hover{z-index:1}.custom-theme .el-button-group .el-button.is-active{z-index:1}.custom-theme .el-button-group .el-button--primary:first-child{border-right-color:rgba(255,255,255,.5)}.custom-theme .el-button-group .el-button--primary:last-child{border-left-color:rgba(255,255,255,.5)}.custom-theme .el-button-group .el-button--primary:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.custom-theme .el-button-group .el-button--success:first-child{border-right-color:rgba(255,255,255,.5)}.custom-theme .el-button-group .el-button--success:last-child{border-left-color:rgba(255,255,255,.5)}.custom-theme .el-button-group .el-button--success:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.custom-theme .el-button-group .el-button--warning:first-child{border-right-color:rgba(255,255,255,.5)}.custom-theme .el-button-group .el-button--warning:last-child{border-left-color:rgba(255,255,255,.5)}.custom-theme .el-button-group .el-button--warning:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.custom-theme .el-button-group .el-button--danger:first-child{border-right-color:rgba(255,255,255,.5)}.custom-theme .el-button-group .el-button--danger:last-child{border-left-color:rgba(255,255,255,.5)}.custom-theme .el-button-group .el-button--danger:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.custom-theme .el-button-group .el-button--info:first-child{border-right-color:rgba(255,255,255,.5)}.custom-theme .el-button-group .el-button--info:last-child{border-left-color:rgba(255,255,255,.5)}.custom-theme .el-button-group .el-button--info:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.custom-theme .el-input{position:relative;font-size:14px;display:inline-block;width:100%}.custom-theme .el-input::-webkit-scrollbar{z-index:11;width:6px}.custom-theme .el-input::-webkit-scrollbar:horizontal{height:6px}.custom-theme .el-input::-webkit-scrollbar-thumb{border-radius:5px;width:6px;background:#b4bccc}.custom-theme .el-input::-webkit-scrollbar-corner{background:#fff}.custom-theme .el-input::-webkit-scrollbar-track{background:#fff}.custom-theme .el-input::-webkit-scrollbar-track-piece{background:#fff;width:6px}.custom-theme .el-input__inner{-webkit-appearance:none;background-color:#fff;background-image:none;border-radius:4px;border:1px solid #d8dce5;-webkit-box-sizing:border-box;box-sizing:border-box;color:#5a5e66;display:inline-block;font-size:inherit;height:40px;line-height:1;outline:0;padding:0 15px;-webkit-transition:border-color .2s cubic-bezier(.645,.045,.355,1);transition:border-color .2s cubic-bezier(.645,.045,.355,1);width:100%}.custom-theme .el-input__inner::-webkit-input-placeholder{color:#b4bccc}.custom-theme .el-input__inner:-ms-input-placeholder{color:#b4bccc}.custom-theme .el-input__inner::-ms-input-placeholder{color:#b4bccc}.custom-theme .el-input__inner::placeholder{color:#b4bccc}.custom-theme .el-input__inner:hover{border-color:#b4bccc}.custom-theme .el-input__inner:focus{outline:0;border-color:#262729}.custom-theme .el-input__suffix{position:absolute;height:100%;right:5px;top:0;text-align:center;color:#b4bccc;-webkit-transition:all .3s;transition:all .3s;pointer-events:none}.custom-theme .el-input__suffix-inner{pointer-events:all}.custom-theme .el-input__prefix{position:absolute;height:100%;left:5px;top:0;text-align:center;color:#b4bccc;-webkit-transition:all .3s;transition:all .3s}.custom-theme .el-input__icon{height:100%;width:25px;text-align:center;-webkit-transition:all .3s;transition:all .3s;line-height:40px}.custom-theme .el-input__icon:after{content:'';height:100%;width:0;display:inline-block;vertical-align:middle}.custom-theme .el-input__validateIcon{pointer-events:none}.custom-theme .el-input.is-active .el-input__inner{outline:0;border-color:#262729}.custom-theme .el-input.is-disabled .el-input__inner{background-color:#f5f7fa;border-color:#dfe4ed;color:#b4bccc;cursor:not-allowed}.custom-theme .el-input.is-disabled .el-input__inner::-webkit-input-placeholder{color:#b4bccc}.custom-theme .el-input.is-disabled .el-input__inner:-ms-input-placeholder{color:#b4bccc}.custom-theme .el-input.is-disabled .el-input__inner::-ms-input-placeholder{color:#b4bccc}.custom-theme .el-input.is-disabled .el-input__inner::placeholder{color:#b4bccc}.custom-theme .el-input.is-disabled .el-input__icon{cursor:not-allowed}.custom-theme .el-input--suffix .el-input__inner{padding-right:30px}.custom-theme .el-input--prefix .el-input__inner{padding-left:30px}.custom-theme .el-input--medium{font-size:14px}.custom-theme .el-input--medium .el-input__inner{height:36px}.custom-theme .el-input--medium .el-input__icon{line-height:36px}.custom-theme .el-input--small{font-size:13px}.custom-theme .el-input--small .el-input__inner{height:32px}.custom-theme .el-input--small .el-input__icon{line-height:32px}.custom-theme .el-input--mini{font-size:12px}.custom-theme .el-input--mini .el-input__inner{height:28px}.custom-theme .el-input--mini .el-input__icon{line-height:28px}.custom-theme .el-input-group{line-height:normal;display:inline-table;width:100%;border-collapse:separate}.custom-theme .el-input-group>.el-input__inner{vertical-align:middle;display:table-cell}.custom-theme .el-input-group__append,.custom-theme .el-input-group__prepend{background-color:#f5f7fa;color:#0a76a4;vertical-align:middle;display:table-cell;position:relative;border:1px solid #d8dce5;border-radius:4px;padding:0 20px;width:1px;white-space:nowrap}.custom-theme .el-input-group__append:focus,.custom-theme .el-input-group__prepend:focus{outline:0}.custom-theme .el-input-group__append .el-button,.custom-theme .el-input-group__append .el-select,.custom-theme .el-input-group__prepend .el-button,.custom-theme .el-input-group__prepend .el-select{display:inline-block;margin:-20px}.custom-theme .el-input-group__append button.el-button,.custom-theme .el-input-group__append div.el-select .el-input__inner,.custom-theme .el-input-group__append div.el-select:hover .el-input__inner,.custom-theme .el-input-group__prepend button.el-button,.custom-theme .el-input-group__prepend div.el-select .el-input__inner,.custom-theme .el-input-group__prepend div.el-select:hover .el-input__inner{border-color:transparent;background-color:transparent;color:inherit;border-top:0;border-bottom:0}.custom-theme .el-input-group__append .el-button,.custom-theme .el-input-group__append .el-input,.custom-theme .el-input-group__prepend .el-button,.custom-theme .el-input-group__prepend .el-input{font-size:inherit}.custom-theme .el-input-group__prepend{border-right:0;border-top-right-radius:0;border-bottom-right-radius:0}.custom-theme .el-input-group__append{border-left:0;border-top-left-radius:0;border-bottom-left-radius:0}.custom-theme .el-input-group--prepend .el-input__inner{border-top-left-radius:0;border-bottom-left-radius:0}.custom-theme .el-input-group--append .el-input__inner{border-top-right-radius:0;border-bottom-right-radius:0}.custom-theme .el-textarea{display:inline-block;width:100%;vertical-align:bottom}.custom-theme .el-textarea__inner{display:block;resize:vertical;padding:5px 15px;line-height:1.5;-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;font-size:14px;color:#5a5e66;background-color:#fff;background-image:none;border:1px solid #d8dce5;border-radius:4px;-webkit-transition:border-color .2s cubic-bezier(.645,.045,.355,1);transition:border-color .2s cubic-bezier(.645,.045,.355,1)}.custom-theme .el-textarea__inner::-webkit-input-placeholder{color:#b4bccc}.custom-theme .el-textarea__inner:-ms-input-placeholder{color:#b4bccc}.custom-theme .el-textarea__inner::-ms-input-placeholder{color:#b4bccc}.custom-theme .el-textarea__inner::placeholder{color:#b4bccc}.custom-theme .el-textarea__inner:hover{border-color:#b4bccc}.custom-theme .el-textarea__inner:focus{outline:0;border-color:#262729}.custom-theme .el-textarea.is-disabled .el-textarea__inner{background-color:#f5f7fa;border-color:#dfe4ed;color:#b4bccc;cursor:not-allowed}.custom-theme .el-textarea.is-disabled .el-textarea__inner::-webkit-input-placeholder{color:#b4bccc}.custom-theme .el-textarea.is-disabled .el-textarea__inner:-ms-input-placeholder{color:#b4bccc}.custom-theme .el-textarea.is-disabled .el-textarea__inner::-ms-input-placeholder{color:#b4bccc}.custom-theme .el-textarea.is-disabled .el-textarea__inner::placeholder{color:#b4bccc}.custom-theme .el-message-box{display:inline-block;width:420px;padding-bottom:10px;vertical-align:middle;background-color:#fff;border-radius:4px;border:1px solid #e6ebf5;font-size:18px;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);text-align:left;overflow:hidden;-webkit-backface-visibility:hidden;backface-visibility:hidden}.custom-theme .el-message-box__wrapper{position:fixed;top:0;bottom:0;left:0;right:0;text-align:center}.custom-theme .el-message-box__wrapper::after{content:"";display:inline-block;height:100%;width:0;vertical-align:middle}.custom-theme .el-message-box__header{position:relative;padding:15px;padding-bottom:10px}.custom-theme .el-message-box__title{padding-left:0;margin-bottom:0;font-size:18px;line-height:1;color:#2d2f33}.custom-theme .el-message-box__headerbtn{position:absolute;top:15px;right:15px;padding:0;border:none;outline:0;background:0 0;font-size:16px;cursor:pointer}.custom-theme .el-message-box__headerbtn .el-message-box__close{color:#0a76a4}.custom-theme .el-message-box__headerbtn:focus .el-message-box__close,.custom-theme .el-message-box__headerbtn:hover .el-message-box__close{color:#262729}.custom-theme .el-message-box__content{position:relative;padding:10px 15px;color:#5a5e66;font-size:14px}.custom-theme .el-message-box__input{padding-top:15px}.custom-theme .el-message-box__input input.invalid{border-color:#b3450e}.custom-theme .el-message-box__input input.invalid:focus{border-color:#b3450e}.custom-theme .el-message-box__status{position:absolute;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);font-size:24px!important}.custom-theme .el-message-box__status::before{padding-left:1px}.custom-theme .el-message-box__status+.el-message-box__message{padding-left:36px;padding-right:12px}.custom-theme .el-message-box__status.el-icon-success{color:#409167}.custom-theme .el-message-box__status.el-icon-info{color:#0a76a4}.custom-theme .el-message-box__status.el-icon-warning{color:#9da408}.custom-theme .el-message-box__status.el-icon-error{color:#b3450e}.custom-theme .el-message-box__message{margin:0}.custom-theme .el-message-box__message p{margin:0;line-height:24px}.custom-theme .el-message-box__errormsg{color:#b3450e;font-size:12px;min-height:18px;margin-top:2px}.custom-theme .el-message-box__btns{padding:5px 15px 0;text-align:right}.custom-theme .el-message-box__btns button:nth-child(2){margin-left:10px}.custom-theme .el-message-box__btns-reverse{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.custom-theme .el-message-box--center{padding-bottom:30px}.custom-theme .el-message-box--center .el-message-box__header{padding-top:30px}.custom-theme .el-message-box--center .el-message-box__title{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.custom-theme .el-message-box--center .el-message-box__status{position:relative;top:auto;padding-right:5px;text-align:center;-webkit-transform:translateY(-1px);transform:translateY(-1px)}.custom-theme .el-message-box--center .el-message-box__message{margin-left:0}.custom-theme .el-message-box--center .el-message-box__btns,.custom-theme .el-message-box--center .el-message-box__content{text-align:center}.custom-theme .el-message-box--center .el-message-box__content{padding-left:27px;padding-right:27px}.custom-theme .msgbox-fade-enter-active{-webkit-animation:msgbox-fade-in .3s;animation:msgbox-fade-in .3s}.custom-theme .msgbox-fade-leave-active{-webkit-animation:msgbox-fade-out .3s;animation:msgbox-fade-out .3s}@-webkit-keyframes msgbox-fade-in{0%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@keyframes msgbox-fade-in{0%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@-webkit-keyframes msgbox-fade-out{0%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}100%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}}@keyframes msgbox-fade-out{0%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}100%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}}.custom-theme .el-breadcrumb{font-size:14px;line-height:1}.custom-theme .el-breadcrumb::after,.custom-theme .el-breadcrumb::before{display:table;content:""}.custom-theme .el-breadcrumb::after{clear:both}.custom-theme .el-breadcrumb__separator{margin:0 9px;font-weight:700;color:#b4bccc}.custom-theme .el-breadcrumb__separator[class*=icon]{margin:0 6px;font-weight:400}.custom-theme .el-breadcrumb__item{float:left}.custom-theme .el-breadcrumb__inner,.custom-theme .el-breadcrumb__inner a{font-weight:700;-webkit-transition:color .2s cubic-bezier(.645,.045,.355,1);transition:color .2s cubic-bezier(.645,.045,.355,1);color:#2d2f33}.custom-theme .el-breadcrumb__inner a:hover,.custom-theme .el-breadcrumb__inner:hover{color:#262729;cursor:pointer}.custom-theme .el-breadcrumb__item:last-child .el-breadcrumb__inner,.custom-theme .el-breadcrumb__item:last-child .el-breadcrumb__inner a,.custom-theme .el-breadcrumb__item:last-child .el-breadcrumb__inner a:hover,.custom-theme .el-breadcrumb__item:last-child .el-breadcrumb__inner:hover{font-weight:400;color:#5a5e66;cursor:text}.custom-theme .el-breadcrumb__item:last-child .el-breadcrumb__separator{display:none}.custom-theme .el-form--label-left .el-form-item__label{text-align:left}.custom-theme .el-form--label-top .el-form-item__label{float:none;display:inline-block;text-align:left;padding:0 0 10px 0}.custom-theme .el-form--inline .el-form-item{display:inline-block;margin-right:10px;vertical-align:top}.custom-theme .el-form--inline .el-form-item__label{float:none;display:inline-block}.custom-theme .el-form--inline .el-form-item__content{display:inline-block;vertical-align:top}.custom-theme .el-form--inline.el-form--label-top .el-form-item__content{display:block}.custom-theme .el-form-item{margin-bottom:22px}.custom-theme .el-form-item::after,.custom-theme .el-form-item::before{display:table;content:""}.custom-theme .el-form-item::after{clear:both}.custom-theme .el-form-item .el-form-item{margin-bottom:0}.custom-theme .el-form-item .el-input__validateIcon{display:none}.custom-theme .el-form-item--medium .el-form-item__label{line-height:36px}.custom-theme .el-form-item--medium .el-form-item__content{line-height:36px}.custom-theme .el-form-item--small .el-form-item__label{line-height:32px}.custom-theme .el-form-item--small .el-form-item__content{line-height:32px}.custom-theme .el-form-item--small.el-form-item{margin-bottom:18px}.custom-theme .el-form-item--small .el-form-item__error{padding-top:2px}.custom-theme .el-form-item--mini .el-form-item__label{line-height:28px}.custom-theme .el-form-item--mini .el-form-item__content{line-height:28px}.custom-theme .el-form-item--mini.el-form-item{margin-bottom:18px}.custom-theme .el-form-item--mini .el-form-item__error{padding-top:1px}.custom-theme .el-form-item__label{text-align:right;vertical-align:middle;float:left;font-size:14px;color:#5a5e66;line-height:40px;padding:0 12px 0 0;-webkit-box-sizing:border-box;box-sizing:border-box}.custom-theme .el-form-item__content{line-height:40px;position:relative;font-size:14px}.custom-theme .el-form-item__content::after,.custom-theme .el-form-item__content::before{display:table;content:""}.custom-theme .el-form-item__content::after{clear:both}.custom-theme .el-form-item__error{color:#b3450e;font-size:12px;line-height:1;padding-top:4px;position:absolute;top:100%;left:0}.custom-theme .el-form-item__error--inline{position:relative;top:auto;left:auto;display:inline-block;margin-left:10px}.custom-theme .el-form-item.is-required .el-form-item__label:before{content:'*';color:#b3450e;margin-right:4px}.custom-theme .el-form-item.is-error .el-input__inner,.custom-theme .el-form-item.is-error .el-input__inner:focus,.custom-theme .el-form-item.is-error .el-textarea__inner,.custom-theme .el-form-item.is-error .el-textarea__inner:focus{border-color:#b3450e}.custom-theme .el-form-item.is-error .el-input-group__append .el-input__inner,.custom-theme .el-form-item.is-error .el-input-group__prepend .el-input__inner{border-color:transparent}.custom-theme .el-form-item.is-error .el-input__validateIcon{color:#b3450e}.custom-theme .el-form-item.is-success .el-input__inner,.custom-theme .el-form-item.is-success .el-input__inner:focus,.custom-theme .el-form-item.is-success .el-textarea__inner,.custom-theme .el-form-item.is-success .el-textarea__inner:focus{border-color:#409167}.custom-theme .el-form-item.is-success .el-input-group__append .el-input__inner,.custom-theme .el-form-item.is-success .el-input-group__prepend .el-input__inner{border-color:transparent}.custom-theme .el-form-item.is-success .el-input__validateIcon{color:#409167}.custom-theme .el-form-item--feedback .el-input__validateIcon{display:inline-block}.custom-theme .el-tabs__header{padding:0;position:relative;margin:0 0 15px}.custom-theme .el-tabs__active-bar{position:absolute;bottom:0;left:0;height:2px;background-color:#262729;z-index:1;-webkit-transition:-webkit-transform .3s cubic-bezier(.645,.045,.355,1);transition:-webkit-transform .3s cubic-bezier(.645,.045,.355,1);transition:transform .3s cubic-bezier(.645,.045,.355,1);transition:transform .3s cubic-bezier(.645,.045,.355,1),-webkit-transform .3s cubic-bezier(.645,.045,.355,1);list-style:none}.custom-theme .el-tabs__new-tab{float:right;border:1px solid #d3dce6;height:18px;width:18px;line-height:18px;margin:12px 0 9px 10px;border-radius:3px;text-align:center;font-size:12px;color:#d3dce6;cursor:pointer;-webkit-transition:all .15s;transition:all .15s}.custom-theme .el-tabs__new-tab .el-icon-plus{-webkit-transform:scale(.8,.8);transform:scale(.8,.8)}.custom-theme .el-tabs__new-tab:hover{color:#262729}.custom-theme .el-tabs__nav-wrap{overflow:hidden;margin-bottom:-1px;position:relative}.custom-theme .el-tabs__nav-wrap::after{content:"";position:absolute;left:0;bottom:0;width:100%;height:2px;background-color:#dfe4ed;z-index:1}.custom-theme .el-tabs__nav-wrap.is-scrollable{padding:0 20px;-webkit-box-sizing:border-box;box-sizing:border-box}.custom-theme .el-tabs__nav-scroll{overflow:hidden}.custom-theme .el-tabs__nav-next,.custom-theme .el-tabs__nav-prev{position:absolute;cursor:pointer;line-height:44px;font-size:12px;color:#878d99}.custom-theme .el-tabs__nav-next{right:0}.custom-theme .el-tabs__nav-prev{left:0}.custom-theme .el-tabs__nav{white-space:nowrap;position:relative;-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;float:left;z-index:2}.custom-theme .el-tabs__item{padding:0 20px;height:40px;-webkit-box-sizing:border-box;box-sizing:border-box;line-height:40px;display:inline-block;list-style:none;font-size:14px;font-weight:500;color:#2d2f33;position:relative}.custom-theme .el-tabs__item:focus,.custom-theme .el-tabs__item:focus:active{outline:0}.custom-theme .el-tabs__item .el-icon-close{border-radius:50%;text-align:center;-webkit-transition:all .3s cubic-bezier(.645,.045,.355,1);transition:all .3s cubic-bezier(.645,.045,.355,1);margin-left:5px}.custom-theme .el-tabs__item .el-icon-close:before{-webkit-transform:scale(.9);transform:scale(.9);display:inline-block}.custom-theme .el-tabs__item .el-icon-close:hover{background-color:#b4bccc;color:#fff}.custom-theme .el-tabs__item.is-active{color:#262729}.custom-theme .el-tabs__item:hover{color:#262729;cursor:pointer}.custom-theme .el-tabs__item.is-disabled{color:#b4bccc;cursor:default}.custom-theme .el-tabs__content{overflow:hidden;position:relative}.custom-theme .el-tabs--card>.el-tabs__header{border-bottom:1px solid #dfe4ed}.custom-theme .el-tabs--card>.el-tabs__header .el-tabs__nav-wrap::after{content:none}.custom-theme .el-tabs--card>.el-tabs__header .el-tabs__nav{border:1px solid #dfe4ed;border-bottom:none;border-radius:4px 4px 0 0}.custom-theme .el-tabs--card>.el-tabs__header .el-tabs__active-bar{display:none}.custom-theme .el-tabs--card>.el-tabs__header .el-tabs__item .el-icon-close{position:relative;font-size:12px;width:0;height:14px;vertical-align:middle;line-height:15px;overflow:hidden;top:-1px;right:-2px;-webkit-transform-origin:100% 50%;transform-origin:100% 50%}.custom-theme .el-tabs--card>.el-tabs__header .el-tabs__item{border-bottom:1px solid transparent;border-left:1px solid #dfe4ed;-webkit-transition:color .3s cubic-bezier(.645,.045,.355,1),padding .3s cubic-bezier(.645,.045,.355,1);transition:color .3s cubic-bezier(.645,.045,.355,1),padding .3s cubic-bezier(.645,.045,.355,1)}.custom-theme .el-tabs--card>.el-tabs__header .el-tabs__item:first-child{border-left:none}.custom-theme .el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover{padding-left:13px;padding-right:13px}.custom-theme .el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover .el-icon-close{width:14px}.custom-theme .el-tabs--card>.el-tabs__header .el-tabs__item.is-active{border-bottom-color:#fff}.custom-theme .el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable{padding-left:20px;padding-right:20px}.custom-theme .el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable .el-icon-close{width:14px}.custom-theme .el-tabs--border-card{background:#fff;border:1px solid #d8dce5;-webkit-box-shadow:0 2px 4px 0 rgba(0,0,0,.12),0 0 6px 0 rgba(0,0,0,.04);box-shadow:0 2px 4px 0 rgba(0,0,0,.12),0 0 6px 0 rgba(0,0,0,.04)}.custom-theme .el-tabs--border-card>.el-tabs__content{padding:15px}.custom-theme .el-tabs--border-card>.el-tabs__header{background-color:#f5f7fa;border-bottom:1px solid #dfe4ed;margin:0}.custom-theme .el-tabs--border-card>.el-tabs__header .el-tabs__nav-wrap::after{content:none}.custom-theme .el-tabs--border-card>.el-tabs__header .el-tabs__item{-webkit-transition:all .3s cubic-bezier(.645,.045,.355,1);transition:all .3s cubic-bezier(.645,.045,.355,1);border:1px solid transparent;margin:-1px -1px 0;color:#878d99}.custom-theme .el-tabs--border-card>.el-tabs__header .el-tabs__item.is-active{color:#262729;background-color:#fff;border-right-color:#d8dce5;border-left-color:#d8dce5}.custom-theme .el-tabs--border-card>.el-tabs__header .el-tabs__item:hover{color:#262729}.custom-theme .el-tabs--bottom:not(.el-tabs--border-card):not(.el-tabs--card) .el-tabs__item:nth-child(2),.custom-theme .el-tabs--top:not(.el-tabs--border-card):not(.el-tabs--card) .el-tabs__item:nth-child(2){padding-left:0}.custom-theme .el-tabs--bottom .el-tabs__header{margin-bottom:0;margin-top:10px}.custom-theme .el-tabs--bottom.el-tabs--border-card .el-tabs__header{border-bottom:0;border-top:1px solid #d8dce5}.custom-theme .el-tabs--bottom.el-tabs--border-card .el-tabs__nav-wrap{margin-top:-1px;margin-bottom:0}.custom-theme .el-tabs--bottom.el-tabs--border-card .el-tabs__item{border:1px solid transparent;margin:0 -1px -1px -1px}.custom-theme .el-tabs--left,.custom-theme .el-tabs--right{overflow:hidden}.custom-theme .el-tabs--left .el-tabs__header,.custom-theme .el-tabs--left .el-tabs__nav-scroll,.custom-theme .el-tabs--left .el-tabs__nav-wrap,.custom-theme .el-tabs--right .el-tabs__header,.custom-theme .el-tabs--right .el-tabs__nav-scroll,.custom-theme .el-tabs--right .el-tabs__nav-wrap{height:100%}.custom-theme .el-tabs--left .el-tabs__active-bar,.custom-theme .el-tabs--right .el-tabs__active-bar{top:0;bottom:auto;width:2px;height:auto}.custom-theme .el-tabs--left .el-tabs__nav-wrap,.custom-theme .el-tabs--right .el-tabs__nav-wrap{margin-bottom:0}.custom-theme .el-tabs--left .el-tabs__nav-wrap.is-scrollable,.custom-theme .el-tabs--right .el-tabs__nav-wrap.is-scrollable{padding:30px 0}.custom-theme .el-tabs--left .el-tabs__nav-wrap::after,.custom-theme .el-tabs--right .el-tabs__nav-wrap::after{height:100%;width:2px;bottom:auto;top:0}.custom-theme .el-tabs--left .el-tabs__nav,.custom-theme .el-tabs--right .el-tabs__nav{float:none}.custom-theme .el-tabs--left .el-tabs__item,.custom-theme .el-tabs--right .el-tabs__item{display:block}.custom-theme .el-tabs--left .el-tabs__nav-next,.custom-theme .el-tabs--left .el-tabs__nav-prev,.custom-theme .el-tabs--right .el-tabs__nav-next,.custom-theme .el-tabs--right .el-tabs__nav-prev{height:30px;line-height:30px;width:100%;text-align:center;cursor:pointer}.custom-theme .el-tabs--left .el-tabs__nav-next i,.custom-theme .el-tabs--left .el-tabs__nav-prev i,.custom-theme .el-tabs--right .el-tabs__nav-next i,.custom-theme .el-tabs--right .el-tabs__nav-prev i{-webkit-transform:rotateZ(90deg);transform:rotateZ(90deg)}.custom-theme .el-tabs--left .el-tabs__nav-prev,.custom-theme .el-tabs--right .el-tabs__nav-prev{left:auto;top:0}.custom-theme .el-tabs--left .el-tabs__nav-next,.custom-theme .el-tabs--right .el-tabs__nav-next{right:auto;bottom:0}.custom-theme .el-tabs--left .el-tabs__header{float:left;margin-bottom:0;margin-right:10px}.custom-theme .el-tabs--left .el-tabs__nav-wrap{margin-right:-1px}.custom-theme .el-tabs--left .el-tabs__nav-wrap::after{left:auto;right:0}.custom-theme .el-tabs--left .el-tabs__active-bar{right:0;left:auto}.custom-theme .el-tabs--left .el-tabs__item{text-align:right}.custom-theme .el-tabs--left.el-tabs--card .el-tabs__active-bar{display:none}.custom-theme .el-tabs--left.el-tabs--card .el-tabs__item{border-left:none;border-right:1px solid #dfe4ed;border-bottom:none;border-top:1px solid #dfe4ed}.custom-theme .el-tabs--left.el-tabs--card .el-tabs__item:first-child{border-right:1px solid #dfe4ed;border-top:none}.custom-theme .el-tabs--left.el-tabs--card .el-tabs__item.is-active{border:1px solid #dfe4ed;border-right-color:#fff;border-left:none;border-bottom:none}.custom-theme .el-tabs--left.el-tabs--card .el-tabs__item.is-active:first-child{border-top:none}.custom-theme .el-tabs--left.el-tabs--card .el-tabs__item.is-active:last-child{border-bottom:none}.custom-theme .el-tabs--left.el-tabs--card .el-tabs__nav{border-radius:4px 0 0 4px;border-bottom:1px solid #dfe4ed;border-right:none}.custom-theme .el-tabs--left.el-tabs--card .el-tabs__new-tab{float:none}.custom-theme .el-tabs--left.el-tabs--border-card .el-tabs__header{border-right:1px solid #dfe4ed}.custom-theme .el-tabs--left.el-tabs--border-card .el-tabs__item{border:1px solid transparent;margin:-1px 0 -1px -1px}.custom-theme .el-tabs--left.el-tabs--border-card .el-tabs__item.is-active{border-color:transparent;border-top-color:#d1dbe5;border-bottom-color:#d1dbe5}.custom-theme .el-tabs--right .el-tabs__header{float:right;margin-bottom:0;margin-left:10px}.custom-theme .el-tabs--right .el-tabs__nav-wrap{margin-left:-1px}.custom-theme .el-tabs--right .el-tabs__nav-wrap::after{left:0;right:auto}.custom-theme .el-tabs--right .el-tabs__active-bar{left:0}.custom-theme .el-tabs--right.el-tabs--card .el-tabs__active-bar{display:none}.custom-theme .el-tabs--right.el-tabs--card .el-tabs__item{border-bottom:none;border-top:1px solid #dfe4ed}.custom-theme .el-tabs--right.el-tabs--card .el-tabs__item:first-child{border-left:1px solid #dfe4ed;border-top:none}.custom-theme .el-tabs--right.el-tabs--card .el-tabs__item.is-active{border:1px solid #dfe4ed;border-left-color:#fff;border-right:none;border-bottom:none}.custom-theme .el-tabs--right.el-tabs--card .el-tabs__item.is-active:first-child{border-top:none}.custom-theme .el-tabs--right.el-tabs--card .el-tabs__item.is-active:last-child{border-bottom:none}.custom-theme .el-tabs--right.el-tabs--card .el-tabs__nav{border-radius:0 4px 4px 0;border-bottom:1px solid #dfe4ed;border-left:none}.custom-theme .el-tabs--right.el-tabs--border-card .el-tabs__header{border-left:1px solid #dfe4ed}.custom-theme .el-tabs--right.el-tabs--border-card .el-tabs__item{border:1px solid transparent;margin:-1px -1px -1px 0}.custom-theme .el-tabs--right.el-tabs--border-card .el-tabs__item.is-active{border-color:transparent;border-top-color:#d1dbe5;border-bottom-color:#d1dbe5}.custom-theme .slideInLeft-transition,.custom-theme .slideInRight-transition{display:inline-block}.custom-theme .slideInRight-enter{-webkit-animation:slideInRight-enter .3s;animation:slideInRight-enter .3s}.custom-theme .slideInRight-leave{position:absolute;left:0;right:0;-webkit-animation:slideInRight-leave .3s;animation:slideInRight-leave .3s}.custom-theme .slideInLeft-enter{-webkit-animation:slideInLeft-enter .3s;animation:slideInLeft-enter .3s}.custom-theme .slideInLeft-leave{position:absolute;left:0;right:0;-webkit-animation:slideInLeft-leave .3s;animation:slideInLeft-leave .3s}@-webkit-keyframes slideInRight-enter{0%{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(100%);transform:translateX(100%)}to{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes slideInRight-enter{0%{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(100%);transform:translateX(100%)}to{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0)}}@-webkit-keyframes slideInRight-leave{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0);opacity:1}100%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(100%);transform:translateX(100%);opacity:0}}@keyframes slideInRight-leave{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0);opacity:1}100%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(100%);transform:translateX(100%);opacity:0}}@-webkit-keyframes slideInLeft-enter{0%{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(-100%);transform:translateX(-100%)}to{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes slideInLeft-enter{0%{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(-100%);transform:translateX(-100%)}to{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0)}}@-webkit-keyframes slideInLeft-leave{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0);opacity:1}100%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(-100%);transform:translateX(-100%);opacity:0}}@keyframes slideInLeft-leave{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0);opacity:1}100%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(-100%);transform:translateX(-100%);opacity:0}}.custom-theme .el-tag{background-color:rgba(38,39,41,.1);display:inline-block;padding:0 10px;height:32px;line-height:30px;font-size:12px;color:#262729;border-radius:4px;-webkit-box-sizing:border-box;box-sizing:border-box;border:1px solid rgba(38,39,41,.2);white-space:nowrap}.custom-theme .el-tag .el-icon-close{border-radius:50%;text-align:center;position:relative;cursor:pointer;font-size:12px;height:18px;width:18px;line-height:18px;vertical-align:middle;top:-1px;right:-5px;color:#262729}.custom-theme .el-tag .el-icon-close::before{display:block}.custom-theme .el-tag .el-icon-close:hover{background-color:#262729;color:#fff}.custom-theme .el-tag--info{background-color:rgba(10,118,164,.1);border-color:rgba(10,118,164,.2);color:#0a76a4}.custom-theme .el-tag--info.is-hit{border-color:#0a76a4}.custom-theme .el-tag--info .el-tag__close{color:#0a76a4}.custom-theme .el-tag--info .el-tag__close:hover{background-color:#0a76a4;color:#fff}.custom-theme .el-tag--success{background-color:rgba(64,145,103,.1);border-color:rgba(64,145,103,.2);color:#409167}.custom-theme .el-tag--success.is-hit{border-color:#409167}.custom-theme .el-tag--success .el-tag__close{color:#409167}.custom-theme .el-tag--success .el-tag__close:hover{background-color:#409167;color:#fff}.custom-theme .el-tag--warning{background-color:rgba(157,164,8,.1);border-color:rgba(157,164,8,.2);color:#9da408}.custom-theme .el-tag--warning.is-hit{border-color:#9da408}.custom-theme .el-tag--warning .el-tag__close{color:#9da408}.custom-theme .el-tag--warning .el-tag__close:hover{background-color:#9da408;color:#fff}.custom-theme .el-tag--danger{background-color:rgba(179,69,14,.1);border-color:rgba(179,69,14,.2);color:#b3450e}.custom-theme .el-tag--danger.is-hit{border-color:#b3450e}.custom-theme .el-tag--danger .el-tag__close{color:#b3450e}.custom-theme .el-tag--danger .el-tag__close:hover{background-color:#b3450e;color:#fff}.custom-theme .el-tag--medium{height:28px;line-height:26px}.custom-theme .el-tag--medium .el-icon-close{-webkit-transform:scale(.8);transform:scale(.8)}.custom-theme .el-tag--small{height:24px;padding:0 8px;line-height:22px}.custom-theme .el-tag--small .el-icon-close{-webkit-transform:scale(.8);transform:scale(.8)}.custom-theme .el-tag--mini{height:20px;padding:0 5px;line-height:19px}.custom-theme .el-tag--mini .el-icon-close{margin-left:-3px;-webkit-transform:scale(.7);transform:scale(.7)}.custom-theme .el-tree{cursor:default;background:#fff;color:#5a5e66}.custom-theme .el-tree__empty-block{position:relative;min-height:60px;text-align:center;width:100%;height:100%}.custom-theme .el-tree__empty-text{position:absolute;left:50%;top:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);color:#623615}.custom-theme .el-tree-node{white-space:nowrap}.custom-theme .el-tree-node__content{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:26px;cursor:pointer}.custom-theme .el-tree-node__content>.el-tree-node__expand-icon{padding:6px}.custom-theme .el-tree-node__content>.el-checkbox{margin-right:8px}.custom-theme .el-tree-node__content:hover{background-color:#f5f7fa}.custom-theme .el-tree-node__expand-icon{cursor:pointer;color:#b4bccc;font-size:12px;-webkit-transform:rotate(0);transform:rotate(0);-webkit-transition:-webkit-transform .3s ease-in-out;transition:-webkit-transform .3s ease-in-out;transition:transform .3s ease-in-out;transition:transform .3s ease-in-out,-webkit-transform .3s ease-in-out}.custom-theme .el-tree-node__expand-icon.expanded{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.custom-theme .el-tree-node__expand-icon.is-leaf{color:transparent;cursor:default}.custom-theme .el-tree-node__label{font-size:14px}.custom-theme .el-tree-node__loading-icon{margin-right:8px;font-size:14px;color:#b4bccc}.custom-theme .el-tree-node>.el-tree-node__children{overflow:hidden;background-color:transparent}.custom-theme .el-tree-node.is-expanded>.el-tree-node__children{display:block}.custom-theme .el-tree--highlight-current .el-tree-node.is-current>.el-tree-node__content{background-color:#eee}.custom-theme .el-alert{width:100%;padding:8px 16px;margin:0;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:4px;position:relative;background-color:#fff;overflow:hidden;opacity:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-transition:opacity .2s;transition:opacity .2s}.custom-theme .el-alert.is-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.custom-theme .el-alert--success{background-color:#ecf4f0;color:#409167}.custom-theme .el-alert--success .el-alert__description{color:#409167}.custom-theme .el-alert--info{background-color:#e7f1f6;color:#0a76a4}.custom-theme .el-alert--info .el-alert__description{color:#0a76a4}.custom-theme .el-alert--warning{background-color:#f5f6e6;color:#9da408}.custom-theme .el-alert--warning .el-alert__description{color:#9da408}.custom-theme .el-alert--error{background-color:#f7ece7;color:#b3450e}.custom-theme .el-alert--error .el-alert__description{color:#b3450e}.custom-theme .el-alert__content{display:table-cell;padding:0 8px}.custom-theme .el-alert__icon{font-size:16px;width:16px}.custom-theme .el-alert__icon.is-big{font-size:28px;width:28px}.custom-theme .el-alert__title{font-size:13px;line-height:18px}.custom-theme .el-alert__title.is-bold{font-weight:700}.custom-theme .el-alert .el-alert__description{font-size:12px;margin:5px 0 0 0}.custom-theme .el-alert__closebtn{font-size:12px;color:#b4bccc;opacity:1;position:absolute;top:12px;right:15px;cursor:pointer}.custom-theme .el-alert__closebtn.is-customed{font-style:normal;font-size:13px;top:9px}.custom-theme .el-alert-fade-enter,.custom-theme .el-alert-fade-leave-active{opacity:0}.custom-theme .el-notification{display:-webkit-box;display:-ms-flexbox;display:flex;width:330px;padding:14px 26px 14px 13px;border-radius:8px;-webkit-box-sizing:border-box;box-sizing:border-box;border:1px solid #e6ebf5;position:fixed;background-color:#fff;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);-webkit-transition:opacity .3s,left .3s,right .3s,top .4s,bottom .3s,-webkit-transform .3s;transition:opacity .3s,left .3s,right .3s,top .4s,bottom .3s,-webkit-transform .3s;transition:opacity .3s,transform .3s,left .3s,right .3s,top .4s,bottom .3s;transition:opacity .3s,transform .3s,left .3s,right .3s,top .4s,bottom .3s,-webkit-transform .3s;overflow:hidden}.custom-theme .el-notification.right{right:16px}.custom-theme .el-notification.left{left:16px}.custom-theme .el-notification__group{margin-left:13px}.custom-theme .el-notification__title{font-weight:700;font-size:16px;color:#2d2f33;margin:0}.custom-theme .el-notification__content{font-size:14px;line-height:21px;margin:6px 0 0 0;color:#5a5e66;text-align:justify}.custom-theme .el-notification__content p{margin:0}.custom-theme .el-notification__icon{height:24px;width:24px;font-size:24px;-webkit-transform:translateY(4px);transform:translateY(4px)}.custom-theme .el-notification__closeBtn{position:absolute;top:15px;right:15px;cursor:pointer;color:#878d99;font-size:16px}.custom-theme .el-notification__closeBtn:hover{color:#5a5e66}.custom-theme .el-notification .el-icon-success{color:#409167}.custom-theme .el-notification .el-icon-error{color:#b3450e}.custom-theme .el-notification .el-icon-info{color:#0a76a4}.custom-theme .el-notification .el-icon-warning{color:#9da408}.custom-theme .el-notification-fade-enter.right{right:0;-webkit-transform:translateX(100%);transform:translateX(100%)}.custom-theme .el-notification-fade-enter.left{left:0;-webkit-transform:translateX(-100%);transform:translateX(-100%)}.custom-theme .el-notification-fade-leave-active{opacity:0}.custom-theme .el-input{position:relative;font-size:14px;display:inline-block;width:100%}.custom-theme .el-input::-webkit-scrollbar{z-index:11;width:6px}.custom-theme .el-input::-webkit-scrollbar:horizontal{height:6px}.custom-theme .el-input::-webkit-scrollbar-thumb{border-radius:5px;width:6px;background:#b4bccc}.custom-theme .el-input::-webkit-scrollbar-corner{background:#fff}.custom-theme .el-input::-webkit-scrollbar-track{background:#fff}.custom-theme .el-input::-webkit-scrollbar-track-piece{background:#fff;width:6px}.custom-theme .el-input__inner{-webkit-appearance:none;background-color:#fff;background-image:none;border-radius:4px;border:1px solid #d8dce5;-webkit-box-sizing:border-box;box-sizing:border-box;color:#5a5e66;display:inline-block;font-size:inherit;height:40px;line-height:1;outline:0;padding:0 15px;-webkit-transition:border-color .2s cubic-bezier(.645,.045,.355,1);transition:border-color .2s cubic-bezier(.645,.045,.355,1);width:100%}.custom-theme .el-input__inner::-webkit-input-placeholder{color:#b4bccc}.custom-theme .el-input__inner:-ms-input-placeholder{color:#b4bccc}.custom-theme .el-input__inner::-ms-input-placeholder{color:#b4bccc}.custom-theme .el-input__inner::placeholder{color:#b4bccc}.custom-theme .el-input__inner:hover{border-color:#b4bccc}.custom-theme .el-input__inner:focus{outline:0;border-color:#262729}.custom-theme .el-input__suffix{position:absolute;height:100%;right:5px;top:0;text-align:center;color:#b4bccc;-webkit-transition:all .3s;transition:all .3s;pointer-events:none}.custom-theme .el-input__suffix-inner{pointer-events:all}.custom-theme .el-input__prefix{position:absolute;height:100%;left:5px;top:0;text-align:center;color:#b4bccc;-webkit-transition:all .3s;transition:all .3s}.custom-theme .el-input__icon{height:100%;width:25px;text-align:center;-webkit-transition:all .3s;transition:all .3s;line-height:40px}.custom-theme .el-input__icon:after{content:'';height:100%;width:0;display:inline-block;vertical-align:middle}.custom-theme .el-input__validateIcon{pointer-events:none}.custom-theme .el-input.is-active .el-input__inner{outline:0;border-color:#262729}.custom-theme .el-input.is-disabled .el-input__inner{background-color:#f5f7fa;border-color:#dfe4ed;color:#b4bccc;cursor:not-allowed}.custom-theme .el-input.is-disabled .el-input__inner::-webkit-input-placeholder{color:#b4bccc}.custom-theme .el-input.is-disabled .el-input__inner:-ms-input-placeholder{color:#b4bccc}.custom-theme .el-input.is-disabled .el-input__inner::-ms-input-placeholder{color:#b4bccc}.custom-theme .el-input.is-disabled .el-input__inner::placeholder{color:#b4bccc}.custom-theme .el-input.is-disabled .el-input__icon{cursor:not-allowed}.custom-theme .el-input--suffix .el-input__inner{padding-right:30px}.custom-theme .el-input--prefix .el-input__inner{padding-left:30px}.custom-theme .el-input--medium{font-size:14px}.custom-theme .el-input--medium .el-input__inner{height:36px}.custom-theme .el-input--medium .el-input__icon{line-height:36px}.custom-theme .el-input--small{font-size:13px}.custom-theme .el-input--small .el-input__inner{height:32px}.custom-theme .el-input--small .el-input__icon{line-height:32px}.custom-theme .el-input--mini{font-size:12px}.custom-theme .el-input--mini .el-input__inner{height:28px}.custom-theme .el-input--mini .el-input__icon{line-height:28px}.custom-theme .el-input-group{line-height:normal;display:inline-table;width:100%;border-collapse:separate}.custom-theme .el-input-group>.el-input__inner{vertical-align:middle;display:table-cell}.custom-theme .el-input-group__append,.custom-theme .el-input-group__prepend{background-color:#f5f7fa;color:#0a76a4;vertical-align:middle;display:table-cell;position:relative;border:1px solid #d8dce5;border-radius:4px;padding:0 20px;width:1px;white-space:nowrap}.custom-theme .el-input-group__append:focus,.custom-theme .el-input-group__prepend:focus{outline:0}.custom-theme .el-input-group__append .el-button,.custom-theme .el-input-group__append .el-select,.custom-theme .el-input-group__prepend .el-button,.custom-theme .el-input-group__prepend .el-select{display:inline-block;margin:-20px}.custom-theme .el-input-group__append button.el-button,.custom-theme .el-input-group__append div.el-select .el-input__inner,.custom-theme .el-input-group__append div.el-select:hover .el-input__inner,.custom-theme .el-input-group__prepend button.el-button,.custom-theme .el-input-group__prepend div.el-select .el-input__inner,.custom-theme .el-input-group__prepend div.el-select:hover .el-input__inner{border-color:transparent;background-color:transparent;color:inherit;border-top:0;border-bottom:0}.custom-theme .el-input-group__append .el-button,.custom-theme .el-input-group__append .el-input,.custom-theme .el-input-group__prepend .el-button,.custom-theme .el-input-group__prepend .el-input{font-size:inherit}.custom-theme .el-input-group__prepend{border-right:0;border-top-right-radius:0;border-bottom-right-radius:0}.custom-theme .el-input-group__append{border-left:0;border-top-left-radius:0;border-bottom-left-radius:0}.custom-theme .el-input-group--prepend .el-input__inner{border-top-left-radius:0;border-bottom-left-radius:0}.custom-theme .el-input-group--append .el-input__inner{border-top-right-radius:0;border-bottom-right-radius:0}.custom-theme .el-textarea{display:inline-block;width:100%;vertical-align:bottom}.custom-theme .el-textarea__inner{display:block;resize:vertical;padding:5px 15px;line-height:1.5;-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;font-size:14px;color:#5a5e66;background-color:#fff;background-image:none;border:1px solid #d8dce5;border-radius:4px;-webkit-transition:border-color .2s cubic-bezier(.645,.045,.355,1);transition:border-color .2s cubic-bezier(.645,.045,.355,1)}.custom-theme .el-textarea__inner::-webkit-input-placeholder{color:#b4bccc}.custom-theme .el-textarea__inner:-ms-input-placeholder{color:#b4bccc}.custom-theme .el-textarea__inner::-ms-input-placeholder{color:#b4bccc}.custom-theme .el-textarea__inner::placeholder{color:#b4bccc}.custom-theme .el-textarea__inner:hover{border-color:#b4bccc}.custom-theme .el-textarea__inner:focus{outline:0;border-color:#262729}.custom-theme .el-textarea.is-disabled .el-textarea__inner{background-color:#f5f7fa;border-color:#dfe4ed;color:#b4bccc;cursor:not-allowed}.custom-theme .el-textarea.is-disabled .el-textarea__inner::-webkit-input-placeholder{color:#b4bccc}.custom-theme .el-textarea.is-disabled .el-textarea__inner:-ms-input-placeholder{color:#b4bccc}.custom-theme .el-textarea.is-disabled .el-textarea__inner::-ms-input-placeholder{color:#b4bccc}.custom-theme .el-textarea.is-disabled .el-textarea__inner::placeholder{color:#b4bccc}.custom-theme .el-input-number{position:relative;display:inline-block;width:180px;line-height:38px}.custom-theme .el-input-number .el-input{display:block}.custom-theme .el-input-number .el-input__inner{-webkit-appearance:none;padding-left:50px;padding-right:50px;text-align:center}.custom-theme .el-input-number__decrease,.custom-theme .el-input-number__increase{position:absolute;z-index:1;top:1px;width:40px;height:auto;text-align:center;background:#f5f7fa;color:#5a5e66;cursor:pointer;font-size:13px}.custom-theme .el-input-number__decrease:hover,.custom-theme .el-input-number__increase:hover{color:#262729}.custom-theme .el-input-number__decrease:hover:not(.is-disabled)~.el-input .el-input__inner:not(.is-disabled),.custom-theme .el-input-number__increase:hover:not(.is-disabled)~.el-input .el-input__inner:not(.is-disabled){border-color:#262729}.custom-theme .el-input-number__decrease.is-disabled,.custom-theme .el-input-number__increase.is-disabled{color:#b4bccc;cursor:not-allowed}.custom-theme .el-input-number__increase{right:1px;border-radius:0 4px 4px 0;border-left:1px solid #d8dce5}.custom-theme .el-input-number__decrease{left:1px;border-radius:4px 0 0 4px;border-right:1px solid #d8dce5}.custom-theme .el-input-number.is-disabled .el-input-number__decrease,.custom-theme .el-input-number.is-disabled .el-input-number__increase{border-color:#dfe4ed;color:#dfe4ed}.custom-theme .el-input-number.is-disabled .el-input-number__decrease:hover,.custom-theme .el-input-number.is-disabled .el-input-number__increase:hover{color:#dfe4ed;cursor:not-allowed}.custom-theme .el-input-number--medium{width:200px;line-height:34px}.custom-theme .el-input-number--medium .el-input-number__decrease,.custom-theme .el-input-number--medium .el-input-number__increase{width:36px;font-size:14px}.custom-theme .el-input-number--medium .el-input__inner{padding-left:43px;padding-right:43px}.custom-theme .el-input-number--small{width:130px;line-height:30px}.custom-theme .el-input-number--small .el-input-number__decrease,.custom-theme .el-input-number--small .el-input-number__increase{width:32px;font-size:13px}.custom-theme .el-input-number--small .el-input-number__decrease [class*=el-icon],.custom-theme .el-input-number--small .el-input-number__increase [class*=el-icon]{-webkit-transform:scale(.9);transform:scale(.9)}.custom-theme .el-input-number--small .el-input__inner{padding-left:39px;padding-right:39px}.custom-theme .el-input-number--mini{width:130px;line-height:26px}.custom-theme .el-input-number--mini .el-input-number__decrease,.custom-theme .el-input-number--mini .el-input-number__increase{width:28px;font-size:12px}.custom-theme .el-input-number--mini .el-input-number__decrease [class*=el-icon],.custom-theme .el-input-number--mini .el-input-number__increase [class*=el-icon]{-webkit-transform:scale(.8);transform:scale(.8)}.custom-theme .el-input-number--mini .el-input__inner{padding-left:35px;padding-right:35px}.custom-theme .el-input-number.is-without-controls .el-input__inner{padding-left:15px;padding-right:15px}.custom-theme .el-input-number.is-controls-right .el-input__inner{padding-left:15px;padding-right:50px}.custom-theme .el-input-number.is-controls-right .el-input-number__decrease,.custom-theme .el-input-number.is-controls-right .el-input-number__increase{height:auto;line-height:19px}.custom-theme .el-input-number.is-controls-right .el-input-number__decrease [class*=el-icon],.custom-theme .el-input-number.is-controls-right .el-input-number__increase [class*=el-icon]{-webkit-transform:scale(.8);transform:scale(.8)}.custom-theme .el-input-number.is-controls-right .el-input-number__increase{border-radius:0 4px 0 0;border-bottom:1px solid #d8dce5}.custom-theme .el-input-number.is-controls-right .el-input-number__decrease{right:1px;bottom:1px;top:auto;left:auto;border-right:none;border-left:1px solid #d8dce5;border-radius:0 0 4px 0}.custom-theme .el-input-number.is-controls-right[class*=medium] [class*=decrease],.custom-theme .el-input-number.is-controls-right[class*=medium] [class*=increase]{line-height:17px}.custom-theme .el-input-number.is-controls-right[class*=small] [class*=decrease],.custom-theme .el-input-number.is-controls-right[class*=small] [class*=increase]{line-height:15px}.custom-theme .el-input-number.is-controls-right[class*=mini] [class*=decrease],.custom-theme .el-input-number.is-controls-right[class*=mini] [class*=increase]{line-height:13px}.custom-theme .el-tooltip__popper{position:absolute;border-radius:4px;padding:10px;z-index:2000;font-size:12px;line-height:1.2}.custom-theme .el-tooltip__popper .popper__arrow,.custom-theme .el-tooltip__popper .popper__arrow::after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.custom-theme .el-tooltip__popper .popper__arrow{border-width:6px}.custom-theme .el-tooltip__popper .popper__arrow::after{content:" ";border-width:5px}.custom-theme .el-tooltip__popper[x-placement^=top]{margin-bottom:12px}.custom-theme .el-tooltip__popper[x-placement^=top] .popper__arrow{bottom:-6px;border-top-color:#2d2f33;border-bottom-width:0}.custom-theme .el-tooltip__popper[x-placement^=top] .popper__arrow::after{bottom:1px;margin-left:-5px;border-top-color:#2d2f33;border-bottom-width:0}.custom-theme .el-tooltip__popper[x-placement^=bottom]{margin-top:12px}.custom-theme .el-tooltip__popper[x-placement^=bottom] .popper__arrow{top:-6px;border-top-width:0;border-bottom-color:#2d2f33}.custom-theme .el-tooltip__popper[x-placement^=bottom] .popper__arrow::after{top:1px;margin-left:-5px;border-top-width:0;border-bottom-color:#2d2f33}.custom-theme .el-tooltip__popper[x-placement^=right]{margin-left:12px}.custom-theme .el-tooltip__popper[x-placement^=right] .popper__arrow{left:-6px;border-right-color:#2d2f33;border-left-width:0}.custom-theme .el-tooltip__popper[x-placement^=right] .popper__arrow::after{bottom:-5px;left:1px;border-right-color:#2d2f33;border-left-width:0}.custom-theme .el-tooltip__popper[x-placement^=left]{margin-right:12px}.custom-theme .el-tooltip__popper[x-placement^=left] .popper__arrow{right:-6px;border-right-width:0;border-left-color:#2d2f33}.custom-theme .el-tooltip__popper[x-placement^=left] .popper__arrow::after{right:1px;bottom:-5px;margin-left:-5px;border-right-width:0;border-left-color:#2d2f33}.custom-theme .el-tooltip__popper.is-dark{background:#2d2f33;color:#fff}.custom-theme .el-tooltip__popper.is-light{background:#fff;border:1px solid #2d2f33}.custom-theme .el-tooltip__popper.is-light[x-placement^=top] .popper__arrow{border-top-color:#2d2f33}.custom-theme .el-tooltip__popper.is-light[x-placement^=top] .popper__arrow::after{border-top-color:#fff}.custom-theme .el-tooltip__popper.is-light[x-placement^=bottom] .popper__arrow{border-bottom-color:#2d2f33}.custom-theme .el-tooltip__popper.is-light[x-placement^=bottom] .popper__arrow::after{border-bottom-color:#fff}.custom-theme .el-tooltip__popper.is-light[x-placement^=left] .popper__arrow{border-left-color:#2d2f33}.custom-theme .el-tooltip__popper.is-light[x-placement^=left] .popper__arrow::after{border-left-color:#fff}.custom-theme .el-tooltip__popper.is-light[x-placement^=right] .popper__arrow{border-right-color:#2d2f33}.custom-theme .el-tooltip__popper.is-light[x-placement^=right] .popper__arrow::after{border-right-color:#fff}.custom-theme .el-slider::after,.custom-theme .el-slider::before{display:table;content:""}.custom-theme .el-slider::after{clear:both}.custom-theme .el-slider__runway{width:100%;height:6px;margin:16px 0;background-color:#dfe4ed;border-radius:3px;position:relative;cursor:pointer;vertical-align:middle}.custom-theme .el-slider__runway.show-input{margin-right:160px;width:auto}.custom-theme .el-slider__runway.disabled{cursor:default}.custom-theme .el-slider__runway.disabled .el-slider__bar{background-color:#b4bccc}.custom-theme .el-slider__runway.disabled .el-slider__button{border-color:#b4bccc}.custom-theme .el-slider__runway.disabled .el-slider__button-wrapper.hover,.custom-theme .el-slider__runway.disabled .el-slider__button-wrapper:hover{cursor:not-allowed}.custom-theme .el-slider__runway.disabled .el-slider__button-wrapper.dragging{cursor:not-allowed}.custom-theme .el-slider__runway.disabled .el-slider__button.dragging,.custom-theme .el-slider__runway.disabled .el-slider__button.hover,.custom-theme .el-slider__runway.disabled .el-slider__button:hover{-webkit-transform:scale(1);transform:scale(1)}.custom-theme .el-slider__runway.disabled .el-slider__button.hover,.custom-theme .el-slider__runway.disabled .el-slider__button:hover{cursor:not-allowed}.custom-theme .el-slider__runway.disabled .el-slider__button.dragging{cursor:not-allowed}.custom-theme .el-slider__input{float:right;margin-top:3px}.custom-theme .el-slider__bar{height:6px;background-color:#262729;border-top-left-radius:3px;border-bottom-left-radius:3px;position:absolute}.custom-theme .el-slider__button-wrapper{height:36px;width:36px;position:absolute;z-index:1001;top:-15px;-webkit-transform:translateX(-50%);transform:translateX(-50%);background-color:transparent;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.custom-theme .el-slider__button-wrapper::after{display:inline-block;content:"";height:100%;vertical-align:middle}.custom-theme .el-slider__button-wrapper .el-tooltip{vertical-align:middle;display:inline-block}.custom-theme .el-slider__button-wrapper.hover,.custom-theme .el-slider__button-wrapper:hover{cursor:-webkit-grab;cursor:grab}.custom-theme .el-slider__button-wrapper.dragging{cursor:-webkit-grabbing;cursor:grabbing}.custom-theme .el-slider__button{width:16px;height:16px;border:solid 2px #262729;background-color:#fff;border-radius:50%;-webkit-transition:.2s;transition:.2s;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.custom-theme .el-slider__button.dragging,.custom-theme .el-slider__button.hover,.custom-theme .el-slider__button:hover{-webkit-transform:scale(1.2);transform:scale(1.2)}.custom-theme .el-slider__button.hover,.custom-theme .el-slider__button:hover{cursor:-webkit-grab;cursor:grab}.custom-theme .el-slider__button.dragging{cursor:-webkit-grabbing;cursor:grabbing}.custom-theme .el-slider__stop{position:absolute;height:6px;width:6px;border-radius:100%;background-color:#fff;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.custom-theme .el-slider.is-vertical{position:relative}.custom-theme .el-slider.is-vertical .el-slider__runway{width:4px;height:100%;margin:0 16px}.custom-theme .el-slider.is-vertical .el-slider__bar{width:4px;height:auto;border-radius:0 0 3px 3px}.custom-theme .el-slider.is-vertical .el-slider__button-wrapper{top:auto;left:-15px;-webkit-transform:translateY(50%);transform:translateY(50%)}.custom-theme .el-slider.is-vertical .el-slider__stop{-webkit-transform:translateY(50%);transform:translateY(50%)}.custom-theme .el-slider.is-vertical.el-slider--with-input{padding-bottom:58px}.custom-theme .el-slider.is-vertical.el-slider--with-input .el-slider__input{overflow:visible;float:none;position:absolute;bottom:22px;width:36px;margin-top:15px}.custom-theme .el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input__inner{text-align:center;padding-left:5px;padding-right:5px}.custom-theme .el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__decrease,.custom-theme .el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__increase{top:32px;margin-top:-1px;border:1px solid #d8dce5;line-height:20px;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-transition:border-color .2s cubic-bezier(.645,.045,.355,1);transition:border-color .2s cubic-bezier(.645,.045,.355,1)}.custom-theme .el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__decrease{width:18px;right:18px;border-bottom-left-radius:4px}.custom-theme .el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__increase{width:19px;border-bottom-right-radius:4px}.custom-theme .el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__increase~.el-input .el-input__inner{border-bottom-left-radius:0;border-bottom-right-radius:0}.custom-theme .el-slider.is-vertical.el-slider--with-input .el-slider__input:hover .el-input-number__decrease,.custom-theme .el-slider.is-vertical.el-slider--with-input .el-slider__input:hover .el-input-number__increase{border-color:#b4bccc}.custom-theme .el-slider.is-vertical.el-slider--with-input .el-slider__input:active .el-input-number__decrease,.custom-theme .el-slider.is-vertical.el-slider--with-input .el-slider__input:active .el-input-number__increase{border-color:#262729}.custom-theme .el-loading-parent--relative{position:relative!important}.custom-theme .el-loading-parent--hidden{overflow:hidden!important}.custom-theme .el-loading-mask{position:absolute;z-index:10000;background-color:rgba(255,255,255,.9);margin:0;top:0;right:0;bottom:0;left:0;-webkit-transition:opacity .3s;transition:opacity .3s}.custom-theme .el-loading-mask.is-fullscreen{position:fixed}.custom-theme .el-loading-mask.is-fullscreen .el-loading-spinner{margin-top:-25px}.custom-theme .el-loading-mask.is-fullscreen .el-loading-spinner .circular{height:50px;width:50px}.custom-theme .el-loading-spinner{top:50%;margin-top:-21px;width:100%;text-align:center;position:absolute}.custom-theme .el-loading-spinner .el-loading-text{color:#262729;margin:3px 0;font-size:14px}.custom-theme .el-loading-spinner .circular{height:42px;width:42px;-webkit-animation:loading-rotate 2s linear infinite;animation:loading-rotate 2s linear infinite}.custom-theme .el-loading-spinner .path{-webkit-animation:loading-dash 1.5s ease-in-out infinite;animation:loading-dash 1.5s ease-in-out infinite;stroke-dasharray:90,150;stroke-dashoffset:0;stroke-width:2;stroke:#262729;stroke-linecap:round}.custom-theme .el-loading-spinner i{color:#262729}.custom-theme .el-loading-fade-enter,.custom-theme .el-loading-fade-leave-active{opacity:0}@-webkit-keyframes loading-rotate{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes loading-rotate{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes loading-dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-40px}100%{stroke-dasharray:90,150;stroke-dashoffset:-120px}}@keyframes loading-dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-40px}100%{stroke-dasharray:90,150;stroke-dashoffset:-120px}}.custom-theme .el-row{position:relative;-webkit-box-sizing:border-box;box-sizing:border-box}.custom-theme .el-row::after,.custom-theme .el-row::before{display:table;content:""}.custom-theme .el-row::after{clear:both}.custom-theme .el-row--flex{display:-webkit-box;display:-ms-flexbox;display:flex}.custom-theme .el-row--flex:after,.custom-theme .el-row--flex:before{display:none}.custom-theme .el-row--flex.is-justify-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.custom-theme .el-row--flex.is-justify-end{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.custom-theme .el-row--flex.is-justify-space-between{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.custom-theme .el-row--flex.is-justify-space-around{-ms-flex-pack:distribute;justify-content:space-around}.custom-theme .el-row--flex.is-align-middle{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.custom-theme .el-row--flex.is-align-bottom{-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.custom-theme [class*=el-col-]{float:left;-webkit-box-sizing:border-box;box-sizing:border-box}.custom-theme .el-col-0{display:none}.custom-theme .el-col-1{width:4.16667%}.custom-theme .el-col-offset-1{margin-left:4.16667%}.custom-theme .el-col-pull-1{position:relative;right:4.16667%}.custom-theme .el-col-push-1{position:relative;left:4.16667%}.custom-theme .el-col-2{width:8.33333%}.custom-theme .el-col-offset-2{margin-left:8.33333%}.custom-theme .el-col-pull-2{position:relative;right:8.33333%}.custom-theme .el-col-push-2{position:relative;left:8.33333%}.custom-theme .el-col-3{width:12.5%}.custom-theme .el-col-offset-3{margin-left:12.5%}.custom-theme .el-col-pull-3{position:relative;right:12.5%}.custom-theme .el-col-push-3{position:relative;left:12.5%}.custom-theme .el-col-4{width:16.66667%}.custom-theme .el-col-offset-4{margin-left:16.66667%}.custom-theme .el-col-pull-4{position:relative;right:16.66667%}.custom-theme .el-col-push-4{position:relative;left:16.66667%}.custom-theme .el-col-5{width:20.83333%}.custom-theme .el-col-offset-5{margin-left:20.83333%}.custom-theme .el-col-pull-5{position:relative;right:20.83333%}.custom-theme .el-col-push-5{position:relative;left:20.83333%}.custom-theme .el-col-6{width:25%}.custom-theme .el-col-offset-6{margin-left:25%}.custom-theme .el-col-pull-6{position:relative;right:25%}.custom-theme .el-col-push-6{position:relative;left:25%}.custom-theme .el-col-7{width:29.16667%}.custom-theme .el-col-offset-7{margin-left:29.16667%}.custom-theme .el-col-pull-7{position:relative;right:29.16667%}.custom-theme .el-col-push-7{position:relative;left:29.16667%}.custom-theme .el-col-8{width:33.33333%}.custom-theme .el-col-offset-8{margin-left:33.33333%}.custom-theme .el-col-pull-8{position:relative;right:33.33333%}.custom-theme .el-col-push-8{position:relative;left:33.33333%}.custom-theme .el-col-9{width:37.5%}.custom-theme .el-col-offset-9{margin-left:37.5%}.custom-theme .el-col-pull-9{position:relative;right:37.5%}.custom-theme .el-col-push-9{position:relative;left:37.5%}.custom-theme .el-col-10{width:41.66667%}.custom-theme .el-col-offset-10{margin-left:41.66667%}.custom-theme .el-col-pull-10{position:relative;right:41.66667%}.custom-theme .el-col-push-10{position:relative;left:41.66667%}.custom-theme .el-col-11{width:45.83333%}.custom-theme .el-col-offset-11{margin-left:45.83333%}.custom-theme .el-col-pull-11{position:relative;right:45.83333%}.custom-theme .el-col-push-11{position:relative;left:45.83333%}.custom-theme .el-col-12{width:50%}.custom-theme .el-col-offset-12{margin-left:50%}.custom-theme .el-col-pull-12{position:relative;right:50%}.custom-theme .el-col-push-12{position:relative;left:50%}.custom-theme .el-col-13{width:54.16667%}.custom-theme .el-col-offset-13{margin-left:54.16667%}.custom-theme .el-col-pull-13{position:relative;right:54.16667%}.custom-theme .el-col-push-13{position:relative;left:54.16667%}.custom-theme .el-col-14{width:58.33333%}.custom-theme .el-col-offset-14{margin-left:58.33333%}.custom-theme .el-col-pull-14{position:relative;right:58.33333%}.custom-theme .el-col-push-14{position:relative;left:58.33333%}.custom-theme .el-col-15{width:62.5%}.custom-theme .el-col-offset-15{margin-left:62.5%}.custom-theme .el-col-pull-15{position:relative;right:62.5%}.custom-theme .el-col-push-15{position:relative;left:62.5%}.custom-theme .el-col-16{width:66.66667%}.custom-theme .el-col-offset-16{margin-left:66.66667%}.custom-theme .el-col-pull-16{position:relative;right:66.66667%}.custom-theme .el-col-push-16{position:relative;left:66.66667%}.custom-theme .el-col-17{width:70.83333%}.custom-theme .el-col-offset-17{margin-left:70.83333%}.custom-theme .el-col-pull-17{position:relative;right:70.83333%}.custom-theme .el-col-push-17{position:relative;left:70.83333%}.custom-theme .el-col-18{width:75%}.custom-theme .el-col-offset-18{margin-left:75%}.custom-theme .el-col-pull-18{position:relative;right:75%}.custom-theme .el-col-push-18{position:relative;left:75%}.custom-theme .el-col-19{width:79.16667%}.custom-theme .el-col-offset-19{margin-left:79.16667%}.custom-theme .el-col-pull-19{position:relative;right:79.16667%}.custom-theme .el-col-push-19{position:relative;left:79.16667%}.custom-theme .el-col-20{width:83.33333%}.custom-theme .el-col-offset-20{margin-left:83.33333%}.custom-theme .el-col-pull-20{position:relative;right:83.33333%}.custom-theme .el-col-push-20{position:relative;left:83.33333%}.custom-theme .el-col-21{width:87.5%}.custom-theme .el-col-offset-21{margin-left:87.5%}.custom-theme .el-col-pull-21{position:relative;right:87.5%}.custom-theme .el-col-push-21{position:relative;left:87.5%}.custom-theme .el-col-22{width:91.66667%}.custom-theme .el-col-offset-22{margin-left:91.66667%}.custom-theme .el-col-pull-22{position:relative;right:91.66667%}.custom-theme .el-col-push-22{position:relative;left:91.66667%}.custom-theme .el-col-23{width:95.83333%}.custom-theme .el-col-offset-23{margin-left:95.83333%}.custom-theme .el-col-pull-23{position:relative;right:95.83333%}.custom-theme .el-col-push-23{position:relative;left:95.83333%}.custom-theme .el-col-24{width:100%}.custom-theme .el-col-offset-24{margin-left:100%}.custom-theme .el-col-pull-24{position:relative;right:100%}.custom-theme .el-col-push-24{position:relative;left:100%}@media only screen and (max-width:768px){.custom-theme .el-col-xs-0{display:none}.custom-theme .el-col-xs-1{width:4.16667%}.custom-theme .el-col-xs-offset-1{margin-left:4.16667%}.custom-theme .el-col-xs-pull-1{position:relative;right:4.16667%}.custom-theme .el-col-xs-push-1{position:relative;left:4.16667%}.custom-theme .el-col-xs-2{width:8.33333%}.custom-theme .el-col-xs-offset-2{margin-left:8.33333%}.custom-theme .el-col-xs-pull-2{position:relative;right:8.33333%}.custom-theme .el-col-xs-push-2{position:relative;left:8.33333%}.custom-theme .el-col-xs-3{width:12.5%}.custom-theme .el-col-xs-offset-3{margin-left:12.5%}.custom-theme .el-col-xs-pull-3{position:relative;right:12.5%}.custom-theme .el-col-xs-push-3{position:relative;left:12.5%}.custom-theme .el-col-xs-4{width:16.66667%}.custom-theme .el-col-xs-offset-4{margin-left:16.66667%}.custom-theme .el-col-xs-pull-4{position:relative;right:16.66667%}.custom-theme .el-col-xs-push-4{position:relative;left:16.66667%}.custom-theme .el-col-xs-5{width:20.83333%}.custom-theme .el-col-xs-offset-5{margin-left:20.83333%}.custom-theme .el-col-xs-pull-5{position:relative;right:20.83333%}.custom-theme .el-col-xs-push-5{position:relative;left:20.83333%}.custom-theme .el-col-xs-6{width:25%}.custom-theme .el-col-xs-offset-6{margin-left:25%}.custom-theme .el-col-xs-pull-6{position:relative;right:25%}.custom-theme .el-col-xs-push-6{position:relative;left:25%}.custom-theme .el-col-xs-7{width:29.16667%}.custom-theme .el-col-xs-offset-7{margin-left:29.16667%}.custom-theme .el-col-xs-pull-7{position:relative;right:29.16667%}.custom-theme .el-col-xs-push-7{position:relative;left:29.16667%}.custom-theme .el-col-xs-8{width:33.33333%}.custom-theme .el-col-xs-offset-8{margin-left:33.33333%}.custom-theme .el-col-xs-pull-8{position:relative;right:33.33333%}.custom-theme .el-col-xs-push-8{position:relative;left:33.33333%}.custom-theme .el-col-xs-9{width:37.5%}.custom-theme .el-col-xs-offset-9{margin-left:37.5%}.custom-theme .el-col-xs-pull-9{position:relative;right:37.5%}.custom-theme .el-col-xs-push-9{position:relative;left:37.5%}.custom-theme .el-col-xs-10{width:41.66667%}.custom-theme .el-col-xs-offset-10{margin-left:41.66667%}.custom-theme .el-col-xs-pull-10{position:relative;right:41.66667%}.custom-theme .el-col-xs-push-10{position:relative;left:41.66667%}.custom-theme .el-col-xs-11{width:45.83333%}.custom-theme .el-col-xs-offset-11{margin-left:45.83333%}.custom-theme .el-col-xs-pull-11{position:relative;right:45.83333%}.custom-theme .el-col-xs-push-11{position:relative;left:45.83333%}.custom-theme .el-col-xs-12{width:50%}.custom-theme .el-col-xs-offset-12{margin-left:50%}.custom-theme .el-col-xs-pull-12{position:relative;right:50%}.custom-theme .el-col-xs-push-12{position:relative;left:50%}.custom-theme .el-col-xs-13{width:54.16667%}.custom-theme .el-col-xs-offset-13{margin-left:54.16667%}.custom-theme .el-col-xs-pull-13{position:relative;right:54.16667%}.custom-theme .el-col-xs-push-13{position:relative;left:54.16667%}.custom-theme .el-col-xs-14{width:58.33333%}.custom-theme .el-col-xs-offset-14{margin-left:58.33333%}.custom-theme .el-col-xs-pull-14{position:relative;right:58.33333%}.custom-theme .el-col-xs-push-14{position:relative;left:58.33333%}.custom-theme .el-col-xs-15{width:62.5%}.custom-theme .el-col-xs-offset-15{margin-left:62.5%}.custom-theme .el-col-xs-pull-15{position:relative;right:62.5%}.custom-theme .el-col-xs-push-15{position:relative;left:62.5%}.custom-theme .el-col-xs-16{width:66.66667%}.custom-theme .el-col-xs-offset-16{margin-left:66.66667%}.custom-theme .el-col-xs-pull-16{position:relative;right:66.66667%}.custom-theme .el-col-xs-push-16{position:relative;left:66.66667%}.custom-theme .el-col-xs-17{width:70.83333%}.custom-theme .el-col-xs-offset-17{margin-left:70.83333%}.custom-theme .el-col-xs-pull-17{position:relative;right:70.83333%}.custom-theme .el-col-xs-push-17{position:relative;left:70.83333%}.custom-theme .el-col-xs-18{width:75%}.custom-theme .el-col-xs-offset-18{margin-left:75%}.custom-theme .el-col-xs-pull-18{position:relative;right:75%}.custom-theme .el-col-xs-push-18{position:relative;left:75%}.custom-theme .el-col-xs-19{width:79.16667%}.custom-theme .el-col-xs-offset-19{margin-left:79.16667%}.custom-theme .el-col-xs-pull-19{position:relative;right:79.16667%}.custom-theme .el-col-xs-push-19{position:relative;left:79.16667%}.custom-theme .el-col-xs-20{width:83.33333%}.custom-theme .el-col-xs-offset-20{margin-left:83.33333%}.custom-theme .el-col-xs-pull-20{position:relative;right:83.33333%}.custom-theme .el-col-xs-push-20{position:relative;left:83.33333%}.custom-theme .el-col-xs-21{width:87.5%}.custom-theme .el-col-xs-offset-21{margin-left:87.5%}.custom-theme .el-col-xs-pull-21{position:relative;right:87.5%}.custom-theme .el-col-xs-push-21{position:relative;left:87.5%}.custom-theme .el-col-xs-22{width:91.66667%}.custom-theme .el-col-xs-offset-22{margin-left:91.66667%}.custom-theme .el-col-xs-pull-22{position:relative;right:91.66667%}.custom-theme .el-col-xs-push-22{position:relative;left:91.66667%}.custom-theme .el-col-xs-23{width:95.83333%}.custom-theme .el-col-xs-offset-23{margin-left:95.83333%}.custom-theme .el-col-xs-pull-23{position:relative;right:95.83333%}.custom-theme .el-col-xs-push-23{position:relative;left:95.83333%}.custom-theme .el-col-xs-24{width:100%}.custom-theme .el-col-xs-offset-24{margin-left:100%}.custom-theme .el-col-xs-pull-24{position:relative;right:100%}.custom-theme .el-col-xs-push-24{position:relative;left:100%}}@media only screen and (min-width:768px){.custom-theme .el-col-sm-0{display:none}.custom-theme .el-col-sm-1{width:4.16667%}.custom-theme .el-col-sm-offset-1{margin-left:4.16667%}.custom-theme .el-col-sm-pull-1{position:relative;right:4.16667%}.custom-theme .el-col-sm-push-1{position:relative;left:4.16667%}.custom-theme .el-col-sm-2{width:8.33333%}.custom-theme .el-col-sm-offset-2{margin-left:8.33333%}.custom-theme .el-col-sm-pull-2{position:relative;right:8.33333%}.custom-theme .el-col-sm-push-2{position:relative;left:8.33333%}.custom-theme .el-col-sm-3{width:12.5%}.custom-theme .el-col-sm-offset-3{margin-left:12.5%}.custom-theme .el-col-sm-pull-3{position:relative;right:12.5%}.custom-theme .el-col-sm-push-3{position:relative;left:12.5%}.custom-theme .el-col-sm-4{width:16.66667%}.custom-theme .el-col-sm-offset-4{margin-left:16.66667%}.custom-theme .el-col-sm-pull-4{position:relative;right:16.66667%}.custom-theme .el-col-sm-push-4{position:relative;left:16.66667%}.custom-theme .el-col-sm-5{width:20.83333%}.custom-theme .el-col-sm-offset-5{margin-left:20.83333%}.custom-theme .el-col-sm-pull-5{position:relative;right:20.83333%}.custom-theme .el-col-sm-push-5{position:relative;left:20.83333%}.custom-theme .el-col-sm-6{width:25%}.custom-theme .el-col-sm-offset-6{margin-left:25%}.custom-theme .el-col-sm-pull-6{position:relative;right:25%}.custom-theme .el-col-sm-push-6{position:relative;left:25%}.custom-theme .el-col-sm-7{width:29.16667%}.custom-theme .el-col-sm-offset-7{margin-left:29.16667%}.custom-theme .el-col-sm-pull-7{position:relative;right:29.16667%}.custom-theme .el-col-sm-push-7{position:relative;left:29.16667%}.custom-theme .el-col-sm-8{width:33.33333%}.custom-theme .el-col-sm-offset-8{margin-left:33.33333%}.custom-theme .el-col-sm-pull-8{position:relative;right:33.33333%}.custom-theme .el-col-sm-push-8{position:relative;left:33.33333%}.custom-theme .el-col-sm-9{width:37.5%}.custom-theme .el-col-sm-offset-9{margin-left:37.5%}.custom-theme .el-col-sm-pull-9{position:relative;right:37.5%}.custom-theme .el-col-sm-push-9{position:relative;left:37.5%}.custom-theme .el-col-sm-10{width:41.66667%}.custom-theme .el-col-sm-offset-10{margin-left:41.66667%}.custom-theme .el-col-sm-pull-10{position:relative;right:41.66667%}.custom-theme .el-col-sm-push-10{position:relative;left:41.66667%}.custom-theme .el-col-sm-11{width:45.83333%}.custom-theme .el-col-sm-offset-11{margin-left:45.83333%}.custom-theme .el-col-sm-pull-11{position:relative;right:45.83333%}.custom-theme .el-col-sm-push-11{position:relative;left:45.83333%}.custom-theme .el-col-sm-12{width:50%}.custom-theme .el-col-sm-offset-12{margin-left:50%}.custom-theme .el-col-sm-pull-12{position:relative;right:50%}.custom-theme .el-col-sm-push-12{position:relative;left:50%}.custom-theme .el-col-sm-13{width:54.16667%}.custom-theme .el-col-sm-offset-13{margin-left:54.16667%}.custom-theme .el-col-sm-pull-13{position:relative;right:54.16667%}.custom-theme .el-col-sm-push-13{position:relative;left:54.16667%}.custom-theme .el-col-sm-14{width:58.33333%}.custom-theme .el-col-sm-offset-14{margin-left:58.33333%}.custom-theme .el-col-sm-pull-14{position:relative;right:58.33333%}.custom-theme .el-col-sm-push-14{position:relative;left:58.33333%}.custom-theme .el-col-sm-15{width:62.5%}.custom-theme .el-col-sm-offset-15{margin-left:62.5%}.custom-theme .el-col-sm-pull-15{position:relative;right:62.5%}.custom-theme .el-col-sm-push-15{position:relative;left:62.5%}.custom-theme .el-col-sm-16{width:66.66667%}.custom-theme .el-col-sm-offset-16{margin-left:66.66667%}.custom-theme .el-col-sm-pull-16{position:relative;right:66.66667%}.custom-theme .el-col-sm-push-16{position:relative;left:66.66667%}.custom-theme .el-col-sm-17{width:70.83333%}.custom-theme .el-col-sm-offset-17{margin-left:70.83333%}.custom-theme .el-col-sm-pull-17{position:relative;right:70.83333%}.custom-theme .el-col-sm-push-17{position:relative;left:70.83333%}.custom-theme .el-col-sm-18{width:75%}.custom-theme .el-col-sm-offset-18{margin-left:75%}.custom-theme .el-col-sm-pull-18{position:relative;right:75%}.custom-theme .el-col-sm-push-18{position:relative;left:75%}.custom-theme .el-col-sm-19{width:79.16667%}.custom-theme .el-col-sm-offset-19{margin-left:79.16667%}.custom-theme .el-col-sm-pull-19{position:relative;right:79.16667%}.custom-theme .el-col-sm-push-19{position:relative;left:79.16667%}.custom-theme .el-col-sm-20{width:83.33333%}.custom-theme .el-col-sm-offset-20{margin-left:83.33333%}.custom-theme .el-col-sm-pull-20{position:relative;right:83.33333%}.custom-theme .el-col-sm-push-20{position:relative;left:83.33333%}.custom-theme .el-col-sm-21{width:87.5%}.custom-theme .el-col-sm-offset-21{margin-left:87.5%}.custom-theme .el-col-sm-pull-21{position:relative;right:87.5%}.custom-theme .el-col-sm-push-21{position:relative;left:87.5%}.custom-theme .el-col-sm-22{width:91.66667%}.custom-theme .el-col-sm-offset-22{margin-left:91.66667%}.custom-theme .el-col-sm-pull-22{position:relative;right:91.66667%}.custom-theme .el-col-sm-push-22{position:relative;left:91.66667%}.custom-theme .el-col-sm-23{width:95.83333%}.custom-theme .el-col-sm-offset-23{margin-left:95.83333%}.custom-theme .el-col-sm-pull-23{position:relative;right:95.83333%}.custom-theme .el-col-sm-push-23{position:relative;left:95.83333%}.custom-theme .el-col-sm-24{width:100%}.custom-theme .el-col-sm-offset-24{margin-left:100%}.custom-theme .el-col-sm-pull-24{position:relative;right:100%}.custom-theme .el-col-sm-push-24{position:relative;left:100%}}@media only screen and (min-width:992px){.custom-theme .el-col-md-0{display:none}.custom-theme .el-col-md-1{width:4.16667%}.custom-theme .el-col-md-offset-1{margin-left:4.16667%}.custom-theme .el-col-md-pull-1{position:relative;right:4.16667%}.custom-theme .el-col-md-push-1{position:relative;left:4.16667%}.custom-theme .el-col-md-2{width:8.33333%}.custom-theme .el-col-md-offset-2{margin-left:8.33333%}.custom-theme .el-col-md-pull-2{position:relative;right:8.33333%}.custom-theme .el-col-md-push-2{position:relative;left:8.33333%}.custom-theme .el-col-md-3{width:12.5%}.custom-theme .el-col-md-offset-3{margin-left:12.5%}.custom-theme .el-col-md-pull-3{position:relative;right:12.5%}.custom-theme .el-col-md-push-3{position:relative;left:12.5%}.custom-theme .el-col-md-4{width:16.66667%}.custom-theme .el-col-md-offset-4{margin-left:16.66667%}.custom-theme .el-col-md-pull-4{position:relative;right:16.66667%}.custom-theme .el-col-md-push-4{position:relative;left:16.66667%}.custom-theme .el-col-md-5{width:20.83333%}.custom-theme .el-col-md-offset-5{margin-left:20.83333%}.custom-theme .el-col-md-pull-5{position:relative;right:20.83333%}.custom-theme .el-col-md-push-5{position:relative;left:20.83333%}.custom-theme .el-col-md-6{width:25%}.custom-theme .el-col-md-offset-6{margin-left:25%}.custom-theme .el-col-md-pull-6{position:relative;right:25%}.custom-theme .el-col-md-push-6{position:relative;left:25%}.custom-theme .el-col-md-7{width:29.16667%}.custom-theme .el-col-md-offset-7{margin-left:29.16667%}.custom-theme .el-col-md-pull-7{position:relative;right:29.16667%}.custom-theme .el-col-md-push-7{position:relative;left:29.16667%}.custom-theme .el-col-md-8{width:33.33333%}.custom-theme .el-col-md-offset-8{margin-left:33.33333%}.custom-theme .el-col-md-pull-8{position:relative;right:33.33333%}.custom-theme .el-col-md-push-8{position:relative;left:33.33333%}.custom-theme .el-col-md-9{width:37.5%}.custom-theme .el-col-md-offset-9{margin-left:37.5%}.custom-theme .el-col-md-pull-9{position:relative;right:37.5%}.custom-theme .el-col-md-push-9{position:relative;left:37.5%}.custom-theme .el-col-md-10{width:41.66667%}.custom-theme .el-col-md-offset-10{margin-left:41.66667%}.custom-theme .el-col-md-pull-10{position:relative;right:41.66667%}.custom-theme .el-col-md-push-10{position:relative;left:41.66667%}.custom-theme .el-col-md-11{width:45.83333%}.custom-theme .el-col-md-offset-11{margin-left:45.83333%}.custom-theme .el-col-md-pull-11{position:relative;right:45.83333%}.custom-theme .el-col-md-push-11{position:relative;left:45.83333%}.custom-theme .el-col-md-12{width:50%}.custom-theme .el-col-md-offset-12{margin-left:50%}.custom-theme .el-col-md-pull-12{position:relative;right:50%}.custom-theme .el-col-md-push-12{position:relative;left:50%}.custom-theme .el-col-md-13{width:54.16667%}.custom-theme .el-col-md-offset-13{margin-left:54.16667%}.custom-theme .el-col-md-pull-13{position:relative;right:54.16667%}.custom-theme .el-col-md-push-13{position:relative;left:54.16667%}.custom-theme .el-col-md-14{width:58.33333%}.custom-theme .el-col-md-offset-14{margin-left:58.33333%}.custom-theme .el-col-md-pull-14{position:relative;right:58.33333%}.custom-theme .el-col-md-push-14{position:relative;left:58.33333%}.custom-theme .el-col-md-15{width:62.5%}.custom-theme .el-col-md-offset-15{margin-left:62.5%}.custom-theme .el-col-md-pull-15{position:relative;right:62.5%}.custom-theme .el-col-md-push-15{position:relative;left:62.5%}.custom-theme .el-col-md-16{width:66.66667%}.custom-theme .el-col-md-offset-16{margin-left:66.66667%}.custom-theme .el-col-md-pull-16{position:relative;right:66.66667%}.custom-theme .el-col-md-push-16{position:relative;left:66.66667%}.custom-theme .el-col-md-17{width:70.83333%}.custom-theme .el-col-md-offset-17{margin-left:70.83333%}.custom-theme .el-col-md-pull-17{position:relative;right:70.83333%}.custom-theme .el-col-md-push-17{position:relative;left:70.83333%}.custom-theme .el-col-md-18{width:75%}.custom-theme .el-col-md-offset-18{margin-left:75%}.custom-theme .el-col-md-pull-18{position:relative;right:75%}.custom-theme .el-col-md-push-18{position:relative;left:75%}.custom-theme .el-col-md-19{width:79.16667%}.custom-theme .el-col-md-offset-19{margin-left:79.16667%}.custom-theme .el-col-md-pull-19{position:relative;right:79.16667%}.custom-theme .el-col-md-push-19{position:relative;left:79.16667%}.custom-theme .el-col-md-20{width:83.33333%}.custom-theme .el-col-md-offset-20{margin-left:83.33333%}.custom-theme .el-col-md-pull-20{position:relative;right:83.33333%}.custom-theme .el-col-md-push-20{position:relative;left:83.33333%}.custom-theme .el-col-md-21{width:87.5%}.custom-theme .el-col-md-offset-21{margin-left:87.5%}.custom-theme .el-col-md-pull-21{position:relative;right:87.5%}.custom-theme .el-col-md-push-21{position:relative;left:87.5%}.custom-theme .el-col-md-22{width:91.66667%}.custom-theme .el-col-md-offset-22{margin-left:91.66667%}.custom-theme .el-col-md-pull-22{position:relative;right:91.66667%}.custom-theme .el-col-md-push-22{position:relative;left:91.66667%}.custom-theme .el-col-md-23{width:95.83333%}.custom-theme .el-col-md-offset-23{margin-left:95.83333%}.custom-theme .el-col-md-pull-23{position:relative;right:95.83333%}.custom-theme .el-col-md-push-23{position:relative;left:95.83333%}.custom-theme .el-col-md-24{width:100%}.custom-theme .el-col-md-offset-24{margin-left:100%}.custom-theme .el-col-md-pull-24{position:relative;right:100%}.custom-theme .el-col-md-push-24{position:relative;left:100%}}@media only screen and (min-width:1200px){.custom-theme .el-col-lg-0{display:none}.custom-theme .el-col-lg-1{width:4.16667%}.custom-theme .el-col-lg-offset-1{margin-left:4.16667%}.custom-theme .el-col-lg-pull-1{position:relative;right:4.16667%}.custom-theme .el-col-lg-push-1{position:relative;left:4.16667%}.custom-theme .el-col-lg-2{width:8.33333%}.custom-theme .el-col-lg-offset-2{margin-left:8.33333%}.custom-theme .el-col-lg-pull-2{position:relative;right:8.33333%}.custom-theme .el-col-lg-push-2{position:relative;left:8.33333%}.custom-theme .el-col-lg-3{width:12.5%}.custom-theme .el-col-lg-offset-3{margin-left:12.5%}.custom-theme .el-col-lg-pull-3{position:relative;right:12.5%}.custom-theme .el-col-lg-push-3{position:relative;left:12.5%}.custom-theme .el-col-lg-4{width:16.66667%}.custom-theme .el-col-lg-offset-4{margin-left:16.66667%}.custom-theme .el-col-lg-pull-4{position:relative;right:16.66667%}.custom-theme .el-col-lg-push-4{position:relative;left:16.66667%}.custom-theme .el-col-lg-5{width:20.83333%}.custom-theme .el-col-lg-offset-5{margin-left:20.83333%}.custom-theme .el-col-lg-pull-5{position:relative;right:20.83333%}.custom-theme .el-col-lg-push-5{position:relative;left:20.83333%}.custom-theme .el-col-lg-6{width:25%}.custom-theme .el-col-lg-offset-6{margin-left:25%}.custom-theme .el-col-lg-pull-6{position:relative;right:25%}.custom-theme .el-col-lg-push-6{position:relative;left:25%}.custom-theme .el-col-lg-7{width:29.16667%}.custom-theme .el-col-lg-offset-7{margin-left:29.16667%}.custom-theme .el-col-lg-pull-7{position:relative;right:29.16667%}.custom-theme .el-col-lg-push-7{position:relative;left:29.16667%}.custom-theme .el-col-lg-8{width:33.33333%}.custom-theme .el-col-lg-offset-8{margin-left:33.33333%}.custom-theme .el-col-lg-pull-8{position:relative;right:33.33333%}.custom-theme .el-col-lg-push-8{position:relative;left:33.33333%}.custom-theme .el-col-lg-9{width:37.5%}.custom-theme .el-col-lg-offset-9{margin-left:37.5%}.custom-theme .el-col-lg-pull-9{position:relative;right:37.5%}.custom-theme .el-col-lg-push-9{position:relative;left:37.5%}.custom-theme .el-col-lg-10{width:41.66667%}.custom-theme .el-col-lg-offset-10{margin-left:41.66667%}.custom-theme .el-col-lg-pull-10{position:relative;right:41.66667%}.custom-theme .el-col-lg-push-10{position:relative;left:41.66667%}.custom-theme .el-col-lg-11{width:45.83333%}.custom-theme .el-col-lg-offset-11{margin-left:45.83333%}.custom-theme .el-col-lg-pull-11{position:relative;right:45.83333%}.custom-theme .el-col-lg-push-11{position:relative;left:45.83333%}.custom-theme .el-col-lg-12{width:50%}.custom-theme .el-col-lg-offset-12{margin-left:50%}.custom-theme .el-col-lg-pull-12{position:relative;right:50%}.custom-theme .el-col-lg-push-12{position:relative;left:50%}.custom-theme .el-col-lg-13{width:54.16667%}.custom-theme .el-col-lg-offset-13{margin-left:54.16667%}.custom-theme .el-col-lg-pull-13{position:relative;right:54.16667%}.custom-theme .el-col-lg-push-13{position:relative;left:54.16667%}.custom-theme .el-col-lg-14{width:58.33333%}.custom-theme .el-col-lg-offset-14{margin-left:58.33333%}.custom-theme .el-col-lg-pull-14{position:relative;right:58.33333%}.custom-theme .el-col-lg-push-14{position:relative;left:58.33333%}.custom-theme .el-col-lg-15{width:62.5%}.custom-theme .el-col-lg-offset-15{margin-left:62.5%}.custom-theme .el-col-lg-pull-15{position:relative;right:62.5%}.custom-theme .el-col-lg-push-15{position:relative;left:62.5%}.custom-theme .el-col-lg-16{width:66.66667%}.custom-theme .el-col-lg-offset-16{margin-left:66.66667%}.custom-theme .el-col-lg-pull-16{position:relative;right:66.66667%}.custom-theme .el-col-lg-push-16{position:relative;left:66.66667%}.custom-theme .el-col-lg-17{width:70.83333%}.custom-theme .el-col-lg-offset-17{margin-left:70.83333%}.custom-theme .el-col-lg-pull-17{position:relative;right:70.83333%}.custom-theme .el-col-lg-push-17{position:relative;left:70.83333%}.custom-theme .el-col-lg-18{width:75%}.custom-theme .el-col-lg-offset-18{margin-left:75%}.custom-theme .el-col-lg-pull-18{position:relative;right:75%}.custom-theme .el-col-lg-push-18{position:relative;left:75%}.custom-theme .el-col-lg-19{width:79.16667%}.custom-theme .el-col-lg-offset-19{margin-left:79.16667%}.custom-theme .el-col-lg-pull-19{position:relative;right:79.16667%}.custom-theme .el-col-lg-push-19{position:relative;left:79.16667%}.custom-theme .el-col-lg-20{width:83.33333%}.custom-theme .el-col-lg-offset-20{margin-left:83.33333%}.custom-theme .el-col-lg-pull-20{position:relative;right:83.33333%}.custom-theme .el-col-lg-push-20{position:relative;left:83.33333%}.custom-theme .el-col-lg-21{width:87.5%}.custom-theme .el-col-lg-offset-21{margin-left:87.5%}.custom-theme .el-col-lg-pull-21{position:relative;right:87.5%}.custom-theme .el-col-lg-push-21{position:relative;left:87.5%}.custom-theme .el-col-lg-22{width:91.66667%}.custom-theme .el-col-lg-offset-22{margin-left:91.66667%}.custom-theme .el-col-lg-pull-22{position:relative;right:91.66667%}.custom-theme .el-col-lg-push-22{position:relative;left:91.66667%}.custom-theme .el-col-lg-23{width:95.83333%}.custom-theme .el-col-lg-offset-23{margin-left:95.83333%}.custom-theme .el-col-lg-pull-23{position:relative;right:95.83333%}.custom-theme .el-col-lg-push-23{position:relative;left:95.83333%}.custom-theme .el-col-lg-24{width:100%}.custom-theme .el-col-lg-offset-24{margin-left:100%}.custom-theme .el-col-lg-pull-24{position:relative;right:100%}.custom-theme .el-col-lg-push-24{position:relative;left:100%}}@media only screen and (min-width:1920px){.custom-theme .el-col-xl-0{display:none}.custom-theme .el-col-xl-1{width:4.16667%}.custom-theme .el-col-xl-offset-1{margin-left:4.16667%}.custom-theme .el-col-xl-pull-1{position:relative;right:4.16667%}.custom-theme .el-col-xl-push-1{position:relative;left:4.16667%}.custom-theme .el-col-xl-2{width:8.33333%}.custom-theme .el-col-xl-offset-2{margin-left:8.33333%}.custom-theme .el-col-xl-pull-2{position:relative;right:8.33333%}.custom-theme .el-col-xl-push-2{position:relative;left:8.33333%}.custom-theme .el-col-xl-3{width:12.5%}.custom-theme .el-col-xl-offset-3{margin-left:12.5%}.custom-theme .el-col-xl-pull-3{position:relative;right:12.5%}.custom-theme .el-col-xl-push-3{position:relative;left:12.5%}.custom-theme .el-col-xl-4{width:16.66667%}.custom-theme .el-col-xl-offset-4{margin-left:16.66667%}.custom-theme .el-col-xl-pull-4{position:relative;right:16.66667%}.custom-theme .el-col-xl-push-4{position:relative;left:16.66667%}.custom-theme .el-col-xl-5{width:20.83333%}.custom-theme .el-col-xl-offset-5{margin-left:20.83333%}.custom-theme .el-col-xl-pull-5{position:relative;right:20.83333%}.custom-theme .el-col-xl-push-5{position:relative;left:20.83333%}.custom-theme .el-col-xl-6{width:25%}.custom-theme .el-col-xl-offset-6{margin-left:25%}.custom-theme .el-col-xl-pull-6{position:relative;right:25%}.custom-theme .el-col-xl-push-6{position:relative;left:25%}.custom-theme .el-col-xl-7{width:29.16667%}.custom-theme .el-col-xl-offset-7{margin-left:29.16667%}.custom-theme .el-col-xl-pull-7{position:relative;right:29.16667%}.custom-theme .el-col-xl-push-7{position:relative;left:29.16667%}.custom-theme .el-col-xl-8{width:33.33333%}.custom-theme .el-col-xl-offset-8{margin-left:33.33333%}.custom-theme .el-col-xl-pull-8{position:relative;right:33.33333%}.custom-theme .el-col-xl-push-8{position:relative;left:33.33333%}.custom-theme .el-col-xl-9{width:37.5%}.custom-theme .el-col-xl-offset-9{margin-left:37.5%}.custom-theme .el-col-xl-pull-9{position:relative;right:37.5%}.custom-theme .el-col-xl-push-9{position:relative;left:37.5%}.custom-theme .el-col-xl-10{width:41.66667%}.custom-theme .el-col-xl-offset-10{margin-left:41.66667%}.custom-theme .el-col-xl-pull-10{position:relative;right:41.66667%}.custom-theme .el-col-xl-push-10{position:relative;left:41.66667%}.custom-theme .el-col-xl-11{width:45.83333%}.custom-theme .el-col-xl-offset-11{margin-left:45.83333%}.custom-theme .el-col-xl-pull-11{position:relative;right:45.83333%}.custom-theme .el-col-xl-push-11{position:relative;left:45.83333%}.custom-theme .el-col-xl-12{width:50%}.custom-theme .el-col-xl-offset-12{margin-left:50%}.custom-theme .el-col-xl-pull-12{position:relative;right:50%}.custom-theme .el-col-xl-push-12{position:relative;left:50%}.custom-theme .el-col-xl-13{width:54.16667%}.custom-theme .el-col-xl-offset-13{margin-left:54.16667%}.custom-theme .el-col-xl-pull-13{position:relative;right:54.16667%}.custom-theme .el-col-xl-push-13{position:relative;left:54.16667%}.custom-theme .el-col-xl-14{width:58.33333%}.custom-theme .el-col-xl-offset-14{margin-left:58.33333%}.custom-theme .el-col-xl-pull-14{position:relative;right:58.33333%}.custom-theme .el-col-xl-push-14{position:relative;left:58.33333%}.custom-theme .el-col-xl-15{width:62.5%}.custom-theme .el-col-xl-offset-15{margin-left:62.5%}.custom-theme .el-col-xl-pull-15{position:relative;right:62.5%}.custom-theme .el-col-xl-push-15{position:relative;left:62.5%}.custom-theme .el-col-xl-16{width:66.66667%}.custom-theme .el-col-xl-offset-16{margin-left:66.66667%}.custom-theme .el-col-xl-pull-16{position:relative;right:66.66667%}.custom-theme .el-col-xl-push-16{position:relative;left:66.66667%}.custom-theme .el-col-xl-17{width:70.83333%}.custom-theme .el-col-xl-offset-17{margin-left:70.83333%}.custom-theme .el-col-xl-pull-17{position:relative;right:70.83333%}.custom-theme .el-col-xl-push-17{position:relative;left:70.83333%}.custom-theme .el-col-xl-18{width:75%}.custom-theme .el-col-xl-offset-18{margin-left:75%}.custom-theme .el-col-xl-pull-18{position:relative;right:75%}.custom-theme .el-col-xl-push-18{position:relative;left:75%}.custom-theme .el-col-xl-19{width:79.16667%}.custom-theme .el-col-xl-offset-19{margin-left:79.16667%}.custom-theme .el-col-xl-pull-19{position:relative;right:79.16667%}.custom-theme .el-col-xl-push-19{position:relative;left:79.16667%}.custom-theme .el-col-xl-20{width:83.33333%}.custom-theme .el-col-xl-offset-20{margin-left:83.33333%}.custom-theme .el-col-xl-pull-20{position:relative;right:83.33333%}.custom-theme .el-col-xl-push-20{position:relative;left:83.33333%}.custom-theme .el-col-xl-21{width:87.5%}.custom-theme .el-col-xl-offset-21{margin-left:87.5%}.custom-theme .el-col-xl-pull-21{position:relative;right:87.5%}.custom-theme .el-col-xl-push-21{position:relative;left:87.5%}.custom-theme .el-col-xl-22{width:91.66667%}.custom-theme .el-col-xl-offset-22{margin-left:91.66667%}.custom-theme .el-col-xl-pull-22{position:relative;right:91.66667%}.custom-theme .el-col-xl-push-22{position:relative;left:91.66667%}.custom-theme .el-col-xl-23{width:95.83333%}.custom-theme .el-col-xl-offset-23{margin-left:95.83333%}.custom-theme .el-col-xl-pull-23{position:relative;right:95.83333%}.custom-theme .el-col-xl-push-23{position:relative;left:95.83333%}.custom-theme .el-col-xl-24{width:100%}.custom-theme .el-col-xl-offset-24{margin-left:100%}.custom-theme .el-col-xl-pull-24{position:relative;right:100%}.custom-theme .el-col-xl-push-24{position:relative;left:100%}}.custom-theme .el-progress{position:relative;line-height:1}.custom-theme .el-progress__text{font-size:14px;color:#5a5e66;display:inline-block;vertical-align:middle;margin-left:10px;line-height:1}.custom-theme .el-progress__text i{vertical-align:middle;display:block}.custom-theme .el-progress--circle{display:inline-block}.custom-theme .el-progress--circle .el-progress__text{position:absolute;top:50%;left:0;width:100%;text-align:center;margin:0;-webkit-transform:translate(0,-50%);transform:translate(0,-50%)}.custom-theme .el-progress--circle .el-progress__text i{vertical-align:middle;display:inline-block}.custom-theme .el-progress--without-text .el-progress__text{display:none}.custom-theme .el-progress--without-text .el-progress-bar{padding-right:0;margin-right:0;display:block}.custom-theme .el-progress--text-inside .el-progress-bar{padding-right:0;margin-right:0}.custom-theme .el-progress.is-success .el-progress-bar__inner{background-color:#409167}.custom-theme .el-progress.is-success .el-progress__text{color:#409167}.custom-theme .el-progress.is-exception .el-progress-bar__inner{background-color:#b3450e}.custom-theme .el-progress.is-exception .el-progress__text{color:#b3450e}.custom-theme .el-progress-bar{padding-right:50px;display:inline-block;vertical-align:middle;width:100%;margin-right:-55px;-webkit-box-sizing:border-box;box-sizing:border-box}.custom-theme .el-progress-bar__outer{height:6px;border-radius:100px;background-color:#e6ebf5;overflow:hidden;position:relative;vertical-align:middle}.custom-theme .el-progress-bar__inner{position:absolute;left:0;top:0;height:100%;background-color:#262729;text-align:right;border-radius:100px;line-height:1;white-space:nowrap}.custom-theme .el-progress-bar__inner::after{display:inline-block;content:"";height:100%;vertical-align:middle}.custom-theme .el-progress-bar__innerText{display:inline-block;vertical-align:middle;color:#fff;font-size:12px;margin:0 5px}@-webkit-keyframes progress{0%{background-position:0 0}100%{background-position:32px 0}}@keyframes progress{0%{background-position:0 0}100%{background-position:32px 0}}.custom-theme .el-upload{display:inline-block;text-align:center;cursor:pointer}.custom-theme .el-upload__input{display:none}.custom-theme .el-upload__tip{font-size:12px;color:#5a5e66;margin-top:7px}.custom-theme .el-upload iframe{position:absolute;z-index:-1;top:0;left:0;opacity:0}.custom-theme .el-upload--picture-card{background-color:#fbfdff;border:1px dashed #c0ccda;border-radius:6px;-webkit-box-sizing:border-box;box-sizing:border-box;width:148px;height:148px;cursor:pointer;line-height:146px;vertical-align:top}.custom-theme .el-upload--picture-card i{font-size:28px;color:#8c939d}.custom-theme .el-upload--picture-card:hover{border-color:#262729;color:#262729}.custom-theme .el-upload-dragger{background-color:#fff;border:1px dashed #d9d9d9;border-radius:6px;-webkit-box-sizing:border-box;box-sizing:border-box;width:360px;height:180px;text-align:center;cursor:pointer;position:relative;overflow:hidden}.custom-theme .el-upload-dragger .el-icon-upload{font-size:67px;color:#b4bccc;margin:40px 0 16px;line-height:50px}.custom-theme .el-upload-dragger+.el-upload__tip{text-align:center}.custom-theme .el-upload-dragger~.el-upload__files{border-top:1px solid #d8dce5;margin-top:7px;padding-top:5px}.custom-theme .el-upload-dragger .el-upload__text{color:#5a5e66;font-size:14px;text-align:center}.custom-theme .el-upload-dragger .el-upload__text em{color:#262729;font-style:normal}.custom-theme .el-upload-dragger:hover{border-color:#262729}.custom-theme .el-upload-dragger.is-dragover{background-color:rgba(32,159,255,.06);border:2px dashed #262729}.custom-theme .el-upload-list{margin:0;padding:0;list-style:none}.custom-theme .el-upload-list__item{-webkit-transition:all .5s cubic-bezier(.55,0,.1,1);transition:all .5s cubic-bezier(.55,0,.1,1);font-size:14px;color:#5a5e66;line-height:1.8;margin-top:5px;position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:4px;width:100%}.custom-theme .el-upload-list__item .el-progress{position:absolute;top:20px;width:100%}.custom-theme .el-upload-list__item .el-progress__text{position:absolute;right:0;top:-13px}.custom-theme .el-upload-list__item .el-progress-bar{margin-right:0;padding-right:0}.custom-theme .el-upload-list__item:first-child{margin-top:10px}.custom-theme .el-upload-list__item .el-icon-upload-success{color:#409167}.custom-theme .el-upload-list__item .el-icon-close{display:none;position:absolute;top:5px;right:5px;cursor:pointer;opacity:.75;color:#5a5e66}.custom-theme .el-upload-list__item .el-icon-close:hover{opacity:1}.custom-theme .el-upload-list__item .el-icon-close-tip{display:none;position:absolute;top:5px;right:0;cursor:pointer;opacity:1;color:#262729;-webkit-transform:translate(15%,0);transform:translate(15%,0)}.custom-theme .el-upload-list__item:hover{background-color:#f5f7fa}.custom-theme .el-upload-list__item:hover .el-icon-close{display:inline-block}.custom-theme .el-upload-list__item:hover .el-progress__text{display:none}.custom-theme .el-upload-list__item.is-success .el-upload-list__item-status-label{display:block}.custom-theme .el-upload-list__item.is-success .el-upload-list__item-name:focus,.custom-theme .el-upload-list__item.is-success .el-upload-list__item-name:hover{color:#262729;cursor:pointer}.custom-theme .el-upload-list__item.is-success:focus .el-icon-close-tip{display:inline-block}.custom-theme .el-upload-list__item.is-success:active,.custom-theme .el-upload-list__item.is-success:focus:not(.focusing){outline-width:0}.custom-theme .el-upload-list__item.is-success:active .el-icon-close-tip,.custom-theme .el-upload-list__item.is-success:focus:not(.focusing) .el-icon-close-tip{display:none}.custom-theme .el-upload-list__item.is-success:focus .el-upload-list__item-status-label,.custom-theme .el-upload-list__item.is-success:hover .el-upload-list__item-status-label{display:none}.custom-theme .el-upload-list.is-disabled .el-upload-list__item:hover .el-upload-list__item-status-label{display:block}.custom-theme .el-upload-list__item-name{color:#5a5e66;display:block;margin-right:40px;overflow:hidden;padding-left:4px;text-overflow:ellipsis;-webkit-transition:color .3s;transition:color .3s;white-space:nowrap}.custom-theme .el-upload-list__item-name [class^=el-icon]{height:100%;margin-right:7px;color:#878d99;line-height:inherit}.custom-theme .el-upload-list__item-status-label{position:absolute;right:5px;top:0;line-height:inherit;display:none}.custom-theme .el-upload-list__item-delete{position:absolute;right:10px;top:0;font-size:12px;color:#5a5e66;display:none}.custom-theme .el-upload-list__item-delete:hover{color:#262729}.custom-theme .el-upload-list--picture-card{margin:0;display:inline;vertical-align:top}.custom-theme .el-upload-list--picture-card .el-upload-list__item{overflow:hidden;background-color:#fff;border:1px solid #c0ccda;border-radius:6px;-webkit-box-sizing:border-box;box-sizing:border-box;width:148px;height:148px;margin:0 8px 8px 0;display:inline-block}.custom-theme .el-upload-list--picture-card .el-upload-list__item .el-icon-check,.custom-theme .el-upload-list--picture-card .el-upload-list__item .el-icon-circle-check{color:#fff}.custom-theme .el-upload-list--picture-card .el-upload-list__item .el-icon-close{display:none}.custom-theme .el-upload-list--picture-card .el-upload-list__item:hover .el-upload-list__item-status-label{display:none}.custom-theme .el-upload-list--picture-card .el-upload-list__item:hover .el-progress__text{display:block}.custom-theme .el-upload-list--picture-card .el-upload-list__item-name{display:none}.custom-theme .el-upload-list--picture-card .el-upload-list__item-thumbnail{width:100%;height:100%}.custom-theme .el-upload-list--picture-card .el-upload-list__item-status-label{position:absolute;right:-15px;top:-6px;width:40px;height:24px;background:#13ce66;text-align:center;-webkit-transform:rotate(45deg);transform:rotate(45deg);-webkit-box-shadow:0 0 1pc 1px rgba(0,0,0,.2);box-shadow:0 0 1pc 1px rgba(0,0,0,.2)}.custom-theme .el-upload-list--picture-card .el-upload-list__item-status-label i{font-size:12px;margin-top:11px;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}.custom-theme .el-upload-list--picture-card .el-upload-list__item-actions{position:absolute;width:100%;height:100%;left:0;top:0;cursor:default;text-align:center;color:#fff;opacity:0;font-size:20px;background-color:rgba(0,0,0,.5);-webkit-transition:opacity .3s;transition:opacity .3s}.custom-theme .el-upload-list--picture-card .el-upload-list__item-actions::after{display:inline-block;content:"";height:100%;vertical-align:middle}.custom-theme .el-upload-list--picture-card .el-upload-list__item-actions span{display:none;cursor:pointer}.custom-theme .el-upload-list--picture-card .el-upload-list__item-actions span+span{margin-left:15px}.custom-theme .el-upload-list--picture-card .el-upload-list__item-actions .el-upload-list__item-delete{position:static;font-size:inherit;color:inherit}.custom-theme .el-upload-list--picture-card .el-upload-list__item-actions:hover{opacity:1}.custom-theme .el-upload-list--picture-card .el-upload-list__item-actions:hover span{display:inline-block}.custom-theme .el-upload-list--picture-card .el-progress{top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);bottom:auto;width:126px}.custom-theme .el-upload-list--picture-card .el-progress .el-progress__text{top:50%}.custom-theme .el-upload-list--picture .el-upload-list__item{overflow:hidden;background-color:#fff;border:1px solid #c0ccda;border-radius:6px;-webkit-box-sizing:border-box;box-sizing:border-box;margin-top:10px;padding:10px 10px 10px 90px;height:92px}.custom-theme .el-upload-list--picture .el-upload-list__item .el-icon-check,.custom-theme .el-upload-list--picture .el-upload-list__item .el-icon-circle-check{color:#fff}.custom-theme .el-upload-list--picture .el-upload-list__item:hover .el-upload-list__item-status-label{background:0 0;-webkit-box-shadow:none;box-shadow:none;top:-2px;right:-12px}.custom-theme .el-upload-list--picture .el-upload-list__item:hover .el-progress__text{display:block}.custom-theme .el-upload-list--picture .el-upload-list__item.is-success .el-upload-list__item-name{line-height:70px;margin-top:0}.custom-theme .el-upload-list--picture .el-upload-list__item.is-success .el-upload-list__item-name i{display:none}.custom-theme .el-upload-list--picture .el-upload-list__item-thumbnail{vertical-align:middle;display:inline-block;width:70px;height:70px;float:left;position:relative;z-index:1;margin-left:-80px}.custom-theme .el-upload-list--picture .el-upload-list__item-name{display:block;margin-top:20px}.custom-theme .el-upload-list--picture .el-upload-list__item-name i{font-size:70px;line-height:1;position:absolute;left:9px;top:10px}.custom-theme .el-upload-list--picture .el-upload-list__item-status-label{position:absolute;right:-17px;top:-7px;width:46px;height:26px;background:#13ce66;text-align:center;-webkit-transform:rotate(45deg);transform:rotate(45deg);-webkit-box-shadow:0 1px 1px #ccc;box-shadow:0 1px 1px #ccc}.custom-theme .el-upload-list--picture .el-upload-list__item-status-label i{font-size:12px;margin-top:12px;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}.custom-theme .el-upload-list--picture .el-progress{position:relative;top:-7px}.custom-theme .el-upload-cover{position:absolute;left:0;top:0;width:100%;height:100%;overflow:hidden;z-index:10;cursor:default}.custom-theme .el-upload-cover::after{display:inline-block;content:"";height:100%;vertical-align:middle}.custom-theme .el-upload-cover img{display:block;width:100%;height:100%}.custom-theme .el-upload-cover__label{position:absolute;right:-15px;top:-6px;width:40px;height:24px;background:#13ce66;text-align:center;-webkit-transform:rotate(45deg);transform:rotate(45deg);-webkit-box-shadow:0 0 1pc 1px rgba(0,0,0,.2);box-shadow:0 0 1pc 1px rgba(0,0,0,.2)}.custom-theme .el-upload-cover__label i{font-size:12px;margin-top:11px;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);color:#fff}.custom-theme .el-upload-cover__progress{display:inline-block;vertical-align:middle;position:static;width:243px}.custom-theme .el-upload-cover__progress+.el-upload__inner{opacity:0}.custom-theme .el-upload-cover__content{position:absolute;top:0;left:0;width:100%;height:100%}.custom-theme .el-upload-cover__interact{position:absolute;bottom:0;left:0;width:100%;height:100%;background-color:rgba(0,0,0,.72);text-align:center}.custom-theme .el-upload-cover__interact .btn{display:inline-block;color:#fff;font-size:14px;cursor:pointer;vertical-align:middle;-webkit-transition:opacity .3s cubic-bezier(.23,1,.32,1) .1s,-webkit-transform .3s cubic-bezier(.23,1,.32,1) .1s;transition:opacity .3s cubic-bezier(.23,1,.32,1) .1s,-webkit-transform .3s cubic-bezier(.23,1,.32,1) .1s;transition:transform .3s cubic-bezier(.23,1,.32,1) .1s,opacity .3s cubic-bezier(.23,1,.32,1) .1s;transition:transform .3s cubic-bezier(.23,1,.32,1) .1s,opacity .3s cubic-bezier(.23,1,.32,1) .1s,-webkit-transform .3s cubic-bezier(.23,1,.32,1) .1s;margin-top:60px}.custom-theme .el-upload-cover__interact .btn i{margin-top:0}.custom-theme .el-upload-cover__interact .btn span{opacity:0;-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.custom-theme .el-upload-cover__interact .btn:not(:first-child){margin-left:35px}.custom-theme .el-upload-cover__interact .btn:hover{-webkit-transform:translateY(-13px);transform:translateY(-13px)}.custom-theme .el-upload-cover__interact .btn:hover span{opacity:1}.custom-theme .el-upload-cover__interact .btn i{color:#fff;display:block;font-size:24px;line-height:inherit;margin:0 auto 5px}.custom-theme .el-upload-cover__title{position:absolute;bottom:0;left:0;background-color:#fff;height:36px;width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:400;text-align:left;padding:0 10px;margin:0;line-height:36px;font-size:14px;color:#2d2f33}.custom-theme .el-upload-cover+.el-upload__inner{opacity:0;position:relative;z-index:1}.custom-theme .el-progress{position:relative;line-height:1}.custom-theme .el-progress__text{font-size:14px;color:#5a5e66;display:inline-block;vertical-align:middle;margin-left:10px;line-height:1}.custom-theme .el-progress__text i{vertical-align:middle;display:block}.custom-theme .el-progress--circle{display:inline-block}.custom-theme .el-progress--circle .el-progress__text{position:absolute;top:50%;left:0;width:100%;text-align:center;margin:0;-webkit-transform:translate(0,-50%);transform:translate(0,-50%)}.custom-theme .el-progress--circle .el-progress__text i{vertical-align:middle;display:inline-block}.custom-theme .el-progress--without-text .el-progress__text{display:none}.custom-theme .el-progress--without-text .el-progress-bar{padding-right:0;margin-right:0;display:block}.custom-theme .el-progress--text-inside .el-progress-bar{padding-right:0;margin-right:0}.custom-theme .el-progress.is-success .el-progress-bar__inner{background-color:#409167}.custom-theme .el-progress.is-success .el-progress__text{color:#409167}.custom-theme .el-progress.is-exception .el-progress-bar__inner{background-color:#b3450e}.custom-theme .el-progress.is-exception .el-progress__text{color:#b3450e}.custom-theme .el-progress-bar{padding-right:50px;display:inline-block;vertical-align:middle;width:100%;margin-right:-55px;-webkit-box-sizing:border-box;box-sizing:border-box}.custom-theme .el-progress-bar__outer{height:6px;border-radius:100px;background-color:#e6ebf5;overflow:hidden;position:relative;vertical-align:middle}.custom-theme .el-progress-bar__inner{position:absolute;left:0;top:0;height:100%;background-color:#262729;text-align:right;border-radius:100px;line-height:1;white-space:nowrap}.custom-theme .el-progress-bar__inner::after{display:inline-block;content:"";height:100%;vertical-align:middle}.custom-theme .el-progress-bar__innerText{display:inline-block;vertical-align:middle;color:#fff;font-size:12px;margin:0 5px}@keyframes progress{0%{background-position:0 0}100%{background-position:32px 0}}.custom-theme .el-time-spinner{width:100%;white-space:nowrap}.custom-theme .el-spinner{display:inline-block;vertical-align:middle}.custom-theme .el-spinner-inner{-webkit-animation:rotate 2s linear infinite;animation:rotate 2s linear infinite;width:50px;height:50px}.custom-theme .el-spinner-inner .path{stroke:#ececec;stroke-linecap:round;-webkit-animation:dash 1.5s ease-in-out infinite;animation:dash 1.5s ease-in-out infinite}@-webkit-keyframes rotate{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes rotate{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes dash{0%{stroke-dasharray:1,150;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-35}100%{stroke-dasharray:90,150;stroke-dashoffset:-124}}@keyframes dash{0%{stroke-dasharray:1,150;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-35}100%{stroke-dasharray:90,150;stroke-dashoffset:-124}}.custom-theme .el-message{min-width:380px;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:4px;border-width:1px;border-style:solid;border-color:#e6ebf5;position:fixed;left:50%;top:20px;-webkit-transform:translateX(-50%);transform:translateX(-50%);background-color:#edf2fc;-webkit-transition:opacity .3s,-webkit-transform .4s;transition:opacity .3s,-webkit-transform .4s;transition:opacity .3s,transform .4s;transition:opacity .3s,transform .4s,-webkit-transform .4s;overflow:hidden;padding:15px 15px 15px 20px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.custom-theme .el-message.is-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.custom-theme .el-message p{margin:0}.custom-theme .el-message--info .el-message__content{color:#0a76a4}.custom-theme .el-message--success{background-color:#ecf4f0;border-color:#d9e9e1}.custom-theme .el-message--success .el-message__content{color:#409167}.custom-theme .el-message--warning{background-color:#f5f6e6;border-color:#ebedce}.custom-theme .el-message--warning .el-message__content{color:#9da408}.custom-theme .el-message--error{background-color:#f7ece7;border-color:#f0dacf}.custom-theme .el-message--error .el-message__content{color:#b3450e}.custom-theme .el-message__icon{margin-right:10px}.custom-theme .el-message__content{padding:0;font-size:14px;line-height:1}.custom-theme .el-message__content:focus{outline-width:0}.custom-theme .el-message__closeBtn{position:absolute;top:50%;right:15px;-webkit-transform:translateY(-50%);transform:translateY(-50%);cursor:pointer;color:#b4bccc;font-size:16px}.custom-theme .el-message__closeBtn:focus{outline-width:0}.custom-theme .el-message__closeBtn:hover{color:#878d99}.custom-theme .el-message .el-icon-success{color:#409167}.custom-theme .el-message .el-icon-error{color:#b3450e}.custom-theme .el-message .el-icon-info{color:#0a76a4}.custom-theme .el-message .el-icon-warning{color:#9da408}.custom-theme .el-message-fade-enter,.custom-theme .el-message-fade-leave-active{opacity:0;-webkit-transform:translate(-50%,-100%);transform:translate(-50%,-100%)}.custom-theme .el-badge{position:relative;vertical-align:middle;display:inline-block}.custom-theme .el-badge__content{background-color:#b3450e;border-radius:10px;color:#fff;display:inline-block;font-size:12px;height:18px;line-height:18px;padding:0 6px;text-align:center;white-space:nowrap;border:1px solid #fff}.custom-theme .el-badge__content.is-fixed{position:absolute;top:0;right:10px;-webkit-transform:translateY(-50%) translateX(100%);transform:translateY(-50%) translateX(100%)}.custom-theme .el-badge__content.is-fixed.is-dot{right:5px}.custom-theme .el-badge__content.is-dot{height:8px;width:8px;padding:0;right:0;border-radius:50%}.custom-theme .el-card{border-radius:4px;border:1px solid #e6ebf5;background-color:#fff;overflow:hidden;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);color:#2d2f33}.custom-theme .el-card__header{padding:18px 20px;border-bottom:1px solid #e6ebf5;-webkit-box-sizing:border-box;box-sizing:border-box}.custom-theme .el-card__body{padding:20px}.custom-theme .el-rate{height:20px;line-height:1}.custom-theme .el-rate:active,.custom-theme .el-rate:focus{outline-width:0}.custom-theme .el-rate__item{display:inline-block;position:relative;font-size:0;vertical-align:middle}.custom-theme .el-rate__icon{position:relative;display:inline-block;font-size:18px;margin-right:6px;color:#b4bccc;-webkit-transition:.3s;transition:.3s}.custom-theme .el-rate__icon.hover{-webkit-transform:scale(1.15);transform:scale(1.15)}.custom-theme .el-rate__icon .path2{position:absolute;left:0;top:0}.custom-theme .el-rate__decimal{position:absolute;top:0;left:0;display:inline-block;overflow:hidden}.custom-theme .el-rate__text{font-size:14px;vertical-align:middle}.custom-theme .el-steps{display:-webkit-box;display:-ms-flexbox;display:flex}.custom-theme .el-steps--simple{padding:13px 8%;border-radius:4px;background:#f5f7fa}.custom-theme .el-steps--horizontal{white-space:nowrap}.custom-theme .el-steps--vertical{height:100%;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-flow:column;flex-flow:column}.custom-theme .el-step{position:relative;-ms-flex-negative:1;flex-shrink:1}.custom-theme .el-step:last-of-type .el-step__line{display:none}.custom-theme .el-step:last-of-type.is-flex{-ms-flex-preferred-size:auto!important;flex-basis:auto!important;-ms-flex-negative:0;flex-shrink:0;-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0}.custom-theme .el-step:last-of-type .el-step__description,.custom-theme .el-step:last-of-type .el-step__main{padding-right:0}.custom-theme .el-step__head{position:relative;width:100%}.custom-theme .el-step__head.is-process{color:#2d2f33;border-color:#2d2f33}.custom-theme .el-step__head.is-wait{color:#b4bccc;border-color:#b4bccc}.custom-theme .el-step__head.is-success{color:#409167;border-color:#409167}.custom-theme .el-step__head.is-error{color:#b3450e;border-color:#b3450e}.custom-theme .el-step__head.is-finish{color:#262729;border-color:#262729}.custom-theme .el-step__icon{position:relative;z-index:1;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:24px;height:24px;font-size:14px;-webkit-box-sizing:border-box;box-sizing:border-box;background:#fff;-webkit-transition:.15s ease-out;transition:.15s ease-out}.custom-theme .el-step__icon.is-text{border-radius:50%;border:2px solid;border-color:inherit}.custom-theme .el-step__icon.is-icon{width:40px}.custom-theme .el-step__icon-inner{display:inline-block;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;text-align:center;font-weight:700;line-height:1;color:inherit}.custom-theme .el-step__icon-inner[class*=el-icon]:not(.is-status){font-size:25px;font-weight:400}.custom-theme .el-step__icon-inner.is-status{-webkit-transform:translateY(1px);transform:translateY(1px)}.custom-theme .el-step__line{position:absolute;border-color:inherit;background-color:#b4bccc}.custom-theme .el-step__line-inner{display:block;border-width:1px;border-style:solid;border-color:inherit;-webkit-transition:.15s ease-out;transition:.15s ease-out;-webkit-box-sizing:border-box;box-sizing:border-box;width:0;height:0}.custom-theme .el-step__main{white-space:normal;text-align:left}.custom-theme .el-step__title{font-size:16px;line-height:38px}.custom-theme .el-step__title.is-process{font-weight:700;color:#2d2f33}.custom-theme .el-step__title.is-wait{color:#b4bccc}.custom-theme .el-step__title.is-success{color:#409167}.custom-theme .el-step__title.is-error{color:#b3450e}.custom-theme .el-step__title.is-finish{color:#262729}.custom-theme .el-step__description{padding-right:10%;margin-top:-5px;font-size:12px;line-height:20px;font-weight:400}.custom-theme .el-step__description.is-process{color:#2d2f33}.custom-theme .el-step__description.is-wait{color:#b4bccc}.custom-theme .el-step__description.is-success{color:#409167}.custom-theme .el-step__description.is-error{color:#b3450e}.custom-theme .el-step__description.is-finish{color:#262729}.custom-theme .el-step.is-horizontal{display:inline-block}.custom-theme .el-step.is-horizontal .el-step__line{height:2px;top:11px;left:0;right:0}.custom-theme .el-step.is-vertical{display:-webkit-box;display:-ms-flexbox;display:flex}.custom-theme .el-step.is-vertical .el-step__head{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;width:24px}.custom-theme .el-step.is-vertical .el-step__main{padding-left:10px;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.custom-theme .el-step.is-vertical .el-step__title{line-height:24px;padding-bottom:8px}.custom-theme .el-step.is-vertical .el-step__line{width:2px;top:0;bottom:0;left:11px}.custom-theme .el-step.is-vertical .el-step__icon.is-icon{width:24px}.custom-theme .el-step.is-center .el-step__head{text-align:center}.custom-theme .el-step.is-center .el-step__main{text-align:center}.custom-theme .el-step.is-center .el-step__description{padding-left:20%;padding-right:20%}.custom-theme .el-step.is-center .el-step__line{left:50%;right:-50%}.custom-theme .el-step.is-simple{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.custom-theme .el-step.is-simple .el-step__head{width:auto;font-size:0;padding-right:10px}.custom-theme .el-step.is-simple .el-step__icon{background:0 0;width:16px;height:16px;font-size:12px}.custom-theme .el-step.is-simple .el-step__icon-inner[class*=el-icon]:not(.is-status){font-size:18px}.custom-theme .el-step.is-simple .el-step__icon-inner.is-status{-webkit-transform:scale(.8) translateY(1px);transform:scale(.8) translateY(1px)}.custom-theme .el-step.is-simple .el-step__main{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.custom-theme .el-step.is-simple .el-step__title{font-size:16px;line-height:20px}.custom-theme .el-step.is-simple:not(:last-of-type) .el-step__title{max-width:50%;word-break:break-all}.custom-theme .el-step.is-simple .el-step__arrow{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.custom-theme .el-step.is-simple .el-step__arrow::after,.custom-theme .el-step.is-simple .el-step__arrow::before{content:'';display:inline-block;position:absolute;height:15px;width:1px;background:#b4bccc}.custom-theme .el-step.is-simple .el-step__arrow::before{-webkit-transform:rotate(-45deg) translateY(-4px);transform:rotate(-45deg) translateY(-4px);-webkit-transform-origin:0 0;transform-origin:0 0}.custom-theme .el-step.is-simple .el-step__arrow::after{-webkit-transform:rotate(45deg) translateY(4px);transform:rotate(45deg) translateY(4px);-webkit-transform-origin:100% 100%;transform-origin:100% 100%}.custom-theme .el-step.is-simple:last-of-type .el-step__arrow{display:none}.custom-theme .el-carousel{overflow-x:hidden;position:relative}.custom-theme .el-carousel__container{position:relative;height:300px}.custom-theme .el-carousel__arrow{border:none;outline:0;padding:0;margin:0;height:36px;width:36px;cursor:pointer;-webkit-transition:.3s;transition:.3s;border-radius:50%;background-color:rgba(31,45,61,.11);color:#fff;position:absolute;top:50%;z-index:10;-webkit-transform:translateY(-50%);transform:translateY(-50%);text-align:center;font-size:12px}.custom-theme .el-carousel__arrow--left{left:16px}.custom-theme .el-carousel__arrow--right{right:16px}.custom-theme .el-carousel__arrow:hover{background-color:rgba(31,45,61,.23)}.custom-theme .el-carousel__arrow i{cursor:pointer}.custom-theme .el-carousel__indicators{position:absolute;list-style:none;bottom:0;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);margin:0;padding:0;z-index:2}.custom-theme .el-carousel__indicators--outside{bottom:26px;text-align:center;position:static;-webkit-transform:none;transform:none}.custom-theme .el-carousel__indicators--outside .el-carousel__indicator:hover button{opacity:.64}.custom-theme .el-carousel__indicators--outside button{background-color:#b4bccc;opacity:.24}.custom-theme .el-carousel__indicators--labels{left:0;right:0;-webkit-transform:none;transform:none;text-align:center}.custom-theme .el-carousel__indicators--labels .el-carousel__button{height:auto;width:auto;padding:2px 18px;font-size:12px}.custom-theme .el-carousel__indicators--labels .el-carousel__indicator{padding:6px 4px}.custom-theme .el-carousel__indicator{display:inline-block;background-color:transparent;padding:12px 4px;cursor:pointer}.custom-theme .el-carousel__indicator:hover button{opacity:.72}.custom-theme .el-carousel__indicator.is-active button{opacity:1}.custom-theme .el-carousel__button{display:block;opacity:.48;width:30px;height:2px;background-color:#fff;border:none;outline:0;padding:0;margin:0;cursor:pointer;-webkit-transition:.3s;transition:.3s}.custom-theme .carousel-arrow-left-enter,.custom-theme .carousel-arrow-left-leave-active{-webkit-transform:translateY(-50%) translateX(-10px);transform:translateY(-50%) translateX(-10px);opacity:0}.custom-theme .carousel-arrow-right-enter,.custom-theme .carousel-arrow-right-leave-active{-webkit-transform:translateY(-50%) translateX(10px);transform:translateY(-50%) translateX(10px);opacity:0}.custom-theme .el-scrollbar{overflow:hidden;position:relative}.custom-theme .el-scrollbar:active>.el-scrollbar__bar,.custom-theme .el-scrollbar:focus>.el-scrollbar__bar,.custom-theme .el-scrollbar:hover>.el-scrollbar__bar{opacity:1;-webkit-transition:opacity 340ms ease-out;transition:opacity 340ms ease-out}.custom-theme .el-scrollbar__wrap{overflow:scroll;height:100%}.custom-theme .el-scrollbar__wrap--hidden-default::-webkit-scrollbar{width:0;height:0}.custom-theme .el-scrollbar__thumb{position:relative;display:block;width:0;height:0;cursor:pointer;border-radius:inherit;background-color:rgba(135,141,153,.3);-webkit-transition:.3s background-color;transition:.3s background-color}.custom-theme .el-scrollbar__thumb:hover{background-color:rgba(135,141,153,.5)}.custom-theme .el-scrollbar__bar{position:absolute;right:2px;bottom:2px;z-index:1;border-radius:4px;opacity:0;-webkit-transition:opacity 120ms ease-out;transition:opacity 120ms ease-out}.custom-theme .el-scrollbar__bar.is-vertical{width:6px;top:2px}.custom-theme .el-scrollbar__bar.is-vertical>div{width:100%}.custom-theme .el-scrollbar__bar.is-horizontal{height:6px;left:2px}.custom-theme .el-scrollbar__bar.is-horizontal>div{height:100%}.custom-theme .el-carousel__item{position:absolute;top:0;left:0;width:100%;height:100%;display:inline-block;overflow:hidden;z-index:0}.custom-theme .el-carousel__item.is-active{z-index:2}.custom-theme .el-carousel__item.is-animating{-webkit-transition:-webkit-transform .4s ease-in-out;transition:-webkit-transform .4s ease-in-out;transition:transform .4s ease-in-out;transition:transform .4s ease-in-out,-webkit-transform .4s ease-in-out}.custom-theme .el-carousel__item--card{width:50%;-webkit-transition:-webkit-transform .4s ease-in-out;transition:-webkit-transform .4s ease-in-out;transition:transform .4s ease-in-out;transition:transform .4s ease-in-out,-webkit-transform .4s ease-in-out}.custom-theme .el-carousel__item--card.is-in-stage{cursor:pointer;z-index:1}.custom-theme .el-carousel__item--card.is-in-stage.is-hover .el-carousel__mask,.custom-theme .el-carousel__item--card.is-in-stage:hover .el-carousel__mask{opacity:.12}.custom-theme .el-carousel__item--card.is-active{z-index:2}.custom-theme .el-carousel__mask{position:absolute;width:100%;height:100%;top:0;left:0;background-color:#fff;opacity:.24;-webkit-transition:.2s;transition:.2s}.custom-theme .el-collapse{border-top:1px solid #e6ebf5;border-bottom:1px solid #e6ebf5}.custom-theme .el-collapse-item__header{height:48px;line-height:48px;background-color:#fff;color:#2d2f33;cursor:pointer;border-bottom:1px solid #e6ebf5;font-size:13px;font-weight:500;-webkit-transition:border-bottom-color .3s;transition:border-bottom-color .3s}.custom-theme .el-collapse-item__header:active,.custom-theme .el-collapse-item__header:focus:not(.focusing){outline-width:0}.custom-theme .el-collapse-item__arrow{margin-right:8px;-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;float:right;line-height:48px;font-weight:300}.custom-theme .el-collapse-item__wrap{will-change:height;background-color:#fff;overflow:hidden;-webkit-box-sizing:border-box;box-sizing:border-box;border-bottom:1px solid #e6ebf5}.custom-theme .el-collapse-item__content{padding-bottom:25px;font-size:13px;color:#2d2f33;line-height:1.769230769230769}.custom-theme .el-collapse-item.is-active .el-collapse-item__header{border-bottom-color:transparent}.custom-theme .el-collapse-item.is-active .el-collapse-item__header .el-collapse-item__arrow{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.custom-theme .el-collapse-item:last-child{margin-bottom:-1px}.custom-theme .el-input{position:relative;font-size:14px;display:inline-block;width:100%}.custom-theme .el-input::-webkit-scrollbar{z-index:11;width:6px}.custom-theme .el-input::-webkit-scrollbar:horizontal{height:6px}.custom-theme .el-input::-webkit-scrollbar-thumb{border-radius:5px;width:6px;background:#b4bccc}.custom-theme .el-input::-webkit-scrollbar-corner{background:#fff}.custom-theme .el-input::-webkit-scrollbar-track{background:#fff}.custom-theme .el-input::-webkit-scrollbar-track-piece{background:#fff;width:6px}.custom-theme .el-input__inner{-webkit-appearance:none;background-color:#fff;background-image:none;border-radius:4px;border:1px solid #d8dce5;-webkit-box-sizing:border-box;box-sizing:border-box;color:#5a5e66;display:inline-block;font-size:inherit;height:40px;line-height:1;outline:0;padding:0 15px;-webkit-transition:border-color .2s cubic-bezier(.645,.045,.355,1);transition:border-color .2s cubic-bezier(.645,.045,.355,1);width:100%}.custom-theme .el-input__inner::-webkit-input-placeholder{color:#b4bccc}.custom-theme .el-input__inner:-ms-input-placeholder{color:#b4bccc}.custom-theme .el-input__inner::-ms-input-placeholder{color:#b4bccc}.custom-theme .el-input__inner::placeholder{color:#b4bccc}.custom-theme .el-input__inner:hover{border-color:#b4bccc}.custom-theme .el-input__inner:focus{outline:0;border-color:#262729}.custom-theme .el-input__suffix{position:absolute;height:100%;right:5px;top:0;text-align:center;color:#b4bccc;-webkit-transition:all .3s;transition:all .3s;pointer-events:none}.custom-theme .el-input__suffix-inner{pointer-events:all}.custom-theme .el-input__prefix{position:absolute;height:100%;left:5px;top:0;text-align:center;color:#b4bccc;-webkit-transition:all .3s;transition:all .3s}.custom-theme .el-input__icon{height:100%;width:25px;text-align:center;-webkit-transition:all .3s;transition:all .3s;line-height:40px}.custom-theme .el-input__icon:after{content:'';height:100%;width:0;display:inline-block;vertical-align:middle}.custom-theme .el-input__validateIcon{pointer-events:none}.custom-theme .el-input.is-active .el-input__inner{outline:0;border-color:#262729}.custom-theme .el-input.is-disabled .el-input__inner{background-color:#f5f7fa;border-color:#dfe4ed;color:#b4bccc;cursor:not-allowed}.custom-theme .el-input.is-disabled .el-input__inner::-webkit-input-placeholder{color:#b4bccc}.custom-theme .el-input.is-disabled .el-input__inner:-ms-input-placeholder{color:#b4bccc}.custom-theme .el-input.is-disabled .el-input__inner::-ms-input-placeholder{color:#b4bccc}.custom-theme .el-input.is-disabled .el-input__inner::placeholder{color:#b4bccc}.custom-theme .el-input.is-disabled .el-input__icon{cursor:not-allowed}.custom-theme .el-input--suffix .el-input__inner{padding-right:30px}.custom-theme .el-input--prefix .el-input__inner{padding-left:30px}.custom-theme .el-input--medium{font-size:14px}.custom-theme .el-input--medium .el-input__inner{height:36px}.custom-theme .el-input--medium .el-input__icon{line-height:36px}.custom-theme .el-input--small{font-size:13px}.custom-theme .el-input--small .el-input__inner{height:32px}.custom-theme .el-input--small .el-input__icon{line-height:32px}.custom-theme .el-input--mini{font-size:12px}.custom-theme .el-input--mini .el-input__inner{height:28px}.custom-theme .el-input--mini .el-input__icon{line-height:28px}.custom-theme .el-input-group{line-height:normal;display:inline-table;width:100%;border-collapse:separate}.custom-theme .el-input-group>.el-input__inner{vertical-align:middle;display:table-cell}.custom-theme .el-input-group__append,.custom-theme .el-input-group__prepend{background-color:#f5f7fa;color:#0a76a4;vertical-align:middle;display:table-cell;position:relative;border:1px solid #d8dce5;border-radius:4px;padding:0 20px;width:1px;white-space:nowrap}.custom-theme .el-input-group__append:focus,.custom-theme .el-input-group__prepend:focus{outline:0}.custom-theme .el-input-group__append .el-button,.custom-theme .el-input-group__append .el-select,.custom-theme .el-input-group__prepend .el-button,.custom-theme .el-input-group__prepend .el-select{display:inline-block;margin:-20px}.custom-theme .el-input-group__append button.el-button,.custom-theme .el-input-group__append div.el-select .el-input__inner,.custom-theme .el-input-group__append div.el-select:hover .el-input__inner,.custom-theme .el-input-group__prepend button.el-button,.custom-theme .el-input-group__prepend div.el-select .el-input__inner,.custom-theme .el-input-group__prepend div.el-select:hover .el-input__inner{border-color:transparent;background-color:transparent;color:inherit;border-top:0;border-bottom:0}.custom-theme .el-input-group__append .el-button,.custom-theme .el-input-group__append .el-input,.custom-theme .el-input-group__prepend .el-button,.custom-theme .el-input-group__prepend .el-input{font-size:inherit}.custom-theme .el-input-group__prepend{border-right:0;border-top-right-radius:0;border-bottom-right-radius:0}.custom-theme .el-input-group__append{border-left:0;border-top-left-radius:0;border-bottom-left-radius:0}.custom-theme .el-input-group--prepend .el-input__inner{border-top-left-radius:0;border-bottom-left-radius:0}.custom-theme .el-input-group--append .el-input__inner{border-top-right-radius:0;border-bottom-right-radius:0}.custom-theme .el-textarea{display:inline-block;width:100%;vertical-align:bottom}.custom-theme .el-textarea__inner{display:block;resize:vertical;padding:5px 15px;line-height:1.5;-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;font-size:14px;color:#5a5e66;background-color:#fff;background-image:none;border:1px solid #d8dce5;border-radius:4px;-webkit-transition:border-color .2s cubic-bezier(.645,.045,.355,1);transition:border-color .2s cubic-bezier(.645,.045,.355,1)}.custom-theme .el-textarea__inner::-webkit-input-placeholder{color:#b4bccc}.custom-theme .el-textarea__inner:-ms-input-placeholder{color:#b4bccc}.custom-theme .el-textarea__inner::-ms-input-placeholder{color:#b4bccc}.custom-theme .el-textarea__inner::placeholder{color:#b4bccc}.custom-theme .el-textarea__inner:hover{border-color:#b4bccc}.custom-theme .el-textarea__inner:focus{outline:0;border-color:#262729}.custom-theme .el-textarea.is-disabled .el-textarea__inner{background-color:#f5f7fa;border-color:#dfe4ed;color:#b4bccc;cursor:not-allowed}.custom-theme .el-textarea.is-disabled .el-textarea__inner::-webkit-input-placeholder{color:#b4bccc}.custom-theme .el-textarea.is-disabled .el-textarea__inner:-ms-input-placeholder{color:#b4bccc}.custom-theme .el-textarea.is-disabled .el-textarea__inner::-ms-input-placeholder{color:#b4bccc}.custom-theme .el-textarea.is-disabled .el-textarea__inner::placeholder{color:#b4bccc}.custom-theme .el-popper .popper__arrow,.custom-theme .el-popper .popper__arrow::after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.custom-theme .el-popper .popper__arrow{border-width:6px;-webkit-filter:drop-shadow(0 2px 12px rgba(0, 0, 0, .03));filter:drop-shadow(0 2px 12px rgba(0, 0, 0, .03))}.custom-theme .el-popper .popper__arrow::after{content:" ";border-width:6px}.custom-theme .el-popper[x-placement^=top]{margin-bottom:12px}.custom-theme .el-popper[x-placement^=top] .popper__arrow{bottom:-6px;left:50%;margin-right:3px;border-top-color:#e6ebf5;border-bottom-width:0}.custom-theme .el-popper[x-placement^=top] .popper__arrow::after{bottom:1px;margin-left:-6px;border-top-color:#fff;border-bottom-width:0}.custom-theme .el-popper[x-placement^=bottom]{margin-top:12px}.custom-theme .el-popper[x-placement^=bottom] .popper__arrow{top:-6px;left:50%;margin-right:3px;border-top-width:0;border-bottom-color:#e6ebf5}.custom-theme .el-popper[x-placement^=bottom] .popper__arrow::after{top:1px;margin-left:-6px;border-top-width:0;border-bottom-color:#fff}.custom-theme .el-popper[x-placement^=right]{margin-left:12px}.custom-theme .el-popper[x-placement^=right] .popper__arrow{top:50%;left:-6px;margin-bottom:3px;border-right-color:#e6ebf5;border-left-width:0}.custom-theme .el-popper[x-placement^=right] .popper__arrow::after{bottom:-6px;left:1px;border-right-color:#fff;border-left-width:0}.custom-theme .el-popper[x-placement^=left]{margin-right:12px}.custom-theme .el-popper[x-placement^=left] .popper__arrow{top:50%;right:-6px;margin-bottom:3px;border-right-width:0;border-left-color:#e6ebf5}.custom-theme .el-popper[x-placement^=left] .popper__arrow::after{right:1px;bottom:-6px;margin-left:-6px;border-right-width:0;border-left-color:#fff}.custom-theme .el-cascader{display:inline-block;position:relative;font-size:14px;line-height:40px}.custom-theme .el-cascader .el-input,.custom-theme .el-cascader .el-input__inner{cursor:pointer}.custom-theme .el-cascader .el-input__icon{-webkit-transition:none;transition:none}.custom-theme .el-cascader .el-icon-arrow-down{-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;font-size:14px}.custom-theme .el-cascader .el-icon-arrow-down.is-reverse{-webkit-transform:rotateZ(180deg);transform:rotateZ(180deg)}.custom-theme .el-cascader .el-icon-circle-close{z-index:2;-webkit-transition:color .2s cubic-bezier(.645,.045,.355,1);transition:color .2s cubic-bezier(.645,.045,.355,1)}.custom-theme .el-cascader .el-icon-circle-close:hover{color:#878d99}.custom-theme .el-cascader__clearIcon{z-index:2;position:relative}.custom-theme .el-cascader__label{position:absolute;left:0;top:0;height:100%;padding:0 25px 0 15px;color:#5a5e66;width:100%;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;-webkit-box-sizing:border-box;box-sizing:border-box;cursor:pointer;text-align:left;font-size:inherit}.custom-theme .el-cascader__label span{color:#000}.custom-theme .el-cascader--medium{font-size:14px;line-height:36px}.custom-theme .el-cascader--small{font-size:13px;line-height:32px}.custom-theme .el-cascader--mini{font-size:12px;line-height:28px}.custom-theme .el-cascader.is-disabled .el-cascader__label{z-index:2;color:#b4bccc}.custom-theme .el-cascader-menus{white-space:nowrap;background:#fff;position:absolute;margin:5px 0;z-index:2;border:solid 1px #dfe4ed;border-radius:2px;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.custom-theme .el-cascader-menus .popper__arrow{-webkit-transform:translateX(-400%);transform:translateX(-400%)}.custom-theme .el-cascader-menu{display:inline-block;vertical-align:top;height:204px;overflow:auto;border-right:solid 1px #dfe4ed;background-color:#fff;-webkit-box-sizing:border-box;box-sizing:border-box;margin:0;padding:6px 0;min-width:160px}.custom-theme .el-cascader-menu:last-child{border-right:0}.custom-theme .el-cascader-menu__item{font-size:14px;padding:8px 20px;position:relative;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#5a5e66;height:34px;line-height:1.5;-webkit-box-sizing:border-box;box-sizing:border-box;cursor:pointer}.custom-theme .el-cascader-menu__item--extensible:after{font-family:element-icons;content:"\e604";font-size:14px;color:#bfcbd9;position:absolute;right:15px}.custom-theme .el-cascader-menu__item.is-disabled{color:#b4bccc;background-color:#fff;cursor:not-allowed}.custom-theme .el-cascader-menu__item.is-disabled:hover{background-color:#fff}.custom-theme .el-cascader-menu__item.is-active{color:#262729}.custom-theme .el-cascader-menu__item:hover{background-color:#f5f7fa}.custom-theme .el-cascader-menu__item.selected{color:#fff;background-color:#f5f7fa}.custom-theme .el-cascader-menu__item__keyword{font-weight:700}.custom-theme .el-cascader-menu--flexible{height:auto;max-height:180px;overflow:auto}.custom-theme .el-cascader-menu--flexible .el-cascader-menu__item{overflow:visible}.custom-theme .el-color-hue-slider{position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;width:280px;height:12px;background-color:red;padding:0 2px}.custom-theme .el-color-hue-slider__bar{position:relative;background:-webkit-gradient(linear,left top,right top,from(red),color-stop(17%,#ff0),color-stop(33%,#0f0),color-stop(50%,#0ff),color-stop(67%,#00f),color-stop(83%,#f0f),to(red));background:linear-gradient(to right,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red 100%);height:100%}.custom-theme .el-color-hue-slider__thumb{position:absolute;cursor:pointer;-webkit-box-sizing:border-box;box-sizing:border-box;left:0;top:0;width:4px;height:100%;border-radius:1px;background:#fff;border:1px solid #f0f0f0;-webkit-box-shadow:0 0 2px rgba(0,0,0,.6);box-shadow:0 0 2px rgba(0,0,0,.6);z-index:1}.custom-theme .el-color-hue-slider.is-vertical{width:12px;height:180px;padding:2px 0}.custom-theme .el-color-hue-slider.is-vertical .el-color-hue-slider__bar{background:-webkit-gradient(linear,left top,left bottom,from(red),color-stop(17%,#ff0),color-stop(33%,#0f0),color-stop(50%,#0ff),color-stop(67%,#00f),color-stop(83%,#f0f),to(red));background:linear-gradient(to bottom,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red 100%)}.custom-theme .el-color-hue-slider.is-vertical .el-color-hue-slider__thumb{left:0;top:0;width:100%;height:4px}.custom-theme .el-color-svpanel{position:relative;width:280px;height:180px}.custom-theme .el-color-svpanel__black,.custom-theme .el-color-svpanel__white{position:absolute;top:0;left:0;right:0;bottom:0}.custom-theme .el-color-svpanel__white{background:-webkit-gradient(linear,left top,right top,from(#fff),to(rgba(255,255,255,0)));background:linear-gradient(to right,#fff,rgba(255,255,255,0))}.custom-theme .el-color-svpanel__black{background:-webkit-gradient(linear,left bottom,left top,from(#000),to(transparent));background:linear-gradient(to top,#000,transparent)}.custom-theme .el-color-svpanel__cursor{position:absolute}.custom-theme .el-color-svpanel__cursor>div{cursor:head;width:4px;height:4px;-webkit-box-shadow:0 0 0 1.5px #fff,inset 0 0 1px 1px rgba(0,0,0,.3),0 0 1px 2px rgba(0,0,0,.4);box-shadow:0 0 0 1.5px #fff,inset 0 0 1px 1px rgba(0,0,0,.3),0 0 1px 2px rgba(0,0,0,.4);border-radius:50%;-webkit-transform:translate(-2px,-2px);transform:translate(-2px,-2px)}.custom-theme .el-color-alpha-slider{position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;width:280px;height:12px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.custom-theme .el-color-alpha-slider__bar{position:relative;background:-webkit-gradient(linear,left top,right top,from(rgba(255,255,255,0)),to(white));background:linear-gradient(to right,rgba(255,255,255,0) 0,#fff 100%);height:100%}.custom-theme .el-color-alpha-slider__thumb{position:absolute;cursor:pointer;-webkit-box-sizing:border-box;box-sizing:border-box;left:0;top:0;width:4px;height:100%;border-radius:1px;background:#fff;border:1px solid #f0f0f0;-webkit-box-shadow:0 0 2px rgba(0,0,0,.6);box-shadow:0 0 2px rgba(0,0,0,.6);z-index:1}.custom-theme .el-color-alpha-slider.is-vertical{width:20px;height:180px}.custom-theme .el-color-alpha-slider.is-vertical .el-color-alpha-slider__bar{background:-webkit-gradient(linear,left top,left bottom,from(rgba(255,255,255,0)),to(white));background:linear-gradient(to bottom,rgba(255,255,255,0) 0,#fff 100%)}.custom-theme .el-color-alpha-slider.is-vertical .el-color-alpha-slider__thumb{left:0;top:0;width:100%;height:4px}.custom-theme .el-color-dropdown{width:300px}.custom-theme .el-color-dropdown__main-wrapper{margin-bottom:6px}.custom-theme .el-color-dropdown__main-wrapper::after{content:"";display:table;clear:both}.custom-theme .el-color-dropdown__btns{margin-top:6px;text-align:right}.custom-theme .el-color-dropdown__value{float:left;line-height:26px;font-size:12px;color:#000;width:160px}.custom-theme .el-color-dropdown__btn{border:1px solid #dcdcdc;color:#333;line-height:24px;border-radius:2px;padding:0 20px;cursor:pointer;background-color:transparent;outline:0;font-size:12px}.custom-theme .el-color-dropdown__btn[disabled]{color:#ccc;cursor:not-allowed}.custom-theme .el-color-dropdown__btn:hover{color:#262729;border-color:#262729}.custom-theme .el-color-dropdown__link-btn{cursor:pointer;color:#262729;text-decoration:none;padding:15px;font-size:12px}.custom-theme .el-color-dropdown__link-btn:hover{color:tint(#262729,20%)}.custom-theme .el-color-picker{display:inline-block;position:relative;line-height:normal;height:40px}.custom-theme .el-color-picker.is-disabled .el-color-picker__trigger{cursor:not-allowed}.custom-theme .el-color-picker--medium{height:36px}.custom-theme .el-color-picker--medium .el-color-picker__trigger{height:36px;width:36px}.custom-theme .el-color-picker--medium .el-color-picker__mask{height:34px;width:34px}.custom-theme .el-color-picker--small{height:32px}.custom-theme .el-color-picker--small .el-color-picker__trigger{height:32px;width:32px}.custom-theme .el-color-picker--small .el-color-picker__mask{height:30px;width:30px}.custom-theme .el-color-picker--small .el-color-picker__empty,.custom-theme .el-color-picker--small .el-color-picker__icon{-webkit-transform:translate3d(-50%,-50%,0) scale(.8);transform:translate3d(-50%,-50%,0) scale(.8)}.custom-theme .el-color-picker--mini{height:28px}.custom-theme .el-color-picker--mini .el-color-picker__trigger{height:28px;width:28px}.custom-theme .el-color-picker--mini .el-color-picker__mask{height:26px;width:26px}.custom-theme .el-color-picker--mini .el-color-picker__empty,.custom-theme .el-color-picker--mini .el-color-picker__icon{-webkit-transform:translate3d(-50%,-50%,0) scale(.8);transform:translate3d(-50%,-50%,0) scale(.8)}.custom-theme .el-color-picker__mask{height:38px;width:38px;border-radius:4px;position:absolute;top:1px;left:1px;z-index:1;cursor:not-allowed;background-color:rgba(255,255,255,.7)}.custom-theme .el-color-picker__trigger{display:inline-block;-webkit-box-sizing:border-box;box-sizing:border-box;height:40px;width:40px;padding:4px;border:1px solid #e6e6e6;border-radius:4px;font-size:0;position:relative;cursor:pointer}.custom-theme .el-color-picker__color{position:relative;display:block;-webkit-box-sizing:border-box;box-sizing:border-box;border:1px solid #999;border-radius:2px;width:100%;height:100%;text-align:center}.custom-theme .el-color-picker__color.is-alpha{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.custom-theme .el-color-picker__color-inner{position:absolute;left:0;top:0;right:0;bottom:0}.custom-theme .el-color-picker__empty{font-size:12px;color:#999;position:absolute;top:50%;left:50%;-webkit-transform:translate3d(-50%,-50%,0);transform:translate3d(-50%,-50%,0)}.custom-theme .el-color-picker__icon{display:inline-block;position:absolute;width:100%;top:50%;left:50%;-webkit-transform:translate3d(-50%,-50%,0);transform:translate3d(-50%,-50%,0);color:#fff;text-align:center;font-size:12px}.custom-theme .el-color-picker__panel{position:absolute;z-index:10;padding:6px;background-color:#fff;border:1px solid #e6ebf5;border-radius:4px;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.custom-theme .el-input{position:relative;font-size:14px;display:inline-block;width:100%}.custom-theme .el-input::-webkit-scrollbar{z-index:11;width:6px}.custom-theme .el-input::-webkit-scrollbar:horizontal{height:6px}.custom-theme .el-input::-webkit-scrollbar-thumb{border-radius:5px;width:6px;background:#b4bccc}.custom-theme .el-input::-webkit-scrollbar-corner{background:#fff}.custom-theme .el-input::-webkit-scrollbar-track{background:#fff}.custom-theme .el-input::-webkit-scrollbar-track-piece{background:#fff;width:6px}.custom-theme .el-input__inner{-webkit-appearance:none;background-color:#fff;background-image:none;border-radius:4px;border:1px solid #d8dce5;-webkit-box-sizing:border-box;box-sizing:border-box;color:#5a5e66;display:inline-block;font-size:inherit;height:40px;line-height:1;outline:0;padding:0 15px;-webkit-transition:border-color .2s cubic-bezier(.645,.045,.355,1);transition:border-color .2s cubic-bezier(.645,.045,.355,1);width:100%}.custom-theme .el-input__inner::-webkit-input-placeholder{color:#b4bccc}.custom-theme .el-input__inner:-ms-input-placeholder{color:#b4bccc}.custom-theme .el-input__inner::-ms-input-placeholder{color:#b4bccc}.custom-theme .el-input__inner::placeholder{color:#b4bccc}.custom-theme .el-input__inner:hover{border-color:#b4bccc}.custom-theme .el-input__inner:focus{outline:0;border-color:#262729}.custom-theme .el-input__suffix{position:absolute;height:100%;right:5px;top:0;text-align:center;color:#b4bccc;-webkit-transition:all .3s;transition:all .3s;pointer-events:none}.custom-theme .el-input__suffix-inner{pointer-events:all}.custom-theme .el-input__prefix{position:absolute;height:100%;left:5px;top:0;text-align:center;color:#b4bccc;-webkit-transition:all .3s;transition:all .3s}.custom-theme .el-input__icon{height:100%;width:25px;text-align:center;-webkit-transition:all .3s;transition:all .3s;line-height:40px}.custom-theme .el-input__icon:after{content:'';height:100%;width:0;display:inline-block;vertical-align:middle}.custom-theme .el-input__validateIcon{pointer-events:none}.custom-theme .el-input.is-active .el-input__inner{outline:0;border-color:#262729}.custom-theme .el-input.is-disabled .el-input__inner{background-color:#f5f7fa;border-color:#dfe4ed;color:#b4bccc;cursor:not-allowed}.custom-theme .el-input.is-disabled .el-input__inner::-webkit-input-placeholder{color:#b4bccc}.custom-theme .el-input.is-disabled .el-input__inner:-ms-input-placeholder{color:#b4bccc}.custom-theme .el-input.is-disabled .el-input__inner::-ms-input-placeholder{color:#b4bccc}.custom-theme .el-input.is-disabled .el-input__inner::placeholder{color:#b4bccc}.custom-theme .el-input.is-disabled .el-input__icon{cursor:not-allowed}.custom-theme .el-input--suffix .el-input__inner{padding-right:30px}.custom-theme .el-input--prefix .el-input__inner{padding-left:30px}.custom-theme .el-input--medium{font-size:14px}.custom-theme .el-input--medium .el-input__inner{height:36px}.custom-theme .el-input--medium .el-input__icon{line-height:36px}.custom-theme .el-input--small{font-size:13px}.custom-theme .el-input--small .el-input__inner{height:32px}.custom-theme .el-input--small .el-input__icon{line-height:32px}.custom-theme .el-input--mini{font-size:12px}.custom-theme .el-input--mini .el-input__inner{height:28px}.custom-theme .el-input--mini .el-input__icon{line-height:28px}.custom-theme .el-input-group{line-height:normal;display:inline-table;width:100%;border-collapse:separate}.custom-theme .el-input-group>.el-input__inner{vertical-align:middle;display:table-cell}.custom-theme .el-input-group__append,.custom-theme .el-input-group__prepend{background-color:#f5f7fa;color:#0a76a4;vertical-align:middle;display:table-cell;position:relative;border:1px solid #d8dce5;border-radius:4px;padding:0 20px;width:1px;white-space:nowrap}.custom-theme .el-input-group__append:focus,.custom-theme .el-input-group__prepend:focus{outline:0}.custom-theme .el-input-group__append .el-button,.custom-theme .el-input-group__append .el-select,.custom-theme .el-input-group__prepend .el-button,.custom-theme .el-input-group__prepend .el-select{display:inline-block;margin:-20px}.custom-theme .el-input-group__append button.el-button,.custom-theme .el-input-group__append div.el-select .el-input__inner,.custom-theme .el-input-group__append div.el-select:hover .el-input__inner,.custom-theme .el-input-group__prepend button.el-button,.custom-theme .el-input-group__prepend div.el-select .el-input__inner,.custom-theme .el-input-group__prepend div.el-select:hover .el-input__inner{border-color:transparent;background-color:transparent;color:inherit;border-top:0;border-bottom:0}.custom-theme .el-input-group__append .el-button,.custom-theme .el-input-group__append .el-input,.custom-theme .el-input-group__prepend .el-button,.custom-theme .el-input-group__prepend .el-input{font-size:inherit}.custom-theme .el-input-group__prepend{border-right:0;border-top-right-radius:0;border-bottom-right-radius:0}.custom-theme .el-input-group__append{border-left:0;border-top-left-radius:0;border-bottom-left-radius:0}.custom-theme .el-input-group--prepend .el-input__inner{border-top-left-radius:0;border-bottom-left-radius:0}.custom-theme .el-input-group--append .el-input__inner{border-top-right-radius:0;border-bottom-right-radius:0}.custom-theme .el-textarea{display:inline-block;width:100%;vertical-align:bottom}.custom-theme .el-textarea__inner{display:block;resize:vertical;padding:5px 15px;line-height:1.5;-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;font-size:14px;color:#5a5e66;background-color:#fff;background-image:none;border:1px solid #d8dce5;border-radius:4px;-webkit-transition:border-color .2s cubic-bezier(.645,.045,.355,1);transition:border-color .2s cubic-bezier(.645,.045,.355,1)}.custom-theme .el-textarea__inner::-webkit-input-placeholder{color:#b4bccc}.custom-theme .el-textarea__inner:-ms-input-placeholder{color:#b4bccc}.custom-theme .el-textarea__inner::-ms-input-placeholder{color:#b4bccc}.custom-theme .el-textarea__inner::placeholder{color:#b4bccc}.custom-theme .el-textarea__inner:hover{border-color:#b4bccc}.custom-theme .el-textarea__inner:focus{outline:0;border-color:#262729}.custom-theme .el-textarea.is-disabled .el-textarea__inner{background-color:#f5f7fa;border-color:#dfe4ed;color:#b4bccc;cursor:not-allowed}.custom-theme .el-textarea.is-disabled .el-textarea__inner::-webkit-input-placeholder{color:#b4bccc}.custom-theme .el-textarea.is-disabled .el-textarea__inner:-ms-input-placeholder{color:#b4bccc}.custom-theme .el-textarea.is-disabled .el-textarea__inner::-ms-input-placeholder{color:#b4bccc}.custom-theme .el-textarea.is-disabled .el-textarea__inner::placeholder{color:#b4bccc}.custom-theme .el-button{display:inline-block;line-height:1;white-space:nowrap;cursor:pointer;background:#fff;border:1px solid #d8dce5;border-color:#d8dce5;color:#5a5e66;-webkit-appearance:none;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;outline:0;margin:0;-webkit-transition:.1s;transition:.1s;font-weight:500;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;padding:12px 20px;font-size:14px;border-radius:4px}.custom-theme .el-button+.el-button{margin-left:10px}.custom-theme .el-button.is-round{padding:12px 20px}.custom-theme .el-button:focus,.custom-theme .el-button:hover{color:#262729;border-color:#bebebf;background-color:#e9e9ea}.custom-theme .el-button:active{color:#222325;border-color:#222325;outline:0}.custom-theme .el-button::-moz-focus-inner{border:0}.custom-theme .el-button [class*=el-icon-]+span{margin-left:5px}.custom-theme .el-button.is-plain:focus,.custom-theme .el-button.is-plain:hover{background:#fff;border-color:#262729;color:#262729}.custom-theme .el-button.is-plain:active{background:#fff;border-color:#222325;color:#222325;outline:0}.custom-theme .el-button.is-active{color:#222325;border-color:#222325}.custom-theme .el-button.is-disabled,.custom-theme .el-button.is-disabled:focus,.custom-theme .el-button.is-disabled:hover{color:#b4bccc;cursor:not-allowed;background-image:none;background-color:#fff;border-color:#e6ebf5}.custom-theme .el-button.is-disabled.el-button--text{background-color:transparent}.custom-theme .el-button.is-disabled.is-plain,.custom-theme .el-button.is-disabled.is-plain:focus,.custom-theme .el-button.is-disabled.is-plain:hover{background-color:#fff;border-color:#e6ebf5;color:#b4bccc}.custom-theme .el-button.is-loading{position:relative;pointer-events:none}.custom-theme .el-button.is-loading:before{pointer-events:none;content:'';position:absolute;left:-1px;top:-1px;right:-1px;bottom:-1px;border-radius:inherit;background-color:rgba(255,255,255,.35)}.custom-theme .el-button.is-round{border-radius:20px;padding:12px 23px}.custom-theme .el-button--primary{color:#fff;background-color:#262729;border-color:#262729}.custom-theme .el-button--primary:focus,.custom-theme .el-button--primary:hover{background:#515254;border-color:#515254;color:#fff}.custom-theme .el-button--primary:active{background:#222325;border-color:#222325;color:#fff;outline:0}.custom-theme .el-button--primary.is-active{background:#222325;border-color:#222325;color:#fff}.custom-theme .el-button--primary.is-disabled,.custom-theme .el-button--primary.is-disabled:active,.custom-theme .el-button--primary.is-disabled:focus,.custom-theme .el-button--primary.is-disabled:hover{color:#fff;background-color:#939394;border-color:#939394}.custom-theme .el-button--primary.is-plain{color:#262729;background:#e9e9ea;border-color:#a8a9a9}.custom-theme .el-button--primary.is-plain:focus,.custom-theme .el-button--primary.is-plain:hover{background:#262729;border-color:#262729;color:#fff}.custom-theme .el-button--primary.is-plain:active{background:#222325;border-color:#222325;color:#fff;outline:0}.custom-theme .el-button--primary.is-plain.is-disabled,.custom-theme .el-button--primary.is-plain.is-disabled:active,.custom-theme .el-button--primary.is-plain.is-disabled:focus,.custom-theme .el-button--primary.is-plain.is-disabled:hover{color:#7d7d7f;background-color:#e9e9ea;border-color:#d4d4d4}.custom-theme .el-button--success{color:#fff;background-color:#409167;border-color:#409167}.custom-theme .el-button--success:focus,.custom-theme .el-button--success:hover{background:#66a785;border-color:#66a785;color:#fff}.custom-theme .el-button--success:active{background:#3a835d;border-color:#3a835d;color:#fff;outline:0}.custom-theme .el-button--success.is-active{background:#3a835d;border-color:#3a835d;color:#fff}.custom-theme .el-button--success.is-disabled,.custom-theme .el-button--success.is-disabled:active,.custom-theme .el-button--success.is-disabled:focus,.custom-theme .el-button--success.is-disabled:hover{color:#fff;background-color:#a0c8b3;border-color:#a0c8b3}.custom-theme .el-button--success.is-plain{color:#409167;background:#ecf4f0;border-color:#b3d3c2}.custom-theme .el-button--success.is-plain:focus,.custom-theme .el-button--success.is-plain:hover{background:#409167;border-color:#409167;color:#fff}.custom-theme .el-button--success.is-plain:active{background:#3a835d;border-color:#3a835d;color:#fff;outline:0}.custom-theme .el-button--success.is-plain.is-disabled,.custom-theme .el-button--success.is-plain.is-disabled:active,.custom-theme .el-button--success.is-plain.is-disabled:focus,.custom-theme .el-button--success.is-plain.is-disabled:hover{color:#8cbda4;background-color:#ecf4f0;border-color:#d9e9e1}.custom-theme .el-button--warning{color:#fff;background-color:#9da408;border-color:#9da408}.custom-theme .el-button--warning:focus,.custom-theme .el-button--warning:hover{background:#b1b639;border-color:#b1b639;color:#fff}.custom-theme .el-button--warning:active{background:#8d9407;border-color:#8d9407;color:#fff;outline:0}.custom-theme .el-button--warning.is-active{background:#8d9407;border-color:#8d9407;color:#fff}.custom-theme .el-button--warning.is-disabled,.custom-theme .el-button--warning.is-disabled:active,.custom-theme .el-button--warning.is-disabled:focus,.custom-theme .el-button--warning.is-disabled:hover{color:#fff;background-color:#ced284;border-color:#ced284}.custom-theme .el-button--warning.is-plain{color:#9da408;background:#f5f6e6;border-color:#d8db9c}.custom-theme .el-button--warning.is-plain:focus,.custom-theme .el-button--warning.is-plain:hover{background:#9da408;border-color:#9da408;color:#fff}.custom-theme .el-button--warning.is-plain:active{background:#8d9407;border-color:#8d9407;color:#fff;outline:0}.custom-theme .el-button--warning.is-plain.is-disabled,.custom-theme .el-button--warning.is-plain.is-disabled:active,.custom-theme .el-button--warning.is-plain.is-disabled:focus,.custom-theme .el-button--warning.is-plain.is-disabled:hover{color:#c4c86b;background-color:#f5f6e6;border-color:#ebedce}.custom-theme .el-button--danger{color:#fff;background-color:#b3450e;border-color:#b3450e}.custom-theme .el-button--danger:focus,.custom-theme .el-button--danger:hover{background:#c26a3e;border-color:#c26a3e;color:#fff}.custom-theme .el-button--danger:active{background:#a13e0d;border-color:#a13e0d;color:#fff;outline:0}.custom-theme .el-button--danger.is-active{background:#a13e0d;border-color:#a13e0d;color:#fff}.custom-theme .el-button--danger.is-disabled,.custom-theme .el-button--danger.is-disabled:active,.custom-theme .el-button--danger.is-disabled:focus,.custom-theme .el-button--danger.is-disabled:hover{color:#fff;background-color:#d9a287;border-color:#d9a287}.custom-theme .el-button--danger.is-plain{color:#b3450e;background:#f7ece7;border-color:#e1b59f}.custom-theme .el-button--danger.is-plain:focus,.custom-theme .el-button--danger.is-plain:hover{background:#b3450e;border-color:#b3450e;color:#fff}.custom-theme .el-button--danger.is-plain:active{background:#a13e0d;border-color:#a13e0d;color:#fff;outline:0}.custom-theme .el-button--danger.is-plain.is-disabled,.custom-theme .el-button--danger.is-plain.is-disabled:active,.custom-theme .el-button--danger.is-plain.is-disabled:focus,.custom-theme .el-button--danger.is-plain.is-disabled:hover{color:#d18f6e;background-color:#f7ece7;border-color:#f0dacf}.custom-theme .el-button--info{color:#fff;background-color:#0a76a4;border-color:#0a76a4}.custom-theme .el-button--info:focus,.custom-theme .el-button--info:hover{background:#3b91b6;border-color:#3b91b6;color:#fff}.custom-theme .el-button--info:active{background:#096a94;border-color:#096a94;color:#fff;outline:0}.custom-theme .el-button--info.is-active{background:#096a94;border-color:#096a94;color:#fff}.custom-theme .el-button--info.is-disabled,.custom-theme .el-button--info.is-disabled:active,.custom-theme .el-button--info.is-disabled:focus,.custom-theme .el-button--info.is-disabled:hover{color:#fff;background-color:#85bbd2;border-color:#85bbd2}.custom-theme .el-button--info.is-plain{color:#0a76a4;background:#e7f1f6;border-color:#9dc8db}.custom-theme .el-button--info.is-plain:focus,.custom-theme .el-button--info.is-plain:hover{background:#0a76a4;border-color:#0a76a4;color:#fff}.custom-theme .el-button--info.is-plain:active{background:#096a94;border-color:#096a94;color:#fff;outline:0}.custom-theme .el-button--info.is-plain.is-disabled,.custom-theme .el-button--info.is-plain.is-disabled:active,.custom-theme .el-button--info.is-plain.is-disabled:focus,.custom-theme .el-button--info.is-plain.is-disabled:hover{color:#6cadc8;background-color:#e7f1f6;border-color:#cee4ed}.custom-theme .el-button--medium{padding:10px 20px;font-size:14px;border-radius:4px}.custom-theme .el-button--medium.is-round{padding:10px 20px}.custom-theme .el-button--small{padding:9px 15px;font-size:12px;border-radius:3px}.custom-theme .el-button--small.is-round{padding:9px 15px}.custom-theme .el-button--mini{padding:7px 15px;font-size:12px;border-radius:3px}.custom-theme .el-button--mini.is-round{padding:7px 15px}.custom-theme .el-button--text{border:none;color:#262729;background:0 0;padding-left:0;padding-right:0}.custom-theme .el-button--text:focus,.custom-theme .el-button--text:hover{color:#515254;border-color:transparent;background-color:transparent}.custom-theme .el-button--text:active{color:#222325;border-color:transparent;background-color:transparent}.custom-theme .el-button-group{display:inline-block;vertical-align:middle}.custom-theme .el-button-group::after,.custom-theme .el-button-group::before{display:table;content:""}.custom-theme .el-button-group::after{clear:both}.custom-theme .el-button-group .el-button{float:left;position:relative}.custom-theme .el-button-group .el-button+.el-button{margin-left:0}.custom-theme .el-button-group .el-button:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.custom-theme .el-button-group .el-button:last-child{border-top-left-radius:0;border-bottom-left-radius:0}.custom-theme .el-button-group .el-button:not(:first-child):not(:last-child){border-radius:0}.custom-theme .el-button-group .el-button:not(:last-child){margin-right:-1px}.custom-theme .el-button-group .el-button:active,.custom-theme .el-button-group .el-button:focus,.custom-theme .el-button-group .el-button:hover{z-index:1}.custom-theme .el-button-group .el-button.is-active{z-index:1}.custom-theme .el-button-group .el-button--primary:first-child{border-right-color:rgba(255,255,255,.5)}.custom-theme .el-button-group .el-button--primary:last-child{border-left-color:rgba(255,255,255,.5)}.custom-theme .el-button-group .el-button--primary:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.custom-theme .el-button-group .el-button--success:first-child{border-right-color:rgba(255,255,255,.5)}.custom-theme .el-button-group .el-button--success:last-child{border-left-color:rgba(255,255,255,.5)}.custom-theme .el-button-group .el-button--success:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.custom-theme .el-button-group .el-button--warning:first-child{border-right-color:rgba(255,255,255,.5)}.custom-theme .el-button-group .el-button--warning:last-child{border-left-color:rgba(255,255,255,.5)}.custom-theme .el-button-group .el-button--warning:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.custom-theme .el-button-group .el-button--danger:first-child{border-right-color:rgba(255,255,255,.5)}.custom-theme .el-button-group .el-button--danger:last-child{border-left-color:rgba(255,255,255,.5)}.custom-theme .el-button-group .el-button--danger:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.custom-theme .el-button-group .el-button--info:first-child{border-right-color:rgba(255,255,255,.5)}.custom-theme .el-button-group .el-button--info:last-child{border-left-color:rgba(255,255,255,.5)}.custom-theme .el-button-group .el-button--info:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.custom-theme .el-checkbox{color:#5a5e66;font-weight:500;font-size:14px;position:relative;cursor:pointer;display:inline-block;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.custom-theme .el-checkbox.is-bordered{padding:9px 20px 9px 10px;border-radius:4px;border:1px solid #d8dce5}.custom-theme .el-checkbox.is-bordered.is-checked{border-color:#262729}.custom-theme .el-checkbox.is-bordered.is-disabled{border-color:#e6ebf5;cursor:not-allowed}.custom-theme .el-checkbox.is-bordered+.el-checkbox.is-bordered{margin-left:10px}.custom-theme .el-checkbox.is-bordered.el-checkbox--medium{padding:7px 20px 7px 10px;border-radius:4px}.custom-theme .el-checkbox.is-bordered.el-checkbox--medium .el-checkbox__label{line-height:17px;font-size:14px}.custom-theme .el-checkbox.is-bordered.el-checkbox--medium .el-checkbox__inner{height:14px;width:14px}.custom-theme .el-checkbox.is-bordered.el-checkbox--small{padding:3px 15px 7px 10px;border-radius:3px}.custom-theme .el-checkbox.is-bordered.el-checkbox--small .el-checkbox__label{line-height:15px;font-size:12px}.custom-theme .el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner{height:12px;width:12px}.custom-theme .el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner::after{height:6px;width:2px}.custom-theme .el-checkbox.is-bordered.el-checkbox--mini{padding:1px 15px 5px 10px;border-radius:3px}.custom-theme .el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__label{line-height:12px;font-size:12px}.custom-theme .el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__inner{height:12px;width:12px}.custom-theme .el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__inner::after{height:6px;width:2px}.custom-theme .el-checkbox__input{white-space:nowrap;cursor:pointer;outline:0;display:inline-block;line-height:1;position:relative;vertical-align:middle}.custom-theme .el-checkbox__input.is-disabled .el-checkbox__inner{background-color:#edf2fc;border-color:#d8dce5;cursor:not-allowed}.custom-theme .el-checkbox__input.is-disabled .el-checkbox__inner::after{cursor:not-allowed;border-color:#b4bccc}.custom-theme .el-checkbox__input.is-disabled .el-checkbox__inner+.el-checkbox__label{cursor:not-allowed}.custom-theme .el-checkbox__input.is-disabled.is-checked .el-checkbox__inner{background-color:#edf2fc;border-color:#d8dce5}.custom-theme .el-checkbox__input.is-disabled.is-checked .el-checkbox__inner::after{border-color:#b4bccc}.custom-theme .el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner{background-color:#edf2fc;border-color:#d8dce5}.custom-theme .el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner::before{background-color:#b4bccc;border-color:#b4bccc}.custom-theme .el-checkbox__input.is-disabled+span.el-checkbox__label{color:#b4bccc;cursor:not-allowed}.custom-theme .el-checkbox__input.is-checked .el-checkbox__inner{background-color:#262729;border-color:#262729}.custom-theme .el-checkbox__input.is-checked .el-checkbox__inner::after{-webkit-transform:rotate(45deg) scaleY(1);transform:rotate(45deg) scaleY(1)}.custom-theme .el-checkbox__input.is-checked+.el-checkbox__label{color:#262729}.custom-theme .el-checkbox__input.is-focus .el-checkbox__inner{border-color:#262729}.custom-theme .el-checkbox__input.is-indeterminate .el-checkbox__inner{background-color:#262729;border-color:#262729}.custom-theme .el-checkbox__input.is-indeterminate .el-checkbox__inner::before{content:'';position:absolute;display:block;background-color:#fff;height:2px;-webkit-transform:scale(.5);transform:scale(.5);left:0;right:0;top:5px}.custom-theme .el-checkbox__input.is-indeterminate .el-checkbox__inner::after{display:none}.custom-theme .el-checkbox__inner{display:inline-block;position:relative;border:1px solid #d8dce5;border-radius:2px;-webkit-box-sizing:border-box;box-sizing:border-box;width:14px;height:14px;background-color:#fff;z-index:1;-webkit-transition:border-color .25s cubic-bezier(.71,-.46,.29,1.46),background-color .25s cubic-bezier(.71,-.46,.29,1.46);transition:border-color .25s cubic-bezier(.71,-.46,.29,1.46),background-color .25s cubic-bezier(.71,-.46,.29,1.46)}.custom-theme .el-checkbox__inner:hover{border-color:#262729}.custom-theme .el-checkbox__inner::after{-webkit-box-sizing:content-box;box-sizing:content-box;content:"";border:1px solid #fff;border-left:0;border-top:0;height:7px;left:4px;position:absolute;top:1px;-webkit-transform:rotate(45deg) scaleY(0);transform:rotate(45deg) scaleY(0);width:3px;-webkit-transition:-webkit-transform .15s cubic-bezier(.71,-.46,.88,.6) 50ms;transition:-webkit-transform .15s cubic-bezier(.71,-.46,.88,.6) 50ms;transition:transform .15s cubic-bezier(.71,-.46,.88,.6) 50ms;transition:transform .15s cubic-bezier(.71,-.46,.88,.6) 50ms,-webkit-transform .15s cubic-bezier(.71,-.46,.88,.6) 50ms;-webkit-transform-origin:center;transform-origin:center}.custom-theme .el-checkbox__original{opacity:0;outline:0;position:absolute;margin:0;width:0;height:0;left:-999px}.custom-theme .el-checkbox__label{display:inline-block;padding-left:10px;line-height:19px;font-size:14px}.custom-theme .el-checkbox+.el-checkbox{margin-left:30px}.custom-theme .el-checkbox-button{position:relative;display:inline-block}.custom-theme .el-checkbox-button__inner{display:inline-block;line-height:1;font-weight:500;white-space:nowrap;vertical-align:middle;cursor:pointer;background:#fff;border:1px solid #d8dce5;border-left:0;color:#5a5e66;-webkit-appearance:none;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;outline:0;margin:0;position:relative;-webkit-transition:all .3s cubic-bezier(.645,.045,.355,1);transition:all .3s cubic-bezier(.645,.045,.355,1);-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;padding:12px 20px;font-size:14px;border-radius:0}.custom-theme .el-checkbox-button__inner.is-round{padding:12px 20px}.custom-theme .el-checkbox-button__inner:hover{color:#262729}.custom-theme .el-checkbox-button__inner [class*=el-icon-]{line-height:.9}.custom-theme .el-checkbox-button__inner [class*=el-icon-]+span{margin-left:5px}.custom-theme .el-checkbox-button__original{opacity:0;outline:0;position:absolute;margin:0;left:-999px}.custom-theme .el-checkbox-button.is-checked .el-checkbox-button__inner{color:#fff;background-color:#262729;border-color:#262729;-webkit-box-shadow:-1px 0 0 0 #7d7d7f;box-shadow:-1px 0 0 0 #7d7d7f}.custom-theme .el-checkbox-button.is-disabled .el-checkbox-button__inner{color:#b4bccc;cursor:not-allowed;background-image:none;background-color:#fff;border-color:#e6ebf5;-webkit-box-shadow:none;box-shadow:none}.custom-theme .el-checkbox-button:first-child .el-checkbox-button__inner{border-left:1px solid #d8dce5;border-radius:4px 0 0 4px;-webkit-box-shadow:none!important;box-shadow:none!important}.custom-theme .el-checkbox-button.is-focus .el-checkbox-button__inner{border-color:#262729}.custom-theme .el-checkbox-button:last-child .el-checkbox-button__inner{border-radius:0 4px 4px 0}.custom-theme .el-checkbox-button--medium .el-checkbox-button__inner{padding:10px 20px;font-size:14px;border-radius:0}.custom-theme .el-checkbox-button--medium .el-checkbox-button__inner.is-round{padding:10px 20px}.custom-theme .el-checkbox-button--small .el-checkbox-button__inner{padding:9px 15px;font-size:12px;border-radius:0}.custom-theme .el-checkbox-button--small .el-checkbox-button__inner.is-round{padding:9px 15px}.custom-theme .el-checkbox-button--mini .el-checkbox-button__inner{padding:7px 15px;font-size:12px;border-radius:0}.custom-theme .el-checkbox-button--mini .el-checkbox-button__inner.is-round{padding:7px 15px}.custom-theme .el-checkbox-group{font-size:0}.custom-theme .el-transfer{font-size:14px}.custom-theme .el-transfer__buttons{display:inline-block;vertical-align:middle;padding:0 30px}.custom-theme .el-transfer__button{display:block;margin:0 auto;padding:10px;border-radius:50%;color:#fff;background-color:#262729;font-size:0}.custom-theme .el-transfer__button.is-with-texts{border-radius:4px}.custom-theme .el-transfer__button.is-disabled{border:1px solid #d8dce5;background-color:#f5f7fa;color:#b4bccc}.custom-theme .el-transfer__button.is-disabled:hover{border:1px solid #d8dce5;background-color:#f5f7fa;color:#b4bccc}.custom-theme .el-transfer__button:first-child{margin-bottom:10px}.custom-theme .el-transfer__button:nth-child(2){margin:0}.custom-theme .el-transfer__button i,.custom-theme .el-transfer__button span{font-size:14px}.custom-theme .el-transfer__button [class*=el-icon-]+span{margin-left:0}.custom-theme .el-transfer-panel{border:1px solid #e6ebf5;border-radius:4px;overflow:hidden;background:#fff;display:inline-block;vertical-align:middle;width:200px;-webkit-box-sizing:border-box;box-sizing:border-box;position:relative}.custom-theme .el-transfer-panel__body{height:246px}.custom-theme .el-transfer-panel__body.is-with-footer{padding-bottom:40px}.custom-theme .el-transfer-panel__list{margin:0;padding:6px 0;list-style:none;height:246px;overflow:auto;-webkit-box-sizing:border-box;box-sizing:border-box}.custom-theme .el-transfer-panel__list.is-filterable{height:194px;padding-top:0}.custom-theme .el-transfer-panel__item{height:30px;line-height:30px;padding-left:15px;display:block}.custom-theme .el-transfer-panel__item+.el-transfer-panel__item{margin-left:0}.custom-theme .el-transfer-panel__item.el-checkbox{color:#5a5e66}.custom-theme .el-transfer-panel__item:hover{color:#262729}.custom-theme .el-transfer-panel__item.el-checkbox .el-checkbox__label{width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block;-webkit-box-sizing:border-box;box-sizing:border-box;padding-left:24px;line-height:30px}.custom-theme .el-transfer-panel__item .el-checkbox__input{position:absolute;top:8px}.custom-theme .el-transfer-panel__filter{text-align:center;margin:15px;-webkit-box-sizing:border-box;box-sizing:border-box;display:block;width:auto}.custom-theme .el-transfer-panel__filter .el-input__inner{height:32px;width:100%;font-size:12px;display:inline-block;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:16px;padding-right:10px;padding-left:30px}.custom-theme .el-transfer-panel__filter .el-input__icon{margin-left:5px}.custom-theme .el-transfer-panel__filter .el-icon-circle-close{cursor:pointer}.custom-theme .el-transfer-panel .el-transfer-panel__header{height:40px;line-height:40px;background:#f5f7fa;margin:0;padding-left:15px;border-bottom:1px solid #e6ebf5;-webkit-box-sizing:border-box;box-sizing:border-box;color:#000}.custom-theme .el-transfer-panel .el-transfer-panel__header .el-checkbox{display:block;line-height:40px}.custom-theme .el-transfer-panel .el-transfer-panel__header .el-checkbox .el-checkbox__label{font-size:16px;color:#2d2f33;font-weight:400}.custom-theme .el-transfer-panel .el-transfer-panel__header .el-checkbox .el-checkbox__label span{position:absolute;right:15px;color:#878d99;font-size:12px;font-weight:400}.custom-theme .el-transfer-panel .el-transfer-panel__footer{height:40px;background:#fff;margin:0;padding:0;border-top:1px solid #e6ebf5;position:absolute;bottom:0;left:0;width:100%;z-index:1}.custom-theme .el-transfer-panel .el-transfer-panel__footer::after{display:inline-block;content:"";height:100%;vertical-align:middle}.custom-theme .el-transfer-panel .el-transfer-panel__footer .el-checkbox{padding-left:20px;color:#5a5e66}.custom-theme .el-transfer-panel .el-transfer-panel__empty{margin:0;height:30px;line-height:30px;padding:6px 15px 0;color:#878d99}.custom-theme .el-transfer-panel .el-checkbox__label{padding-left:8px}.custom-theme .el-transfer-panel .el-checkbox__inner{height:14px;width:14px;border-radius:3px}.custom-theme .el-transfer-panel .el-checkbox__inner::after{height:6px;width:3px;left:4px}.custom-theme .el-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-flex:1;-ms-flex:1;flex:1;-webkit-box-sizing:border-box;box-sizing:border-box}.custom-theme .el-container.is-vertical{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.custom-theme .el-header{padding:0 20px;-webkit-box-sizing:border-box;box-sizing:border-box}.custom-theme .el-aside{overflow:auto;-webkit-box-sizing:border-box;box-sizing:border-box}.custom-theme .el-main{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow:auto;-webkit-box-sizing:border-box;box-sizing:border-box;padding:20px}.custom-theme .el-footer{padding:0 20px;-webkit-box-sizing:border-box;box-sizing:border-box} \ No newline at end of file diff --git a/admin/src/assets/imgs/bg.jpg b/admin/src/assets/imgs/bg.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3002585059ea9af9aaa8b26ab9e79893e8ad65a8 GIT binary patch literal 71811 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%0AY+8gq(Z5%*x>CDMnH^QLy_ZkO%Qz@ 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 STyU72qU>z7jyd?X_5THA1Wus< literal 0 HcmV?d00001 diff --git a/admin/src/assets/imgs/head.gif b/admin/src/assets/imgs/head.gif new file mode 100644 index 0000000000000000000000000000000000000000..e33fb4aa3a5834d96845185527a08077c2b3d6ad GIT binary patch literal 129103 zcmZ_V2~>>z|M>swnti`UQ)xF*D#WxeD$}YBSBW+D-)jZftJxJSd%Olg{-@zkZc|9hv(&C;d7m{VKa1 zlzwfS`|?$GNXN#cV}sJMUg=n)bgb>`*w?RPV`HDjq$4BJk+!cRvWrIPNZr`T*z8E% z+(_f6k;OwgI5@a?t{WT~oExkg8yxvESSRi2k-aVLt?L~enCq<@>mB*hTlclM=56ob zr`|^ClNxDT+gNYS)84k8o}RC5H6!i4(#FP-w!yKs8foK|-nPYKq`5*`S2xyJGt}5C ztt%gEtQc%;8+>%Jt?`kxrsh*!g|w!0u&(WGUFk?&MQ@!@T2awf*Vt26JXllrwx+bV zrm^wXeQ8<2U`=UzbwO{%J?YuAgB7KXH3fez3fd~_qy^azu4E6E7POVt)nBY>E3J`c zXZM^vD|<<^Q+f-s>xwJxoKI;isF9|~&J}G1*%H}Bc12ruwlqFP8Xx~KC#6nyo0W1W zyY$NG__@PJrBU(HsHn!2l)9AC((I^fDFq)RV;ke+8{<>z;?LB@$5+P}+>!n4o;|Wx zLCXG`sDkU!*>zFzx1*w@ety~U`zpe-Yr>;0g{Me8J(Ht@DuPo)zWZu|BhLrNmjopw7X-wY`o&A_><;hqIp-H%>Up@-GhAwES?U>F;29kr)b1eN*)(2->dZt+V zA(oz=u2xcI*)Ck!(m-!{6x}Y0ZW%6T5H35@?ew&m z;RMTYf{ixexRlwpyvrFdjguSfU+w3cig)4$^V+|U_|{(Ab_%HOAf1U?x@z;~mQ00L*H&NE z@w$0!XBJ(UU%I85eYB5%i!!RwuVo zUSw8c+dA^mp~ByhTbM1E4%PyCmAyNk6ioo-qp5-NDf4WpU7OCgfD1*JukRhdJMYOn z>A`;RScl?7X6Tih?>Miss&fJxN(c7q*7YlQX;&3vFZ)z(T`eT)ma+RSsu+4N<2XKO zOCL@VUeSk(Y`305x%e@zrK9w$-$lEGZc*CPw)QfDJxRllvt50)?fTf6*R?nDX!-#g zNp#iO!<~$mjlAsC^^xCEyc6n!C`R;$vI=!u3dSMNvboX+ty^C(1hRMZZOihE#R#dM zRe^Z**s3Luak`#FA(U3?Nwb+BS}|_@O2k`|=lG=sPtpy!H^ks!USuk4EFIi>PHq1! zcgtx)7-aQw{ykBN_(7QoY)d)))Oxbs(^)wnL;5ataJpvA`oIe$cfRGLtM$TOvk%@ zX@@%+B@Rkk)V{SG-+Sn`SD4xxIM?t4uG*Hc1~$mFkR${X?tTVEDE+D0Ob3EWD9@Il zl+Lro-Fcn=c!Ne&ocb#Fpv&UU{XTo&gKEm2n^!PGO24%;1aPPEe8eRu)N^aj6U%AI z?Z+6^ZnY$Wk`dftoxAV?Scd!3S9%CvJef%I2|oWO&T>i165ytAw6)FYSr40-lal;Q zZvzIO#F|H<@b{gvm@RlEidEv$$$shb;)Cn!0^7tX7eNONdV5q$nK;Y~1o% zL%~URQXUt~c3$hIUcTC^&8)C0Hxa$mC!zMavIwCc3522}%8qM-Y?NY$5Vy)nlX)c7 zxrRfS0DVvTlQd-WabuO1H8YkEfB@)d5+aQ7*X0JF{(WK+GRE-W`_pvY( zF4pQU{d7SN&u8UlILMPwWMo3n36v04h;6Y0F$NX{ktU$b#)gYq8LCRoWVKr-H@&;0 zF)c|mZD{Ur3Tst6-<59Nbt~K5>z($VAt&oq?>1zg1kk2Gg8Ga>$e!{TwLIT3%%P8O z%EV&_ZL#!-^8Aqg#NFy;kFDC%45+0P(646*6UG(>U;@dNK55ot2GmWjn|*BriN=+B zn>5YcC^<@4qp@2wzmTLQ@69)=tSL62T$oIA33ssi&Zf)P^H`&u#Lf%_6W`aH!<4>t zXpLz~F}Hty4*`)kJ%+4A?a*M2xAX0mS3J^G1PK4bwPFVy6#>yF8@p8(yM8b+_h@!` zP{?lp)qAygogrUN!uiBj;jS-beYCtSPI31SQFpF#y11aFigO-r%-$!&pYeH8*lAoi`mTkG-^royU;J#HCxmv@#$yi-jT>A9d0@N(f?)A<3R^Ru%S zxFM9r^KMslj&7-{*CqLXtv>nvLl%?X7T)W$5DM2`$&T%JuvTL_86+It_>s`xqI-8j z$1Pj!t49xhXg)1PxQBN3mXCoPpPPBO+Jf?WK1S&rpwOe4O>9J|n=;RBW4zdTS!f|Opb@5v+Zx_K zW&-;#1COmAXq90?f|bbQ6+xTVf3l13djbG=+I`^cXfLLJztD-;VcNG&WWjUt%C^Mp+L9E3OsIcot2)AUJRuj_ht;Luy7v^(O_s zG)%EJZuVB?JiDVkk5cqO!tBG@avzv@)(-ffMi{bmIs^TJ^F|y4OkIjq;F$e-4uy!; z4^RjW8y0N8?Fj9;5$}&*FKWiE`X?DxTZLcWbIl9KOnxsfed5q`(OtBcU;2KN&wbW@ zk5juHwrt6*PuI@8(m*s$)L3_Tov?a$u!va(2y`>uE#>eL@-;Zl7+USa~zy(WYoG;gi*T8_f+{ zM&E@$16a2&WY&N60nb(c|X%>6v^3s3%yq_I4OPL5i{vlC(z0A>~ zN^;;?7)Rp#MD`4z1{%9Be0)a#f=Qs~Mqq9~dmHNXdHXZu@d|b7^^FGp4+DRS!y`}? z_35L@Xn>@p2^~vHH~p8H;?i9T-Z&ArAw@WI|R^U|l=@H$}Yc<7tsgsR;;kXx(%*RX(m8hK9t%XdcF0h;d9QJUsP436);rAh~HQ>HnTJ%|p;5S50| z<|O3Tl@<&HcOM}82oj678)(wOb{!)OK$1ud))H`o0L>F#Wi^1RWS-F4YwYBl^7@K_ zo{uSmi=W`&(YBzzD9I57az(U8Ay`qNbdHm1cf_luEvjS%l4ctJQ9@eD!#_r7uX#lN zrc$ANF8BQ80AnIu^XmMY;<|VB)P*102@CoA*ENTWiwA? z&F@k*BHd$S$$ZDFTM5Iw4N+HoP55|>7yBj~uTRg=Xx`J!2Fr9a=lE2G6tC7ggTX;s z1qXfA2;9e_B=!+DW*9V@dPEbPOoRs#JxM(>0JK?vmc=qIkxOvInL_Q zVrDJ}8etN+Fg`|v{oE0EWUnuKlo|=6W-Be0zQ87MPwU2=j-g|f>G&}b?I|4(#aJJ3 z#E0Did!-WUqhco63$)Qowc1UXW>SxcloPnPrDo|2m^dpW{ZPzNxr9j;;FWv}mEulY zaL7-^IMBgVnUDR*CQ>?azvz}-d4P@p70$$m!x%jgSn-kYlS%dN#M_HfT^RUTI{t`W zjwTmZ8d$i!6Ys&=M}a*)w4fwh(t~-E>j>?Ah8j_Ta+HwXbGW?#!5RiDVn{#vWbe45 z$xvf57eC9#yX^LejWIyNG_E>tjsLDA&o0c=ArMHQKvZE z&-ZB)bJPKt+QN3S`v$yZQ`l#fLhs{d`5AwWVkZPtmMF~~fX0}Fy@EWe4$=f0TOC?b zWdYydK=yZH4FJ4eT-i>p*KU|tC?aTlE_;g5&H~2@m{@xds6=R<1!|k=&ghBMkG;L#x~^{Yd7S-m65|{Q%xM^YUIkW=AndVFM0E9u;(|+2OR1 zpK+Oam^2=34xv_hKTl6LL29j{3XCyA&uecodZC# zFto?lZ-7HY6%Bw=U)8u13d?m#CyVf>yO)|LW4{k14ebHLK5MHSs~R=R8;B+ zuMy+ArC4Z2LiNKcG3nF>UV#c1KgGvCX~$KxffIZR;heQ8i*!d!+Tu?zVTY0V*b)}m zW8y%A)7mkZmMYnRX%v3K5-Tgz*y~vJ3 zHzcy}9(Y4g3KP&W1?RVNh??}W!lRqjc(hZiqN*N5KQ0ba2GYXXRUi?0Sm32Bz)aJr z;}vT9T<8w#vVUl%mxPyNA-^^sH**DS<3LVso^f2Lkau;}9<#%{%?`C6GUd?Xm#Pt2 zF?Jb;XC+kQDyBS>*7e|?G#ON4f;3iRzkg%@YH%sftU(d=%n9A{jxZr*nE{tUJ`bwo zWRRAVX86SVhZal4Kus`!;{xCPn`T!x{aD>Z=h;V@f=!AM)ds{ngO3`$&^-tgd`(SW zlJ-#OCv`BW4B{=Q6V_%vEg0)&L(N)0JI z$2~M|6J8RWzq=U+fd52!9i`)e?eHXz2xK8pE5K2K(Jy4*k*P8hrnZV3q7_h)0I8KleIX_tV6MHk0wf?!OFFlL z>?VMRong@;!ZJ05}n3Q zQm8Vwo2aLB-w^G3dLc^THzccKlaOia4Zck5VAYqP6 zCakU*K_Efs(?Tx95qG}j6Yeayd?)wrb3{vgGNV&5pBB!)zt{V;PGv5p<8?#Gk80*N zA(SOKpd!GGaUg^Vo~;He#9h_j&~Lfqj2-FI{vz9xknVK@3KPeZx70Dcqsb*tu{-h& z8XOmPeNuR!mZNqYhKi)_Ymc&^aR8SNf;;E8jxgJ+L7*F^IWzApIAV~HCVs${ia*X$jz+R^SP zI(dFOjtiE0lfKd|pFc9q2ipr!2Bzw5#dw{84{&=T%y zoDYS%q|DQ;+xGU?sNqB*=z7d+1e&r6wtGoA8?D%^ZzpbISdyRlFAf^i52t zo{A)bfEthZmNR&dj<*rx-h3{KnSVqVeA;!ODc+`Wczs;98p?!UIjK|5lRh0IeFGAP zC===tntRCYetUJ*$wEHmt2s0vCP#2aGjGsoql7l%?N^;b8&wzS3u-JmM_($_^jOl<2MgL)u4xCPt`}BVWG!`(^42_45JRr1FUp zaYwWx_9K@x@?|9vh5N-K(M>=j4YIrh?J36Ra!IvfGI2&iU-pfDky_6sWpfDIxEn-` z@f3c_9zOfPtFM^Ei$oYy=YH4WeP{7d4uVyMY^)P&bmBV~yBa{V1SmZoO0Q|!>g}}6 z#qSmuQLDMA3@&t+)zVY^#(^`<;-YkY65V&Be~Ui_{Ouktz#uwYEYsaZoIwwyz{ zLMI*K&L%d^XTP2CJxCg-L*E3{T+w{!E(}XJchnPPiRLrkqAwo&S$=WW_bbMmi``8B zl?9=>FTXMmeqZ(M$L(i743U{jCw?cbL)V>}dC>Ix_SYW@%+%#gbmp$_HgO9pPkrCe zw9q4+hEFXtuUmM&g#N!7H0S@$p!Vq+xqldxPKJ#B!=NVsfFEjqt*|q{2JU8CvO7*+9t|uTJ+G}2 zqm&k6yT>MV$-8un2|IJkL++vCO(%W%$yogBkBQh=i%T1lG6&e zc_>9KOEmzaQ`4jL;h5=dEE}b&rRk{PzaTo#W`7u3s>9Zb6>6`aIid>qhADqY-sGpy zM?FqJLo)I-I%T~_K04)W&E+dHBz3M7=k0u&K`K!LVPVidMT}7K96$e=)l-2XN%xrh zou_Ebo2!@C#PE@p;&_`#7giPQ;GCNr`@>%MX6-Lm{elQ-9=qKA2+(d>0I#iKc9?}T@H&ALkuwHD5Mu!-h# z?xRjrhCAODrNw!M)4Ygh~!HXr;3fSH619;$dB89lIEZck3DfeP15CY`j^`z@w*U z7Y-;l2$G+z)aUuX1Y>*t&V*JJtwD7v!(gr^T7P~Aix)B!mh$b&C<`(@?PD58-zo%>i zRZR%U3E6~&SleZi_ZpA+&9+iNgwhiv%GEO4&CYZF>Dtn&dP9VoY^dMN8bs7DFul=UeMMI!`3%-4HJwZo!iE>{_V`n4L| zVPU(K=y|r|ys+dSw^jXP+fZhd;G}tx9VXV&HSQK$wUX(rG+wDy*&%O(LpnD_x!wk< z?;P}a;bhZLMqE|zcEUAh0;?myz(aNf>`tBaAGak1h16wpGBZ7U`k7Zh7_AI;JcsK! zI!Jd%FXIn^=-WDfb*(&AjOhSyGbH4~_ko+l7=>umFlVwe0-N}H~ptK}@zU?3Mx1fX)aG7wlfa%I!cg4f-OBx2nq8-XsxMMq{4{F4P z%B}5rKB`Fm*?Epp0rC~oqXlIym8>ToquXGn{m*W#Zhn>#oB^43(#2f#utR4c>!F1d zgOglsU@xI+4tG$dDylUq7xtL#x~J5_XXpDNRBt%;mXbK|V)H^HxBva)5f`CZNuD(| zCF1$9fD08*zhye;qgB^%5XF)*LRZj(M-&c{lwXvnoNY(hTI^S@8%WbHU{@XXiRm=H z9?l8}$mho$818SHC;~urT!b<0=jpP9m*|DUjVq4ozgp@1p1zhJ%Uglqj?T9(`y#Z% zy#KY~NbMyReP?<6`*&0>a;e1SyiloO3JM9GeX6Y6Z1m`#sU3*nRb?Nxp2UOdJesZ) zWf|aUB2GFWd9^H2RC-PaNj+{=s?oag-cs?cobOHq*}T5dXziOOLiW3N|4NVGh_!Ft z5!Fy1|24FqaK~77FZ;PiF6GD*lh{26Jaxs9=~&%?p$;TYXKZG7dFz65z=n90F9w0CF2fOj zZPOsn=6tXFq~5N=!}LTY{C#X9pry*XVs@GQ)sGN z3X(}*gW{#elBj}bfv+E#q8gjtoLa{ZxDj2Gu3P%$yiO#OIDl+a?h{}XC%=AW%%i&I z@*}XM)dkZwa0o3N${^j`8wAq02e!BPYJLN9 z5vYM{_M;;8+#RbE_#-3tFm^N4R{(8*P247o(~w~(7kUmmdetknaG?re>d={EQUT>BpSX3eZ~J!2ARk|rW=a;KWGYZ7 zNa|W)SWfU(76NNvLYM;W5={EYS`*=cl>oFAqKtmqMPbVlS?qF-xdiAug$XNV?#ZFf zvq&a_tewT60Uy)Tk!>N2oi4}su+0jY7>oe(kw@I07c|Yr*Jfzy%S@9`SVc#t&c$f* zvG+L8EQ@*qCQSjf-Qu+mDzf(iDpSujVz@X1K4=pHP4e+3h=&RjBbFqEHxncR(%WK9 zTM2bqLgb2YuH0N8-6}vxmdNHLK2b9{yNiM5@=j^J)Zo%lmk?SGi?_)L9O6*Z$Cv0c zDO3DJrPF|dl$TEw`r6VViG;|1j%D5t?~anOBeC1tcc(--MpUrb7az|exQbDxJdf=z zKpRZOgedG`L3*j0>LO52fRfDvhA>!)#T`0L*z_~|p`-USpIDAxZ*OsWOI%Sh9s4y1 z?Ipk*|GUVJMXnh_>BEjPxXy+lTSQYwgf0+~>&1l4BDA$2|EM@#I09SfHCzfog@Mc z5utV1ss0@30gOM;8McN+a^r7^uA@~W(LdYCFPIp7F=zpwP7vUKN`3JED4`<7q#Hug z=c^Y~?o-ZjPTX*25Cx=fl5?4nsB=PAe=R}6qiyDudKD9wTt)5b0QekeA8c>Rr?$}# zD~kv}g`~?@tz1O~+P?Umbo6wR$3d)#A54?0TDdhgB9=XoE1Rk>!L&IJG|VEWGM&60D6SL}pNc4rVtijEWL0TeNP^f7 zU}Q079wvm7)-$+#H}P5pN9-^FO|z(eoK0ky@DnCnFNr?C73~KThd7XgLz`xkYw=1l z*8e5OrEkYg2xuc5h~bn9@u*#_OIk)?01LVy8>;!67MWEKNkzKkBUimSmbK>I{(AkAUfVl761C> z-boSpjEm)SAu_O@Ux3p(ap^t~KALpML#cEjbm*K+#9NQH-)vmweHbm^X3`@z&H7AbdQ!5s-r z$;gN(piD}t|Cu&cLO?k&(EGbV^t(Zh3n~GbFR|HE2+3&S;~D;60PaA&lOss2uvaQh&so4PHJHcP*v)oS@8 z9&z98ncP@n&-Dd zHrj&}0b!m+nZ{Pi0MsJ<4}gl01xxBL0D3GUACN1md}tvr~cyzKx7WXR5n8B|?I;SlFp$!D4al-*8RGuFj1TFa}wWej@w0nmREbAw}6*apZb zlZjE4G3c#^wz~=46VaqOW|{UKz>ZJt+jCEo*;BGqH4W*xT52kj(C(fdrPCSr=!Z={ zQ|ASD&!j%(Ae~bKPitR0&T025*`cTDG#gGB1Hp_hoP3k{bep&rDc$+S?OEwI>;f-~ z*6?2pnqLi~KXqCDrrzT`9p2i6tMN`lpdg-gg)VOFbI#ha`-==Jd~zlaFvxtaoebvO zdOq<1KO?1gP6fHk7&HR}2PaOAh}&-cVbF~1oiYY}x8{XrWNp_f40@`acZH zf4Kh-gJO3qGN@}!@H8M>2}y>8>xg%c%M6rQt=9cFsr&PQb4|Zd6uO&3tz>0oX$}-( z*BxCzcjo~gnJsJ8QLLvO(dy}VxNq-0%p8}rtNQ7jh>%(XV$ToNh63NWrBq00Bjf7& z-146d{u^_Kimi=g5_+sLxy|TZHFPTZjG6r4!>glU(Z}9vkzzozDmXGt_n#$RB z14(gJ{;#&aDo+69Bw(QlNI@`d2()y%x$u7&l#XhM@Qs^(T3_~@+p`lCzL=@8qHxfu z?3!F;Aa*Z)*RK;7eSJ4)1JkdR>a1IHzdbtt5m2FzKHQV}KMdLp0xJbXwUdhs`j_!T zWuYZqZIMAuCeIFr>|>x88T7_^UF>7t6r(u=Lp+FKs$X#-Oql*=d;iNQg7f9Vgm4 z^_)q1EC%eqt05$&HT{Rx=%CGEc% zbmV}TL#wrb4qvleX}`#zZyzmDmN6)Yqr7eO7CrfY40Kb!g!atgB|@$g64GGoHVJjU zr@MkcYWc3^cwOlq8#*o}Kky}}!~J8RJQ+C?y*LOwA0g45nSIZ2P``z*ngX)}` z4vza{pxo@1sy7bsqJe5JJ7akk@IR+Zl8KK74T{0D~-KKK0<4yth9ScAeSG#d?b|=T6MC#N}_ld{f|j z*Wv%T@%5J>Jab{g?_=xGw|33kJ@Na-vmXld8O>94jZ^s+77N#xov}Hw&~aixd&|O> ziv}bACxD`49ccFd9Y9;t{=Xe40GDc}lD1vX*Ks>U8r2+qQX~V=H3Z@R>Ol9%I#6TH z|J{Ld7duei_7H6MeX@d%C#N-Se_LTc}(2Lc(4Wj+Z??Bd&&|GGZw<69(GTc42LoAL-JFOU%WUv9QK*Du70 z`!;(P+cJ{mao@65)IZx{x1baz>y84`_O-pRdq3I%8V^m?>+r-PGe4wY>!-D&T`|D( zZ{;kKT>`UA`aaow-7~l6FN`Se33~L$y3C#L8MsTSC*?hquJkgth0Fjd7`CdbevH#0 z!pc3M-oW4eT?auYT~RdkvjZtsLw*pUDT-v+si?-=w&fu^=}bzvwWuXiAK}nRmw%+Z z(B@lv6e~RBeOHjNCm*dBl1Fes>t34?LTA15d(GUBC+BE}{>{7;a~UYpJW*to_=eo+ zRnO2_C%Rho6S)0Gb z{LlWUWj3Vo5|>K)?Fvhy7PHWEf3i^HEZ4;>wDSZ-o9nt>Qat+f?zC|F zsbOsdxHm;V1=VYnSuYB`Ir*K`YiLHnj26_?K7SLr&T2_JV`BsV;)T*RsU`MiA+6ca z8m&@^d?72CX8Ccbx%uREknbd`I^WylRBBfz-E7zccUeYLKGCWo&RmWLpTXq>YsT5Zn!y(ceZk*;`*a-Ck4goAa` z*e~q*qg+wQ%-yZ3+a1>aROZ!2t}yPzDxMXy5iT$O7J0-gaK+*cAS1h(HwKTS~x*;w- z`cTDP+^Rbrkxv{A2ZinCGvmz$50%-X_(Qn)E<1y_7z218*019$tjqRZH###H_(Ai#mrhX5#h_p_i`oAq2^>6RAfe$;{Vml-yPxN@=-&fJot? zmc$0rwhpab?`UzFuG8)FiExr=|ARCNdVTn?3lOISNUbD1{nwZ1R7&D+iWs1TBKzb* zz}1plIS-$wpv-tERm!)_-Nt`s?YfNBrUc^kVCD+EZi!j80I5h7g8KG7WP9L|K0SoZ zYSj$-3@@i?UP(XjoRQ3x!{vwqHTHGvBv81efU!Z0a_vlH>@lQI;QOx6yJX5TNFrCbISF9oulZUx# z@?Llaw&3LE(;oP<)+yB440~03exl#wDNMVt+2zq&ZnxcqrG_uFM+UPhFvs zc*QubBC%Zy4?+p5XdfXZfpbZ1nwv@wqoZV>`MmDOVwc2wDNgRm>XX1mJ=3(r6YWbt zO;z1>QI!FrPseyxS7!`l7~fPb&k}x$PYC?=*I(k{ZMXp63gm$i-@-)ZO&^_y?Af#osbl-E60P)J^I8lKBEoFS)pt z{X`GOpaSKCy%`ZVua|Y-YA)Y?ff4Fp@f}$Xh=QIgb3k3i#0NVWcjL8~&GGk3Kv-;_ z`BVS&iY^Zv%6R#*iqN}ZZPZX|J#*=sai>)sPp!2|gH^=yPP`RAk`HDlVZ|)|RXrjZl}CmUb#D&G)WPoNh^*RTZrABy&c-)$9?|*UxQywnBYIfNuS(KfumnrRK^l z<1aoPxc;;M-ItHIzsk0=Xh-0V+h)h1b-|ZFI@wACb^nyr(zp{*IIShIA;6BWk-F*X z+Kt;_|juLR7rymx23 z&De>UGbsn71L`av=!QJ7@sM*^9i$lkbx^g~UjE-2CB=J!?4$Cn3O969m)DARWVO2( z-OoIV{8j)qYpyO}QfBzjjDRLVTuTd}9++SQm_G={e1W;|?}c-N{V44~4g!7q4gmnl z_phZy7IA_P$sS@60O!uc8rNfEC8Sv%G%VOsWdv>l$oIK~g-;Pz+ki+IisNC@n51qA z>G(Hv9Sl8YVwoaCEE}E6f@XzeJFZ{Swqp(*9CIV^FaV9i)Frx&dM;9r8+Q`aVg`;JMvEf;fOOL!>S6N-ThX;hUr(q zPY{f}46nC=8Xv#cU|v4Beeq};#M_)=zdhMKB~Jj27;6I}Ko)Sp7y z4W69}FMAdyCeQ6qrlWUqarZHOc)y$3Dk0+ zI3|yPLcNs%Be1A+XPrGdw-ZLBGJg^g`n~cS%TZi`@)z@hFCF-uOk55Jooi^zFa}Nd z)Xl|;00%$Gq^vp1bmu^FSOj6R|AUUuGOFnWSZK8a6D+nu+^r656sTg3zS2`NL| zv&9xv3Dc^PNqGb-=nE*@&#K8L2WufVL)M2f(XvGJhzW6CLW~jNG|X(%@6+z^4$F$U zR2FizRryq0o(IqPfQZt?E$#57%sWu(U~&Ph;11Ka=c~!E^&F2Tqct&|ycs|v${QcE zpp#M&_O~gRD#1^-qF#t7hO?&oI8ct@m?i_e^lIL@=h#Or2HJcUX)CG%$sn@qwrOI= zIrvTwa5XP=L z-A_N|K}R!JVCb#T(jfqLAvdme6AL533 zYpxEhr*tD}GhFCRUuw)A=rO%4(i|$fR~aOP4kO%;c-pK4|KbX0!=c?3pOa|&m?8yF z5opef(hAVDFDa^u2_?gnnrL*LObFS>WK;A!>wJec>Dt~%2D^fy<>Rsf^OQq-3P6|G zp7M1G_}Hqn0c#Z@%8rk3lcdYq;-Zzx@?!Fspjy6-ED_RHUCl53E8WGQrE(-3Gp7QF4FROA0|RE(DjW020!);HV}8Wh06_jHDd-c)E=l z^{UmFcgC{8Ep`kaay^hR&b_9Yzs(ee0{ypdU}xPW*=izxQc$>YFurk6mV$~MPTXBB zlTZce6%{6rI>ybNOcu-n4Y2mkNY-mgn7dp>vWe(7TS$tnMlpCWU>AUvKKl!Kctm)M@0~vrm z*H!kH88|D&d<7;8Cbhwo2JUKe258*gQ5L>Zpkf}Nidtk)ethu)HH)2R(ONLv>Qz;p zL6j{HvrlTLVs7y9X`PDEm9Z2YT z-8K2%hDCYWnV5Nx|Iqd`mHZ+9b;H&>)r9vHTPU_`tW?dI1yQPFexE z`FWkkdN|+XpY4`0D3C>~#W+$3a^ifot)yGkDl@U<;Rfr0$3CQEz4NjW32hd%xW<5w zOU+$mQ2vt>dB6bk@wZekOSv`~}2JMwG=*Nf` zfDrQ&aj@e&f6Q)A3k23@mCXvwum7h8-QnZ*rr%UngR-}c3uw6#ATx2`sF!zGg~ILsQ#; zMG)m|_zVIi6_olrZ%jVE`70!N`yUULB#fl7pr>N&!>4QeK8{4;8jn_jUL4vCJe<)^ zkdf#Kfz7ivyJyD$@uvN<);v0shFdFRAncSk$pkn_>|B59*rJM7ncVwN911G0{!bY? zPV7lBG5-?f);QIEOtHU_>_U;8Try7Butt-}!OPaS+UWRfi_w(U_Dz$oerPvOlY!jJ zAxH0d6dZ+mMG48vnKBHW%Us0JFUF&rr-k%{vAqGU3!gTBx<)KfhH~Lo{%e_wK`3uA z2+fd<9qk8HfF?S9{5!chF`)7F^}|Fd17*U*-2)&Qh@R!XjLM}$%*}5|5cxxtOYb)K zmw)%4**3ftr3n+eMAeHPDoM+~vE=9|LAKqZXsLOpDJg&j(SSRFVy)1H2QdTiEskDkTlu*nXs6J9$UGMAff-S zER<95P33=@P#F7GC`8a^d;r=50APt4{$SFoi$Hv5kD$v~t%^mIy3=_5gfPWGst7 zPt6#zXRk?rXRSjwZkcV_u<+mnN?kOQ@%%gC+jrKp8PT%opqoGXcm3nqH1quJ%r49_ zbrAf2vrzQ^zlz$Y0c+H5eZO3;z*PM2-SJX@Z{A9jsi>|;*?akRH1OZM<5mA>cf65e zK%XoN9cKgVwb)mGvQW$9oqd}9RRh=6K%YE?HJ@%2%67+7yRQ~{`);`ww6lAViRf5d z^huO&|C5FKRYlEa4Btg=E^j+YlI=TAW2nk@$KQI#vOHYZx1|32HuWb z-v2)S&u8}iGulk6NlHv>L)piS3LKTUX3O?I+ z?XR-PUuLI^>FC$KoOsfAA=eJo3bT1$b5|CNieCF7&US8AQoeWh!IhUEk_i~t?v4O> zr73WFn@*>;9|kKXucf+>HaIEO!K#mX(JPG#-48UCsSw70l|L+C}j~eo_h2tw>p*Fs6B2KXXxQ zlhW=t)0&$#B7U+H%bl>EWb5}oJzGu`;|{}Q@F3RAc9JZ9b1GQpG5ePrYI(M+KV(351ak*}c zl(GBb2d_8wy zn9Z2du(=8m*d4E>uw*#~6C=$GNWXhsc6^N5S3kb!wzdh~UhUkY+7%kA^kV+}$?$1! zTxGFi4h%{Mn zd9x{id|v9Ejcmu~!ab?`g^9>hpOz-Jp-j2wlEnEi;M13yD{0n+MV8+9g`v)tAwCh; zLHq%H7AB0RPF9)9FgcZP-9r{#koRG@XkPHgH%!lyLijZhTFZ^u(BDJY z>7zwVfZ6bBCe|t=NvSgfZ+p3;ZBg@p>Pun!!d_l73KG+Y{cpXL4nhh#?GY;BFBc2i zEe_ufNlUYIV8zeVA@kJ(ik7gs;oYo$9}C!0G_BoA@2vRn0wO1iXt@yNNogTe~73Y1yN=+f4e zE;H6GU?`LfE_4FULyC8YLy#+aT{2(G#XM2YAEj}lI!Pf&vvH5iepZk$3GrvaxRQyo zxAVjuX{jko>XX#Jity$n&6F#fpy;}k^*>gJPt%d!3J?ni&<>3X@ibW3zT6d0P%daUwa{kBYrcGzO7=jevyJt`VDoLkq zC<6KY5FJF}fwNLJADA^P=#{6e?BZ!X+@BoyGK)_f)|~UyKj}LA^poy<{RlZ;wknl- z%DH<$QDYtfLVVM;$~4Wx23=MSk2~Z{^IxeJ>aNB8NrLd8|plkJ@~R!RLKK7))8;*_ZL!={EyS>wsaadc%nz^ zW~C--i_#`ygO{&%4H}$+bFKvzxEE+qw;hDGJIFey*BKEDf>v&Saw};QW1%gV@1z}( zo_NSk+Qx1S%9huXf;dZ~%K7Xrb0{wmT8W+?+MSo|z9FA#3018>r{(;-C?ZCyzQ{@x za&pa}@w$=bksmzG$H92CW%IPgCc$AsS|sB^>9_7+9H0N>*8Yf$dbW$$N$;rI2J!1} z5=|cD-1myC-I9)aBuS&@$4G(haX;qIK843oq(xV-P(gkA?0)Se4YU+h;&_RE=Sjx) zH%<0XZ?g^CsOQB~%bp`We3Sy$_VmSV>Xi)0urVrGA&Rf`mTQNjea#>ZtUfQ_3+u2F zQ-cm~U0ES=QakBM^+4mGgM5<_*Cxb}H`zxrMOprQg~Y}m-|5o>k!$YL@F!h%w)l(X zddJ8c)-6G6v)^3pEK6J?I{e}Vvq@a+kBbox+|xtx4W+NZ^RWZv@#Tp5-|y#bX2AW? zi(ngC_g0sV@z}Z31F1GAgw^k;73vMTP0eO3T>e3ap+oKVOPxRFZ7lm4OU^)BN4)wV zj^rNvpxc6~CQ**w(?rEQW;0_xBHJTP&+mwE%y@|5yZ0u~ZdNQJ?_Rl``?Ks0us(Zk zzd{MtZ9{D;ajJS~I<}WY2gf$i z=7?<3j?BH+Jrdqhb|$^O%HVHY*tY+ysxI*nFhX3+x92<9em3kD(;h|fVoig;ojlA} z{ru`0YVf#v?9}kI?~0AQ{B;8r=|{zk$@@qw2KA%QsoB~(v3v^R%6}E2$dmWJVn44% zuM_V`gmz_|gqO&$j^fxS?Wi^ZH4O_XKU9GPkh=gs%mK84@{mPs12rxeE#7XWEg<2e z_tg)Xpv~b@KC)PXij>TCmsuTVlSg@oQZ2=zp7IP36(O}03UkpWUKNmu8C&%%p#40g zoc!=dY^zc<9PA+&2iN8s0}7n2Yc@V0S0Y?wKI~9 zE_$S-$|Jp%P<#bOy361+5p9w~il48)vEH_G_tp&-T(*O;S{o`_NTt1{j!tvP7j7vT zaH!5jP=ccEl#D#Oe2t?Yp|oeS{w{o_6fLV_hv;TJu8q_e;GW7-E9u5<5UuC{<~bKJ zXbGgpkiJPt-h%-ks|De3Dc$W;Gi1h%y2IMkSUn^70oJ)zf_0^%cO;p02@t6)nasBW z^418WIq5e6b-%XQkIxo^guBri&C!3ZLH?lA-Up>v)tAGvaWwu6{hdUCS@7$;C zz<2IZ;H^9ayFs+`94I4EF$_XF`RQhd7-8I*MjZ6^i7{3x9MX_5psX6j;}tjuNJC~kw0nq}m}Lbv^MDKcm|6=$1(k_raZ2h;XTa#6^)bo1`q5k@ zTC{UcJF13d-)N5cVR7h3FIM3;%2rTz=N)ud0TV#xx>MdI0a$s~|(a(3D6e+1k zmb2;reo%_Uy84K&a8g+-c$>0!N2q6u8 z>I!c(JR9Z1^iWaRd)OBp#P|9jC8nh+B0Tg`I_BmM^nEF*${XDhu|ENe+N--pMSz=< zlA?w9SPtPX3#sLxoF$YG5b}^u)or82vX5c>a(3<_E#)K>Mxh^ZNMA-=23bhNh$EJr z&YlWZrVGA_t0#oiROXHy6#=%#PbCw5J?&0|$Bh&Pz)``+O&$bN9+O z*o;$I;mRD+OQFCqoh%iLWFb+TK<6&yFWLnG+xE|}l)=Io|2BfFyjV&B0=-O(x;GE^ zO-RucZl}HTIxnVm>(rMyW505boSPMJsskky5;TQ+mZM%rS%|qfcCO@_Z_hOY#|=OT z9pbM(2itGmVKro`Kg^_bXW18Dzt*OR0ygL}pJg3~8#)%kPCm6mzIp(Fno3n5HZ^Ou zp(Y1(#}{eiki6e<*>pKTq!6784aGr2hZ{%Y8sCv&n&@v2R9I^i?7USF<-Y@2J>cj9 zm4814zq#J{_89{gFCM<$_(|1p%V>Z+6RdOy&)ETvdx`W0^-x9|OtQbG8_+rmjmAN# z?SZgBJVb_Pi&l;*wXQNPMjdL3cyMmj4>z~$Z zsz1n6M^zXUOUm)Z^BZ`G#T_*-KJ5bwi{e9X7q-$;8-Hi-nkMxJuhZiDl-y<1tB3aj z|8i1B(h@QvMHIlTw({(=U$t%fg7&wL@U)6i5tAmlsI!_@;9q>#=~U_@zp#->c`505 z%EW1P-KuMa3+hkc-!v3A&xG)|LX^vE36&Q5r9$c`P|}6e1`ci(_jW@e)XqmrMLEUB zGf}+!p;Z(P@hhjI&`x+FdlyKWgM`@C!m3%E+oG-}P{%Xtpl#X6!pc=Q;*kRp$`4Jt zl5ZU=M8UAQ>u%Rfr*MT{KdO!C=Ocxzq9+twy0ujq#q7$&x`BonD*B3ZvA&`E>R@-{ znv;c^R$JWH494Bt>Vy3$A`Dgd{0`*T>lrJ}zEcPSd1>h2E{}JqlFnel?5~TewZMD? z{)Son3=$QzM*<`&q{@*O5BJ>Hm_EV)k$lC_uSTAoi)XI5I)v^Qx60L1202x&yI>r% z+l&hS_l~5BA$x9AtEg$X^LD3i<~e{wr4=qW9<5L>xgim5dP7)#ouQ1|k{}J5B+Cav zJFzjh|940i) z1`z~ha3G-4@mcT|h=twaCZ`Pkd_i zDmiZd-FTlD6hXnr%UScWouGq}ESiYq;uf{yneZHF%WpHZRgBqkR|#UF8u`d`8Q$Fe zr3%!|A6#m`CLCt2_@)j#V{|I3CYRpg^miklueke3#S)shjjh(Y?m1(K3?aKV-MWif zKLbPe)^GO*Ftj0wTF5z`?(92P0MGYs#8?ll&u#9-o6c=Pm9nTZI+81X>bp+ z-N?T?#XhOk_=XJggN8o-Xf#`*pBsn{ndXsW-m&x4-x7ZNp;F%apF6G`>eDEECwptM zD%JVleyG*QVFC;pNC_8A!bg6W@?3#_kJ#^8~iKP^8zvi(5jm;GB2ZD@=HrTn1%d)BL6zSnG3IFt{(TQU)C6snR+MW2H{ zO$L2ZK!Y0O*aW+i!nHZj>N<387VTFiUvCR9{yURDw2b^5<*2Z3Ovz*H--_suhMa0N zNyf#=PhC$ll4(YbgNNEh2`CnV*89%J^zn0nBf1zkqW|zvXu^K!=Vj|YvylJdp^CWZ zXDcu^2ztJB+;3?KQSe3Y{4X9VEVbcaLSCXnJ$~^}9#Xzr`&TJ1o6KDLtzdfcA5pXb`3gkQlzY1rA#@?~ zHUH(e>ZM<|{m$fh-wP15I{o$P!(R;MOn4vr;r*#pbnJWM%hGeFO2y}Y_`HM_*(Vkp z8woHhNpUIh+xA&9=MPE3m%G3fMdth)hhhK@&H6ti(bWGXiRS)CNmT7WNTQ$r$5`n9 zcS#iT;BB{p_$+=)2BK?DVY&yX@6%ehH_?^Vjt-uB^lJSePt`fa-UG|d7_AiMd*8F> zZJK|o^BB>Nv}3C6z_X2u)OSldDfz`AXaK@%B%ZlG>4-YG&G#V8;f)xad#)!%Ho0nzjl04pKlD2=J#=(*_FSjF! z&l58O*rZ)nb+1+V2cl#Sa`Kn?kJ%55z+&i=J?xpqQ1-9IQ1;AX=YC9iLNRBdr!1r`my&3vUaeu zM*UE*lcIu%z=YBwcX;SIvsj5$9Um>TZFCe&b&od*LsCyGr8K!1_m(I1uCR`Jz0N)& zvNpHy&A!@fR+WyF@!)ao^&IAb3b3-maz(u$JH6UugZ~yj-k2aAM zIn*T$;a)Dma>}UT*I)>rAHMyySza|&daL7%?2}^7)^I(nq`&3o5YHqwUT8 zO_pz5T`1Q1qA=j_S~GI55YD?kei!NfSnoY7G0odDtcDT|t-P4pEuT&fNT$lpC#=25 zXy`@f&i6P|DAxP(+{^y8N_94K%)oH`t`hcuqcjb>^mx1v9~GO7KdTju#(al*1qXoLDhW%G_E+EzMcG0P6MW}LsOw?&cm`4P6hs1}lp zA}=|~c6`pE5jEH-Sf~+f&Ce=hQlK))e*Cmjb7DjnY8!*c$FR7jxbDp;eQCap`51Hw zlEO=&WUcT6)HrF2#)K%Ham%8eHPoU}$90ffEz64aX^uF$o!w0zXg*(fT&;j0>5i;7 zP)r?WS?}yDS4ug^V!grlGO+zjwiCtzLa+Q>(EnVV9oL$KL%THVgkPY=KWb5%wYgQ@ z(dCX;?l_VI7CAr9LLwhksQI=WR(l&$Vim?G4VJXp>9b7&%5>(DBa)*yY;_-~Nyo~? zQ9b@LofW@+);Th)l_w8jxWYL368J;S@w7P^DAlhrN4?iVtY+_inBvd3dUCrP%i=@w z{`M;QI3!NAo)N-&YPu<4x@6@BF6rtr0x3ziME0gN?3vYJ{epD!Y*r}wUiQf!v=n~$ z_uA0X`de0_3%P;pM6AJK_Kj;!4=AnV$khz2#e2^zY*+p~3RjOZpflJa4pW}{bdGklcnOih{ zc5N>$_md?aq6VYP7kK)t_A^D>OHynko+N{^g3~dT5hMqJaf!Y7Sdf|P=7`IR7jnPI z`So@XF1{i)tk{{0r$f3^_p`NI7oIPAHB-uT)t{`iycV`Zg=nP{@Qq` zjlD5v;2P2NwW@FRF~t#9Ye!kLsy*+8ZF*Ir^Xsoo-aV(Iq)&|fxD^2f3q_%7p1H;y zqt|a~9!=JCf4wL8!-dHskm1Fq#A%;k^(-#CYM!i7?wQ4T`5R$X3|7t-AC@r^lfE!i z4MpMjoL;I)^Fe8RM$-vTJ+oG1iaXL1#iif61}Su* z!eqD+Urv<8n-cF@P{FGBR+i|g5Q1u(a@-FI(&J)Y`Ol?8(B45RQZpN=tYfbeMADR*2vs_ zAvKYLZChQv}yJsGE}F{)-S>YyU}^M>_x(TIj2SoXE&Fq z@$&^ao3hJ-9Ceqp{xHH{arlD>{Leav z_gXJSx^_3_)FdtyJCH_fD7?%3Jo^GZR+8S>&&T`Dj&CCT)cA8RXo%w&ui?c)hiUy2 z^jJ&F*BZ6bRO83zvqQq?QtkbrFHWcb_!z;3ocT^>@kU6DMGI|kwmepVKMx_m4ONy$ zNa4tL4)PQtflu@=_$~5MbRh?*8AuP46edCC!;lNGoWL5P0PikA>1HG?7Gci-VGN?B zisR<#B%4^kW*pK&GX#w8Ev55~V2IDBO~^>5EPH|%q{Ab9F(nY+^1ub74ZOly;X<1r8Tsg{8 zh*?X=x(YEyVm)~dDpip9kcW?JhBmQ~G^Vlwhx}!lO>_)TQX#Nc z;V2>X8w+WW#F%r*XES(*da#xLcnKq?^Z>e&PmATCC`@1A!#!k1?7fd_6&PO6Py?+z zp?&-L3fN4Fd&mdICZ(SREJfSvg|LGx`+iAYyaa0|MUP*Ji?fFSN8JYlD}p!>!vqod zLm|f0!mwx+YLk!xVxOW6eR*kioFMOeFLo>h9mRExX5w0e8G&5fV(?q&0xXq~eG3E~ zuLx62>RR3bQSJN*@HvE$uwyD=Poc7!UXIyq=#_)xdJN(mKpPel7WC1xB{Z81CXrQm zfDq6K(qUQp3oPvpdz+8H*8-8U-M4H@$Tvuaj};U}?7>%xXlKBm2!vVzmN-Nd!UK3d z=+AzAWhjb0RJqjm5H@$?p7ReWemcHj@U?-7$t{Lmxmo!jFXt4ktKgMeqiDkataCK&`WM~L%SX@ zI607Y4ToliUt%kvIfWinpO1-!NNsexZz5W)5O2?-_OObn2OyyMT7;;b1Q1z-L9<|r z6#Jb^GG+@2A-G8qVb`#SnV6Q78hYe0%|}%6Dvf$quy<;MSNmK{G}lNbMwHRCKz2Dr z6Z?#vbV*S8N;i+pHnbJf+9l|)Uh)tVlX(zGn@B4A#Pe|Et_ZCyzvU_Kgwp9%EYfl} zI=)trILKM!2R>x!qz^J$au#hELfp8i*=0_(8f**^2-!@hyOqLuRE zv9Z1oU&A8Ta!8x_CnAgBAPA{qS3X=$eh4kOh^KjmB3zL#;RI!%&)8lDWi70oeiEz1_VYI zzMG};ktjBFj*I9`-|>h5R`BA))M)%whH?RidXPhY&yCG(c`3LALI$a9)!|e#v*q_NPA9c5!Uk`&B?>ZP>go z&Ugk=N;iPPPT`Vk6$`Hg;o!X14e~PlH&*2wUGQp9LTyFe6;U;oI7M=iEMfIgw`)O{ z8DiCjtXJ1h9X|SO{!FIscV<>Qm$o}~MUDXRv~)VdjZhIRI}ry3T=s>z*Q(-R$LZSn zz|nkm1p^S}c5*0iG?%^I_Uvit7Zz2U4++oQU}ZA<$$#&2^45)5Q13IN_rZZJlAU0m zc9K;|2toCLg-g!Oubmz*&KL)9kO4upw{F}hC++}{+nIs$>T;fPXnL7yi|N#_e8Gz) zP1k>EnN>ylhp@giV*PyBvxuLoBE`N3hO`5$07f9#)R2^`i>z~(ha$r2oQAd;FsZ>% zrejw~hOl=e2`^>TG4LO?igan%4;uA?Yfu(w)MZ&EgB!on!}ozV3vOGCqTvQ9=_ZTP zz#;|F+lhN-Hand!&&29e5<<>{;h6LdeW?=fJyd087>v z1w^h1^7%>4l61T~1T&-?3Mk%yOctdr2EOLuE!MOi5%+tXKNWkhQ!?s zfXON)!|!k3l7<)Fjjfx>)-g35U%4F(mGIS{53h$qO{oFkwmQWwc=T?rS})1oR;B_U3}_(*X-tK^ASa8{P|^33uMm9n2-`^271#1 zXg5>8O%kJaCGMHC2PoG=?@GV4z=v2n)D>seJ1<@j)p~xFP9HcndfjMc{eJQm$?U&e zP1i$2rxmY%v&rD=riG%4{`CiopT3DLEGwHE57^|I@j~M{2Sq;MVah+58!dqx& z!rU(c?G2|{Sts?SV8Sy#*6S}(Q}5KEIslVQ5w99=_z##A1de$Pr|laao4yEb{`ZWh zWT+p+>%v95|D1J*ixBX>ZS=@LuFwWhG_c`$a^Fbx(UGc;)Dv52qk_bO(j2Ei+WMk* z)I=t3&*fCxj0D9U7xZl;fq()wVJGcU~7bGXL4;Y|m zvJ3Cbo=@Z#vu64c4E=nm+)dPGKJBaID0oex8IGyF9MhN{V|q})i#ye`%Vk+a}m^KA(Ok15A=sPt9e1Rs++W^a&3X1em1#^n?xj zi)+Fc^-r?jrlueA8JL=#af+V#Q2(Nj@Ucla@5s8mFRKjEyqCp*h(;_0f5&8(HJCn| zWbxZ%7>`fzv|Gai?3n+ zuXbJGzhg=2OuK%G$=9m>uNy`;bY1HrZlO1>{-<3}8cgx_V|n@2oL+mF&SnIh)v>n< zIiC39dW?>U){lKT zaT!7G#O!pU-V5K}4TDcus@3g#ZlfS{h1)Us)WGcnS{1X>T~3+=97c-{?!a)h=dbiJ zP;~Qn59h;ITEC6(&NeJ@APdS`rgQqC44S$j{id`9?{&tCIjTG8M!5R*2O%#k{hH02 zO1Jow#1g!MO)!=OnbI{pt_%5dHZZjzR5V^)oE{UFYW^aP8Nd(l2)3^GLwUJxzoU1F zu|C6|DtPd4Q5nNeK16Al+XV04!?jy`_shIa?YVv%lC)a6=zG>f?k0Dw1KBB>>xv)2 zx8<1unt$<1Ht#`J-m0gwPq;&oQfI5-aBrfbnFwrN_HrCF?bz10!M-OG?0Z_R*rW>W zdb+1Fd3`&EuRPk-;-;)@Ix>t&Em)7UcOpC`MP!=s?ROG)-!9CnrmwDcVrGEp$td7c z5^651pvZ%gY2zw(VUnJkx~@>R@ubHZIUsS)8V{|m04I}>o?dSkA|+IM`ix4!MRzj3 zhZJU9?SJ76HkgN6VZ71c@@$V28Ci6E7~^%OZh2(>EhNM?X4rhFz$g)SFHM+;W~2yU z#nGB@I_Yv_anL_oo~We#2j*%l7*n~FXf({PxX?Z*^v>0Fv1W~Kh8W|y#!9>@zq}cU-c;u?;7kchn_!jFTO8u|nMgazctLzbR1?Ba< zFjf=FUN?khdn3}$%$FDw;-R(R`hvvu57haeFg}ke+H0&nE4U9!;>oeu{H#?^$E}ac z`PjRQy-DbAmq)&1%ydzR)ftW|L;I6ydDER5E2#-Ci)@sqS-aX|ox}qQPHhddOJb1L zTtKbQ<(t%&1#71Hr)&82*nE1og?O{X$-0+gl(Z}ZZP1&fZf-|h$62q;qy!VpuC{Ssa6*eaa=UdC&oVGL)DQ2HS@;i&SiP>dtTK?a`jD-%dpImnlevD6~BO za=h6H?P>ijy^gQ~rIMyu_5OIs$()|=YHi()H@2e8W%in3a9%vWg}QZTaL7FRbS;rzu6EtDgS;k1ekJ?0L$!r{ z$m{mvg=5$f>V6eeN|*z!&faJm9%^}*GO zm7`~LW%1_TI0e+4#m>$Q65-@Y%oiJ6OonG57CwgMA5+$~Qz=Qz3;CINLg&WmptB?V zvsMjJTFNvA`c6cYJMGyY`U?hv4Y# zndZY{mRjbA$ha{6u92cEy*8W3RXbL^B3))0)?-#LC=se3nte^9Db+kebn)HR4!FPb zT>SZ`0RjwnbH7;!+$_dtLt%>jGP}6A$;VFJU&Zrph_~6jw(v6&&H@8^`_{QBI~BB$ zDK+OqP_h6_Tzz8J4)EKXx$5WGWyP<43>$3};`;fwtV-vVV`}9RBcy&pI=M8XTwx`&6pN8P8YTPn>6)iyulDrKT*A07c4&e0rB%_L5a;v|)BWa`Eie zRV#$@KV<1ky^fpRHRe88O7J2V1?PF`N4=;)@5InFWhn7@Ji*X zthiRhO@0x^B@Ky8&dxuOXZkrFWgepYLGnLKZ|37@*|MBfr7JQ?HS z_0rR{l%*`Y&-)g$&<9Ejq9OJruM=vOnrz3#F-H;!@yChlt}L0imz(F_8)yJ=Q*2vh zGTb#W_I>h|*Cwh@7AEu2yTw?oi))lg1hkso=J{b-jeDw0_}CU_C(|L%+=#Le^!Zcl zC9Zb-ohF4)|JFZx*Ud=}>`k65XJM!s9tHEHElN4O5q)^V7 z5;;v94MmZLW>;d*m*A~O67#mzzx-oTj9((UP}7?C;!oWz^XHif(>L`x#JMps8+Y$6 zH~?h}beq9qy$D7md}=-T9ZDJngp40N^_Cs*MgPSrbVI5INVzSAsJYcU!3SI$7a0{2 zQI{7qrG?VvFzpfx{@o&t{-JXT(Mz zC#E|yupwNeg_owIy=K7A4A6&eQT&<`22%olr4pY$VLPrOO-yq=D%e;zXx|kkrZL)A z1@y1EF8945}RazVKTj27V9YnAY9;w=CnWu*B&8Cl@;4}`cD1T09#6hX)oC}1HZ zR=9Xs34Ej}^GFBYRS*ca`fEhlo&F^7W!5QLRKP{~0PxDAeG!rNVfU9{kUMD!s}I8F z5<e|nr4?;wrr1+$8*yoqpNDIglY)IM4I@-gTZFZ6l6W;Qs;BSdZM z^|`{Ky{}AMR|R{r(nqJ1w*Xm!Z>p4OYR|-g!#M^L)QMFJcoy*!I|J5JC$g#U`S^sl z%l4STpyqWGN7##Zk1By_&lHPkOTtDv`p@kvzdl%rp84vGi!eeiHfw^#f7bxmXczhe zlWN4?-rc-e@_;ZZz->vvJmivxOVAr3JhyMgKy{EBssJV}!@EhXlw){f0-m2I_6vLI zLvYwgf{w{7W{C?Hy&-&|?t;-7(wU$w44 z@mV84ecuVC?Z6k8zzq^wlr+w`!s;~2WrI+^IEEWL5gQ~T+!XHbWas!q8G!}4FcEga z0@4TO(XNY&3x&vb9%_vyaOVlIAkYG^pK64bUA4E6J&dVqL}#^ z|5Qwy%E;?y;+6~tg93h#i$8xK)yF%k{|4PpkLcuNc=3<~-dbfket?TyjzFGD2tHRA zL~)3PTw;`T7ylPg99*UB&Q1t)um%7qi-qhIry?RsMyu_)T1+$@|MU*(?rWR4frHy( zxPU0e-cdrN#19-o=V|OuVfc`sYE3xdD;sN&xsoh`jy;V~1~(%)X6_K}11F%<3j4td z{9zRbU!xV#&;3yZAE>}3yduchlqwE5?)=3zLGSdn<6LZDP^Lq+x3NG4&|Y zQ62<#3`XwQyGeNUp-7Q}cf@ow5S?l*&eVqJ4%MM|!R!SlcLX%=3XeuHEluyrp1>vhEC2)cqm%SV}d$nouD?e!R2C)2U~YVVd9yUbaERfQsC%fb@InfiA#`eS?wj z`C)u;cMC|)Zr)LRB=@boi-fkH4@LjDrhUphZsA|6mwjzfApPFmssz&SHSHN@(|qbX zrm^h+@hcAvbD?Kb4G%T1KlwF#x!H2}j!QJSaz=fue#)k>NK^E)HU}|Z=%nt>#?&da ze@1Y~*DW*BBfC8E0`?`BxNB8dKhIlj96idRs&d7m4*2$X$@_u2v%iE#i#jE__zQk! z@FofHq%r3SkOB{V5I{KIH4QcInL|KAB3ZBpIFC2$e>sorh{ywYr5~r{rH8`a5WVy% z6GEhyj#;uM17z?uTrbgpYs30h=bGrqV8V);RpTd#zBR~K7IH?6(-E|d#Ul2l0B9hE z`~;_XgbOj`Y6wAb`+Zoh796+j&rJYgd^IgFPTLRM$Xm+QtK!yR_to4S>$CDXxtJho zOt)5_xf3LDbmP({A%Yx~dq1g}|BEyhcV&z`yZs%IM)n>XJ=_p<*3cnk#)0JB^!w#N zo_}t`5Hl{mw+Ez=adJT{zolmnL}xc|d`Eq{uzscrXE&eS4&$Kfx2@HI0-2?QNpqzb zh!{N^_Ro+;Hh;5bVyxuwp~1USweG9~|3w<##4$#@_9o1n3A(BQ+Hi4b!-jiP&rN=x z33_>ov3szD$BA_Xw?}RQYbDR z47B~@5i{z6--eZ`yz*`zGk_WQt39Y`4i8$v-3xwBv$1#;OdJ@<6jJ6@2F#TPZZS~D zL7@f>GZUG6s#3h znM+duXp~v&%v9mbl~GcwsapYE&l*;O?WT**7(2-jEQQ>5`2z7Ac<-DY)@>nnK!%jD z5K zSCqHbt=*qnrSKPWR6j^ucvg!4twZwjVtxwWRE(-;OW zFI>j{0JbvQ`aimU8$BQJR~3FX05f&8IOZy$`rHj>hR6iD4;#moI6G{a*n;EnT_%3@AU7`>eM z-v3t_ZoO@s1)U^)9Bs{gKhpnsWD$DuU+q(bgKnDKb z4rJ&5v%{6?mYMdhGYkZv-EXd#S-<8O+86}bcbI72JAGmv~pYOfW zs*mx&9_8$c<0}teTJJ)Dub&1hn9MXgf_%6UqE3jFZQ4~moH;9H*%iAZIe2Dk>*BVU z;Fi+6i=v$L?uyrY7$XIl=Ve?dQR8+JYBD9>r9(2!UgsjFyaZ_Cz!hO z7miwU>2$Y`C#+0+)6ZCCL9(j{BTrAH%(X|P<##`H+kZ%&JH)TOjZ3f`rIE0d<8T#|MTm_6rWeBrCi@LA-J>8&Tb;Lfdj{EJ`?OLQF6s?Rx;1LJtgbadrQ(( zo^&{F>jEc#xESpbBT7@BEG_-^D_ZhKg$nq<8uN(z!P&z~D_4Mv>YNPa2T^#vG_b$U zf-q{l+67i;0``OPAhA>q@=28I>2R`XFe0x|m`n31Nus)nll-ndD75D}=v_+8i|-QA z-NK6qYJ4X(s|DaBVTGN(?3WHH|KD}U{31H*gaeXG5l2y^{1QtyG=+^ad2dIgiT>h_ z$A5E2ZV~R$vU{=T^p5`Kj?=%uqjEjlaBrrGVSz&lKCqnIeDI*~K* z#;Tk-qs}?BOx;;{viwQc5cPWIb*zXjA36gY+4l-po9&&5EX0go@hKZo(A;v$XV<>f z6~KWkC10pkFcWx|gAVZa!Wr0zZ1@RRE&#Cc{#)prZAYZVbqAKoV-?|+A1bMg2Bn$BmTslcLB9}Q+^ra>Z)sMmXJYr^jhnnMXO)j-G<$>r|geZ zK2#~XWe0IntxTf~AYq$TczC#QGA=8{O)?hDX`A%!W{&7@j zg|aqRF%UsNbxhua68g_n-1}+M>9Z!L0xLepuk%Q@M4QRdEQf+KOx%X>Q{fo2Jrf0E z#6A0RThbqKM>{xtmAl*~j4PDo8miK}YOObBuH=5<=}k&w+~#7H=sZ1&{+tG9`Aau` zq;3=>tCesc`JU>cdB(7u-1)cW`qODV!ttjAyM2Mcg(OTpn{%Y2MiI`*dmR#vo;Z?f zV|rnfWKZP<7bzM4`NuX>LfJZbdXi;^XXH%?>IwS{H?B2H)ZxNpm1)Me-1%HgH0Sxt zBOJ?{3?VV@r_}9Yom2je!=z|QvWA$~)aJcrd+|-{p|~D)P3l-Bm4Mc;XMD#unGsGrAAM+f5^*XC0`TidUndbv}q@j|Y1c;Rx zeK<-5w)!O7aW!I5*cImPMW9h67^R&n64zD-*?pQSeFg z7qm>a`3G9c7VBgz(JKz1`lB1#bbmujuM(ZjNq<30Taga9{LquHk`e+wJg8x5PO1U` zD!}+yLTM!oxaIwgOAYEUU3}`K{1#0CdaXz~UXl*#Wli8fLLjOp&2{p4h(aE}j?#Zf zOPl5!n`zIm%S)93_gavr93o(sU4UIm&1P2y`~@y~S@FNYr6_Yj8nM;)MbZ5||#H+MYXQNOV_>=KMOtLot9I}Ckf=aLeCZZf=k^sE~ z26_~dA+N%cW{0B7>uC1UeK%&KzLw;Dx4`(M&18%^oANg<(*d}ykIS3kmIA68 zCl`E5evuIuO!HDUU4#I;+`QXmH(-~XEap|^ErNskB8=OGJktBo47%K&F@rAe7tNr{g5T(pZ)wXRCa^+wSO%5Sk;TPIz8s|PWFg>|r%#o# zppuwh+;YJ$ZaH`H@>FKTsQ!TV`p&>KevfeZ(ici}qRH}B2 zymbK56Jsxk@_$21K}T_?m=-u4ZUxz^BvMk%F_7}300%UnaOX3#EH*9h_40>h$!T*Q7HxG;X|Nnnqv(MCQBrU>Z zX;X|AO3}0tSw?%-QHmr@mXM`sU!8?5 zpU*kxcdp-c{y1m;>+j~8>zdc?b$i_I;CP;r&e^H&K{%n3xu(Njg@J*IC4ITxPNKOm zXqtpr-jWc@N)hJTexR9Rw1sv!n$L@C}THpcc`ExMB@^1su8sNu=^aW}jM;58IEIFG*M>%Ofre^Mi>e zvdB;Q2qRAzS00{g45GL9$F8H z2bN~oa&P$f`5BZG0%#e~x0%3?L9{c8i!=Px11aO>Q}aXwoB#;W*XTv)C3zaap>#7~ zChc&V#VpzGQ!?qv*+P0~`Kd`TuB4gpy~vLQNO_>Uitt8nPnzNW^KHgYj-ojaOIhjy z#^6LdD{{^gUF%E4cl4yH*YY3eHawr33B?l*WODMdyi1ZpZ4pjKP5}_h9nnsJSZc?t z0L1bR7op5B$dlh>qzGLc&$y{XrSHnZ`3p9G&Y;27#mvfZC6jWV4Sn;eT|9`=%idLH5F|O!&OIh!mHN1OFZg6VNZp)I zZWmmmZ;Asexn^rvUH>-U8hgCAGR&JVLm6!EB0jnIi=<@miCGnNg zVQO*sh!$=a_pFFeN2iQ&NEXbdH+Za8bH#$YO)qgn;>E35IQQ0-z=ynl3DL1ZPy~EP4*JBi1z2&NI93@@ zO66&>V42%$lk%%v7ZVRko}grxdRQR;Z2AEN=9qACvV>CdE#kz2%*hY>hjC*p+}-b! zfj@s$nB&~|06YHi0mPPEZ3}r#7B@Sab$|n%tpXozzhJebzqz;Q3dp72dt8E!@(?7v zycW|HalWF>%^OnU?hm+a(56G~<+L4XeDFE8-9P(&pkkJBS(HvaOet@+#%6DPacq&&^LFU$*u2tPSVo+FZ~Fl=4RFy&toXG0QtBB{%1Ra3w3- zf&xp@Y{hM3;QXaQporF&xmP;?Tc?;%#-`sdcazf_J~v*9P2chZGT^2yPUuT>twd~%e#9npe>=X|K^_8l$?&@nDYE`Gl4Om)f8x)E%u{^NT`jJ2jpANs}*8B7e6lVJq^_tv3JDuV0^`nd1I? zpZ~NgeIgnctwMhzqcpjnCVxKliX5Gt2u)`r>B2KM!Y`Ne)90~xr_3lL;08i?X6CuC zIyGN)YtkD)xRNek8YduwO>^z;FUI%N!Qi@9Qa2bh*Q-hY!zjB{23OS#E)|~n!zfqR zq=Pfu~(3jgX?ER&MxTsa6J`ns+qh(vHrkTyTT8CpfE1DZ;Z^L7O3PQGp0^&PS*xuhx&Ay^Ds1 zW-k3`kK3oL5ddj-zH4hbf}Mj5pp~w}CtBg;;LMhbglGr(8`B z#wySSb%tWF5=716l*?ELimU| z`o@E8MHqip6us$nhTno@js+s>@eOgz(#}IKHA>W39LOEJ(abNzpWEoWV@ zpk(e{Yw{weK;Kx`!77pfZ5)2Tc(}{GKBr_CE%;otQP+ieZ#e6@`#RUSctqGnUYoKu z%#bCdyh+|$gmqj8>`Q;nL!#+$<}4fJ!Xk`ds<^nwHa9hfw-0LlW)`f`r@VIx&)7fl z+_-o^7=QW&Yu?&5p<<>gw>%C9^oi z+s^rjnwDHv9;_?eR4%`!;x<}g^}OTn1rFZV42Ji2RLRPE}uoh%NjlBXGBV2j-H@?^$s$~KkJ zO=|q$I2R$ridYHZHt;c~yF(^d^P2R%Y^_v>>!^C8N*JtjtSXw0R-*B?jU(AtP_JIm zmhjK4E#RhUen3y|c`4jJd0+GyU~FIxgW2fXkWp{&)?_pj&mJ-*C5tGX92{*Cx8jd5 zxsbB205$E=t?U^ieJ2l#JXB%@;Y$xq(%iU`5oJ}JJZaLyh}_#D(QwwX#99l^T5`KU z){?^|9rc)+GPzcr;sN1o87L3*OSCH#b40lZXNh1aYOOyB?zpEF39Z#%F~YSwcxYYx z1$wwPdU3Mlw9#A5H2G`jJ`*S*di@;5$NmkWhR|fYNp5ybLG<>cS_`%4EiQ4aq>K2x zr0y~strhuckTL`L^+=LZ@io%AVh*X;ws~pH`f>bLFAjXjouOfqAELS+iM$c4B)3rh z&})?1o?8Ng^I%HBHYuI(MUZTZh;BWKNqmn`E806tF;6`V*&@nP){Hri5-5c2-5b7? zzaA{LyA$RrU+i5rT0y;;k2Wf^G8h!B-8oBOuWD;$qMty`vbmt002Y2Obj~hh%$iMD z3F#HTw3x&btRz>dx?F{uh>WfQ-ALkvzIBXB8 zC1~iQq2#pYf$N^GIVvpsAQ8???#sH{@b4{jbhVx za+~>ORA}_&46KKq4T6TygWbufnR`mVTM+qrR@SZUy47D$%NKd-%ttU#;G|pUQ;y=P zi>T$vE4X^19)SDXLhGs}G3*z{dqekg zvg}ny=Og+r*+NIkt}DM1-zW|~IRdhltyOohVYN1QzYx6)b4pV4$OzDo~LMvvQ3Xz8*Z%d-H~{@^-aSUBJz|w zLtRv>Jvv8y+SLxVhb3Ka7HwTMj*3dSmW$`*)0DLkRrJU!?98-NH^1F~ZprweWfU8L zUOA;dEum?wx-se{ zzwr60`~^IOys?iDc9)364(pjhpgAC`gGrPK2DB_=(GAm=l%PQm@~@vf>?>A$;Arh* z&O-Du_baYzm@Osmo2H`34?YEauE&4*So^r0RztJFzs z7#u%GR}RcjMQRx4M(@zvgB#Q`reFX0mS9*red)*w+T>rRD>FisNB6W~clyT#q=nw9 z@qjAKmqqfPbi8-{d|0#WY`~h1?8@ySkImBcc8d;FzJ1Rz>?(>Q+|-PFR<~18;W~n% z9@Q25{MM4GUB9-0`J%5&7yR&z{z+2Rl_S1VUM@5eAX|erO^(Q0*qo3sbftR{%7Ko{ z4@GlUzMf6WUU2O3`thAubk^IS9f&vGF{G_wrq-~N=}H}>ZV46V7hc1@^$lt@}Lyp0hpx_%(Y_J)+uU9&Z{R*kTp8=ute!;BCgc`;F1n)O`r13J*RNO^+g zSJxvxGUd>s{V~>%^MKb*Ci|xl-LJ&9)YSB6gUD1!77MTGsJ4yG;=4THuN_VrJ4aG+ATmNDNLxGmQs~dh`(X!rb@>gqy{6tQmMabxI_X{jiH12b!F`*U7o+ci?GutCphdztFceh^*eDS?NhusOQKX^5 z$ERlF*6-Aw;G)dfE?J`ia2j9HOdUSU%x%j@xr1BtGY5BR6N@bAoE$gwP3T7M?=v5UQv> zO#oE%sS`{^SKm(lhl=ucgK2pw6+Pv|b)x!rkN70HqfSDUej0j@aXh=iB7y`o&b8bxq>)5tQkfJbCkz>19NPb8~%{r*3a?0Q&*QZLtMcX7?^wqc& zjItOn>mDYIp_nNP8J@_y#qEnmVb^e&O}St=za+s-HBV$PsJf}TqQy$ zcY0IwnZ9V>S=b$(Fc@tO(*|JFvt(*4=q3u(2wYg`JoHU&FE}O>oNOs4egGg?VsqX_ zn@!z7kf-ejXtYz1UT++1dO%NVa{?Kb)+gu5!}YSx?M~Rh68uJ^!WAF+S+i-@yXm&a zR`38C^@h8mlynBvk%dU*ow{m-oPRsoeIKn%~ zPEZ*a0Ex@kvKcAn5pgIpPr9Cx+hKnYHG*xN94O(kksZB zS`&LkR+dkQot%BAu0tvOgQdaYG)$m>*Q1UV5Q$JIq5*sxX1RsVwgeS1U!czSP1Y$Ae+*7e=|2W1#}+m?sbz+Tj7Feb&ToTr%Lzw2;qK&F4mTof?>uq# z$k|>qaC6#|>_S1LdyhomgqA+@B5x{|2%OLwAaH&SoyVF3@{^T7`f8nrc=oWQPzl-d z=5Q*oHyO4iz}^&U0DH4(Jkqu?!&s_s_8oyhi1I^5bw3DK3Vk+72h2HnwDqJ~W$)@F zpn(zJL1~r%iHf~?pH;tmrYu(}c>k>W%XjC`t0YL2?RRAx=>;>x4{$gxg>TK6K%ye( z;}Pg6b`3%(=mYsmu}Lz3qT;P{n#o6Ys!+J3`~ZI<6*nqAj!s5MlIB|2z+I zJ%Um%-m1z(0f}=8yQ-Z|tQ&2Bp(uj^Ls8M%&4(LWuGJk+gqM3hm~isS$N}~$K;Yay zW&sPFtYTYLDm!T^UnbJK0hWT=U^|MB%OfJDtr+^z;vHnLO>3(6kk z&2!O7`3H$YEkZD6E|5#S0a0zZnQW-ci6=9`&^CWi|$)W z@|9I(6T{}~l`Wy~w?V%0U5?Px(Sp2&G3Fd30Ny6E7^3;MO+^AC>Z_&<6VY+#A->*Z zo7ux?fJ9mJJz2ObX1M@~8sM+n>l#Sre5#aKkaoeNXmBD<^&v%58pOA93_}%on9Uv) zoZy{-{Oq#!wsoX-{6l#V@rCDn_>CvNY?%B5=AonglVBdo&G)r=>~%(6YHe=5r2M|( z_!D4l($1wMKw2naY51dKo4Gi_!;*6NLfqkls@KN5rMZZ=)1E%^gp@cZ8oi6v=8<>o zcy#Jvn+d72Wno*y8cguclSvXBioWZh%CzwO*cr31vn>_DeCpOH8S>$*c6-s@SzYz8 zM#C%K!@Kc|PLKHhr89aKZCxugYA|asq2s%DI4*~kO_Ku~XNfjQ8vC(5_)0H5eW&!sfTTxEPO^j26Zis9rSRXvEj)VDGU`^DPKn5 zd7_jL_A^;YL@35tkADx08vbrqsxw=Xau-nri{8y^Qk@D}-+e*%M0qTt#EIJPNm%Ij zDY)8w-KrwUdQ-y@qK8~;HAIEToK%8x!&&OPRD&%auNT$9)s@?m%bM_( z5BKT5YAS_`YY-B5wBL(;pLTPN(b=_%tlygAu~(k_zUE$T@kPXg`ALQrj8lq2;u zk#jShrWN=n!oFtBviGe@F~HXh)q1%>;%lnzX28BC&ra%VE;CH*IQy|zvrKu$I8{#m+(+Q)(&a4vgX_b50&6h|EKKTAqPFPVR%^RHYv`&E%T z?Cv*I={KZLA1;{rBYy#^#(cP8>yOI#Aw|JS-E&m!`9rw*WN1ptt>Wu0cQ{tY&z^p#hZJ8)3wCP=C2ZZ*we$j=e^fkcO`nI; z1%v+AL~D`C+kgO_(Yp(Dimay0Xq}`Wx`v+`hElV19l0z4ogtXX-Pf=Ij5yABkD2pn zWtSi45ROh!vYIxY_F4DC`DpjuI8wc}h1 z0m4)iGU?L261w1Js7<@UG4;OD@^k9_BTvpEbd{Gc$yyk{*Rf~H+qo)=LULs9-ZCqQ zla1KP-UImNoyB_|gapBSQy2vJrlI(#RRVgHC4W*R*GLUfKO~>d#2OoT!hDnJ+ldQ~ z1AOy8xt`1VLZzsi`cr&!#Va3vv7}Cl!y|vrHE9_3QYW0zUi(N0r+MX zSnHvag0j6EH1!M@djh<9qgh9aHxK<^8lU4p`J^N6T7@ud1egDn)#2$i=)pPn{@7;=(8lOM@ zlkwU8UyRR_fNkJ|0?lMX`2f@wf5$PHKFLPHy;ZeAYDYks6;5 zHPDw!?P0P>k4ZF%fypLUF>Dd&vS(yi_m%VJ?ld!l3oj*+T=UWNW6#IBv5C#M*n;#%RR%;ZZ z>}ew-mLRJdu%q^I&%l8?WGp>UkJ2zmrDeP=cY9c;;mC)vrpKJ{CNWC2Y|?Hv?s;FTdyfBi-*Z6KONF7AgE<`?e-}nb^(wUO;^c(Zj;92rHH-8(SoFZU+Zuo6{ z<^$uCUl!9+wrbw_LQc5wxAA%NzZsw0o0lqXUXmD}D@~J&1P2oV;uOedm7pCt1^{v9 zE@o!6EKp^`^W+KJAsoB%&gIJ6(^e+6d7CbB`^GbV>PpJ&)A3Ee01njMp4x!}b%$}s z%9d#>Ppq%*y{z10xAI+mL52|m-X|C5&;j2Rrnwq{wX&Q;`=JLsq6!CLSYIh{azF?x z?;SxPvNgbkdY32LMHwcWF9g-#8XR1x--}!UU#LSXUz-YoPAfNq_9f41luqo*MHtcl zmOktLmOdA&)TyRa{+2$E178c4KC=t|P5PvLsE4J`o?T@{yJ5b`&yz}@W`9ecP_b(z z7vRk|r#Tst@a0m&rfzo0AL&z$@cTf0oLA%juhyqZ{%`A(RkD3VOZQIVKZsL!OJ0(| zgssmh(P=>Xr93N&;&>&_UPGQgMH%|c%Kandp)Kd!h1L@-l?A*YGh1dFB^ z=*Z-inEWsl*}1jK8Z|&Ae_V09WfQ^Ac2Du@9mg%2R-5^#^6x2#7j#O!PfoPd`!qAr z3zT}F^qd#rm7mR+5gf{+w`<*nK4uC&MH0%nQtEv|Ld7uirDnoE-e-)&`)tTV{OGKE zD)BxCfY!rqR6PlMpJwAn;(+++^GE!omGAP82!zh3zj;WX{s<^_Rdk97h@b5G%lV}7Nx@dVUXIzQita-|`{`C% z;51#lv2yyBHN(wz0x-~X_vQ{f80gs|c$)KlbIVEPQ?s{y8^0i#E9Z73Hp6q}@k5-+ z>^9U-=X1TjOs8`$q+`;<^fCQtyx_%2$zi(L^tEo*#I7Ye|4>f)?Z9?7DsRo}Y0W_A zoAdFxGdN7=#(=|g#?QI%VLETEKVL(y1I(<|zV3gz*imp|(n0oZg%pE8~4Dhn3AItEPZm~2F95r(88R# z=j|WsQ|Zox^_hPA#$bc)ynd7}^uDAh@EEW@#o+_KZ(-|`RRdd}e@UM|)B11zkvh^Ec<567*FI zh@0!a%>BbTg?ukgWv(^tD*&C7YX)*pL(2+{LZsp+jc3Cie5i6}9zRPU6+dabmF7c^ zTZfz%ocSAcIs^^6o1ZZ$9MD3&0^X;~f-`@-PsGh(uyDSV#{1)a1}r!Oyw4po{ebs* zV8PIX=+U5>(Ul8$Qpy>#ZiLRd98fJ*qz_uh4`jv<=radnXO2ZLK%Lt zb%K0u;j(q<7rfI=YrYn5{a$>3;9AXCLA)%5DNA9>Qkb$7rYwaiOJT}VnE#Jbn1Q8N zPY5O#zF)U*XWfk5_{sRkFXb8zt5nC|+nrs_!Rl@wx}nU*gH%ZYjQqPO6AOocd+K-M}XvNp^q8-CkPPK51t{lA6LY zzZ9&aUM$U*p)96a-ZWx{?BS}(8=ou0ZW0{`x7u9v>qkV`O!!cJ_6t>(#nb0{(HC0| zKEFjPzipHetesYWuj#DyvWL*Y@}$a79$pOElo#>S!=@*8h;7oVP{?g*vlBGiJB`ln zIe6{unND%9FLsuZ_GgH*GgoV5r6O0p>fn}Y&tGOHo5X<^#so7??=0T{3Gm0F5bwUl z2wpvZPMK}?OW?o4igxwn^Rg`yhw2G$?l2k3B3n1pf%gSr4&PNuy>^Tbs0c!~<;+$c z&{|=%_FC{0N8a>Y8l&m-DvsiNc~aY_6$-m3z84bB$)zmHJ59L=2I}UDDSu2&a-ZZ_ zor<(Gl$e?#pXMh)@%4Y1nrx2EUx(}S`$D8Jvn9)RkpMY-@ZhwLB_Gi%!6puXnVm&w zOSV_i3ix(Cde(%g$;5~MA(_g(x{eyV93$MoVZ0G7@Lm>jAs3~?j`;Ozi7nXa=9AND ztjpJZZL#VWEckYPH*cNvcD-^S5VkbA`o4yKt<*I~m5@NuJXbs8?D!-Me6~(smP^}r z*g;NAk93j>np|ihX0kntGy=&@vxTk-D7!+?M4k>1G>5^~4nK54(Bz&tDaDwA7*O0) zaFG-@S)B8~i<<)6ZkS}O5{H^E@7w79wJUyGZ( z|54oR{8QW%r}mZ{`(h+LUr%}`g_*3KP5@>?*hjx%=JqzS*aSJ&fE^ad3wC4zM|1ep zgrn);MaVEYb2M-9_;na&ZkQ7WV5Y`J3CyHVhhZkm@UrxFowp9hGCs&Z+4-34PY?Q2 z+k6&v^hmwL&lJVCa1#F1Hg^Mt$;|pw+dMC+Z6>AuOKsD5R0|-?Ocl?oz|RCJG$3et zxJ@w3)ZdOK@wF4|Xi{Scu7r7#t96}6TBpmm|8up@iM}gXLUSQL<)r;?ZC;jQOwih# zeg}PC(%QWKPiiyxPioWbcG3$P_DAzZstY+ltg6Q)>D;kgCL&!fA>Njd%qLP)lUX>- zBb^lOo}!HWBWs$bZH8STdpAH zJrBFgMFwV+9+~H*;Y~K2qC7tV-2urFlXtDGo48#+-v^vIcXf{BcAZ_GmQkK2A(=~B z62X4Yt`+d@y2g7QaJxRG57kFIybx2qJpd+|SY`!|Sy7fzQF5XpcK;d+4YzMBQw{=Z z=R{pe%+=2Zx9dh@K-8oiD7sux@=UpHV^!(piXU~MYbw@*)TTE`ZH|jbhu(z(O>^1% z->pqv1!!#!Dnm~;R{Yc2H1hk?+AJB{2S{f5@78A7_iFF_MU{VAn??uzX>DS68~tl) zbLKa}BlQ|-YP0a^(Lbrpx6;%m?V2>TNp7vXJ&HOLwXLn(WkbE(FzbRewTbzc)MmpV zNNvtK^TFW=kwqBgIQXbHy81YQ6%Sa{q{sgeHQ)9(E}WPbhdvm<^Wvy-NorHHYxj5p z&ZU2!0_`klZ6^M1Z3bq>{?*#N6}2f4v^Gx`xM=4QQvRH;b8qV(p@ga4vH`74_R&a5 zYty~}A5a=EZEaqcwl=x?&2Vb7W#&PricOg6f_lSFX=<~s`QK8TjKl|fo204DC&b-4 zU3cNsruaxOP&TR879>RhUvu$pMcCIA-+La4h*iHo|21xiv+YtA?qKYBplhBfO@G0w zt*?MD*nb=Zoy{8jQb}iX>PY}H;m&4mJlxr2hxx1z52W%=H-f?PpAY^HZO%EWtX<`j zm`e!|S51UAZ5}OpJ`viSbxFC@=O7%~WMoJ~o9MgxxaV!O!w|125rj6U5tR+5-2o)C zc-~`L^!n3^dY@_6UV{sEL2G*BgD&EeN0S~nufc#TjC8y@Ofso=yDruleS9)4alP(o zgn~AmFHtsE6}VNmKZzqv_B`pcCFO#&v)S^a9dtI&tYKBpyX(lyv0w%6XHo7j;PdtB z8=VigL5!v*7-kAvM%L@YFq7AznQI)I{p|Y>cUK$ud_BN-w^Z8PPz0pSj+w`xE8}Ml zD~KI?44!|TB^e#(<#D2*F1;2U7#*jz?ZbvNa0^atC~OvGO%yiA4bx`*PHe`neH+~n z0hG-(JKMHPl+B)hO>71R#({;NLex9>d|k+eN#^gwrsl`DAhG%FVmct1kMHgR$|fjm z!V5iTKQx2FW_HqwSIsl*g5km@um8UlHWwWF)OYsNUxm$9&Y!|2{annpkCPszO&5RG zq>BG3Y|^9u#+V56FYsXbO!1^Y7*nvtw;;z_BnA|7{P@?n)1L=^7dF4Rq4f*9Gb+oG z(>m`+6PsUF4lEmo7kaAxPHc(>^t%VE-M(s2Vk{(yP0Q|#KNwSdc!)J~cq#SVAB^eV zodGbW{W^buF}HOORIVKH2^uk+c}|Kk11Q6E>Lu&A&%fr2=LC(;S%9L)kHl^r(dUiQ z$49wAqZ(Tg^ZY)B=6;PY|E3xA3Y)URrmV0jD{RUNo3g^@ z|GvVeOws3{XQC)lP;)Rc*uGEq||YRW`SnW*{yj;JYX zbWRs-rHv0m(UduEb%?f?xN_YjnyQow7!!tkEfJbjli?vPP$@(J51VI&a6cl*=n>+Oz5-d>d2R6fU_ux@0sq=dHp#?peb$yV5-< z`J-i7ORksrZH3mc_b!1rbWVK~MQag}w%Tp_@!1=X1+Stvp|*{-z4Um)o@N_nxemjK z>d)mRI<%Ovy*2Y&&Jir+_Kh|sJlipUdI0f8-23hY^~JBe5!b%-K&pLvx)ktYS))@& z*65TqI%SPcS))_d==}dkqcdq%wkR_gZ`RXwZ>^1&-wMxwsJc)Sccj_W+7LF!3g3S` zWs*JO1mlBgt7-?r1o{+ztc)dkhca9ibK*Ry_2AUuaiR6KE4M=SWL7AYVF%FZB68gK z+0;pIpP<87WOvrH1rY0o$}#T1UR34G(g4G|zT|-_eTKsDXzi)(KJjy0xQJV#Q6rJr zK>9v41(Ua@umO6p3nc49$Xf;+tPcfnLN^!X{KAs%>|5iUpo0 z!1NFmvxBd)gN@zHMeVZ0bkV_z!QnweJ+Uwn-=zPMh1YU$fR~3D8`B#ho`5nelJkbv z$}>?{Ih4CRjP@;^^#WYOMU}=|I1>?OR6v5-*Atoe*-9!94?8R(8ZsT45Xif1N;+-V z&RbyIh%`c{RPu2CRPr!&&x@!Cuw9hC9w%0gKPtpBnfPS_$m=3v>>>g!!VU?r_zT$c z)QCdJs^j;JdW%=&9y)21q49`n(j2+fR~+|6EB*i#HF|MfxHw^EJ}#RYyq|&dVsEkW zhfZ_I!+g2p2e?jPKRqC9%oVwXMZP$m7g017#pWcal&efLLD+IgANl0vhm-pm8c(^T z7RFwiT0|F*JmNgZSAi+l3qH(-W1hT#7rE#Lt@s9Gye}1XAS%9f@@WM+JfMCl zKyjh1A%Tg=bVHyHpgz(_3;6-Mba(wCc=+7Zh5Sgsnx}}#NJwL|vFo`hVI~-#$@|tR zQS47mbz)L#BGd?M~RZhwL0mu4KjgGszLWsmXLo=6<#5d~6>z0Su^*nMelIug9tI2&0f3 zB2B{*qVPC7^9Yp3-iKPRqk}|ptt|2=2W%IU8(2vHZ`A+1p`MdC%*Gj{Yt-|}S0hY~ zAWEmu_i7@-lTK;4;I0?G(@~7e6_LbDN)^M~`5K~$MJZ-sHwyEzgyd0sCnI;8-%B}=X5+W-Fn^=D=mk$0HII)2I_9;GvP6A^>{be5I*~AWd$}R*1&!~$E zr29knRT5S+9dI1^mn>9h^dhlHE|)2Hl|}x@B=}@uYS_z{dz0_7(&H`=-mq|&{I_2f zdM*<$1o4E9-!tlVLSi2$saGKH&bVTF3hPb9Va6i5QV?4p%C00;dvWN$%&0Rj=y*mt z^3iiLOuMI?Ry^(gL3B*V1K2w80Co{VPFmq?Pz_)-6f!U$b4X9o^NtX|8;Zfq44%Ku@ zA4*S|gP1IWvP^I0nBJVsMksTyXEf>*@&0{7J$o@TV_txg2%=I~V%d{Jy;$x=jKifs5?jo)LE6yk^%MJTbnT}buXWXhbEIhFB6tsTXYaSp3&|x*))kYgOk?tfzmvc~e~=-_HWe=!Qdq2eLU7 zGb_WDOv-sSq_kSHp003VbjTZCPiG+$u3@@agl&JXr*n$d#-0T0>BC|iC;KKmJ0!F^ zcD`{-g}nm(Y&RE;{j;7jRX;S4xMOFhe+rwz;x=~k@XgH{whT#>GonShp5C|E(^lM)!j5>osC9p@(gw2z$AWmU zo-UNGr?bot`;dnr{A6nEqsh$)Ur^m_`NmyNs?^FinMI?}u}^cbRZRxh7Wt^NLgVDa#mVr1y5dc8oUkra|B;K4+ZYSi-#=+1 z`^4rzr)9?;GVT_%ut<5ltS0r!=4PE`T^Z8#^!5Tb%CUCkqY&z31Xxd>qo%Ut1iU#^ zbNO+=pY?PDcs+ebmCG{HgG197PXp`ebV?m3hS7}w#v^oo*j($=9_g!g1PrLtiDKb- zfn;{bzQCo%v*Xk;W#2P?_b=wzT+m-hC%1J8f6PM01awkTE5U}k)4y)0mw*j*FUf{F zv$agRp-z8#=KJPG>4v&=LS6iXJ1*T&&%HUB_4LgT$%cCS*>#&0A)0h{Xo2?k&ArE( z;MpO@qnF7x4eTq~lG&k_QCxgl$QcZx^L5pZE@uS)L5Hsm*c=LnC}2a~_{{8y4Rw0Z zk#;vSv-U+x!=bjCi4FBBFQ+y@x?)@hn{tos+w{;xgHNa$3k4hM!AEMko>f`Se@%r1 zirfF$P>(y-V_5swhB_b_~%aFLvJL;bx80&J*ni-kATiINTVmn6z^ zH}dpQ(!*sR+qQgsG(%s+UOx5sEh5cE8EmMt{@PGyzWkRBbzbP;me0d~ZK${X-cX0Q z(9dY)SHCE<;?vWGVomYy@gXL`k%d;QCcE&FbO<$%i_{j2XPJMUv-K;5@>QFU)a2kt zSn@sr%}%S((;F!$O`&+v{nOa)m~82WI{%yvb+E}Ta~>nB$Cxq#QKIzI)5{Q7K>eq&VtG zlN*{&9sc5sphF|8w`PVGjzpLbet(B{VPn=ZNBtszlVM%qa_V%EFwoFsCfc`M*8P>EMi-6vYWLH%2fE ztcX`_BMG+}&_|My{?9Fmk;j(0k(3dnowQp1kqsz6&TO?jTj=y;F=_W9IvOcfx$%5S z@Pdo=Gk-Cb}bNN$TwaGQuxBN4L?;@WtJStXb6K^?Gf1m#PHT&22CrYr`#Bs}U6>;!V{g($WL!3!t z)cS9vTgc*2Go^t-e|!cNZ^%A3rpqH$^AR{YayJX#(yKa!Mihxq&K^wUVgz5XZzuKW zrY7gEHyWi}a-2wh06hKkF&~u_6ouqm24t6Ki)I-KJlJ>~aW0+Rm5U%UQGq0b4EVXro_=k1m6cOfySZ<@T0sx}`!q&0yi}?r&J1Vja zVb0kJ$SHPwpB~#ic=~dqXfQ}kM+G;tQ?rmdJpbo_6>&(z5ILNQa;%r{79f%o&`nHA zy8vrhj5sYM4+-%%EZtOCs9YY-fKA65B5VcnVp>o^9@0vPVKZ?6zU|nJi z%}*yeF)v16I?oO*63)RqW>b_(4m*mNk9c?^DpP@n`zR!z6bG4~La_z7!9JBiWBg{i z<_a9cbgq}Brok>2cnq?9gn?*6;s}rM4QIARBzHWFlupBza43z!)u-`hCL)ys`~f}iy)Z)c07rviljZMC?sgjMv^!3$so zn;_58s~)vb<)M!VQadE%~AJiK-lzfzqpGk-&iZmMDX`q;LpK0@b7gCBjFeeqdA)@xf zoOC_)kS*_Mi9K>aAdhCvBeLW_j&rfKrw}GW?4WHtTZmmx&2UM=>WVaeUL<^B9`sp{ z8Dim;6Cq6@>est-blMs8Yy1!oua<|{z$TyI9{4~fdPh4tK$H#5llRJrA4DkRLA??#C7gSp zLr9!Ua|0vt!&IN`gkbCUm|PAi08IhZ@yP*PX8Y8947T<6Li@2cvcVFhWdk-8eNcsl zHo%0Z*2#BJ&+T(XaqB{6^g8HrvFUW8aYt@HjcCq1>Qajx5fNI|anG2P1pC!*Ipj@T zq~-X2=roIRkQ;(c#*VTx(3%cGToZu;@{N!v9^F=JkhzSDO#y$iDE(ZV4*;cNiK`FEbfYN1#k;AF^2^!dbv6lImMr{%L-s7~*Q!Swz2i`GoR;8Cv z4&=uh$a%ZS4$xBf3zTFbLO2+jLd(OxMghuMBU7$`DR-fhNOpC8!9LYVzsl|1 z7{E}|<9G>s^t4fw7RGveHYG^36?=l*%OdxIcP7ea>NKo3`24ppinysT9L?hws;$R7 zV-l)tFrz|z44twcT0`LzJ9%gPQW19a8;$~Gx|~_#;e^#qWK^H(ZbnR1F6IZ-r!JOeQ{lpm4)hX0NWZCE1%!0Nv~a%zxPGd7FalY| zAwQ#U4E$@7J<1x<&LoD~l?kjcBfN9L*Dy^2tQS;bn_G~}(AIbIi3&UFYqWgTuqprh z&hnk)LQx)AhtD|-<56J}!iYuQR4l=x(3%-q=4Hs`fQ{b!UMc)uIhn8L*RuJE{+6>l z;7Rtd?eoASyYKibR3GDLRB|Qypk$MsUyb8efBIhip}(3cf~uN46~wr2v=Ds2lv7JM?}? zibu&%4NkB_I0d3qR)b;ob5`1cRNS}`LSuz|*|Vt>E-63Ne|8Mz!wSYq)*`&9TDvk` zZ*I+Gn$IYmIG&4uXNwq!&W)sc_9130>75utzb1^ZQJ-F?*jB3Pe$aGdQhNC4jEek9 zJ~_Z%Wwn@em3f#*mmB35+a{rhsB$aJnuLR>XUdy1bi!dm%H^E@PD&l;2dJ`8Dwo5R zzoPn?q#gauQ4NT87A1&rwf%&4Du<%SQrRdbouD2)|CkIA>B2vV6sk+rwFZcE#R$(g z1bvl<^E+~RgpWy0z`bGK@y(sL=_c_kw^d3=E$A)6{V*X-ya8EqR+kvNRUbVTybWKk z8=ZK8&{{yzzAm>LG7#!odmoXXrt1v|X$rlpy1+cT0Pp8x1n_887;1UyJzFc(0F_KG zJ7_DuXFcyeK&Vc%J9{g+SjR*KKK+-jwUdA%Kjvk}lHgH#nfiYI`AsV3+_mI028xCc z&<%bKqwCyRHmo-7Q@&MO! zQ>AiYcv29L5&#veUc-Plfr;;(y{jIp>_x$Bly)KJW&56vreQY~0!JTpY-8r^rjVse zanwg}c*uP9&mxlckx-5MoSG-S2gi=oaM(j$8rgru`J(Z8%p~V))7HUj?2P-4UU;y^o~U28tA6MGldk4@2uBuq zh}(Hhf<%Mpex-8})k`1XM9=$Hn0q;81umU3K}AJYX9^H_p(yo({Y<)>e+asfLuugh z?|r2}bYwM$(j~^Jb6N^7BdCH!A55E6r$V+rU(h{K9*Zb(^v72ud+gt*;A*qGRYj1^ z?uKJT4`O9CM1{zlRpy$SK^)SEh^TY(Rk;T|$-cvtkhYUqxUr5@$peecIF3nD*NZX4WJI|XS(!^r zK6(rHA2zyB*=#T;{Q3-q_`oD}N8-o6@B?mS-B8kx7oUIq`uy{guSlG8JZFFU|H0m! z|Ha(*|NnozX5VMD?K0XcHzR61`frH&G;Ev?vr4Nff3%D#s*| zeUuUvQ<1`X%;z=bJkI02d@kSb_vi2NC!EK5Eav*U-5*aA5Pp)KCG$lkSCh@7mI!NQ z8NvSrMj0s@k_q~Gavg_|$;Np>VTfJJBq)NIjll(!q&12Wl3cq#o`dFb2n#AwkBNHD zq2@Eu4vgTxKg(`$|Emiun>kbK|9Y04g={>5NpnIuz%a_5VpGrJ8Ph4%19&001VEbl zq9P>c|GbUxD_k`HFuUoe>4WFL$K3xenSYp_aqSy~JNUS&udJ?$?9+E;9sy$)_{Bt+4T^(7(gTZRY!Hnx@>?| zq?t_c`sX~SFvZ>ZZ2YUl)Xhvnl+{1yISB#(oag-KJm){>IsZA&`TyJVoL|hO-uW+Y zE7&`=D7_VHk4c(S5B;igi@A5L{M+St86HU9Frxdzn1$R^5U7!2aU7%RD({bcop{t=GbnsGGBE|9ka`jFVSjgGAFcvF)+~gf;M)x_66O zG}N{((x@hW_ED2Yp~PbPY8F2-6dUlw^&Ft`qjBPh%g@WQv;@o43%l+EyuRSCjjcFhiKcEdX@1y0`(UGOMZ?!!QS~E2YYAREC061!V=pra?{b>d#*ksxiqTX z_(279a&t^c+mOlBpZ)5u@!9o(Vuim|pLGr7S3O_5@1I8bx_;NR+1+TD*G&2d3KTxO zrN@T67N@!z4cCL?A<&xyY4sU%H2*wYeOega>B)T);?u23d-65{GaFRTxu7#x9|)oVWmMVQd?7-;<|)?Bd=!djLY3Jbp&qz=<6? zX_Kgh>1I>Eu_)L0_+ZHR(*LYJ6IUt&q<`@!@yx@-gX@)P*jj)(15lgjXtW^Kz6Ws) zjz;H{(`F=bUO5MA_h>_C+Npztx}EFGbpm)K?`HT9^yF*oM7vxdlTVqV|876oxD-_} zvY0Q8L*ttDcNQn~T-P~NrUU=tckWNgf`t=WSrCZ4%G9|^Kc*}o_8nJA3Lt%Bk^j?v zGQbFl#f}UfUQ5BeAc%UE4vi}yEQRP07B&i&O(EKd;Tp!Lj0=dKysfeGRJ2ECLN z$k2E88nF&-vt>iNyE{u?7Ml+agYd3G8N3BZP{0 z0p=Q?0=J)U{@s2$_q&_%up(OGl$dD8g1qxVBfj!Ph)hi`&?lPUGhihp;Y-9EM|B4oq|gEBTH*JLf+U*2FI*5_n)R48+VXeZ%`;Q~y{ zNUFPB)C4ms47N>LL`SaFHlM6N%it9rgl$ud-*xLqGlQI~ysS_H|Fu+DrY#^&^RVqD zdo*dt&&tRH1v-_*_Tv!c1)ErBx-Al-?B^*|o!r&_-*A(jad8ee*RMN1Bifan2gWg| zk^FN#14uE8bgw;W+Vg_B5Z4M&+$^a>a3Uiv`v z0a{P!jHTO0Luqi@x9~)+u|2w}PG`smH_gRNIPOenM)X;}XbFTafdB41F31ybm|!KaLfu@M89ZjQsoG|H@9 zUIRMxKQ$=L7_LFz%+;WG94uZyFr?ZXQ8L+i9Tmo{{xNW^;om7J3|sj$6IptB77w@5 z!$V4)+?Z2ANKe`^W&FN4$;I3~ZIpYQZMkmfem+j;3i=ldM`BZ+`Fg2#-uPv4JRX z1bVTv=C26!;md~Z&bbIQCGro8qc)q!{fzLg#~0xObPHU7N(2;-q=rXu0vdU5M1ya0L2!)GZRC zb{<=|UP#FR)(@`~B%D@yNCahg|L@Low*HPlwVwJ_HW5cT`EUe^_Oq1|r@&;*9C2cS zCYxCM)k0&J9~aUd%tfF^*H3aH`2*xp{weC5aP}9r5+6u~bNZ9x&Cb=*0@Ua_(>Xj$ zDCJGU?2#1={1im_No;>3DFE7F+2QMZq)2@;!g1Soy53RPH-+t`wdXnS@jL_46pz|Z zL!~!xO&`qVpHEU*oABSE!$%j?6}g1l@$e;;RJh-V3s4=-!#4#rw>bALw4?=SK0oOs z2^08>oGwU-NI-dVoh(Fb!7FD|2K60uG&iRN;q>0pgvjw0538NF3+=Za;s;u1=r$ zXQDv8yK~hiFHZG6Zbg^gK-s1fWz++V`x@2glN}c~4fX1ipS-+7ddeZJ z3|BLKeNYo>=~7n4vnX!_-G#}ktt0vl?gwyp-Ie*M)WN3Q+?uPEn^m|C;mZnO+&pZy z?2EtzxfK37@$~ReZ`j#qk%K*1>(GAv>H2fNxw-FIr(a*{F16U#yOp_>DPlD>7I9kG zy6KzWu_Moq^*pWj&N}8Bq<;c6$nUPuN2CY8pqk%Z3iBrOqAjEWFtH{{?uFWj`)gmm z>kBHaMZJQkT}6je7}RchmUI7RZHHHn~`DoJI4p*P&8iq!Ps+{Y`pE_x>kO3T`m_-@k;`jc$ z`egXvBYwQA8P550e$U`6d5U8b#JP zsPeHpXIfNP!aka%4xcYn!5z7U*6c*aGru)jkMjk*71^~Q(m%8Ay1h6ZA4wB*!l)u|1 z>)qdNld^D9T77;IFZ|0k`N6VWOpp^wtsTZqf!I8!5N(+8yZYqu;Oet){n@3glKNG1 z)hCblyZYRI_Ppu4qD}ikte4v-Tq;| zee$a0$JMy0D|>#FQ`P^wZKnS3w%MGdkv(UdG$Pex&NdwYfK{W}ce(U|cSTU-^#Kt2 z-<}>K2NTqtYUq$w#eWvVcOxqi>cye5#K1Nbq&(Wy?5wP8`e_7}oEM0(TZel=2v0ME?DpdiJjlbAFpygZ;e1|mLJo8m3VZ~k49@kqxFKBnPh0VYP9CSYum&o zwL(5tH35|nRfmY&ma?bR?8;5c{dO|TX{L*JipU2mOV%%P5)|&@+h9n%$0fCwF;?$# zwrSb-3DXm;Pfl$81<DDbpR6{BwD7hFXo*~zgU0!aLJnG?{Prl$J5_FtXTYu&PWYZ5}y-1TacXzW^P6vpE;;sx9ziDLGz=w zbMRoDJALzps?u)7eV7PlPH~Ryh<7(&9-ABd1%gve$M;@KfQ+15){o*xus7r5_b+h> zcYgx{Jx=kv$1wwgw?lsvETN?ynMu^}e!B}3%g%A(ZCM7elWba`gG)X$r^dW3c&ay% zT4TJajY09|v9|Gu2mwjg&Ul9|ox~}vJe%-{`Sj9w_F#_hPVr|ANq$H**Ew|q3#QvBM=D8uh=7auJbGQhLZR2S$PN%zS)`6~siSaY z(gN7AiBV;1>gCa6)z~Ou#t9{~4GXp~!#mnrXq(KWjV2RWUZFJKXlAFn!}I@PE_Iki z$bcws&Erq!gH8f$!$`)x5oIS4+DrgkzMhTbV%lWW9|5i`$;zzr@Hhhzjw?YyMX%SgSjdoP#zG<;O!rubdHr<&dFSx3;(ty9QDd6Kv5ra zF!rn%(k&YU5kXAHbT|2_u({ah8DmDM(Gt=qL@`gJ48yj!$A`RXGx-ox>Xz$7a2I7$akir?BHdw5W&6;I*!n=4Ez^C<{C@& z`6x4rixilLaXm3Jf>7>PY&0WFlZQCrm^NmF3jt0|T+AMQqC4l7;7%jz^(IZ&ExDUP zqq+Th6c2S-$0VAO^6eD0kO>F}$kTL;YnrX+@2ALD0zJJfi-f{MLR=%FQ5F4 zZF*(iFnO+6wna2ET3N_D1pl)bK#k)AW4$@dXC=5{tM2Ql-Tg+_9OM-P=T_`2>56^% zLxaN}b8#joUAkhY?^lNHM1)rOV8vtDh$Sri#KjfbLSBrRw=j640YK^FAia16oF7uX zkxFxGA-eg@g%oD2!N3FKlHVw>1YJLgb=w z`FXv3Ft3+GutOKSaMGojCUfWN3j8;K(hHFtWHNrZBjSW45pekpo2XP9Q^=wm5UVWX zlCKJwh)?9IT2l9%Ugkg5EfkQt#n&piR}E0EHX`IfbcnJDE#?r^f5=Gnl5f_MNQL!s ziis_s0XiYaLw&m1;_Ai82gmYuj){n^KNP(nat6KHS3u1SraY&gG@9G77fAXxs`e*p z>!9=e5jR!*nS;Qwh^0KgV*^I=2J^xuJ)I6y{HhztJUNv{o8uI@Q{G<mM?J>rAjr0j@JAV%(*42~}Iq(Ip|ase1-lqRV&rmNma$ zhbH(ZnVcQN~B_1C@SOUA|I^~@ZA3C`2y z;F;F)dAVd>tTF~2;q5vv9uAei13M#Nykxh9sA07wPPy`Wb9%{4*dLo-&Y@Pa-T8w~ z4JY;`kYXbIamO-a7nkF6{?bdvgL20kw?ua*bmsI@m>wTXWeZ#2{klqpv6G3D1KgPj}L20m+LR<7x=NME>9mDl6%$W>r8%ex>3Cfu6dMq2FeA7Xl&rM zK4Mq5!?+2S9v+hqrW_zB{!%ope*lly`SpDoX>OU({m9>RoF0(#q?DU_(dP-pZ?XiO}qS&rx`q3 zZ#Q_J9sC@1v3`>jFw1OdG15MhDFw`X+Akja1Iz<$(ms>h`Q6R<*++EZ5%=_Fi|f1o zFii21_L;!5wl>^2gBr&(tJemVcRj%}UksUpu4Xn5ml?YAN#7(aLZTBl!{qg|SU^S$ zuCxx3)|rf|t; zufX>LRJhKJTQ)GiSvQ-nGiisbZZuvcf=-_YYOlOMapm^*BmdS*q0wo^(^b3Y%1j|? zk7MV=sl+=DJA$vCO%B_w$-+PUOD{Phzc&hVcxl%608t`BBe@&D58Qt{vhlFVVFS1U zl}zd@bFVz-<2TOqw%UQuc_e-j7z3YG0i1TTFwP=m;+<@s#wXrA;Mm{OOzz0l67oy> zGV^-y-$I zw0{F8wCJ8FL8S3{U~aP>>WTIeliOV`4%bvj^^$)+ePV3EWPv*8%M$Jv1{bl0Oa9K+ zabSx6PM5Ry#H6=k%K0z&zvxo1&B&>24O`6MAin=O!Bzh9GfkwXyl!f7cS*x3!pIo!LNd3#iMWw}3x8zPW{pFU>`HgYkeBL5w|5~ea zzcs;b$^E)u6UczRnJz5aX*j+6{^acZT3tB3iHf}Pa8SJa%a2DBNB@{G=1lHcJriMw zjE|d4iJLk4WkQ}Y`G<|qqJ^iAOD3q>;r;q7-EcPR%gpQlzE=OI$h6_ICM1?cr#@(p zj3^>B?#Xrd%W;=a;1heA)}-qaTtB1{_Qu>lrVSu`vEc6*GvRMBrZ&BGae0wlhEa;a zV)Z1e+`VV9NoKr6^!`Kacr-SsuXj0@=J?J<$HI`6Cli=bXagH_TK9VH0{sP4`iR+ z<&siYMouQ=8-wgNt0}R&0|vra*=i0IZto96a)z)Tk<1328 zSr3hu(UU@p8+ie(R}_*O*Bd`6PUzpTDso`Eomzo^>XPEr>+3aEtFg<@y)5u(L#fbI z6EGAu%?{&P+567c_TqCV)mO^jn`Hf0MYa%UZ67{xFW0MyHyVKk`OQN-k8Iubt2p67 zfYM~Pv5gC(vO-CTQ-E9)BtWdZQ1G#_wC@69i36$a6()*Nct)u3T|Ce#<4m_r)+jT* z@yPm-u(7c<9OUC|%7TQ;I~HlBKser=>m(f3On^S1pYUeK4?1UHBR0`J^P} zG!u8bcStDbIzF@rLI1Gv`qoD$QVB+&s~)LN_3}sACp_G$k;>y^z5r`-qn1i6=`zv? z34tQJuE5mOrJ72`0$1EZc?aDwxs(9r{^ic{9V=| zQJ``rBgxv-2+|CvhkvYRKCpvtLA|eHnq<7Y$=+Yw{7Sft8$;XJB;alfO++sws-XtT z;uobq+;7HdwZ5#0J_Yayc@+*epWbC{4lSld@|xr#=sF4qCr_M{OHg&XK#m7-?9g64FtxUi*y!K!xJM}Om$D7QO9b%gSuJ)Z6`Z0Rf&-e(&&cK)mLa! zA_ol$6YE<#sL`t1qGKWeFa`pTA!42d7! zSIM~?+&dt-zB6)zLer>rbLxklTqFaBeOZzDEfc`466iTMLT|AUlACwB?f z8U4xW$z1-e$|*|Vkt^GG$y;6%2;I#Ux} zK&pC)Pov%Ib>5@<;C~%7G1Tu(qAnh9{%DUP>NgeB;9(6)UP)Zje&@g?C7dAWl8)D9 ziB1yDBFx?4I5Np<#LRB(<3^^X-3wZQc`ybSvU7XqmaKC$%kIkYtz?;xbky?8t3kCVf3Zr)-J#~o!5xX7brGgJM|mhC5qcJD^pfoJ8BjKKG#U$ z@B)}xFKiPLtt*VPb&n|$3bqZRpzA-g_#haf1RyWVRhQD#yL$9k6JIT;kFF)H+hUMw z3x!|n62~3qXFGWsq7;2-N$Xt(WzOvPxz&Ne>aGC~)(x~iSe1(@IY&Bd5yTO2igh2O(MQT+V&N)SW$*T_3~Hs}{4$5hQ!g3{Xh zrJy~+!rI`S#+Nfa)X#3IpVH`UpU#+^we_cL=uaejBO0x?yt}1)Vw2GO5tG~i=0yDp zb-;_SlOMK2pn>A!HBXspW7U}-|HJ}^>e}U!2n6RmUNuj{h<9*;>>*hP|Nc#SH`$nR zsP)c6Ss%p8HEz%vVxqDgr+{YjuhFcHbcA-&m5-+JIg5)rWsj%~W}K;VEBE&&`LLe_ z&gr6k_i-2(_rFI5@ALDN9ci)o^)AQLV!WEf_)4vOlCYz{M9zN9{Nu1%yuGkqRv^Y2 zZxQ>DU3`_iUqB3zCdy~wWAsXP{I#mec=fvGh5Ib7FaBYK$?(fL_g13INEXnu{R>_t z?c-tZ`nw^bb9|6?bq>pi%?u3s1vixo5-cCbep>%ti)?rvP#Df41?j%R7``=}raX8> zVmB*paiHRo{3*->e#mDP(dEc@RG0o=uQ6S~1yZsGAgYv8eH)77_GE1ep(D13+CAwx z>bS69OLk-<5m357HG->w<(&B0mhR~GLazsO5v0y(#Oai$Aew-6?QPHd<5y^mkl2lk z#|yF!<&~(E_e0_O!fbaM`z2GGS+jckH(~obg=xlJU6O60Kvo++!(Xel#VvC{QKC?& zYmcM299m`X5WEL=ICglQLtP@7sn;X%m4<%GmY3)K3F#zLYswq zrWbY}ggTwAe(L5^OAidrkV0TXYovmM6TDww6?+ zgr}yk=$Iu#dM7PF*bVR9P{1yc6c4OJUsXLz@lDZY%29Zi-kKseK3Wm?OCiaJI3KX zW(KzkGVWNQ8dJ!y9u9|Q5A!Kvnp+>2yw69T${|@fq?4MY>7YI%#WspK1Z*QIMXA7N zLUGw=dN8vch*c-JtF(UO;WG9iuesv!pkodkA4)G@(xM&SdrL20@=@n?P}`pEG6Jxx z>W;6nz=hC|Q;#={8E=%zAulFeVnn^zM2G3nW;3{W{`4g~vUxJR^)YUgiwRCb^|Fbt z3y>iI*7Nxs8Zr#wATnQ!b!J-;3-(O#_eiTpv5hi}hWwK|@knNx6b&QU`;>*aZsG0= z#b7d@qK@&DMvr1_oMV)nPyDJ|u>t(-VG+5Og>$B{=ZnWo2KD|vH9Qxwg+}cA_x(%P z0vi|%$5`7P-Xq5#%H{pmX`AtTFrM%k!xy65(e|TEd4vZG-vCfPg~nWEVPe>nLkHxg zUffqID=nw_VYhfc5W5eXQ2;gw;lT8;j+WKAy^cG?OEW6Ab7W(-@p1P>>7Cq6?`p<; z@2COyj_k9IGAr_V(%g~d2z4yeA3G&tiTfw>Gkbu0J zp6fM#{E}Nb1W>2h6b}~Dy-Zp>vT(8ag0m%jiZ4{M@kG{DHhx+}&ZlFxu`uiUN#`~N z%Cbn$p%V$w(p`7t92jmeGbj@kxd6#hFyx0lyMfx|iHj3sdqSu;0LM5Uc}&939vvYE zh!Pf3+r`Cuf2GR?g_%_C<)dFN%Y`7HcN8kV(Uo(_*( zYD5ixH*NU08?s>?yfXWqc^H#Go}eu;MyRMJ5MO(^*LLHf`Y58x_1^A6cu2G6{o{MfC`v48`}Y=GLr zAq>IzTKHE02`rvdM9ITlUlT&a9~b<7qFh*|Q-hLBJ53867q><^Ya)M7cc;q|qlS85ZVxR@UBnH5sS=QSxE3CGk0W&9 z0J2*?VvN5dcP@a;JnRlDB6RGxB8IEpQBpQ3g9AtbkO5JfgqP<)bez-O4O-%6KCA|IS}&QTLBO$f7bQ`MKA!Q{K|bQ2J+c)~z0 z#Y9H>Uzm7WwUPBZg9I{;p{_DAIIRG@yFT?)@er4P+zQN{U3-qz@_XhjYAT&OgsGft zRkmiOWkYksGsP63WzX8(g;2{64t0u8h+rdJijED1mt?Gqn_=NUl{bF}Fu87mblS}; zj_AT9WTj`D?i%ULTRriXqlmn-0opUv=0$5C_d8c6*%!n~1m0X}?{Jf*kij*mVYW1d z>&Wu8TXILZ&F5fF-e+0OaWGl1{yO_vGElFX#`SCW7g155=$~^4aH# zu}h1JU`bSL$bTbjP`V+lAr;m171=;>XD6`6(INxw9}ro{d7>G{>6^)ItF zgI%6*k=Vpd((I59zLS1=ha}xMBD<3MvXq&b-zTM*I4!)NBk#vhf1;(e%l+nsZSn~) zCLUeY!qv)V^!~H-W;SP|EogMVP}N3v1)z=8?*MZmJqf;oIheUb%8Ag1NVe4{ z#m)DA)-${5rS(c7bDX%kOnBitwx4NwzhvnK$($z+ZGt`VjEa}>xt+C%^>0Rx+zDB+ zQ3bwD!61ui)NH8t%?9``rZk8Y$HMy%F zkXa$^A(`*>D2~bn4(^wEbmBF4u8En`wu=Q{L|ghSYKbpdJ4 z6Z=hc|Ko`~&3m+?MQ=WyoAX5fIZr(5()?;}>P<5(Y^xrT(CF6B!J4CpTFURG_qG6( zT^;2=2Qb;A9p}a#-W#jkJ@(fDOp$!k&-JKg3UUc^^wsARc=7nLNWJ-)_l3=d}~Y+&AyH;~vrp zyT;#ZNECnvGX5_$WHMl&Ry|o-EKgUMUwXIaz)SCUNtg2Va&?6%&OmkJOxMDr^Dfa`emFS1$FITP1FNtofv(?}`TKlPhoVVR?ROQ#!fx zQvRmRu9pM0b}DE>ODxa(#LKnWCDtFD@~zl6o%*5{dbX%FjQ}sIQe;(a1WMKK7*^3Y zA1|nz^p&gFt8lcdoU(9fYBO^Y3NPaYBrQ5I$-ZsYgG}1{&~B)%JM>QK_Ena9Tg(Tl za`FF)+EAp$Ia}qczwKNtMsMgB8!Kxj3DyTC&xru}P->zVasW!HKCc9c5$39}- zV!C}MHb0+OL!eE_k0>m(9(Tv?Bk3Ff^j>^?(smfL4b4Qz1%)cv@z>UMhNnE2?;&c4 zb~L8#`PL%85bN2YfOb#4p2=u=5}GOZwr0$p&nJ6iZqH#{A%oF1H;6E$b7pOvME>QT(Z3b@MMx?T?REdUPNr zci#n&o<5IVY#f(L##Mme)ZRzxi#iX3h)zw~H&iclV~6donkElbZ_nMc%G@Utem5I^ zGMtn`9Iy6%Al^khl2Li``Xh?O=d_#th&X}AIV+->8Y4v|Xr%j|EQ@^@&K-e4|0}kT zSh{z|GSfaCSrI&e&L_9Nk~}) ze{;h63K}Uf+(aFb0CU+LSl6GZY~r}J+*DkTK|>xYx-Bc7aA@kO8<%)HcF7(g>ZJq*^m4Sx3L|q4%BZGCa;& zldt|cJ7$_RT4_%^)^Ora>$PRuEyZfXj^}8A_FrZTE;(*=p@k@DN@A;sty+=`w2?ac?A#(b6IJ2hk%D$+tInGH?N~3LDtbL zcN0A~H)V@S$=Mg7i6qE)q4>1vfMNQX$IQit2te!FtSYQ+ccWVR z;%QW(tmP9&;`Q8?hRa@HvIx6sKw#BeI9;5(xvn8L*|bf|2r;(QIo#TfCHcjQ++l_h|RD%y?K{dAHX!$aNIL zT;d=yD&E>wvaqjfhveVTnmQCln=Vskno?SUUowGE?gpM*e`urao!-LrkUi1KK0LRoZLZ!qt)Dc#lTD3cpk*iHgf`-P7x%^H(&Ps z)nNHvUvX!N{*zwQd)^oJ=xT-gy%YyjL<|`pn+3FbAzH%(LGf&pL``#0j*}QMY_(km z33@-bQhHas?1>hoS*CHL>>#A@a#pCx7Az7)UL)KTXq3=StH}=ftkLpyMd>D6JBW(0 zxIh(7-jshw#7AR^Es3bqW+fw91Sr`p^kDOFw2*i1&n%JM09O8@CP@cm629r8&fC#Z zB&hGH_alMK(+lMN7KnzE&jsb1`G9`rAhq3Lnp@JJ$}k3BntK;?zmz`L?Mjo#6|6n(T7X@e;>b%Jr=~$V&bTRsNW<@!su= zd38a(IH8w%FFxC1;ZyW$;f#radc5UVt>HgM+SL{>_a?h&sV@qaQ5E_VFLv%k+-Als zuiQ3-=e-*-`qHjwb?(91yk^?Hi^d4pUT2T(`z`|rP-j?r-vw042m~*ky8%MA`QcyD zzJ>2GunK--P;atvZ1LfE5Lizqy<|||GV#G<D)Vn~Q%7QAgn44E#7n+}c=o9Gn77 zLkV6?5L+NGM<;xM7jr@cv!707V>;mwi)o>dns`h;`Sl8KF~;LaGC6910EdNNpum$L zU<&{I;FB>OKDQDn@NGh!5TDp~8<+3aS%Q>yvXbyutSx|Q zU9t_nVfm~hSE6gsz^20Q`&i?sPMhHoF>cu<2CRHs-4mUSVE%F3(TZ)uEE4)yTEmTK zOJ0`R?R0y(NIK*{!@~q~Y`q&%VlJNS4ld!ITEa(Y34Gvy>J97U;pm8N zAl$tK+`%BU)LX9bsa3HR6VN7}8#ZF$=zPuy~B?Hn65~~PCjLrg$n=(9{}mkrpzehsL1d2hvaR7{Wk!L9X(Q6bhbjPRaK&|1c;pv1|@FPJ`90^J-<|0Bna8q1NX{eV0 zL}?c0yOrQa`6vYyGi`vf{p5+LW~;X*=nN6z1w@@?Q^XKihgD371n#n_O-y_WjMxxy zq=o2a4%)G)@So>G3xJnG(wCVHHf(A-x8zJQ2|hZfEq45)oE(u}`Y*+`Bpzr($0YMy z;S*-lHx%Uf_-Wc%1<5`mu^9X1CQ2-(Y)VS;<4}|77xuisp#am>$kJ}<6IbZZ7}hrN z*e8)egmEW;V)V?i6F8w3u(hf z+Hr`kC%}AG(lC9wNBX$~=AdjCwsiq;^NuKhe}sK!lha$qhCKD6Im$emDzi_E^E9{8aF!1cgSOxOHs!z_6IG z$VYiKM9!Vw;3-1;dEkEVi}w3bu5x#IHm`xtRl+soNx$3hQ$8E^?}Tf}w@l>K37}6% zlEL1PWuRvn_)K}!N6xL*y>me%qaMqsuRUB}v$GyPSb5VtNP4i6U!+k_dc!YR?16m2 zBvS<*!9aPKLVcZceU{PPCw}#Ho%IX*VlSG3@WINXtXdU`KWP{WU?o+}K>T|(gzpTr z_8?Gq7zj{E1KD?Pz*!{MDh7`3=xkX&YK%#YCn{0-LqIL@ zzUKq_SLvub6fPqX7w7I)ir2?C`ZYr_Zl=U(=w6pC_>@K6Oly=~#hO~FBlS!^D)x>Z zTt>2eq<1UN_F4ZcgYtx%)ESAq%cEXidEZbiZ8bz07xD~;V&~(?s>lr|g^}>d;3+=I zMF1*a2mP4j#fm4KNtx?{sBui6*@x0ZvR6^bb?pJ8B+4wG@|;f|rNy^#QbLL@!n5wp zOU+(?B*XwQ(lS!QsmO=ZNWd#udo4UweIp|GvIx7y?Vsi}^X?76PF$MBIoxu*<2!IA z-yfGlidi~@w4tNS`GAk?{lZstSjBJgV}m}yidI{`<6)M!^0QLhPpn5`KB&Z~zuDzs zDrAh^uyPc1=8H=FcRcjswA#2lT&`W;+2tY4BE^m>eAGN<(k_8zKzmj7zFWL*nkn=3 z+^#!7oJOK!h8a}Mh+CPGw2WM-ri3pgi?^)Uw`Sc`7yT%UO1|U1rRe-I5d4X)cq49X z_MP7g%hFW_NFlBBz;%inV++}ToW%iVXUT@+Vw8Y!M zlKEuILFCt-BX`v})=!n`S8w~M!;-l(T6nhDKlXKhr{>cD`H~CAm-pEw4ALlvcKI~4 zJeQyD^yI+*VLCbi0+%k4qGPt~ZRy{&!7HZotTQvMQSGI4*DW~UsT6p*uiy8^%Y|ig zXDgY{PR*UI>_2&}v+o&JSbxk6)aK#E63%In>XJ9^)G`+GRkW``(#yCx$9&ldI5O9^ zhIe67;FHSaY0scrV0UP1;xJ@Ms-=K=IO z_7ldX zbCtBUOY=q5O!z}J`ltw3&LrLwlizRqJbV;}J#rl#f=AtO7J0EsuW3=vraVA!S?Te{ zBZ|iXc_H}c)l=#eV^2YlZRE4JZOUlXZe-YeSIuDrei+yXwlh(8;qwDt(J0Z$<`UmMdKEg@kw^KHfDfo@@zc0FNB$F-+ zrwHdysdEY`6!;yVuhxeDe#eK7UA5;Md*QUv+sVHiGvMviT6W<(^(C-l21veHGr#YQ z`)>1ga(>Z$03Q7a!99EAf4=#0Xm%nsXU14CdGPJbCPQS#ACugLv#ARwweM@rYHZeV zoh)*lTx2-GTlj;wdh+b{$t4RH{+%(A|98f;Px&7QE2WJ2KMz(eh8a`+FUDjjNJrgr zngG4%Kcnvd&(D-!dm9Iw6TROLF#Um4*@Zr_O3Z@mR)0Fx{y_AxGqFwLOU>V9(c_Ko1-7yYa+rw>t-3$9*!@xpKienRo)XsDYd0|10h;!Y*Dc|S zgl4`_p2vsfgAb#Co{3@x!7i45K{AkNVfcr0Pp=`#C038tqD$X8Ad4wUPLp#}y7)-e zE9e`bfMTjTEsJv4i_-}P_4+a6pvO=<9fN)GZRiG zZ2|@H%Gp5!0XkSm)KD)||Au zd&&o?Ta(leGPgA4X9XAQ$pNOU09Wf~-GF9N#z|ri-t3?htQYfvdx+9pDuyoW>Q+O^G zlb9}F<_lZqgP;s2>6yw0ad-ODC?>y>8Cp?{a)V-kRm}A(M@^d& z%6@2E0WobGd1#w+YT_JhitjN(fs*#fKGnYb&>MEwpc^fyQ#wa3l?CJ#XIWo!%mwxX zD1VYot6J8V>P1PscqE2CEV$=fX`fk77Q2a-cWFm6|Iiqr-+I-5x?EOs)GM(Ywd{lB z3Wzk2Ys$2)>!?!!B5FKxbd<$el{jTb+H@o>iEB&ljqSY@C|~Q}`hj;IT(7#)?t}~D z0n;8<&6*_{mx;UJ*-7^Itg*M6uNp~K_fU;HeeprYt`=eRD#LzU_E}r}t(xAZ8)l!A ztW2MTWc)}5Qg8Q0R7~xEXXnoDO|7mSy<&SY?qGA4uIkLqM!hfMfW(Q80LG!olOZf8 z>pzeVj`0fa{j$Z1@|isL5`P~OZOf7jt6$l4zZnP3ju6X}$-JG*IwAN58-8DqJz2{+ z)nAt%zo15xr0a44Z_Wn^i-BeIk!0&F)rR*q1t9^Q3zv@d+>Zkqjh|ZD1xT9scjv0f zu=#3|v6%Yxg$e?}22d72uwoYvb5cO8h)UPN*EK4TstMt-%^EX~B`VKCbN0k0s?_kB z$=mACJ4JzVr()DF2&h?YTlg_+HI^_bwZJMb)jrj-*bmc6FG{+g33qV{;{5pc@XZp% zj^bGzR_Z<nC zFrlO9gydnTa~m3!&p!X(1;T&>E}OSPc%R*ap}TbOY32 zCFb3T`#F$9FGS*TX7L*ZujWl5w{(WsSNt5Ag~?ga>y+-c7(O>ScFu z+`VPiebxk8Fi>e|Y%lj{G-&C8lVe)d!mRo1GWkZ*8HC1&E~;b!1*N z|9SoqQb3{3(qCgAh69(9sowYXbyZp9xiva0ivNR8M?D&ClzCjQhs!VTUodkVnZv0j z>PD+KhCw!jXgNlFJ|4(e3s!!8VP-)g#M4Kc7T#KnBCFXw zcr{BkTeGzAmh&z{H23PQ9!NoAkc?md2J~(3#jWD`^$dIybzLoS7#~Us5y4FPqy)1l z=8Yf2%J&i<1qF{GNT43ym)RrO+R!d=61{3R!gNy-E+$#29kD0 zKe`UC7gr^rZ-ZoT&saOwr2np-{d~qWS_1v{r0KR`%j5xz}L^7F^q} zBCuhg?#1~hHelKU5@}&y(&sqn#9TL@uRmeXy+6?ey^fK%^5-zsxNtC3h2Cm$#wEjl zM%f%+g|+koX;hKuDOS&h__gXiS?K%X$0uAz%T>r~5Irx$!FAy-I3rZ;cBt~~V2jCj zn@l_AmOd>OzVp|;OlILVe-#}YqYuNn@{M9ui7;`IZqmUWeM4^wI}fki`H9BXVb+no z+AX&QOT;Hy=Z#2OZtLxetMI$7Iy%|u>ZtkE#VrA2qg_uj|F$cotXX~(Frv_ z!cf`lt1G*PV+7NCfm)oX&C2Bl71|L(PcxTIJSR5wZ$c-ER#2G38(3_j= zPoozu3mttjp1Nx}vM=+;F2qWq?1ClfdL3D>Qah$0>`L$Ql4*DIQ+JeSY-b<8t3!Xx zG)5oi+TR^`l@y-)y&~UL@5Wne{Iwrmu{$ciX?%EbnV4%cUs+K-35Z)<8ki1uL$H8S zJXUm5W=2-t+SXJFZ|4%XvycAL#(WUSxS`cNa`2`6_0xRXPiD*{mjcp6={fpWD);}G z!q#ht=GkuVH6p*@D(SItAHU9(7ZacIf#^ccW#bRA;zD`E0f^PWIdEAMa~2{^?%Ge! zhcSF0gApqMfe}!H3KSg$5Ff1Mkv{m@)%R*b#OStenTR9Q+#T=u$6+Xgnm z7rC^{e4D#@ur&y8X>QLufUjWgzSC%|B1&0xSsy?ZZ7l6JA8#!pKbFiT(n0y7eqe~& zMGh_I%@!379)R8B0t{Jb1{RAdxU?QNI&IWU89-G8vlhWv(9uTNDsJ}U{18)mp#s2 zri}Gx(=IWw`m2Lp&bkxE__#fDFk%)(m6O#Sj1HM0f)S!6yB8lETy$J)qEw~7SD*}A z*e7S1XxcXr7_9GKa-%T7AOTS3&aTTgYhHgcF;j-+8xt76S)M! zyKX8tq>NT!q4$=$o!LzbB}i8W?y-;90_cF`ce%jeD6(FNUCk<1=d#jxw5u%q^qa_n zqN4Cl6x#oo3P|d2Dgf=7Gltl0^pp4BVcmf?B0&%CRyYOG^mu9t?BZqy_1&z1(gaYc zr0~cgsF_PkmK=}+3L2l??MeWNc9Jk=5Tf4i3Nql}mVG-d6>;fU?0|XCq6{#s-p`^0 z&H+6FOS^(mtHorX0oC%!;}XgiL2>I2)Kf9#3ud1#oAO3*I{Z!WVb1C91-L0l=7pK7 z2B5AYtnm}99UoQr5?jF{Zf2pERp`nINz5X}Qi$frQ(MX<={+(3?ngVrJ=MApI}UCB zRe<{@!GFzz=j}SJ*G3X^!=}&Vc{f1uV1FJ|4Txn9GqJh?2rZTw;DvkI;76EbM;;U= zgWAa@0SYR2*ngZ$I-bN@tx^!~iRutj#@k|oXTg#W6Vmh`OtCD}yEYsb9Q=vUI{3tG zP~}z!c^X~DyNO($LK$b#8rC>!i778R=s@s3PTzl{e8U@rta^BHgOu2sRPQ9_oGYd6 z=q?ZIXNmhg!;~~- z4j#Ck^xd>J7Rm{sgql4p4cB3DmM=FY)vY zI1bj4^7zIPLelM75g9}v{RMUDqgaW6=&?~@C(khVHFgG)aTie^v!In)*l9Yx_l&MD z9q(R@(-k>&eRb7kq1sy;tlk8E9G_cyk^GTq7ry3rKOJ@DxDNq~8j)}`O<)po*(mJj zu7X2=mX1A|>&&8zLSQdMSA$KO0sjhA#tCZ7Uy~R;`L5=!hXpy=Etnz>8n|)WMhtx= zR6YWCAT%U_bx}wq&oqr!>}poJxC(~Aj#%B{DqnsG;E;;RtP9MmPqa~2RXwlv`iVhw z94OsS=dy+2!k+S5*%oRHXBv|%MuJ2NsK2A<4VVKLGMwKM z8ZV=7POrF`Hm60_`R4Sso4R3_&zryvWB7AU@|_IFH=&CwIJEj?hK-0i$hxWonNCGQ z>!;jcX3JN=NZGmtfRQq{KkT4hM6L&Zfu8ay-n+Jb6i^oN7z_br3ToW$c5|6?K4C!{ zm_Bz&q_r`(mswEm39F9*=~J*{#0XAh(H=6eU3G9ce|>wIc=>muN?CxbBSTdVMJF==X)cEmUS55j0^`#D|34R6#Q24w%~M7`?@y>1BbJ*B8XXvS^CT&3 z|GOUCyWF5VzklBSt9Ldwto}4=aqcqq1vZpshSx zLu46Mtw@~ZZ`0ViGS%h2xwPu?s1y%#sYobPd}*_a82wz(kpn}2!s2(kz?cv3&T-b}&vq--S9lqMp>uIt;2$uGJ>liLZeaOIsDMNr1#xj!LhRRpLDzD_86ElHp#1cv9Zg!dQQpNL}I^)_isp84+ z+I#`~4A0qf(+t+)9UbL}A1uQ5vZQD5;EImQ9-TX`69MWd9bk-OVw`De!khizOBA8PqqBNLgQET-uw-X2mcL?GfpEi z`##T-;FM2qrq7Q)eA;~T7V4@e+LxYuzKD40_FKXiD4a>Y&0aSC^GKJfPwi;R&AG?I z+Z*$E4ddLV54Nw5@1sK^R0fNSkMv(`4&}NoRyyHjWCAz8M(Z*@Y*F2yRYWOf6KYk) z)NQ13agB)58HjrQ!=H(B@i5`)$Dw7H+y0pq7c}M@!4Dsw?E5WS#HO{MwdoL1W#$P+ zWwi!*pTFPu{ImA+bGlZy%4^%i#vgymEu&zsoKG z7kzp%j|@qdd?0RRca|h6x>8|Q1REbinf|lw5_QK>8k8 zhgn5Kr#X%r147EJJf5^DB^-sYidXZdtOQeg{?bv=dnp}d6$c%g{yXOLPdXZQdMe@O z)T;gC>Jr;HJbJZY`tU#KXejO5@tfcFY%l(AI(p*RG_X9=W~G+r2{82|{$4TvN7(k_ zzjRb^;Ts|-KK}eG5g9kTIoW!1(vUM%f9z+LKDy)BRL{+yt#=E3GL?w?<$Y;W4{1}| zUQ9f>`RfVk^W-Di)Uun8HvTg{j{5)PqyJud>1Pl9ucen#&GR38^iS!fyvF}idbyw#$RW&|9>&xC0x8YsSFK3MDj5z6Bnf^h{+?jaQ>UD)vR9sde zUf#+FD+3wR=WV#g=e~%=sS6Xsb|#xXi)U=&ZQ9_&94%o|c=!8(o9XH1t2oMTfkVUD zHd}8`F6`BsA2ABYM{RY*FWkW05wBYwg-xac&C_wIA!_&b^gS?7h;ww;@K>;*V=x&} z!KhWf_${S!nU`UXRz7oi*A9=QXY4M+sX_GJ;&Fb?tv&X<$7=&q{*+m&bmyg26~3c8 zs132=$Bv=vMl)?_TJXtud@y#sNh4A+c4Xy5%pJ?)gsc{f+zxtcv&IhkEvuZSxYo+g z6_taqzSo=t1^eq8ppgg z%?x-qX?!h;eW2^*p;FGlM>7YGmZeltXDH2Pl8 zHr!b#-;RUSM+eIs335AXqA>*SgAf8=?3ci9|M+07s^^Yci`{#f`Ob}hsOToWkperj zD7UpY!n{wwXrs|#igois@5i{J2XYxo zYIomw+*%fOug?aJ8<(Hge_mWn)pbUL^+hf}%}#cyo-zuL5UUA)LD+s^*A3`mj!-6(=~hiV|l)B$N>B zy|`5{gZLB~dZ>E_#((&LYAD+?H;BM9kWk2qO6bW>>?W|(DMd!XGiU$BbOwclX<1FrmMthLn% z^!$V>4d{}P;IitK>Xazas;`8yzwm4BnFlz_PbIV{A$o2Cce8>hIKx<1yibFpaTj9R zQwG^8FT_HoE>rOY^QEayfR~b@8}lR&7^hX}jWbZ)C7o;;r*`Ox8uv1&_L6y0b!%z1 zkgz?sZDWVhYK{8{cK)FFq$KUFY`ZwY+&xBpx~g-DsAZPA1c3_DpK3v)mC-8BnyRg8 zU8GfUa_gDCc2(vvzRx@7GQNxys=z`MIqevdqz}rBe1VCAsF6`}WAzzXi|%YVL+(eHDrPFnrpx)(orZ5*QtMd5ya{+&XP5;?IPd+PIL6_Ssx%1WEq z<4s}2MG5TW2DkY7ZX9cVq{qN0i7J>BWYhfFFh6CZvD~E4dnrbc2APMXy5*sgO@}%) zA$F|wb>Y2pmrNin2ejt??kDdTdG1kSkJ*1VftByG7*_qxff%<_rtDDdf`C{mRW3(Q ztVy~3YpiEf!E@}%qe$7Xg$WFPGKb%aK7q?j5`=krWHeHDO zcX$P9N;1nShLPiT_+89D|79ER-M{q7-XV}SROq;NGu7?YlD5{+x7_t zE*z>o{&L>-M^{p_f^HbHk|Mbp=b~ZZ;ywd(ez%Lk+^M?UIb$vkfw#9+IM~b1E58>x zBiyz?RO_pTbT2Nx;?KlEMa`Y5K||22ZK#*MvQXEXCz8{1{}h-Vty`tIs_0SiC2!ord#R{M zZTLk%r$DA8O<(ir)wcVpdrSmzeqlbuu`p~-6il6;3#q*kOf||qeQ$86RBk(~(d&pZ zbuag&>LIqQx_B73deHBV?`2ob5tw4k^;T%;kMUqLSLD<%)${hJP{bFrGEh`X{yw zPY6-By)Sdkg?37%2^2^vi?;3OgGd!&>)l^jU%#KSK%XqUx)Lej4ye>9kMLTH>Vv6o zaF$~$f$J?)!aFPh+f9gl=6*hBCA>9W2Z_c?GSdqGUvyGEEi5_WSNTZIN0*7 z%P7*GQrY}=xfnZpkS)KhF1|2P)4Dx+zmDDKnrq+gYTXTV4p3J-w(DcrQw<}Ua;aLp z((>ms)*<(oZbtiwt}b-_JV|eQsqQL>%-IHKs&E?{b618l!cGTJJ_yxUR@%$$_-r+I zyp7gcnUbT!h~FDvN8Zgx&618@t^Zu&^Zo~Y`CY9q7;Jv9l~gOWqj9Z)=v#)ee!Y{C>{eGn6^p{cIQz!nMC z_KU-o8NtyU$|E}A^Q}E{^uuzdu$z!t#86^^L%==MMJ~0HgWeFTp(iFzfpKuLbA+AAcqGRdR$ijFMGI2*6^z>`sj)#+HFyYRp`F3Fw{?Rv>jmya!zEE02; z#}LtM;*0xxR>O=29Fe2M*<9We0{oyw)u#1*zAzAcsmQ4&a$x$prohr!+ zfmA-Y;McNAZzOmvrp+=rRARvqxB#n~jdhF$NB@C)lzT$*kS>( zh=pAw#Eb|@t!LqL?#mL8WCb%)XOh43lNC#H;LVbnekRu5&o~tz7;cr$BCZJ^dz?>M z5l`(9P%lENAlgoFbUas1`2f*cDie!92LGG&Ht4jic)gQ|0Kh^D2S0|;swMb%2|iyy z9ps&NovPIkU{Xb7{0h5sU5ctA5=imumcam^Y~$dkX6cliF3dMRp1R8zWSDC&QnO1b zmSb5)PZ#Ztp|~@WG)dO}5N(Vh<5jrh6i8DS>K|u=C2FXHO&fmVsmG%>FsrM_@wEu4 zfiDx!sGnSb3zl38773~qQ6IS8>yx*vl;7COu)C$at9S zcW!TnDNLeYF&T-e;8C1e%4RIe7(}ZOUDiU#V`3~>EJHb$ctJ=-_7vHdCBTVwfh=Wt zHg2VWJjxE7@kPI^lscOi`HAKESF4x$NcV&2wLpSD57wo`fyBq;k0P6E7}SWM(pL-h zFmmgo-ayd4@WNktr=X^O)(rON(@HKmd2ncXtfJ|dtO$i9jBQ~0IQ4JD` zF{FwGH4c2NU4e0*h^l+Vh$hxMGHLafq*B5AAn@9L3g?jF4GU9_@o3(h%la@>Dr8Tj z=&w$sl?aW}fC|qF(|aJ43xYDfv?4=FdQmO4WjCr#;A^Qz1U}^F{C&Aa@O3V2WU0D5 zkLY2SIxXuh7X>XhO@^Tsg(!H{aTvtsT>|Vcvh1S2K+g-3V^ z>B+Y^4`m0qwfs%cD{K4gSD?I=Q(~|vZLCyacR%FOMugF&T+$SWdYFYuo^3Oyedx@> zwm>{7O?8qKW+dvi zxQ>h^w`{S3H?wJ#{Ep~9^i<>e=AG#ecYj<6E&)=Ts2QSyG#hWpH2yo+Qcz-5%SbzV z4^l?0yZf*LUU>3} zAOM=n+NuH?Q8*`id``XF`NY4bzv-Fh=3k<=6`*^2BY1KXOC^rn{=IlhRX<1M_43 zXg&O{hgf@V`csC-&VkEPdP+*44=!M(8F|LD0n*BGtDOq3L;eC(Aw|RK@|u?p4>fq( zM~*;K%?G4rDVM5V8|Et3t6-+?psYmiyDc3I;{E+Fht(wjrRW>(>|dkku3ss0 zk2qaGgRAG&8pi4i^_AAU=BZ02wCR(7n>RO|HP;+E2nmBpV~Qp(r0C%HW%D+ zkdQIoZ|gAIfMqI~2;HBz03*BkxpWF$s+iJetdN=5zYLY{CS|CS>A2Y$;CN=Q{MOFN zZ1@|KhrUI>_!j$l(j_x5bf1E>dlUJV`45Jgk@>xT<&W6e>HlV^7iVVxL)BuG3p?Gjp1Y@at(=`$IeVBk`~K$df2-hx07K1y{?}3Tw#5J2F};X0FLPdT{8Ix=Pp?f zqVft)&n-Qx?SA3h)>OJM=fs9;X2gAd?XznXUCFzY_h2}PJA0+0`yB+eL9$ChRNjD# z>d?|Y=Oj$*j- zp&}o=s`o|i0v@!`r)%kp!PvW}Bmx&6&+bzzUPfof7YF`53U@cy#crgla)e8C2Tk{VayHT*1z1{vumDj9K71oE7-B(kk6Dqgi1k^PL z+t??ES8xw=>CzjocDudU*nt4a^>U3iEZ+8j*McD<2vcoj#zK^0cj_ESaVez=v;W7^}sYU1W_! z7d}< zB20|FW?VT0D}jE^d-l5ygMQ7Zxb;T5NYp`sT!6UK_HBrO=(L|eOwR=nFJ!9Y1!8oTIp_g%8@0x}liWs0Z4ZcdDkkZs! zu>>VCm!K@5XXv=YEic!H+4+613G*XBIVhj_sXi)KS zpIcX>*&Zb2fh z4q(|COirLUwkcZd*Xo*Nkgr*aJ7N{m`na&XJcRE%fI8OXZqhS6>$GH$ z5jf>q$ixTg7lQB07`KKZ#OE{O+6|`~FQ1=FczgE#-dWG7dW;5U{k|Pt zIH-hr_=qU=kZ}F+LdCc>AGtEK-oyB ze9~!KXCU_yF}wE1_27FvuM(KPors0zF2AVK|& zo-8hLyjNVWXkt&J8idR`ppW0a~pX7dgnGd8WmjJrf@uw#W8q0M0W5(_whH2M3*UY~@F(gH9_*-& zW3n?{({#}?h!8*OJPJKz&nvFt9D3Q3I`xf7)?x*fR8$MJ`r78WE@x)!MWS~PqU&zdQzJkzlT?*x?Qkyy^~NM)Tep42DWT?Taq|`!(LSOXkwF=#@@A`nd-kCF0V*q zeLAbhph&82Esp^v)Mm8+3px%3yD{FGDRB$ z+BHq@(KOErpL-!VLGXfOT1f zF%h*^fC0-tpuRJLiHZqe{*8Ex2^nhzX(#&$VqocU@MWD4z>b3w%Z+m|54jYQS6UAo zJ|!Vax7h{hAN|mL0Tr;7k9^{(%jsG<=)FQb`7w_ij$0x|^&_+=Jlx}5rgCDL$D)G( zeI@W|-h74v3sx7w+9Ehd0rM09M=@t zvkO-d5MDsIz&cp{P;xhz6KA0J2yj~%XhRMvX8;9881%w%rbV!cfZ8C5xR3{12y=Em zmKFeDczQwI`4};FgiQzxMvn{J*M+0Dh)6F5)OSoWNUCcho4h5|=M2Iwwr8$==op8z z>Rkv>U#-IPmv!SgbTr6}=JAS-Zz85kC!omTJiHo9!I47?;;SjJFzqbbAWH^_cTa^_ zgb|m>UYpHV4r~D5EUQ%iZpJ()FPeuso`bOFcE0+1y>&sD$d^ zQj8#OW;l++D%E;|``P4XEl%<%b5lkrjVx%R4{DSXngFAA0?f&w_47(Jm=FL+?GpYP ze**A|CEcsI0qasMNV#V4HZJWjbQulz;{Wb)7$cH+|bNJ__>QpZ^@ zVjo|7giq!p*mk=!J0lXE1v0nklwLN$SO8z-Q>?E-We5!vqQQ&e!a1~ko|f_8SrS5| zwk;LxbG58>4a*(BNlsBfV26VTc)7cj0t9O$CD{&8JczpV2_nbAgARxuE{)BIV~D8N zC5P`^#bmpottBuUQS>V^eL#dlxl;>j+)+H}3o74FF|G5Z*W5sgx(|fDY7QHp!ro+N>Dk zEuji*XJSof+oUTXwTy=23{TU?TQ&qx$HYWE zrt;ckT7%>;n4CId3RR0&<#Z6f^Y|YQ>YHhKuQolVeXx%CCu$$RN|`9cv=|1$JC*i^R0nz2-TI#SPe8R-#E!Vl!_;Obolk$Ons6Ju)vJjelrwS3k zRGynJmv)NnZpKM@60u^(D_^&qE2=;kWo~RK!HppGZn66P!sI0*q!|g`{RuJ_`*&za zIvjKnfKHyZTjU9*`#cTpG3$7V~7gp@6b>)o(`h&&G(&}>Fiyu z2^(%CRbY2@)yX4Zt+BneVzbQ+0A(FswgFBT(z0bf!F6tVdsc{6=2Bc|7fEQ zX0WY@3{vYC1;kPi58zPaS?GFqQ<`qGY*1#GOAGKv$$UW@YuhIy%02GhT;Pu)`N|uU3<{-0(MPKb@)%h^M8J5+I(n;t=IAG$`UR;x-bE zHl$^B*#5ztt-a}fmD2LiMM4#w03tHzidyZd#NBqta+BIDNG(Y4US?ej+oTEm)z?&X znh3lgbN_>F$wBT!HhG3m^z+&QR)?N-dI4c{S`wK9EO&1AOa**msC!8W5JqKoG(xuQ zl%+{M=Ynw6K7Ox-6G&eUNY@{>$sG6w6w65-I zhLn1;jLONk^BDR5t8aTiT>(S29UpGLIKcqa)4uDv6Z;SK6lVfNnA@iUZo@8%@1%!x ze5rO#fX=@uOZjC%YY*Fgc&;=>?@v}DvM39kw++U1;M3Ir^!%_{KLP>eG&P_Vw5S@k z7E|oVQBv;7zg^%5b(mv49 zp|p)Z2Qt&uVvihF28|kwg7*M<3Tls}!}32LFY$O}(E$anA`MO&0%7!(vuFXbqxK{N zru)Bh{^N@>7!P(!ebKA8pER#ys&#rLsMI|S8cL7`>4i_dOfNhbnkv6i0Wy|gV5qI@ z<}ny-73LiiS>MKPJ$(cco^+FAp-hvgiR-lg7J{1aqu<0sr%rYOqVdow_E&_Ht+gpzvuNe{efJg-|L{)Ugq2{z z=`ZhOpOf-V&V(}<4mv%#`R3$5ol&pT6FYBCEXw?%F5tTUX$JK^Hu>Mppaz2dHzKG{C}HCm(tG6 z|3o|g-(pY zNcL0xai7rD6EXO(O^lb`R>2*&V8t`$bQ!q*aPnUM?g1Gu9uy4GPvj=`YgL~uTtF`$ zZ6aygD{;Jn>bLl=WY43&5 zU*LqUS*;T$Rtl~E*y?BRJorim4fx{)oN_J~qw_`>n=xO0$L`0lhdcVN<@K-@Tb#awcB3fCT*eA1Ai8iz z&)pen=+!UalPw!cJ@vJz^PsJ(m|Xn4oDkl1(tHa|_jFS^xsM?@@&hEL@{|aay@dxI z+|W)A5Qp?GxaiDWED>n1RBI#;5)`7QXOG|(hWvc92f0}ac7?*nc7)lha^1-2{Wq;z zFq@HscTK%_tdocIW?X6DHTPHOkdnE03KLwdnZndhQXaSmz1Zv+N8G57cn& zOXm&Dv}`A%V;By@8xjbm^jRQgEm>HCB|aU-aeQcdlWYQ($=RUQZypUl*F>akV+I8aWB|-8!T|4h@Rf$$O zM+e*I==qW^oSxw@LB+iS+a$#62SFB1@xo}0^Dj{Xhb7U*kgQW(ffGxZyo04o z%wXqK5#DO%=-iTjUKPz#hR{Z2o4z50b_lE~g@<9yB?g(h(@N?7B9uaYxAV>j4Qd`I z-okPq%}t;IuM~7z8M~l{8=cY1$jYeArqMg2G>Mom%+$YKpQ-QbHdlbI&zu(5{Qd1h z2xiXSD)6YDGvjs3w5LRW;UL>r&P(`Ou}2ht^)}8_(t5AQC4IlxPA*6D33e*n>cCZ$ zT7rtht^X?f)X|fcea_*vAIR5xI%<8MV5Becofj6=IX{SLP}m$C_G5f;Up_y1H@|J( zZ3jEb^HC@x^g&AP%o>MTQ2NMmanSN$Ek(`EDKH#3ODN>hy?kgkpQR)%G@mv?mYa@??^O* zaf3{`<7^o9A+YdhzMSfS?@7loPMlHuqVtyTWVWtXlC$Ib#V3UXLTaoSty$Ln;+)$x zkCt>AlH+p9#;^G*;th2pUEPAadkkr6Cc3M_vd1t3p$w~F#k~Y zEpCu-DnwNt+VXO`C8tLJU}uq)2G>t{Y4)ehraa0v!iF<_E&G;fIKS+QF0?qM5Ni=o zvH%M5Q^|XveUQOulYJT%wm=Al$;sI*RrFO)lgu#?)IIocd#2L?cMcaC#rwQ_k9PdDEie!&PBlem4hpDNg#9<6(F^&H)K)J;i)T^6ekF#Yk_y#6 zJ2?#hw2z?ojdd@pbKRo1vdgNqWZK)>bgTWLi(_w1oFIrUdV#u+WI9WBD-Q~yp9+ngvIoyq5cBDDM2yfizjjqx$t9O*Ebm6@gmAN)%2T;A0y?P)^K5 z!<4La(br_+3xT~#)yM6)a$7OV9@p_x&B%*8H2>Kw$L4zTC9Z2<*}PM%dFMc0aU(f> z$d+Z^^}_%+6j=0Z!u-lgkyz5WQ-~i6u%CD7*>U`dmuk8ai+c;WxRM`eMYHWj12q}R zd7ncS$GYs!{?3YvV&}ek(H=K&VHkC>pwKsP?sCJcoe#mCz`Toy>FL0hj3qSM&Xa2bxiBd(NK?-HgbDMLMbSF+8WlOBRC_0h^BKH{R!_*LP!q%DvliTI9S_Y zZ}ebOK8g>oGJ;nyh}m4M?&z+4vABZ*w4?c^4LDjLTiIJcndIY6_$!$SsBgtMsKJ{o z)W7*=`y7$!j0wDtP0eK~J3>?m&tg-6k`2&BMTEy_pZG@+rk?wrFiChOtjEAE-=WZ7 zxrC#Xm{14za%rY!v9wwHaQ!yJh|vfc50D?EHVUZC?j+}FI#EoVX5*8Z)Z_&+-w+bd zeA6se=4%6FR|Pt=NZXL)rxh@;GIk>}&k-8PD_07Lha~8@0328;FB@d=y=1H^5@!d< zpd@cM5+x_bvh!*8y0+SmxNUEP04D8Y)4qwwPb3r%QL<_a+$o}Ja?&VYWwIY&T@Xx{ z_9l2754^TP>df;h_6or0+GLe%y`Z;HVS>f`f9JvVj>Wnh{OU`dF0P*z0I)d2fUk zBvf0>mYHi}L1Oz1aInEm(R}ey6&C6?i+X5oal^ZHV7BO^Q08pYN(**=BviDMh&SNF zx(I0)_;XK6#NeycMDB%fYi!Vy2(d4kFv_NSblL)>`Ba43L_oa|Q%;-3MSz&O#Er1F zc!)@Az2&)9tQ^ZKk43UAAS0jA;+$79k0od|9_FOGd?T0YEJEq=FbNVF|AGCw@t{=d_9SJTL9crr)y8n*MMym4*r!X ze2KH`_HOXZ6K44MfF(B1g=7a7N>_+7;S-jgl}TTXMfZZ4GThAnY3l6XnkwTkezvi3 z24^p7Cd`>b5yUhWAcbNsxg=^1rr->QZ6>0T${`R6LFT1l!9<3vl7=kB4B6OGQF&1~ zAt(-sAubhsSzu&Z_jBL3-1TVA0sdx64zPUVSVq+OEQZ9~ z`02?3PGX1@3sF>2L4f*-Rt zye-7wi{LT=ElRO2&?iCVCT4p`$Qd8nDwNqE-w=o!S4yK(>GMY>Ui|0#2@vb5<@=7qfx{zHie3-b{-My)!zPrVv6(nBLSXO`}+$# zzZbtX%jH0f`)jC6uVs4|-T$ZO3@*O563Cv|59$%$o2mNkKAT4VJK+wa{S`GxME&Q}9%bJBx8xgVU5a8(sN%ASo-Kl^(?{lrwKF37G zaU6HXHmA;n-i!sGlXf0ImxN{uabOHz5?x?)TE4m8N6iw$Ut><$!hm%TAvm^ipqcw2 zLLw|ttJ1!DFIa0&|BFLdqLy!7s>MQ15Qy2+Vy{s4H-;8WilGh7S6%x}r}YzilRTuK zT2kEd{pI@5`KE%SU*o`PFj3l+*b27$w&Wt(wER18`B8>$-dg8@-fBck{;iR2K+N$svBb# z)8{VXF?+SQs?8m$>$k@|JCa4jxO(KGOr<<^R2SD5Y1S0G9TFWP_@^AEHIUB9S>IjU zxa|C$@_W3!FSaA{#68=1P`*=-pv`+pi1+!fmUekHm{v|ri|{?QH>Z40+$n(TMrNW|L<`BH)}1GV^%t-*X+A`4Z453W74P5U7~4rfA^# z9S8peHzftJiDY=gzmt7@W?ny8MW^@4IAXAgq_JX|&17c(S5F>Q9KDbK)C(OOLf7v5 zD12v7R%gXDrehE3)LZ5M?IEEql@?cJx)m+~k5L6m>*erzG4+9yr*m0RGhZK z6UPdtluy(qI%0bhqdn6493_Lyye)dt7|j}<;-B)ejG*BSb4NrzL!J*vbKGrU7HR9s z;s4+#Z+N%Np8cS3{VVv1+EErIO|}S|72Jpcdz literal 0 HcmV?d00001 diff --git a/admin/src/assets/imgs/mobilefoot.png b/admin/src/assets/imgs/mobilefoot.png new file mode 100644 index 0000000000000000000000000000000000000000..4a89d4bd254f65f3111f18aa550e32bdfd4d1a24 GIT binary patch literal 1348 zcmeAS@N?(olHy`uVBq!ia0y~yU~~YojX0Qq7#SEE=o=X68ye{vnp+tgSs558K!Fm_wxX0Ys~{IQs9ivwtx`rwNr9EV zetCJhUb(Seeo?xx^|#0uTKVr7^KE~&-IMVSR9nfZANAQKal z@=Hr>m4GgVcpucqiS6q^qmz?V9Vygtyua}vbVr6J*;^buLXku>WW@2dQYU*fd;OJ=PYT@W& zWNu+4ZC?Vt)0Bv?jEy^rQO>ryA&s6|>*eVmZTa0j; z2i2Q`+bza8_38s1qYsK!q-cf-0n-kM2~V^@4m{bX<^j`s5in63MQrc{=CEC!E{-7; zx8B^@?IjZ^bKqg=MuXNxPC^A+BMJ?34TM}5|KJg8%1==Jq0ltde}Shjhgc zBwd^Eh40UUSHG-2NqJa45HBsAc->*@l|O%r7uM_O@qhV#tbX=VTN5OB_OZHB?|2jQmF8j?|o=~3P@tBV%pzUd(y_X5agFMj+9?Z;SpbF_kAc9B628 n1Y$yl2Y%)kp^j~lTlnWvqUJ7=Y>Ul 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 X!lw4y|2_Uwf${mHs$8XvQQ-do;aw2N literal 0 HcmV?d00001 diff --git a/admin/src/assets/imgs/moren.jpg b/admin/src/assets/imgs/moren.jpg new file mode 100644 index 0000000000000000000000000000000000000000..98725f15ea28b11a9fe6b741b084fc8408509210 GIT binary patch literal 2768 zcmdT^c~nzp7JrYh=*Z|~9H_vcnXpt45)w!tDG5@-);36hu$ML@4+!v*ki`V_wA53N zED8dx^h6fX$`XhaC{j>dM%Fq&u|!lr#bFynm@=ZY$Yfq9o2O+?|Lr~JopZnY-QVxt z?|#4UY42%Afj!;|ejEV!``ZKCfDO~m0BDAco0JNGfIbrD0f2TCg-ei1MN~XqAi;5X z!dM8$6~cH0M}#NfobZ6VheE{RCP7k6EELZd(6Dn?u46HL9t|5tVmdKJUQhzxFHH;u zrv-#?(~`Ip9@c}7aaT|kun2~v9E<`^7D%WH8g_-8iuk%P9*bE?ktWfwp1P`-aAqLJ zODKjgBplh1OK@?+xKeNgvWt^5*#SdzB2e&7Zg_&TqZ5JZM5dBlF{_3}s)>1V)F6h> zYAs|%!>%4mE|=rv&N!hs9#5c95Dp@qNOVLp93`m&DM#TbkXWrTFdzw6%oj=dLIFm{ z$cYuoq%CZ=iMeDS`I;%~IOy>Vjg<;(QR%j*CAZVlCUnQ1=q>3PX5F`=G#9RnT zx6*+{R4*~akqX5jLSgdS6ay24QlTV4D8dkt>%;74a=3hfE@HO=VKS-y0*RC(;6nZk z8WthJ@%cQeGlN8;c)C)27~TW|!JFdg>Ehz%=|%A&db+s!_;{~j8A7fMh6K_zEN=tr zxg}Po23UktW(lanv z-9uLT257^-dH$JzEf`=My+Pc~;=FD37i$w6StA+!3kK~2z!)i}hen|R4`6v}qwMeA z14r3t6E+LIo6UZlk@-M%H4mtnFPVAv9$ct7HCQh=^=-Fpr`L|BR>~HN87Z5T4^s|M zzqtC@cKXQ3JzBrTNOpa-3)A;dz%6>uH<8unDgB8P*JuhEp)b+?Uzg7Lr~h(7CW9@h z7JHV<-~*KYYYSP6KU&ACC|@xLt*5ezGaW=VNk7sKcBlKjIOEfc7jx8XiBb#9nw-m1 z55BCv|M}_gW!ZCpt$6f*R}4BDLV{T4r*Q-FfM~Bt^j83LaTm43A|GJfzv{ zx4qu;&fJv8PiNgp!`>$x;QEf5V62R~15L3x#$yIonOOx_kpjw9Z}2TGTYJnLW*Ws=nC-V2c@Pc{S<{Y2KB zWvQs!ZBArY-_p;>>0ic6l$qtqN^{fHQMK`9hj+R@Jmz}aD2&nlh-Z6DFc?qqL| z`Qw$8hWGz*cd4{1^MQvY>)Q#x+CwUfK1p<2;?&ghFj0u0>}+~rvbvwF>G6_>QBN+D z<^x@GhgFld^`zEpQoQ_rk2G{TV;mKG)1A!8YELzD+1=4yc826j^!qZAPT4c|SbctLjcstOv-qox{5}>#SSsWaF$QF!}dtUnp+TRYH848NfIPrRActCoU-z#WfYE2Y0nJ~tDf zIrUv)VSR609rsDvM}t9$_i%vyWf( zj%Wez3@uO^z4Q5|I^aCdt~0MpzR$U&t2U$|Agn{}Z)REf0cym&`BEZHou*36QqJpD zEk+5_&IsGf#(<-aO|*AipL{nD&`pO*E}s1%Ar;uS1MUmzS^U~Peb@2JlT~rABKICN z`umV%py4COT^Q6T+&mp|-Sot1@ZXn*7aSgCdvyUDgpGC2|JfOMG52`i(U8Q@irr(O iHMu!84xi-YMc!?UnW!_7GMK60Li(nzf9J0D{{H|v@8pR3$t(dUbEF#$yhbK`m zmKZ9*5{sphEU`E$iG(HFP%N;Nt)#6}TpCX#26#+xipz$$zLqS4g()6~@-YQiC_EFu zpnL#R42s3HG=~Pp+!9Ba;_nc$p@Ibh{%aeEWFZKM`9dc?KVYg#cTPnCj)M{oH=+Yf zHct~5<4(1wU%yA@8OlFhLMb8{5V1gkk8lj#J7>|l^(Bjj`8p9-AF{!EfgDQ0E_k_Ewr zLd8M}CXh&Yyd{ZDu)&e=7B)6i#3YyXnc|q_lKzy7o;GG1TLdL1Z1VW;0s|*!0c=P< zbbg2cQ*)FdhXBZCjZ)3x=M4U9RW-p6@dqK1)2aQ}d`-Yad|z=0AOuN%Q1$~s=>2zEF_)D?)7w@w}iJQ=U*e2A`Gu3nNipD&9 zU~xBeBAOB_ii!&DU<>FT>e&a=7wMI3alJ7Un4ujx8~MNg;+4qoR2x1s7=Ma>krsd# z=Y%+G0mmENSC6^L2Y*bd)8B8e`t6iUrc&sd{n`iZUtHeev_mC-9%VqY$#ty67=wODPHRp%e-i=>M5PH)$DE4l40`b`zZeP{OcY?L67Ya&~S3u^K7s-I7! zlol4&*Vk8YPcm#xiGe5QU(BRB;+LIxwp_kf+unHi+NmOaj(;t55BVO>y_s` zZtfDNfo=YHX=C50-!}th<8x#vi&pNvgZz`ququVDu+S*hXkDJuiu&&1w7xAC50ryl z;(b4Fxc}Sh*LkvT(Huurjd0&BsbRy-%4qj)qgd!-6nsfq?3oG%4`-BSZC@9bm2LX9 zh`-Tjg|@vG30P>Y?T}=kHS=j%V_jgmd)v)pEe-6Y28!(6&2>KqrsXRXq?n$VHo$A( zG2v^y`gDqELEmvZV`{hh-LV?X(58OD_!-9fScFPSh}i|qi*A_T8xt?RqqE7qyTP}q z{ZQzK+Zn4!iane~THSc&@qV@9y}(>J1_#&+%4I=hxdNO!6NpN%*}u% zO_7$oc^Iuysd(fv&*9P0?VLqJyXt#p9@6vOQTxWFXm-*LLx*}g$%DS(x)A01AaZxRjDn;;< zbBE#j2hyWTc(oS!$hsfe0#fsh=>`6Z1H{Y+z86c8y(g~qs~*f!6I{OSmqk&VisHg4 zoXmW7D)_Dl{Wh?yCcxZ2iB;L&$b7UWJiejy^d-I2_pKhGotf$Rv?SIA*P}ZgwAnSK zm`C8tB7ryRk6jfeR{C-5@y?*jdM(todMj^aDM$R$9VGbuQk`Cl1&3eU3I~hJm0?3` zpg4t7Jt4y(toSKQJ($>hI_hOF9D< zh>F^`WY53;%zflqwlXZF|2IO{>Y$hkZnA-!$tiKG-k5Wi(rZ~Ewypq?Z&x3et9e`E5RmL z{#3}n^i^LJHJ-QEUuf05bWWR3=ip__u;V{r*J&M&iHXTwt-Dv@()(gFZN@s4o&(zYO)Juu6S`uuEn2gjjPj7N zQW@t%(jAfKmXM9D?d!5G6Rrj6LJQw!YHYzQX|HqgeDIffpZ-EhyOis$<-~X7Fl0J63w9G+@)Jrc=Ig z%9OD`J=%{(t*aVLvp#C-gGD8dg_tX{2sruKBeXUxa#ePBw4n~-4Anc z@1D)K7w@*KvUt}=UV3FUyatoe;G3nqtm^2xQ&=b)TNZ7L?G3IfMY8Wvj}6TvjwXkX z3Y>D~Gh*uLE4Xh4>S{MWOt5v-rGCHPd7euxq73hCtk6vcx%1)M<9 + +
    + +
    +
    + + + + + diff --git a/admin/src/components/Breadcrumb/index.vue b/admin/src/components/Breadcrumb/index.vue new file mode 100644 index 00000000..e224ff73 --- /dev/null +++ b/admin/src/components/Breadcrumb/index.vue @@ -0,0 +1,82 @@ + + + + + diff --git a/admin/src/components/Category/edit.vue b/admin/src/components/Category/edit.vue new file mode 100644 index 00000000..9a3ae8de --- /dev/null +++ b/admin/src/components/Category/edit.vue @@ -0,0 +1,203 @@ + + + + + diff --git a/admin/src/components/Category/info.vue b/admin/src/components/Category/info.vue new file mode 100644 index 00000000..c0173828 --- /dev/null +++ b/admin/src/components/Category/info.vue @@ -0,0 +1,89 @@ + + + + + diff --git a/admin/src/components/Category/list.vue b/admin/src/components/Category/list.vue new file mode 100644 index 00000000..1d6c89e1 --- /dev/null +++ b/admin/src/components/Category/list.vue @@ -0,0 +1,276 @@ + + + + + diff --git a/admin/src/components/Charts/Keyboard.vue b/admin/src/components/Charts/Keyboard.vue new file mode 100644 index 00000000..0b258f36 --- /dev/null +++ b/admin/src/components/Charts/Keyboard.vue @@ -0,0 +1,155 @@ + + + diff --git a/admin/src/components/Charts/LineMarker.vue b/admin/src/components/Charts/LineMarker.vue new file mode 100644 index 00000000..3dd74369 --- /dev/null +++ b/admin/src/components/Charts/LineMarker.vue @@ -0,0 +1,227 @@ + + + diff --git a/admin/src/components/Charts/MixChart.vue b/admin/src/components/Charts/MixChart.vue new file mode 100644 index 00000000..c416542e --- /dev/null +++ b/admin/src/components/Charts/MixChart.vue @@ -0,0 +1,271 @@ + + + diff --git a/admin/src/components/Charts/mixins/resize.js b/admin/src/components/Charts/mixins/resize.js new file mode 100644 index 00000000..b1e76e94 --- /dev/null +++ b/admin/src/components/Charts/mixins/resize.js @@ -0,0 +1,56 @@ +import { debounce } from '@/utils' + +export default { + data() { + return { + $_sidebarElm: null, + $_resizeHandler: null + } + }, + mounted() { + this.initListener() + }, + activated() { + if (!this.$_resizeHandler) { + // avoid duplication init + this.initListener() + } + + // when keep-alive chart activated, auto resize + this.resize() + }, + beforeDestroy() { + this.destroyListener() + }, + deactivated() { + this.destroyListener() + }, + methods: { + // use $_ for mixins properties + // https://vuejs.org/v2/style-guide/index.html#Private-property-names-essential + $_sidebarResizeHandler(e) { + if (e.propertyName === 'width') { + this.$_resizeHandler() + } + }, + initListener() { + this.$_resizeHandler = debounce(() => { + this.resize() + }, 100) + window.addEventListener('resize', this.$_resizeHandler) + + this.$_sidebarElm = document.getElementsByClassName('sidebar-container')[0] + this.$_sidebarElm && this.$_sidebarElm.addEventListener('transitionend', this.$_sidebarResizeHandler) + }, + destroyListener() { + window.removeEventListener('resize', this.$_resizeHandler) + this.$_resizeHandler = null + + this.$_sidebarElm && this.$_sidebarElm.removeEventListener('transitionend', this.$_sidebarResizeHandler) + }, + resize() { + const { chart } = this + chart && chart.resize() + } + } +} diff --git a/admin/src/components/DragSelect/index.vue b/admin/src/components/DragSelect/index.vue new file mode 100644 index 00000000..28256a8b --- /dev/null +++ b/admin/src/components/DragSelect/index.vue @@ -0,0 +1,61 @@ + + + + + diff --git a/admin/src/components/Dropzone/index.vue b/admin/src/components/Dropzone/index.vue new file mode 100644 index 00000000..bad9eb90 --- /dev/null +++ b/admin/src/components/Dropzone/index.vue @@ -0,0 +1,297 @@ + + + + + diff --git a/admin/src/components/ErrorLog/index.vue b/admin/src/components/ErrorLog/index.vue new file mode 100644 index 00000000..6119c037 --- /dev/null +++ b/admin/src/components/ErrorLog/index.vue @@ -0,0 +1,78 @@ + + + + + diff --git a/admin/src/components/FormGenerator/components/SvgIcon/index.vue b/admin/src/components/FormGenerator/components/SvgIcon/index.vue new file mode 100644 index 00000000..c1f731d0 --- /dev/null +++ b/admin/src/components/FormGenerator/components/SvgIcon/index.vue @@ -0,0 +1,73 @@ + + + + + diff --git a/admin/src/components/FormGenerator/components/generator/config.js b/admin/src/components/FormGenerator/components/generator/config.js new file mode 100644 index 00000000..070436af --- /dev/null +++ b/admin/src/components/FormGenerator/components/generator/config.js @@ -0,0 +1,601 @@ +import { getToken } from '@/utils/auth' +import SettingMer from '@/utils/settingMer' + +// 表单属性【右面板】 +export const formConf = { + formRef: 'elForm', + formModel: 'formData', + size: 'medium', + labelPosition: 'right', + labelWidth: 100, + formRules: 'rules', + gutter: 15, + disabled: false, + span: 24, + formBtns: true +} + +// 输入型组件 【左面板】 +export const inputComponents = [ + { + // 组件的自定义配置 + __config__: { + label: '单行文本', + labelWidth: null, + showLabel: true, + changeTag: true, + tag: 'el-input', + tagIcon: 'input', + defaultValue: undefined, + required: true, + layout: 'colFormItem', + span: 24, + document: 'https://element.eleme.cn/#/zh-CN/component/input', + // 正则校验规则 + regList: [] + }, + // 组件的插槽属性 + __slot__: { + prepend: '', + append: '' + }, + // 其余的为可直接写在组件标签上的属性 + placeholder: '请输入', + style: { width: '100%' }, + clearable: true, + 'prefix-icon': '', + 'suffix-icon': '', + maxlength: null, + 'show-word-limit': false, + readonly: false, + disabled: false + }, + { + __config__: { + label: '多行文本', + labelWidth: null, + showLabel: true, + tag: 'el-input', + tagIcon: 'textarea', + defaultValue: undefined, + required: true, + layout: 'colFormItem', + span: 24, + regList: [], + changeTag: true, + document: 'https://element.eleme.cn/#/zh-CN/component/input' + }, + type: 'textarea', + placeholder: '请输入', + autosize: { + minRows: 4, + maxRows: 4 + }, + style: { width: '100%' }, + maxlength: null, + 'show-word-limit': false, + readonly: false, + disabled: false + }, + { + __config__: { + label: '密码', + showLabel: true, + labelWidth: null, + changeTag: true, + tag: 'el-input', + tagIcon: 'password', + defaultValue: undefined, + layout: 'colFormItem', + span: 24, + required: true, + regList: [], + document: 'https://element.eleme.cn/#/zh-CN/component/input' + }, + __slot__: { + prepend: '', + append: '' + }, + placeholder: '请输入', + 'show-password': true, + style: { width: '100%' }, + clearable: true, + 'prefix-icon': '', + 'suffix-icon': '', + maxlength: null, + 'show-word-limit': false, + readonly: false, + disabled: false + }, + { + __config__: { + label: '计数器', + showLabel: true, + changeTag: true, + labelWidth: null, + tag: 'el-input-number', + tagIcon: 'number', + defaultValue: undefined, + span: 24, + layout: 'colFormItem', + required: true, + regList: [], + document: 'https://element.eleme.cn/#/zh-CN/component/input-number' + }, + placeholder: '', + min: undefined, + max: undefined, + step: 1, + 'step-strictly': false, + precision: undefined, + 'controls-position': '', + disabled: false + } + // { + // __config__: { + // label: '编辑器', + // showLabel: true, + // changeTag: true, + // labelWidth: null, + // tag: 'tinymce', + // tagIcon: 'rich-text', + // defaultValue: null, + // span: 24, + // layout: 'colFormItem', + // required: true, + // regList: [], + // document: 'http://tinymce.ax-z.cn' + // }, + // height: 300, // 编辑器高度 + // branding: false // 隐藏右下角品牌烙印 + // } +] + +// 选择型组件 【左面板】 +export const selectComponents = [ + { + __config__: { + label: '下拉选择', + showLabel: true, + labelWidth: null, + tag: 'el-select', + tagIcon: 'select', + defaultValue: undefined, + layout: 'colFormItem', + span: 24, + required: true, + regList: [], + changeTag: true, + document: 'https://element.eleme.cn/#/zh-CN/component/select' + }, + __slot__: { + options: [{ + label: '选项一', + value: 1 + }, { + label: '选项二', + value: 2 + }] + }, + placeholder: '请选择', + style: { width: '100%' }, + clearable: true, + disabled: false, + filterable: false, + multiple: false + }, + { + __config__: { + label: '级联选择', + showLabel: true, + labelWidth: null, + tag: 'el-cascader', + tagIcon: 'cascader', + layout: 'colFormItem', + defaultValue: [], + dataType: 'dynamic', + span: 24, + required: true, + regList: [], + changeTag: true, + document: 'https://element.eleme.cn/#/zh-CN/component/cascader' + }, + options: [{ + id: 1, + value: 1, + label: '选项1', + children: [{ + id: 2, + value: 2, + label: '选项1-1' + }] + }], + placeholder: '请选择', + style: { width: '100%' }, + props: { + props: { + multiple: false, + label: 'label', + value: 'value', + children: 'children' + } + }, + 'show-all-levels': true, + disabled: false, + clearable: true, + filterable: false, + separator: '/' + }, + { + __config__: { + label: '单选框组', + labelWidth: null, + showLabel: true, + tag: 'el-radio-group', + tagIcon: 'radio', + changeTag: true, + defaultValue: undefined, + layout: 'colFormItem', + span: 24, + optionType: 'default', + regList: [], + required: true, + border: false, + document: 'https://element.eleme.cn/#/zh-CN/component/radio' + }, + __slot__: { + options: [{ + label: '选项一', + value: 1 + }, { + label: '选项二', + value: 2 + }] + }, + style: {}, + size: 'medium', + disabled: false + }, + { + __config__: { + label: '多选框组', + tag: 'el-checkbox-group', + tagIcon: 'checkbox', + defaultValue: [], + span: 24, + showLabel: true, + labelWidth: null, + layout: 'colFormItem', + optionType: 'default', + required: true, + regList: [], + changeTag: true, + border: false, + document: 'https://element.eleme.cn/#/zh-CN/component/checkbox' + }, + __slot__: { + options: [{ + label: '选项一', + value: 1 + }, { + label: '选项二', + value: 2 + }] + }, + style: {}, + size: 'medium', + min: null, + max: null, + disabled: false + }, + { + __config__: { + label: '开关', + tag: 'el-switch', + tagIcon: 'switch', + defaultValue: false, + span: 24, + showLabel: true, + labelWidth: null, + layout: 'colFormItem', + required: true, + regList: [], + changeTag: true, + document: 'https://element.eleme.cn/#/zh-CN/component/switch' + }, + style: {}, + disabled: false, + 'active-text': '', + 'inactive-text': '', + 'active-color': null, + 'inactive-color': null, + 'active-value': true, + 'inactive-value': false + }, + { + __config__: { + label: '滑块', + tag: 'el-slider', + tagIcon: 'slider', + defaultValue: null, + span: 24, + showLabel: true, + layout: 'colFormItem', + labelWidth: null, + required: true, + regList: [], + changeTag: true, + document: 'https://element.eleme.cn/#/zh-CN/component/slider' + }, + disabled: false, + min: 0, + max: 100, + step: 1, + 'show-stops': false, + range: false + }, + { + __config__: { + label: '时间选择', + tag: 'el-time-picker', + tagIcon: 'time', + defaultValue: null, + span: 24, + showLabel: true, + layout: 'colFormItem', + labelWidth: null, + required: true, + regList: [], + changeTag: true, + document: 'https://element.eleme.cn/#/zh-CN/component/time-picker' + }, + placeholder: '请选择', + style: { width: '100%' }, + disabled: false, + clearable: true, + 'picker-options': { + selectableRange: '00:00:00-23:59:59' + }, + format: 'HH:mm:ss', + 'value-format': 'HH:mm:ss' + }, + { + __config__: { + label: '时间范围', + tag: 'el-time-picker', + tagIcon: 'time-range', + span: 24, + showLabel: true, + labelWidth: null, + layout: 'colFormItem', + defaultValue: null, + required: true, + regList: [], + changeTag: true, + document: 'https://element.eleme.cn/#/zh-CN/component/time-picker' + }, + style: { width: '100%' }, + disabled: false, + clearable: true, + 'is-range': true, + 'range-separator': '至', + 'start-placeholder': '开始时间', + 'end-placeholder': '结束时间', + format: 'HH:mm:ss', + 'value-format': 'HH:mm:ss' + }, + { + __config__: { + label: '日期选择', + tag: 'el-date-picker', + tagIcon: 'date', + defaultValue: null, + showLabel: true, + labelWidth: null, + span: 24, + layout: 'colFormItem', + required: true, + regList: [], + changeTag: true, + document: 'https://element.eleme.cn/#/zh-CN/component/date-picker' + }, + placeholder: '请选择', + type: 'date', + style: { width: '100%' }, + disabled: false, + clearable: true, + format: 'yyyy-MM-dd', + 'value-format': 'yyyy-MM-dd', + readonly: false + }, + { + __config__: { + label: '日期范围', + tag: 'el-date-picker', + tagIcon: 'date-range', + defaultValue: null, + span: 24, + showLabel: true, + labelWidth: null, + required: true, + layout: 'colFormItem', + regList: [], + changeTag: true, + document: 'https://element.eleme.cn/#/zh-CN/component/date-picker' + }, + style: { width: '100%' }, + type: 'daterange', + 'range-separator': '至', + 'start-placeholder': '开始日期', + 'end-placeholder': '结束日期', + disabled: false, + clearable: true, + format: 'yyyy-MM-dd', + 'value-format': 'yyyy-MM-dd', + readonly: false + }, + { + __config__: { + label: '评分', + tag: 'el-rate', + tagIcon: 'rate', + defaultValue: 0, + span: 24, + showLabel: true, + labelWidth: null, + layout: 'colFormItem', + required: true, + regList: [], + changeTag: true, + document: 'https://element.eleme.cn/#/zh-CN/component/rate' + }, + style: {}, + max: 5, + 'allow-half': false, + 'show-text': false, + 'show-score': false, + disabled: false + }, + { + __config__: { + label: '颜色选择', + tag: 'el-color-picker', + tagIcon: 'color', + span: 24, + defaultValue: null, + showLabel: true, + labelWidth: null, + layout: 'colFormItem', + required: true, + regList: [], + changeTag: true, + document: 'https://element.eleme.cn/#/zh-CN/component/color-picker' + }, + 'show-alpha': false, + 'color-format': '', + disabled: false, + size: 'medium' + }, + { + __config__: { + label: '上传文件', + tag: 'upload-file', + tagIcon: 'uploadPicture', + layout: 'colFormItem', + defaultValue: null, + showLabel: true, + labelWidth: null, + required: true, + span: 24, + showTip: false, + buttonText: '点击上传', + regList: [], + changeTag: true, + // fileSize: 2, + // sizeUnit: 'MB', + document: 'https://element.eleme.cn/#/zh-CN/component/upload' + }, + __slot__: { + 'list-type': true + }, + // headers: { 'Authori-zation': getToken() }, + // data: { model: 'product', pid: 0 }, + // action: SettingMer.apiBaseURL + 'admin/upload/image?model=product&pid=0', + // disabled: false, + // accept: '', + name: 'upfile', + // 'auto-upload': false, + // 'list-type': 'text', + // multiple: false + }, + { + __config__: { + label: '自定义上传', + tag: 'self-upload', + tagIcon: 'selfUpload', + layout: 'colFormItem', + defaultValue: null, + showLabel: true, + labelWidth: null, + required: true, + span: 24, + showTip: false, + buttonText: '点击上传', + regList: [], + changeTag: true, + fileSize: 2, + sizeUnit: 'MB', + document: 'https://element.eleme.cn/#/zh-CN/component/upload' + }, + __slot__: { + 'list-type': true + }, + action: 'https://jsonplaceholder.typicode.com/posts/', + disabled: true, + accept: '', + name: 'file', + 'auto-upload': true, + 'list-type': 'text', + multiple: false + }, + { + __config__: { + label: '富文本编辑器', + tag: 'ueditor-from', + tagIcon: 'ueditorFrom', + layout: 'colFormItem', + defaultValue: null, + showLabel: true, + labelWidth: null, + required: false, + span: 24, + showTip: false, + regList: [], + changeTag: true, + }, + height: 300, // 编辑器高度 + name: 'ueditor', + disabled: false + } +] + +// 布局型组件 【左面板】 +export const layoutComponents = [ + { + __config__: { + layout: 'rowFormItem', + tagIcon: 'row', + label: '行容器', + layoutTree: true, + children: [], + document: 'https://element.eleme.cn/#/zh-CN/component/layout' + }, + type: 'default', + justify: 'start', + align: 'top' + }, + { + __config__: { + label: '按钮', + showLabel: true, + changeTag: true, + labelWidth: null, + tag: 'el-button', + tagIcon: 'button', + defaultValue: undefined, + span: 24, + layout: 'colFormItem', + document: 'https://element.eleme.cn/#/zh-CN/component/button' + }, + __slot__: { + default: '主要按钮' + }, + type: 'primary', + icon: 'el-icon-search', + round: false, + size: 'medium', + plain: false, + circle: false, + disabled: false + } +] diff --git a/admin/src/components/FormGenerator/components/generator/css.js b/admin/src/components/FormGenerator/components/generator/css.js new file mode 100644 index 00000000..7cb86e64 --- /dev/null +++ b/admin/src/components/FormGenerator/components/generator/css.js @@ -0,0 +1,18 @@ +const styles = { + 'el-rate': '.el-rate{display: inline-block; vertical-align: text-top;}', + 'el-upload': '.el-upload__tip{line-height: 1.2;}' +} + +function addCss(cssList, el) { + const css = styles[el.__config__.tag] + css && cssList.indexOf(css) === -1 && cssList.push(css) + if (el.__config__.children) { + el.__config__.children.forEach(el2 => addCss(cssList, el2)) + } +} + +export function makeUpCss(conf) { + const cssList = [] + conf.fields.forEach(el => addCss(cssList, el)) + return cssList.join('\n') +} diff --git a/admin/src/components/FormGenerator/components/generator/drawingDefalut.js b/admin/src/components/FormGenerator/components/generator/drawingDefalut.js new file mode 100644 index 00000000..dbc1daf2 --- /dev/null +++ b/admin/src/components/FormGenerator/components/generator/drawingDefalut.js @@ -0,0 +1,37 @@ +export default [ + { + __config__: { + label: '单行文本', + labelWidth: null, + showLabel: true, + changeTag: true, + tag: 'el-input', + tagIcon: 'input', + defaultValue: undefined, + required: true, + layout: 'colFormItem', + span: 24, + document: 'https://element.eleme.cn/#/zh-CN/component/input', + // 正则校验规则 + regList: [{ + pattern: '/^1(3|4|5|7|8|9)\\d{9}$/', + message: '手机号格式错误' + }] + }, + // 组件的插槽属性 + __slot__: { + prepend: '', + append: '' + }, + __vModel__: 'mobile', + placeholder: '请输入手机号', + style: { width: '100%' }, + clearable: true, + 'prefix-icon': 'el-icon-mobile', + 'suffix-icon': '', + maxlength: 11, + 'show-word-limit': true, + readonly: false, + disabled: false + } +] diff --git a/admin/src/components/FormGenerator/components/generator/html.js b/admin/src/components/FormGenerator/components/generator/html.js new file mode 100644 index 00000000..ddb1a255 --- /dev/null +++ b/admin/src/components/FormGenerator/components/generator/html.js @@ -0,0 +1,427 @@ +/* eslint-disable max-len */ +import ruleTrigger from './ruleTrigger' +import { getToken } from '@/utils/auth' +let confGlobal +let someSpanIsNot24 + +export function dialogWrapper(str) { + return ` + ${str} +
    + 取消 + 确定 +
    +
    ` +} + +export function vueTemplate(str) { + return `` +} + +export function vueScript(str) { + return `` +} + +export function cssStyle(cssStr) { + return `` +} + +function buildFormTemplate(scheme, child, type) { + let labelPosition = '' + if (scheme.labelPosition !== 'right') { + labelPosition = `label-position="${scheme.labelPosition}"` + } + const disabled = scheme.disabled ? `:disabled="${scheme.disabled}"` : '' + let str = ` + ${child} + ${buildFromBtns(scheme, type)} + ` + if (someSpanIsNot24) { + str = ` + ${str} + ` + } + return str +} + +function buildFromBtns(scheme, type) { + let str = '' + if (scheme.formBtns && type === 'file') { + str = ` + 提交 + 重置 + ` + if (someSpanIsNot24) { + str = ` + ${str} + ` + } + } + return str +} + +// span不为24的用el-col包裹 +function colWrapper(scheme, str) { + if (someSpanIsNot24 || scheme.__config__.span !== 24) { + return ` + ${str} + ` + } + return str +} + +const layouts = { + colFormItem(scheme) { + const config = scheme.__config__ + let labelWidth = '' + let label = `label="${config.label}"` + if (config.labelWidth && config.labelWidth !== confGlobal.labelWidth) { + labelWidth = `label-width="${config.labelWidth}px"` + } + if (config.showLabel === false) { + labelWidth = 'label-width="0"' + label = '' + } + const required = !ruleTrigger[config.tag] && config.required ? 'required' : '' + const tagDom = tags[config.tag] ? tags[config.tag](scheme) : null + let str = ` + ${tagDom} + ` + str = colWrapper(scheme, str) + return str + }, + rowFormItem(scheme) { + const config = scheme.__config__ + const type = scheme.type === 'default' ? '' : `type="${scheme.type}"` + const justify = scheme.type === 'default' ? '' : `justify="${scheme.justify}"` + const align = scheme.type === 'default' ? '' : `align="${scheme.align}"` + const gutter = scheme.gutter ? `:gutter="${scheme.gutter}"` : '' + const children = config.children.map(el => layouts[el.__config__.layout](el)) + let str = ` + ${children.join('\n')} + ` + str = colWrapper(scheme, str) + return str + } +} + +const tags = { + 'el-button': el => { + const { + tag, disabled + } = attrBuilder(el) + const type = el.type ? `type="${el.type}"` : '' + const icon = el.icon ? `icon="${el.icon}"` : '' + const round = el.round ? 'round' : '' + const size = el.size ? `size="${el.size}"` : '' + const plain = el.plain ? 'plain' : '' + const circle = el.circle ? 'circle' : '' + let child = buildElButtonChild(el) + + if (child) child = `\n${child}\n` // 换行 + return `<${tag} ${type} ${icon} ${round} ${size} ${plain} ${disabled} ${circle}>${child}` + }, + 'el-input': el => { + const { + tag, disabled, vModel, clearable, placeholder, width + } = attrBuilder(el) + const maxlength = el.maxlength ? `:maxlength="${el.maxlength}"` : '' + const showWordLimit = el['show-word-limit'] ? 'show-word-limit' : '' + const readonly = el.readonly ? 'readonly' : '' + const prefixIcon = el['prefix-icon'] ? `prefix-icon='${el['prefix-icon']}'` : '' + const suffixIcon = el['suffix-icon'] ? `suffix-icon='${el['suffix-icon']}'` : '' + const showPassword = el['show-password'] ? 'show-password' : '' + const type = el.type ? `type="${el.type}"` : '' + const autosize = el.autosize && el.autosize.minRows + ? `:autosize="{minRows: ${el.autosize.minRows}, maxRows: ${el.autosize.maxRows}}"` + : '' + let child = buildElInputChild(el) + + if (child) child = `\n${child}\n` // 换行 + return `<${tag} ${vModel} ${type} ${placeholder} ${maxlength} ${showWordLimit} ${readonly} ${disabled} ${clearable} ${prefixIcon} ${suffixIcon} ${showPassword} ${autosize} ${width}>${child}` + }, + 'el-input-number': el => { + const { + tag, disabled, vModel, placeholder + } = attrBuilder(el) + const controlsPosition = el['controls-position'] ? `controls-position=${el['controls-position']}` : '' + const min = el.min ? `:min='${el.min}'` : '' + const max = el.max ? `:max='${el.max}'` : '' + const step = el.step ? `:step='${el.step}'` : '' + const stepStrictly = el['step-strictly'] ? 'step-strictly' : '' + const precision = el.precision ? `:precision='${el.precision}'` : '' + + return `<${tag} ${vModel} ${placeholder} ${step} ${stepStrictly} ${precision} ${controlsPosition} ${min} ${max} ${disabled}>` + }, + 'el-select': el => { + const { + tag, disabled, vModel, clearable, placeholder, width + } = attrBuilder(el) + const filterable = el.filterable ? 'filterable' : '' + const multiple = el.multiple ? 'multiple' : '' + let child = buildElSelectChild(el) + + if (child) child = `\n${child}\n` // 换行 + return `<${tag} ${vModel} ${placeholder} ${disabled} ${multiple} ${filterable} ${clearable} ${width}>${child}` + }, + 'el-radio-group': el => { + const { tag, disabled, vModel } = attrBuilder(el) + const size = `size="${el.size}"` + let child = buildElRadioGroupChild(el) + + if (child) child = `\n${child}\n` // 换行 + return `<${tag} ${vModel} ${size} ${disabled}>${child}` + }, + 'el-checkbox-group': el => { + const { tag, disabled, vModel } = attrBuilder(el) + const size = `size="${el.size}"` + const min = el.min ? `:min="${el.min}"` : '' + const max = el.max ? `:max="${el.max}"` : '' + let child = buildElCheckboxGroupChild(el) + + if (child) child = `\n${child}\n` // 换行 + return `<${tag} ${vModel} ${min} ${max} ${size} ${disabled}>${child}` + }, + 'el-switch': el => { + const { tag, disabled, vModel } = attrBuilder(el) + const activeText = el['active-text'] ? `active-text="${el['active-text']}"` : '' + const inactiveText = el['inactive-text'] ? `inactive-text="${el['inactive-text']}"` : '' + const activeColor = el['active-color'] ? `active-color="${el['active-color']}"` : '' + const inactiveColor = el['inactive-color'] ? `inactive-color="${el['inactive-color']}"` : '' + const activeValue = el['active-value'] !== true ? `:active-value='${JSON.stringify(el['active-value'])}'` : '' + const inactiveValue = el['inactive-value'] !== false ? `:inactive-value='${JSON.stringify(el['inactive-value'])}'` : '' + + return `<${tag} ${vModel} ${activeText} ${inactiveText} ${activeColor} ${inactiveColor} ${activeValue} ${inactiveValue} ${disabled}>` + }, + 'el-cascader': el => { + const { + tag, disabled, vModel, clearable, placeholder, width + } = attrBuilder(el) + const options = el.options ? `:options="${el.__vModel__}Options"` : '' + const props = el.props ? `:props="${el.__vModel__}Props"` : '' + const showAllLevels = el['show-all-levels'] ? '' : ':show-all-levels="false"' + const filterable = el.filterable ? 'filterable' : '' + const separator = el.separator === '/' ? '' : `separator="${el.separator}"` + + return `<${tag} ${vModel} ${options} ${props} ${width} ${showAllLevels} ${placeholder} ${separator} ${filterable} ${clearable} ${disabled}>` + }, + 'el-slider': el => { + const { tag, disabled, vModel } = attrBuilder(el) + const min = el.min ? `:min='${el.min}'` : '' + const max = el.max ? `:max='${el.max}'` : '' + const step = el.step ? `:step='${el.step}'` : '' + const range = el.range ? 'range' : '' + const showStops = el['show-stops'] ? `:show-stops="${el['show-stops']}"` : '' + + return `<${tag} ${min} ${max} ${step} ${vModel} ${range} ${showStops} ${disabled}>` + }, + 'el-time-picker': el => { + const { + tag, disabled, vModel, clearable, placeholder, width + } = attrBuilder(el) + const startPlaceholder = el['start-placeholder'] ? `start-placeholder="${el['start-placeholder']}"` : '' + const endPlaceholder = el['end-placeholder'] ? `end-placeholder="${el['end-placeholder']}"` : '' + const rangeSeparator = el['range-separator'] ? `range-separator="${el['range-separator']}"` : '' + const isRange = el['is-range'] ? 'is-range' : '' + const format = el.format ? `format="${el.format}"` : '' + const valueFormat = el['value-format'] ? `value-format="${el['value-format']}"` : '' + const pickerOptions = el['picker-options'] ? `:picker-options='${JSON.stringify(el['picker-options'])}'` : '' + + return `<${tag} ${vModel} ${isRange} ${format} ${valueFormat} ${pickerOptions} ${width} ${placeholder} ${startPlaceholder} ${endPlaceholder} ${rangeSeparator} ${clearable} ${disabled}>` + }, + 'el-date-picker': el => { + const { + tag, disabled, vModel, clearable, placeholder, width + } = attrBuilder(el) + const startPlaceholder = el['start-placeholder'] ? `start-placeholder="${el['start-placeholder']}"` : '' + const endPlaceholder = el['end-placeholder'] ? `end-placeholder="${el['end-placeholder']}"` : '' + const rangeSeparator = el['range-separator'] ? `range-separator="${el['range-separator']}"` : '' + const format = el.format ? `format="${el.format}"` : '' + const valueFormat = el['value-format'] ? `value-format="${el['value-format']}"` : '' + const type = el.type === 'date' ? '' : `type="${el.type}"` + const readonly = el.readonly ? 'readonly' : '' + + return `<${tag} ${type} ${vModel} ${format} ${valueFormat} ${width} ${placeholder} ${startPlaceholder} ${endPlaceholder} ${rangeSeparator} ${clearable} ${readonly} ${disabled}>` + }, + 'el-rate': el => { + const { tag, disabled, vModel } = attrBuilder(el) + const max = el.max ? `:max='${el.max}'` : '' + const allowHalf = el['allow-half'] ? 'allow-half' : '' + const showText = el['show-text'] ? 'show-text' : '' + const showScore = el['show-score'] ? 'show-score' : '' + + return `<${tag} ${vModel} ${max} ${allowHalf} ${showText} ${showScore} ${disabled}>` + }, + 'el-color-picker': el => { + const { tag, disabled, vModel } = attrBuilder(el) + const size = `size="${el.size}"` + const showAlpha = el['show-alpha'] ? 'show-alpha' : '' + const colorFormat = el['color-format'] ? `color-format="${el['color-format']}"` : '' + + return `<${tag} ${vModel} ${size} ${showAlpha} ${colorFormat} ${disabled}>` + }, + 'el-upload': el => { + const { tag } = el.__config__ + const disabled = el.disabled ? ':disabled=\'true\'' : '' + const action = el.action ? `:action="${el.__vModel__}Action"` : '' + const multiple = el.multiple ? 'multiple' : '' + const listType = el['list-type'] !== 'text' ? `list-type="${el['list-type']}"` : '' + const accept = el.accept ? `accept="${el.accept}"` : '' + const name = el.name !== 'file' ? `name="${el.name}"` : '' + const autoUpload = el['auto-upload'] === false ? ':auto-upload="false"' : '' + const beforeUpload = `:before-upload="${el.__vModel__}BeforeUpload"` + const fileList = `:file-list="${el.__vModel__}fileList"` + const ref = `ref="${el.__vModel__}"` + const headers = { 'Authori-zation': getToken() } + const data = el.data ? 'data' : '' + let child = buildElUploadChild(el) + + if (child) child = `\n${child}\n` // 换行 + return `<${tag} ${headers} ${data} ${ref} ${fileList} ${action} ${autoUpload} ${multiple} ${beforeUpload} ${listType} ${accept} ${name} ${disabled}>${child}` + }, + 'self-upload': el => { + const { tag, vModel } = attrBuilder(el) + const height = el.height ? `:height="${el.height}"` : '' + const multiple = el.multiple ? 'multiple' : '' + const branding = el.branding ? `:branding="${el.branding}"` : '' + return `<${tag} ${vModel} ${height} ${branding} ${multiple}>` + }, + 'ueditor-from': el => { + const { tag, vModel } = attrBuilder(el) + const height = el.height ? `:height="${el.height}"` : '' + return `<${tag} ${vModel}${height} >` + }, + 'upload-file': el => { + const { tag, vModel } = attrBuilder(el) + const height = el.height ? `:height="${el.height}"` : '' + return `<${tag} ${vModel}${height} >` + }, + tinymce: el => { + const { tag, vModel } = attrBuilder(el) + const branding = el.branding ? `:branding="${el.branding}"` : '' + return `<${tag} ${vModel} ${branding}>` + } +} + +function attrBuilder(el) { + return { + tag: el.__config__.tag, + vModel: `v-model="${confGlobal.formModel}.${el.__vModel__}"`, + clearable: el.clearable ? 'clearable' : '', + placeholder: el.placeholder ? `placeholder="${el.placeholder}"` : '', + width: el.style && el.style.width ? ':style="{width: \'100%\'}"' : '', + disabled: el.disabled ? ':disabled=\'true\'' : '' + } +} + +// el-buttin 子级 +function buildElButtonChild(scheme) { + const children = [] + const slot = scheme.__slot__ || {} + if (slot.default) { + children.push(slot.default) + } + return children.join('\n') +} + +// el-input 子级 +function buildElInputChild(scheme) { + const children = [] + const slot = scheme.__slot__ + if (slot && slot.prepend) { + children.push(``) + } + if (slot && slot.append) { + children.push(``) + } + return children.join('\n') +} + +// el-select 子级 +function buildElSelectChild(scheme) { + const children = [] + const slot = scheme.__slot__ + if (slot && slot.options && slot.options.length) { + children.push(``) + } + return children.join('\n') +} + +// el-radio-group 子级 +function buildElRadioGroupChild(scheme) { + const children = [] + const slot = scheme.__slot__ + const config = scheme.__config__ + if (slot && slot.options && slot.options.length) { + const tag = config.optionType === 'button' ? 'el-radio-button' : 'el-radio' + const border = config.border ? 'border' : '' + children.push(`<${tag} v-for="(item, index) in ${scheme.__vModel__}Options" :key="index" :label="item.value" :disabled="item.disabled" ${border}>{{item.label}}`) + } + return children.join('\n') +} + +// el-checkbox-group 子级 +function buildElCheckboxGroupChild(scheme) { + const children = [] + const slot = scheme.__slot__ + const config = scheme.__config__ + if (slot && slot.options && slot.options.length) { + const tag = config.optionType === 'button' ? 'el-checkbox-button' : 'el-checkbox' + const border = config.border ? 'border' : '' + children.push(`<${tag} v-for="(item, index) in ${scheme.__vModel__}Options" :key="index" :label="item.value" :disabled="item.disabled" ${border}>{{item.label}}`) + } + return children.join('\n') +} + +// el-upload 子级 +function buildElUploadChild(scheme) { + const list = [] + const config = scheme.__config__ + if (scheme['list-type'] === 'picture-card') list.push('') + else list.push(`${config.buttonText}`) + if (config.showTip) list.push(`
    只能上传不超过 ${config.fileSize}${config.sizeUnit} 的${scheme.accept}文件
    `) + return list.join('\n') +} + +// el-upload 子级 +// function buildSelfUploadChild(scheme) { +// const list = [] +// const config = scheme.__config__ +// if (scheme['list-type'] === 'picture-card') list.push('') +// else list.push(`${config.buttonText}`) +// if (config.showTip) list.push(`
    只能上传不超过 ${config.fileSize}${config.sizeUnit} 的${scheme.accept}文件
    `) +// return list.join('\n') +// } + +/** + * 组装html代码。【入口函数】 + * @param {Object} formConfig 整个表单配置 + * @param {String} type 生成类型,文件或弹窗等 + */ +export function makeUpHtml(formConfig, type) { + const htmlList = [] + confGlobal = formConfig + // 判断布局是否都沾满了24个栅格,以备后续简化代码结构 + someSpanIsNot24 = formConfig.fields.some(item => item.__config__.span !== 24) + // 遍历渲染每个组件成html + formConfig.fields.forEach(el => { + htmlList.push(layouts[el.__config__.layout](el)) + }) + const htmlStr = htmlList.join('\n') + // 将组件代码放进form标签 + let temp = buildFormTemplate(formConfig, htmlStr, type) + // dialog标签包裹代码 + if (type === 'dialog') { + temp = dialogWrapper(temp) + } + confGlobal = null + return temp +} diff --git a/admin/src/components/FormGenerator/components/generator/js.js b/admin/src/components/FormGenerator/components/generator/js.js new file mode 100644 index 00000000..77a0b16a --- /dev/null +++ b/admin/src/components/FormGenerator/components/generator/js.js @@ -0,0 +1,254 @@ +import { isArray } from 'util' +import { exportDefault, titleCase } from '@/utils/index' +import ruleTrigger from './ruleTrigger' + +const units = { + KB: '1024', + MB: '1024 / 1024', + GB: '1024 / 1024 / 1024' +} +let confGlobal +const inheritAttrs = { + file: '', + dialog: 'inheritAttrs: false,' +} + +/** + * 组装js 【入口函数】 + * @param {Object} formConfig 整个表单配置 + * @param {String} type 生成类型,文件或弹窗等 + */ +export function makeUpJs(formConfig, type) { + confGlobal = formConfig = JSON.parse(JSON.stringify(formConfig)) + const dataList = [] + const ruleList = [] + const optionsList = [] + const propsList = [] + const methodList = mixinMethod(type) + const uploadVarList = [] + + formConfig.fields.forEach(el => { + buildAttributes(el, dataList, ruleList, optionsList, methodList, propsList, uploadVarList) + }) + + const script = buildexport( + formConfig, + type, + dataList.join('\n'), + ruleList.join('\n'), + optionsList.join('\n'), + uploadVarList.join('\n'), + propsList.join('\n'), + methodList.join('\n') + ) + confGlobal = null + return script +} + +// 构建组件属性 +function buildAttributes(scheme, dataList, ruleList, optionsList, methodList, propsList, uploadVarList) { + const config = scheme.__config__ + const slot = scheme.__slot__ + buildData(scheme, dataList) + buildRules(scheme, ruleList) + + // 特殊处理options属性 + if (scheme.options || (slot && slot.options && slot.options.length)) { + buildOptions(scheme, optionsList) + if (config.dataType === 'dynamic') { + const model = `${scheme.__vModel__}Options` + const options = titleCase(model) + buildOptionMethod(`get${options}`, model, methodList) + } + } + + // 处理props + if (scheme.props && scheme.props.props) { + buildProps(scheme, propsList) + } + + // 处理el-upload的action + if (scheme.action && config.tag === 'el-upload') { + uploadVarList.push( + `${scheme.__vModel__}Action: '${scheme.action}', + ${scheme.__vModel__}fileList: [],` + ) + methodList.push(buildBeforeUpload(scheme)) + // 非自动上传时,生成手动上传的函数 + if (!scheme['auto-upload']) { + methodList.push(buildSubmitUpload(scheme)) + } + } + + // 构建子级组件属性 + if (config.children) { + config.children.forEach(item => { + buildAttributes(item, dataList, ruleList, optionsList, methodList, propsList, uploadVarList) + }) + } +} + +// 混入处理函数 +function mixinMethod(type) { + const list = []; const + minxins = { + file: confGlobal.formBtns ? { + submitForm: `submitForm() { + this.$refs['${confGlobal.formRef}'].validate(valid => { + if(!valid) return + // TODO 提交表单 + }) + },`, + resetForm: `resetForm() { + this.$refs['${confGlobal.formRef}'].resetFields() + },` + } : null, + dialog: { + onOpen: 'onOpen() {},', + onClose: `onClose() { + this.$refs['${confGlobal.formRef}'].resetFields() + },`, + close: `close() { + this.$emit('update:visible', false) + },`, + handelConfirm: `handelConfirm() { + this.$refs['${confGlobal.formRef}'].validate(valid => { + if(!valid) return + this.close() + }) + },` + } + } + + const methods = minxins[type] + if (methods) { + Object.keys(methods).forEach(key => { + list.push(methods[key]) + }) + } + + return list +} + +// 构建data +function buildData(scheme, dataList) { + const config = scheme.__config__ + if (scheme.__vModel__ === undefined) return + const defaultValue = JSON.stringify(config.defaultValue) + dataList.push(`${scheme.__vModel__}: ${defaultValue},`) +} + +// 构建校验规则 +function buildRules(scheme, ruleList) { + const config = scheme.__config__ + if (scheme.__vModel__ === undefined) return + const rules = [] + if (ruleTrigger[config.tag]) { + if (config.required) { + const type = isArray(config.defaultValue) ? 'type: \'array\',' : '' + let message = isArray(config.defaultValue) ? `请至少选择一个${config.label}` : scheme.placeholder + if (message === undefined) message = `${config.label}不能为空` + rules.push(`{ required: true, ${type} message: '${message}', trigger: '${ruleTrigger[config.tag]}' }`) + } + if (config.regList && isArray(config.regList)) { + config.regList.forEach(item => { + if (item.pattern) { + rules.push( + `{ pattern: ${eval(item.pattern)}, message: '${item.message}', trigger: '${ruleTrigger[config.tag]}' }` + ) + } + }) + } + ruleList.push(`${scheme.__vModel__}: [${rules.join(',')}],`) + } +} + +// 构建options +function buildOptions(scheme, optionsList) { + if (scheme.__vModel__ === undefined) return + // el-cascader直接有options属性,其他组件都是定义在slot中,所以有两处判断 + let { options } = scheme + if (!options) options = scheme.__slot__.options + if (scheme.__config__.dataType === 'dynamic') { options = [] } + const str = `${scheme.__vModel__}Options: ${JSON.stringify(options)},` + optionsList.push(str) +} + +function buildProps(scheme, propsList) { + const str = `${scheme.__vModel__}Props: ${JSON.stringify(scheme.props.props)},` + propsList.push(str) +} + +// el-upload的BeforeUpload +function buildBeforeUpload(scheme) { + console.log(scheme) + const config = scheme.__config__ + const unitNum = units[config.sizeUnit]; let rightSizeCode = ''; let acceptCode = ''; const + returnList = [] + if (config.fileSize) { + rightSizeCode = `let isRightSize = file.size / ${unitNum} < ${config.fileSize} + if(!isRightSize){ + this.$message.error('文件大小超过 ${config.fileSize}${config.sizeUnit}') + }` + returnList.push('isRightSize') + } + if (scheme.accept) { + acceptCode = `let isAccept = new RegExp('${scheme.accept}').test(file.type) + if(!isAccept){ + this.$message.error('应该选择${scheme.accept}类型的文件') + }` + returnList.push('isAccept') + } + const str = `${scheme.__vModel__}BeforeUpload(file) { + ${rightSizeCode} + ${acceptCode} + return ${returnList.join('&&')} + },` + return returnList.length ? str : '' +} + +// el-upload的submit +function buildSubmitUpload(scheme) { + const str = `submitUpload() { + this.$refs['${scheme.__vModel__}'].submit() + },` + return str +} + +function buildOptionMethod(methodName, model, methodList) { + const str = `${methodName}() { + // TODO 发起请求获取数据 + this.${model} + },` + methodList.push(str) +} + +// js整体拼接 +function buildexport(conf, type, data, rules, selectOptions, uploadVar, props, methods) { + const str = `${exportDefault}{ + ${inheritAttrs[type]} + components: {}, + props: [], + data () { + return { + ${conf.formModel}: { + ${data} + }, + ${conf.formRules}: { + ${rules} + }, + ${uploadVar} + ${selectOptions} + ${props} + } + }, + computed: {}, + watch: {}, + created () {}, + mounted () {}, + methods: { + ${methods} + } +}` + return str +} diff --git a/admin/src/components/FormGenerator/components/generator/ruleTrigger.js b/admin/src/components/FormGenerator/components/generator/ruleTrigger.js new file mode 100644 index 00000000..7f33f1a8 --- /dev/null +++ b/admin/src/components/FormGenerator/components/generator/ruleTrigger.js @@ -0,0 +1,17 @@ + +/** + * 用于生成表单校验,指定正则规则的触发方式。 + * 未在此处声明无触发方式的组件将不生成rule!! + */ +export default { + 'el-input': 'blur', + 'el-input-number': 'blur', + 'el-select': 'change', + 'el-radio-group': 'change', + 'el-checkbox-group': 'change', + 'el-cascader': 'change', + 'el-time-picker': 'change', + 'el-date-picker': 'change', + 'el-rate': 'change', + tinymce: 'blur' +} diff --git a/admin/src/components/FormGenerator/components/parser/Parser.vue b/admin/src/components/FormGenerator/components/parser/Parser.vue new file mode 100644 index 00000000..ed626285 --- /dev/null +++ b/admin/src/components/FormGenerator/components/parser/Parser.vue @@ -0,0 +1,196 @@ + diff --git a/admin/src/components/FormGenerator/components/parser/README.md b/admin/src/components/FormGenerator/components/parser/README.md new file mode 100644 index 00000000..b91be7e8 --- /dev/null +++ b/admin/src/components/FormGenerator/components/parser/README.md @@ -0,0 +1,17 @@ +## form-generator JSON 解析器 +>用于将form-generator导出的JSON解析成一个表单。 + +### 安装组件 +``` +npm i form-gen-parser +``` +或者 +``` +yarn add form-gen-parser +``` + +### 使用示例 +> [查看在线示例](https://mrhj.gitee.io/form-generator/#/parser) + +示例代码: +> [src\components\parser\example\Index.vue](https://github.com/JakHuang/form-generator/blob/dev/src/components/parser/example/Index.vue) diff --git a/admin/src/components/FormGenerator/components/parser/ZBParser.vue b/admin/src/components/FormGenerator/components/parser/ZBParser.vue new file mode 100644 index 00000000..aacb9b58 --- /dev/null +++ b/admin/src/components/FormGenerator/components/parser/ZBParser.vue @@ -0,0 +1,64 @@ + + + + + diff --git a/admin/src/components/FormGenerator/components/parser/example/Index.vue b/admin/src/components/FormGenerator/components/parser/example/Index.vue new file mode 100644 index 00000000..47cc49a3 --- /dev/null +++ b/admin/src/components/FormGenerator/components/parser/example/Index.vue @@ -0,0 +1,264 @@ + + + + + diff --git a/admin/src/components/FormGenerator/components/parser/index.js b/admin/src/components/FormGenerator/components/parser/index.js new file mode 100644 index 00000000..0a44b2cc --- /dev/null +++ b/admin/src/components/FormGenerator/components/parser/index.js @@ -0,0 +1,3 @@ +import Parser from './Parser' + +export default Parser diff --git a/admin/src/components/FormGenerator/components/parser/package.json b/admin/src/components/FormGenerator/components/parser/package.json new file mode 100644 index 00000000..c31d3a3a --- /dev/null +++ b/admin/src/components/FormGenerator/components/parser/package.json @@ -0,0 +1,25 @@ +{ + "name": "form-gen-parser", + "version": "1.0.3", + "description": "表单json解析器", + "main": "lib/form-gen-parser.umd.js", + "directories": { + "example": "example" + }, + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/JakHuang/form-generator.git" + }, + "dependencies": { + "form-gen-render": "^1.0.0" + }, + "author": "jakHuang", + "license": "MIT", + "bugs": { + "url": "https://github.com/JakHuang/form-generator/issues" + }, + "homepage": "https://github.com/JakHuang/form-generator#readme" +} diff --git a/admin/src/components/FormGenerator/components/render/package.json b/admin/src/components/FormGenerator/components/render/package.json new file mode 100644 index 00000000..96bffcfe --- /dev/null +++ b/admin/src/components/FormGenerator/components/render/package.json @@ -0,0 +1,19 @@ +{ + "name": "form-gen-render", + "version": "1.0.4", + "description": "表单核心render", + "main": "lib/form-gen-render.umd.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/JakHuang/form-generator.git" + }, + "author": "jakhuang", + "license": "MIT", + "bugs": { + "url": "https://github.com/JakHuang/form-generator/issues" + }, + "homepage": "https://github.com/JakHuang/form-generator#readme" +} diff --git a/admin/src/components/FormGenerator/components/render/render.js b/admin/src/components/FormGenerator/components/render/render.js new file mode 100644 index 00000000..c1f9f6d8 --- /dev/null +++ b/admin/src/components/FormGenerator/components/render/render.js @@ -0,0 +1,59 @@ +function vModel(self, dataObject, defaultValue) { + dataObject.props.value = defaultValue + + dataObject.on.input = val => { + self.$emit('input', val) + } +} + +const componentChild = {} +/** + * 将./slots中的文件挂载到对象componentChild上 + * 文件名为key,对应JSON配置中的__config__.tag + * 文件内容为value,解析JSON配置中的__slot__ + */ +const slotsFiles = require.context('./slots', true, /\.js$/) +const keys = slotsFiles.keys() || [] +keys.forEach(key => { + const tag = key.replace(/^\.\/(.*)\.\w+$/, '$1') + const value = slotsFiles(key).default + componentChild[tag] = value +}) + +export default { + render(h) { + const dataObject = { + attrs: {}, + props: {}, + on: {}, + style: {} + } + const confClone = JSON.parse(JSON.stringify(this.conf)) + const children = [] + + const childObjs = componentChild[confClone.__config__.tag] + if (childObjs) { + Object.keys(childObjs).forEach(key => { + const childFunc = childObjs[key] + if (confClone.__slot__ && confClone.__slot__[key]) { + children.push(childFunc(h, confClone, key)) + } + }) + } + + Object.keys(confClone).forEach(key => { + const val = confClone[key] + if (key === '__vModel__') { + vModel(this, dataObject, confClone.__config__.defaultValue) + } else if (dataObject[key]) { + dataObject[key] = { ...dataObject[key], ...val } + } else { + dataObject.attrs[key] = val + } + }) + delete dataObject.attrs.__config__ + delete dataObject.attrs.__slot__ + return h(this.conf.__config__.tag, dataObject, children) + }, + props: ['conf'] +} diff --git a/admin/src/components/FormGenerator/components/render/slots/el-button.js b/admin/src/components/FormGenerator/components/render/slots/el-button.js new file mode 100644 index 00000000..a2d9684e --- /dev/null +++ b/admin/src/components/FormGenerator/components/render/slots/el-button.js @@ -0,0 +1,5 @@ +export default { + default(h, conf, key) { + return conf.__slot__[key] + } +} diff --git a/admin/src/components/FormGenerator/components/render/slots/el-checkbox-group.js b/admin/src/components/FormGenerator/components/render/slots/el-checkbox-group.js new file mode 100644 index 00000000..0a85c8e7 --- /dev/null +++ b/admin/src/components/FormGenerator/components/render/slots/el-checkbox-group.js @@ -0,0 +1,13 @@ +export default { + options(h, conf, key) { + const list = [] + conf.__slot__.options.forEach(item => { + if (conf.__config__.optionType === 'button') { + list.push({item.label}) + } else { + list.push({item.label}) + } + }) + return list + } +} diff --git a/admin/src/components/FormGenerator/components/render/slots/el-input.js b/admin/src/components/FormGenerator/components/render/slots/el-input.js new file mode 100644 index 00000000..1545fb70 --- /dev/null +++ b/admin/src/components/FormGenerator/components/render/slots/el-input.js @@ -0,0 +1,8 @@ +export default { + prepend(h, conf, key) { + return + }, + append(h, conf, key) { + return + } +} diff --git a/admin/src/components/FormGenerator/components/render/slots/el-radio-group.js b/admin/src/components/FormGenerator/components/render/slots/el-radio-group.js new file mode 100644 index 00000000..c78506f9 --- /dev/null +++ b/admin/src/components/FormGenerator/components/render/slots/el-radio-group.js @@ -0,0 +1,13 @@ +export default { + options(h, conf, key) { + const list = [] + conf.__slot__.options.forEach(item => { + if (conf.__config__.optionType === 'button') { + list.push({item.label}) + } else { + list.push({item.label}) + } + }) + return list + } +} diff --git a/admin/src/components/FormGenerator/components/render/slots/el-select.js b/admin/src/components/FormGenerator/components/render/slots/el-select.js new file mode 100644 index 00000000..cbf4a203 --- /dev/null +++ b/admin/src/components/FormGenerator/components/render/slots/el-select.js @@ -0,0 +1,9 @@ +export default { + options(h, conf, key) { + const list = [] + conf.__slot__.options.forEach(item => { + list.push() + }) + return list + } +} diff --git a/admin/src/components/FormGenerator/components/render/slots/el-upload.js b/admin/src/components/FormGenerator/components/render/slots/el-upload.js new file mode 100644 index 00000000..6af59e9c --- /dev/null +++ b/admin/src/components/FormGenerator/components/render/slots/el-upload.js @@ -0,0 +1,17 @@ +export default { + 'list-type': (h, conf, key) => { + const list = [] + const config = conf.__config__ + if (conf['list-type'] === 'picture-card') { + list.push() + } else { + list.push({config.buttonText}) + } + if (config.showTip) { + list.push( +
    只能上传不超过 {config.fileSize}{config.sizeUnit} 的{conf.accept}文件
    + ) + } + return list + } +} diff --git a/admin/src/components/FormGenerator/components/tinymce/config.js b/admin/src/components/FormGenerator/components/tinymce/config.js new file mode 100644 index 00000000..86f5f1e5 --- /dev/null +++ b/admin/src/components/FormGenerator/components/tinymce/config.js @@ -0,0 +1,8 @@ +/* eslint-disable max-len */ + +export const plugins = [ + 'advlist anchor autolink autosave code codesample directionality emoticons fullscreen hr image imagetools insertdatetime link lists media nonbreaking noneditable pagebreak paste preview print save searchreplace spellchecker tabfocus table wxTemplate textpattern visualblocks visualchars wordcount' +] +export const toolbar = [ + 'code searchreplace bold italic underline strikethrough alignleft aligncenter alignright outdent indent blockquote removeformat subscript superscript codesample hr bullist numlist link image charmap preview anchor pagebreak insertdatetime media table emoticons forecolor backcolor fullscreen' +] diff --git a/admin/src/components/FormGenerator/components/tinymce/index.vue b/admin/src/components/FormGenerator/components/tinymce/index.vue new file mode 100644 index 00000000..52b6cdac --- /dev/null +++ b/admin/src/components/FormGenerator/components/tinymce/index.vue @@ -0,0 +1,93 @@ + + + diff --git a/app/components/adc/index.vue b/app/components/adc/index.vue new file mode 100644 index 00000000..e9ec4a0c --- /dev/null +++ b/app/components/adc/index.vue @@ -0,0 +1,185 @@ + + + + + diff --git a/app/components/addressWindow/index.vue b/app/components/addressWindow/index.vue new file mode 100644 index 00000000..49aa0fd1 --- /dev/null +++ b/app/components/addressWindow/index.vue @@ -0,0 +1,184 @@ + + + + + diff --git a/app/components/countDown/index.vue b/app/components/countDown/index.vue new file mode 100644 index 00000000..6c6e38e9 --- /dev/null +++ b/app/components/countDown/index.vue @@ -0,0 +1,120 @@ + + + + + diff --git a/app/components/couponListWindow/index.vue b/app/components/couponListWindow/index.vue new file mode 100644 index 00000000..852464f6 --- /dev/null +++ b/app/components/couponListWindow/index.vue @@ -0,0 +1,109 @@ + + + + + diff --git a/app/components/couponListWindow/备份.vue b/app/components/couponListWindow/备份.vue new file mode 100644 index 00000000..35d08e35 --- /dev/null +++ b/app/components/couponListWindow/备份.vue @@ -0,0 +1,173 @@ + + + + + diff --git a/app/components/couponWindow/index.vue b/app/components/couponWindow/index.vue new file mode 100644 index 00000000..b22660c0 --- /dev/null +++ b/app/components/couponWindow/index.vue @@ -0,0 +1,171 @@ + + + + + diff --git a/app/components/easy-upload/easy-upload.vue b/app/components/easy-upload/easy-upload.vue new file mode 100644 index 00000000..05f9718e --- /dev/null +++ b/app/components/easy-upload/easy-upload.vue @@ -0,0 +1,261 @@ + + + + + diff --git a/app/components/easy-upload/readme.md b/app/components/easy-upload/readme.md new file mode 100644 index 00000000..de403f9a --- /dev/null +++ b/app/components/easy-upload/readme.md @@ -0,0 +1,40 @@ +### easy-upload 组件 + +使用方法 +```js + + + //先引入组件 + import easyUpload from '@/components/easy-upload/easy-upload.vue' + //注册组件 + components:{ + easyUpload + } + + //使用 easycom 可以直接使用 + +``` + +| 参数 | 类型 | 是否必填 | 参数描述 +| ---- | ---- | ---- | ---- +| types | String | 否 | 上传类型 image/video +| dataList | Array | 否 | 图片/视频数据展示 +| clearIcon | String | 否 | 删除图标(可以换成自己本地图片) +| uploadUrl | String | 否 | 上传的接口 +| deleteUrl | String | 否 | 删除的接口 +| uploadCount | Number | 否 | 上传图片最大个数(默认为一张) +| upload_max | Number | 否 | 上传大小(默认为3M) +| upload_max | Number | 否 | 上传大小(默认为3M) +| upload_max | Number | 否 | 上传大小(默认为3M) + +| 事件 | 是否必填 | 参数描述 +| ---- | ---- | ---- +| successImage | 否 | 上传图片成功事件 +| successVideo | 否 | 上传视频成功回调 + +示例项目中有服务端代码 (node.js) + diff --git a/app/components/emptyPage.vue b/app/components/emptyPage.vue new file mode 100644 index 00000000..64f1b7b5 --- /dev/null +++ b/app/components/emptyPage.vue @@ -0,0 +1,36 @@ + + + + + diff --git a/app/components/goodList/index.vue b/app/components/goodList/index.vue new file mode 100644 index 00000000..f5fe531b --- /dev/null +++ b/app/components/goodList/index.vue @@ -0,0 +1,143 @@ + + + + + diff --git a/app/components/home/index.vue b/app/components/home/index.vue new file mode 100644 index 00000000..665f452b --- /dev/null +++ b/app/components/home/index.vue @@ -0,0 +1,116 @@ + + + + diff --git a/app/components/jyf-parser/jyf-parser.vue b/app/components/jyf-parser/jyf-parser.vue new file mode 100644 index 00000000..6bc4fbd8 --- /dev/null +++ b/app/components/jyf-parser/jyf-parser.vue @@ -0,0 +1,814 @@ + + + + + + diff --git a/app/components/jyf-parser/libs/CssHandler.js b/app/components/jyf-parser/libs/CssHandler.js new file mode 100644 index 00000000..67981787 --- /dev/null +++ b/app/components/jyf-parser/libs/CssHandler.js @@ -0,0 +1,102 @@ +/* + 解析和匹配 Css 的选择器 + github:https://github.com/jin-yufeng/Parser + docs:https://jin-yufeng.github.io/Parser + author:JinYufeng + update:2020/03/15 +*/ +var cfg = require('./config.js'); +class CssHandler { + constructor(tagStyle) { + var styles = Object.assign({}, cfg.userAgentStyles); + for (var item in tagStyle) + styles[item] = (styles[item] ? styles[item] + ';' : '') + tagStyle[item]; + this.styles = styles; + } + getStyle = data => this.styles = new CssParser(data, this.styles).parse(); + match(name, attrs) { + var tmp, matched = (tmp = this.styles[name]) ? tmp + ';' : ''; + if (attrs.class) { + var items = attrs.class.split(' '); + for (var i = 0, item; item = items[i]; i++) + if (tmp = this.styles['.' + item]) + matched += tmp + ';'; + } + if (tmp = this.styles['#' + attrs.id]) + matched += tmp + ';'; + return matched; + } +} +module.exports = CssHandler; +class CssParser { + constructor(data, init) { + this.data = data; + this.floor = 0; + this.i = 0; + this.list = []; + this.res = init; + this.state = this.Space; + } + parse() { + for (var c; c = this.data[this.i]; this.i++) + this.state(c); + return this.res; + } + section = () => this.data.substring(this.start, this.i); + isLetter = c => (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z'); + // 状态机 + Space(c) { + if (c == '.' || c == '#' || this.isLetter(c)) { + this.start = this.i; + this.state = this.Name; + } else if (c == '/' && this.data[this.i + 1] == '*') + this.Comment(); + else if (!cfg.blankChar[c] && c != ';') + this.state = this.Ignore; + } + Comment() { + this.i = this.data.indexOf('*/', this.i) + 1; + if (!this.i) this.i = this.data.length; + this.state = this.Space; + } + Ignore(c) { + if (c == '{') this.floor++; + else if (c == '}' && !--this.floor) this.state = this.Space; + } + Name(c) { + if (cfg.blankChar[c]) { + this.list.push(this.section()); + this.state = this.NameSpace; + } else if (c == '{') { + this.list.push(this.section()); + this.Content(); + } else if (c == ',') { + this.list.push(this.section()); + this.Comma(); + } else if (!this.isLetter(c) && (c < '0' || c > '9') && c != '-' && c != '_') + this.state = this.Ignore; + } + NameSpace(c) { + if (c == '{') this.Content(); + else if (c == ',') this.Comma(); + else if (!cfg.blankChar[c]) this.state = this.Ignore; + } + Comma() { + while (cfg.blankChar[this.data[++this.i]]); + if (this.data[this.i] == '{') this.Content(); + else { + this.start = this.i--; + this.state = this.Name; + } + } + Content() { + this.start = ++this.i; + if ((this.i = this.data.indexOf('}', this.i)) == -1) this.i = this.data.length; + var content = this.section(); + for (var i = 0, item; item = this.list[i++];) + if (this.res[item]) this.res[item] += ';' + content; + else this.res[item] = content; + this.list = []; + this.state = this.Space; + } +} diff --git a/app/components/jyf-parser/libs/MpHtmlParser.js b/app/components/jyf-parser/libs/MpHtmlParser.js new file mode 100644 index 00000000..111e02ea --- /dev/null +++ b/app/components/jyf-parser/libs/MpHtmlParser.js @@ -0,0 +1,577 @@ +/* + 将 html 解析为适用于小程序 rich-text 的 DOM 结构 + github:https://github.com/jin-yufeng/Parser + docs:https://jin-yufeng.github.io/Parser + author:JinYufeng + update:2020/04/13 +*/ +var cfg = require('./config.js'), + blankChar = cfg.blankChar, + CssHandler = require('./CssHandler.js'), + { + screenWidth, + system + } = wx.getSystemInfoSync(); +// #ifdef MP-BAIDU || MP-ALIPAY || MP-TOUTIAO +var entities = { + lt: '<', + gt: '>', + amp: '&', + quot: '"', + apos: "'", + nbsp: '\xA0', + ensp: '\u2002', + emsp: '\u2003', + ndash: '–', + mdash: '—', + middot: '·', + lsquo: '‘', + rsquo: '’', + ldquo: '“', + rdquo: '”', + bull: '•', + hellip: '…', + permil: '‰', + copy: '©', + reg: '®', + trade: '™', + times: '×', + divide: '÷', + cent: '¢', + pound: '£', + yen: '¥', + euro: '€', + sect: '§' +}; +// #endif +var emoji; // emoji 补丁包 https://jin-yufeng.github.io/Parser/#/instructions?id=emoji +class MpHtmlParser { + constructor(data, options = {}) { + this.attrs = {}; + this.compress = options.compress; + this.CssHandler = new CssHandler(options.tagStyle, screenWidth); + this.data = data; + this.domain = options.domain; + this.DOM = []; + this.i = this.start = this.audioNum = this.imgNum = this.videoNum = 0; + this.protocol = this.domain && this.domain.includes('://') ? this.domain.split('://')[0] : ''; + this.state = this.Text; + this.STACK = []; + this.useAnchor = options.useAnchor; + this.xml = options.xml; + } + parse() { + if (emoji) this.data = emoji.parseEmoji(this.data); + for (var c; c = this.data[this.i]; this.i++) + this.state(c); + if (this.state == this.Text) this.setText(); + while (this.STACK.length) this.popNode(this.STACK.pop()); + // #ifdef MP-BAIDU || MP-TOUTIAO + // 将顶层标签的一些样式提取出来给 rich-text + (function f(ns) { + for (var i = ns.length, n; n = ns[--i];) { + if (n.type == 'text') continue; + if (!n.c) { + var style = n.attrs.style; + if (style) { + var j, k, res; + if ((j = style.indexOf('display')) != -1) + res = style.substring(j, (k = style.indexOf(';', j)) == -1 ? style.length : k); + if ((j = style.indexOf('float')) != -1) + res += ';' + style.substring(j, (k = style.indexOf(';', j)) == -1 ? style.length : k); + n.attrs.contain = res; + } + } else f(n.children); + } + })(this.DOM); + // #endif + if (this.DOM.length) { + this.DOM[0].PoweredBy = 'Parser'; + if (this.title) this.DOM[0].title = this.title; + } + return this.DOM; + } + // 设置属性 + setAttr() { + var name = this.getName(this.attrName); + if (cfg.trustAttrs[name]) { + if (!this.attrVal) { + if (cfg.boolAttrs[name]) this.attrs[name] = 'T'; + } else if (name == 'src') this.attrs[name] = this.getUrl(this.attrVal.replace(/&/g, '&')); + else this.attrs[name] = this.attrVal; + } + this.attrVal = ''; + while (blankChar[this.data[this.i]]) this.i++; + if (this.isClose()) this.setNode(); + else { + this.start = this.i; + this.state = this.AttrName; + } + } + // 设置文本节点 + setText() { + var back, text = this.section(); + if (!text) return; + text = (cfg.onText && cfg.onText(text, () => back = true)) || text; + if (back) { + this.data = this.data.substr(0, this.start) + text + this.data.substr(this.i); + let j = this.start + text.length; + for (this.i = this.start; this.i < j; this.i++) this.state(this.data[this.i]); + return; + } + if (!this.pre) { + // 合并空白符 + var tmp = []; + for (let i = text.length, c; c = text[--i];) + if (!blankChar[c] || (!blankChar[tmp[0]] && (c = ' '))) tmp.unshift(c); + text = tmp.join(''); + if (text == ' ') return; + } + // 处理实体 + var siblings = this.siblings(), + i = -1, + j, en; + while (1) { + if ((i = text.indexOf('&', i + 1)) == -1) break; + if ((j = text.indexOf(';', i + 2)) == -1) break; + if (text[i + 1] == '#') { + en = parseInt((text[i + 2] == 'x' ? '0' : '') + text.substring(i + 2, j)); + if (!isNaN(en)) text = text.substr(0, i) + String.fromCharCode(en) + text.substring(j + 1); + } else { + en = text.substring(i + 1, j); + // #ifdef MP-WEIXIN || MP-QQ || APP-PLUS + if (en == 'nbsp') text = text.substr(0, i) + '\xA0' + text.substr(j + 1); // 解决   失效 + else if (en != 'lt' && en != 'gt' && en != 'amp' && en != 'ensp' && en != 'emsp' && en != 'quot' && en != 'apos') { + i && siblings.push({ + type: 'text', + text: text.substr(0, i) + }) + siblings.push({ + type: 'text', + text: `&${en};`, + en: 1 + }) + text = text.substr(j + 1); + i = -1; + } + // #endif + // #ifdef MP-BAIDU || MP-ALIPAY || MP-TOUTIAO + if (entities[en]) text = text.substr(0, i) + entities[en] + text.substr(j + 1); + // #endif + } + } + text && siblings.push({ + type: 'text', + text + }) + } + // 设置元素节点 + setNode() { + var node = { + name: this.tagName.toLowerCase(), + attrs: this.attrs + }, + close = cfg.selfClosingTags[node.name] || (this.xml && this.data[this.i] == '/'); + this.attrs = {}; + if (!cfg.ignoreTags[node.name]) { + this.matchAttr(node); + if (!close) { + node.children = []; + if (node.name == 'pre' && cfg.highlight) { + this.remove(node); + this.pre = node.pre = true; + } + this.siblings().push(node); + this.STACK.push(node); + } else if (!cfg.filter || cfg.filter(node, this) != false) + this.siblings().push(node); + } else { + if (!close) this.remove(node); + else if (node.name == 'source') { + var parent = this.STACK[this.STACK.length - 1], + attrs = node.attrs; + if (parent && attrs.src) + if (parent.name == 'video' || parent.name == 'audio') + parent.attrs.source.push(attrs.src); + else { + var i, media = attrs.media; + if (parent.name == 'picture' && !parent.attrs.src && !(attrs.src.indexOf('.webp') && system.includes('iOS')) && + (!media || (media.includes('px') && + (((i = media.indexOf('min-width')) != -1 && (i = media.indexOf(':', i + 8)) != -1 && screenWidth > parseInt( + media.substr(i + 1))) || + ((i = media.indexOf('max-width')) != -1 && (i = media.indexOf(':', i + 8)) != -1 && screenWidth < parseInt( + media.substr(i + 1))))))) + parent.attrs.src = attrs.src; + } + } else if (node.name == 'base' && !this.domain) this.domain = node.attrs.href; + } + if (this.data[this.i] == '/') this.i++; + this.start = this.i + 1; + this.state = this.Text; + } + // 移除标签 + remove(node) { + var name = node.name, + j = this.i; + while (1) { + if ((this.i = this.data.indexOf('', this.i)) == -1) this.i = this.data.length; + // 处理 svg + if (name == 'svg') { + var src = this.data.substring(j, this.i + 1); + if (!node.attrs.xmlns) src = ' xmlns="http://www.w3.org/2000/svg"' + src; + var i = j; + while (this.data[j] != '<') j--; + src = this.data.substring(j, i) + src; + var parent = this.STACK[this.STACK.length - 1]; + if (node.attrs.width == '100%' && parent && (parent.attrs.style || '').includes('inline')) + parent.attrs.style = 'width:300px;max-width:100%;' + parent.attrs.style; + this.siblings().push({ + name: 'img', + attrs: { + src: 'data:image/svg+xml;utf8,' + src.replace(/#/g, '%23'), + ignore: 'T' + } + }) + } + return; + } + } + } + // 处理属性 + matchAttr(node) { + var attrs = node.attrs, + style = this.CssHandler.match(node.name, attrs, node) + (attrs.style || ''), + styleObj = {}; + if (attrs.id) { + if (this.compress & 1) attrs.id = void 0; + else if (this.useAnchor) this.bubble(); + } + if ((this.compress & 2) && attrs.class) attrs.class = void 0; + switch (node.name) { + case 'img': + if (attrs['data-src']) { + attrs.src = attrs.src || attrs['data-src']; + attrs['data-src'] = void 0; + } + if (attrs.src && !attrs.ignore) { + if (this.bubble()) attrs.i = (this.imgNum++).toString(); + else attrs.ignore = 'T'; + } + break; + case 'a': + case 'ad': + // #ifdef APP-PLUS + case 'iframe': + case 'embed': + // #endif + this.bubble(); + break; + case 'font': + if (attrs.color) { + styleObj['color'] = attrs.color; + attrs.color = void 0; + } + if (attrs.face) { + styleObj['font-family'] = attrs.face; + attrs.face = void 0; + } + if (attrs.size) { + var size = parseInt(attrs.size); + if (size < 1) size = 1; + else if (size > 7) size = 7; + var map = ['xx-small', 'x-small', 'small', 'medium', 'large', 'x-large', 'xx-large']; + styleObj['font-size'] = map[size - 1]; + attrs.size = void 0; + } + break; + case 'video': + case 'audio': + if (!attrs.id) attrs.id = node.name + (++this[`${node.name}Num`]); + else this[`${node.name}Num`]++; + if (node.name == 'video') { + if (attrs.width) { + style = `width:${parseFloat(attrs.width) + (attrs.width.includes('%') ? '%' : 'px')};${style}`; + attrs.width = void 0; + } + if (attrs.height) { + style = `height:${parseFloat(attrs.height) + (attrs.height.includes('%') ? '%' : 'px')};${style}`; + attrs.height = void 0; + } + if (this.videoNum > 3) node.lazyLoad = true; + } + attrs.source = []; + if (attrs.src) attrs.source.push(attrs.src); + if (!attrs.controls && !attrs.autoplay) + console.warn(`存在没有 controls 属性的 ${node.name} 标签,可能导致无法播放`, node); + this.bubble(); + break; + case 'td': + case 'th': + if (attrs.colspan || attrs.rowspan) + for (var k = this.STACK.length, item; item = this.STACK[--k];) + if (item.name == 'table') { + item.c = void 0; + break; + } + } + if (attrs.align) { + styleObj['text-align'] = attrs.align; + attrs.align = void 0; + } + // 压缩 style + var styles = style.replace(/"/g, '"').replace(/&/g, '&').split(';'); + style = ''; + for (var i = 0, len = styles.length; i < len; i++) { + var info = styles[i].split(':'); + if (info.length < 2) continue; + let key = info[0].trim().toLowerCase(), + value = info.slice(1).join(':').trim(); + if (value.includes('-webkit') || value.includes('-moz') || value.includes('-ms') || value.includes('-o') || value + .includes( + 'safe')) + style += `;${key}:${value}`; + else if (!styleObj[key] || value.includes('import') || !styleObj[key].includes('import')) + styleObj[key] = value; + } + if (node.name == 'img' && parseInt(styleObj.width || attrs.width) > screenWidth) + styleObj.height = 'auto'; + for (var key in styleObj) { + var value = styleObj[key]; + if (key.includes('flex') || key == 'order' || key == 'self-align') node.c = 1; + // 填充链接 + if (value.includes('url')) { + var j = value.indexOf('('); + if (j++ != -1) { + while (value[j] == '"' || value[j] == "'" || blankChar[value[j]]) j++; + value = value.substr(0, j) + this.getUrl(value.substr(j)); + } + } + // 转换 rpx + else if (value.includes('rpx')) + value = value.replace(/[0-9.]+\s*rpx/g, $ => parseFloat($) * screenWidth / 750 + 'px'); + else if (key == 'white-space' && value.includes('pre')) + this.pre = node.pre = true; + style += `;${key}:${value}`; + } + style = style.substr(1); + if (style) attrs.style = style; + } + // 节点出栈处理 + popNode(node) { + // 空白符处理 + if (node.pre) { + node.pre = this.pre = void 0; + for (let i = this.STACK.length; i--;) + if (this.STACK[i].pre) + this.pre = true; + } + if (node.name == 'head' || (cfg.filter && cfg.filter(node, this) == false)) + return this.siblings().pop(); + var attrs = node.attrs; + // 替换一些标签名 + if (node.name == 'picture') { + node.name = 'img'; + if (!attrs.src && (node.children[0] || '').name == 'img') + attrs.src = node.children[0].attrs.src; + if (attrs.src && !attrs.ignore) + attrs.i = (this.imgNum++).toString(); + return node.children = void 0; + } + if (cfg.blockTags[node.name]) node.name = 'div'; + else if (!cfg.trustTags[node.name]) node.name = 'span'; + // 处理列表 + if (node.c) { + if (node.name == 'ul') { + var floor = 1; + for (let i = this.STACK.length; i--;) + if (this.STACK[i].name == 'ul') floor++; + if (floor != 1) + for (let i = node.children.length; i--;) + node.children[i].floor = floor; + } else if (node.name == 'ol') { + for (let i = 0, num = 1, child; child = node.children[i++];) + if (child.name == 'li') { + child.type = 'ol'; + child.num = ((num, type) => { + if (type == 'a') return String.fromCharCode(97 + (num - 1) % 26); + if (type == 'A') return String.fromCharCode(65 + (num - 1) % 26); + if (type == 'i' || type == 'I') { + num = (num - 1) % 99 + 1; + var one = ['I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX'], + ten = ['X', 'XX', 'XXX', 'XL', 'L', 'LX', 'LXX', 'LXXX', 'XC'], + res = (ten[Math.floor(num / 10) - 1] || '') + (one[num % 10 - 1] || ''); + if (type == 'i') return res.toLowerCase(); + return res; + } + return num; + })(num++, attrs.type) + '.'; + } + } + } + // 处理表格的边框 + if (node.name == 'table') { + var padding = attrs.cellpadding, + spacing = attrs.cellspacing, + border = attrs.border; + if (node.c) { + this.bubble(); + if (!padding) padding = 2; + if (!spacing) spacing = 2; + } + if (border) attrs.style = `border:${border}px solid gray;${attrs.style || ''}`; + if (spacing) attrs.style = `border-spacing:${spacing}px;${attrs.style || ''}`; + if (border || padding) + (function f(ns) { + for (var i = 0, n; n = ns[i]; i++) { + if (n.name == 'th' || n.name == 'td') { + if (border) n.attrs.style = `border:${border}px solid gray;${n.attrs.style}`; + if (padding) n.attrs.style = `padding:${padding}px;${n.attrs.style}`; + } else f(n.children || []); + } + })(node.children) + } + this.CssHandler.pop && this.CssHandler.pop(node); + // 自动压缩 + if (node.name == 'div' && !Object.keys(attrs).length) { + var siblings = this.siblings(); + if (node.children.length == 1 && node.children[0].name == 'div') + siblings[siblings.length - 1] = node.children[0]; + } + } + // 工具函数 + bubble() { + for (var i = this.STACK.length, item; item = this.STACK[--i];) { + if (cfg.richOnlyTags[item.name]) { + if (item.name == 'table' && !Object.hasOwnProperty.call(item, 'c')) item.c = 1; + return false; + } + item.c = 1; + } + return true; + } + getName = val => this.xml ? val : val.toLowerCase(); + getUrl(url) { + if (url[0] == '/') { + if (url[1] == '/') url = this.protocol + ':' + url; + else if (this.domain) url = this.domain + url; + } else if (this.domain && url.indexOf('data:') != 0 && !url.includes('://')) + url = this.domain + '/' + url; + return url; + } + isClose = () => this.data[this.i] == '>' || (this.data[this.i] == '/' && this.data[this.i + 1] == '>'); + section = () => this.data.substring(this.start, this.i); + siblings = () => this.STACK.length ? this.STACK[this.STACK.length - 1].children : this.DOM; + // 状态机 + Text(c) { + if (c == '<') { + var next = this.data[this.i + 1], + isLetter = c => (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z'); + if (isLetter(next)) { + this.setText(); + this.start = this.i + 1; + this.state = this.TagName; + } else if (next == '/') { + this.setText(); + if (isLetter(this.data[++this.i + 1])) { + this.start = this.i + 1; + this.state = this.EndTag; + } else + this.Comment(); + } else if (next == '!') { + this.setText(); + this.Comment(); + } + } + } + Comment() { + var key; + if (this.data.substring(this.i + 2, this.i + 4) == '--') key = '-->'; + else if (this.data.substring(this.i + 2, this.i + 9) == '[CDATA[') key = ']]>'; + else key = '>'; + if ((this.i = this.data.indexOf(key, this.i + 2)) == -1) this.i = this.data.length; + else this.i += key.length - 1; + this.start = this.i + 1; + this.state = this.Text; + } + TagName(c) { + if (blankChar[c]) { + this.tagName = this.section(); + while (blankChar[this.data[this.i]]) this.i++; + if (this.isClose()) this.setNode(); + else { + this.start = this.i; + this.state = this.AttrName; + } + } else if (this.isClose()) { + this.tagName = this.section(); + this.setNode(); + } + } + AttrName(c) { + var blank = blankChar[c]; + if (blank) { + this.attrName = this.section(); + c = this.data[this.i]; + } + if (c == '=') { + if (!blank) this.attrName = this.section(); + while (blankChar[this.data[++this.i]]); + this.start = this.i--; + this.state = this.AttrValue; + } else if (blank) this.setAttr(); + else if (this.isClose()) { + this.attrName = this.section(); + this.setAttr(); + } + } + AttrValue(c) { + if (c == '"' || c == "'") { + this.start++; + if ((this.i = this.data.indexOf(c, this.i + 1)) == -1) return this.i = this.data.length; + this.attrVal = this.section(); + this.i++; + } else { + for (; !blankChar[this.data[this.i]] && !this.isClose(); this.i++); + this.attrVal = this.section(); + } + this.setAttr(); + } + EndTag(c) { + if (blankChar[c] || c == '>' || c == '/') { + var name = this.getName(this.section()); + for (var i = this.STACK.length; i--;) + if (this.STACK[i].name == name) break; + if (i != -1) { + var node; + while ((node = this.STACK.pop()).name != name); + this.popNode(node); + } else if (name == 'p' || name == 'br') + this.siblings().push({ + name, + attrs: {} + }); + this.i = this.data.indexOf('>', this.i); + this.start = this.i + 1; + if (this.i == -1) this.i = this.data.length; + else this.state = this.Text; + } + } +} +module.exports = MpHtmlParser; diff --git a/app/components/jyf-parser/libs/config.js b/app/components/jyf-parser/libs/config.js new file mode 100644 index 00000000..bee0e697 --- /dev/null +++ b/app/components/jyf-parser/libs/config.js @@ -0,0 +1,80 @@ +/* 配置文件 */ +// #ifdef MP-WEIXIN +const canIUse = wx.canIUse('editor'); // 高基础库标识,用于兼容 +// #endif +module.exports = { + // 过滤器函数 + filter: null, + // 代码高亮函数 + highlight: null, + // 文本处理函数 + onText: null, + blankChar: makeMap(' ,\xA0,\t,\r,\n,\f'), + // 块级标签,将被转为 div + blockTags: makeMap('address,article,aside,body,caption,center,cite,footer,header,html,nav,section' + ( + // #ifdef MP-WEIXIN + canIUse ? '' : + // #endif + ',pre')), + // 将被移除的标签 + ignoreTags: makeMap( + 'area,base,basefont,canvas,command,frame,input,isindex,keygen,link,map,meta,param,script,source,style,svg,textarea,title,track,use,wbr' + // #ifdef MP-WEIXIN + + (canIUse ? ',rp' : '') + // #endif + // #ifndef APP-PLUS + + ',embed,iframe' + // #endif + ), + // 只能被 rich-text 显示的标签 + richOnlyTags: makeMap('a,colgroup,fieldset,legend,picture,table' + // #ifdef MP-WEIXIN + + (canIUse ? ',bdi,bdo,caption,rt,ruby' : '') + // #endif + ), + // 自闭合的标签 + selfClosingTags: makeMap( + 'area,base,basefont,br,col,circle,ellipse,embed,frame,hr,img,input,isindex,keygen,line,link,meta,param,path,polygon,rect,source,track,use,wbr' + ), + // 信任的属性 + trustAttrs: makeMap( + 'align,alt,app-id,author,autoplay,border,cellpadding,cellspacing,class,color,colspan,controls,data-src,dir,face,height,href,id,ignore,loop,media,muted,name,path,poster,rowspan,size,span,src,start,style,type,unit-id,width,xmlns' + ), + // bool 型的属性 + boolAttrs: makeMap('autoplay,controls,ignore,loop,muted'), + // 信任的标签 + trustTags: makeMap( + 'a,abbr,ad,audio,b,blockquote,br,code,col,colgroup,dd,del,dl,dt,div,em,fieldset,h1,h2,h3,h4,h5,h6,hr,i,img,ins,label,legend,li,ol,p,q,source,span,strong,sub,sup,table,tbody,td,tfoot,th,thead,tr,title,ul,video' + // #ifdef MP-WEIXIN + + (canIUse ? ',bdi,bdo,caption,pre,rt,ruby' : '') + // #endif + // #ifdef APP-PLUS + + ',embed,iframe' + // #endif + ), + // 默认的标签样式 + userAgentStyles: { + address: 'font-style:italic', + big: 'display:inline;font-size:1.2em', + blockquote: 'background-color:#f6f6f6;border-left:3px solid #dbdbdb;color:#6c6c6c;padding:5px 0 5px 10px', + caption: 'display:table-caption;text-align:center', + center: 'text-align:center', + cite: 'font-style:italic', + dd: 'margin-left:40px', + img: 'max-width:100%', + mark: 'background-color:yellow', + picture: 'max-width:100%', + pre: 'font-family:monospace;white-space:pre;overflow:scroll', + s: 'text-decoration:line-through', + small: 'display:inline;font-size:0.8em', + u: 'text-decoration:underline' + } +} + +function makeMap(str) { + var map = {}, + list = str.split(','); + for (var i = list.length; i--;) + map[list[i]] = true; + return map; +} diff --git a/app/components/jyf-parser/libs/handler.sjs b/app/components/jyf-parser/libs/handler.sjs new file mode 100644 index 00000000..5eca3fde --- /dev/null +++ b/app/components/jyf-parser/libs/handler.sjs @@ -0,0 +1,35 @@ +var inlineTags = { + abbr: 1, + b: 1, + big: 1, + code: 1, + del: 1, + em: 1, + i: 1, + ins: 1, + label: 1, + q: 1, + small: 1, + span: 1, + strong: 1 +} +export default { + // 从顶层标签的样式中取出一些给 rich-text + getStyle: function(style) { + if (style) { + var i, j, res = ''; + if ((i = style.indexOf('display')) != -1) + res = style.substring(i, (j = style.indexOf(';', i)) == -1 ? style.length : j); + if ((i = style.indexOf('float')) != -1) + res += ';' + style.substring(i, (j = style.indexOf(';', i)) == -1 ? style.length : j); + return res; + } + }, + getNode: function(item) { + return [item]; + }, + // 是否通过 rich-text 显示 + useRichText: function(item) { + return !item.c && !inlineTags[item.name] && (item.attrs.style || '').indexOf('display:inline') == -1; + } +} diff --git a/app/components/jyf-parser/libs/handler.wxs b/app/components/jyf-parser/libs/handler.wxs new file mode 100644 index 00000000..c37cd405 --- /dev/null +++ b/app/components/jyf-parser/libs/handler.wxs @@ -0,0 +1,44 @@ +var inlineTags = { + abbr: 1, + b: 1, + big: 1, + code: 1, + del: 1, + em: 1, + i: 1, + ins: 1, + label: 1, + q: 1, + small: 1, + span: 1, + strong: 1 +} +module.exports = { + // 从顶层标签的样式中取出一些给 rich-text + getStyle: function(style) { + if (style) { + var i, j, res = ''; + if ((i = style.indexOf('display')) != -1) + res = style.substring(i, (j = style.indexOf(';', i)) == -1 ? style.length : j); + if ((i = style.indexOf('float')) != -1) + res += ';' + style.substring(i, (j = style.indexOf(';', i)) == -1 ? style.length : j); + return res; + } + }, + // 处理懒加载 + getNode: function(item, imgLoad) { + if (!imgLoad && item.attrs.i != '0') { + var img = { + name: 'img', + attrs: JSON.parse(JSON.stringify(item.attrs)) + } + delete img.attrs.src; + img.attrs.style += ';width:20px;height:20px'; + return [img]; + } else return [item]; + }, + // 是否通过 rich-text 显示 + useRichText: function(item) { + return !item.c && !inlineTags[item.name] && (item.attrs.style || '').indexOf('display:inline') == -1; + } +} diff --git a/app/components/jyf-parser/libs/trees.vue b/app/components/jyf-parser/libs/trees.vue new file mode 100644 index 00000000..396eec32 --- /dev/null +++ b/app/components/jyf-parser/libs/trees.vue @@ -0,0 +1,476 @@ + + + + + + diff --git a/app/pages/users/goods_logistics/index.vue b/app/pages/users/goods_logistics/index.vue new file mode 100644 index 00000000..87c119c0 --- /dev/null +++ b/app/pages/users/goods_logistics/index.vue @@ -0,0 +1,279 @@ + + + + + diff --git a/app/pages/users/goods_return/index.vue b/app/pages/users/goods_return/index.vue new file mode 100644 index 00000000..c998b625 --- /dev/null +++ b/app/pages/users/goods_return/index.vue @@ -0,0 +1,205 @@ + + + + diff --git a/app/pages/users/login/index.vue b/app/pages/users/login/index.vue new file mode 100644 index 00000000..84e9df2d --- /dev/null +++ b/app/pages/users/login/index.vue @@ -0,0 +1,372 @@ + + + diff --git a/app/pages/users/order_confirm/index.vue b/app/pages/users/order_confirm/index.vue new file mode 100644 index 00000000..54bbc70c --- /dev/null +++ b/app/pages/users/order_confirm/index.vue @@ -0,0 +1,1147 @@ + + + + diff --git a/app/pages/users/order_list/index.vue b/app/pages/users/order_list/index.vue new file mode 100644 index 00000000..4ef63dc6 --- /dev/null +++ b/app/pages/users/order_list/index.vue @@ -0,0 +1,558 @@ + + + + + diff --git a/app/pages/users/promoter-list/index.vue b/app/pages/users/promoter-list/index.vue new file mode 100644 index 00000000..db744db7 --- /dev/null +++ b/app/pages/users/promoter-list/index.vue @@ -0,0 +1,352 @@ + + + + + diff --git a/app/pages/users/promoter-order/index.vue b/app/pages/users/promoter-order/index.vue new file mode 100644 index 00000000..c7367dc5 --- /dev/null +++ b/app/pages/users/promoter-order/index.vue @@ -0,0 +1,226 @@ + + + + + diff --git a/app/pages/users/promoter_rank/index.vue b/app/pages/users/promoter_rank/index.vue new file mode 100644 index 00000000..9a150c98 --- /dev/null +++ b/app/pages/users/promoter_rank/index.vue @@ -0,0 +1,313 @@ + + + + + diff --git a/app/pages/users/retrievePassword/index.vue b/app/pages/users/retrievePassword/index.vue new file mode 100644 index 00000000..8e1b35b0 --- /dev/null +++ b/app/pages/users/retrievePassword/index.vue @@ -0,0 +1,163 @@ + + + + diff --git a/app/pages/users/static/vip.png b/app/pages/users/static/vip.png new file mode 100644 index 0000000000000000000000000000000000000000..dec82b69d9dae887ee98ee1cd47a6e18bc6ca280 GIT binary patch literal 725 zcmV;`0xJE9P)+wJb`j@dPBS}1A^PUdQI<~Qe@|9{UCT(F9{?2^myh%wwJ1aU8nF_Z|w2ae!P zBD1{S?+tX!Zx)H!Z|AwODpfX89hKX zmwhY<^7CM9Mi2)ga9SsDTXis(`gaH?fRm%(NrNmE8hpIYuWco{8pOhdC=w&q)6%_t$NO_ z#y*6B5jc(mt+c(7e7L+wJT*C4$tj83u#R^i4$T0}+w8Yc0s?Q_wLGNZ>(Gi@UMn)B zu$Fxhj7>ik76{Bt{b{(9;Tt5QN<_U{rTs67_9% zEt0&OVdfEp!7*O|#u)P3o0yzgfEWmaaQrXZI5v!W38lgwX6Mr&g!n?y(=te41P%3L z&dYEoI+dQKnhGg;t&@?i)lfeyVKhDkUJimljMHyC80|Xgk6VpA}ofD;>ZMqHZ3$(Qf#vIJfFZx1svhxgn);51* zY^{FeGnDAapN;)rK0QCn%N!2vIxcm5wV{_fV7oj1ufKqwW8%lm$}keR00000NkvXX Hu0mjf&B#0= literal 0 HcmV?d00001 diff --git a/app/pages/users/static/vip01.png b/app/pages/users/static/vip01.png new file mode 100644 index 0000000000000000000000000000000000000000..e17ec4d596d8dc0560fc4024d3b593d3655723ac GIT binary patch literal 6100 zcmV;_7c1zAP)1A!{!Nhnkh0Y#k7vhOw1cFjzuGhJ)eni)H7 zr_x%ZrX z_WsWIfB$Qr5PU|jWy_YulF95MlEk$%h9W}g1OSB;Bp*O7C{2@7>7_s`KwBtq$|B@l z*QH0`;!yg4uEXosuXjF+DU(0vMJg*-=TVz1Cd4WMFpp9?$h;o)f0b|jPs|S}0SKjS z0NLq+R>ix?rj4~vT=;X%|IYyoSyH~Hn1b97kYZ4p0J{q1|7kB1l+btVgH-2n98zyOF_tw0XoUJag=~fJ!CKH1IeNgVC;L(lEOq_ zc#D^BZt`7&1LyCmtAD@slY;Y!fT^gscT9}Z|DhmEL;T4`GC{6`m^LL24V)m!7G)jO zN5#LQfgNQ;ts-{s1KW12KlO0|`q;o!makn2f?oo3kXV<$U^UN3)9FKR)G*?Zfa(aV z41KOH8{#IVZG_;f+p3@b-NymvBLlN&(bv;65*6seqnKaGrV4^yfp0Fuyt*LpYu|IJ71%^ehaANxmrUYp2PdzM{Asy0WCsItk z?*ney1M3P{qWoi&2LtMR?e00XwHy14n)?K1(V|7^nTZiQDKI<#ZS(pPCt7-E(K#K zTumfB!3;&UA`a2zRK-3Xx0pxK50dXq5%$@j7~8jA_<|L_q4e(Rnr9>9oJe4p*jf}v z01Wa1x2V93n~Olem3MtIVw12$|wiUC<^`2II< z!q`!P5{;bUJMXsO!G~T&cW)9aD~oW)t>cl1TLDw_&C_)$>Ke}D`#;*v0pULZ1}Q@} zb(zAkX~j#s)^E|lF;>A!2X@bZI#4>cpX;a~MMozTJ!mAKDLg&hm;G_)_syq$Of~kKb*heC;!c z#VpPm@uOlyG3Veqq~YxEkWyP9%;aa~HwjL}l1zamP9T$%6z;+yL{_V1U zC*IN7izi<=jIA#TVE+DVH{+TaBSMR1U>`Wxh#&v@RrK`QSXMF}%gUxBD>Kn2Fuh3! z#jAdYcsvG+fno_@I3T_Td(pJX9Cz&>c0B)>x_}N0sVuwa9S{-ndnT`wm)XA*4hD+r zGBa|JOxoD;*qumE>-&ygX23lErT`{04gdJfn=xzp$VgybWx)JOFy_l;({N{b5i&FS z28Myifr-Unu^$GEs&*K~jfjYyqW%xH&rMZ_dB7|wUsFOU*(Rwa%_kg(s8w)a9GA1j zwv*WM*zzj|W=l;yva{0gPv5!~S5FHwhMCfVgH3qwp;sg@)3KZZ(+^`9FpKVf3h{WH zn-c>@%Due3%CkifkBhroR#W>t$G`(-aoIgge9FS7XmNmMpo}e?F}97Qoy6A1SM&>v zFr~M!`40@31itscO_(-mC~VvH+&%Luu^7R@BhC2f!@`vAET4fdm(92$#w=X3%Z^WN}k3jx0Iqzq-yqJJTBAgYHHU%%7LjUU$cQwQt5vwFKdML zrdRS9efX zEIzNEq=VK=z3A$8z~Y|HZkw}aKvn{i#^<4Q!DL)LZ6tCAW`wSFv9$|J?|%j{t})D% z*zy>NUP>BOK=&6bP}*3t^Z6wN_!q0P{NzPSweUZn;NA?hK!8WN(kt1HjV~2XM#=n1 z7&&YJr!QkkM!8!V;9lV+J&wj8@U71anl#ZVrkh76c*%i_ONrB&t1aSntD9Dtq$>6 zTzDjlfcYikmIhinK}!HdTg}erhmgwBwO3Q(ycx8^V5G}Ka_vJA&I@z0Z5xRM!Sypo z;;zL-$RCo0V<#@)@n;Wm^I@-oVcD2>!zj$2H5@|*rE@Kbr!WaMSq4y7w~dQ!z1VlC z8MOzRaOUh~?lLBi&&NG?UWe(EhU46Y%RCHt?a*l?lN6TpNJ3wzv7>S^`}#s0J>G&p zHMH<7U%2U*ObO(KO|8`!q-m+}HbQAA?jwuK*8CI{-!ergJd&Sw`HSJKkr6OU519Ed z1~I`*CLIhNl7Y(kS7GiK3NSb)Js6Nj3TU4nQsBc&J=pbH6JB`fJ)FPT&0ToXc6r7b zBNk_i$dmkJRW3F#v`S3%k3HJ_j4Uo)!@72*fq>sH5kv{F7utxdnEfz77)Xu;XxNZ+ z+*L9GbFLeKOdb(y6V;Oz9;<6532!2PTH>86?`U_AgO~q!22X8mz}XAkf+aEq5Q3`` zNRh3F3sP63uJ9FLsrG(-D>^V4-P(u53Vg_EB4j$S-dbqv+7 zG{Uwik9|0EWbDG1t20pkZg3+|R}@Z*Hj|3dH5~x5BEn;Bu4ay*Q%{+aGNXxw1MrR2 zMHn?aTM@c{Eg`^#(`Wc`c?Bw|)YCt;LZcYKk8k?mGJf*-n>co|odd%2BO?va&@nt~ zgcZn{63|XkQM#JN;&Gi`A*<9hCCo~pFU*9pGAyjBn232djz%J`yUI`{L=$4dp21#3a!Ev zXk8dP4}vb-7hVR=_%Ye|?)}$dSYDBEI_sr-3Hy=NahByAmKbm;mbto7=-v3&j zn^JKoaP~qc{_R(9;N4U0QfKrWNlqmMKvccSy9x)UgECVx4bt;Up}i<_%A$5H>by*J z(-J`G+(Il}IKiys^%JT%b`oz?Z->*{%SVo-rQ!NT3lWQZ8?nR{YY z9gHo=!aw}Y=P_bfmKTQW9YuEk&YnDpwhJxj_^=I~?QNj8EsIK`cEVn&D#+3d5|1Nm zP!0y<=3-!8K8BAQYe<}7j^{e@ufI5e6HS+R0;vk(A)WC9+>q923_DE9OIL3NrGEP$ zsw1doAkzW$t13O%wu8^l%*R((UCon3UGh}8!!Fv=bQ*8J{4!#^7!~t>c>E!`L0OO} zN~Y?End|ghZb9Ct0@-?EH$@b32@4?z#l_Zc{P*Jr@%o!*wOmPL*4~8tHdDy=2P9(~ zW6Xa6^qYJ!scg=3a~dgS#H%Jh@5WKMXX$hv`pf>Xn2+vtDbUi`h-0t4#_O`8G{9mH z(Mu91DBTj^u+r(o8*V`Um@%Hz7{JTLwzhZU(Ps~1$G%3%7-dd*Q&q#U6 z>b0QsQQx7Ot~FA8RU#=<0LGYww~oQ8%4rxhkmW??OYG70vy5{mPvZSUhXi9JTXe>- z*hsNv>^0Y5*tl`}O*h`F*|M_66E7S=)vl9>sV)J>Te8dGv3C!&iRyYm*OAiFyRRlL zk!1%%Oyms=e5S-pCXkNH3RMo~-Y^RHtti6aoNxh2he<8u%+Y#$aP*y!9;kqkv1P>6 zDJYmcB~n+^IO@v}+q&`Vrw?J*e#RJCkCB~Ea|MCS$rMmNoJ%l^7plsO-@QnApW1%~ z8|gmaVoIz_pi%)Qlvhv9!?)L6kNm-z5s{}NzwcSjGu9kDC|Vr>jo~#O$HCZZuf@=@ z<08@uW!t_hK7X+jKmN@D9I89-nW$fnG3`Ogj_EZ$O1IVS-Z+HMw0zOs8z@0#uox9i zEH$*b762~S0UM)7WaInaxDlfZa?Je12qt9bivmq`b!a|%)B{GpDGHboQ>I|dj2V8D zOJ(6kPf=v;jc3~N!=LO$WAkOn7!~B1L8-4#DJ@~s&OMtdIWT1Y8GZ+Kbq@Cbm;3(=GcJ)xOnOm2Zr6*M20ZIWOp}bB4f;u!a_{^ zs~i2XQUr^ROR?|&8u81=-$3i7B)`7SLftWmC8&7>BYFP3!n)eMn?y0Za{lT(JI!qd zXhNJKPw@0a-A_ZH#O?+e$FP3;yg6gAcKIycGwSbkxTXdj7cL+xCkG>^OhLXB*p`zg zIg>iu+mW4@hnctEo?<9}QLJC}$kT`L(%uuW9q^u#YR@VO2IgD)qM3#;3;3&TJ6 zIph@<29icLCdGxuQ#kwHdzgOPZK*MqQgf=Q761I7d(iyBWv^|*$`28(kpPoJt>~>g z_iXYTZXB39mX{DK#@mx#rXASc&cBj0RE*Sn*oio>qDP6eo9lkr$OM(NB zNboTNq+}%r7I(-eCL7Lm^x{wmc|8En?fthB6)wtDCSaEe;)t-^Oy0#`3|ow ztCC0&TtUZwh6mIIX%aq=+;$BL~ZzHE9K?z=lnG)Ys<%md?W!g7fTY#^u zxgH~i4bX-%(J+Yp1Yo(_9x-ByF}$!rn)G5?l#cyK~RR$Za5) zJ9ln8J7Z)WKql$uMh_$mTx|dHi&e~Zvl7G|^Cn>V;vx(goF&>Zx+BoNTZDs9b#u=V zs&y#hQGj(Ff4|`^-UqjhUJ`4xMXXzqCyGTB4X)KXU4PaoB#|WxmzM)-tC_fKq1|@@ zdg`45(MEBQksd?wf(fWBnTGtl?C=fJoL`DfEMelx*|xNFU_(_Mw$(JCtIOtsD|S)& z`}aa8%Nr2hNyrvxRqWckA@x=>HCV~Q6-iV2{;jSdOE>Nl&+M^9_Yq zT2X{CBXbawd+7YUQa7Q#R9DQ5btaomw_^R~BiQ@u`&@WAD7+mji&KGN{4z^eYlJf) zRlD|X?0<72JNWk7myd}PBDb?jxVVcJOERt9Hxr#XN{nMMV8T^Hu()_Cu9;cDoAGS_ zi`oaOx0SqrR+^65sKCH(Ywy9q!>6&ast(8Ay9n1|tyqpWvMbn1kwwuOd z%A{e)&P*VK^{-jKCBjRw%|zWjNwDDUXu~`l za#X~wEWx5!Rr~U$r=pxqpJ7<>9V;HDl&*`k*U0_)a_=q&$8Y-Ut=mC4={%pBIejFi zOw7lqk-5kll7+Z5GX}_oiyde>(~kOM=kQitGn!7fp|!1tuT|7v(Y$UWTDXi!Y$ul5DWUQ+ z-D`=vC6YkCp;>0%f+cbfuiVKH1jP@vQfP{>fc+U~dgoQYoBFA@egb!3{`|_kv{>3c zfQSdUlv(K>F(SrMTi|_w#C{qc^+;g6W?fL_wav>M90n4z7j0v6uxT%+7VW21A(KZK zwBG8n=CFJy%7oNs{Q|?8Gk3{onwHoL3i%+HHe_Vr=Vzb(Hh1=!zX?EqqJZ{%sgMRq z10|-q8}|3qDW@PSgDFf~%~VX2o}gCjmfgEI^!t?C6#*m6YUOA+_6|zTNB>f0t%3fx zG8Oe4fLG$s3hc_YdO9FyCmQrBFAe%czicW%h>CRCa|Nh(No>KDfFh;5FG88$&7Hd< zKRw}YCZMyUi(38zTw0JSnIgtwEMOYrzxv##A`kN;AAR9QrywFx^Z=%GziYV_yLWH> z^dA;g3t@un+5>+V2iC-jqjk<0kvRaF(QK=lCKU!4mx=LLW&#-TSq^ zgf@yAS8PhblfO9s%XeD@zu*s~%ZWsql`l6+0{yy1sLvyfK|Z!*b|`!k@;zA4HTsrB z3EHTOukB6|r}Sqh9~&4p@PY-)3S+=Sl%gbT`KCDPrsDx<-gZwSOwJfa7vAq;8YTCd z7EsmgI1lXGx9zk469zisU%YKuxngBSpBUj%i0OR-OBSc5c>2Cy(-GHgpm4vl zYws2#A?%MGpQp(7Ab;@@gSs-0QmsTr4;G1tk3>xM=R_96W|mj^f+;Ggup$xV{iIl;IsMT aUH=b{i5O=hwDcLCj006a)wuaH=s`=+7 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 KjS4lphyMd2m8N$9 literal 0 HcmV?d00001 diff --git a/app/pages/users/static/vip03.png b/app/pages/users/static/vip03.png new file mode 100644 index 0000000000000000000000000000000000000000..a5f0a0d09a262b505736c05747bd48869c044b77 GIT binary patch literal 5959 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 literal 0 HcmV?d00001 diff --git a/app/pages/users/static/vip04.png b/app/pages/users/static/vip04.png new file mode 100644 index 0000000000000000000000000000000000000000..0486f5016e5b8ed499cd045071bfbf1aabff4259 GIT binary patch literal 5585 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 literal 0 HcmV?d00001 diff --git a/app/pages/users/static/vip05.png b/app/pages/users/static/vip05.png new file mode 100644 index 0000000000000000000000000000000000000000..4635901d8fc041b29687c2a817a33aa9aef4819d GIT binary patch literal 5769 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 + +
    + + + + 姓名 + + + + 联系电话 + + + + 所在地区 + + + + {{region[0]}},{{region[1]}},{{region[2]}} + + + + + + + 详细地址 + + + + + + 设置为默认地址 + + + + + 导入微信地址 + + + 导入微信地址 + + +
    + + + + +
    + + + + + diff --git a/app/pages/users/user_address/index001.vue b/app/pages/users/user_address/index001.vue new file mode 100644 index 00000000..29345cdd --- /dev/null +++ b/app/pages/users/user_address/index001.vue @@ -0,0 +1,537 @@ + + + + + diff --git a/app/pages/users/user_address_list/index.vue b/app/pages/users/user_address_list/index.vue new file mode 100644 index 00000000..02fc8612 --- /dev/null +++ b/app/pages/users/user_address_list/index.vue @@ -0,0 +1,463 @@ + + + + + diff --git a/app/pages/users/user_bill/index.vue b/app/pages/users/user_bill/index.vue new file mode 100644 index 00000000..afb3920a --- /dev/null +++ b/app/pages/users/user_bill/index.vue @@ -0,0 +1,173 @@ + + + + + diff --git a/app/pages/users/user_cash/index.vue b/app/pages/users/user_cash/index.vue new file mode 100644 index 00000000..a8485f10 --- /dev/null +++ b/app/pages/users/user_cash/index.vue @@ -0,0 +1,362 @@ + + + + + diff --git a/app/pages/users/user_coupon/index.vue b/app/pages/users/user_coupon/index.vue new file mode 100644 index 00000000..85013945 --- /dev/null +++ b/app/pages/users/user_coupon/index.vue @@ -0,0 +1,135 @@ + + + + + diff --git a/app/pages/users/user_get_coupon/index.vue b/app/pages/users/user_get_coupon/index.vue new file mode 100644 index 00000000..832f3999 --- /dev/null +++ b/app/pages/users/user_get_coupon/index.vue @@ -0,0 +1,160 @@ + + + + + diff --git a/app/pages/users/user_goods_collection/index.vue b/app/pages/users/user_goods_collection/index.vue new file mode 100644 index 00000000..3df429a8 --- /dev/null +++ b/app/pages/users/user_goods_collection/index.vue @@ -0,0 +1,232 @@ + + + + + diff --git a/app/pages/users/user_info/index.vue b/app/pages/users/user_info/index.vue new file mode 100644 index 00000000..0b2b8337 --- /dev/null +++ b/app/pages/users/user_info/index.vue @@ -0,0 +1,383 @@ + + + + + diff --git a/app/pages/users/user_info/index001.vue b/app/pages/users/user_info/index001.vue new file mode 100644 index 00000000..8fc2581a --- /dev/null +++ b/app/pages/users/user_info/index001.vue @@ -0,0 +1,475 @@ + + + + + diff --git a/app/pages/users/user_integral/index.vue b/app/pages/users/user_integral/index.vue new file mode 100644 index 00000000..93e77dcc --- /dev/null +++ b/app/pages/users/user_integral/index.vue @@ -0,0 +1,359 @@ + + + + + diff --git a/app/pages/users/user_money/index.vue b/app/pages/users/user_money/index.vue new file mode 100644 index 00000000..53e34ea4 --- /dev/null +++ b/app/pages/users/user_money/index.vue @@ -0,0 +1,447 @@ + + + + + diff --git a/app/pages/users/user_payment/index.vue b/app/pages/users/user_payment/index.vue new file mode 100644 index 00000000..494f2882 --- /dev/null +++ b/app/pages/users/user_payment/index.vue @@ -0,0 +1,539 @@ + + + + + diff --git a/app/pages/users/user_phone/index.vue b/app/pages/users/user_phone/index.vue new file mode 100644 index 00000000..635f5288 --- /dev/null +++ b/app/pages/users/user_phone/index.vue @@ -0,0 +1,205 @@ + + + + + diff --git a/app/pages/users/user_pwd_edit/index.vue b/app/pages/users/user_pwd_edit/index.vue new file mode 100644 index 00000000..5f68259a --- /dev/null +++ b/app/pages/users/user_pwd_edit/index.vue @@ -0,0 +1,218 @@ + + + + + diff --git a/app/pages/users/user_return_list/index.vue b/app/pages/users/user_return_list/index.vue new file mode 100644 index 00000000..42a0ccf1 --- /dev/null +++ b/app/pages/users/user_return_list/index.vue @@ -0,0 +1,185 @@ + + + + + diff --git a/app/pages/users/user_sgin/index.vue b/app/pages/users/user_sgin/index.vue new file mode 100644 index 00000000..43b493a1 --- /dev/null +++ b/app/pages/users/user_sgin/index.vue @@ -0,0 +1,534 @@ + + + + + diff --git a/app/pages/users/user_sgin_list/index.vue b/app/pages/users/user_sgin_list/index.vue new file mode 100644 index 00000000..2f378e65 --- /dev/null +++ b/app/pages/users/user_sgin_list/index.vue @@ -0,0 +1,109 @@ + + + + + diff --git a/app/pages/users/user_spread_code/index.vue b/app/pages/users/user_spread_code/index.vue new file mode 100644 index 00000000..9e1071b4 --- /dev/null +++ b/app/pages/users/user_spread_code/index.vue @@ -0,0 +1,410 @@ + + + + + diff --git a/app/pages/users/user_spread_money/index.vue b/app/pages/users/user_spread_money/index.vue new file mode 100644 index 00000000..b2841ce6 --- /dev/null +++ b/app/pages/users/user_spread_money/index.vue @@ -0,0 +1,192 @@ + + + + + diff --git a/app/pages/users/user_spread_user/index.vue b/app/pages/users/user_spread_user/index.vue new file mode 100644 index 00000000..71d5ff84 --- /dev/null +++ b/app/pages/users/user_spread_user/index.vue @@ -0,0 +1,224 @@ + + + + + diff --git a/app/pages/users/user_vip/index.vue b/app/pages/users/user_vip/index.vue new file mode 100644 index 00000000..e50bdc9d --- /dev/null +++ b/app/pages/users/user_vip/index.vue @@ -0,0 +1,510 @@ + + + + + diff --git a/app/pages/users/user_vip/index01.vue b/app/pages/users/user_vip/index01.vue new file mode 100644 index 00000000..c28cf65d --- /dev/null +++ b/app/pages/users/user_vip/index01.vue @@ -0,0 +1,480 @@ + + + + + \ No newline at end of file diff --git a/app/plugin/animate/animate.min.css b/app/plugin/animate/animate.min.css new file mode 100644 index 00000000..f3f10688 --- /dev/null +++ b/app/plugin/animate/animate.min.css @@ -0,0 +1,11 @@ +@charset "UTF-8"; + +/*! + * animate.css -https://daneden.github.io/animate.css/ + * Version - 3.7.2 + * Licensed under the MIT license - http://opensource.org/licenses/MIT + * + * Copyright (c) 2019 Daniel Eden + */ + +@-webkit-keyframes bounce{0%,20%,53%,80%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1);-webkit-transform:translateZ(0);transform:translateZ(0)}40%,43%{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06);-webkit-transform:translate3d(0,-30px,0);transform:translate3d(0,-30px,0)}70%{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06);-webkit-transform:translate3d(0,-15px,0);transform:translate3d(0,-15px,0)}90%{-webkit-transform:translate3d(0,-4px,0);transform:translate3d(0,-4px,0)}}@keyframes bounce{0%,20%,53%,80%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1);-webkit-transform:translateZ(0);transform:translateZ(0)}40%,43%{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06);-webkit-transform:translate3d(0,-30px,0);transform:translate3d(0,-30px,0)}70%{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06);-webkit-transform:translate3d(0,-15px,0);transform:translate3d(0,-15px,0)}90%{-webkit-transform:translate3d(0,-4px,0);transform:translate3d(0,-4px,0)}}.bounce{-webkit-animation-name:bounce;animation-name:bounce;-webkit-transform-origin:center bottom;transform-origin:center bottom}@-webkit-keyframes flash{0%,50%,to{opacity:1}25%,75%{opacity:0}}@keyframes flash{0%,50%,to{opacity:1}25%,75%{opacity:0}}.flash{-webkit-animation-name:flash;animation-name:flash}@-webkit-keyframes pulse{0%{-webkit-transform:scaleX(1);transform:scaleX(1)}50%{-webkit-transform:scale3d(1.05,1.05,1.05);transform:scale3d(1.05,1.05,1.05)}to{-webkit-transform:scaleX(1);transform:scaleX(1)}}@keyframes pulse{0%{-webkit-transform:scaleX(1);transform:scaleX(1)}50%{-webkit-transform:scale3d(1.05,1.05,1.05);transform:scale3d(1.05,1.05,1.05)}to{-webkit-transform:scaleX(1);transform:scaleX(1)}}.pulse{-webkit-animation-name:pulse;animation-name:pulse}@-webkit-keyframes rubberBand{0%{-webkit-transform:scaleX(1);transform:scaleX(1)}30%{-webkit-transform:scale3d(1.25,.75,1);transform:scale3d(1.25,.75,1)}40%{-webkit-transform:scale3d(.75,1.25,1);transform:scale3d(.75,1.25,1)}50%{-webkit-transform:scale3d(1.15,.85,1);transform:scale3d(1.15,.85,1)}65%{-webkit-transform:scale3d(.95,1.05,1);transform:scale3d(.95,1.05,1)}75%{-webkit-transform:scale3d(1.05,.95,1);transform:scale3d(1.05,.95,1)}to{-webkit-transform:scaleX(1);transform:scaleX(1)}}@keyframes rubberBand{0%{-webkit-transform:scaleX(1);transform:scaleX(1)}30%{-webkit-transform:scale3d(1.25,.75,1);transform:scale3d(1.25,.75,1)}40%{-webkit-transform:scale3d(.75,1.25,1);transform:scale3d(.75,1.25,1)}50%{-webkit-transform:scale3d(1.15,.85,1);transform:scale3d(1.15,.85,1)}65%{-webkit-transform:scale3d(.95,1.05,1);transform:scale3d(.95,1.05,1)}75%{-webkit-transform:scale3d(1.05,.95,1);transform:scale3d(1.05,.95,1)}to{-webkit-transform:scaleX(1);transform:scaleX(1)}}.rubberBand{-webkit-animation-name:rubberBand;animation-name:rubberBand}@-webkit-keyframes shake{0%,to{-webkit-transform:translateZ(0);transform:translateZ(0)}10%,30%,50%,70%,90%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}20%,40%,60%,80%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}}@keyframes shake{0%,to{-webkit-transform:translateZ(0);transform:translateZ(0)}10%,30%,50%,70%,90%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}20%,40%,60%,80%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}}.shake{-webkit-animation-name:shake;animation-name:shake}@-webkit-keyframes headShake{0%{-webkit-transform:translateX(0);transform:translateX(0)}6.5%{-webkit-transform:translateX(-6px) rotateY(-9deg);transform:translateX(-6px) rotateY(-9deg)}18.5%{-webkit-transform:translateX(5px) rotateY(7deg);transform:translateX(5px) rotateY(7deg)}31.5%{-webkit-transform:translateX(-3px) rotateY(-5deg);transform:translateX(-3px) rotateY(-5deg)}43.5%{-webkit-transform:translateX(2px) rotateY(3deg);transform:translateX(2px) rotateY(3deg)}50%{-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes headShake{0%{-webkit-transform:translateX(0);transform:translateX(0)}6.5%{-webkit-transform:translateX(-6px) rotateY(-9deg);transform:translateX(-6px) rotateY(-9deg)}18.5%{-webkit-transform:translateX(5px) rotateY(7deg);transform:translateX(5px) rotateY(7deg)}31.5%{-webkit-transform:translateX(-3px) rotateY(-5deg);transform:translateX(-3px) rotateY(-5deg)}43.5%{-webkit-transform:translateX(2px) rotateY(3deg);transform:translateX(2px) rotateY(3deg)}50%{-webkit-transform:translateX(0);transform:translateX(0)}}.headShake{-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;-webkit-animation-name:headShake;animation-name:headShake}@-webkit-keyframes swing{20%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}40%{-webkit-transform:rotate(-10deg);transform:rotate(-10deg)}60%{-webkit-transform:rotate(5deg);transform:rotate(5deg)}80%{-webkit-transform:rotate(-5deg);transform:rotate(-5deg)}to{-webkit-transform:rotate(0deg);transform:rotate(0deg)}}@keyframes swing{20%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}40%{-webkit-transform:rotate(-10deg);transform:rotate(-10deg)}60%{-webkit-transform:rotate(5deg);transform:rotate(5deg)}80%{-webkit-transform:rotate(-5deg);transform:rotate(-5deg)}to{-webkit-transform:rotate(0deg);transform:rotate(0deg)}}.swing{-webkit-transform-origin:top center;transform-origin:top center;-webkit-animation-name:swing;animation-name:swing}@-webkit-keyframes tada{0%{-webkit-transform:scaleX(1);transform:scaleX(1)}10%,20%{-webkit-transform:scale3d(.9,.9,.9) rotate(-3deg);transform:scale3d(.9,.9,.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate(3deg);transform:scale3d(1.1,1.1,1.1) rotate(3deg)}40%,60%,80%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate(-3deg);transform:scale3d(1.1,1.1,1.1) rotate(-3deg)}to{-webkit-transform:scaleX(1);transform:scaleX(1)}}@keyframes tada{0%{-webkit-transform:scaleX(1);transform:scaleX(1)}10%,20%{-webkit-transform:scale3d(.9,.9,.9) rotate(-3deg);transform:scale3d(.9,.9,.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate(3deg);transform:scale3d(1.1,1.1,1.1) rotate(3deg)}40%,60%,80%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate(-3deg);transform:scale3d(1.1,1.1,1.1) rotate(-3deg)}to{-webkit-transform:scaleX(1);transform:scaleX(1)}}.tada{-webkit-animation-name:tada;animation-name:tada}@-webkit-keyframes wobble{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}15%{-webkit-transform:translate3d(-25%,0,0) rotate(-5deg);transform:translate3d(-25%,0,0) rotate(-5deg)}30%{-webkit-transform:translate3d(20%,0,0) rotate(3deg);transform:translate3d(20%,0,0) rotate(3deg)}45%{-webkit-transform:translate3d(-15%,0,0) rotate(-3deg);transform:translate3d(-15%,0,0) rotate(-3deg)}60%{-webkit-transform:translate3d(10%,0,0) rotate(2deg);transform:translate3d(10%,0,0) rotate(2deg)}75%{-webkit-transform:translate3d(-5%,0,0) rotate(-1deg);transform:translate3d(-5%,0,0) rotate(-1deg)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes wobble{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}15%{-webkit-transform:translate3d(-25%,0,0) rotate(-5deg);transform:translate3d(-25%,0,0) rotate(-5deg)}30%{-webkit-transform:translate3d(20%,0,0) rotate(3deg);transform:translate3d(20%,0,0) rotate(3deg)}45%{-webkit-transform:translate3d(-15%,0,0) rotate(-3deg);transform:translate3d(-15%,0,0) rotate(-3deg)}60%{-webkit-transform:translate3d(10%,0,0) rotate(2deg);transform:translate3d(10%,0,0) rotate(2deg)}75%{-webkit-transform:translate3d(-5%,0,0) rotate(-1deg);transform:translate3d(-5%,0,0) rotate(-1deg)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.wobble{-webkit-animation-name:wobble;animation-name:wobble}@-webkit-keyframes jello{0%,11.1%,to{-webkit-transform:translateZ(0);transform:translateZ(0)}22.2%{-webkit-transform:skewX(-12.5deg) skewY(-12.5deg);transform:skewX(-12.5deg) skewY(-12.5deg)}33.3%{-webkit-transform:skewX(6.25deg) skewY(6.25deg);transform:skewX(6.25deg) skewY(6.25deg)}44.4%{-webkit-transform:skewX(-3.125deg) skewY(-3.125deg);transform:skewX(-3.125deg) skewY(-3.125deg)}55.5%{-webkit-transform:skewX(1.5625deg) skewY(1.5625deg);transform:skewX(1.5625deg) skewY(1.5625deg)}66.6%{-webkit-transform:skewX(-.78125deg) skewY(-.78125deg);transform:skewX(-.78125deg) skewY(-.78125deg)}77.7%{-webkit-transform:skewX(.390625deg) skewY(.390625deg);transform:skewX(.390625deg) skewY(.390625deg)}88.8%{-webkit-transform:skewX(-.1953125deg) skewY(-.1953125deg);transform:skewX(-.1953125deg) skewY(-.1953125deg)}}@keyframes jello{0%,11.1%,to{-webkit-transform:translateZ(0);transform:translateZ(0)}22.2%{-webkit-transform:skewX(-12.5deg) skewY(-12.5deg);transform:skewX(-12.5deg) skewY(-12.5deg)}33.3%{-webkit-transform:skewX(6.25deg) skewY(6.25deg);transform:skewX(6.25deg) skewY(6.25deg)}44.4%{-webkit-transform:skewX(-3.125deg) skewY(-3.125deg);transform:skewX(-3.125deg) skewY(-3.125deg)}55.5%{-webkit-transform:skewX(1.5625deg) skewY(1.5625deg);transform:skewX(1.5625deg) skewY(1.5625deg)}66.6%{-webkit-transform:skewX(-.78125deg) skewY(-.78125deg);transform:skewX(-.78125deg) skewY(-.78125deg)}77.7%{-webkit-transform:skewX(.390625deg) skewY(.390625deg);transform:skewX(.390625deg) skewY(.390625deg)}88.8%{-webkit-transform:skewX(-.1953125deg) skewY(-.1953125deg);transform:skewX(-.1953125deg) skewY(-.1953125deg)}}.jello{-webkit-animation-name:jello;animation-name:jello;-webkit-transform-origin:center;transform-origin:center}@-webkit-keyframes heartBeat{0%{-webkit-transform:scale(1);transform:scale(1)}14%{-webkit-transform:scale(1.3);transform:scale(1.3)}28%{-webkit-transform:scale(1);transform:scale(1)}42%{-webkit-transform:scale(1.3);transform:scale(1.3)}70%{-webkit-transform:scale(1);transform:scale(1)}}@keyframes heartBeat{0%{-webkit-transform:scale(1);transform:scale(1)}14%{-webkit-transform:scale(1.3);transform:scale(1.3)}28%{-webkit-transform:scale(1);transform:scale(1)}42%{-webkit-transform:scale(1.3);transform:scale(1.3)}70%{-webkit-transform:scale(1);transform:scale(1)}}.heartBeat{-webkit-animation-name:heartBeat;animation-name:heartBeat;-webkit-animation-duration:1.3s;animation-duration:1.3s;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}@-webkit-keyframes bounceIn{0%,20%,40%,60%,80%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}20%{-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}40%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}60%{opacity:1;-webkit-transform:scale3d(1.03,1.03,1.03);transform:scale3d(1.03,1.03,1.03)}80%{-webkit-transform:scale3d(.97,.97,.97);transform:scale3d(.97,.97,.97)}to{opacity:1;-webkit-transform:scaleX(1);transform:scaleX(1)}}@keyframes bounceIn{0%,20%,40%,60%,80%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}20%{-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}40%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}60%{opacity:1;-webkit-transform:scale3d(1.03,1.03,1.03);transform:scale3d(1.03,1.03,1.03)}80%{-webkit-transform:scale3d(.97,.97,.97);transform:scale3d(.97,.97,.97)}to{opacity:1;-webkit-transform:scaleX(1);transform:scaleX(1)}}.bounceIn{-webkit-animation-duration:.75s;animation-duration:.75s;-webkit-animation-name:bounceIn;animation-name:bounceIn}@-webkit-keyframes bounceInDown{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,-3000px,0);transform:translate3d(0,-3000px,0)}60%{opacity:1;-webkit-transform:translate3d(0,25px,0);transform:translate3d(0,25px,0)}75%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}90%{-webkit-transform:translate3d(0,5px,0);transform:translate3d(0,5px,0)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes bounceInDown{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,-3000px,0);transform:translate3d(0,-3000px,0)}60%{opacity:1;-webkit-transform:translate3d(0,25px,0);transform:translate3d(0,25px,0)}75%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}90%{-webkit-transform:translate3d(0,5px,0);transform:translate3d(0,5px,0)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.bounceInDown{-webkit-animation-name:bounceInDown;animation-name:bounceInDown}@-webkit-keyframes bounceInLeft{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(-3000px,0,0);transform:translate3d(-3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(25px,0,0);transform:translate3d(25px,0,0)}75%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}90%{-webkit-transform:translate3d(5px,0,0);transform:translate3d(5px,0,0)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes bounceInLeft{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(-3000px,0,0);transform:translate3d(-3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(25px,0,0);transform:translate3d(25px,0,0)}75%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}90%{-webkit-transform:translate3d(5px,0,0);transform:translate3d(5px,0,0)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.bounceInLeft{-webkit-animation-name:bounceInLeft;animation-name:bounceInLeft}@-webkit-keyframes bounceInRight{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(3000px,0,0);transform:translate3d(3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(-25px,0,0);transform:translate3d(-25px,0,0)}75%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}90%{-webkit-transform:translate3d(-5px,0,0);transform:translate3d(-5px,0,0)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes bounceInRight{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(3000px,0,0);transform:translate3d(3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(-25px,0,0);transform:translate3d(-25px,0,0)}75%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}90%{-webkit-transform:translate3d(-5px,0,0);transform:translate3d(-5px,0,0)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.bounceInRight{-webkit-animation-name:bounceInRight;animation-name:bounceInRight}@-webkit-keyframes bounceInUp{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,3000px,0);transform:translate3d(0,3000px,0)}60%{opacity:1;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}75%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}90%{-webkit-transform:translate3d(0,-5px,0);transform:translate3d(0,-5px,0)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes bounceInUp{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,3000px,0);transform:translate3d(0,3000px,0)}60%{opacity:1;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}75%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}90%{-webkit-transform:translate3d(0,-5px,0);transform:translate3d(0,-5px,0)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.bounceInUp{-webkit-animation-name:bounceInUp;animation-name:bounceInUp}@-webkit-keyframes bounceOut{20%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}to{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}}@keyframes bounceOut{20%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}to{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}}.bounceOut{-webkit-animation-duration:.75s;animation-duration:.75s;-webkit-animation-name:bounceOut;animation-name:bounceOut}@-webkit-keyframes bounceOutDown{20%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}@keyframes bounceOutDown{20%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}.bounceOutDown{-webkit-animation-name:bounceOutDown;animation-name:bounceOutDown}@-webkit-keyframes bounceOutLeft{20%{opacity:1;-webkit-transform:translate3d(20px,0,0);transform:translate3d(20px,0,0)}to{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}@keyframes bounceOutLeft{20%{opacity:1;-webkit-transform:translate3d(20px,0,0);transform:translate3d(20px,0,0)}to{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}.bounceOutLeft{-webkit-animation-name:bounceOutLeft;animation-name:bounceOutLeft}@-webkit-keyframes bounceOutRight{20%{opacity:1;-webkit-transform:translate3d(-20px,0,0);transform:translate3d(-20px,0,0)}to{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}@keyframes bounceOutRight{20%{opacity:1;-webkit-transform:translate3d(-20px,0,0);transform:translate3d(-20px,0,0)}to{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}.bounceOutRight{-webkit-animation-name:bounceOutRight;animation-name:bounceOutRight}@-webkit-keyframes bounceOutUp{20%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,20px,0);transform:translate3d(0,20px,0)}to{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}@keyframes bounceOutUp{20%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,20px,0);transform:translate3d(0,20px,0)}to{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}.bounceOutUp{-webkit-animation-name:bounceOutUp;animation-name:bounceOutUp}@-webkit-keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.fadeIn{-webkit-animation-name:fadeIn;animation-name:fadeIn}@-webkit-keyframes fadeInDown{0%{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInDown{0%{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.fadeInDown{-webkit-animation-name:fadeInDown;animation-name:fadeInDown}@-webkit-keyframes fadeInDownBig{0%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInDownBig{0%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.fadeInDownBig{-webkit-animation-name:fadeInDownBig;animation-name:fadeInDownBig}@-webkit-keyframes fadeInLeft{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInLeft{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.fadeInLeft{-webkit-animation-name:fadeInLeft;animation-name:fadeInLeft}@-webkit-keyframes fadeInLeftBig{0%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInLeftBig{0%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.fadeInLeftBig{-webkit-animation-name:fadeInLeftBig;animation-name:fadeInLeftBig}@-webkit-keyframes fadeInRight{0%{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInRight{0%{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.fadeInRight{-webkit-animation-name:fadeInRight;animation-name:fadeInRight}@-webkit-keyframes fadeInRightBig{0%{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInRightBig{0%{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.fadeInRightBig{-webkit-animation-name:fadeInRightBig;animation-name:fadeInRightBig}@-webkit-keyframes fadeInUp{0%{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInUp{0%{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.fadeInUp{-webkit-animation-name:fadeInUp;animation-name:fadeInUp}@-webkit-keyframes fadeInUpBig{0%{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInUpBig{0%{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.fadeInUpBig{-webkit-animation-name:fadeInUpBig;animation-name:fadeInUpBig}@-webkit-keyframes fadeOut{0%{opacity:1}to{opacity:0}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}.fadeOut{-webkit-animation-name:fadeOut;animation-name:fadeOut}@-webkit-keyframes fadeOutDown{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}@keyframes fadeOutDown{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}.fadeOutDown{-webkit-animation-name:fadeOutDown;animation-name:fadeOutDown}@-webkit-keyframes fadeOutDownBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}@keyframes fadeOutDownBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}.fadeOutDownBig{-webkit-animation-name:fadeOutDownBig;animation-name:fadeOutDownBig}@-webkit-keyframes fadeOutLeft{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}@keyframes fadeOutLeft{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}.fadeOutLeft{-webkit-animation-name:fadeOutLeft;animation-name:fadeOutLeft}@-webkit-keyframes fadeOutLeftBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}@keyframes fadeOutLeftBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}.fadeOutLeftBig{-webkit-animation-name:fadeOutLeftBig;animation-name:fadeOutLeftBig}@-webkit-keyframes fadeOutRight{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}@keyframes fadeOutRight{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}.fadeOutRight{-webkit-animation-name:fadeOutRight;animation-name:fadeOutRight}@-webkit-keyframes fadeOutRightBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}@keyframes fadeOutRightBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}.fadeOutRightBig{-webkit-animation-name:fadeOutRightBig;animation-name:fadeOutRightBig}@-webkit-keyframes fadeOutUp{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}@keyframes fadeOutUp{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}.fadeOutUp{-webkit-animation-name:fadeOutUp;animation-name:fadeOutUp}@-webkit-keyframes fadeOutUpBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}@keyframes fadeOutUpBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}.fadeOutUpBig{-webkit-animation-name:fadeOutUpBig;animation-name:fadeOutUpBig}@-webkit-keyframes flip{0%{-webkit-transform:perspective(400px) scaleX(1) translateZ(0) rotateY(-1turn);transform:perspective(400px) scaleX(1) translateZ(0) rotateY(-1turn);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}40%{-webkit-transform:perspective(400px) scaleX(1) translateZ(150px) rotateY(-190deg);transform:perspective(400px) scaleX(1) translateZ(150px) rotateY(-190deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}50%{-webkit-transform:perspective(400px) scaleX(1) translateZ(150px) rotateY(-170deg);transform:perspective(400px) scaleX(1) translateZ(150px) rotateY(-170deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}80%{-webkit-transform:perspective(400px) scale3d(.95,.95,.95) translateZ(0) rotateY(0deg);transform:perspective(400px) scale3d(.95,.95,.95) translateZ(0) rotateY(0deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}to{-webkit-transform:perspective(400px) scaleX(1) translateZ(0) rotateY(0deg);transform:perspective(400px) scaleX(1) translateZ(0) rotateY(0deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}}@keyframes flip{0%{-webkit-transform:perspective(400px) scaleX(1) translateZ(0) rotateY(-1turn);transform:perspective(400px) scaleX(1) translateZ(0) rotateY(-1turn);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}40%{-webkit-transform:perspective(400px) scaleX(1) translateZ(150px) rotateY(-190deg);transform:perspective(400px) scaleX(1) translateZ(150px) rotateY(-190deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}50%{-webkit-transform:perspective(400px) scaleX(1) translateZ(150px) rotateY(-170deg);transform:perspective(400px) scaleX(1) translateZ(150px) rotateY(-170deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}80%{-webkit-transform:perspective(400px) scale3d(.95,.95,.95) translateZ(0) rotateY(0deg);transform:perspective(400px) scale3d(.95,.95,.95) translateZ(0) rotateY(0deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}to{-webkit-transform:perspective(400px) scaleX(1) translateZ(0) rotateY(0deg);transform:perspective(400px) scaleX(1) translateZ(0) rotateY(0deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}}.animated.flip{-webkit-backface-visibility:visible;backface-visibility:visible;-webkit-animation-name:flip;animation-name:flip}@-webkit-keyframes flipInX{0%{-webkit-transform:perspective(400px) rotateX(90deg);transform:perspective(400px) rotateX(90deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotateX(-20deg);transform:perspective(400px) rotateX(-20deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotateX(10deg);transform:perspective(400px) rotateX(10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotateX(-5deg);transform:perspective(400px) rotateX(-5deg)}to{-webkit-transform:perspective(400px);transform:perspective(400px)}}@keyframes flipInX{0%{-webkit-transform:perspective(400px) rotateX(90deg);transform:perspective(400px) rotateX(90deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotateX(-20deg);transform:perspective(400px) rotateX(-20deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotateX(10deg);transform:perspective(400px) rotateX(10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotateX(-5deg);transform:perspective(400px) rotateX(-5deg)}to{-webkit-transform:perspective(400px);transform:perspective(400px)}}.flipInX{-webkit-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipInX;animation-name:flipInX}@-webkit-keyframes flipInY{0%{-webkit-transform:perspective(400px) rotateY(90deg);transform:perspective(400px) rotateY(90deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotateY(-20deg);transform:perspective(400px) rotateY(-20deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotateY(10deg);transform:perspective(400px) rotateY(10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotateY(-5deg);transform:perspective(400px) rotateY(-5deg)}to{-webkit-transform:perspective(400px);transform:perspective(400px)}}@keyframes flipInY{0%{-webkit-transform:perspective(400px) rotateY(90deg);transform:perspective(400px) rotateY(90deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotateY(-20deg);transform:perspective(400px) rotateY(-20deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotateY(10deg);transform:perspective(400px) rotateY(10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotateY(-5deg);transform:perspective(400px) rotateY(-5deg)}to{-webkit-transform:perspective(400px);transform:perspective(400px)}}.flipInY{-webkit-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipInY;animation-name:flipInY}@-webkit-keyframes flipOutX{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotateX(-20deg);transform:perspective(400px) rotateX(-20deg);opacity:1}to{-webkit-transform:perspective(400px) rotateX(90deg);transform:perspective(400px) rotateX(90deg);opacity:0}}@keyframes flipOutX{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotateX(-20deg);transform:perspective(400px) rotateX(-20deg);opacity:1}to{-webkit-transform:perspective(400px) rotateX(90deg);transform:perspective(400px) rotateX(90deg);opacity:0}}.flipOutX{-webkit-animation-duration:.75s;animation-duration:.75s;-webkit-animation-name:flipOutX;animation-name:flipOutX;-webkit-backface-visibility:visible!important;backface-visibility:visible!important}@-webkit-keyframes flipOutY{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotateY(-15deg);transform:perspective(400px) rotateY(-15deg);opacity:1}to{-webkit-transform:perspective(400px) rotateY(90deg);transform:perspective(400px) rotateY(90deg);opacity:0}}@keyframes flipOutY{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotateY(-15deg);transform:perspective(400px) rotateY(-15deg);opacity:1}to{-webkit-transform:perspective(400px) rotateY(90deg);transform:perspective(400px) rotateY(90deg);opacity:0}}.flipOutY{-webkit-animation-duration:.75s;animation-duration:.75s;-webkit-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipOutY;animation-name:flipOutY}@-webkit-keyframes lightSpeedIn{0%{-webkit-transform:translate3d(100%,0,0) skewX(-30deg);transform:translate3d(100%,0,0) skewX(-30deg);opacity:0}60%{-webkit-transform:skewX(20deg);transform:skewX(20deg);opacity:1}80%{-webkit-transform:skewX(-5deg);transform:skewX(-5deg)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes lightSpeedIn{0%{-webkit-transform:translate3d(100%,0,0) skewX(-30deg);transform:translate3d(100%,0,0) skewX(-30deg);opacity:0}60%{-webkit-transform:skewX(20deg);transform:skewX(20deg);opacity:1}80%{-webkit-transform:skewX(-5deg);transform:skewX(-5deg)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.lightSpeedIn{-webkit-animation-name:lightSpeedIn;animation-name:lightSpeedIn;-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}@-webkit-keyframes lightSpeedOut{0%{opacity:1}to{-webkit-transform:translate3d(100%,0,0) skewX(30deg);transform:translate3d(100%,0,0) skewX(30deg);opacity:0}}@keyframes lightSpeedOut{0%{opacity:1}to{-webkit-transform:translate3d(100%,0,0) skewX(30deg);transform:translate3d(100%,0,0) skewX(30deg);opacity:0}}.lightSpeedOut{-webkit-animation-name:lightSpeedOut;animation-name:lightSpeedOut;-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}@-webkit-keyframes rotateIn{0%{-webkit-transform-origin:center;transform-origin:center;-webkit-transform:rotate(-200deg);transform:rotate(-200deg);opacity:0}to{-webkit-transform-origin:center;transform-origin:center;-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}@keyframes rotateIn{0%{-webkit-transform-origin:center;transform-origin:center;-webkit-transform:rotate(-200deg);transform:rotate(-200deg);opacity:0}to{-webkit-transform-origin:center;transform-origin:center;-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}.rotateIn{-webkit-animation-name:rotateIn;animation-name:rotateIn}@-webkit-keyframes rotateInDownLeft{0%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);opacity:0}to{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}@keyframes rotateInDownLeft{0%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);opacity:0}to{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}.rotateInDownLeft{-webkit-animation-name:rotateInDownLeft;animation-name:rotateInDownLeft}@-webkit-keyframes rotateInDownRight{0%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate(45deg);transform:rotate(45deg);opacity:0}to{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}@keyframes rotateInDownRight{0%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate(45deg);transform:rotate(45deg);opacity:0}to{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}.rotateInDownRight{-webkit-animation-name:rotateInDownRight;animation-name:rotateInDownRight}@-webkit-keyframes rotateInUpLeft{0%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate(45deg);transform:rotate(45deg);opacity:0}to{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}@keyframes rotateInUpLeft{0%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate(45deg);transform:rotate(45deg);opacity:0}to{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}.rotateInUpLeft{-webkit-animation-name:rotateInUpLeft;animation-name:rotateInUpLeft}@-webkit-keyframes rotateInUpRight{0%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate(-90deg);transform:rotate(-90deg);opacity:0}to{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}@keyframes rotateInUpRight{0%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate(-90deg);transform:rotate(-90deg);opacity:0}to{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}.rotateInUpRight{-webkit-animation-name:rotateInUpRight;animation-name:rotateInUpRight}@-webkit-keyframes rotateOut{0%{-webkit-transform-origin:center;transform-origin:center;opacity:1}to{-webkit-transform-origin:center;transform-origin:center;-webkit-transform:rotate(200deg);transform:rotate(200deg);opacity:0}}@keyframes rotateOut{0%{-webkit-transform-origin:center;transform-origin:center;opacity:1}to{-webkit-transform-origin:center;transform-origin:center;-webkit-transform:rotate(200deg);transform:rotate(200deg);opacity:0}}.rotateOut{-webkit-animation-name:rotateOut;animation-name:rotateOut}@-webkit-keyframes rotateOutDownLeft{0%{-webkit-transform-origin:left bottom;transform-origin:left bottom;opacity:1}to{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate(45deg);transform:rotate(45deg);opacity:0}}@keyframes rotateOutDownLeft{0%{-webkit-transform-origin:left bottom;transform-origin:left bottom;opacity:1}to{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate(45deg);transform:rotate(45deg);opacity:0}}.rotateOutDownLeft{-webkit-animation-name:rotateOutDownLeft;animation-name:rotateOutDownLeft}@-webkit-keyframes rotateOutDownRight{0%{-webkit-transform-origin:right bottom;transform-origin:right bottom;opacity:1}to{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);opacity:0}}@keyframes rotateOutDownRight{0%{-webkit-transform-origin:right bottom;transform-origin:right bottom;opacity:1}to{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);opacity:0}}.rotateOutDownRight{-webkit-animation-name:rotateOutDownRight;animation-name:rotateOutDownRight}@-webkit-keyframes rotateOutUpLeft{0%{-webkit-transform-origin:left bottom;transform-origin:left bottom;opacity:1}to{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);opacity:0}}@keyframes rotateOutUpLeft{0%{-webkit-transform-origin:left bottom;transform-origin:left bottom;opacity:1}to{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);opacity:0}}.rotateOutUpLeft{-webkit-animation-name:rotateOutUpLeft;animation-name:rotateOutUpLeft}@-webkit-keyframes rotateOutUpRight{0%{-webkit-transform-origin:right bottom;transform-origin:right bottom;opacity:1}to{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate(90deg);transform:rotate(90deg);opacity:0}}@keyframes rotateOutUpRight{0%{-webkit-transform-origin:right bottom;transform-origin:right bottom;opacity:1}to{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate(90deg);transform:rotate(90deg);opacity:0}}.rotateOutUpRight{-webkit-animation-name:rotateOutUpRight;animation-name:rotateOutUpRight}@-webkit-keyframes hinge{0%{-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}20%,60%{-webkit-transform:rotate(80deg);transform:rotate(80deg);-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}40%,80%{-webkit-transform:rotate(60deg);transform:rotate(60deg);-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;opacity:1}to{-webkit-transform:translate3d(0,700px,0);transform:translate3d(0,700px,0);opacity:0}}@keyframes hinge{0%{-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}20%,60%{-webkit-transform:rotate(80deg);transform:rotate(80deg);-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}40%,80%{-webkit-transform:rotate(60deg);transform:rotate(60deg);-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;opacity:1}to{-webkit-transform:translate3d(0,700px,0);transform:translate3d(0,700px,0);opacity:0}}.hinge{-webkit-animation-duration:2s;animation-duration:2s;-webkit-animation-name:hinge;animation-name:hinge}@-webkit-keyframes jackInTheBox{0%{opacity:0;-webkit-transform:scale(.1) rotate(30deg);transform:scale(.1) rotate(30deg);-webkit-transform-origin:center bottom;transform-origin:center bottom}50%{-webkit-transform:rotate(-10deg);transform:rotate(-10deg)}70%{-webkit-transform:rotate(3deg);transform:rotate(3deg)}to{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@keyframes jackInTheBox{0%{opacity:0;-webkit-transform:scale(.1) rotate(30deg);transform:scale(.1) rotate(30deg);-webkit-transform-origin:center bottom;transform-origin:center bottom}50%{-webkit-transform:rotate(-10deg);transform:rotate(-10deg)}70%{-webkit-transform:rotate(3deg);transform:rotate(3deg)}to{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}.jackInTheBox{-webkit-animation-name:jackInTheBox;animation-name:jackInTheBox}@-webkit-keyframes rollIn{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0) rotate(-120deg);transform:translate3d(-100%,0,0) rotate(-120deg)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes rollIn{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0) rotate(-120deg);transform:translate3d(-100%,0,0) rotate(-120deg)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.rollIn{-webkit-animation-name:rollIn;animation-name:rollIn}@-webkit-keyframes rollOut{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(100%,0,0) rotate(120deg);transform:translate3d(100%,0,0) rotate(120deg)}}@keyframes rollOut{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(100%,0,0) rotate(120deg);transform:translate3d(100%,0,0) rotate(120deg)}}.rollOut{-webkit-animation-name:rollOut;animation-name:rollOut}@-webkit-keyframes zoomIn{0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}50%{opacity:1}}@keyframes zoomIn{0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}50%{opacity:1}}.zoomIn{-webkit-animation-name:zoomIn;animation-name:zoomIn}@-webkit-keyframes zoomInDown{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomInDown{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.zoomInDown{-webkit-animation-name:zoomInDown;animation-name:zoomInDown}@-webkit-keyframes zoomInLeft{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(10px,0,0);transform:scale3d(.475,.475,.475) translate3d(10px,0,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomInLeft{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(10px,0,0);transform:scale3d(.475,.475,.475) translate3d(10px,0,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.zoomInLeft{-webkit-animation-name:zoomInLeft;animation-name:zoomInLeft}@-webkit-keyframes zoomInRight{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomInRight{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.zoomInRight{-webkit-animation-name:zoomInRight;animation-name:zoomInRight}@-webkit-keyframes zoomInUp{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomInUp{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.zoomInUp{-webkit-animation-name:zoomInUp;animation-name:zoomInUp}@-webkit-keyframes zoomOut{0%{opacity:1}50%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}to{opacity:0}}@keyframes zoomOut{0%{opacity:1}50%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}to{opacity:0}}.zoomOut{-webkit-animation-name:zoomOut;animation-name:zoomOut}@-webkit-keyframes zoomOutDown{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}to{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);-webkit-transform-origin:center bottom;transform-origin:center bottom;-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomOutDown{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}to{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);-webkit-transform-origin:center bottom;transform-origin:center bottom;-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.zoomOutDown{-webkit-animation-name:zoomOutDown;animation-name:zoomOutDown}@-webkit-keyframes zoomOutLeft{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(42px,0,0);transform:scale3d(.475,.475,.475) translate3d(42px,0,0)}to{opacity:0;-webkit-transform:scale(.1) translate3d(-2000px,0,0);transform:scale(.1) translate3d(-2000px,0,0);-webkit-transform-origin:left center;transform-origin:left center}}@keyframes zoomOutLeft{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(42px,0,0);transform:scale3d(.475,.475,.475) translate3d(42px,0,0)}to{opacity:0;-webkit-transform:scale(.1) translate3d(-2000px,0,0);transform:scale(.1) translate3d(-2000px,0,0);-webkit-transform-origin:left center;transform-origin:left center}}.zoomOutLeft{-webkit-animation-name:zoomOutLeft;animation-name:zoomOutLeft}@-webkit-keyframes zoomOutRight{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-42px,0,0);transform:scale3d(.475,.475,.475) translate3d(-42px,0,0)}to{opacity:0;-webkit-transform:scale(.1) translate3d(2000px,0,0);transform:scale(.1) translate3d(2000px,0,0);-webkit-transform-origin:right center;transform-origin:right center}}@keyframes zoomOutRight{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-42px,0,0);transform:scale3d(.475,.475,.475) translate3d(-42px,0,0)}to{opacity:0;-webkit-transform:scale(.1) translate3d(2000px,0,0);transform:scale(.1) translate3d(2000px,0,0);-webkit-transform-origin:right center;transform-origin:right center}}.zoomOutRight{-webkit-animation-name:zoomOutRight;animation-name:zoomOutRight}@-webkit-keyframes zoomOutUp{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}to{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);-webkit-transform-origin:center bottom;transform-origin:center bottom;-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomOutUp{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}to{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);-webkit-transform-origin:center bottom;transform-origin:center bottom;-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.zoomOutUp{-webkit-animation-name:zoomOutUp;animation-name:zoomOutUp}@-webkit-keyframes slideInDown{0%{-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes slideInDown{0%{-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.slideInDown{-webkit-animation-name:slideInDown;animation-name:slideInDown}@-webkit-keyframes slideInLeft{0%{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes slideInLeft{0%{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.slideInLeft{-webkit-animation-name:slideInLeft;animation-name:slideInLeft}@-webkit-keyframes slideInRight{0%{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes slideInRight{0%{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.slideInRight{-webkit-animation-name:slideInRight;animation-name:slideInRight}@-webkit-keyframes slideInUp{0%{-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes slideInUp{0%{-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.slideInUp{-webkit-animation-name:slideInUp;animation-name:slideInUp}@-webkit-keyframes slideOutDown{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}@keyframes slideOutDown{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}.slideOutDown{-webkit-animation-name:slideOutDown;animation-name:slideOutDown}@-webkit-keyframes slideOutLeft{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}@keyframes slideOutLeft{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}.slideOutLeft{-webkit-animation-name:slideOutLeft;animation-name:slideOutLeft}@-webkit-keyframes slideOutRight{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}@keyframes slideOutRight{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}.slideOutRight{-webkit-animation-name:slideOutRight;animation-name:slideOutRight}@-webkit-keyframes slideOutUp{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}@keyframes slideOutUp{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}.slideOutUp{-webkit-animation-name:slideOutUp;animation-name:slideOutUp}.animated{-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-fill-mode:both;animation-fill-mode:both}.animated.infinite{-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.animated.delay-1s{-webkit-animation-delay:1s;animation-delay:1s}.animated.delay-2s{-webkit-animation-delay:2s;animation-delay:2s}.animated.delay-3s{-webkit-animation-delay:3s;animation-delay:3s}.animated.delay-4s{-webkit-animation-delay:4s;animation-delay:4s}.animated.delay-5s{-webkit-animation-delay:5s;animation-delay:5s}.animated.fast{-webkit-animation-duration:.8s;animation-duration:.8s}.animated.faster{-webkit-animation-duration:.5s;animation-duration:.5s}.animated.slow{-webkit-animation-duration:2s;animation-duration:2s}.animated.slower{-webkit-animation-duration:3s;animation-duration:3s}@media (prefers-reduced-motion:reduce),(print){.animated{-webkit-animation-duration:1ms!important;animation-duration:1ms!important;-webkit-transition-duration:1ms!important;transition-duration:1ms!important;-webkit-animation-iteration-count:1!important;animation-iteration-count:1!important}} \ No newline at end of file diff --git a/app/plugin/clipboard/clipboard.js b/app/plugin/clipboard/clipboard.js new file mode 100644 index 00000000..0240e3f7 --- /dev/null +++ b/app/plugin/clipboard/clipboard.js @@ -0,0 +1,973 @@ +/*! + * clipboard.js v2.0.6 + * https://clipboardjs.com/ + * + * Licensed MIT © Zeno Rocha + */ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else if(typeof exports === 'object') + exports["ClipboardJS"] = factory(); + else + root["ClipboardJS"] = factory(); +})(this, function() { +return /******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); +/******/ } +/******/ }; +/******/ +/******/ // define __esModule on exports +/******/ __webpack_require__.r = function(exports) { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ +/******/ // create a fake namespace object +/******/ // mode & 1: value is a module id, require it +/******/ // mode & 2: merge all properties of value into the ns +/******/ // mode & 4: return value when already ns object +/******/ // mode & 8|1: behave like require +/******/ __webpack_require__.t = function(value, mode) { +/******/ if(mode & 1) value = __webpack_require__(value); +/******/ if(mode & 8) return value; +/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; +/******/ var ns = Object.create(null); +/******/ __webpack_require__.r(ns); +/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); +/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); +/******/ return ns; +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = 6); +/******/ }) +/************************************************************************/ +/******/ ([ +/* 0 */ +/***/ (function(module, exports) { + +function select(element) { + var selectedText; + + if (element.nodeName === 'SELECT') { + element.focus(); + + selectedText = element.value; + } + else if (element.nodeName === 'INPUT' || element.nodeName === 'TEXTAREA') { + var isReadOnly = element.hasAttribute('readonly'); + + if (!isReadOnly) { + element.setAttribute('readonly', ''); + } + + element.select(); + element.setSelectionRange(0, element.value.length); + + if (!isReadOnly) { + element.removeAttribute('readonly'); + } + + selectedText = element.value; + } + else { + if (element.hasAttribute('contenteditable')) { + element.focus(); + } + + var selection = window.getSelection(); + var range = document.createRange(); + + range.selectNodeContents(element); + selection.removeAllRanges(); + selection.addRange(range); + + selectedText = selection.toString(); + } + + return selectedText; +} + +module.exports = select; + + +/***/ }), +/* 1 */ +/***/ (function(module, exports) { + +function E () { + // Keep this empty so it's easier to inherit from + // (via https://github.com/lipsmack from https://github.com/scottcorgan/tiny-emitter/issues/3) +} + +E.prototype = { + on: function (name, callback, ctx) { + var e = this.e || (this.e = {}); + + (e[name] || (e[name] = [])).push({ + fn: callback, + ctx: ctx + }); + + return this; + }, + + once: function (name, callback, ctx) { + var self = this; + function listener () { + self.off(name, listener); + callback.apply(ctx, arguments); + }; + + listener._ = callback + return this.on(name, listener, ctx); + }, + + emit: function (name) { + var data = [].slice.call(arguments, 1); + var evtArr = ((this.e || (this.e = {}))[name] || []).slice(); + var i = 0; + var len = evtArr.length; + + for (i; i < len; i++) { + evtArr[i].fn.apply(evtArr[i].ctx, data); + } + + return this; + }, + + off: function (name, callback) { + var e = this.e || (this.e = {}); + var evts = e[name]; + var liveEvents = []; + + if (evts && callback) { + for (var i = 0, len = evts.length; i < len; i++) { + if (evts[i].fn !== callback && evts[i].fn._ !== callback) + liveEvents.push(evts[i]); + } + } + + // Remove event from queue to prevent memory leak + // Suggested by https://github.com/lazd + // Ref: https://github.com/scottcorgan/tiny-emitter/commit/c6ebfaa9bc973b33d110a84a307742b7cf94c953#commitcomment-5024910 + + (liveEvents.length) + ? e[name] = liveEvents + : delete e[name]; + + return this; + } +}; + +module.exports = E; +module.exports.TinyEmitter = E; + + +/***/ }), +/* 2 */ +/***/ (function(module, exports, __webpack_require__) { + +var is = __webpack_require__(3); +var delegate = __webpack_require__(4); + +/** + * Validates all params and calls the right + * listener function based on its target type. + * + * @param {String|HTMLElement|HTMLCollection|NodeList} target + * @param {String} type + * @param {Function} callback + * @return {Object} + */ +function listen(target, type, callback) { + if (!target && !type && !callback) { + throw new Error('Missing required arguments'); + } + + if (!is.string(type)) { + throw new TypeError('Second argument must be a String'); + } + + if (!is.fn(callback)) { + throw new TypeError('Third argument must be a Function'); + } + + if (is.node(target)) { + return listenNode(target, type, callback); + } + else if (is.nodeList(target)) { + return listenNodeList(target, type, callback); + } + else if (is.string(target)) { + return listenSelector(target, type, callback); + } + else { + throw new TypeError('First argument must be a String, HTMLElement, HTMLCollection, or NodeList'); + } +} + +/** + * Adds an event listener to a HTML element + * and returns a remove listener function. + * + * @param {HTMLElement} node + * @param {String} type + * @param {Function} callback + * @return {Object} + */ +function listenNode(node, type, callback) { + node.addEventListener(type, callback); + + return { + destroy: function() { + node.removeEventListener(type, callback); + } + } +} + +/** + * Add an event listener to a list of HTML elements + * and returns a remove listener function. + * + * @param {NodeList|HTMLCollection} nodeList + * @param {String} type + * @param {Function} callback + * @return {Object} + */ +function listenNodeList(nodeList, type, callback) { + Array.prototype.forEach.call(nodeList, function(node) { + node.addEventListener(type, callback); + }); + + return { + destroy: function() { + Array.prototype.forEach.call(nodeList, function(node) { + node.removeEventListener(type, callback); + }); + } + } +} + +/** + * Add an event listener to a selector + * and returns a remove listener function. + * + * @param {String} selector + * @param {String} type + * @param {Function} callback + * @return {Object} + */ +function listenSelector(selector, type, callback) { + return delegate(document.body, selector, type, callback); +} + +module.exports = listen; + + +/***/ }), +/* 3 */ +/***/ (function(module, exports) { + +/** + * Check if argument is a HTML element. + * + * @param {Object} value + * @return {Boolean} + */ +exports.node = function(value) { + return value !== undefined + && value instanceof HTMLElement + && value.nodeType === 1; +}; + +/** + * Check if argument is a list of HTML elements. + * + * @param {Object} value + * @return {Boolean} + */ +exports.nodeList = function(value) { + var type = Object.prototype.toString.call(value); + + return value !== undefined + && (type === '[object NodeList]' || type === '[object HTMLCollection]') + && ('length' in value) + && (value.length === 0 || exports.node(value[0])); +}; + +/** + * Check if argument is a string. + * + * @param {Object} value + * @return {Boolean} + */ +exports.string = function(value) { + return typeof value === 'string' + || value instanceof String; +}; + +/** + * Check if argument is a function. + * + * @param {Object} value + * @return {Boolean} + */ +exports.fn = function(value) { + var type = Object.prototype.toString.call(value); + + return type === '[object Function]'; +}; + + +/***/ }), +/* 4 */ +/***/ (function(module, exports, __webpack_require__) { + +var closest = __webpack_require__(5); + +/** + * Delegates event to a selector. + * + * @param {Element} element + * @param {String} selector + * @param {String} type + * @param {Function} callback + * @param {Boolean} useCapture + * @return {Object} + */ +function _delegate(element, selector, type, callback, useCapture) { + var listenerFn = listener.apply(this, arguments); + + element.addEventListener(type, listenerFn, useCapture); + + return { + destroy: function() { + element.removeEventListener(type, listenerFn, useCapture); + } + } +} + +/** + * Delegates event to a selector. + * + * @param {Element|String|Array} [elements] + * @param {String} selector + * @param {String} type + * @param {Function} callback + * @param {Boolean} useCapture + * @return {Object} + */ +function delegate(elements, selector, type, callback, useCapture) { + // Handle the regular Element usage + if (typeof elements.addEventListener === 'function') { + return _delegate.apply(null, arguments); + } + + // Handle Element-less usage, it defaults to global delegation + if (typeof type === 'function') { + // Use `document` as the first parameter, then apply arguments + // This is a short way to .unshift `arguments` without running into deoptimizations + return _delegate.bind(null, document).apply(null, arguments); + } + + // Handle Selector-based usage + if (typeof elements === 'string') { + elements = document.querySelectorAll(elements); + } + + // Handle Array-like based usage + return Array.prototype.map.call(elements, function (element) { + return _delegate(element, selector, type, callback, useCapture); + }); +} + +/** + * Finds closest match and invokes callback. + * + * @param {Element} element + * @param {String} selector + * @param {String} type + * @param {Function} callback + * @return {Function} + */ +function listener(element, selector, type, callback) { + return function(e) { + e.delegateTarget = closest(e.target, selector); + + if (e.delegateTarget) { + callback.call(element, e); + } + } +} + +module.exports = delegate; + + +/***/ }), +/* 5 */ +/***/ (function(module, exports) { + +var DOCUMENT_NODE_TYPE = 9; + +/** + * A polyfill for Element.matches() + */ +if (typeof Element !== 'undefined' && !Element.prototype.matches) { + var proto = Element.prototype; + + proto.matches = proto.matchesSelector || + proto.mozMatchesSelector || + proto.msMatchesSelector || + proto.oMatchesSelector || + proto.webkitMatchesSelector; +} + +/** + * Finds the closest parent that matches a selector. + * + * @param {Element} element + * @param {String} selector + * @return {Function} + */ +function closest (element, selector) { + while (element && element.nodeType !== DOCUMENT_NODE_TYPE) { + if (typeof element.matches === 'function' && + element.matches(selector)) { + return element; + } + element = element.parentNode; + } +} + +module.exports = closest; + + +/***/ }), +/* 6 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); + +// EXTERNAL MODULE: ./node_modules/select/src/select.js +var src_select = __webpack_require__(0); +var select_default = /*#__PURE__*/__webpack_require__.n(src_select); + +// CONCATENATED MODULE: ./src/clipboard-action.js +var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + + + +/** + * Inner class which performs selection from either `text` or `target` + * properties and then executes copy or cut operations. + */ + +var clipboard_action_ClipboardAction = function () { + /** + * @param {Object} options + */ + function ClipboardAction(options) { + _classCallCheck(this, ClipboardAction); + + this.resolveOptions(options); + this.initSelection(); + } + + /** + * Defines base properties passed from constructor. + * @param {Object} options + */ + + + _createClass(ClipboardAction, [{ + key: 'resolveOptions', + value: function resolveOptions() { + var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + + this.action = options.action; + this.container = options.container; + this.emitter = options.emitter; + this.target = options.target; + this.text = options.text; + this.trigger = options.trigger; + + this.selectedText = ''; + } + + /** + * Decides which selection strategy is going to be applied based + * on the existence of `text` and `target` properties. + */ + + }, { + key: 'initSelection', + value: function initSelection() { + if (this.text) { + this.selectFake(); + } else if (this.target) { + this.selectTarget(); + } + } + + /** + * Creates a fake textarea element, sets its value from `text` property, + * and makes a selection on it. + */ + + }, { + key: 'selectFake', + value: function selectFake() { + var _this = this; + + var isRTL = document.documentElement.getAttribute('dir') == 'rtl'; + + this.removeFake(); + + this.fakeHandlerCallback = function () { + return _this.removeFake(); + }; + this.fakeHandler = this.container.addEventListener('click', this.fakeHandlerCallback) || true; + + this.fakeElem = document.createElement('textarea'); + // Prevent zooming on iOS + this.fakeElem.style.fontSize = '12pt'; + // Reset box model + this.fakeElem.style.border = '0'; + this.fakeElem.style.padding = '0'; + this.fakeElem.style.margin = '0'; + // Move element out of screen horizontally + this.fakeElem.style.position = 'absolute'; + this.fakeElem.style[isRTL ? 'right' : 'left'] = '-9999px'; + // Move element to the same position vertically + var yPosition = window.pageYOffset || document.documentElement.scrollTop; + this.fakeElem.style.top = yPosition + 'px'; + + this.fakeElem.setAttribute('readonly', ''); + this.fakeElem.value = this.text; + + this.container.appendChild(this.fakeElem); + + this.selectedText = select_default()(this.fakeElem); + this.copyText(); + } + + /** + * Only removes the fake element after another click event, that way + * a user can hit `Ctrl+C` to copy because selection still exists. + */ + + }, { + key: 'removeFake', + value: function removeFake() { + if (this.fakeHandler) { + this.container.removeEventListener('click', this.fakeHandlerCallback); + this.fakeHandler = null; + this.fakeHandlerCallback = null; + } + + if (this.fakeElem) { + this.container.removeChild(this.fakeElem); + this.fakeElem = null; + } + } + + /** + * Selects the content from element passed on `target` property. + */ + + }, { + key: 'selectTarget', + value: function selectTarget() { + this.selectedText = select_default()(this.target); + this.copyText(); + } + + /** + * Executes the copy operation based on the current selection. + */ + + }, { + key: 'copyText', + value: function copyText() { + var succeeded = void 0; + + try { + succeeded = document.execCommand(this.action); + } catch (err) { + succeeded = false; + } + + this.handleResult(succeeded); + } + + /** + * Fires an event based on the copy operation result. + * @param {Boolean} succeeded + */ + + }, { + key: 'handleResult', + value: function handleResult(succeeded) { + this.emitter.emit(succeeded ? 'success' : 'error', { + action: this.action, + text: this.selectedText, + trigger: this.trigger, + clearSelection: this.clearSelection.bind(this) + }); + } + + /** + * Moves focus away from `target` and back to the trigger, removes current selection. + */ + + }, { + key: 'clearSelection', + value: function clearSelection() { + if (this.trigger) { + this.trigger.focus(); + } + document.activeElement.blur(); + window.getSelection().removeAllRanges(); + } + + /** + * Sets the `action` to be performed which can be either 'copy' or 'cut'. + * @param {String} action + */ + + }, { + key: 'destroy', + + + /** + * Destroy lifecycle. + */ + value: function destroy() { + this.removeFake(); + } + }, { + key: 'action', + set: function set() { + var action = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'copy'; + + this._action = action; + + if (this._action !== 'copy' && this._action !== 'cut') { + throw new Error('Invalid "action" value, use either "copy" or "cut"'); + } + } + + /** + * Gets the `action` property. + * @return {String} + */ + , + get: function get() { + return this._action; + } + + /** + * Sets the `target` property using an element + * that will be have its content copied. + * @param {Element} target + */ + + }, { + key: 'target', + set: function set(target) { + if (target !== undefined) { + if (target && (typeof target === 'undefined' ? 'undefined' : _typeof(target)) === 'object' && target.nodeType === 1) { + if (this.action === 'copy' && target.hasAttribute('disabled')) { + throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute'); + } + + if (this.action === 'cut' && (target.hasAttribute('readonly') || target.hasAttribute('disabled'))) { + throw new Error('Invalid "target" attribute. You can\'t cut text from elements with "readonly" or "disabled" attributes'); + } + + this._target = target; + } else { + throw new Error('Invalid "target" value, use a valid Element'); + } + } + } + + /** + * Gets the `target` property. + * @return {String|HTMLElement} + */ + , + get: function get() { + return this._target; + } + }]); + + return ClipboardAction; +}(); + +/* harmony default export */ var clipboard_action = (clipboard_action_ClipboardAction); +// EXTERNAL MODULE: ./node_modules/tiny-emitter/index.js +var tiny_emitter = __webpack_require__(1); +var tiny_emitter_default = /*#__PURE__*/__webpack_require__.n(tiny_emitter); + +// EXTERNAL MODULE: ./node_modules/good-listener/src/listen.js +var listen = __webpack_require__(2); +var listen_default = /*#__PURE__*/__webpack_require__.n(listen); + +// CONCATENATED MODULE: ./src/clipboard.js +var clipboard_typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; + +var clipboard_createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +function clipboard_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + + + + + +/** + * Base class which takes one or more elements, adds event listeners to them, + * and instantiates a new `ClipboardAction` on each click. + */ + +var clipboard_Clipboard = function (_Emitter) { + _inherits(Clipboard, _Emitter); + + /** + * @param {String|HTMLElement|HTMLCollection|NodeList} trigger + * @param {Object} options + */ + function Clipboard(trigger, options) { + clipboard_classCallCheck(this, Clipboard); + + var _this = _possibleConstructorReturn(this, (Clipboard.__proto__ || Object.getPrototypeOf(Clipboard)).call(this)); + + _this.resolveOptions(options); + _this.listenClick(trigger); + return _this; + } + + /** + * Defines if attributes would be resolved using internal setter functions + * or custom functions that were passed in the constructor. + * @param {Object} options + */ + + + clipboard_createClass(Clipboard, [{ + key: 'resolveOptions', + value: function resolveOptions() { + var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + + this.action = typeof options.action === 'function' ? options.action : this.defaultAction; + this.target = typeof options.target === 'function' ? options.target : this.defaultTarget; + this.text = typeof options.text === 'function' ? options.text : this.defaultText; + this.container = clipboard_typeof(options.container) === 'object' ? options.container : document.body; + } + + /** + * Adds a click event listener to the passed trigger. + * @param {String|HTMLElement|HTMLCollection|NodeList} trigger + */ + + }, { + key: 'listenClick', + value: function listenClick(trigger) { + var _this2 = this; + + this.listener = listen_default()(trigger, 'click', function (e) { + return _this2.onClick(e); + }); + } + + /** + * Defines a new `ClipboardAction` on each click event. + * @param {Event} e + */ + + }, { + key: 'onClick', + value: function onClick(e) { + var trigger = e.delegateTarget || e.currentTarget; + + if (this.clipboardAction) { + this.clipboardAction = null; + } + + this.clipboardAction = new clipboard_action({ + action: this.action(trigger), + target: this.target(trigger), + text: this.text(trigger), + container: this.container, + trigger: trigger, + emitter: this + }); + } + + /** + * Default `action` lookup function. + * @param {Element} trigger + */ + + }, { + key: 'defaultAction', + value: function defaultAction(trigger) { + return getAttributeValue('action', trigger); + } + + /** + * Default `target` lookup function. + * @param {Element} trigger + */ + + }, { + key: 'defaultTarget', + value: function defaultTarget(trigger) { + var selector = getAttributeValue('target', trigger); + + if (selector) { + return document.querySelector(selector); + } + } + + /** + * Returns the support of the given action, or all actions if no action is + * given. + * @param {String} [action] + */ + + }, { + key: 'defaultText', + + + /** + * Default `text` lookup function. + * @param {Element} trigger + */ + value: function defaultText(trigger) { + return getAttributeValue('text', trigger); + } + + /** + * Destroy lifecycle. + */ + + }, { + key: 'destroy', + value: function destroy() { + this.listener.destroy(); + + if (this.clipboardAction) { + this.clipboardAction.destroy(); + this.clipboardAction = null; + } + } + }], [{ + key: 'isSupported', + value: function isSupported() { + var action = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ['copy', 'cut']; + + var actions = typeof action === 'string' ? [action] : action; + var support = !!document.queryCommandSupported; + + actions.forEach(function (action) { + support = support && !!document.queryCommandSupported(action); + }); + + return support; + } + }]); + + return Clipboard; +}(tiny_emitter_default.a); + +/** + * Helper function to retrieve attribute value. + * @param {String} suffix + * @param {Element} element + */ + + +function getAttributeValue(suffix, element) { + var attribute = 'data-clipboard-' + suffix; + + if (!element.hasAttribute(attribute)) { + return; + } + + return element.getAttribute(attribute); +} + +/* harmony default export */ var clipboard = __webpack_exports__["default"] = (clipboard_Clipboard); + +/***/ }) +/******/ ])["default"]; +}); \ No newline at end of file diff --git a/app/plugin/dayjs/dayjs.min.js b/app/plugin/dayjs/dayjs.min.js new file mode 100644 index 00000000..47ebdde7 --- /dev/null +++ b/app/plugin/dayjs/dayjs.min.js @@ -0,0 +1 @@ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):t.dayjs=e()}(this,function(){"use strict";var t="millisecond",e="second",n="minute",r="hour",i="day",s="week",u="month",o="quarter",a="year",h=/^(\d{4})-?(\d{1,2})-?(\d{0,2})[^0-9]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?.?(\d{1,3})?$/,f=/\[([^\]]+)]|Y{2,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,c=function(t,e,n){var r=String(t);return!r||r.length>=e?t:""+Array(e+1-r.length).join(n)+t},d={s:c,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?"+":"-")+c(r,2,"0")+":"+c(i,2,"0")},m:function(t,e){var n=12*(e.year()-t.year())+(e.month()-t.month()),r=t.clone().add(n,u),i=e-r<0,s=t.clone().add(n+(i?-1:1),u);return Number(-(n+(e-r)/(i?r-s:s-r))||0)},a:function(t){return t<0?Math.ceil(t)||0:Math.floor(t)},p:function(h){return{M:u,y:a,w:s,d:i,D:"date",h:r,m:n,s:e,ms:t,Q:o}[h]||String(h||"").toLowerCase().replace(/s$/,"")},u:function(t){return void 0===t}},$={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_")},l="en",m={};m[l]=$;var y=function(t){return t instanceof v},M=function(t,e,n){var r;if(!t)return l;if("string"==typeof t)m[t]&&(r=t),e&&(m[t]=e,r=t);else{var i=t.name;m[i]=t,r=i}return!n&&r&&(l=r),r||!n&&l},g=function(t,e){if(y(t))return t.clone();var n="object"==typeof e?e:{};return n.date=t,n.args=arguments,new v(n)},D=d;D.l=M,D.i=y,D.w=function(t,e){return g(t,{locale:e.$L,utc:e.$u,$offset:e.$offset})};var v=function(){function c(t){this.$L=this.$L||M(t.locale,null,!0),this.parse(t)}var d=c.prototype;return d.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(D.u(e))return new Date;if(e instanceof Date)return new Date(e);if("string"==typeof e&&!/Z$/i.test(e)){var r=e.match(h);if(r)return n?new Date(Date.UTC(r[1],r[2]-1,r[3]||1,r[4]||0,r[5]||0,r[6]||0,r[7]||0)):new Date(r[1],r[2]-1,r[3]||1,r[4]||0,r[5]||0,r[6]||0,r[7]||0)}return new Date(e)}(t),this.init()},d.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},d.$utils=function(){return D},d.isValid=function(){return!("Invalid Date"===this.$d.toString())},d.isSame=function(t,e){var n=g(t);return this.startOf(e)<=n&&n<=this.endOf(e)},d.isAfter=function(t,e){return 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≧eLi1jp`buame{?(^MMtxDrb zp0Vihn}jKoZ_LLBzfK>6M+&1P{1?!K1J@Z#VjT8k%!MRX#Gc}FF;7>%`#c$4QLfmx zG3C0X>@l-c+fd-`^;Mi$d%NixUS10?!z}RD#0u1$0Z<84`?9LJ`NM<9Iu~3Ew@nacM7N~K|i+C z@D#mQAEHajwe=b9ee94Mie9)|=`nNJHJG@aF65d%Q!S0BZ2?c)!x-n>w4+yTh6MND z=RlbNKV@l%^^--er+H^N&Z{Ct?@%?!IW7o++pjLpQP+~v+?MxML7BJyHgJCRhmy1z zN%EwQPG(MKjU^op!s=zxd1ML&qF<9>`a`VJmk%L<;}C7)!i?d5+b~?`^(Y$(*m8dV zkb(4n4J+yK;3y5q@GV+@a=-)2C5=O{s}#gUfq7B51-EK$?box<&pj~+gd3U=9uK5QP>&A;WCrxR}p%X7-LZE z-K2jiik{Klxw8zp>8Q0#`~+&b43mV_2d|w25|uZySi-{M{DIl>k2jS1VG0KEU}Z!{ z9PzjO8s6~M3zM)A^fhkz4$;a>W*YDIYS}#)PP1~Bv8%7h7)5^SO&Zn%Jw3H<{bDi} zxE{0#%KaxIFxqQ6rs?Lsiv${`>a~`T8M5DX{fWjiW%7|e<<}rUh7&=_9IMaLMZuN1 zU!3#%Qvh1870?xGU*Mgo>=w$!j+%3}yhn8YCUn}Xz;@bA@(69|jp_CLYzxlQKp=Yc z3^5!X&Z&T{l~%J@=~*9pEWl^jw=xJKaI!u6XI4W=s>bQ9D&kuTxRO#y@6`ho6R{vk z4xZwuVWuhm7m((f?0Lm=)YDe{`cBQ1baY+kb53E*`EpGARchl&R|0Cwe&gwIDrMz5 z!Fg`g>a@UwC6Or*aNcM-cOFGrn>T6ql>sh@F+`*YURBp@Ct|?|a~Oeg&%Tl&^2Rm* z?Ed6T+xX{9h8krC(ofa_ZC4$l{m;M6?055kb5^x?pDQ8co;djnM>rZccOVv?j4>(j zURcxnfO?Tdb>gaJ@toGYD#CPX&*#{=F#o!qJ+@O{PUgMMZ_WJx*;c)9E*kB3tIj3} zH1wwi26s^vlZkZlPB1cu{2q`JFQ-(w{#R+FBDTdn&yp@YB521Qb^CEo zjHL|3u6$k%kL*^P+UTEy zE?wD9^K-SSRDoaZcHRrG7)fznZb8-NZbh5-`}su&F#3QU*nUKQrm^&w0J$Ev5MoYt zTB5cpjylT6)H8GhJULiKkpeQn0R>hOEc{~OdkLXbihrrhc-XBwD)9O(WISK07VVWG zqp1|*HL=rI^%G|!reOasL?PVe>RXmz1~JSL9zDx6#@PX@!j4JPV5|^d)G7BjaBEyC zm+~Z9z+CwdXtX5(m6Ezf?$j-XeRtb#zv0F>50|qp)9^F;I6uf$@d+aNMprdM$mJQ( zb;MZ(@$KPW?lh^#bEdJevU%M&R_^-WoG1_}&W2N-g9{bFS7v4Hty#J&4;q4gPIyIs zrlO#b+91a&=5Sr2nsANI>F`$A(u@xSIV-=OIKDVq9UX_hccZY_)9lk+Z#c(7yt5U4 zuDn640))&cX zRag)O_he38h-E896s>m3PJuAn)mQUI6N9a_enU$^@vw`H$8HNH-Nxd z74iB(R6YWSkfIqXjP(rAibZ#J%P}#7k0?)+&Y0w^h9IQb0O|jXIASPtIU^eNDx23< zHmNf@GYiTb@~6b)D5P?ax^2Z}4js#R&=(hv}o zM+b?@G(dK6czrV#31P9K9vX-mJX;r`p=X;Q6oY;ioqD&w8=#EBMRlXqt{wmFz;e}UNIy?IH)48Vs%jvjJMb&-Z) zSW6O*ul#&&Krb7!9DzWip>Lq#D+;~1<=OdYG8kJ&m@Cma7J0dg1bsJp<0IRjPYg!^ zl4-yH_j!ml-c)`$cP)DP)^voByP}5*4Y^@ubW4U0e(4Lu2~qqOogbdw0{tqHQz6a^ zd5%>z6iY@w0S|T#5({UKry51C2%B`yI3V{Emp2Ln0hEJ?@`$Z&_~70dU$K6)sE1^t z4)zd{WK`vbF5?SjPzADaZ11h2N5H|-`JU<*<1}kvp>lWz3io}w8m)e@!)w})mG2DadRozrnZyhxB zg=L(sD&ic5vXX|VU{UW#T3i3PJ9i2g@@|bRe8jO<4YG7vZvQtTv@aXyg2GQ-YKHG@ z4`KKj6Kb%1@BLO2VLo>{tJSgn#0h?eq9sQR{hbe*4;W%w)-DJ*t4g;@LR-D}258(c z_y!mH8+(9;?UZdCBZP)6ii14;mrS=oztJd4$hFrn-2!>PBI+(n#J5}-6 zA1AT#A_RtL=%1?yEg<#WX*&A*+reW}CK9{SzXfZ8m%TWxDnRL1e&^6giwft1+?E3uP`()BZZ=DW2r!_e7x!i z4WV|lv<&Zf&Wy;@HK`8GyAE~dc5D(bKkrBrk1p4?%^wn#2#Hf=Xv}1J=wTAJYHD5Z z8J$eojXdUd(wkaj;!JjGH%Z2-GNIFEO8{p`jo=%yy!irv4)-e@@$huuAcSAPew|L= z+kx4Xi$856IAmL!6Lw1x2*7N}#dfsvw7Ls7!(#y8kJwGBkSM&J3N#G8bv$1D8g$Ne5TV0!c7Xyt*~HTil>YW46I zeNHUWn#2PA4KI#n{`hoWP3AF|F~CO-81jlVX2W9VLwaumZ_@(sfaXmA3`7S8J*htX z*Qrj$PVk8!ce>J3Pq=14wxNXpXR^eaLtjYRkHP}^2(uj&!$>k$w&c1;kOvbvd(EpP z4gPWe3undgG~@U76bwHi0%g4p?0Q&LtNifJkN%2j-H;!g(7aFvP(G{fkV9;st-BXx_5)l2jki zus0SQs&$CdHB-6!Z1$y;$SOpH61G*GK%gJ=o#@gYveG*KtJX&I6voUV5krgSH}RxE zI>Q+7r}^ga4fm89hcSs45cIVkfHfn>$g#P^rjNXO)M*urr#J5W17PB2_k;96Ym!j|xUJF?^Hz zz!3)mL@X0%t;Sljf1U-c<7d#_j_Z*SHhhPy)aZF7qh8x7-xz3O&?w@ z&9AuXZAvx|VbQO#H&YC+QTy^MRw&MD0HWnNPW-CA%5^jtgfJ-+*hu0PsglhoG1i=P zT3~))hY}b5FTST1VTS!|tDO<-zWW>~gQmdrHotv*^PKvF;GK2qvk_r%J(xKD6jp%K zZJde&aJ4Q?oYGrTtAL2EYl@jW5(vFutNA4O?fs~v(ZxIUIz4Y!SN;>MLbo2F-`RPp z*9d{67}l|!0jgZ0@8Kr{buhJ!(&Pyras^?>b*kz->laX4Ot3L6LW9sBh@<@bnoT7L zqE>==R^OGqJLtg%bVQIM-;Z6{D_5)moFje!5cBY>bL|*5h~n$LNfr{si7lj!47^&B zKly1Q#o%zeY;BM$_*gB-GWnAGAK_0}6IMAa6LjO*CwGYl4vj@+V{U0ae;rFC2|`Fm zN31={oh)~C?LI!-*TqmVH@?~=4NDJ+3DbNqwTYM=Q+5xVTbV`#yB<#$8c%}aB|gCZUQ0p0B=~)1gWy@N)W^P;&0q z$6-LjVz2wGffejkU!ejY9NJXxjYEpC#7ozbt>VEUM^vdy4%6nxHq@;pFA`_3fMMo!p-uX!W zI5&ck9(<3*Le^y(XKJ$&w=~Um!iYKr&*2(kM=WV&1Vw$zj}(dF;(x1~qh{6W=LBSS zx9wzYVzy~jFX&O^!bPs)JHVgRa3V(me%6XZT4hrz1WsTFtNI*^*33zfVks)1>(_lI zmy+b)XByAiln|~QkCOl%`Y@r;t%N9{f2=Z)0T1UkIzxy_J#3k)xSNwpxM8K+ZXK=i zzcl$ToRq4F8bg#W0qlguvu``iynZm$^d|GhfLWOl49`q^_84B)Y!akn)95^gg^Q%* zl0+CaYJW2%f(is|@r>%O{2n1lzr0hzzW`}H710Ymwg|{H*O5ge+MWo7ZX|LQk(jjC zfoqc%*Ei|XPJOV zGSj_++g3Bgs0=oyAp+~azc`S`hm$B%(zu$Sf}wcsa?A%fRR^S45eM-Fr=S-H(&hxn zMTH~V@C{CGU+mqw(x3I+i^u3ZPy0^3N-u+f4sJze2JHy^v>|Gb*qzm*_?tz6Hp-xH{2XM3u*@wOate!Z z{`!=EbQ)Yo5cvZYE7CF9w~qQ_bTE`S6CdVhK254H?m$?DSu{$bfw$vf?ZNHB;C;@^ z7$R&)k2vxv9eXP|c?xPm#K;DrCwhj3IFBLn(NDuq6XMWDR~2cJ+o|^R0JJ`RNjCBN za;o;#M5p!u#(GQswDcQt$GM_=bClOc>BWiq`c@Wh$mV`>#@?1v=vmX@t!eMynye3H zVkin41Laa>qdAloLd4&30-WdNfg!kj}{cr%mF)JUV%mVImf= zL}C+JK4p3Lc8%9sUXolPFkP*|bHK64r_g z*C3@NA*{6{(uo2YBqnVKV@HO`miu`@X&h&X-V(%KrQ;BXa8j^Tl=y-ACHnX($o|3W_8n?4D6LjwQ^e z#GLs6c*wU_-VnIYoIapus?mZx-g@wmubFX11|u_K!?*vLhbM7qm~9*jfISwh9`h1y zH~YQyo(Dhu=1l6j#2^}m$4xG^tU}6i@pl9Byzgy((|;YjIF3Z->AH=_uSWo1vZ_jm z!;o0e#Sz^5`sN(=TJ@2Zb#_ULa`a+S*&UTu&E`<#=8boImT0DYRPVqG6VGRz*h-c# zONr-9{`H%zwsDWL;!rc_W3aBuL4iz{I%ctsFc@3Lg9!OQ`{+r~#f*MJylLEFOR<#a zXNNDgsP}NO`7dACFwME9^dk$TqP3!(^XUct_|QR4jJDzwY&JnjZywVX=@gs#p|B5wJM-}sQe5t zU2^hDQ?+^}ULi4=#N+Na&K*{pT7C=_f(1yF1jS3&hfbEB`cuI8lMHaSJV+4#Yq@%X zenGV8>3#T4MCB4?{G;2JmehxhmdM9r%ah{-JgCip9qOY9ZUu6Py~?zQUrrBW7`BH3 zjU7xaECw&V9IqqSq0L(?$~{{xq@j1EwBWnB1FSXM3_P>OuS7 zhwgpS2jOQzbT2d#^Hg3oCE3zrVs(Eo_Jej-uu2&WBAuu>xS6Y&YeKZHY~Q;4cQ+f7 z2f=uFtT=ng$62g@<=s(m@!-%jMzgt@u{Cu2yZv|PL{YB7+kt}3rOc60aBq=9*wc0U z?|Z?0l)~F+c1i3++`7P|46pgrIKq1M`-5y{fH0l1DljDFE4X zqU7tvA)VMY`u~2_b9wq*uc*Y6Q{LTk5)&nHstx1RZ37rdca{cK5m)1xv$L7pHmd-< z)lZqTJVsHMY|SvLryDq@PN;+g_JjPLU7_I5IjQI87ZtA63(Bs{2-+BlYn%iV%zcsw zbL*n99ru{zFedqE{zE7;qU_P>?lL#{*pi8!zRmaQ;Fp{~bkX3$CZTrDxVE-fZ|xlR z`-rj~fe7HAVa#(I&UOrTIqQdH8)=0oH7GgwU!m`_o6)O-i-}k2-4lP26J;|jqUEgM zUKXHvZc*;+4`*>|$JfC-RT8=Tfu0Wvc2Xc}@UK`=@c#La4zRgGI$`c`TkmaVFbuVO zVj{y>-Fg2i5a#&&16h8+5xHLJ`OJYY&7b!l->qeruWMUd-lHjyqB=i-J)qLtk zz?Od3=P#~5BQp!)T;<~h0O^ENWZ$zf*+)rUim)HG3rLH%@IXQ2w2X|jpLj8~3^FH` zQ5?4svLU;#KK9rdOcPK5Zbv=Yk^RXhf7-)On5+8YRXiMaQ}h%rDF_^e)_tA@@!g<_ z&=t>e8WU`{wr{5V0jn+%1MA{ z{Jc(mPsLmagaz%7b76;V1&0C=Z%)G14l^aLGi&L!NlXYQkPb6Nx$_rlyZww$}hg}od-ac zUW94n+=Fvq->*+aq>Y8JPWc zbv5=H0xOV|hv*q$l*47xXwc+SuZT`Xbkfz;2H)3rFP`qKjI;ha%=0y1zUNRQD_8N+ z_Gi4vgk6$nmykDk}LLvhKf3;Od4cM%#agj%WQDPvgFBI~(JBc5sDYd3- zomBLrqBiWTQ&q?mdnn?=_?D8Wig9(`SPGBW)qec})Pmx(D6MHU)|!|uG5wpwq(QpL zctDki^Isd_Y#-CuN-$xD>GmoR?u$Ldyoc+;;~iB%r%U#XLu&e}=} zXmvUET-%I#nESD`*E@+gTT$4P5Z|^0CXYjz%x@gldx+$D4J$e|mq-?)7qq^&|mM#Q~d*hcgqu?i>4^ zT1O@M?#6dB<%UyuYj0|uL=*jhl-scRw*?BoY~~^apj(U&h-|+cT}u&gM(uhFNoGe- zD!@;nRbW8@96`&a{CM~Zn;A|GKtfW*7#GZqmzOjtEwVKm@S2DalxXv^}{YpFiWMCBQIy;C5A;_i|!6`$BD`idVNp$+W3Kl5WgYR*26G(y8O~# z#m0M=z$5&Fej)FuM_&e|)*{*AF2maEPjT%DPq!d^rFWgt#c;!`3-gJ_H`C#vILA#m zuA10#vQMZEnigeO#mJbMcNf#6vVlr)qFZ)u3U$WlO*qTZr{mkoj$z{G+89&hRvxc! zLU)O_=IiT1*54l!SJL~Egldme5&v=E{ku5uE)Zu6dKrB=L@x+#%p6>yaJm6%uqtux zw9iwS*S07^AFA_J(Qjl`-`rfejTQZfBzED_O-TH^+@d1BWM|$P_;MTAZ?4FB{cQV^i)g3iJqAvUCDFrA_eg?R)P7~i z9owrxeXYBC>vr0EgHA@Xdga~<@R6vJEYQ#xV|tLQzjmlgf=r6irqp@ShF7ORZdea1 zgA2^j3f=#QhsaZ}W4ux58(acFFGJ51-WY)5Y3bUCoeMk&iDD({d>*G(CqRX^+pzL4 zIkgl@)2(~emXt$Km4Ku+$ayFdPfJx(mQR>$&YEw|>~DjLD%)jC9fP^3w0I3=1+eAI zpff=hr!wzDYzU9)w6skV2_=fEXt5hR?NgRvM98E7+b%y1J`^PTIRmqt`XSmb-i$l$ zM0`BS+ZA7VYI<6FWFEg=uZD%l6YGnrHlQjEI6b(`fk)Bb@+RL#v;KCircmWfAF7?B z4Pb?+SPq(@let^b5<_5kGXq3L3^XK;^o}%HyLB-jfBO}|$SSjVyS5_#-&j%ye~jjT zo%eTGH@xbfL2c9B&qm7w_o;Rh>Hq~aG;<1hYz{g)0RcKhkD{_|?F@ggF&A6p#%e;W z5x(SN`&)Gcsn0F`)2{~RcT$s_k zxykcDE#6+1UFhbD8ow`+wj(GfjtKlr$Tc-lsYf0e$$NkC8E(+zZSwn~r|1IZL0c~= zauBtmGf=(|0-Pd0l&&d`5~ZJ+8rdyQzxyoQb@t2DCN59JSm^`{DdwxC07;0w1b&4% zgB5^urChEXW4M^m)pZO*nH>Ebu5_oHK7;1w+T~x5Tld3Cq+$w_VGZpo9>W$VFljOBmgK;#iGzvw{K zbv@O6-bniJQe@YKU=y7(_QOz{Paiuy7yzvRR0t_5BtP7`rYqQ6gvcE?LuTZKe4~Jm z1!WOBuN^v)GLqx3EB$0<7Q?cyx;+k1vPb)#wzHMPY`!PoY>%W%9sv4YxX3ay=Y2fw ztExE_RtS(eA>#YJpVWI*sH&==8oT61ul@Evh#|*cbt7@L`$u0%Y#tT5%TpO@ic(hm zi454)=BLoF?;;Iwh;bY%O&Ay|66ikF=^5;%XdG&?BM0aT9lx+SR5HIG0vZZovS-C( z4=F6oX^nN~5pS}pKP0qGbDscOgN|-5+<-jpxVK{ykrf**Ko}86NRxI(0azLqSYJ$T_@VwM4O!N6g!)tEF+B@*7EpdAM-+ z7$*k{{=V}`NlvoKSMwY8HQx*8o15~GP_^64|1gjd_DU+(3#vCm0IhwDowFF!UMwZc ztvXRXD2r!BIox6qluo)3-QshH>botysR(%8xW|DIi+`z)-<*~ zImQ)skKwQd#;j}{F{Xsu`>~y-``cSU2XL)zGQT(&W9vzA=Fi*!XYs)z@6y41_OfS$ zRyBwW9N3$O6}tBGLU83R5n8I~8w`$F4r>uw-L`{8`i9`v(G)(a2 z+A)c#GkFfiPy)R%4al=DoDLnAA{EeOZ+xPfbH2gi1P&ilK zaQ~F>0!+g%*^@3RA%!K6!Rb86XxHn2)La@IvliNRr) zhy>9n>oDZ`A2CIFJg#GII2j1PK_r%IYuh)UbfAwhJRQ4C{FV ztYiF7X2J3{34%hIRVmNdqcrKK=Tgs+s62(DY*RhoY0J0ZkUsB(iudpL#wdLOEJjw1 zhjDvTkBp$rjnk0py{V}`Oja3!);gUb^@N0?^uC7tNb^nWQ>Oh*p{9deKO0z+F2fEZ zG#$yCko_ufT)PTSTN)(zFEB!QuJw%VmKxu1cM(oVlO(GtSkQS3K7Cr-*-y`>8OG8A z$SBMAKBG%79s}o+areO;VVBAPtxe7PG)m1>#s1m|vAZft)KNwbixTe-4FFUWKRv*6 z0LB=8B!Lh5$1G?c&OBH~36hhFIRq{Ba-J^U-TP=s3fH{yh&so_DA%7AKfy+S$Ha47 zIjkaA?Y@%5o{H2jkNK{0xtZnstmQ^UvO}fKznX5aeN{PSy^6t3bjZD*!Bg-Kfn|Qj zF6F=jgue!b}Uoy{;iiAg9qo8SZ4pPfmvmN>zGzM4P1U=8~;Zfe!{4$ zfz%6$NrDl(j)WPwzh~ygjW(^!{ham29C zulX|lA1QfO`O#0&l9@@N{V;n49s*qP(%OXhuhIx`@A4Q{ovgsy)N7mV$AsU=&2lTn zqVn!5*0tcUPh~QKxmf$^#JcpmgIs}vz^XY~5imKMTxtt7;gQ6<@exL_P_Wy=68g_v zo&wSQ5)5`~M?!sM;b8!@2rl6Du;(zYqvz#{wkDE914AEVfm?dlXjryi#eHz&pPnnJJk~$6XW&m@a6Bi{GeIy+ zW}z8EuQFs1&E2WzX0yW+^mp~e#a%Xk;dYmc-Z!wVhHp8q=KI)Y$=BBlLsB{zj#}T5k3g9Y+T!{gwWQumOj93F3QYvNTYD&n$u9U6Y z89$V1_0elJX=gNfC^dEH$N}sl=to3|{CiUo)bg(s7p)>brqn1kTK?k1fUK}yD26CX zx}3FK37;V`{gzuos5UwEmcxaA{ds(gCi2@Y6Zapbu$jVV5i>Dr+ zP*j@``TE)Zd3a-js>@Gd90Ti@k~mI0v57Y!qk5lgIKugxLW0q{$K{qL=sC^yH#FR# zjEZZBn&WcIjEDEt>9-#b>bp3&l&|lSaB%qkU0a0LV7|duXD)8yaR<61!wv()-}icp zkLGE62?ol=Qvg8zJ7@Xcmu1XLgI&FLx?#Jh;%D6O7?z zeo1P~2C*I(CBl)!^Tz<*n|T3&oK#{pQ}k*3TQdyg{JiMLDl?r(Q?{?2GMog4$un6e zkFNeOcK5obpQdwg7-+)gmA4Tlw1a(YV)mXKQ`Dqy5J$7$hf`sARRIaF`w*f{NL_9L zu~&fjx4z%oOJuS-+k4ekwi(oP*b(!1eI+2b(bm3cfdI*EaE{YUB{8BMLbGo{QRLu= zV@!m3$drn!j(^T)A4Tf>9ZHqozY^zG*ib{kHuGdJz@I;KFAVI9z0!-)%Y^kg%%icv zx_iFf$(V!`_Xd%TS|rf2;&QF;#e+Ys*!{K}c`$8hmpE8h9;AhSW}z8~3g;x_fe#O! z=|`_VMlcVu5hLM)-MsS=S`VIqm}Lu+<&~VjzFl#p9%ckTH1N_;kSh45}U zZw!3fU#R2X@RCxb$>>b29S;|=(kqJsf4^(kg3bvAIQ`qewj3>Nr?o$}JdU?%@m7K^ zCG}nw)@u;A`v{qL=PS5=mat_&SypoZvr*Pbg}0 zO3yh;;Sbon|Ae{4d1Q8G-!WwPDO7bU?x<6O1TkAvuJNFlIPBMK$D2zZ=u}Xy1$MKG zXaB%ZfMcZv|D^SNGu4B zd&?|aiUq0nbQvX>OAkw_v`Zm!xg{~*$hadSphfc{vr5>H{?8xsC_3QzbH{K^OYvou zB#TBubLAr1tg)1vvz)w*CZ*594gAw+hMc3VxSR zTdA)JQj3UK&YY44QY8AXU+xpG`gi`~#B}`jXD{%>zn5Q)l%<;Xi*REL4r?^m%4*$} z?u2Cm_2O!gEIrqaibW4M=pVa4Kc*TsamlLM$}e0zuLCakrv5y5Dn$IzQc!ppcbI3x zhJy0&3B_bMW`NHSlHGT~Lx0xplDnjZKIU;=j4IHHC8P?W~_ z?j?C{xn(R8d1F>mIzYh0s&$aY!)xeoSUP4-NL401=HL!k%rs4@bAV-)pGEUhn`FjM zJCqOd*IHkFTC?3_(L;SAK-77y$4f96c7&xhR9mTk$^R6DQ7#}v+8hPYZ1d`LYRFo-Fp%S- zGy(=>EZXhDtXg3Cpsd$hXm?;49^&jd%;O~x%8J}}d&psG68HqHWIhR7{ttEBjX5vC za>OE#dUk-e04dN@FP-X!vXJ2Wx$OCEzH6Z|48MKMpyGmxfHjYA@(-vHM&SyK(5&8e z&qTajlcHYzk{*t?GTW}5%wlx*ke*9TmnS@?pT!x=hx7K*6dbRiElNzPP8AzOX&1;-Xsm9C0+EVPA+N- zb!TBvHz5=o-F26&mUG0$`q_T1YwX+e2a1u8$=5T+yw50k74ohS_364v4SPN*ie=6r z+x*!RcOkyPXK9rNFB@Oq?6Ixw=mMr5XE6jii!0OHEh(oq%N_C>@0Lt*?5B-&JO&s) z-H{Ain&`y~$eYWzH=mldDr;#H;tyIy-TRH1_xa!B(9^y}?QJs910f0ffa4_xL+bfA z=4#KVciIC%i|bR&-rxS4w_;iWK(oSeYU{{;;PZ3So~#gv>nSVd?s(bo9cKa>Dk|tr zO4Va#-3E0FN?bpE?H`%`Jxd0mw@07Hw<{(I&m%0s3ZF%Ufb9F*87cm0LwE?yaT}Sa z!geht^i{&=hrNt1q-{>#J}F>kbZ8hx0~0=lA>yK=ld~9Cb?r<}mUBGgFs%mMuR6~b zg3{IUB}4*>6Ug6AcDmkfL({nZhDR=DK1e0)nidAE13AzCpf~1eOIDbM-APF-=s{m@ zdDHZ355>B;HNPK#5=pw&7H?`w)QVlK8Q@hJNNT@nr$!k=pXd*ube2;ObT*dirh{OMej7#Y)ntv zpf+ee_M4l3cBX)mbaOI*DgaCh1*sT(!6ZV-Yr5|n66lh&3|^E9khWcoLV$UrPGv-= zA#{JTU!`9OjS>(fP5$+*^`+tM%LUpHasEjMFN=zDBQGWy4|}M46kki9xZc>64%>C% z?};}J=KZm*p<>vgg96ZalONy3RLZ_|uf7E)f|%U7gM#UjisW5uoF&D0Nu|&)QV$(S z2nhXHi0jzF3%TPrJ<$Ylw%fC#t2IzdqizX^NbLo(zqXs+$;uwr&hU03+xkRVmVKr! z{{L;Z zL*%EbyPNE8UBJ9jLcAFF6)hYtiC*%fHV5xx2L7}r(Oi;56<)@sD$-H~?eexA>5a6w zf*y~Qf$2jE-njY&s}_pGPCKQDJKDZBFhFxt)yez1`+v=Z7fJU zgS{3xFl?TiRk=ipofSA08gb|qrt-*gS$MCH%LC}6A z-qIJ=RWxT^AK?1oDDVcSWf5dm;4klqOK1_`|3QUNa`_qY^vb*zYd@5iRnBp+J1x}m>H3Ey&18s# zha%-)R+h5Ft=P@3^4* zOH%DSI=L%SG6d6PQw%n{-1}5Os5-!rlht|fEn1QNICTjH(UjQ&=z*dQKOzQd)-k4k ziH#%2O-?u89uj$RRpQD|-*@C%4g6=;@#6i>O@UAG5-a_s?Ode1HZzMrsX^%Ps~w#h z1fgMIOZ{4ISK$n%Ui!`m$z_01)l#I3I< zx2xyttap0I;!{;sWm(qc-WX+j`W*$R{0|M=b00{#rW11>qnGkk1L7Mwg8oAA5!kWt z(|&UU{=RSGH+sP^HHbXl5vO2cBVn4zx=o`(W@Fkr1<-!L=LzYiZ`@p5B9)AvahOj? zl^~E~IoZcUW7GT9UyU;ZQ8&$93OHMvr#m`lAq?{G23aDt`Ct8YV)=F%;xCW1R<=Z;|%U%Zzy&-L(ZL{rDsnQ%}ut zI`ZOOnyziuaw4nU=$rRz&-1PGzVKR$Ds+@nU-Zh{O?H~sekKU^6y~2EZZ1_b=P6Ks za5K#0IaxWX^`4L*{`<4Hj=(nFce=8{R8}*tP3vAqBM3j~kmy%eHnSH^@u6lbL7qru z?(w|>$ry_OsWEZpcxJmwS)#;V@9?6oR3mvSP_mbN={yemP5T*yzRN>8W@ zZ)2?2^VJ5!OK_ggI%H2jboA`)-`%ttsb}#@;caXlEg|8}yLTj;hCSJ)M1L!=u;b!s zb{9G_iHr^4IbSm3RL4Tu%eG|A?`~fwE;3m*`~5mCUA)|5CL8^jntJB?uXRcEwho{R z9a811ED!kpEYJE2i?}pSe>Vh$Us}b(Dc#Z7Y}&5E!7{}o@3cQnR@%iyc;2$Qg7_9scL*nMSP zatoEGJTT}K*8#8|uXa5#QQiMzV>S8B;ZwyWTlw{?-w3lG*Yb}j(zbRl$9(a9XOP(s z-_3z9ych}|SJ4Zk9AOSaGQr1>D-kK**hNJfwxWwwF|D`HZnUMk+0K6fJ_ZZ4rF^22 z3UA`HZqMd^ycgI5;=6ria#=cB;s^iWzb(`G-Z1&oL@BC)qP=VN`_D=He5qHklz4hB z1(lZ}k;FA~X`m_Q&Q(I?$6ze>EYf7~;OcJZ96g4%y{1OI8R%WGi_zDL<~cIFU5iRc zGj=})i}BV;fPuEn+jj#IK3YP{doVq?L~x_NWAg4->rkLB-}o15+t z(%nQcL}Ymc0HK)q#Y6pCbxdVCyOgmMMA5>N`W!fAV3d~`WE(I;Wh1nr8KCFnf3bo> z{TLg|l37jYM1W>yW^kuxeo(VJjIl7ltq9HyktybOaqyg;$k>PZ_{19$1~9TsR*=T& zi+eSuRVP~;15or8yUhe_0T;on?{)AEbWV1?qRW-WLOM!v>XpN&X9M8eU0z%J@Gpux zSA;;5sDj;(YpXGcS#|dX{puZL1*Z?*6&_{eUHixL^4jb5Q_gUVW0EcL^qd+GRF=#4 zXi;tIeD39x`zfuH(O(R;O0x~kx2@*r=|gN=1547=4DDUTVL@47CVL*hqZh7zT}gik zCJYE*S^ecM@AbOkK^D(Xfe#uuK@VshzYi$~4y~yp7*1-}iHt*14pC4$RX1gOoS5ngQ3>*YpY;ESQGY0C_<(L~d^AKf${?TOjv&TxOapgR3B!ZZyB` zzt;s3;U`D6FZ-5G*7@0+FC1TnfDR!eMLrX-4tpH%{OX_qkmt-Lt5VRwK+r*NkE-e$>!=8^q&Wku zxOk0NI@#2LaXnA(TF$vbaNt`w?Eg4A3%4fUw~cRf$LJm~K%}G_Mh__^rCU;vkdA?X zG@~1&rAwvZOAinbl#&t{NO$ME-+LVU2lhPobKm!Mo#*vAhdV}W>y8xEx?}_ElGM8i zqm?5VV|Yu|0VqXkgeGu{UFxg_bSwQFQx;gsN+H9>e@2IG3>oarn_63$r- z&3z-J*+q^%mn`5y;A)beoq%a%SS!A)V2%gowuoSYrz*NgL$zr3hquc;Hgbx)K#;+A z-Gp6Db&zCZ{r=4u+amTTvSX@Ch5ZuC@pz+7 z=^Og{dtN+e5$H&RryDG(HgdwQmZ%nR!(UwU7p+rzsqFfM#_}!<+cV9nMS<1p9Dx2c z5naX?BO*MABwo@*(!0j1pT0eTmMZs$9ZFqq5Ge<0RE;5&W#BkaQoYFsvu7nmv42Cz z?847hp)_JXgI#2i-vPG*R)=QHi0p>afKbb}Si<*u76_I}wNTc-i{=0ErsGb!2G({d zu$23Pq4WuOh{T2$>=c#?J&GLhIJZCh+vE~1K%WtIT+hI>koiyQloans-%{kjhGhJFFjBgewt91Qb=G#uj zazGxsb%w4URn836N&2GwdBhuYN5KXc>FwX*r!W-|V+&XAKExI+uY>iC=Bl+762V|T zWKvJC|Mg;0t%JAuEKHD&ZsASR{oWWRNGD;0#}pWSUIR0yY%C!Q)A+4r{TXTVJdmel zKh%MbJMHSoW?lh0m$+%O&s%7%K<(130DK*-Wk+WmsVh*oYF8ALBad^J+G z;bNjhoZn);JI6HocPrb5hwM0e7JOepwWhiTHCDsZ$g=n%k2foGJ!eu^7$@eKU8+TkHwFPu+GQxT%;bVowByWB*O4hvUic1@CK)+OKf{LF=gsqvB z>gE{|L}JMdpu3PfE$O-no|$q{3%{3nxn=)D?KMHlNSl6#v%vvJ2u?y|Ftlv_OUP?a z4I?#Q0$!+9fjA95=)s*IXh%xc)FV@P^8RfC-b%xedQu+i!^gOp7(z6@bH!>~S&dQ4 z@k@E{;R|nPm)`&(mL3b~)J0=xRX`Csb2wBVJ7oJK03vE5i>Zo*pgvhS+7vFyUP|Q> zR~%Uys^#)s9=&L-bWClWTVbH5q}G@f8Zee5(VW@Wjrud+@cE|&S!rCH&azBm(%f3@ zB&O%&heX8Lp*(&JmVY|79T2CK`0h0aiy&(wcwxgbs;m8v2J}xlu<|V7rFu+kfI6kI zC-m(N4v{-$?sE*NiL6<82eWGt5-F|sx~P@sbsNvCw2|3Z8sIeU+?&mGR%OH1)qHPb zjc_WPm{`I$ITuN9(0^CJO0k`3qS#oTz9H+q5%dZ?SB;Z zka*Lxik}zB_nFDhho=oNK_EmA`a8YqiazSTE0e*-|2RMJ>EjY=ZouW$UT@}913q%@ zd3v>DRxv6LhS1R4O24w7$dALvPhP;?^p43w91gvIX6pBg-XiJ#UM*Cf5|uH_QH4x5 z*Ne-PuTy{%k*dKVt22(W?|iF{X+sYFu+JU2s=fZQ8`%ffk5gk#F4RwefJbT;?-BRp z?Q)ao-Nf=Kk0T^w+})3-LeE}b}~eYd=6?z_JY{pxSNX-k~3(o}E4m3_xUoFs?~vPiA47RRMyPsgA0 z^L=RhAk0V{ov5i2{BeC<$U9qZZtM4saEacdm5DyAmuFSl1}?%h-})idC`37Y>Fb9L;J3gO zdkJ_1&@~8S;cVg1i+L4p_8l9)=@kGar~<8G>^CHatxonlTn5+QM`PVQwycI6?s-3a z3Tw?R1y|;2xBw9@0*#-@$6PuZS=}u?ei~8qxmr~vL3|y| zv82WL>q1IbNr%oVKH!VI!bRF*fRp?`5R{BrWi&q%bK~=RGTHWIxDd&;Q~m80MLz9!@uYEn%eMS)M-4SB=t=-0_ar@G$3SJ-qLXVD9Gy>H^2MHXAX`rz zyjxHBZ;!i6g-Ch+APr$q{t7d>#8DG?A~k=uf&rABzpA*qyGZf1jJ>`6Y3K9w<;o*( zlbEOxzPN@q!x{}a8^zmziNbgO4hPb)jhFd+hzRfHS$3-`WK!;CFTQ70Rkx%5>&*;4 zEW~zm3z?ngbL&wP`^ko(?y?Yl0ho);dYQ(-9>cB&1@R|EcH-e+yp&?vp$J=vTFIiy zikJf}nf*|}pLG-7e%C#K?ZQu}QgE*?w@7pFlTV_kSMeV$`!L`VpNvc?o51R;(B=@8*R zJi8CEa@1# zE)X>3D%OA4$p}KY|L;$lO#qv|e~%si{RN)`daLcUJcKP&YI%I$v;GPIiPe$It94!- zC)@3+%v?_UxlP9J9Y@Xg>@6wD`|wn)VPw?H*!cb1oZA4uQ|(mIEFseZg(0-508ED z{k?wpc~cVUG*^7rJ33lZxp;Q?Qqps5byEfqZyseQ z6=X0=$hED_-o6$8Z}X&_X-1}t-fBXj;``>!&GdA>EzBH>Y9m@^788p%ZzNI^`ua9k zM7}FeuD%WAcE8-md^YjB4M; zPETKr;G^cf6iF*peweKdl^z0^$07(W3m*t!Jp173dAr;JLtM$mzLUPY3?y7g6r%*3 zzN^OssC&R`O#c0ZH|(n-fBml8sA(m6;=;P={%%47TdiD_U?o=)dnbKE6K(DZJq(w< z(Giz_EqtHa*yPMnA+D>qVe_P!ySKNIJDMrwQ1e4IbmrxVjbnoZR5s{~6A~(7)~0)@ zlRc{WRT)9)jV^NEmCGpAZJUvXpdn|vne?6GN?09v_#;;GhoQso_J_mmWVpcTL?Z-3 zs#*loo|VP`yEBfXiJ6QDzQ9Y@osYCb`|4cs;b7TW8(h?m?KfgZ77k*sxwT+w9$nl0 z-=9<{tK~eynY_G=mfAnW9kGrxYZvh8P0=OJ$7F5@lkr`%qm_kX?FROgMMlO7p!+Wm z_C!0g% zfp!e7ukg;bSSnMke=a}B(xw*&E+Pcfs?sGy12<+5V9{>2bNA-c3}WwA+fRTPDbJwoLE2N!2so7;D*Ie>nbWq zQO{b0vomW$4}BJumvj@OCAjhNg`B1^KylPsozHeF2qW|rE#3zD0=6-rirzOj#-WbktMWu{TLhuFZcm%D72Oh4=Mi{|;NyjhY;8rI~u_ z^ZL)p3@JJaRg(V>s4zY2eM!E~zH9rP`SX{sldk2ThI?ARixL8b;yIGZ0DTOIAVjkZ z+zckRPQmB<>S@I9I!uL3KJw`3t zIz^p24rdD!_Vrg-KZWX*?RC&~hT0@F;TnZe#@i7ZK;#%4A9WJC7hF@AraU?s64 z^y9iw&+SalUx13-@MFl(z_X_Zx;74;&0LsT$05bv>o!^b+ zZgw>(1_}8M6i_D@d-~j7(A`dsUHU1jXXht>HkgGMoXsc)#OH?T*v{)0;UR{Z>7Wy8 zxJ$b?7C?}BFdLVN2R^ayP#aEu5bbfvB8SRr|m zDa-~}Hu8VvYVnOESoz6++uD)?6Ve5dctsh3&?@@&0%)=|y!t0BJ@n~x?11ac5xpMp z*kD_mt1nd>%81b+^L#JWiK9nHCx?^1e5o9<;AXXn!mQf$un!Iv%lwpfC~Plc2*bhV zT3Kpp;+5b_eeOz6-o#5Y#2CXe^|8|WZYmPY{iU#SLx--;R)wcr4wpuYObSG*z!v>?P2>hB8~VanJ2iqPicNa9hMh4(A9dro1K!SB-9@sQ>P_pNT}W{8eXER;z-ASUoS8n9E8O4_m= zB?YaLP71_^ZTj^PbX|q~^E6gcf!@AQK{!N!=no^BFLg;am5gz5m))?AZP^sp=OGYe zmdfYhRwlIjw*9N`Q6wQ2B6FUxbip6MzzJQyXFp+&8|L9<{S<%uP8q?FBST_yrZn&4 z{;7d)wlCw_I5~MZG4iW7Rh7jkIyEjO(Nm4zf{2v9O%fr}pLOQzEh@%##+{+H_gQl4 zWMgm6QjZT7i-`)J8Bqu9XsLniq3z5f9QZJ$R6l|R1)o19&&Wse!*g@ktf=kk?BrkC zK0HHT@F%+;Eqk6Go^EfO1wm*#U-|N!%g}$6Fn%U+A-GxO6MNwxA^Ql8x=9%T`Q`6_ zU`94Yx5Zg{!m)QC@yD+j?-VS&w#j&q=BDqQ?~&+(@b(J*-xH~k%_uWi#FY*8jxYjzxL1dW-)v_R(8$I?{$+WM8VP-R9^YuHZi$Ye260C zgk9T6sz*ov_O&sB`gkMb;kgYVp6(iqp2Ix+?U_QE527?(C(Rj}kx7b+$Pn|6I&xBa zDnxCPqYYcK_|v80;l8a~rrMI|T)WatQc$Vmzq5QFE75|vEElC@!c?Y_=x zDBw-fi9>mB=TPR~n|?F3#I{Z*D&P$%HG&h9_qX2b3!vf{q}Yq1Uwf7|&D2=|Orw~<>KN0^hrzuOwR997E&8fbvq%sAYa#BqKg)r00%sjb=kY~cjla#m~Ki8j4=tItCE>Htpaj(e4Rbc?dL`kb67sP0weRPeiZ z5BQSDHnz}94wb@P=KmIk)zwRMIEq-d>H1|LP!PKEpOC-#32;isoUURnsicgy|D&_q+RHW}rGrwCr7E+tpp5Oh%C&I-xe{(_Kn?GPq=e zlUz0y;J*VBkLKIkvL(23z-v?6pkhT{S##lw*WxWr4-;_Gq_6yCiTOHF`WKoRr_4Hjn(Oo8$c!fo_ctP zXz4elD}u(RA0T$J@gE$3Y(xKSQE)7UiH<_P=KHReN$PDgz-gC2_w`n;K)0Wc_hR7o zcY#uINnpyPbRCO8}{Nfe|K=OUCsJpf17$k9Puk$~*Enm$MO_kH*hB2r^|M*`&;{u~Cfldfc zK`?7c>jxgOQWw>iLI@BV@NqN674i@tn{`K2yg}j1ip`CK(y@ALyY1!rpP5=ElPtO? z@1lItn2T;3bVZpq)9h|v^SY&*Kp!20de6s*TZUMe!FZ%AB3Ifx)B#U?k@YhgH09+^nJncvkMs`_+sv-B{06Tdc)b_A} zu|y)UZ!r(IdlZj%GZn!9KMt@{Zhr`pdGUE3T-+DVvaylO%9YZWO{@`1&!1oAJhd3a)E!l2Vl+7Z%u7$1BJ!R#5$FWTCbH#~Qb6~h+*PdZ z@c=it{h1S~f^Kd>BOh5@7D#7&|4XVM)Hp=b%kJ>tD5Ek#fj6k!lywTS^m6u4Qtph( zwb6z)pzFHYy@Me#kO0-hVOZV-C`wT!fW1{Q2K>{MvDKA=caB#_dul^x4Gv$^rGFsc zhAr!NKCK5|TQQ!pE2}MSePmNyRXJcBW5Lp`s<>`V52idm%(dpS*px(WcgEN@c*Abj0=%keE%bJ}Sp zu>4aHh7c=>FT67s5p|LF6bmI#AG%dlW% zsQjq;6SX9_{4*XbWC_C&Sl&%7L}r5yq3>^Lsk4}c(qov7XV8lQ_}AY3&Y7A6?cNSw zD)FhT&Of$CxJ*^d4wxyyYZ!k;GtWzu*Vfhxd!TG>;85e4T=>7zPsbd{O;{Ru_(VJPs9bD>R21S5X2`tP$ZZp)5Kax z+oVHWHbghv(qkZZqoVOj0-(hk3uEs0YozXZwAkVC&AQHj8za$xdvxK^+B~(C%1#1P z?!I(MW=%*@N5oT|2ufyCL27C#QW!zHUu?pfk^zu$A5OTr+(32j`<(Lx#HZ@!a()`s zh6}9_6cHl@Qwt_~)zYob&m*7fdSbW{Bn{fmD`M!b4}0O`L)Kt`kwho1|78E+fq%`E zf_FBtpV1C-BaZkehYYP*>3d@xdf0|Lsu&0ta(mwRm1K0NLy+ze_-`n=Pfh>)=P41| zghpbLl72kn{5OsT4!(p)-t9~}=0recJ?mf{F^N`<9NV@r5J4bnEiUije?R_4-Se?E z$7~uJ*Uz;I4Ix9ajx9 z?Bw7-q0(>UJ!9ij54yFO>n)yPAp37_KH-DAWQ`UL>kGE*Tb_$OML)C#vH_X`uiV7EGv3^{6ac-3494(GYk^~syk!Le;3DYx}j1hS~8h-dpLQ(!VnuzKn_HY$5Yn9z_g z+#3iBAzDNSMj*Ll@J{C@e{`iGWPJJ4rdk1|P~;~f*pGvp-PFQ{F#^P%swi9}q44iZDn`S$kt=u0$ENYC7! zV`)e`Op`u8rUI4-0qY!kQlT3*%?mKZ5);=9=5#F3zjGiiM^_-u@h4s8CaYA8(kyvn zvR&|dJz9wvHti@f+j_}e`4l=uB8KU%gY|w zBQ$xoM{E6=X}XB=SNuS_XbQx(r}IDBPT_EL5;Dn$s1##Fh@N+WFk+jS!w$@_+l7SQ z{v2Dm$Nb;5cB2s#_Z%8h$$5w#n#t-IqX1hk0P0_U{&h@tIq0YAEh9kWl%)Jt(~V~M z8}c$p=SfHu1h;c>MCvC79VOzu4DlA-OswrC8Q!B3y-860XE}i`F^|cknj|qeTF(X_TgSW}G3OxgehLImf=mqEK*V6y07%Q6qk*{5+11#=}Cs`q)j6*~AQ- zCL^b;1HfL312f^Md!#CAr)4F;0xu^mUFL2J_#AzH>1Fl8V$+0Svi)uSkk zA`c+x!^_`HO=V&vhQ8r?(7{?;bOYQc=etjFfyf)KOF=^~rRM>7FR&{r#yDs$^BOVgTfGtyAzTY`16AK{9Y%;9GfMi6In zAP8$gehXnKotWK|6+&c;3k6{P+Dz&9Avvkx*%Hg*x=g!ghK-#h(PK5R}@gYT(<_y9@2tC zRMD&Yh$cJ+604zH?H8g;=U@&ZkPSLf5W?f$ROt?N>jUR*`PEiueeF7ZF{F z`ke+P0#(jc3xhJV1_u7ynCes?S(3pY`ds z)6~_Vv+!IeCy2r7# zeoqNrr|e>O-b5{THqdFOx4!=bFp#I7)Ci02R4wtRfU~XfnKHwi;xE?M9#@B6k1n%z zhlU);FL+87-Kjs5`AV#TU&T`LaX-{@RCaW1tkZ_@YUm>q0c`;n&AuxE8a-1^c!6>> z&jB|#|2AYXPh%VoNr<3S39cliaag5}La1QOQ#2N3ia_f_9supD5BwK;ihsYZv%l0y zWdIj>vb)V6bKE19bgptC1H0=N%7P$thxQCoEK6&@2PUdT{Ffz(y%DpClvG5Qg z-xiTVoPMY3C;o#b9=K2}kNe)xN&8^^gAzFJ=gY4quox+bvxvg6B;UT!zx27-?-VHOvi$R2Hgm$?1wNV$J@wGG`$(EGg_ zx|1XE^vsvNFr@Rhz*UKk90sbV5k6pLhuL!_aGbFe=vR+^(9i4BnR-{={@3p|pR|3g zhLtTd02Hbjac3w6n>Nb;Q_@^d;rf=5TDlIxI-U4>V4Y6?VnVKjW$h3!9F-dH`v`W* z!>w2qU-^w#p9ypgyugmrVS~=1r?gCZiXX(-7lEn4Q9_-qiY0`si?nR#pq9VubTaS9 z$KeB(mL1e|3+q+6IC}H*(^>VlK)Pwi%c7k%b5323J|ZNN?1=uQuK!E;4=;Qev1S<2 z>DBPvEAN)yNwkPJ2cbA*|ofm0%>ft01_CY?DQhW-^4er*e0nW&%FIGes-<2dBi4BCgxg?%OLA0uMuPYdNa|HV>Fi`ij{|83oUZD~lk7ouG(tTU!HWMM zDGfec<^^WTl6!u)*H}8s4Dj?Um>GEE@}-E5HtWvC04}5V;_N>(6Y}H6Q$df*UAcv{ zv;rkHs_olFJSCzv=q<$~N8vF(>>HdB`yH#pMBB&p^ZJm;O(YH}67T#E@dVn0Sda_G zhNR19>|q)&tgf#1V>VGfVR&(qBALC#R~=-y69UNKHBw(c@H~yHa>>{2UEsl5ZERjb z6RGS@Hd66iER(=e#M9(YMH&p>aw!xYQc!FM;@GZwnnx^o4pvGG)`_g*y|R=6o*>lHk^Pj`M99EnwKwSJU{OHZQ{h9Q4#fL2?+^l zu8Xzt3s|Srhk+RuiVVsdA|q`fPc~+ls^O4SbKWLf?ucNCZvA1PkbFLjOixq_~vn%B|yZ>&HuO@Ipaok;f{BP(4jlu=W^`GxqZ{+QeC zC>^39%{rk=VGj;6ApQZVuB~_f`FrsjJs%Ol?8}F3EZ8wS$j;I4-8ZoxZww3)9{EaG zd4F?&p9c7&wYcvZbH=FG12U&ybFD;BqEPl{Kk8;lRne@gwI=+7dnzL&-sR0LPXoYE z1=9}VK}T%F^5zKnHYg2*2pT7%AWzotN*HiT<>T!el1+;&(UKt)D*Hf7&hhf97tf~| zU6RL*Ig){;e_$aTafjIFJ(j1Ya#dpY=NXA>;`cc3>I>yDO56HH!Ii~bAFvQHF<9u& zsw)Ru-5nbmLOa1PJ9p&KkbHfT_IEh!kk|~va~j8kA6d}bhWhUG2`s)X3_;g52>o*AZalrygOwaBX_jpJ@V?ch`qX5e?mg9*9SiP0W6VI|EVB_dtP|Bb z*jG?xO%zB-jVj<9U&0ep+4v;Ef>WsoQG>~bGbz#gTKW84NScTsk}P-Q&bh-xwRHS6 z>f(h+igZ6M`>sAr7%;H3f9Y`mTgRI!9^V20W1<(ol}48f7mw6a4K+M0iJ$hOcV*jz z`_!R3X0i6LmL!bYv?JawdkSN&``-HJX@Ap9r;54+3_ z3_wsex!F0xnI(xNkynd=AQ{VzH$}a~2|saR2mfmidNKxiYL56Wk^BW}DK*(F_Rs6V2jD8~&O2 zH$4%ubzD$TtHOp8q$uX272%#MRwDdf#Nss*z-gOmv|&6O1SM(5Kz+tSWWR0cpL4(m zkGvA4`}wxVcA`7j5aJAgd{V67SgN!5VDdXbpbtH~PmocxcK02`wO)U6kjFUUj3!+D z-n#(6zUnyliP%6Vd~r~P^RIC1hDLY)II}t%ZRs$J?hc?vepQgx{&-KE!41?@kwwv+ zkcnE`$m&noS@tfgE9XO;4d0IWSTMARHC6J$J2Q` zUGG~iKXTUR5!WOmwBIG`FwNsj5m>jC+lQ^=FD$S0^%y6Ivpxz|+>`jQ8x^q8K)JVz zE7&JCNgUhsxpD2vjK-{U-`D@aEDMHAk2wiEWQ917=ZG@AV8G2SZD!3!xB7jYTlwY8 zD02Rs9b|&|^<%|X3-(4*g;J%~TSRQ3oI>l82nIqj7UCwN(knQYVgMHEzyJO#(-;|r zr=d^(o)3Ctr5ezjA(jU-C!)L1$<+`Zwi?x0Bpx89B1UZBEfNspeY3{$w2{=M_zxR^ z3RP^)$Glnc#)cLYoc*d6@1A}M$WBa5ouGqh4v6t0N2M->wV_SY#9F$D^^Uziein&% zU=?oUAA>xwj@#1aP!d;*8(N#6kYuiWCK(QF`$Y&fIrYK;d!DMNKVLa&UzMm6q{Ej8hWCQ^<%LL%bz$sqYD&yygsbA3?>R*~QHhv`cS zrGRDg?gf4za}cAKL&);zb8>LtQwxLsT!M5dnJ{q+#Wc$yB)*DKxSqM6M2$RKSHz+PdUO4w@E35AstJd3Ir9)pk8Mo z4P(ZrVN2E+e|tehS*y75j=^JTNR73;4YSmcRGJ(EqRC1)_i55kR*EwZugS&6?+Y-v znlvFUjyd5>1`iQX+l2-&n{al-vf?6p>phk@Jv+6!8BhR8s1!Ok8#da-(njtYwbX|J z(g{0%4M5Sj*LzxE&hM1B^t{3-H7x1Pq&Jb)Z;<-B&2#-~^F<%XgM=@wRjkG~Zru*8 z!|h&>7m;t*(c4Cpe8&Mc=@B7caLHkS3oFv@k%saO2|WqFxC#LZ+C66G2PTMfO3UMo zbULL{SQK7UQMe77__KQh-WiVFcO4Pf(rCERgrsMxIP5eBe<9kw>_cVT{E2lkCYaVA za*y~jJA3z10ewjup~5%I6WOuBP;ZVdX%hk-u4Q;)0zGKTes{Je`hNu=$6;r}Vrs+6 znh>*?c}5sN%##uC|;25ZqF3Iv$Ch*J=0M zZ2HtB%_UEg7{#_P`uKCm;W(`(kJFqVmfMTY4*c*=X{@X(a8G&B9W7N7;Xkdh{*(g# zbtNBn*LF{z`$>e0C=Bg%rxzF+yh=IZ%fJ+3W&#{4s=<8W1DNx-=1*U*x9Tu-;35Mn zfBaOxB;Q>B$gbsTxniy|pCN1Idl8gR2$jkM8h1VPALPnq3&dO1x1SU~?a(3C@|AoK ze?)9HHZto>ws~Fb5|>V`nD;4)0Fb>MzLQ0^pY?D+(erv-A>T?BDT79q3Grb8%D}b@ z2tELU2MVs-9!@oLHNdgM=iKlRyJ#)IMUj)jOKW!Cum7iXzoQcW410tNO~XC+`q%mi zNv1;OX*LikQkoLw0*oQ&W<@nB{^Pe=Vd_-Q|L+CZ-eoH2PO?VH@Ir$d+>?Kq6dJ^H zJyn@3VLuq|x>AxAxzvMhvasxU0uggBSmw~CTxrbH7o@N$TCtjs341Ii=)L#dDYUQP zxgc274$G8fd-Zqha6<)pYdX#lf@BLH+cI9V<9QmJR0b-<0&lK*EFXQ*cM6dk+S83t zKC;1g++eRy&d$}&?mx1hUql3#6}4Bz@T$kJ0ztVh8w4}B5wESdF}TJCE!hY; z!ll(puXK-YFcmFkEgQlF7B4)tea|0xC<{3l7V_g&ifHSaFOaIg#o*j z+oj%;;9sf5Q%ogXF@OH~+FwmlOe%!dR;?fr2~(eoK|RCZbpX6JA4B{@H+`BoUkJ{MI6{QGnLV`=+O z(sQ6cj^yD+lE2~#!$+}YwDbv;qbQWSy3&zZtBO`7LOS>^n|1n~XeqUFL7jifCGsD? z5A4(Gx^!+5+o}4nX00&v+4%xqv+%95{qkqIv$d#)DE$0kD#FRs_S^O;MZVAH=<@GX zw?i|x<|$(9}$(`B}Se|C4L??$>F z{tiQ$Cy^K_6c9IKV7UJ2hI%p!6;Qnqo>s~{)k2FHrWF@P;!F^Wgo%Mn zUVu;7yJhtjtt5{5j@168J3iZklGcT;G^u4o1v!vTndu~kV|$xXu%Lz?hLckFkCHd; z(uL3m=iO+VJdnm36WoG60JXX3klzCTz5&8Tn%L)SLr7^6X=M>;U``E-HCdnq)X8Y9 z(UxDDE*21zCZUFp2rZEL#L&Bi(@3KM%og-!28oM`q8KePDSECg0?foYvY3t6nwp}x zhn@QEzVGKS)lmaMQo8_xwM*2HUnDD*7di$8?Kko9VHxsA`la`itOH%^5+nv+#1Gmi zu*ha^+G(8?6EI*-M+4iU08I+=9%oTmt=hQRzy&Mtsxx}DK9T z5Lkx(o%Bn~?Vu&E2So#&puHGP1WfE~jEvx?2*Aw{16l|&ZevEjIl#{Tuyf$ZSSnYA zhl_Cs2qIcv?eV3&y*%umwFW$Cgd!m}5392nP3C=>7E^lG z*BrF-rRhaO$qO5;&04E@Df-Jecx68(#FvsyD`*}D`(%@JxLpct48=()o=Q;9-oXz7 zsV*VaTE3QSV9Qe@9G?=h{NDHX#^kW3gn1(#<~|?%<%i!}Y;V8Wy`^>Baq_{j^Gd4L zusRzX+hP^V8FzBJxhX3vi##DO1Vi2OfB*WGS|DTlg_4a$g`S{U5)7?K&6t(EJE0_m z<@ss)Rt>-PLM#!6liZo8VXlgGZjDN0?LAw8g@+6=J%Q)&A&bxt69#vAmJeI1?(Yr~BrA?+bzXaSmjpB{|OnN)8&%*AL7dM}CmPy=>hTu2);Mz9|2(|&*iMT$wgEn)^Pom@!Q zTdu~up6~XO#Xt?#`Nb)6`x2rUt#P8hoT2M&)ejobUm$r5aP4eL3dox&l7T8M?TzfY zPzyJ}GpBkw(3~H`t_BambkfYJ9bX{fp~{|(wIGDq9UN>ZlLw!xS%3rSs9oxDp(c_- zO+u8JwxN7GtNq`|hLhGt8*3**%$}WYc!pf(1Q8wucqu4^wMs$=VPKS$DBMhKRx}Mb zZ9!^G3Vpk`DSavFPx66Bm@~h#|2=&o^K`$?gep>FDXNeo!=ac2iY|Oa zeBaVv${H%Xs;>REmzQXoCND%F3U&V7_t*M>mxRt_j+v@RJL%tV`>ze_zDB&l_Ftu# zzkSuayPK#I4s6e_{O3L49yMy}MMPL)*RFXZK( zN+g|vc=~%Dw`oEvsKJ>B^8OUXCm}SFbr@iKKm#jp)i0YRdH{5G1he!-^464^y$PLL zjJtFD^?Zq?J37zpbp1Mm;xDoE)%oBeqawWqyT%m{2BaNMuHX}YPWtUD(M1vwTL`5S zaU1u0eyVYLXS!IWD~@QEit#W$04yHyL(A`sVe}qJopA+33`9O0k|-x0rC2uTP7$iR z4>)hQMX``8B+eV-r=TahCxVv~e-aqR%3!d;Az1i=$**KkFZ5>Blo5iuN!ua-$XjI3 z@@@T-kjaUH>$Nxu*b?*7@jr)k{0!zzpsuYzKZo}t1uHx4vj!_iY`+Hko8)Q?e>gS_ zgvm{V<&XE=kJVH}rt_KlZr@?NBEU%n5QFC_PVzyW6M#?R>g8?v0t5N}8z82RlLS1H zzDWvhypQf~88!RUU;#kvIkjU@Kn_^I--Pb3dwYdRS>mo)II(l_!_xqzQT$WpU+OpL z|Lc_*qaFW(`j@ORag|-WYS@ie?B#_>S_7xcUS@UE6?m)M+nZuV5&r`); zkae|fIiZ+Pgli6G#hZ_ls|{(A31{Q31efh)lx2c^_I=D0RTL2c>=8?i!UC+Y=U&c$ zk@g0yX406xi_iHCUyEiR&Sd6& zSu0);a;h$T=hpA3`wkE6UQ*J2_Ej9Jt5B`0`)TT7=tZ7jf93RDZs~x2r#0Se zbkC6L&nK5SiRY7n2}^h|5z?kj6VZX^3Sx&)0#GdTl=Q0bv}5-3Vr#Q`4ETV$NbfsV zzCb$o4+gC*BCTn{+WD|$x~1>F?p%go1IQGVM~OdX$fofY8%B@%KZ>q95bFPpe{SH; zKH2l^&DRX!&dMn}k(I2Fl`ZpZmvLv$l1K>|*`hMf$|@0MuZ*l@``z#VyMON9@AvaO zukpNeKk15a7|H-Rs;47E-;7%ltbbOuT!Qx9r|F4u_%AmOP>~Gr=nzn8{4J5OJ;Bk& z_W+!~b8?#x)p!SoM679Y3Iv+ifwuSP^j9AH-gIE}f4#6sKv>XP44C~>)ZpTQg>0n@ zW1M*un_ugNgW;&a5-JT-Mkb5+LpC#}dQDA2ocL2W9jw3Nbv+=Rw=aB_?pTr>V{}KZ z{$(xI;6IoqSM7W=^wA`tbD^%jyZ0y=R5QWqA7iito!>od5N6dB1V*RNIu=kB>nXNa=ftHBpVk(xh!F zdfZF!h?)M7T1yNtKB=`DX~mT6T77r|Vg2C;k?~X3dznXx+HqbplEy+~IVBfu-t~)K z=#*@y*R#u@ANlrs8gYKd|`ZbykI15K@o|0z~}jnx#oE z@OLSOVkBIV-dYih!7J%>PEYgC@`?mOGvI1%qejk6#_7 zS!my>U&!jbey4eOI!?O%@agl`YM|vJHpu<9LPJ> z_4UC`^>y?9pkpw50kwsfK zvA8svvN~^KW30-x*gaN5DpStBHN4RMp%Q#Yq%Djv@&qEF|CxaMVceI!2fkO?6%asX z+i!mwB)ZDC{I0fT0{u`MfZuY`W@n+sWmHd$Kkj0O`P*ceiB2$xHr=H~Do2}vF&QNc zIXsEzz7gI9U4O3NAZPa7iGrKIyQR$Dap8e|uGh)~7{C_;5Y8U+W_E{zv7CH>TlfD9 zt(({Z7;|6p^Ym17!Y{y5h?e(x___=THK~{lKSA`N1**>PF(W^#o3lVpWZF{P=_%2%%kZrTGO(;R8$wh`B#oXKaMR>hHe$S2a0FhmS?EvcHXVgp<3~)jx&? z{U9yEq+8!R+AeDMSv)lZnI-|U_0!U5srSC1(yfCimbsGyj>3fWEd@bcFp^7?2FFc@=Xl?5S2-FNKa>YA8=?TwKKwqw7Bjli?j`SH|Io=4{VNHl!8zS- zh2R!?3|+RoX)kw|CeWYSe4a>rk5n+HHq@s!mod0INbF$1Cez1-2lVa2aBOu8a^*Np5L1bk zVgLkexspM$0!r+_xZ~jGX&Y7^1nP$>OO^TiS{f*^eZja_*MN5q>xks?;^skMxKNaV z=f^{~exY_zC583(ihVoik=2ne00P~|kBQ}TTEM=tG8P)mD8K*XDV4CFPTn*cQy-YI zC@gaqeUK$yl|Z)?OoRoob1>`Gj0NT%*Ydxslu?=$vV@OUQ4^~6{|4)4K`KYtc)b?k z;8Gjw5!R+Z-CIymH1jc(cx@k;o-4|on)^dT-~|YVvx5ZRV94@xlhbx3BT~3qhT#9L zxVKk$8mw+-S5eh|l#AuD=sZa!BjSr12Eofszw2r~WsCYY_nn9Le$@)!&S>q(@(pa`Gf2KS(sl$e?}Cr<@ubC>p<% zfBSZ$YElS}66@Y&fBKhwLWmow5zV;IZ6lHPF;VIjHJ?LCDOxSb`Q474PJijeNGL?ZqwHB{G4t-`$F2Jc{O7A zr~!4O<<4D(l;r3sdgf%<_|!ZFGA8wKXZ9-oJ+46f_b+9i#gvN?n~spbgM-#~2Ne%A znFALPL$R#LswLf!cF7yBMdVdg!(87SBtnsY3%qSr{)#rrC^gn#AMZ~-Y@}Tlhw<>f zITAW0KbjQ?{QLX15$g^IdSJIi6>VCvr%ygKdGQX3JO25vwQX*ucq)w+Bw%L!?18fe zJ7QV;`7^1QjhD&f6h}zw+8AH`PaWy2@=OSapE?-A(6V?YX~L6LLf!$BdbpXR@4tW1 z`@MYG4;Hvv1|{^9_`yMeu`tcIiTr1;h>^oogh~hpMBoM;sV##NJb8KTUAr|M%?%B? zt?7}{!Y;+%o^nko9msG};+lGXL9p@~BTPGK5vx8>JpNC9=lcZT^Pv;IIVlg>Y!6=rN0h*8MMXz=-Mc8HT5GG6tlxtpP~_N zUNaqCGPa)*+^XDNGdR0f9E7tOk!@j+(wNQApOWSGdbH8EY^Ic|d)IXhzi+n}t^y{XHEWIrmtIxKcjm-IU zb%y&49Vu0HQ=FCo1gF#9n~;92eJrj3oQQkE37A$1CB;%l76iacYAW(I8C*GGAud zmuQEuZjMj}7cz>II$^| zC@Y&tx4ij8v|Ln&^Ktab3kBusB>bEjgy_f_!iLOGQ#nrqqD`2 zs)W?Ptv;A-9bZ4BA{^7*f2c0j+H%IQC02J;LWwjgdYHRQY?hI)ud$#-t}$`z?hlv09kTB(=x0mXmQcjc@SRj~>e-z53RsSD1Z_t)8 zb#yE%@k(3YmBr~Bsic_Pbv4X;^Ae3+hG4d?1-tmL2gaEN?+IZRxMluPBd;2-=FApL z!07yUyx8-WO7IhdvAAL3G5YB9E*>XP`jT!MxLg#Lpt>Q@>WCZ(KnxcOe3Q<;hBRqTrHL)JHQ%bQ##%>oqUM0sm>b}HzWwEO&21ltZ^+)Olaj&LglvhF4j7cb{;t6hH@Xg{%t zBz9`Xps>k8Knso4=UQk>wXjUB3r`;&cR^p+0~RPjkNby2ni$?k0&r+v&YiDChExMf zd2bV`bzr_P8rv^E@o8udfB*hi&}H#6bALG)dwwh(1taib{acZ@AYRvh`+Sr;j{3rV zFM&#~%c?gjMF`=Hja^f*RdFwsQ8hy#^_-nRq-jQip8c6h#a$O2R$PR#WpyJeLc53` z*Xh}AiS@|OT+wyoV4p`{ONt+g>TwQZkl38eT3gGhPLjeJgnXI%%zP#~Kj{{IL_UD0 zI+jTU1l*~2O3RMcY7aBMDp{#kPY!U3@RJHB)dGIGhCPoxn`?A9hOk zk@A5G?SJ7daRB_HBx`3HNq06?>$oPP`TS(-$0wk5{^K#af7o zi-WZho*U%f7F=X;s_{=h(84w90A>GdT!M$CY`v#z^w0bRQaP`VJ~{6(neS>WOQ8m% z79qJ7nR2|#ecwk`8CRZVaemx@5+#@T$oAQG?St&Gg>o)brA|h?12m+QtCBNvf9$ zD-;9WQIwGq_M9A$&HCfa%B(3seBel;)STQ*Xx(2utYDI@nYjlV_l60OV+#M0s!0a; zEmbK?tNlT_^p*5#pR^Gd+!Rh&1CXfQf#Q>`_kKQWUkY0y){G+C4=k{KH?I7IJBl@E zkqTy=NIm2CjxborJU7wy-aY*jC?-dFfPwGO-tURL z4LQx`XL2lc<6{!oC(9htE$EPF1|hI=Ut1c@aB%aE@TfLO4VL9&JKh`hPzRlD8vSsu zc$~&_xUORbLf$PM^SBu0KrWNEVF8Hklfn=|o8)JD!UthBgT7TKlYi(;_ASGPsGADpVg)vS#X|KN@^fsI9$SGRf4(Y{6oDyXD#&toV)ll5ZSy*hJ7}Nt!In zfNUHEk@c2;mp7LO^^iW@$0oxL%ClFt!W;3{Sc&$(p{ZX=p~1n5|K_p2 zw4Zc!@z1pG1wXgPXr~p02TCq>I+YI_2uUBZR)zDd@157;SGm+^Y1vmRk+h-f|OOfH=H63|w1EtgiJ28mU zMTX%y_zsBpt7XaY>eC)S1wnoUpTj?~I+T}Dm`#m(*^5Pval>wt)OA0+V?hreBWrA-wH2>iJvsX+IT9IHkMHil-?*b{b045>a$su~M zv2@!xIG@em^&BW=(Rd1&rfc(mA27xyMOd?usBuF*m;CKl!vAA)<^EV{n#*P3l zVT1i6FwN+U^OXfG|3ph{ot}OI_P}jXlG_E=ovKc2`u(0 zRN2}lid5I{XaOXEyS(^2_FCKRY?94-d?8Dae_1yON?$^p-RWYA=%BuJPyfT?I6T`m zh?7(1tE#xa_Ji~SX?}}VFmxjvlukLYvw^#1}^@T^ak~*65y?F5Xph8DKcz z7wsJ1N=^{T3>JS;@h#^5q?RIK$Ov`*Mn;+Acs->|NLpG^HczP(DrFas3oWgn(!Z@? zCy#B*7keW$|6r_JrN-b}X90s2*3iSA3pU`h{t3j30?W|8E=#W4m3zt~t11d0Z-EJ) z2T#%uI5jCrGH}Zl)!-kX^vk`^C2J$?bmM%{#DhPM$*R|%6dx`)N|=Dv9QOA3i4v+x zbfgGz$6K52@H*H#Ib-BOu0+1&HE#phU)^rJ2d`d8xgf&=zr478Y7yNvpj3?>8y2r5 znIjpq2W9`B2-N*^Y4wrDevt2|sSr;Wr-nE5K)}Sk@%sApb>;89Pq14w0J20=a;z6q zA|vrOB2>%v{buCl+Lr@?sEXa2=CGwP$|BWj8`4J7Fy?x11`Y*S#BstN- z%huu8$I@4Fm3+TM@d+CraajK1_tbDf(;8Y7&_rx+`|Ui2o{Wo6fC%DHpyj=WB#IAf zQ+%(N;+lY*JB_~|v_)%!;bq0mC?<;Q>7CHP8xFeKDcVt$(K_{%R}G~p{KjK0#^c>X z3*5#8q~laze6&EmS0wL)2hjx%MSA=U*z-Q}j_4Otqn4Iy7E$t9{Zs^2BvaT_bJjvN z9PJQ$9t-L>IzCm4h7r9xG|rn7Nd}J7nkbqSlZRV9sr6`E+1rd?-Y$?~wm#pdUuHpW z7BpDds#TyB-5Ta^QIXyn1dKp;a%c}hhm7i6d{~*Hn6EvejncmU2e10{=CVlro%kvj zmaX#-eCU_(>AQ9#v0B%)o+P!BgYnfeP~2ntj5$6SQDrO6pZO&MCA@p+35vMe^@AJp?Pl92xup5YIL5GLwMl_|u%~7;>h7` zdiBMYa3p*~8H5~Wb__ly6_r|`|3~h1G+)H>%-!p}kH7v#M;+d4usXD+SSNaj{R^GU zuK7WN_n$FDe@Ly=-gy{9^Uz6<`093!LvdQKq32snT` zVQ?vd^#s}RUI+Yq8E|cEZcrT-A$ZVUy+;$&d>-GDa@iwwtwmC-UHOpi7#aZQwatc| zwGBm=(*S=5oOA|kIl;t; zccn@k2owXQ+_hn+?eq*_9(%6?1;OE$4W_FWz0?f&aM|7)ijIa3Kno(SYu1w^*&{Y9xA zoqYfPj1^e`A;;Vc*QO-cTV)@`BC0RjbR}h<`OVM5c`-ivGPjLVX#;E zOgZ|)Ka#{G``I0U802%(2ZC#Kyv|K9xG^w_Ye)mq9fO@>lPX-8$#vu52h-PAQ{-NM0x=#f`p6Kz@XR_KPc# zDBuYN`w*w@?r{_&(g#L5HVI>rVPZeTXWG5V{a>D#Jd;J|D=K`;NGGiGqj}QEO(&Cl z>|+w^`>T(NX7U4-UI_~#PBZKW4Wie~N_kb1F*lNd^tS}hT~7dBM=BgEp!9di8|L%6 z&ER$^D%0Du|CmTlkk|CcCW(VQ?FnjNx*s4Fcp=S}=e$n4H%tW3jsB!Uno;m9jppyA zr_cMNX%7JsGGk5`uScDt_TCEfD0R5e+njT`h3BSG|H{wr3G8I&%>^r@Rni|j;>*)t z^=Ap$k;+HHfDd8jYJacE7k~%5{_Tz#VZYdQ4cO!6QjKR{+*3KEx;Sv%RJQZYxPw4y zJp07GMRav^70JhPs|O#he=Z5Xf1J3gMUEVs7LyN#S5e&fs%9lT#(npoq<6W}eO^-m zfv$tXKMo$GsW+P&K;5c4&P8JE zzvw=C^oYC2G(CZPH4%ib!jgo7yJGUM!5TZRRmZbL7>HsYy8-- zPVyKw{*_SLi_`CwB=RYZpz{<5#lh<2*bxFC-QFQm!{Et@IyES^2br>X%E!mWB_yz= zSwhH&7KZj%r(?ufji?pR;edG0MqUUT)~0T`g|RG%W+c^v%?BX%jT9=scZGwAli@y> zK>9CWG>Pg+*;Y!}%eZSDPmNae-aoSxo3(Whq5ZSTo3HY(UAcy8Cj5ApJ^x)YVM*id z%e#s&2EeqDwzOXuJy4$U^O90y+~^Q~jDYRKGf-G+Z+n<;B8K22S=eLG%b<%UK^ROB zfd-`;Hz1t<)ZQbfMJWs=OOp>6Ahg5#l=_;3Mu>VQ!b#-4rFRNJ_io1NFo1}$oc* z92pUt)RYRr#3QGD2^Cr1`AYEgLrM9&BO`@&ciQDYo7oa->RVfdMt z>*8voQWS)3id$zN#9xz8ifI}XfKW-n0b0(Y%4p0xfMWWe5-9Y--{;{~WdpCNS(?Xm z|D+l-Vf~SPFxjm=+t}Rfd69ms+rInEY$%%>{gJwVZPYcrlQOU7rg@YTY+QfJ=SyMS z>daJ3%KMMI9pTyIA2{1cC z=j0WyyeRroQxNU@+35NgUToOVH|p=l{*dJ_%e_|AiET6PGeJwQj(W%TZnsO@{>+$- zN*2E}It8O^y9eL@1zC0nV-yYM`_KS&!N@EYf%OZX3wt3xNx*OU&( z2xcuwUt=mOf;RlWoRX_2JQRlztVq%9Zxa)V!)jr{cIom9WVQCOo^$rb$e(quc}vGc zK&3X~S{a(O!?u7^R4z{xGAExAG#&?%O(r8UFLv+bDRfU&au4B2^wp~#R#7m9CaaAZ zQX2Zb($c3buxB_|;p?23NBh_hl)O8+N1lQ^OGII#T$@C-LkiWqOP-qLdyU1^B?K60x+L zxssCN1*t%tpi@f?)9SzqUl=rkTH~BGeJ6=0$SM;UubU`9+Vfrgu9%AqnDEU^OzBhC zWIaJZ(O(KhAG=?pIQkq@2suj|t)6c&l~$ZY&JD~kCt%sGe~vFwzRilwoZzuH?gUOw zH-Ez!xKLi_7_ost@dlXfR9YGpOPPJ(mX)h|O9DK~hMA4*S;uY3F?zC=S0f_Uy=#+# zcEFR(Nkjn9PwzB$oJ)y~%{d!87@2F~!f(-$l@mh>aS7OjM$g+h zKK9aix*Pxc(Z1ylAN@kBxR_h=4}h6R+Bjii#H^80D#;?T z!#|6vh$AD?Cqa>80)&)|5$mAgTp7p7N=v!ApXv2Q9v?z_lWnV-UpWTSvz*D!h=<27 z_5Dn4fS}TeiqdqA)aZee+N=HIfA>|c8_sQzomyg^?-lxROocqtw_M zdM>l$$&GqnfQ`x1ewSgJ`k!a9U-dwodfnup;MnMTSU_D3rLwAuT&M1#tO{n8*QPw3 zXY5;&;YEBaxzJ3X-j5M1?8#4ym8e(xe2T}FGN?tPvTE82xPuw#H}+8A@dlZyX;6xx z>&m1Lz(_apY(^|?mY(#h7xelB@BQ*Kaf_$Bh^pXgM=&^izXzW~2J{EL{0uyqEFtl{qExQNbZa6`NEnhH`4RtuBWc&8gwp$V}mI1=Nis|DyQ!z=Ci)h_(fk@bEp=zPcIe-Ci%);z+O@W)JzArq~X&^st}@t}Qdq0XRX- z>-r+?yiOqimbntKqd{jY|BPO;prkEJ-U<+qCFhk!8`6%we9bdpG~PZvyBl=XljdDMgH z|9x3CBhq2Cmo>lyx)IIm2W$9OFi@SP%)9FD6_4JOd_71_M7!*8hxxje(9_4Bx7AEx1(j&_s_ zCe#Epp|AtaS312kp5LJIep;t+F;VQ>K0ht6I^KiOkcB<*@!elZ59?vkdvM1gTS~#~ zU_<7V-K!ahURIrw1(!aG&TNT!C0+^~W=mtcxu+;MPO9n1u^w(uLIwTa*ZKLYrx2Xmx#6?RquS%oYJ@n?#O>ryt;qVTogb1q)u(!t9j%OlpszQog{ zUYEcQWjZL)55GOFRkJ^}uXfh;kbxp_LC#`NPQe$djL;1Bc`3NFW&H%keejr;W}y!u z9id&4g#sdfZXWNM-W;`A%W05!hy)1fGtmIFEU^`f<`OaaFr?U-7vW`_DDjx9nI!Q)T zSp6f=_^ud?^nWXylFfInQjh~gPd*-I5N7;F0U72OEq55t-qJ}X+rfOV`iiov<2n!W znab?=lrw2rs=nrtIXPd`;-k7t2W0ucJD7H;o}#pIiP)^njzXhU)4oBnJq;g*4Qu8a zR|O-KF7sO(R#@N5{bVZ|$~OkT{e63O`n!dQ%lw;rR`V;c|0KRCfY6Kb9@$95bq7TH zJw86YhmbGDdw|_W;Ux01!66hw#XZ~fYuKEFuUEl0mX>QO=4Y2rKS+iocM92aY{T-P zB93%2#7L)ohK?gl8$}XET+7+iXyQ=WNBuLRP#$x_O@kXni*ohAgk3RnyfXIyk`;s` z3%upfu6w+vg&`Qep7aQ?+Cxb$X;_Tl*$p~U<(>Hf9Ne^TGHTZBbBlu} zHh+c4kMM6{+05@l`)QZ`TPdS6-5^?mQL(GTs1juz9p!7j+*?}CdgF9px2asD%YWax z`z;R^5~$JYZN4{2B1Ovg#`LSYq(=}YOQb@6Jf#d7w3Vcui7xvq`3eDH5t4M>SY@WF zdloDja^maABe9)K8!A`-SXlpx56j5lL~FMFxtJiii`?1L9;}4(kic9$K}=qw_@KR+lQ7I?u$JQMvW~;Yj1UO0h1lqqn zJ3wGT7I@7ozLEt_Mt_2xNL(0~W_xW{aB0ro1AOv-n>RuJRG)^z<$S*Ym7$b$6cW}6w( zz?m8yJw==pl~W$I>co@CfVW^EoiT<{Q{Yeg^WoF#NG)KTs`#$}HN%2~3x|M;=ECzv z#YT`pu#0d6^e*zE7pm`8WoX@AxDX`PUZ?|2dex*l5Njt4t$8nZ-=jy>3X zl+{|kU1hs7YZDY}ed0x|Q7Tc;q(%O{17Mo0Nrp8Vy`i&oC)@9vNZD7$)2D$uHce)W z17%eHhSY=wRWw-RNZ5B$da;k$Q58fC2BCjjOj|v<=cKJmZ1QTrEn|l8jdy3G2)j!l z)OqvxnV&dN`a*KpPW^I{ggs8=7Xu~J4YqL$1@uEMf_&Iya#%zDXSi1?17um$`x;n) z55q-Akg6Ko&;T~ZYwvFZ$B4s!LZ&((3(n|59w9ak7KS-9({yiH6H^!ZqbaFu+Wd8k4@iO|MIu9v$mR0yLnvo zvZq=b5JeI{SkA=zzObFB^pw2NnQ81SO;f^^n-RYW3ZdR{^OvkWxu?mM)E5<~>M^#Hy~48lsTU zH9kksurz75w2Wi~ku+RJByF*HS0p| z8JTgzPYxStD}9N#PPswLRTEc&k5nPLeo3ywk zerO*9J)zm`eu&toUu#?4C4D>Pmo5@^O#qh4%8Uc4fk6%@h@ikn?zdlGkmh~H^#|?KHgYL$J(3Ml3&X=zRXrG>J>kPECXhl1#tcVAC_#6DK_i-tfOuDLh-eKpr5@W63F|C*G)q5XA!iO5ns!8fq5rD0_p?7J@5lVQS zxsK>&j#2=(#3qB-DgXGN za!bkKTuXo*E+=9{8plLp%lQ+LV?V8DE0tEqlN>$Y2pXpG;Gm*D_l=g*g#MO1QHBW| zG^^tnKnw%NSfhM{&}T{og@xITqnx5!RtXCT8Xi9!6Ladneqi~PnsA@@39$&Vd#$s3v6B%Z4JljI5v~1Y(xO<`Jp$@^*Jm?4Jw-R1 znk|X-`10_CZ;D1Z&?_yU6aC0M=%AfS`Ku0@Uq5pnKn^0rXg%LgmKv_n3fFiD`~IKklxigGq;`)Up16F1sNz%=c6ANjCNbtDcbRD# z&l4=vC_wf2S;=p^nRj0>MI~X>1QQ9grYLe=mlNzpJ)EwqYl&sNCXlh6a`4Ia$ERaN z_)D7gQehW0>mb+kCaR%$sxSQvZuCx?0W|75Zs9&O0>clmr401OlZ<_Qbwib(?W@VY z4e-O51(IycO5JsdTIo=C` ziOenZ7%^9}K|BmO6HY2NM5fuit5DpwKNuC^b1@fL{Y9SCPG_!V{oBu$zCe(tX{9d- zZ-BEV?EJG)5ec#H>EA(c*vD+wls@Vk-wMMsa;?RKDV#xC1Hdxw^w}?9dL}e!>{p#q zd?%D-^>B#R-XfMPEmiV9Ej+1-#AfRBeOyDx5_!<6;ZN8)69a|>X_U#jU-Av_?X5!L z=m9+fr;6_u@m@9z$w8q@o)MROuON9+o)oB2z}^njIsSJdwA$we#_(#09X^|0A|r&? z0dDvwBT2~V`%^NHV4cseCvL`j*K5UeksJmkv?<|Bu={yygMYVNonfXOk_j)cdauON z`L+dMSfaGaR9&fk^8OpYn0D-d1kn(@2MfOp_!Fj*dp$>mw= z!2t{x2Oz>p#$Q2sFh*4^zf#KO{fjQxuH*Z;`%?g6M_~R`zKNwmSjWFu?!WKPnC<^D zQArq-Y5;kNWgcW(54Q(E^vWv`L7;^sY|GerrUw>pUsJ-?x7GuMz2cc>)vft<`)tcX z%g!V617&%8DRQKmCiZKo%gph(+J`pVUF?Fcbt96dXsOSt_$+^|50db%a+#g|enk~& zOv~zkndb3WJOvoWo%n_WX70{RRs~3BuwuG@5hZ$E<%hfF1RmjNsYXo4x!H2EgU`{> zjm4C|Sq4!goKsqsPXI#DjxFr=+M*iD8WjLzAYcF3pQMTSD)f+Cit~<@QNumGf023( zn4UW*W?rYHI=K}t&D@E3lW;{_OMihOzpi6UCP(4Bx zme<$SL=miTxSZ}#!Oem^>2 zlt(KKkYDF3cyH(ucSeqpxS_7^aq*)e$8E`#Vj}e$et9$@CeMjXKeL zsB(H15)3;3wAlEBt z-4n-&vAM`~UJ%+UU6WuXbMpUb;GvzAn(~C-`L4Pai$RvxM=0*3R>9&xjSO?P z+u&YOVzXP)3$>8Coh+m~O&>RY?CCW;c53@Bx6)Cxk=-Zi=CWoap>vmAinR38S6HIn#!s|3)t}iwhVBgEK>x z?{wdb-=eTntlw3ljGLhSvbjd`hP_`aA|c@Q8=XQKLLa#YwbGl(e!G9rwk{9sA0V2BIBE48@PC}|EN{4~WLny&D|t%G^eceT-nMC3BFP(r>` zVjl_N<6(>Dl_`~zP!Suj8BiWsyfth*StADx50ISE9D*VnRAkWO?x7wp7xDX(k2WoD zQ-Q{XQ7;3&o6FiJ>uGIaf&HcUs;B2fus{R6&XKR=Wl2d2ccFXFy_ose-yLn<9XnG( z1Q1>?Q*N57iZkrW{9yf&7x4C9ru?BDJ$-r=nT?CElj zQAL-P?gGlq$v>ASjQV=7XO!?Q^c}ZSeZps$+<{f9LQ`Y1bw;m+() zc}0dC>#N~^!4KAzwkzO$lRK;{Y)RAyry#!|O86c64)3)`m3??#biWI{yd=jn$8>4u zhu?i`dykd>hWhz&NNno*pHMZF+nyCS(wROzB|v+fRs7%ii^HOtKPd6dM9k^(pM%sP z+a@nJjcDA_>AAn=XH(Kg3#TkORm8$0RN>dKL#*0>a{4$bGun2lTvW^FNg@Nqdn1<> zYP!xcrO#z)y}b)*L^mk0vmE49OloSjAe&o6MChPb=Xx}tFH&bO>I`&X)b zk7R^MYMZyN}%W}Iq2M`TU+BjHy%|SAu1W2G6oZeF;r0OAd1pXWoVNG0twSp&M z@LF&=H9-i34t%e{Num#0$t0l{Idjt9uIrSNXT_Z_-IBZl^Swoi zRWQ3OOUlS-79nIT^d+%WdlRpZk$sm|AyG^8*?efgjed{+$Q8}&<3p6EFGV)oeDdFD z%utMH#KTJUz$h$oZ7^IwMGu3nW?3m*8FP6lqD#a(>ro0;%8s3!DYniX8xP# zi_hI$tF~Y$?r3H?PJ<97Et<{ayEebm`BhO@dn|w$5Ki8;_bCZi5eyXQom`va@jtK0 zNzTEIBA(*n3{WEcY(I>Jby(%#i+<2B)6ti+KoKQ)~NT(pAn-4CbF7j0bI#s2ct z?yJLHP*H`&rc0U;JX5{&m5G51hiJ}cRtYI$x1U-T_lN7MoCqgt%;QQUY1**#3RFDrc=dtHMx?=3V6d~~{&qXbc& z;uz3l!<@w@8CG`Rh|6;_3-D>Ma4P8_jicsopLM@fqxwp-F5j%$PyM!tXK^N>s@QKZ zEY!XQO0cooyHq|RBL$K$v5w$_B{hjG4uWfyz4UD-6^XzYi2<;fRO4pCviGFdl1;~~DYg|u7cD%;|?<5IR{o48TLl*!+@*D>RA zYgC;apB+;!BakC=AM&(N!Dj`Ki}M2(SSQEY$cWk52^*PgKy&S0#`A1u4sJT@gvP%k zZXTS5KLb=MV71Omh1!7`p03u5!YN!`{3Av@XmSH4j#5PNHKr_rm;}y!6NQ<vcK>7nN7zDbKQ+sqv+gZ;w|O7VxJr- zNU$`);6K_QBP_lNU2gW&7gg~3UEY_tA-NDdhLz}nAL*~5hlyLMs%W7~lGQRwHj7`b_$0Wiha)3H zD#z=NvXzsN%g-K;h|PsN9tG|{IFJTewz>1$Rq9C~f$6VcfjFS9pjzhBvoo1WC~i~O zSK;xCrz7kcM2L(|Xf(;GJL!NuT=(BIN#m}drOljtPkQ0}>uy3@MoW4E7^%D`z`DgkTsh|y7jVi9=N;i z4I!kS+R^C_uvaa-|3%*o!pqdRO$(P6ex5v&nry>FnJPd_?P zAMiIrzyR znDqO^gdF$)H|0XT+@K(hzMopS<7vsJ66Voic1v1+4}9JOMien?6qn%j6H-U~KyPCA z-|OSB;Hb0n6F54x@0Gv&WZ?4h=ir3Pl@4pP2XViX4?-y{X?O!A$j{*Xbp(OWndu0`2Mn{Mrz5^i+ zlSlG>vJAVpVHTMtp|O8dFn7MnU#Tj4yk5kU2P6%hOhw7_oa=UGuAO|=zmrdR@XA-6 z6*;y=2CzN+n*Q$7B}n#}-q&H3fZv06+BJR~*>NMU4!;%=ul@%TLG8Xz!B2rG$=F{- z0NEr1kPzeyo@*L{D5!+;awzwlkYJ)HQ$j&GvCsVjB+rc%UNMjkCiXF@wbIuxk=rVh zhAm&mr-JigLyRv+kTD!VqKiV5hvF7`u%`}?B!qM_)$y5T9?&RN&xckz6_6* ztkY=`L25aGTo>e}PVMRu5M=hQ8PFR$L%@$c5`NS${CL2dAH^N9$s|5U?i4hfK<91+7LhP$|jYJ5JG0E8v)C;)5VYM#0CLH z;+HXP0#$xe6bMY!v@NKqE-pwA=`M7Q5Ebc!g5u)pnwq^nno0Y*QJ>FAkU^ zeoRfxRry6=_mRO%hDQY1hTUqxAt9NxB0#z<(H57}K8DzUJya{ zKB4|}!2k)o2<#}br=H>#IKX6=6aZ2>eaan}O*hK@esd8l99Bd)q-+^MkkaG_Am!@# zRLCm_5u}SJqp}Y$-QNWODOBWRBsny950H^sD+Wk}kse%r5bJC49#(-|=+QCj5J5&o z!VdsQs~12bf?So&i;x6)BLwne_A06FUCV?&^7X`bOH2Cf=B!=*UMzQN0GZ252OHw! zJ)X#DqbCsk(djDjd5*`%{Fz-5F^1_7+lTj~S zRc{)<1gV}MS%PfzYG%mu_XB?X9s=Z+(&Uj;f{C?_ncCMg{Qk*9!^q1FSoeo-FWq-n{j>cRQ!(7lc5q z@x5)qAuaL*2>|KT>2ySR#FdOOKv+%wUYXG#kM#BiFvBna8HgdUQ~*c{)JETbFaO4k ze7|Qdr#n`4RY(QMO7g|)-97;lT-eeq8u?a+8dK!}8>9g$yGVm4XFgval}W;$Rs}NB zN&wPoiHyhm*bJ%aI_p9p$bI{49<8&PG&OPQtdSP2){OQxTV((eamdZA*fD^xGKC=`Ggvu| z2L7HN+}M0m6`}fw@h4aBV+JrV0gwWI>`8o+<3~n;PPB zY|JUj$;->jDJp7g>=;fR8SF^TnETS)Y}ix;n{v<&fR=?frxhSIK><6l`}$V+bTU$Q z$7+Ich#npGsf`<^jZoOWETD6ivR5$8bO!{6JLw*-NDAbAFcKV&Ie-H|C9UT~$b$#TFLnv=k-qzrB{nz&7x`%mQ3yst07>#qaOw$hUjs(^14xY_ zlT@J&$qFP!Y6<}PCq;nNm1ir1LM{Sncm9+TCtFt2cIuG10^dkeVdl0IAO) zk&7%n;=P7e6qhptPmG8W`nAQCP^lGjr)Vrdu8WVy0O_%qu>eU59yMvL zHk?D_u{xVc`6B>Gvn8GYWPJQOxoRqg^i`m{wMxvE(UZL@-Fp(`!yjt}g>t<+8e)D_ zI^IEn6XePlnClm+OBJsJGpja;D$MtD62&5Z?7>Mzm>^XHBu9|!;)GP(hgsLRyqF_$WhA1wlw*Yv)D=A1izltbU~+g9fXO4=46Kyj&na zVjs3%Jb{Y=60&2)#>abxhf}jVq2xI|zcV{^c(|u1D@-Zen- z1X;8sAb!O4hRNX*mjPl9p#2`6QV(pZ06Ct~F*rDqIy~5zGt@FPg#HzE3?hCU8R^)U z)!X~h+%{vkO&{=EjCQcr$q!A z+=dm%Z42aHG2dCo_QDW##)$U|!gM+oAw$vw`KACMn{bN^+-Ggl%Pz?MzM$yBrtOaM z)vL?%WePA*ru@}6ZuphcO_i+5sIhm&h^j`}E4$d#nToCmUoS*0&S-Uuo3Pl{=#~B; zqq@V6t%vtjvbRv&=^r7wnGyv8Q^hMXr(`RN#Q0Ezh#m#J}Ttv$#}t-5B?zy}c| z0Hnt!KmsG|Vzf7g9T7ogWbfLQDL3RCV#6Q#e%Q5*^87f*q&)rwN|1;jnKuK`@8G=+ z#A1DxH(>!X8@&18!N(szQ~d~l3G$xuqu==iA*6u=NPTrpx?$R0+z=G&i$&4bfe;cw z5Qa!%=)obtN4@WHB}r639EU&t^FN~>g1SCl?bH=Y+ z-}VmMsZ*x{!N)JZ)c7RGqFHf80r8^-*Bd@0LU0DZ50yC{$dBJofJ{RG*^v{MI?^!$ z-OE#kJ4RCDilDt=S{RhY4DTNv?8w8L&@QQO7mi(?UVzllgdkNL;z#;^93H!`?$FiZ>p%QWKZ=qi<8j%udHkpI)D!!=B|dy zN@*Z4HAQ1-fdxo23y`>NcwN0qTbh`dZPhm6hjko4S_wdU)+vAh6_mbe7wB({^&om& zl`enBD#wq9Wce}KSKpri2@>%mdoq*sQznB_l|iDacWGj;iwr}wI|4#qZ2w|JPmd(ZxiS5v#*<~AZ{o$h+AfbC9lz&{g68#db_5w&L zK>|OH&z+l%bK>@#*|B-dtiLV?b#tk7(3Q))_B;oO%Pf}A#hgm!T& z3RN;>Vd08c{rwr9sEUfI{UM4@%B?`NYURd_Xu`}*GTr0%OX<@$-%`ntw{C4#<FKXU!BYq{`8K}#Bc{0JW+ z_l1=z8FJ;y7jgyf9I6%S12cn)LLC5*Hk^qcfhEYrfn5LP@de+tvyp9ONEL@oqx`7y z^CPCut=Nbt5?R^CjTO028^!O_5I~Y1*wDC$ss1QfBI~69=|zx4fJD>wLyV(6_92+X zy(LKCM+ra%ZW><%nKy_mFHnBe;0Uy;GSUzi`r(#UIUYE#zo!5R66C4qoHw(gKmXjl z5BKj(N!jQA{Bz4g;kJy2vW_5reCg(%=d+nj+0Wm+`4S??tJ4dR;E9PXUZKj0WA*g? zI-O|xZaxyxj_CU#mg3{LS(T|hes+h$j%_NpezYFp$9il5)l^mY;v_>|sUC>h0%Pxc_}|OD)FPk|MmOg3##lz$@NQ7bihXW{W@Za2b*bv9vDDs=!EZn zzNcbwE5qWN*ze%I;0uSy!ng&qs?(nVNP>yWSve9Tq;QKjK%Vj;Kq^X*r|vC40zm>q zSL6oHkK7$8HoM*QfF8fc0EtecxkpYHg2M6n063xC19&+a7bQnVQf8ii-e~;M^Ly}e zAw!VU2#~}VqwfBhesDhhFpi(l(>UD(DQ-wD`-kNmo?@@?Q-gx>Ua;fOBWA2aR7Pue_SFzic_-H>W={_ ziE=bDHRr#7fW(!Yh!1=55AejOsR<3AAN1W_w`yUX1xQwNWJJdg+3JtvF{?*P08*ks zVga%j0Fuk}i3Nb{6-$tq9xvTXfYfkjvqAH~{&xdp?~%D*V;7mwJ`a27G!W$6n_l)0 zbLWmBg1kDd0I7N$eDJM3IDT~Ig3Jfw(gVX2RkhgzPU*a+vo1AAadrmx8~XsC3YH5pXnoy>G zEZ0bfZGCZcRCMu!!}P!cB>=fK-#=g_~T>8j(v3S;K6x|lLEbw6&Hfd zuMT=}Jih}=S{oM^w<`95tLcX^=9-wKC%HZt{6_ih(>CsZ&tmv!!w*V#XebgVwR|v%yRoP-mP4k4QmZ6#U!Z@*EVR|%rTL2)7VOhkF#z<{b zlc)HeAH_9L^H9Cti!QlmWqiKNxjShZDtA(*q@<+#T7!c!B$RK^YU9n3%hoL|2ntHi zoIiiTg85<5k?~sXhVp`dB4=sbO?29;aJ~2}->l9jK+*-c{FJ)4od2?-ZQ4}wofl!I zC{sQ%_2rzP6z77L&aj%|sdTW;{g-p+&YXGweL|2&k1h`AB@!$c8OuqKY>9b_cdb)C ze<(u`t{!E;=P$A;wedDNpa7f6exE9E)B0ClRb{WJo4*aK`rWN5GZ8^1X&%`3-0Wqw zwe7oqP7K1nYX#h7FKa{_*{x`MdwXqT)ie*Qq!*34MuzvR4~>2`eB9M{7l)0DLEig0 zl+Im0^Z4=ONBtVwX{M+rHC6K36s=^sKUT331LQJGF$K#a$5E`&tZRCwIsTpkB$c$L zr>AG%KJ-I%-$ldAQ#^ci3E$rVA!$`&V&dYv{C?>QXa-nWk#yh6Mi~k=Xiw-O!#dl7 zgWL9ocLs-q1P2F0)%oB~vI>cUBBw_$5*Xi zyEr!>$pgq4oxj0t^YJgn7GwrE>DgEB*sT6fQY~RR)(H#?#jxFdtFFhzaHQb4V54HF+7?c zKfa!)V!C{)09iiG7*EvzH0q5}%WAv;GRPRIYksHU9s^`X0!rq{$VjtQ=kkY;bWr;IkZr^; zKmtQn#|8jlh94h0_u11oKK~2@`UgJj?>j$sU_|^^#(*Fj8`;`rj>e8gpv!+1Y(@ZCHk~J> zenlUm$CGcIXnx0!HJ^CnBx1M4Npph(#T3$|4MA$Y zE~+Nl7zC&oRgC~L+9-%TGSn>7HaBc-sFwpsG(iP!B{I{PVHE;M1|fUY3UC0B^(Rg= z2V!XV?cZmB)FC;mZCTXQ01ahTse%$}FpY2yikp2Kt z``r)?jgP+V;c^&Jvv$X$z=@%VARlk4&0 zXvNxGHMby!OokTQ#75R-s-HdV-S7VNr|+&_4L`f@wFIeu74Y$ozkB1)fBv(t*&A(s z<9B}qgnZTS#k3e&-z`G_QXc^1_uEX#9Rwg*1rh^fM+bw5RUH73>{hb57D44So|M3k zdrqEsr=j5;zlQcXfe55SkRT1KS)cvtz{CfWqY?`*m3FEEw{k#+9@s10 zZnE}X@FT*i7u&^5pm!6JW8^ zk1@NA@BCf^WK!ZjTkGMT+`D=ax{^8jBiuH%C~C?t->{*)JYfpAS#*K+1mZ_ee7q;p z5*-#68Xn#W79JiN8fJ{PM0%`Nk6Cx(gtpulK^hP~0zCdTZO#`zN2A`)fBwasw7&vG zB7~d{6*7Sb$Y&J*5*TLL9&|(fXP9wM?%A^}fzigM0+8Us)>&OIe@6tFzbQV_f{wn{ z<#f8V9$1dwAp2fO*yA>#2>}u_q?%v?di}9;=RW%!E07#O`j8;$;$qG{ToSc3K~oT4 zhejH69U{jPtFvKygDxR|L%gRzV<=c>Hd|_ZO+64xG!w()qH|ATJGTf!SJQifdA7S_ZT2CKVJRqI}JdHehlsO+pB5_GBYkRd{QNY+HV_yEYKmIR?;bPZz1r~ZlzelPinnlFp4 zj*3PA8GZY9HBA*Sv+%5_uZhyuZ&d)ud}k9|Hrm;w^FYyPr;MSER%?@!-{$g~#TNJX zv_?eiOGJkFF;U&Xg#mKx^5tjL+vUrb_k6DbGM514-HqHP8+Z2e4Y_?kqx|-MVjIe( zxg-9BN#Mt3ohM$aBXz_f;ErhJY*}$AB_8k5HJ{KHC{Dvv?5h5Lo*s#@4B6j59W_O$ z0#XJNd$3o^DX_>8KkhvF-&oE0^M9Y*i3rk90;^ICBng5<ZU{0z-UGeVoj((Uxi^M4`lE-B3_qZP>oG zUhCSvwOQBPu>G~|^&7OVX6Mp^byk-v-r~c9O(m_x__*lGKukAhF#}f?VT4@kCmdM6 zfaS-%QezNOH9^|D-+S-99RmY9(64)}K+?dEfBf@1|NYzFsj%Pv_d9?7BM_vYDZ#XH zbWSqZ@Pj0p@4Emwh#0YvYpDQD6@VWJBHA%t3b#T8?__(%{E6J&wvPgvQ# zV@LNuML>f;FF>l2ASt_}qO!8WVWM(dIcThGf{(tPD)ir(R*QIjNh@m7HiKr;cT4lzR zOUFe)ka01i!`OkPwj)-pwll3uZAI;L^vmd~zIK-D{o}Wvz4y81oFr82+uvI6(+WvW zPzWdIe9p7?^X#6Eqi1g342nka!vL}h1M-Ox1O{Z4G$7R_FU}78e_z6Q zd_V;G(n}%r!O$+#TVfF)Z8ikRWk%y{UIKC$Cm z%u4p@{(x-sMs;<0JDUC7jQ3+Iw7xk&Ya@B0EtOWg0;)F9=fRFVYqt!vNRW_%RFnr5q&6%zJv}ydO~42nS$6nopBZ`4s<5qI09DuvR@)Q`^oV|y zU_6LF?J)=-i6H|HW*4;`I&|g;9O;hm02yE)RJ+WoFfW^}LeF^G>Z)*=t(9xnmQ{Gl ztI#2*YVF#pGPEz1d(2i>dAZ9LpsA0h=sDoyY0zT~FTjwefsoG?1^UJ{(}a9%;DQix z?AY*WA-?<>F^3Nxj){uGpGFQywJLp5dWdr_*I+;1xfpWX!Gc^9_-GKjbaF~+YHCVu zXZru`Nb<`$7YUZr3Kjw699YHvq$LiOIoPvyw z!hl>d61b_e`6<_IbN1CkxjTQbUR6*RAPw4ECol91w&GboNo zY#16k*T&2WqJVs2L?H*r=$w+0QUpfMk9ZDQXcSYK%nM`3#9D0DWm@$zy?!?Hs^b}u z;77?hkk7j?5D^SLE)UK)xsW4W0zE1r^~h{g5<_~#W7z6aHvqD$(cR@me(YQt(t!&A zxwl4Ej?#|&{{tWsn;xwUJBhdVhcF8=VfEf)HEgd1WXNIW_0bkL)0mSd)6_<-THWh( zF2vQ=daK6)lB#3_FN^I_m`#ym!^163XRl5AuTiZ;d@RUKOGSX>1i6m@GBqt12)S|; zW89GSK|-84caHe6 zr{lE%@8;PyXNAjVoE@f(wmQnnl%BG+z{bidTJKg>RaNP9RG@3vN{7!Ny9a1j;_PD= z)??San3#De(8n%p$S$0PTp8foNGE<2)C-)EZPmCKI{!Fa)$L|6C zeAXgMgMxu$;Wi2R5IxwXEgIn)zy1_k7ZdMUiHj~6clqXarx z3Wuu6$Q}O_$^mkeQ}RhYZAY(3`SBbK<6Jv(PD+s1j<)qAjW!^oO9&cY`bELyToeN| z`g7kX388vOW%3#G#>6gEC@ct&X7e)UcoC-4E6Xt;ow9&b*c=|KPp>!X^*)75=@S6b zra&9bu+fY*qNmCLGRr;_2@+ihxS{%X#DMhk;w}g&MArZ4fK-p99~}W?)J@2MQ>HQup+S?T}rFj zqKn*)tFgD+TAjVCRT4j1(o&p$M1D-ADM&=feZ-Flkf~`n3AuC>-oBcbar$xbqD2xX zPj$i^&W~kfj3DPE1nR_0GLSHCkFe-bx`e~nz~^#gAf>DzRg;)OQb1(p{EuV;re6%M zUlU?Zi1^W_FXrugnmoNvZ?YKa0FpZ0f8aU|Adh@1<8d`;G$ zcmSLDu|XoJAZtTg76*#355f@kK`6r>;r^+eguV^*k8KZSUk^L}%{LeCeKexDck!EV zj*EW~b#&f>;#D}7)rN1^HRngRw4fimA#(dN@^Eo+UV{3E9{-{f5@3k|`1nIw>(frA z(9HA)wdF%!ADw~Y|H#*)pC7(FFAx5LAN2EUGzla`3o>9KcJCx(@L!KnfC&A*3L=YMI2uV1RUwG9ZgO+K$eX7{5Mu z4IlqDNeS}WyrXS&R?z4HQdJ6id20ZEHu6lSAI7ZDkuGZ@WEm#AXKYBn11Mw8J;2eG99sdqsN5&<$Ut}||F z$V1owNPjtEJr3)Q$O#tX@G(9ie;hz+RP0GpJG-`L`CGfzf_oFrhHO?;Vc;!Up6c9eS!#Vh}rN z=}QF#4|0Wo+_#TOKms6(J9v#6>SfbMfXKl)A?>@wk3NAP;g@AZ?^MewIso#_#*IG= zkhU#0|Qb$8~M7bs9 zk>VpEhHJ6p#m3j4auso`k=TTEomx zM(x%d|K{6!7p0i^?VrB->Z@<1wp_gTt=|}S^nz99VH!3|Lqq=h{HLCJsv%Nm(k-;1 zfXB^7OYuk#n`#6fB-1&#hcq3@n6oA!bcKN&pMU<>zy3AMs8*o(^{=0Q{^`&ShP$$? zSg~Sv8jU3@R*a+_3-k3+QTVI9-X%*$($0l``%9M0Vq?jY*E2@)^CNc`7tdiYZc;^qH}?+=@U|ii^bhPL`N`2pjm%kJzjx$-+*`kX zPKYl72IS@u4PmQN_X#33@W7RttCn%|0h#zC08;&0$I&zMB>Z?}6FKJHJSQ=VJ@3p> zIxA?@0GWZaj}IR{1VCOmb?WUcZ__w+3L7%_)xgKGFpI*60I7Gmj4JIin~edaX1U4c z2na}*&*iY{4UvQi5lXAx>aZ%9@oO8}?(_J_#)b%!Ug-ct`j=rBH5Oit!r>hk7Z(?L z5zXHE`Tll9F>EYcH0$cs`*Tmv*gs>@FegYJARpgCb4jK4Qd;<_Doyly?I8pyvWa=t(F|XZdKI637DRJ+2RBC91JI6I0J`|^+~26 zRg51oAcca&eoTFsmX`bA0TSdRk7DP2`iH;1{JPZOokpuoKtK6C(hsGqj1?q$c@nf* zjhr9@0Z?FrP!2fYA#CmFRacRI?e0(Eb#&=)UQZPpu?i9M=)EqUtHPrBsz zNC?^W$<(RIGK1-1wQK@XWXMR~JV^AMP*RZ5d-#CdGcrJi;qPPS)je0Ef`6gE{4B(2Y^a+q$#AdlUg#Q@=~7!(HN#5ah1Ofc5mT~`=8I)Kg(57@!8PaLzs|sKzshNvMLJ5jO@qM=2wf* z=(gio`gOu|l`emDpMw5js?;;1t>e~3aEW0}m?ZS4$$N-tsfdxr} zF2B|BX24v1F*LR%Bh>-@xYlXIrQ}9&0#Z{1e!LblFJQ!613^kx(m(=otg!xCVh|fr zkfEIO_H5z+xoL!D*y-Wny28lM4;L0j1^+?-!_t@>#89S(iFGIy-yCDndsbXOI8m02|1VnRE}?F?)&e*|IRz_?8gC!oRY+hQ>o?hjthQ$f9`$9LVO4&bo`K<|B)f@ z-VI{`iG;Wgmszi4K5f`JFhBvh0eDG@u-PYV=C4jEGdO zbwqH2^q`0R0I6O%E)fY5!ksv7{K`-piC0zat>^2J?xE%xGlm@Z(Ytll*H9cgbo!nB zQ!IPQoJbasYIXFIC6A}Qd`=?T<8azhjc&$VkJ;@GadjOv1?194g3^cpnJ2l7=^X8B zu^-{uS0j~x^fWMll*m2`0J+`fUq_=ZqJBL2kP+l9nED9SG=z^7kXVq9xX7bs$shjk z>0*tPADh>sQ{GuWK(^l5dlt4d%L$SIQejm<8I8iDuzEZ&*yd88hoJqU&8L9TH>FFW z`G96Q?+uYUgNXzo3wrenUW9V=nokDTp0xL-LnE_x%B02#`e0>z(jwvZ5!^e~roIIJ!e0|cQ(%19g zFHkdIPDb2GHwyagmzB@Oex!ih|IRxsAQNW2x!`Hxzn_5HUNjGT?w=m27-sU0j2TX**FTsNA46h>>MFj}2kMPq{~MgYjJ5du>E>NYVT zx4jzZtJS6c{dy=MqaJq^wj>~_AJ^W*X~?R1NBxSi1%Omk%iA$Bf(HLAvprlP0%Q*B zM*!r7Ew^s%dyhpVid&F{MAs^BLyYQO%0az~SL0m<1`!pXX3N@&K87 z>*3%2_{YCJyp<{dBo^eOwOEgaDUebl*z{GPfGjKHr63U?@hg%S0FdR7c%;q4U66fr zz_}OQbATZ&FeB7r^jXD%jExk$!I>AzCz|~y5aiaq^?5(kkFc=4#bPk2`~ivV*piji zWVd5JW;MCfE}EU0FKf|Zrz)fcNGsQtRXS|qA3kXc^5e5z z^R5Mnd0o#UK~71MR2#pCIGK;iS0ppLAUr&Trf9H)AzOvL>F~$^85Uk`-(0wP^PZR` z(LWrJyO@`3Yj8lS7Ys9gtl%#jg6@&pbdLAEnfc$_D$ON;M&TAwAa~&zZDha;Gxu=qsf)oJqxhacg&06w0io87Z zVF|Kp6k|t>N9sozKqeJTM&B>Yi^M@EJMK#IRdKk_|fJ8z}Ihn!$ z@#M)AAmRpGXZ`9r;AP6mlZ+wJ%?;}|40MlH6*d4;h{LUw5|fvmyN(H-wf8XsGAY#` zkf})l0qN!ek{hgs+hk7N;|1iI6GsGb?%WVQ8XiP@0Dkp`&YcrJ&n3o@d_~Fv zQUxi<9v&ZiI@*GfKhIiG778HCs@7JO!PBB_?D}3g-!O zY;8+RExjXbCk}v|6fz)JtoR{-)J&_cgSyj@7T*9sN(u2_cbJ##j^t(mAQSX9CGjIw zqWoIMPNz+83KIbG13V-R6B{AU4i=`QTzdcg_piKts`)rykaB=jFcTZ`>`U54mWMB# zen$uJ3OPVB(+b(Rg78P_$kqW+KwgjlWNvPnAegM9xObv7Aj!Ya`vyL*5aJQOe|bQL zMfm2vf7Rndm+JYM3-6ysVb09F+w8h|0U0i(NA6l5 z&M^3Z{_}{)2DIr3KR|K=*aVRK$TDzT29lWy897Eigy1`T`4l?rD$TSOBU43G|| z)xu;Kja8Kve8XUK;VCr^nw@O0uC3592V#@L<&*;C7;XB>y1Kf!V+<_Bj`qCk__o&`+Tbe%st$0}vasu9N78hc}05kmj(KAGX4$rRD>I{DOOl5P2c09oO1Rlo_(;eea;WCtJ7`O#`K>&*~) zQ5Wy92<~mp8WOO*>z+*DdYapT>Sz)I`f-fP0Dz2T09hSg+k(t!w`UPOHrW#s?K@g( zt2Z|24E98K8bioSgp=MvtVmfvj>+k0qjF^Y_-3G`upv~d93cS`&k3p!&!EkL36S51 z;726L?_nBbjz8LXyD#!1Its;;HQc#H4QYvdD9ywl36NuA!)v2rVnSQ~R}PRLae(|N zC?NBOZNdR;sbB!<8Mg2X=@1}4U?(<094|a|>PZC1-^v0~Fod0;SCAqZJmHC5f`FkH z4Rli4ycsV@;P3-vGBd4^1lSd49N*@JC0T6Qk`1?bZ^!w+& z{i*IS=k$BgNR8 zP8>ZK3LsfM8X%Zciyfg59pH5lWUC(_`3Xn_$lO%Ygn1t`4U!Wix-yZYxXNIwXmz%d z@q$X1aXAOb;UIG$eas9{e^YLZF{3uhKa?T$*!Vhg8p5=qt(?Q-Z(3;`tCJ433(9vwh3Z;2>$B^7Mm zuXc_EAe);LUI`9JO`gZu>a>lmChKvM)9(%vbuICLM&6(xIssRYH7bQ=G%CiAxo~K| zkV47$M;t65@xh-6vf!mqCOAYVNzZRzfB^ZrS`LtznP<=Q0ZGz-=izYxq$&U)nF;2Vp+3d3_tX8YdCZJ!ej{ja~4B4=~cA>l;0gyHFZPcPy>4_h; zV*&t@WFV(eJCejB3}0u}wbX`_0qraUzIdgIyhI^MMzjl;spXHy9c>*fA<=s<&;a(+ z#miQ$TD{t+3<;1Jk(J8Tf@P7kI01R$T1asMry#ZdQy{|`Le|EEA5pZB-IvEm+@~{y zNsudqfE-~XNKNcC(@bwDb-n>Ikms3K>wM4*q`G)m;c$i;4&fL!2S^+UiiH~j0`h<) zAPFAHDo+0XLIUgBOeR6%D>SD7kUi|oLK;`Ze&nSfr2z>hiHRbA9I7nqlkz3v4S> zLH#2Ga&0BQ!QRLL86w=+1mw0XIErO$3!Z|+fFw&@yX|(Iade}L=%y@mDUI|9xyY6}^kgEABH> z`R_X_;7wgItEVT~xOLawVYUi;j3#4+x4qGQ)!W$E-hRpJz0_V>l%vvWLS1(uth8|E z)tIPwdkg?l%Z$lJkpv_O49L(0IU0b}(8b^J{EeVPzM47BQV|LuwF_Vb+ZbL=1qr9$ z9sEFwWKuc!{97Gvvf(jo?&lTw@j^-pNjMTf(lPB6a`exof()L5)V#hJMYQA;$iKdv z=QjmXwPp_a@y=en=MTtx7tfNdbJnP20f|TAT+plzFTCV&De=wj@ z6yzPrjY2@K8WA9E3k_OXKpv0>*2GBiMLH(2Q{0Hi_)$Ofj-&-SqqdU-%TrX(*V$`hm-^L~7V!Oe;o-mk z{o)@5@#4S#{qO=`kU?ibs*@Hkei_BA7o`cWZK+JA9^zxyKWJk0E4JoOUUSm7?yp|KJVBD;zC@b@nhYrYcm%?XZ7eyio$nW_X z$SXoK^6#GbUMd9{%lHv4fCPXfh}_QkF@!3bM+Ky2&h6V@%*oS)3P{QL=ngt@m)-kF zdMh80npMNQdP4?e?+5@nC3ks7#cUJ(&i4$>| zHLuWm-4+bUekKD6Th|Gc;k&0!Awd3|3~osSGDBEGlbgB^0Ev^3 z`vgPSbP)RunO{X%gih~4mk+HTy>1dWoo`x%$yOl`Nc7HU0lA$qA_AmRIE2lgiyoo( z$PHnSiN>d%j-KhsJ;~$TUbnkM6C98{J))S^(E(S16^^;!$3q~t*@dqRfX?yJf z?4wD_Nz#l8AfuPyw*UoX(wH9xNcHTXMKtO#o1@jK&}}4u?2`uMjvaOJG{=LUq|+;% zP6Z3d9A*L}Ily0d_(zGLfV{vAV&?=)KO#MTDgY$&&*gpUH-e4Og?`+@FD_pmJpSc* z1ju{-Ef~*#d3+FUA4E^glgL0ql@=7xKoyP0V^w&RR;9wK^w`h`1r*abl~$`2J%~<% z&x-&Frv(m?v{tS`C)-FI19DL2_^T;4T1-Z>F#;9?GFi-uUyE1mP#2pJAeUJP{P~aMw#fm~(JMnq$D;spFd!hg z5o{?xqLb<0uN*{YpOFCa?MDOT21!72f(!ykkssFv1Y~kY+v&OYuMW+dchm9N2?WS< zCyr1%a)8X=ofMsSJk|dn#qY9Z?|E@EvPU-e+Lw&XGBR%>dv9)%J+2v9#Z}1`N<{Xx z!#5)$TtZ})&F}Mj`0M`T@wkus`Mk$@o%1|d{@|;>3xlmf;<2|pDGB0syy(fdkGeTS zX^6d7#qFb>&r6dS-w&t?q70g!Y~QpdG(G^XX~dJjCS?^@+9Uoi*i;I7oG0YK>M?Hz zkMU<_Ig(2If@gk-W1o!hmvQ%qdIo4Ve8D9fNS`HI?QC%2T8Gw8>rwi_Du;i)OH1yg0hCQJo9M&isqZ?Pccr0-;dqEe#3gV!cmI%_K(5yGdfk$#(M^C>12c?DK zUoLe)F#}hH4?%=;5Fw^SBR29nphEAo^_z`i#aFQ*lqRGx^K74i+C?_)jw1Tg{2h9p zK`+U?hb}Je6z$quvlYIBv9{~=J1p7gB_1oBv>4p)W}2sfr=`33)W=*K7M#9|9Mbm{ zR}h8ij<-xK_fgFoi986VK@Q#%hqd^^g#MvRN9^BHe~X;ulSEe=7BBW!m6=Y#5UT^` zlUUV0@&kmv25Gnx!ZWS#V$+XK5G*Cp_Ocu?4`>YRiK znwnscPo%9VTQhzU7bh5Q=)#LOnGC?w0X8G9YQE)B8f?2TSkG0zM-l@nxSQ(hHo+N0 zFZg-xk-UwV>+i$vM}jYf*o=sZZyy-!kaI`Ao45`NRcs6Pd=MGRGQu}=Q_z)9yG-G! z?XMQjgDU{I)&YZ zy^JH3>T(1%fk!aoWeH2EF__}K4g<+b$H>N3_dC!bjl_5LR{GT*JUHqnCut?ErSqP# zOS1-N7VksB?7|nIq>O3X-!r9NwfiP|-ZgqG)k``crS`A*8-6sHw^(ADBNbUaA8Wwn zP3Fev}2U|Rs3 z*iUFDzE- zV&jf1QOgEmya?d!Q%Ufjw14Ws&|3q@DTD2hQ}EN-gWTDvK)^s{q>ywyoSY`NvCkG< z)gwfLF4Rm?`Ma0&@rUDdn-s4aWeWOv^9{FhE?^xF{hX#o$QZ=Mdm8jAp@SSzx8krx z-=<`tx=f;W0V>~VxX*qeX+KX*_$_(1Xxw2Y8Oem9tfT_qcfQXT_BUrE5G7<`B5A}w zWmuehZ?>TTW0S2;MMaoovjTH2&cgYAc=*_mSr$YnI$qxm~}M}zrKdN2x@SP zX5U{8lbN6!SIDt}#d~%pl86*M!Bb!5nXadmM+U{O9gasmd)2gU0fo=Rb6HyE)>_`Or?`>h zm?5lQpq$IzV`cK#oq`c8!$V?{>Dx)7W;2ZcN)PX`vB9wRS=G%#Z_5?Z>?S33VYNT# z$|crR4v4I~DyIC=h|zy3Ns1aGKbS|p!p*Of5f<(Bb{o1@pG!KZN56bMqn}Y>eDQ{- zl};_Xy+c6`)gcZ-l#qw9ST#4SK1`F5)$sz5*`69CH%=e;C`Yahijocc3Y7Z4rk-D} zW)p#H;8e6o@L$s1Y3(mg0WW)7sr0_X^AjG5z(mu(R8-j_6IaY4}Zv?p79u+^A^#ffaY^Qg&cX_|qz8VeP zbX%JMoWhItS+NV8Y&dq`E~a8`sP6*fGo)AgD=hUUznIDz3#a(W*Zv(u;mo|l19nv@3%&2$Nl@8YEt`ml)Ti=SO>Ky`<6TtKq) zUzSxprrC@FJNg@B=tU+183c8(b$^I2uWBvm8w1dcbKbyKALCmyG(o-0vdO^M@q z-Xk_7lb$ALJ=pGp1q%ic``-OT`_<$*bK=ez)-5;YMC&<9i zCA<-jj*dp2$u{>q1)Yw)(n@e#eygMYhr%}G#=S=Dh@ZpbH|D%f42T7w@{6!W+5MS}VAPqHh%o5^6sX^w{BJMbTq4}yGGr0Jbn5}78N6mH*^ zzkOT$L2KaVP+8`;DYv|O*1J;I3ZbNC^I{LQ86(L#zbAeOAED=h+uF302Y7i=DO}Sp z={)+WzA})eT;BRzw8!`s9q1s33vNOIvc@s_o}2;o#4;8}fTsI-!{mCea>H5v$)Nye z2!VGQ0N}zI@u1DXpZ}I|hEGZmIEg2=65->6Bez%~44rdnV*C_*LG+paSj5AoNo=Hz zPqGv$+E3}|rhUC*v!&CsWRAt^J3%Fjm_{=xpY?D`EEck zFz%+{)d^22#HVzF)cSdW?O{zYUiu^!KVeeW^68cyh|p~Lkj9=SKiv^<9kxqv*PrCM z+d$Cm*ZgAM85z5r!;}n)a|$hB^-0l}N7CQj#rGSL*8L?tT=2n~9s!$CsbzVP|D}xo z)u-^=cmI&&$y`{y$Z&{yvLfoP8GW9Hgh%|&aJV`c-t9O)IN0a7+GpaqJ^?;muv#Tee?)q|QH|F}hXHQh9rZ>hA z^_ouQDm@N_6OMjG2_wAw3RYU<2E*A^cr=2WXl9CT7Q+wC0nTSkXN02+gs9C2f0C%u z0H5)CS?UMLD#$P~!(EJW1~;~Iaiii9=th~zX_x;pvar1*Gg608Xrl)a`(H=>GpImi z_xc~7Fbz>MwCgs<@lM0c?FJn=e0sbIx-JfW`@J3;2Opg8O=w!dWvKbt{ZO1MU)B0D z3{Q^xFN2qDF-qYtQn#F^FUIW;?j*DN^;nJ*FvAvyVI+8Q2&jnn+LX8g6$5C~Z&N4D z=Cw|KyjpIqaRvh3m1N)&_a)BXIesow&|~UkQ|)f@j|s+m z3DUVtAlySulrpm#5CeC2Ub{?Bzm#>AJ9~MS`}r*?>iex>VR*9-(0#MbFH3JmO=yyn z^z1GF&W2MIm|M)r=^2i#yyLXi{kE4Ojncah%i0%-h)tc_F&Z%&oE~dZNVm25K1(ya z4uq@@aT_Coi-&jIEEQM#m_=USCCp_0!APhxsoVIE%MliXzUaZ}1O41X1h;m+&P4 zlHuS#r%V`e$~A=sx%g3Y~ehObWM64+6}LDE<* zQ&GZga@>bs4x@<@@*Iz%FXz5xIbtuYVl%EIB*)xxb}yG0;x6)_c-`C_El}(6$-q)^ z=T!Kwix6H1_5MSF@QXVaidi>R)!V<~vhkB>$iYVtjs-Koq|ECFB|qpU*=nL{C7Jxc z#qQ#^ z)llVu$67pkB;SLOQi&R>_JYc&?ueVT6j_>mn~Z4dj*NC2di0cp z$QX$dq|mDmFju%f9WRuZ#v)>Fbf&vLjpUODz>i5$8a zKWg7gnZt{Lwn|SoM}=vAI}RslPZ5;v^S#SN2mEZsD(*G$eLp`+xwxhSn1-FNG1H9y z>abROA6ZhcLpcea8Ds#e>KI-;Ox2W%W8i=g^4a<`UiJfg@%zh^BpqobwmB9<=e7RZ z^?^<~ZB0z!S!UAqkC2@MP~Z!z8*Q1r1!}n6?c4>nKPO?F1(_1c2ktUGJ9|BTzk3uM z&$nGfmk!C&k$ZO+c;%Iu#o!*RH*(K3hi6X|-)Edmy!)`)w)W`+7zI#H4(JsZ7n|CE zVwo5iR`?3TRr@@khAK&{OgXNYJ3;>-;?V}HYcsb4QH6$yz23n2j>1{>{Cq!BbW~;0 zT}@I1T@ypfz!9&dQ#r796iUax|A}KG(?4P0sp@7XDdJywi4MX@(*TsUG_Xr0f>Pg^ z;`CihO{(#~D^xvsek4dW)oyp$K2Cm9-cSg+Gx@!vy863v^r9&T4&f`oz>sPE?N^BukDBE-4tf7ObiCok!6 z8&8=1$L}4kD^*Q!*H~F*fUIMJOhzD=-^L%=izj^}6|Ml3>Xp?T)U+4n714 zkr51NaQEcX#Gt2FiJ&CZNy>9aC60xkWa$$8%JDEl2n@?~E=>n74PEIOS${TNi0yyH z2qGlEYgVW$RtfP!n`RF}{D0{mS6p2^87zi6qtf+XfMT}=kzWQEiZ@`$OvbX;fzApt zeiH6^B`TokBB}85dUD)tIN@bORkC4huc?EB02tlO1wW1>NAFOz-|qA=ig%gC@W9v1 zaG^IjKDqMIqq*&k!DPXBU#|Jx)OTr~Y^K`DUnZ;!-Ed2?u+SP=_6QA<(R&Pwm?{m6WipPXmW!|XwwWuj zZ#YnoF4nKx{wvHJu7vs&iN;~Li4BQ~ETsjtX={OVc06hfh#&VkD`n3{B;LT_-^kU! zx>dT1{1u>fX03ev?KZ!LE*XROqj0+?T6tyyxM6)7&N zd0$2KtoqZ|iJ$sSFn)MsA+2s_6+B6j!tP3x@fcPO{lZINfo35?)1XKN1%Y~AhxGNE zh)n){pU6Rn>reSHGBYDe^QtEmybO|yPqJAE>ti~dX$~~^^>kXPOxFD; zG++4NXPJNIZK>&=HoQqja4s(qyW7K-MT7^@E4wQ{oBX-=rtxt1m}5G5>2a9UqZrm zrz?rY6MB^T)TE42w6T6aj|gfg-AU;4sSUlei^J#h%C3(`xiKP#741H@|TwL5QS*%6fw!23UcH#EPen_t6 z#~XV)!<{Q;INN2vNuHB`bu`<3*rM;#UDX9R3tXYC;~Pd!+9I{Wr6NHHF@DKD?4WmZ z>i*rAZz|18qk`ce_(WT6b>r60-I#Gk3^~@2h6b&Rb4FbmGIgH+$e<($l@PdsEhE*A zN1DfL!SI@%v3KvD9;O$m$n37yx{~5lOoB}c)LY?WlF+2uS125GwW{a*th;J}cAG07 z;0aI0B|%j}g1e_X_BxVOGI{kHm~VhFr0O`@xaBdt6~EmpqM13E1wy%y?C}LnN+^6O<&2yBojbpbcex+E^TE z5${wnEcou=t8t2yc$0<(*3^}Je$#hO>=XLFCniEGuFK8*Q)sa}H_vXNlU_y}F);<`XRLGO^>C-n0yaMQsX5$_RL0M)NIU4A z>qGMheh@>3W806N6G-ByrhGb;m!GE*#ZtysWu#CYW{@G=s~MxOZybBwCTs%1oxUIF z)jc_v)^vpIKxoA>hQW9jz{4!%_=@TJT;n-~xusIlhgFjdEc_4!3-KQjRCEt%WaCCaS+|KFmaaCd9y|>Ergv89Idd;& zr6oobMD$QoQ_FKIYz*10Q&%^!;;T{({)tjkh*eAE5vmNh_(=8$9+B5*o*&=@ViVeZ znJtk=Q9E_OT>40RTgrCQP8F+QzR5RQ# zT<5tTxS;j!vUa3uxNAu>4=Bv_q^Iq7NONsXd)UfCtA~P9Qcqifh}4s#)?bvQg0$3Z z+E}h~u*M&*jqR%1Kfk#)bfcN@1b-a7t&OVx*z&l~=np9}-C5F;6sK`x5R|2^qzFF_ z)Oo^HV6ymgD$()+*x>n5tlt> zMgdnaMJ2QJ#ve0$XFgwhk>rAsVBB#8&Pv&fukX$RV`*5Wl&vqV%2Sf*0{UvtpT5?A z1sf*_o=i{~7mA~8eNP+qs)>$%psSn1DExtWMEQvEI3(*qeUR%xj*cw%f(*ZLNLf|0 zC5li(4R5Y!w^B|gvhwv^W0xL|?HiYDed>9sQ6c`lKw zNV1mdfxzO`Dt+%^A*ZJt0WXdJTlZJ@hd(uXQS!dpJf%=G74DM- zzOJCkT4Y@+JwwD=UKsIbFpB_Sd`y)q%&xiof=9f=&^Q ztH^7LP++a660YRi{%unBGWtSAfeptnt$1 zE3M2eVIWoiI}W=&|FOY@oDh`7{Xhy{AnVE`%gFHHg9hUJtI~qIxRplx9oc39N_SMc za2%G%fcqV_yI;7M{}<@nB|v$7V}WmYcCtcTXyPoKqeeVPiJ$(uumU!#Wk!(VEveCL zJ@$%RY&e?ddQMtzQ18dz9pO5tx!_LawDN!|rHOiMu;4wU_vd!sjlS%F{Q2yH#266M|O_WbS z2X6?YB&Ds*vW8cu`{`EwJ?+?$7?R@i=HW}2NbJ+#C&QaRK}qu`Qjal6N6nU>j8Y`{ z@#VM*H<^>2h){EGzwZ5;inE=)5_bjisYECUsmz|2)CVhHOPDEA!YK5GUzv8&e3Oer z0S4WOe=_bLg&`QxBC??&8!*mU!@fQ8-?pd?7(T&HVR!>DNuwVoq3wTnu~`uo{v;aa75VPgM3;7_XE57op@n%IHje&xQl!R; zN+7h8y72fa<>u&{#|l<6W~i*`3?gmojZxS;h3Tw#3-Bk~ZYK1*el{9hBcRIov@{oY zOf%=+zk3&T2f6c1_OEV=+C;HpfXTfa$8e;zp?CwlYOnu>jN}3@j@NRTgu3&R6-?~x z=u6?SiUNeG*UO*VTK;fcoXD%$*CBl`?(a@7RxRmu`Hucvo2U7=|M_zp9XvZCt911p z?u~lNjY0Cp^J9||LCnRk^J|!<8LA^@gHA{|3}t0E5FMFS^OA4M9txIWzhv+9Ye&LO zz}(mIPbIsSF8}^R8=6E9m6(o0%hAH*DM-KQ!9F$~O|Ee;)oVZ^r!Hl9Uob^_6X zg+EUg+B8w`EPc2YaqJ1?6w-d0kM68j>ebSUZK7D#w52xg?(IKhPy2Ie?H=Oq|jdN9- zwgNp}m*?xXtEdq^XD&6SK?xG^-`D^%*z^8Bu>p)#_ipsX1f!^sIZh(XfzF78Uh`}*&Dz*Lv zA5VI~jTW)TPT;v%Tg~Z~daO2QB`+`}tkNC$O7BTc zV1uBK?xv0~)oz;r(?2D@8Y*rKD3fI4GJWj%M$@La*u}O-gusgPN=cpR0$fN=mBxQn z_rD5urz>pSSO#y+gZXeC-6nQa^!d)|bh8Jt`vD&iI(zVXaPu=e?523Gv= z#4r|Y># zv?N0)`!GQD>hz%m||$k$ofIjf#>2I$LL#d;~Xt+^!8_ukR*Nm?5`?hcpQjo4D#v`qOjU0mTnXg;wi7jZaEAmj%;4J> ztX#O;e+N2rqqWETV=p4}84+SyfEW-YLW(#8HDiR#%?pCu+!)LisbmnS7riY>X;S$t z-;0a~Z+S-lw5%k?cA8QXUhC#%d@U%4mc0>bl{oyuaUqz`R7FFIW=FPs`u>@@CQ|bN zoD@SAYV)auslR?oBGY)qR28LZ;GLS{GFAO?L`8px{Qd>(>{lrmI94@&}rS;TV`eNQ@ZML1i+63&`cLMxZ$lc@6}~ znu`1A@g>;$1~zcHnflw@6;}0cEvAS8dJyYNgIA6iU+y`cBUM+RDJll}x>>A=y; zbn@g3>-PVN+cbqvlqugLcnoAk!4a^h7Y6UD)+{b~7cTN7UYDdh*F>4+bAiwAHQ z$)E#K>VZSvC{AizTRPwU|3q^rqt>6S9@29?Dw`QhQK#b38=rDP8MFS?SQtM^V$DzQ z{89g8L<4h%a@JFyN06aqutwmp&z@f7SnXKEn$hZh$o^GD4AstwIVooLNN4?70k1kZ z8i7?EfFf9BL)HPyD+~cef3v;5%vg0;W>Zapc*Bja6a=(KIePW-Eh0GiYOmyzhM&jW z)>8?`GEp|JZ#N7zJELlsbnMB3De+A3Z+8|d|R9UGR5iqCj0}F z=fZt>wAf7%DR>2m`-j8Q<-cT@lm9>bGZ606+Ck_6&_&ku;_Pz?(kGUi4tBa20mxsY zAOh43+Z)xJ#7iY8fb?DkC0%~p{bAewjCx5h4Niv1Gt0OQP=3Xuqtf#PP`8Fey}Cf` z;ea8{rZs0q%rE4OmgY|u%4y7xrFPyU>~6dnjy(B-&$9#m z5LB@0nkSyh5L8_z3%}$!GH3#rreJ+ppie|%1_%ef03(D5C+bZ5)x5U(92_8g>vND< z_K~i)8{vHDv$Ocb1hMj~;x@wkstt zyELJ$4noUc6Kd}S>{r*b6@w<%_7#gIOr8yFntoK3a9dyXw?rY)8yl-}NDZ*NE2wg~ zQ@n1VtLr`4;$;1g2W&_P=U|SW0FoprJL}U9Abk!onDzB#n**X2!1o6 zust%4l;vDOV|F?;1YZCCzNwY){q;XYwtnIj786U07Q}-9X+^0$WViM+fq6joP_|Ur z_mm2a0xIq71vwcIyMD0I&*ZqN>^Ed2#7)L~(QO*DgkO*uG8q)}zeo3k;dK|6j^DoH zfQkX7;%Hjrb)oi!1^5(p1B6*$DEHbOam(9V{V^g3A!Nr3onS3K|E2BExBzKnDK!!@ zW>f7<$TSIEOK*8-;WG+8&q|~2rG3qLSVr&3j#}9=t!txSSNpTf*jOb>K%lQ-#JoXH z1>;2q1Ik8WQ$=4P7DQ1T30CY3C>PFx9Dqm>#;B}=aU&^6l*>m~HG9|eqq#Cb%&EqJ zDsQG4@#N%W0gnBsSnC`^$iZ}tcpxPPjslX2fuX6<=hL1Lvm-GZwY29tod4Ae3_-F0g zSKNpAw!v!|LxCb#L1|sZa~e%l^3q=>-0R1+)NSdM4AaCqWx*> zHnr1|$3vdhP!npx;nRXx7y^v3Ze@HvtjO&vQ5~p+zD#|;@TAK9=h1z@Myr9NhKr-A z{P))jeI^6;9;^M<%kTG;dm$Dn9IxSley|f%taKHchr6t}+9SExNFR2b&?5n5jHk$KSfGa8M zYSSI!SjG6`@ORkEkPzPe79H_#-UGliK@@Ah7V$I_x`D^^$hzZ`ZC@H1me)Wj9j+R)Nlhf3sN#*TU zJ+-+_(kcW6XT65U#1t3K++_|F>Ded8MeSa&VK3%fAPBkxZ!E#2M@`t!WDi^!m9i?( z(T*6VZHUEOhT48L%Of{aF~AZ{VyoS2`MA*`HFd8VfKl&zJS@U%u7Lws)Ddu}br*|! z_nyz}Jlo6={^x5=*oIROg34yI+WcJpudyVeQUyz3e&DlI!x^p)r#*pY9nr@~>p##2+JZQpS0mb~5i-QKUGFDih`Ki( zARr@k^;@r(LoEE^Llo*$H93iTg4U~?FXaPUzO$ZRr2(b~e_ngg1!s7X%9X|}Ef{lC z@+2G1jp+@9f|V=okI z-@hL;O1AlaFKb5qf%EMjMSe!kfFU-A6vGfR^Y5@+t!hl7Bw@FuE(aAR)=8&=EN$^O zqY~0cp3-B(@zCHx#d|&}o6^f0|6g&e5*GuYL{sPe8M`TkcX7iEGH|%09YH*wj?5vu zcK=vF*_8GNujZq@ryJOwLb|ZSpIyKFvUvk{gC@pn!$oBS_Ey5c@Nof@ef#Aa&=Vha zexbGqLyu+nP~3wFv7l49$N<`PG}6O!H>u-Ov;P2xXjl1^fQ;vVpEtz#o@m}Dk- zlU{IRByF=|dv^a@;A z=$#}g?9g#t>OpZXjmS;KK#qnz>e~o2VzbA+GWGLMQkglgf?u6)ObEOjkWEl8_&x!J z%555Q@~Ts7kq}F-5HQ38ed6rSJg*b{eJzp5 z>s2TsR`N5Qw|l4^HV%OSX}FH5&K0|c0-MT>Ujvdy?v<65?y?gDIdZFT1|s+<6}Gq9 zaE;eo_`-YLL*bw9+5{SGprdur+EyFxJ$v!l@ZNdN-`j=&rV|$-zq+>6*1ps9A%yh~ z;Y&^L?Yi2-ldcKOy zA;WV(Co2KsX!o)swyD)OYvLUagrC%v!O64WO0ZZ=ZB?gI^v}wpFWBlF5T*jomE_%J zr39!}^ODU|y6W!udnPIcCmWx&r3PUucIo}RI5ckc#rGf4I^#P(2R?ojY}9I*q6xo6 z!R}#|?(w+HD^fc)2Z~9zwYb?shUd`@t{ft zn{IYg789lzmw^E5gO&1V(Lu8(ANL7Qr&g6!mLVIl7hD7?p#UM)mot9KlLBXD_a(pu zT_^OVRmI;9+G%7 z+yB9u^KC{!LY9M-A}MLmvb4CT37TLGPiW>}0lDb^dJ_L_z4^AV2L{PZ){pp<^4|Ra zo0-X*2^Zj`gO6H08+V)BFziH(x# zHU_+jBP9lWn>sdm#BrK>3m#J|JIm?LF1GA2o+GjvtPK!3EMGxn?ouA~v=B&71}ZuLh(`m!wjX>cZmW=Gr6RA%zz6pR!eWU~v-8Q63MCHZeBT4iP>cAv zFx(xE`~y{K^nydd{;eb+_w>JH_=$BuoZ!i~0@3AK6^_2%`^aTb>e%%C^-Ip0`iaL> zG=$sjFd`#(pdO67SB`G675vxR^kJ7pwekFMD-(QxD3?XjurH=3_ewU1H&+S!c{dG-#5W4tH}=*cvJLT|XfzlDqGO zo`dmRQsy+;F{q)2aP=tbzs z9$hh=Qk;J4&!8-wq3n|iwLWq{E#T*R+ypi1ZdIuFi0x?pW>OdQFjFblMVAqlv#Ur#-v2;py!bSSaj6m}_eAiMRl za_|0r6-JH@$dSD^W`;1NG-P{d|4333ff4_!?5uvL<8qj0Gfiv{_B4`Z2 z2R}=k*+bsV{AaS0A5JdB?VC)`7ACy@zN%O)!A&q0!!!3qU^eg?=rBS4F!iS)mLfn& z5{qH7$Xj251jh%NlF7o51uzNmnEJGRA*hpa*{vO!lCQBV_q7y!yjo z^+~lC__P-M{f@JNCsJtC)uUoZ#_lyKQGzKcLN-#Iv1Z`0CIrEZf6kD_3>?NE-(y#k0TUf#vt6=tE*|CT! zB_Ov~{`Xk-mv(mF+vBcKdnwdoH^>1e8l}E(ai0$Lr{jp2E4mRg2mDWc-)sFkIbbe_ z7s7KUKe~7iFm3snfHMTcIPs z82$zXm7bKQ<;|r~>u%@Z@av=TN>5spA6qtC8W2uSlA2iWP(SMR+jFd5+H3xjK}N#J zufWY^V<^{p|1le4yYdYV=oP_*G9Xst9pLU^=>+~&ez&=iPCX+fpVWw;l9gY=*i>kV&fDI4Q6RJSP@IGNO^s4Ap z0u|<0-0ctJobxz1t>3EEBlUf&NOhokWb2je$_bHi!+0WFHR^>y`NUn6K|BK9>Uahi zSQMh$y_f5ky7`RE$>D{wx?dw2#52I~^RrN__OIHJ$fw2CdFF01H#Ki@MQ}4>7pb2_XM_q`RQZkSo%j z&AQAjuA|#W`nN<-_7q&tIfN2m1ZkbL`~=Td!w3Q7Z^D8uZ3sWg{#Nb_qdJ@KO0|{6 z3QzePL_F4p^fw!vvgw|_)G~24H^pAM--KY=<{fY#!Vx{x%sI3$$0-F|SuiznC_wH{ z^V;gZYe#*euD}ffA*~wziZ$SYxPr^amUQd>r`kYnYAX=a_xg2z|HqE~jS3Hr8KsUo z<@CE*_0qL3<{8L_V+Bx+@6j^Ei$w1Qu1^`KA2)wS-G4#~+Cw6y^cqam{xZ=MPY;=J z`M6k8+-z1>Gz?Xi9XGIw%~N9r*i{M#A_*A%htGyhm;Egj)qK}Q6BzF}qFz{|XlS-B zSVTbb{>OVcdf9_+Ou^pYm%>({fCB0JT~p*Ry`$5Uorw-`~_$*3g;ol1;`lnT5l-` zynx;lMz~WNRh+Myt7jlcF{gW0coUHBLph`N-+~(JOek@Gf3s><*X_?YN+C6=(egj# zEQO)yU~+MCxajauLc;HaT;@c9&pkZ`eYG-9^exoz)(UDp7~xme8^f^LTAG~-+BClYA^22>QkcGY=YyBVo0v$C;rQ%Fz;o{- zG4sZAwvqM#JwKgkw9y}LAxNV19qXAJvzzBtQ%6BckiMD9+yHNTySy| z7~VB_nEOFRPGA&sX4Z2I__M*eNWK3N6Wx=d|raD7v&Q6Ie zEFZn8o8AVAb>|@AKSI;AD($yy^ieV?EN4&|0}fo6CNdVDQqEV-Z=a;wB+o7OkQ|%p z_-#VZ>Ttv5Y4ys)fO^+UR*-+Ha8ER-BZFj2<|x}O3#HS%dABa;=*vj7La zvR~Pc&yco>B=ehV8yV%XkjaYP;~`xbLE{HgrQ0f42F!3S=;u+S`rfi~k6oPf0e;M_ zaYLMb3Nf|V1)9T3o)d&j_t??N^_euACqekG*a&(sqCjJN$3@_k5Z-}Z{*M+$T2!^x zaSGnGVMW%qBvl8OrN|;7`pkG)AKTi0c>soAzDAXWh>zt;uH5@0X^;2`$gsb@O+il^ zbUVWssR(a{S#X8&zdbHU^lQyKF8;JsJVkKQM#Zw7QW#jfhX}hz@zG!*#RyR)&DogTL-bH9k z|M>y72nfAjGGK{)fPQ0y;!r>>x((+Aaei%$f--<&iDNhNVz^GOXWNe73fD%OUIb1B z2TgtTX-#WqB6%iS7OSD1#?Do)#n4yy5CYLmTt_JUQV_Zm_nIV*P)@@8QfxJUtRXl5 zqXj<)Ye1BpfY|7uwvixvHrsR8)QqACp_#!Ksj}IF7nw^}e;!x@e|7PKt3~@N?3;hK z)=eLL{%yYW`8cGmRjO~bi~sGPGKJ<35ua28g@QkV1}P7SsPbMyHrW1*{xz`K%AAv{ zY`!4RisOe@7BSHajXi7r{VUlMO&@($scDCm)aAh0A%o)^$ZSD`%M_;&ahf4cnA#W# zhMN>|y7vGjR5=im*_DEHL`Db2GlEgmNubHSi?4TMo|A#*7LDKV9c!}w+l7-2iV(gb z5e+QzHwd#h(A?z8-?QS0qUP@MooL}FdXVMGG4IrA`7O`=dLvRC08CX#9^{6Zg$dyz$vzvHislr{f6%5x* z_>Bn>WNI4x&8NoAr_P5B`la8p}J&@GI3*au^11)<0B|4-2ouKuQ zfq$uDe_%`V*xt}n#}H5add6-zMDd0k_^P!Z*&tB5kSnexJ z^5X{~=AI+}Ap0IHB>F7#WVKKx-;3?jy6iEM=GUtsx8;HJQR!_Ul8?>LV14d*FRa za-KxZSbiggpbr| zMZ9$jYPV{hbu@`y8RS%WoVW(HI$9@WbS^r2HaxM<=-D{(`ro`y4~Q_beiz&-iQEbd2&k2Vt2JT~HNb^$Q+>NFq!|iT4w*t-Jn#_! zV_uSR!q{ctt!tsNGB{b1*qlMsm<0*?72JdMP7O(IGz);BtTS}Fmx*DyNv3anx_w<^ z{akZt+2^~o0e0b|ALCTYWw;~zrzb{jCv$r4C>g6>ES@BcNFL_<=Ez2_jDnEiH@0## z@YoEe6x!@D!GuYD+2J4h|KBBJhn74m-r1KF$m$$rxtIatw+knQk&?w{RitE4{|qL$ zfd5O{d1&$MPN3eu^&f=|yfIxO8_8f1bpd-H2x|H<)mz{pX7ET^Iq~!OK%)Gv;O9>n zJ$5{ui+@_2?H_v0MeQrC88h4*aTz zDgwQdxz~`ez<+G!uJI4?`n9?TU9q+n?bh!eeF7eFUoTs2iOnC38#Ir|ip-r9@qH&H zVTvG00u=~bMGEm-lLAuF0t4=eGHyXxJ?C~EdDP3p!>1&z4UZk7>EMT@W3px%*rp5$ z2BIRGE1mJoFAC2N%_`KF$yrhN%=ds97;Zb|UB`dC@n}CKJ9#;U@nuE9n%}Fnv+{tOZyM_A&c+*dS;;Rmay^S5)GR4k@@i{8Yc&f{R7o2Kw(kTd1!9%yhBMF|cQ z`AEje8XM=*^dY}vR#-wXPcq=7YkXMG)ADT6zEGxLhYmH`(s(H~@T=wP^a!pTo? zp`GK6@dqEcq@FVluX27+gHaHUSv}`8@1IU5i?My{^4?n`;% zT$xD2(=g$22;UD7Y_|nRDX_k;jf87T5 zSEnKr^guA9Zz28y{{vh>qrSVq4==j%|KFacL^pM%d`50r~PQ(umD^StJFSO$E=Q2~I(Bf}4O0XAd?FNHz!*4+jMe zNKS|Y5)1OmNhrOu8}g6WzWPcm1t|eYIt5w%a(nyBq$e8`i8u*!Xt+JtL(d!J0I4er z1(1HN*J0`A<{!27X0y(r!+P}U%qDhAd}E!hd#lBvb9f~IY5X}PAh91K^mCvKoAo0G zf->n)Jvdz9Dh$@z$*kw{Cq(B1IOE5ma(T&p`%`R}cCaLH493BG}=j zYJ90kF?vIxL?Rmx>g!9KUI7c)_HeFNGSTCehC<)L9{FiBNKi>)fE3MJDgZL6mAQ!G z)`8@V-ZbP@LHUJzv4GJnK*%T|AqzA{cGjt`9sp@;Th9^X>2a8lIMB`096zq__M>N; zbuF=h0y|nxOil$%JRRuo*~X$L?;?Y1quTO>Z4> zVxtHj@tmZ(+IoL^QI*}o|MXBAUJ8-{0JxBmg9xfYeYyJAwdm{W!XsIDzEZ zvos)=6^|o+l$?aE!G4qnBod@12$0`?3v0_=%QvkH{M+oJL}!s$OufTWB@JzmcEBp4E)xW&{R9X+NEy-$&ma9Pm26}^cYIlMGQ zX^ckZB2o>Wg zY7Zs;5+o*Qmf7$B{kfhDl9AW6_Y*fCOdAoZdnAkX8^ zbMtwTO`au!2GLNN#1o{XAHzHcTO5#IObv=J)B_R(33F#|U%7G({1^ftBQgeu`ukHn zh>$P8Om}3X@3fga1slqUOD=`2G1=~FLj`24PHPKvU`Lr-8rRm@?D4U<6Fb%$@9gII z(G1I+Ib&lbGmr+3ACWA^lNst{xXT1giJ}hwfE>zQrh>x zQ5<`bB;^1J10hon(r`prBy2%$Da^^KpaF>p=u3`}ybPf*F^wX7~FPdHq(M^!;2Pj_=x?u0$(7(bHwM+P_Fz7SCj#HLY4<)9Y>Jl_jfPm=ur}o@`E79O97H7k@QoiFgMWGsfYGVk=S&1^Z>bT<96uA z-ZdOR8cL3EQjj}&e%vWJ1d>|bB?icM``{znC%UOiunaNj!|r6QDC5V@q)J100eM&m zNU7ig@^CO9$>{+;a96fK{qSqVk32x0kq0E6h>h0*c$r-o66YUzOOo~v4N4?~H5S`l zT~nPmsK-mb3)^q+X8Nw<-D?|bwf1h4gB}Fwby%2=ZGU5p89&kD_euehq6a{pIfJX5 z8gpqu?g;>LeWoZNuTPo;fV_@-sZ)TFh>u4ba2ALR&Bpnm+J*yr({{)KlB(=W?eV4d z;HfjdR2067iX1(9yYzT|_CX&4X3uiDG$=vXNhkF$PRr(&UA!9xlt5` z!XQE79&AbxkTJo4q^E+@ek6#T9(Wt6NAneePD4gz2@FZ9k{I%|7?5TQj~>mZPoHi> zh-_;+%}YO`un|CdxqzesDM&W@Cc-Mf6Z-^ygajn}LcSk&iuiFSw=~N=SwNy=4IOIl z@Bv9CWq*4Hwe3*-AlE3Lfvk1cqXVsmET~b32S4IM;62p=uwbdKt2*TkHo~jNdiE^2*}`Hz{LP^{g`c}_xdc? zkK`H%o+H{1U@Z86_)!UvS1x?O8IHo^M+=SMlT+Q=x>ba!`q2kP%OI|sau=q)@za!whtfF$u*U=6h_hLFL46biD2V@Gsc zXk+93IB+>(onJK|`F12#AJqVo7of(UkeDz58&U$0ue@%lMsg-#Gk}~SkqmYbK(4TYC?{C%KMU zo(6xMp+oV&PFX+}rb6l~70;fjD9p*pVM=YnQZ)cbJV;M2kFANrfQ%^g`KIeRozs1N zajpnMrLRYB8V&pg=qDuc{D=T4j!r%xV}yWAiir^<-Pe9iDvMg5cBAa``A& z%#i88uB~&o=wkg2o4Fn`k##k6`lhxP9@qNI%3-}7lUN$wki#7XNiTpskDRUN%_D;3 zj)2S&*KP`W7rl2Xt~c>9Cm{@$rrX7J$bj0m-4`f9D1~zyst=X+U!5_>6Ah0H6Xuz9VbLIdjlIW5x)(us!`u`4u{<5f%GAQ{Oq% z>KPK23NpaQ4LiqnT0=`f;)QRewg^*@l*^aI&Y2Mjjvp(H z_ZJ{*0g!t*fCMvs_lw_M_)1!k2#~d+fQ+y{Pv;n1BHB=Be$BI0YExUTO$KW$S5xjNI!2JT6$cNAYs^J&?AX`ahz%R ztQQX)I679$k7HRtG7DnM01^ZVu|}}|3{-z4TZkVe0NIED+0+7EZMF3nko9o8$=%Xa zBLm1Xr&$;_T*hbG1)&?+Iw(Im%mJhcI*SvA=g05>5+-5yvVc51E;_m!I;}Asqwx60 zXf7W`reRZg@$T9tuhwt2S;}JFweBXbm+sMSsjqF)IjU^70;8+k?lg&h2#nlLY^23W zeaMe}(0PDv%u8hfNq1n2odKv^`rySAvCne+2&>YpSkX%#!nq)}LP7qNpLP7Vf6GiKKi_DCpP!zaiwvpZ0dl4YAQ?KA zR#p}kx{}H3lQpiw%2F;MC-4FJ%FR0R`(yj!-yi(}g*nN|`0p3KUM>U4urW6?lehnJ z=kNgeWXh1Ix;^E53T;GmtGe1Vlwx}4(4wxP>Yz*LEe!BWJCrMB+R7gA|oM#qD#7n52Q0NAnR@V5HgUu03f$^(}N+~qMflYiAJXj z0CHdZ*@*@q%# z0#ajg+U)kc;rVeSfDA~=hyWS=>hW_>v+%cDPs*X!aPHhZ~d zcDxtt;Ly2o>d{~CZiy{QD1vT!eSs-jwE3oZrF`CeGj(3y-18}E&=|~0oj30ho*%_J zuwh5y12l34pO3U3i;H0q8aTXzXOL@N`ryKEf6MT2OQ4YWk;tLr~Q$Lqc8=14x`|KK3d%q5^iz zOxNg*l*rHjH$D4$rc-+6Ox|cmoN=ry%n^NkVWpn)^La_gdoWg0htsC;`=dV~`1Q$! zm12N|;3gdr9n)Rnzdv4vi2%~xj{rH8+IKn?_fto^Ik|ZI60w*A!mr9-$*fAiRLIPwhVc8RufDD@9oSU0&6pVqq&8&EN{gJ@P&)s_)>S}Sv z_3PiDK$o`z1Dgh#YHOP|ZQrhy@4|*zzlD^s;%e*FgN6K&5>UmbFxjV&fn)$_Ead{y z)z^phQ#gHky3%1)=wtlIEQRe$tQ1YYByr}B1&;nsW(;I&XYhlZZgus5M1;XRp068`Q$dZx(Ajfh5i3GU^ zFAB={<4HUKa>I>>*L?ot0&nsDGWgrIN>MJB<<)@^YiJ~qo5JV z^j0G}CL2}0{wM4YN3qB+W8dJ{XU>Tn6FkBZ+fniNCxA>E9P)JSNbFl5cO9MiuKW6$ zPwzPI85;DxlQm=Vkmvl4)V}q7cvEU$^SB-Tp25LI*pK0;0~t|}zi$|V+_x{kK)gSi z2$CDvkDby9$l(D}n1ZBSj39#y*~u;eoHV^u6A|7hDB=L3?+L<*2k zJvCfFf*=Qnn5v-yM9NN~!GQE5K)TH#WgvC2&h8*1+Wasl)vNWgGi=yxTP@~zAt0$t zIAI+ke|%5^Ql#Ms0J8SREvUkevyhmMcopzd4Ru(KwFr;{IGQ#gI&R+%Yr3A41>|zz zA=(4WVH!3MkcJ9G$_hON#Ukaqu%}OValSH>b2>Em>-18+!ck=`*A76>Q%ATmPw5sC|1tNhw{ zN13L;fgZDGE_LX1jsjRVnod4R{2?xmAm4n=!!CvW=9{lozsB{WOX_n=XBqMr z0)E7gB0@gn5|;llx?cM10$C1(@!`WqnVJAG%a_M&ppVI;4|Dtog#7F!moefRiogKK z%gB#6Hr)6k|C%a2qSr>istZzp#AVrQBmwyXrwuUeTc;Y3>r8?%tdLI3<+Kas6&2WC zYR{mMPAr3=jU=i_kF`~Gtv!PV`h=OGiI6pf4qsykuTQTmErrpE%b1Oo{b&Txmh8} z%z(_9zy;(bvgA~72sa#_kRt%(86F@nT=+^_kn(_xur41Q9AXFwh$R1Kiq%UeAOVo^ zI(LoRtO)|-T}eRt<8}Nx;#;>yc3aFg3`mETTjPgpjJBK2LO{B32k4kX_>VvHbJeYn z@n33d>l+&OZe}x&NRDI_Gxp=_bu~=`1DjC%Fo5)kz7jyzN(0hRaqu8660V1J4Fws< zgI8fwa?e#+Kt>c!#~H|obWXBSU)qNWXsGO~R5}Wi6Zs2b%K@^rGln~JhPMn8aB=!n zP8FZ&)2DZE`_D%XNc0W^ApJUByv^*7)!|w;ejD=RHWWyZHoq1*=Mm;{tq4j2p-Q{1QKI7%Qj;$y?Fzz@3{n=}hH9*`zO%gq(u}$xA^Z zKW5F*%lHuhxpr+MR1tT#pufLHeo5zr%56|OE`-z@*U=G&>#%2v{;s4C&|-tdW_W@` zel)A`W4HimVTy*U3&CpG8k-iUAItG&m9@(3H<#%njAagovs_PAIbzLuDjEWp=z=ss zOVGHad!Q1C6yK%;`w_aY>7*niAqD%>_0pcte*0TKAeqIm5A5trPVQvynE8PG?QcKZ z^OEaYAU?l#w*d?C6ZL)s0BAmw8szv59Bbc5ZT*bX#21+I)dO;$DR>q=Wq`4H5E|&P z4*48Q8La5CDGy&f$z<(hUJqjnU9Oy*WW8|&uXnjd@cJBx=3 zj5#uv7e``RmrI>(jZ20L$lw*R3#U(QZI$8U)ajL)aQiVr&mRP-G7cZ37t@jgq%cAO zWCWG-Jdco^KzSi5 z{`@n0)TfCtAZu&tPVL=|tEMvpAMwz~Z0%yP;35rK^!`&?H8 zlSpew{lbv|68P9L9RiZLZJBa?NOp(W>2xd&{B_oa@#_4j2*|C{5dfqn%I=8w^QMtY zhYhNX^G0wO%lt6<(UeZ-7^|E%T=?8&cbd=>XWJY$HRIN?ARpl_ip>pp{1JIS8fE-Q z?jk|*U%uzF&(8c-Ajpkh9Ho1(D~!epx)1y47aIkB{Oy^~KHGDR8~)2T0FX}gegps* zC1=t6-`Cf!ef|GR&Y|J_C7P&w)hWo0`BBlXhzD_B1by^5Cl7h5F%gG`hOi;4JwubH z9zuYe%53U_O?XS!;EeCW2*?Q6@BrzO&VQjZ+L0p+B99!2=`6{SY%=x32V_t;AP6!^ zf{^G;>YHAv5C3~;C>$Oj=~}j8UD&~dJQGS6HhB{!10jb<-T8jbf<{AwGbGQWhH@tX zq~8?`NUaPYwKncR$F|65i#e7BB!8VlgiE_a>lFf0&z#ASAoo0~p7{VsZ#_D3*EO6% z(Lm}aK9|J$l(L zXaYzokZq(Yf<>{oPO(|qrVlGf)p%dm=jJwnzgYQkcg3f^rk~a zj`|jFyki@kfkd>VA47t)nc*J*WNZ*1kswRsm?UIiFeJmr#JISi{(}SJeiSX~BR2w) zPe>5tnr|6E^86_ELI7lAQ;WC7?S#nJbF9->c=Ga&y z$hLqVO*Usd%}1SC=XXZ6vHjO=(H5IC7?7+Wo6(*K!TA`F1JF}lLzi!@t9`w$&fPRX z`w{nBBQowfi3s^P9da2+q{gfC3~K~N?t<3_#75eUIX!~hq;O9%na9FDro&j%(V<~7 zk%~R^u0$V4ka!xlPXds}3NlZole2cABp~rfV4o(efQ%)8jCJCI98kE%-BhoOwLu?t zM~B6)ZD}H_*m`xbW~Wx`K+kr>iU1PrquhyP0U94K$dWV@bAucK!yoDCGs=EksHQK8 zD@fwU4+4Iaei;U&8!zYE(t@Xwy4@oKB=#fZjzN&JfQ(2ebHJ+C=$h@tg$ozHsMEro zcr|{EFl5e|(>x47cF)NTlyj#tqf8cd{*O|aqN2EE6e2V*hSQW8c&Lb}w5`d-7h$uV z7QM=*IOkc0kbe>A5%~CQj$UruGCcs2>&M=0tRLwVCj zgzr4O?t;LNI0ebm;Dv{8T)y#eD1O8MkWN9$1%H;JCJG7iNfm_Li2V2<0eN2ma^DnB z7jV(znK5_9tXZ>W%$@7;bPY}(>hC(A(nW8Y3!7%3Cjc#BQ<^z!fQ-;!L539hPs?5t z8ZvT9N`P_buGWy!m@&gX7PJ1%20vB%oa2t8$$`)xr;(lwodm8st2acMYgIA|qC7Xbf%jKqF zSCR?W5w1SEznUs!3eZ%>6)F#mC{4u6apTd8crEB2U!VAXp$ezAa)xR6xJh_&>?iU1 zwOgn1$3RXCA)+{bjHUru6(5fQ>32GC0uq;VbJuHQEqD@*Ben%Uf>)D>bvWY*Amih! z#Hy(n(|h9xA^Fi47uPFt{daT&Gkqq2#lVyAZ12DO2=n{^S28w0T3Z2g4W}cPeOTs0z<@uxPJh7#t!4sCJ**|W}Jov zz?x6b?dnH<92)BKO+}jqL6CFlO*6W{j|h-9@MD+&Nx4E5Wd75Nb5SU3G9FWERXW=A z=@oN_5tZqBseX*o>2U2%6iEhu`KFgvx<>1;H|Rl-ArSH~_>s95Mu4ns((+@INC=+N zRI3a~{3a}4{`~VZm>3+KG2{6R8I75qyc^pRIv^p@7;CnhqPw?tqjQNJkA>reF5YH| zVmIQdU%`NkFr?!o-_1SEx&c#xSnqwnEX z5>Ku`ek7pOSDo2lmk(t!bq{fO)6wrKqwy}iBmSX~po zj|=M}K>B3?358n5O+<#|AhHkXapJg4vFpE`L4Jfj?VTG${HQPhQg~54CoAjFg|EN9 za40J)SGfZ<{D6$>zy zG(ftz$DhS+%9ID9wa6GkV@wFiG2|nJk1oA@yOPW+AdZJW&YX$<;nej3KqjjIx@y7-54&n^4WcLGJSm=Qt z?>9hxFa;L5o)I^BsB0*-udgq4uxn^?+*}y7HU*Z#?wZ>-*xxk^ZyJJ4v$}@*Q>JVQ zA0QFBp3V<}kooyfYr=OB;gv>050{>jxeToYMB))dJ|9dwMHio=_9jwBB1mI*9>=qc76rI{{+KBuyRjGtp3?O^X#R2JyPdTmJw8^z!} znTp^8(!l_dEdT8GYMtZ8_4>8-_--u=$XEhMf0e{17!k5`B3=iZiHQ?SGsU|P)cf(q z?9e{d`dnPxE-Pz%u8Q8Cg5W@SyA29I3`@*@Y397U?u<5x5w(fRx5ArbPkp9i16 zDNVWZRRF9)>3ZPD`w5U|e)~bbJtZY6%hZz!#rxpD!PFj0*3=Zw)b8l1)hSb>ExyUj zrpaiNDJdo8sdZPv2uMI2424ps$NZ>h*=s z9y@keRUA9^Y$199^ZQf72W0sFC?m{oX{xJfG6w_Fp{*CmOd>!sR@A}j0eG={txn)a zypasDk7YJ$XN%(@J+wb7%z#X;fEtj=Vp8J;X&w zI2tqK=qWUs-nd>ha{?$_ovak+;NUQJ8D&30db$b(In-gP0yzHZQjDdgP?Q!&xIYS% zzRb@9q}yGKCo$E!b=r>8PHjsq9-dn3b`wB4;%PvZ$y@>gWX6#)kmEouQol7l{P945 zj~hfvLaLfT6MQi<9@p*8RCDPWen2MT1SBpFpET8{2*?O3q3F3-FDwVw)S`W^C}Fs7 zGf$C`?083oHnbpw6eL1O;FDu4k17v$WnTPYK!`+&M0P}Y#I;crUxoll*1(2^i|Fc) zoLl5^As~YUi4&01rZEXfl7hs76r>=*kDq-t!eBpyFQ_NvXFq>I^pj_B6_hK~e=je0 zJ(xdpUjdTzVYiyH>^E9l?QbvOYDb%1X4nLYnyhD4MIm0)lKrKqyrN-7UijYy zL%He6_!f6lyd`KBw#gRnb=RAN0XbXCQKC+(ML-PVBiY8=sEeN+o?m(P!eNG3Q>ZD0 zbRB(;FjOY`e0>@=CDqZ9NDyeqg!+84nNlOd9L`+n$qo2Ij~PU_jH(Y|So>6?>ij4A zYPPo6sC{A)ARWRCB%aMwS6i?1TeLbinHSFiBz|_hqfG8H6bhrc=wDu@xd~1`ij?#j zmLK7SnmcDsuDXN^weVj;2vvaeg$76%uadX)If$is))Btlj3Ohub8}VIWY(950?0t) zLKSq6#>_@&`{}}Z@ZnKcS&s%JVd4rV9f=9a-4YDQGcpNC$rR+7Z~_vazhC&ds(3;A z{EgcixiJ1CocRCA0ErHxJ%6)wJ%|hsjv|q3-jIUp0p>&*YG_8GBvC|qw8iG|o9$7;Z?3@;V;q)XHBn1Jg&{}m z();l+N{5^^)1#)(EiIkHc3`^Dy<9RaRD+(>JLkb%M6#DyK-wMgWD*VT!-h_5Z;P(J zHqe8Ot{UJ;EFeez!;kXPkCJ{oI=qV&gI=!^?nqoAgkCKmV|LtzK5TV>B(1n1Y|S&Q zKChY#`U2H{Ea!|yaOJv2s~KPhWT>ucoy_DM>7?UXrurkf&*UQofE45)aRPD=0FrGU zTmZ;D{1hbC<7eRmByDCjr=ADr@Be~;oJMHKjhiL{NK5dRd-;1VT)6i2wXgy*f;SjS zCLX+N;*D)6exyR)>p#*vVa$a2lp=*1sPt$PRNxTlZZgn`kC0+%-hDZg29Kto*f$k| zw~1^s;CJ!CSRiu9lsWv+DQz~}VI3Nn3EzY#(m*XAub0fpZUR2S3diQ~0+Qc-&6e~L zq#yrf_UJbNh7dx>%5Bi3AB-E^v~MVFu)b^Y=e1AV2%;P?kAJiHM0=SdjNbHkqfb zxe%De{~+#*2K2v12G`)qEYD0AnXy1=(#y*;H6yt4c+igh*92sNnFgcx z?_Iy2ngImJV!}tb@ewDM;kh(;qc|XGLlPG5*)#1BT_lx+CM)aEv^{$SPYc|YS$|A6 z&}$wvKmY82gahtS{zoE8ylH_>Z2L`-O&{gcg8Zivn)Si)@*p0>gBW2uvU(X^7#hjo z!R~kv58^@m(=>knyr~;1JLAFo{~#X3Kg#7EsT+mA+*fUuwfLh4fE0-b?dyYh5dXjp zZbmkVjNsDS2724dRcUEUR%VY@gM2^tJyO{#?|V8w=(`QmUVN|WH$$@8GCs-b_uoI=r`@0_s4Oq9EKpx))UYs|Wqd~S5H>ebH_E5iP zdw2;*iZ`ux6hFQ>&#GUE=Gh!o`_BLsBJ)(g(bn0s!<(9>1arlIg!frf-mwiwN2Xfd z8UJPN@S-;1$2@@b1uxOdNx$@Tx+3Z{x#Px-OCRALHx}Y5<-m=9%}jf?do#K0#fDUQG&6P3$wC0>;amuSTFvRfUM8bQvTzgbgqJ(`^$Qj( zCb3}gy@IO6>|H_J`=X!(o)dWb0{#qSec}A~&nd?H??0PEDK_TmxpUe$F()@&smV4h zNl94}w!KVQ7cQ+T%KQ5joi@N#(2_|gmcX@-A%x>Ujmgtgd%CLIJsvi3leRJ=gdLPo za^y&f)e8Uq2&oS$`I+Lssf^-hlv@M}_aZF8yHD-4Q#6q=i9Xfrcc+e@6>FuC{ z=nrj3kw1k}_(HgyT<4OuiZodCWiM{lRQxVRS7m7&EQd`3-BehIC#1wsu`(dB9%l$0!oQALu6KLX?e8iWffT&{`*l7cKMs;I22;5?o8{u(RZKYmfU{kVAi-25E* zy_cT5wXKc6hBdmMD_^kNup})dY=eXhdC$fA9S(C@fg$4WkijybtDs4f-edzYXr($s zQY+iZ0gv$5KQ!3i-rher)ZgWyuZh~#?;%6U*bN)TW@p2{C8M5iv94xx_>pWd&suF& zx{3_ie-8|K|N5~D9if|dvn?(F5jEBsv>!bTAOla?8)iZ3pWcV`cyiM~)9VV+G_dI; zGUUFeLpr$`b8<#PI4b+iH$!OLC}VOC`GNWh-@$`PNe6p;=&IeoJR1H;Mt(eT;^LP# z?;KEwJ2$_)hzxo7*<{6Un&+s80($X9YW{NTs@t~_Aa86~I6^-%?LEKm?#CHDqc81c z1=-P?sqW_iAl(C@MpNTx0}`(TqtW1@Zkm^})~xxT@8S5LSdh80XLJ3W4%h=DTjGtX z^!32Of6$khqi$Dbtn}cZbBLS_A_$UfTbUt~e)Qmu6kjSo~99ux6LEcJ3Iv6UEpaF`XsLGbFq6IDo8h z8I2%FQ9mwNd=HkOa#czIa{2pjT~ZYnkN>Mtj*oM&9=myg4LL`akl86yvLzaYkdM3q zo8MMeR_1g#3-Xp06=;6cbb~c}3C7QBY+wW}QPGub%qC9s48gi@gM*&-&F$xh22l)o z$d+uie@aHo2B0G_azo5$ryvt>_VMi7e^L=|pT$|ogwfc45903;))X3$Oa>AIva1UV zky=99bJ8(Hx6MGz>gw=KDgi%kIXUopUES-7fu1vf2pN(ft*A9lsu*@F0)7l30ck9( zfW%8rMY5sLcQC0HMN*G1Ik}>OJgRQD8C0*k4Sw9e|HQ?|8tNJj+);=F=t+-VJh6Yj zq9CnR+LrpJ`WBs81#~FnM-b$V8yiNDgG5F&1ON$ZIB@P5Mjw#r@Rr(14 zdGdn`VsQmRbjt_pMi-DqP5MhOWs!L4rOYhk$M={3K#rdy`|;6?!+;#wQa8p@a`Y!5 zK_;vEn5B4>0V$nBv@Y>rJ__~78WJ^Z%7Qc^J^~*9JSFWmWHNW}zMVGZ&wxlo$Z$X; zAppo_qJX3*YsT`{nA=AWG&I!J!7?^GcXXCyOAV$2KrSF6gjEj>E-64RSOBA1DHro> zJ|K+?-rBDYkeA+iUor(rxpEmjMstEOq};ME)+OR8iHs0Bfa#cRGcQd*ErzSy<}}%z zPG`C6N6TLsFn^GGJfD7g3y$7fpML7W2tou>_(Sy1tY}R`S2_KYA??^j4rhEmP8%BR zNB7cNS3INgyq9q#0LUYw3`lD+=3`w=ow6U%lQ1ERtqS|^wb1w9gZR6|$}SY1_CSM; zyRgw?*>rZ&L;8>4c&2-YNRBdGho#|Br3v-?k+IDV($&SPJy zh{wRYHAu$)YLQ_y|trtxr87YKr$fI zi}ztK5NsC$GI{LS08At>4U!VO`&7a;@73hf|$kn2M zhtmFgz_t4^0ojk0$Q`o|e(YL8q02(RC5kSrOwzCuV|qN{NYtf(l=F;Y3co+KKLmCPv=-A<$}i72V21)$2gjjuc) za}Mu6as0rYFIC5#1IJJ7Kdb=i1c$D^wyw5G=U3j*)G8W~Ajsi&VpD;oW69(rBc8?x zj~RZ96ePS~Nv%`I^-k|Vh8&lxs;OoH`5%G!jWGU$8z9JyHKPSc#79UtLNH*&afrR2 zrO2Rk+>_s%Iig=AnFZuQU#Vi=g!qv(Gt4MR?j#z{MsY!Adpv>uYth)t4DZg6?mS@l zcpDly7LdDdGlVQ0c@h!{@+J+);$l%hw#M8#)li4^h@+PW~IFXOXvRmh+E*$y-0&NaE+ z(Pe(rdKoljHv2HL>DkxS4qap^wG#8^)4f3{@Kbv~#ROU@^Zk;^JmnRWyFARt01xP; zvyg);$aYl;2ms{Hu`#W!_)F;SqB62qsV&TzhyAFMkC>2Hka=R~TBZG${a`5M{TA6> z{r&w+(@Y24?e9vlLIRQ>9%e)&GGvdJ@F|*`um2Jp@2P0`kKsqsF;FG z@O#}gjWx9`@ydYA*s)^=0p#AJ8(tjtXPjQo*P4)*w{&S0Z{g~^yac^rlzT8J49KLU z>As|%-f_L-=BUB~4M-_EiaPSjl`W$MNJBd2BN_1cHHv^DF(JW^ir<6*1~M*|7IE5~SEA6bFzcMv5|)ERc*6^bM>f5`a8* z`0zu=CMd?ShaQpwq-GBIQACfdAwiIH#7Bm}AnH|CkxSDlh7cD4qn7&1&}*#a(WbnF zs(84b)tA|ZvGDoI>(`;*RQ>b~EApc#e*y%WBwYu<@C;t=8VT}hSKvabof*v$Ll!z* zR{V^rW-0r~h7CK9w6-4ExnaYR?2ucLY}BIfn4*enhT;(YNDH#q5Z?XwApSnFvWxgp z80f)_z(!AhzlYO;lN@Du>UJgU+qh*@NPa|u+_YumKD8&{iV4VMI_-GS zSE&d{bpyiG12XyWi4$Mm`SRSC=RQ1lkweIH$3H}IF6cJ8hn{}o#9{g0BO$)N764fv zs|-lo+z>#X8p$X~gE1iw$uT}w2WuF^ipKR#Zg*3Ci&q=#e{Sj0yoAv-BvslmbrAw2 z%=;LJA_PE^{9{0hzve}-Ax906#>^}__4xI-Y+yy=>DTbjOUnB&lK?VzM1ag;kACz? zP*_TtTFDV&m*8^N6TB_>f-aj3vT3KMZ|~*@Gnt$23K#!4Czs;%;}j^nM*xWkxtsVA z0Wxh0PC}L@kNjOSEW_!?;uR}`uc0zZVgi0#i~l2n+|eq!f`h(-BgECKW&9}IUJ(pP z74gtRhs6Qunj^=@03qjyUchAUJbGEIxoj0fH1nWFL{3{_g(A)>LH zi$Z>rmH;48Jg>4VJ7Wo?&o-ZG5Kn+NoZ1XYG|6t*JnTcf7Ir`XLJA+%WG!siuBPja zT0S-a$g#^q{2*IbO#wfuEA5`}x4-@2?U4M41o`$K{`R+opld)?`)`t0X`$kt&468rH}#RMc(=sU=wF#t&4j{?ZT{U<)W z`Q^ED=RSO_@y>CiL^4gsB0YU*m;^({JW>~qhJq9Liu4zrgAWLw*~wh+3oudsalwN&s7 zIa+`;Fn;9lkr?0GJqV>uI2*LS1JDq$`%??K0F>_P6a0Wbp?h{@_WEZ zAxYMv9`R9-$)!)so%`omd_eBr%_JZJkVueop9q5>6PCUG_OfS^lauwqXQ}0#xAxM0 zr0YF_A+aD!GDKQ_29Pk%8h2DLxQG5*yg)gE0r`+(4ifoM0+1TwM+S=~UIYjUf)vX^ zuG(<<@{NUJmPxz4YGEjqM3?%j(3PLH%w9xABsk(RN~r={RjBZ=B0pk4LKPVmFGhZR z?X~LNr(|L`4CRv$q!kj3I4#X&AURi3=kDwO>ie>QG9HLP;?0%keh|VR0|K zEZC~myq}-P{(K5XIYP0ie&(tl-GvfVFpI|8MKX{`kDhAyx4(-k&9GGRp&nhgWmo8c z+_h!hqbhg7@BxYaxK}v=Nma7btpSipVu0)!B|uXDy8p!S$6$E-O?1X-IQJo|#K+M6 z1Dx9poU!na9Y3-EUnzM&#yjF`8`S{Px`P2E`jB7VaC6!?)>GZc@5yftOHNUN`3L0a`YcNW~djQv=0U-BZy7bVz(2W{3Rp=M0`0Rv9G&`Y=PiQS>Mko3dAVbD7le3?l&Mm-w*)gP#0z+8$e0`WH$EW&`^ID zzND{a5!pp#8ID1a)T0}>Y!@Noc3}uMZ`l|sAVaSwmi^{ypEf8bAi03_@c_x(9tI$} zWz>`aiL;Jh9)MF#-MJ5OcQuMH0g&|VbDY~3aZXYZkg@gdI(1#xFa$D&0p#%dun`}% zUML$>51&$;c*JC^=L@nP&kN@f(x@43=!IAEm3>h8`XE$WN^Fa4Q(MNTaqTV)NFd_L zMc1z{Iw?&^V#vo4AR9*kkQ#cn^|zvdlaPBt0py5gjD!Hlpbl(qV??(|!cOcFq%g($ zu#J^Z%>DD9XU&@R{r71?LEfeT`Th5^uplc(I+JGg*|*P%PKKbYB~xGmO``yiNRV~V zi7k?X)UTKy49MD>!3jrUQgXf+AWx5pjATnU3LTSsj(~&&WQ4})m>prQ!k8Rh3UVbEkczK0tW?aOu{kucnKZ`Y;$?VXY;keF z_)*&*c!u)vmq7qYGLWGbg3NB660@Uo?AS$9Tb0jMRPo>bAPUH{XKV10D=x^hfB0K5 zuP1b+3O^K`cOcaNAIERmduM-e*?Vtip9)2i5OUes8Chp%f2?F@M9N-SQHT?=zGagY zviIh9zd!wPe|g`%U$58u^?W==!Hy*2sTe;5{1U^TQs5U=waOB!&_C~?(|L3 zC=kzy@ zsH~bdfH zK+RZOQF-#}CwJ!^kzp9pW7Kbn(_`CJchln-x;t2xk0uH+ysTSK5x8k`Kr=5|e}zW1 z5G!nZSH*}232bn2#jugFzmj>myQgiAzj#_!VR|uP{A-L|LM7TdI<+^%+xxQhFK*kn z!oImBvu3RE#Fd`X_G*6=MH)az6lYfI$+sswe!2R4j+dxi(_EeC{&i=#wZHcOicHrV z54e1!1Dc63r*{}OK{NTu(27C$MqL_MXATKt4iwVdfKmPHDj{`L%e%>=S>CZ;;~6O7 z3M_`k5SYo=)+j}#;2m-w9&6F0aq;L0Lj^Lz9uh7;lRd&AxjYDs$U(ORXV*k;yc$D^ zm64V=^>#~hv%+@8T`G1}Mg&?g^_WLDjO(-T zpM`w}P6^C$5azMTkAYDcFg$SK3#i$!NOJVg%>SH&>_Kglg1Bg z{Xf%t8_xGEteuRo$n|5>gF`Ped-LYI?~+BGe!j&UxLGDbV_^BO1y1 zoYhNK4=(?iDyv;zbQEPD7GzpL*?+W++q-Z1ZO?eTzG?GI{>#&C?p6c2_w+%HqFAWq zr`RC>uZcSydxS|L5!itZ88MaI3~T!9z(n>>pR9tJzHw{uH~*F9 zJvpql8ei1$#P>H&wYPl)ysky6&jv@#wo>cjr~JKZ;$?f$>f6=$Yj&Tp5@nGJ`uz7s*U>bm(wqN zE-ZI>*fq2gX@R2w1PdjL+Rf#c6V;m>KD0J7K8sApi{jA2rWv9}nTkJ#DJQ$3oMNJ< z{YCP8$X$pDF_c@nl)zZ<$yHVGS-(}#O{+8q9<}eKbEs-&LtN}fCCdRdW5Un9FkJ$- z2$-d5SfQTnQ{>Cf3`GC`lQthRpK;6ncTZ2x1v|AJn=C8$`$4-M^x+pVN;C!YHEyIx zsxgnA`(xRsq?b>cA|gUTmS5On4fwK=E`xxtqufvw0(p?l@?$`oD*;z6x&SfqXmKDs zwLf^uP{WL%_g?&ujxD&p+z+bSqM~{A&FqZ8o7B^+=Gipj?k#TAn>1@wA_WD=tf!Z2 zYul5kLTg-Dn2l%syGccFPYXg6!mdgu>+EJ*5|S9d>}qhtGJ!MbjE1j?$cd>YHk92; zZ>mQE(z=`{vz=ttTIL=WkI}*Nnb*9FWK0$-NX#b|Vgn-ymJRJH-*rF{zSa1!t~ILtT#yV`Uha5ymZbXQ@;XWN9Le02FSBn7ZOjK|XBC5&#Ju&CkNcL;xZKpn}IfXPV-xf)>OA!NVl3F;NY z2FfT9#W6wsj8nFOel!V!{@kj)@mb}2T>drrcRK#y^R&ULPo+wqHyZA)&$pvKH~#!@ z%W@-e+x5xDtkXxcjU;KA%9mPM|9%|B8{5Q%b~f9BzOvy`l7)qU@LG22ac_T|)zX`*&6GA2@*=8e5n ze68;DEf-dUgG0)Y*Yk3_X>gPAZ!}wxi z7eKcWRPBU9o3*S-Yzek>Me%3#<}Q85jpf&*)uFMl@>?T$dZ*}iqE;Px@FhinTil_| zMm_@+>5D(3l4XSL!jv=ScqM7wH*8yk!2>C#W*d^RS7LeM)U0tb>(OiK=3+7Wg%W>B zFC7kkdwisp`R)G#rcQYK^K*#565{&tr_1j69?9uZ{u-XjzhWe~<@_91selH% zYsWbI-i{yeeUn#@d8Akq4enjcS96Xncp^9Lq88ap*F&@si``%#9pHAsrv+; z%w{x8=ic`B7mp##J4Y?ia2$A1ZSTCG8Fx8R_}#I$lrgBchx-^#5_`#MIB})_^0dgJ zDi@D`Q4|Gum{E-%;K-+au8U1EbcyWQ_n(-3uv_tj;kNj;jxDpVKePr1(JJnd2ZldO zWgZ3H@Sl{|j`I*}YDFQ6{ZgS9lOFo~+kj#Nc|LJm)HmeDQGaC&u z-amfLbhQ4Dl)PhmF~PPNI;nPx7>lIz4)-U%vI=CR@V2H?%TwcoEDu3IwYzjMT7;Q= zib~!2<}_zaqHU4n9W>SP6B?8Tr;okQ8W!W376$O%7G38e9T(xqBR>hf2R zh;Q9N*o(eQ8Gg%7EXdVVm9?9wl>#Z< zA1a<3C*>HG%OJpde9fJsuyFXcOzz*8J;N(O{%b)TUKixq`3ce~H|Lj6*Bh>ZS0lW& zi9ybR#CYdq2+{Ah+@7A^opzz!B66V426mhlUPd?G3#BoxJbo`LXQ(hQ;~gB64jJ_d zzT@=o{4evL{sYxRt$F&Kw`>fk?Wv;{`2ZbCwC0E4nb~)uP`!+Iyx92gVCR9}?)Ij3 zEyeT2z(b>`_B&ntFj|t@h5l^hJIz+v)8pLUpJlM(`JLU5uwoMkj{2gyY!zo>6?fBG z+D_NQP23bpab}FcJUF`A8o@G?qrHDiKfYag7vc7~l#&ohUX?l9{gVaOXFV+iL?>P_ z`-vOKj8!sQ#8R){~v%x;0S!TX;3ZSA^u5uuY$yOwH4tpfqpJ|l;I5dQs&~E>oKKP z$`Se0i2twRU#_{(?9$}Nn&()k6TSzu`9=WMl39&}AEB&*B#ssPOb`6E{V~HunMj}j z@($Y5@~})XuL7O47I8>G1e(gdc;!(L&&35@FSGk=G28NG>CHRJ^=)${*SaK=fG{J_ z8%7J=|JWO@N~rlO+tm7G6tT?|!n$%MPy1c)F0Q)sB)>u-6N<{An_C0u6 zf^R_yO3BQHo3P6}YVWBx)nI5BoO3J}6n{aAAd=oD#d9|6c`Fj=!D&@8;5gHy+^6%O zZ8d{Zw_8iQPjNJO)JQGz?wzyNsQ6;9#qd z-ciT(2W)rn%nbgTxz5URS|f)K+dsG0^&S%81}qFP zf{=Y~vy$V*J+I!O*|QXdFe78v*eN@SbZ6TAA3xR(*q)33JJLDQwxSTDQL{^kiDkRVa|ld?`lHL< z_{l>Yu`$o@2|jh5Ae0KGG03^HjKAXbN{KoBIZXZH-YaeR+$+hZ_$GUY*Bw~>26ydj zr~RCFMvIZkYQZ@v8nlTB&^zCU)aC3g#PdxSeX)&}do!u%5#sfW#9| z@0&xW7wY<}pu>)NGS^62wS}Gp|~W7!=Lpe4)Rq zVS|6?n)D0v7J!eokd~3z8RR%Q+}A~~)$6>rxI?I-Xsw;~I^z9MX6_2h%k;qVx{S`i z!L8QDq!oxHVThAen(%e>PsS?$DMvwry`%4Eh_JR5&8-{y^KU*w&Q)Lf`bnN-B9?0j z)*_Vr`6J7%n*zL8be4hbpMOh%l@mgO=Kvf#V@CV$!`n78ru|V<5I=H zGnpAN03&@7tTd$9Zla0koh4Q#v1IwsyC;ZwozT1z7`WY^6y)Dq!HCCSs&XCMm^bVu z2c9auw?^R8HV^5}g`M?STmG~28m-fA)o0}WBO08Rs}sv3IHe)`wHPvOv`2SS7i~z5 zk0tT)KH@cw#U3iv`#}cz+@8)4k9sbLSh+3GQ(in9`7c^66!z@!HCmpD1i#e(W5i5m z>RDYT=hKG~)!NK5m4}{+q!uh$$*4OCI!^8-$q-Ndy0Y(cm-BO}@iNZzch1C99bV}g z?TQnLmQjvsDlAuGC-&mPuQ(DfVNx}jziRs4T&pKPOS}bMHCaRi`u!>OLqy^d7`&SC z!pw{Ln``@y z+wVCpxtWHH2Qxg(=oGIuT}dz}%RL2~^Hh@$==*Q%oKXiP(}FtkmtMWLcUH>QI(==} zr*E)N&W-a7hXG}q?4Mn?qO>E$xv1JcDA#5o0d~8~K0(0x9)F$sW9f&XW?Td@hkmpN zG=z&g5PW$1^4S>gexG&}eR4LGZy5Ja*U{_Z{Jdn2v2gYH;o>3&9r!wl zlfqBhfNs$zMb(F4qK+Xfjg9Q~q*4ubsF7o?ih+x>JTC5Ub zN_PV_#9yBnR~{&$2A#wueFbpm_(o;_N83^9D*j9Cvr)_X;Qe(pXS?krzbM)a6?;Yl z-7ma@B3)=Yt?6~0YxbJd?~(oN_cH%ok9E5+5E-0CfXuWT%yh7vO@u1kf*>dF@Y*g_ zT%{IpQ8EFBlJ8#`P!4BIS5YCD!j>716v_y}hdMq!jp>kD{L^_2=k$YvppRD#=}u{P zOj2Ot^1p746FurC>3byW?kY)X&1`yW?&wbeCDLaprq{{!>G|&Io>zw0{5KC~15IBo z*ZFSj!*cj~@aE}vuOoatO$_z-*W`acT|PB+&iJfbto>cb9Wp%YA|zIIO&YL5!i|S} zr<`M+6V^&6ZxhotDN>)!Om7a*S$D-PQU)CF2CsGI$t_Go_^Z-K65d87eu*7p@P22W z)4IkR9~WURa+t%y1thGC3lAV}KD+em`!yV;@%EZJOn;ue@lLHFDX}7I!-XVYjZKJ>j zdk1l1P+!;P9)$Hg!N`f_`ul z^i5^vOnmX}wWxO_Z8xSUI+gUpBZXg+F@1GxXi@p2OPFkp3#KXt*6n|k0u}hdm;|VF zSED>MbN9%t{rY?(L7SQIJ9E$|7P%7eQxKj~ce94hPT}>+=(xd84rKKHU)oMT6k6zQ z2vrAZv4JamgM&e<#zsb?vOB6%Sh5>w3P3lQPl6&_E{3;>EWi&-eh0;^G}m@e+M=Tz zm34KsK>qlquMpvgYG*^>HjMCPbROG>G2_8tZPR~cLrW51nF})-P4ZC6BzQP^E}hl~ za+qg6 z0X?YKi}3R3g8!Cs<2X6gOzR$TZGV7cu54EmIXjA6X$L7q0jh|HcW2HmEG>n%dO6!q zH3Xq&0mDl>nQX<)HQNe26zIh+Mi`Ef1>ClQOZLhgOxWCl`ETyl?i}e6tN-fbVEAkCNM_mQ@vJrZ)zgXV^uA^tMWsi74uGazE^QYw)l7 zruOJa_(A5k2aogLsS;QX)Yoe|lPpGRTb(%pwlA@zWJDL7P?^ZGPij zVrqTo*8Ifet5oE#uXXE)V$%O(;g~@BTrB4Dv{D|Je~$3aD+X44?!nA|izN-BE1&91 zD*pGc&P}X8)u9oV>cB#+=+0X2dr+p+NR4SUaiZ1#zy-&}TsPz(keMk7OR1mTN%7)A z?;LEg*X7=+cHsk4rXj|3tzJc6mcdQ29&QxJ>@EpeZoG*!r$U(WJ9kT`5BnL+cG-h| zt4_j;>$FkTmj3NW#u2#-10rOwaKD+#xsYWv#nLP##eh(RNjiJhS9 zIlMkjw0zp$Ds=HiDzhXAo5za4X+~3S9T2{>Ci+_~0NJm|EFDkEPEHAno3Br$5(`Xi z8Hc8*rvta4{`mJsrrXd=d1HCPeTLtO4GFXz9j%cfn%(eaB?mPC)n3j4{q(Z?^3o{Da6mI#$F|(Fs={>h>oq=dtj4p~P1n+J^jyc4uvVJ}6hVOZz5xQLe?qTb z*=g*1bY5RY^L=fCBhh!b;0iH)GEeP2!I_I?&chwP0Tgb_cY|ft8y?kKHA2F0B}RHi zgEudi5Y3U~ZY>jz$+>;be&J)B)(`yEorzSz1MZLTkq5FbRIFz;MMbt2mB~*| z$(*%xR9lIS0kYIV1B3eL?a(_s2kR;tg zI7c*2ThHJ;>bYBf`djV0W^k;F3pR0@#UaXRO;WYg^<`|vUZxtG8eVo#KypwbyALtj zxlLfuHg}>8AyJtq=gf80Q!6yCn`Wj)R#8pIzV$lWUnvp>q+E$E(O#s8v%>OlJ53ng z!pchcae(8w$JinTbGVNC;}rf!12k|5TD!Kj+cG}wvOSWyUL$hzBs!Nk6D#-6X-qX zgvxTGe0+L9bKP1^h4ovF5I}4*u0Ye3_&qsrvnxj*avy>GzOD8%tn|+zXEZxRU?58CjRH+Uj zgDsm^4LEa1T`5ohSKk#0S;A$F69r?LWpD7~4-J*Pi~YMZ6hW&$6AWGFT0fs&$-%Jq z#4mQft!5G;hduUGa(rFNznt}rm^W$itevd>S3{2hGzpL`kW!^2YJiC7q9B^()hpgr zkXB8cA1?OL*fQbCi#7(oOvMO@BZU;;OLIZK$s!9#)!w~RTQQkiE$?-Y+&<9R53YODM3cl17~unDwEDm1t`EL2U~=Q9OFO3?t&tx1@Yl`IT&}M6%as^->0>7w zf!KyP71-^5s)q)2aH)pf*ORsOE+&n?qa3a*2u16QvQePg1Cg2wKRQZlvSyyE?iV z!lqL{;3=DG1^*8r>)p|?%em)jpkq}y-RS3&OJ{c@0HI}Hb)BDy*u-xqQnq)I7ZBcu zERPfg_&$8J3q=#59({!FpYE-P>%Z{dW8;hrWhYUgxZWS#$$^Y=LHxJpu5@3fH;FOM zqlv#nTolb1MU8Ofi8P3?k5`WH3UyVVinX2oBf4UWuCnU5cKtH2!KsUSg-NDHwl`HR zRPA#uIcs3qYTau>vrhN@T7KoFNn1BCuJ@4O?OOJ8ogL*@qGt~n!7^$u^2h4Sw}yW} zYo)$E#|y5W5jAw2*-^auROs=VxkGQjJ08^o9!h7vWQWFY7I-;`Bbha}|E+si4BXF8 z+5T;Ph=r1bX?ZSp#%+QF9X-a?$(*@x$utb>t;go4Pp`-Z!+G@PY2B=SlByu9Fuef6L86(3TZ238Efdy#L zudE4mDk;rBks%U^3eNfA`{C5y9?wP9<^U%WlItFIv9TO7a6C>_19E8w}iYO>>_y%Mb`d7oPfZ9$o|1q3hGCRY%rZ*Rh&GFJFMm75B zsOLYDbf+|jp($9g<+l~w&K{VV^+y5P+Mq84w17yyTn#5m{rrPupNBy`jQ!MHehi;*w{Qh+v zyJROQ!jevvvnhtu32b_n?$of@aMW<5QfCiSl6hmidw8FdyK*RNAkJJ}@}BeCco{pp z_za>(zhZYCz9-q*z2yOBoe0hpA)b3P564D3-@WvW-bssxf@P@=?6ckxb>tQF^-KYw< zIqwWV;k4+u{&V%J6nlB92PqRveR>^EU8hV86jWdt5_cK1DexuB5LS?=J3%^+8nk~a zAYD2ne^LYk?us)j*$M#WvxG?ew(?F&|R$6d3{$u7NGeiPnE_VCi-KaRguRFH%* z6fwP`joh^P_uq?s7k6$o4|m)n$6oFlUp6ZFzO}2FgdS9J#%za12cH)hqjZ|dasTBe zD!7b)0*>xpC@Tq$1hnmMvooj~skM8TehjwNj+S^x2|mE!;f}&A_#S~06cNNq)7J$f z)Z1NthR(m=hy7*4>m9D}=lqJtrVBqFoOhGnw|a(ZXV8W^ZcnWmK1*!Bw!9A|3EV7{ z$h8(kqcHsEEE$?noeH;RDG!+{xewQe#IfH0(C^LgLX!<#Ivb#%#f{&Q&?#vZ#5HkD zF)|DlK5*lqOm)C3M)748buor^a2Wdu%VrHJ>mRr$(hpaUB_UbrI34C;zIRGbpz^5)K))*} zl?2EXP`_VkGNBFK?x1tJ-atk-#Snnz$DDX-F2uUq8`yp~>+(g`*Q71;6@oIq=N|(o zCncuPSzg+#;iTlB;0YUt1nL{OVwWYw@MnDaYhME7xHMd+eC&w!7ZYdmxW3sVP?CYg zg@Fc7U@?8}b8kK~c>8huOk?g05QQ7$fYUDXSwtHi)F@AF&_kJIwczt#tW0xZuO0JD zn}YQ!p6BZ6YlE1HujtpwjxIm&LkY5{9168`wS32F`SR<~yu6oNM>#8gtA3gq_&iAQ zcrRz~XG62^odLr1GHD1}SN;05(}5wn>f-}l4Go`cIC3_``<1r8KL;TXEzfMgp&iG? ztrB8M*U^9-{Sc4i%}@2Ir*mJviKWCJ75>{{n)RXs#j_0WUahf#5h3$|QYzni?X4Q) zITtjzgZI0lrlvaDkT8t*@LF4VuXdR7%fyDF)R25g3Ip=kmLO%RGn}Za()Ve{Q@I*E zM6S-7p;MCF0b^dUPh+Ss!eB;3&6qk|GwI61)kxe%o^YFlCFjkncq$-U9Tayb!CWOu z{p@XgF(`@suL6Wfe$_`kQ~OP=7F?g+ZWif91u^PLYD$(jc%1s&z8WatPw}DIS+^k| zc@LT`QJ_0D*us?q|Bb~lMYbQ3jkLPIZC2S?ECue3L;Qc<#y`Jt*0)Lkk<`T`tIKvj zr4^b7hD9jU`9A0h@FAk1C`qaqsK@nvyNx+NNkXvO&1W0NlNU>@Vr)-fLrfT}~#6~%#lD~MC zx-1l-{tQK!qNe_)-7=7TbU+`O^QwOQ+y4i+M%x*M$uJ|@==ggc5}}qlZ!Dcwct;!x zB$CxxnV9&-CXB4Qzthh`ke%Gq#J3sR;V&2|U-US$k?|1`5<2k%(GkyGjOv;jo?lkyUCF%NTBzL0ChpbLBGxl-b)kmcA|h!gcD*dgEeEH}BGw zYi5S+;_H)eh=O=+j%r|^P%N_x2k1>p0Wp$@W0Q2wuLc!7*vq1br2d`Sv-#Hk+Yy&Ma5Uwgfo=RA*`IE-GKrkX z-sWm1^b|R=oE)yqv@@>O8IteC1mY1PN)!qZ1=OQ5{Db2DpF=cfmB=KXzj$+ba2oCF ztl}Y4{0L&*+i+2YIditykhd_iT&Si_55Sho?^!Q@Tl*G%HNI-uaea+|8<~=a)$>W8 zkyD;a-=3&AMv_fFAsye)V|=_|1CZFo0QbT;MVd5&|DHlqsA=Uw%O|#AoV^g7bVXe7 z%pLOXfzYLM!*7B)WgLQ7<<2S#;uUb_bqo!eXGWK2RFv5ZSG@J~nFhD|@7#++Pxd-` zgg$o9b}8u6Is>|{K~YSEKNel>)74+on(g%Mot^ht_y}g2d)(#KOp?heV}C5PhBWiU zs$44#47dL_isYkv*r*kGD?z;=^zib4a7Wjzqn%P$oitc$IxI}-Ep;&hJbyMCBfveY zynYLcMAj^kuisC3R}XtH4O8Hz3oWN4edZ>KJrplqcA2LP)eW?%{@&4_k)~*b@}zSd z{z~T2hUZ@Dbl)yiD5a4!cR}ogL;&Ur3`^q`Dw$0qE+y;C1Z+=_kQt0b0VpR z9&Ab&y5sf8!;G1tHzU1bkambm>^-+PJ2;X3zL1|+`b2%czzzpXs88uOZgJk!bFU(p zC6n@riukv6FERdM)Ta054eim+!jsoaz3yW*QtVev5qq|x`R%+=v6+-e123ljt@gJQ>5*nbM(gR$YAo$&Ni+2hq6`Ee&52Z~tlyFJ zYo-JhVgBRv3FjtU8}v$N)+i(V9nyoTVpbb%_iTl}6$U7jfquuYTvX$`dt(AWmsr}B zk7;g!%U#763Is?@H56P~IsR5s!fUSlB7TA+AM47S6J18+(>fa~dY>4tJpb>va(VWD z)?`>0l&?Teh5n77bx(4`^T=GN*9bPUV>C=mMaR}nXh7?W*Jp7N5m{N0H_X5f;fkjS zG@cW7>2W6WcBD@q5=H4bK4FCRlZNBCQ#wn^R3|K%Q*W#SIT(2MF;6dVvU8wHX#vCr zHca?YHL;v%VQ|~Y+K7rTRAJ>`PiOd})+0g$Q|T^fqdgs2^4vkCSLjz1NW#nFKlOXF$~k)5|=tzI52X zkHEN;Q-^m`aMA64O;1)?6!wX?3xu9=3Q|yr4Y3qN?G{H7s1u_8rkiEpnr! zBiLjIiYA!@kW@X%zhyq|q~U>rhXo&&O`(5V9xWJZ%lN81vYK6EpJUR1=t)_-L8v9D zNB{-(-=w7?Ka<$m3qslBfq5{B)8p*hojQ&u>igJ0vns=w_}4W8#3?Y^erhK`h}{_< zBKWoWf)Kn@n9fsBX5W?m zQHBSh4zf36l*>&6@h-De=s%fP{FwXPRRmWUFI>Ym%MFpmx2Tpeo&`uRK&rmn5y z(|1MkWq|!C4zP_Yge`Kh_k2eUs3Ds%47A0ISi?B9vE8W?k%Bc@2XBzEb@){GLLLq{8iN#ISO{DDMdQX^Ape|1x#?NXGYfS%CM=HMjB+vrh1J=ZJHI zNG$g9?|vZAB(HW>LNJsda!~^@*(GA<;6;tu6m_J$h=J-6 zMsO|My!5^;9W2Nku%sGPePA{r3LmXcrNh8^aLdYMi?)O;HGNL%=&ct1x2yO)WHZYL zT%YO1x5J-IFKjV$e1{tK!&3;+)WF^=aaxVh!4BSQsk`iYd{Lz0p)LmIue8Fm%ph*I*#pC0a?XYaSEk z<8c4}yAT5dN?%Eg*PZIOzUtp^CvmJlxamzN-5WH6y+AM$3_;uM?8zsmf^$&nE zG7&j1R|j{KZ06nC6P9$jC%?ur_Ct1b@8%7rAk4m5*2u1LIetF)HC^U%!BO%b4H4T7^zxMI5++ml1pg9R zQu$|f2oOs=u8Mj36M4pSiqoKE-6RgxWoN=# zu+-k6GPakOW9e$IYQ$dNgXz0}eGGkSVP#UBcbfh>a zDLSjBH>8U+=GHTv^1BmU43;G0W&I{9iCPqV7KjSsndHSV*FHY_ek%N1)*b|d$vfU-dI6gQ$vZj zMa#(A8$C$#o=7`yN})%u`QYGmagqO+Br~dq5V1+Vb}x=VuBW762y%`t*4LDSE85ms z>@IQ0ChMG7D(&%q3SRV8i>e_@Sb2(hU!He$r?WU-G_Rc$?KX^H zo%+kPsE_EQt8IL#n&+|JYevQeEBf8H!h9 zr*|Gn87K5pIXqk?9V&nUKWnNWy-7>`om~CpD_!Dc>7!F{)*Y2OX>2QLwNID5_cO&5bRg~qcQ@YyqA$(_KbpzL2KQ7_yb zC`p~8Fbzp~I0<6_g%n}RZf+yjIX?ouai2u!Gj|Sajm4)rxDM(DBH;?tiV{c6Sp z$c*lueCVhj*~J4J!UQ(ple1@OK#A=$@dNS&t@>LB85hdm;`c{Rk{=}d#9Evdn5nSPf-i(Zt^ZFYKwAoD4K}-qJxu@`)_@1B9 zRB+c7X9TKt3GRJ-_9s>C`jok5$X@MwFO}+}oa-g(T%Hje_)wr!nS0G{Xg8SFJN}yE zFF6<|J4%YvWtg95g#%TcZ+-uXspbBu349-~r9@C^gQ;D{Prjl_#0Ws3vlJmmZputqI2> z@$U+Uk+;j3H5%Q&(RJ!dQ~$s6iiKv<+QdEX^Hmy9jG?0AGc=fze1GzCqCd;K?xz9} zf>wTD7I~cpk?bCqE6$2hm;C`7)r6}Awgg^VIRKkVRaYsc#isE-%im)0u{JUu(?FT!NPqCN-)e?e`Dl%8M~Mt zg@6OA_m}AzOh2`1lx8C$&^~O?ljCBagdN4oE8A#^5xX?W#RJEC%y(;I-DE2)2G4$p` z<)+OY%e~zq#Z!bkwj7@Y<$Uw)5ezAWn{szJSvG`B@;@b+8_y@gq>}?4T;!r*Y3zIg z;#6$-h%>&eANvNEyw40$@!?0ap9SHxnaLC=(O+uOtg+6T1*uf(MLrBu!t;H-zz=Jw zh`_j#u0|+lKu2dwj;JXaQvcb$J?=y0qeIh_FgG~&6Z8qL+E4wD zs?~hElMa|r`W#wz*NrEP{IIBkD`)k)YL1VJ$rd`aad;x3Ey0_ z2HPKd5~kfa^ZYFq;5`j)^Qe%4;P5uo#>VEV*!DE#f%hCGzP*jd0iTM}$`i*+w z$z4nK?Pa)?I=((Kx!sVLpbUIE57U4L?d1f+aCaV@6?AmCrBP#Dydle_^dR5LmAobg zNB{%Em2%FK4GOr6egnK$UIWZFK^KG~-_-CONMvXo3pilKGH$~l|8>hOO;!K3uj_GI!C zh=P)pU&#eFXNMtE*a?0XY`L<2~j$9GE&s{&ACal4>fmG>;49c;Nsf%3RWJG6cTeDZa5of9 z2^M@JR|aaRXxO`g5*8NHKsIhA{E_b@KJLnPq&AX{>9MA^q#4NEnGZO&8b)FNQ-We- z2rw^0LY{{#;$j35=wyI3T*KT!p_m0wAzyDIALaZlt5y1ZZMBQyCTNCMMm~9K`d7nj zxd~BmFq{Zo7wuXm@h_eld(RZVCxH+kLJOn)Q7n)4Edvra7k^tWUfrUz*_dpI%hd{3 zx=m80?2L0Q#WP0C=9wkZps*aDQ(`9d0i_&9iHL(y$D>(2dhj@us~xG`5&Sxk=u^XN zZ8OQ`M7@_#27OhH>#V{A!f>9=i(QRa#n0hO9?U3zk#3JFM0MzNgc&a&7`i#*Drxw^^>Bs9N*6Fdi%=6kWqBg5{C;(>c3;S6P@pHk|u z#^3W2a|YmN#hh8o zaFB&qSrUpKt=6TZPw6j6_SrXkejkct3ha)En7VjT{LV>^VVRNuC8_smqEjy9<$~$v zWJZU8vH_$xQ6wy45~D#(YnMm@MZZ;&75{2qZS^24V%AV<0>4WVjX(L{x|CfUP-ug_ z6P@#my-?*dgI_YXHhg-Im%3hs+BY~wz{?MX=VJSJnOhLJgd>KF zlQA8mQl)oMqkYJ%&x~%GJ}z^1Y${#{^#||Cd&$vVgrP|{=fCuoAFKb1E$x5@EAz3u z1*M+K#?t|3+_=9|%a*1!7ynES_ukvm^|{E&?!2(O3p|HTvSbsU{rg?-=vWLi83V<2 z+~~}tM>J+j>|$*1dMci&8kX{-C4e|SLeMly&Xuh_9_r6r|JWlDj%?v5Z{1`BG&K?} zyqUpsnakUPiien9!$dyYeT<|(1EQ==eh{Bmssa2pM_tT$@(_0J?D`?-X& zGASg6M2~`GJ|!6HTlnHzu-03o>RA*inOx4*xm7i1hibsXB}L#>lRKqt+tcFb-` zhbQno+nMGg!+mCeGBb6V*uOhzFXE)5b*ay7zt6_@%>so_H!=0HT!hC?d_%Aa$A6gC zgE|^kZZpRN{_C+P9tcl}$~RHSXhdG(g%;{1@)aO_Y1cr?=ltmxEVa5oojFMMJgMJi z!}x1C%_(+$ zM^2kE@$w}Fp8*80A@nIRQZhlHpMnj+)Zd~S3oR+Jhgxp$hjn_AYzdd6pP{lmNRZof zf0*V*3lyJpUODK7{z0ipWjFR>+oH02{+S|eQHqHbRC7TcHVH0}S~md%u!k4)jeL+8 z30CDeHwkj#%QtzY4@#I)fH}a3KamEbg^DT_j(t>C_1s7TSPF1Mc9e-D)FcTW(1RM3 z*-Xgt5Zqa^UG-M~dN>1_IWU`XnYB#?% zJ()yAKh_1a8+JK8O=s@?vn4L@U6TOpcP6;>ZhJ?FrXoTqp6=;CK;V0jXhneO*SOjf zZ#SA;l-I8Hb(~nqHxFSuMYD5l2Jp+5&~nb%1QbX7VOGz*cmAI%+xNw8&XjI#!)ZtG zKQHH3OjgR*DOPr?e-~#%rb|6w2eCBMlTuoFlummt}vj&!}p-%)69f^73QY} z!-q0F$JVD?s;@+!=gTK|I&>|!erERKuk_#l)q4d$3@SFWI9~zKr*T9WVa2MF*H#yF zqR;s;)k4@rQ@rwrUC6)#Yq2Z~6e%*cu!Txj_@9DS=VvxPI{TQPNe{t)dYfzS_&+KZ z$~~*w{t#KAx0uTR(aTZR03_zXER7o$*A2FUH3I zLCy4`W(kl%Kf@#CrqjW0qS{TBRGW{ej20TUENNhy&OkQSteG$rga_5@Ok=`QkYT9#P=7AGbomLdSrjuV^0`9q z;}v+`lRO^E5_5tsc*(=08d)4cWO9B=9O;YAeWIao zS>_#Zy`A%6t%{U8dNZ?`MQv|Nd^|5OmIft+yV@R+UG!DQDC=qRq~imJPAr0|+46md zhX5E8&aDzzt`zG)f%X(* zU!&OV^BwcQp$bx||9~!w@FCQsx-1VsN1wG8&5TuEoD8-H9!FRQZ8ABDA&-N_ttrtz zpGF+En2jMt@M!U z+O#bMN5*h{PFDZPGOs6 z&FIOR`xmiv>ajcDuL_ivRbM&xq{S$iZVk6>2sYQY2j}pSuKs&)>YDOc-Gy!mdS|~= zFc2PLJdkjzjvrq%66HG-t^^p)Bj=Y6@0Y4^Kk!;pVs;A3@u{e_Q4F%w4wEE; zPTPT*sD(_=Y~Fv5Q$p_xnt-6k9GR4R)BN05s&Z3OB={vXHyJcGkv}M-(~_sBtGx3l z`6GCh+)-=1|~|Lnys`s+W9|9)XsY&!j2 z1(L^2GIX%-xa1;#j^*NERzJAj{&?NU3VC`c<%+xtw*;e26%{p>9>4k~2}2$ab_7PZ ze@tqFAaT-)AwS}QW{Hx)5{5DzEWcQ)|54?54^F{l5Ac_>RDc2O3G)S_BPqGfE`}Lh zZ*7v({WI*m&@I6~r}2`p{yoCpq(2`Hv{UoPO?rvZKP^BULHr`acLQwb{83fJ~D5n)OM?q3}%>02h13RT_VND;!PwgN**0aRIeO*-GOU; z=?O||*?!oEE=53GGTxMxvT7j^s%6Cn|UP%N~Ue#)SQS*{} zdpsXG@Y3DGJpx{LSsQq$xM;k*(TgmC9I3P>k7K==n%1}U9{ROXqg+8S(~y&@r{bW^ zJW5AZ5l_03BMpy?kw>GUPd4-!EV>sarf_g$ zw-G<&1R)u6xz3b?cAcLHU2@M!%9j^&e298Ht*EB&k#au!s8*K+OnrhHIm(!w#=!qleVd>ZH)CUhaoC z?Zk4iZUWqxqchh%W#TZ$`t(##!Muo)>Fu|PDj{Q1bY4HZ>Uq#l?yJ+@HfjYFL7y}2 zuYkgutrr6Ysgeg{17EyW$$X3D*toR#zG#QWD$w~>caCoUIPmFCR$-%hhozWg2 zsuqHQsoJLnGY`>)n~BYFO;pt%VR}DyUWgjH*dN&71I}-+;`h1cV?WS|aza4^!#T1+ z#kL`!zRU0OoE#yuUWpR5!!cX)7e5_6T<>RlDSan;wY5K{Z$7&;KTLY`^N`r?I73@n z&2-(&ZeEKak8t&Rrloz~rvN21XVQ}eVLU);q9{m7mnd2I{=M6vb;E~!DK|!w|G`6B zlOwxm6|<~L18+_v-usp-LBeBhRG}&xdwX|F#7_vuB){U{Jb&KZ1^Ek#QyG&Z(vg_5 zoI6?%AxSaTtoz|?vNp2OSd)#Rd3&dwpS^PG3TSVfZ00l>&lhMF`KY z$x+VMstA%g=9ae{Zg@-Lf6&1gbIIs(#0W?*cSrFKBOr57&dtK+ows zBM1xTc&3yfE_@NLCmJ41w2+79BbK)d05=x%u=cR=3kl*<>oGYVz91wrRO6=!{Huo; zHNuZ-a6pU#Lq9J$>ARvVE2Ox!g<16P&avPifKYCC_}Js2y|Y5p)qi|LF}y<8%D;_- zXrT(U&{$2ju+9FP>pK%Z0v+ldTxe+vW!wyI+t?Czjzs&ZS-Uq@pDMN#6^ad;KP$%_moE@#>jvL%LPd9B0$f6tkJG{G*{8vLV!AgTs)_3%}tL9M1n} zG(cQf>|meI&zBmF+-K)fgdFpR)@6E#G93fmgTny5p7ckZ|K}>PJ&D(b^|eYJx*O~T zxRsl8E0sl(d1)B`H@u^@K<~m~e-_l|J~I#3fWRKD(t#pc5dwKI%5|Yfm>Vj4*8KmQ zl~^Hvd92Ik3MWL8dRNUO@{_X2#XG+a-iZJ1k*6r6?BY$^KAg}efiQhhHa-``$6UGi zRJJP^`K;G9P-0Yu1DOo7ya~~gToSzUoq(@MPej!3SYiuSMfpZ!D@B*!lvjckEvkUt2h#_ihMSy zwFpYKpi#N4n&)(F^k50`@6BJ_?KCqxlE}V&`}%cnyR^cS7I31y6Tf8=QDNmaP&Snr7qeS4;s1nN1}x)tt)Jz z09suYZt~z)cpg-jWfouEnxFrE;6KoFMVDU>NMU%Y{Zn$e3reNJbPhSZTvrrS>iPx4 zDx(L}18yu)y;^mH%iqv%YH?47lJyWN1YGH*<&na8b`FmCc2#T!QXq(b#p8jO0M6nT zY+kh?!izS-0S?W`M?O=;cEpr`R{BvA`=}B`<0j<#4{mCG8_vbd&WvfjdE?RqMpL@z zxnQyt#mmH~xU|Eh-l{f^YUi`a(-uGS)zz3_Y1ov)26wh>zYSz*+-v4cDlUSQ+-5{gp^_B#*lL&DV&Pm9X0(LYQ}_KCI^_^O#z?sVxus z?}yF^4r=d+kYpBh$_;u@3K3+z!^;oF?%Ait)JpZ!%Qp!5C4m0slR>wNiUEp&y!vur zb1Ue%%0!Mz=k*gRG-tOGBo1P(v)^c-Kt0O=`xFlWks^Kh)@vEps{+*kcqRQYzn`61 zGC7NDmQw=}20t0|C>jr<1^kSdsFy$@E-{vMB6&KH06o3T48WmzBogGC3eF1U?b;vqMdEZJ2?B~}{Z5@a6T={LU4HW1 zUc>0_@3UCUZ$b@IXR;X;<21h8$G>SAB>vL;VrTWlI%XFTW)R_f_p69{54pddt=E!* z$i>AnA)ncO);7AG68@yZdulsHH%B}6m!dA#Am@W$@yecbONu7EH>*QJ7Cg;QWEbmU zZk}G>k1}RILIJ2%t{BOu$3#I7u1D$JV&F^EWdZ!U{9vqJF)GUIi<&P)&B4O{K&(uH zF}FU%{qbY)-byFVJMzEA7w)W-d)RRSVd6i^ifojzaZ(|Z)FqH^L0{n^n^gMUh1syF zwmWKTE4tw>V91=uJpobes zFz0sQz~h!TsLnjGvULyktUG_xZIm6k#dxybeaPsC#l3n1a%a5?q3SE)CE6p@K>Y4| z5;|%!jH&Ev$eY5A!54d9xJFrK89PZ+5`ZRs9}&dXRAKPt_L$@9fo{Bu}(vf<}S z52lVH>+mu8%N#k?*6bvZ;K4i4m~JTr=4y{i`@wbqY+{@hK=yfuY*Qa0@G#mR=3ir` z_pW6wXpz@n_}DXOXG{NjQ6Mj6D69WP(z0$^%ko$|+ykj7Tw7H|^Q2Vl zzLeXGa5YLaotn&5(2u}4khAMC-D0?7Q6nYB5GV-WC4foO?edVfdGQe^6sPCB$$-_3 zsIH?CtYTW{Y=QLeD2>chc2tyyDGh7w16hAd8e(iZ)Ud+)h|G2o8>UF>BrvIvrgl`s%ZFBH%Cl+cm;EBe zNWBO*-3It?%ePMHZcTweI5ijxggiqMomPtMmtA1$siJQohC?J)IGhr;7xm30JmK?V zHW&=N3UzM0WlFcpb@Rwn1YYpjt7Z1*Ffw6C#!SuX?^Gx4-~Hz_u)39QMG?E)ZSBvA zBBAhB%bux0J||OJuzmz9N&~1hu}@zNS+2EF7>5im7kzo8Ru&vhgKEFcPP+afS5$BL;9IO z>?40xHFZ35w@Vl2F)u!=!QHo23o#(X#TE%0%9lH`y#LTfJ4qLqx0cgC5KRE}`PNj( zg-pMJt)2Zao+pN71Iv3;6I}$d8RViv4dj!L=rIy<({iu+73ERT^VS*8b-uG!jiFZ6 zJ{<)?-;ucee(%0>uyaIqM0I#XdPwzphI5r=>d(ETTbMPWY+&AXNXUN++By6Ih^JNl zf6j_v9v*EKU(@ar!dP!f@c=JA&Y9=vjc#u=zoJ?~5mVxW9CC46jdO z2GsxNGo}M$*Rj=vo3DSjf2{dNAw)$h>z>OylslL*(b=)#*$r*|ji*HjOC?wcXKMW@ z&6Y)8yGdS*UgE+u49u~N>AH|rkj_m*!dVp^lh3aZ*Vz|3LgNItZ2$NNNnZH2D1-2P zL%22{rR=H&MpbS#a#U zal%r;jeS_bVcUm?u%E+jC zBq+!z&rYe2jG5JLTXCHceB!?{Y#7is5@1XxRiLX(YE^3L5bqWW+?wjR?sO-8{>o0aVDvqOw0PORYn*-=(MD zG)4l-TZtsgf%SW=W;kq(DTx~YySlFdr*=j%MD|R;{CAb>{!_e?cBC;el&+u$j9v^q zzYwSEb8XX4Zo7E()CP8UF#q`E?}|RnL-!tQLg2H1Ru|vor}o_zrw6S=)Er3q@s1+* z`*L+zQVzp;Ao^OXyIs-JyQ=}Jw_718-6>td+5fd-E^uZZ6D`ke=OZ~ukU}12AZ+Dd z(4~tskhW})ahvpb_&z!2{5@D+Ij>KEntv$WG&Z{o_OOURLMdaR}n?cy@_o2G#%JX7^B-gRLR*;BgUGbzbbwmx)$SXD&~7 zFiUna!0EHVlXCBZ?n5+Q|GfG6A4jN_RVYVK(QYC>jKeSzBMJmpIRm;_5CYe}Dg}xhfeE#Z@2%cT zisyN}uAy&idDHB=Z~R3}O(ALugat+9UkYY*3dq;?KMp!jQfU;vgw?rueEukpo}cySv!oW6#b9<~=|& z3uu4bkHAHdt1T=O3T8+Hv+t1**f%~7o@s^S9bMTh{G+wPX@@K+yi2|c$F5a$a{jjm zr7`PPS5%aHDmJAX{rm4hI=zksVFQk;-$d=-Y5-R${9s_ef7Umqye^q?5q|O3pNk0< z)kqqAAz8ELC=w0fz}?43So4T!sYYaa8X7ac^ragN_W2|OcZlSw=d37l>+Bwd^ZjZf zLM$X!W-F72S*L)pimy=&CvdA)BLeRScm*1~h2(K`VG1BRf6>DJ*!LQXV=n>&YjVPNM)3y*GC= z^R-aH1lExoGXUX3v-pBP1+;?2N}@7xp8DT(Si_?L$HuW4xT8VvZz(SUUBNGhCQqJn$Eyr}T{^CauF2Bng4lVHkPN$b&DoMYiJ~9 zo80@mgnV%Gi5(0Wyi&1*yXr%mgtOFn2@3*;#Hr9^QP_IUkF}=N#HXclz&-WKpAas8 zB>teGUlkp!=Ts$ycb~{k!&@74gYjK#db5qO_|})jl0}dv1j!*^3W^Edpxj_hc&`~x zG|=oYtI9f|qj<@n2Uu?W2LWbLUM6VK`P&H4(Rsb2kNh+91;QtspN(Ph#oSMrBOvBp zjEXuW7!8av>3XGkMyw7sXG}zCSMm@j@ObPmUL+tP%BD^5H2-@r-%J^OH?Vk~bx|rB zUD@i3hv6cHgc;)(2uh9Z(oyR(H6;amL}Pg& zKegp+hi?g}0>5h(S-YoGPm7vd0C^^ktzHDfEw|RZPBOlkc55mlP z`?dIPn)qSx0M7z3d5$=*E8o3SLw_O+xe`RwqT%Ha}!c6 zFg2C^52YSpdIi3UHk1rbtxwh}7YwI|MDHJy?vkH6lkJfoIg{;3)=6J#XK=$aEMR2e@C$4#5ag_N_feqtRce#bFq7QwNRonQj+0u-pZ z1-_@gU%{}UPk=XM6P{{R&&a=sIXtIvVkAYjg7o~~y(b8?Ibg7GRMXmx!dB)W>OM(D zFjziaV#U1bJ+ja2>Jb=(&J8I>tUKUI?bVIThn#UI;MV1ICb{_W_8NDQUqDE#5S zhi%2kh>A)yYh!^UVYA)yyP^L0Oo&alZgb;4luQ`pp#wy@uhK5qJ_fKLBNq6}rN~I# zxOO#DX+kwapro!8h(qc31~va3uMDnd0q)V>ER*@|8m#ND-NC9VEyu&wO)}XG=)&M- z_#^$Mfp?#dj+8fI3nP3jh~p1=m1;2sy26QzPq83`GnM(H-kcjQ=8K0q1m3M9$rg6K z=VDoF$F@`yQC}~WAch8yoMz@2-f?iLHrg~)ud3cYjZTudYvqM_B-(?m zWS$c*i)MFh+uTW^=D78(AL2`hB%0qSpt$Bm4l7GN~{}oj+nf#Lny2ahLw0|@vBvDF56qt2|2m3x?%+vKf;cq5x{O&K> zncCj;REYLPGWgX&5Qksv?378x3Ov`C{H87H;_|ATgE@M=XKdNk6syrH)k7ct#T(UV0t&hC~R*d2e-k zbji)a-jg1!F9b>42wnU;_LT~e{60#Dt7!w?OHOJD=8A|C@-s`%c^9Xy&2lsH+2nw? zsp4HLy$xd>2!l1RKN=%pO$DQ!mG~ut_8whbXtG^vazQJgMz|yO?8viZ9R81OU~yBd z*;9#Q^wr%|9%3Yi`v`tf%Eeg*T-UQh!h&b1!4kaq;IUWzwxBrrsWF{@m5%|Xq)3LW zXqdtj{R2>HO40i8=X%Y5ydWbByb{rdpt%39@at9Z^c_y$3T;MyQjNkn?tg3c-&b+< zBuDr65@CRiWY@fs>BA?ZgpobP_fA|eIn9Xo_yunaf!irqac5n5gR~GJHT&;@E*1Ih zDUGjJMaRhp91=}SrI~A46XjRa+uq}O_Xqbb(37SZ<7k7*Et=~Z5 z6qhl>L)+qEW6vKv7_xzx{stW}$O_B?g;V8UfcGQ7FdF_~uR{{zN1YaxDe)6zaPvXi zw9gE(*P*fcU!F#5&-A?GXlUj=5Wk<8Mheit)IL`qV^5g!#y6v=mMeAZ^O7qXb0Hjz zuN{VSd0=O;eAy&yoBV=6oa6B#TPTz@e}8o`469CN9=o3A|He(WA2c>u|8O2XzPh+t znTDQVic;~AQpeH;v0PpjeV%{OXq6+P^GZY0KqmFuDwrh!9JjCqXNJu*{J z3n^|$PmOWf3;Hzy<&0z$NmYJ-;+@%{n^Xf`TBnBo`%q3y3`jr8X=L0Cn12l$R(A>N zb96+^)oa=BbRzA-uGyKI8;{`Mx$yC>@JS%)5Y>*L7?Jd@s35<9v(rF7DN~u4N~6Y; zzpZNo=tSg3k##;V#F{?TEOh8!W@;~$980f(!6Wpxwa2sWSOC^sTJDtSHT&6W^~~Ll!5vL3awD1+SIfmhCEtPGv2^Xmo)hph&|{s z(^a{_pqaC;=-`Zr9n#jI%(iZo_i6Z5{~8cvVo~{lQ@@c1z)@W>Opa4tx?Ch0Ljkng z?*iX`B`_+U_Br8X3^JJ^|X5L`M8f)?I?d^R%4?GC4>hd{n;E@X15C35Cf z%2IoJpv#FKc3tdc`_H3(aJE!Vckj}x+eIEF?RIu3+Tv55U$`QAcR03>yixSOyUB+K zdl|imNqX5kc`ti-usFH%a3obdkjD_dciPKxk~GX@btgG27S+{0<*E*M?WH4t|6Cq6 z1hFXCRSMRdyGAm4z6wdP7vo_Q^m3Z%CDqWtuM&)ywyP{*slJ;xBt=YfQzNMLUp!=l zDpqlsk6Tc|9Fp3T#b{@>2?hC}{?vQcbW39or1romOi(Hq9gH&_bR=P!^*&9D^D($! z^G6RnVegP-M~hssWwK;LqZdzN0;@)#LlRf|tU5JS3#F8-Ey0Tb2F_;;JO!O%%i$M@ zAigDdQm?|!vLxb>LC~X04Zt30EHgFr)xl#tJFPqFb*jm%($dPxua%YA=bRauoyphx zjWTiCIV*Q{cS3fWz114!ZIxl^EE3b+Eq0DF1hz0D;;YMYtE?|?YTo=bph8#c+OV0P z{e$o_1=!7={(^pD*3mG2T(~18K>(wZ(=;8>by{YkcV+z#le+}R!udcQny%!uPCby# zUjtgA;%bs_RfXe!zLc(+$s_?x9`vyS{Gq#Yp+ts#RBZN4UD=ykd&7y}+*~&g&i0&2 z+%|mx?-x=?vy7}871qNq_p^SUi4m+00ot@dtPhq;5D~9#JLQ`Ju+7y+B0@sqWyYeB zvsUukvvW#{wK~G+mw>^dmSP6}v4h{OwUDQi(-XD%|@EDfg7DZR^h=urK=S z{x4iVy9K0nPcSt4>oyD z`G|m|+A$pm$zw8)a_N8B3>?U>z-TV3Jkzqu$`&Co_JdY(Zs*3AehX6U_gB>SU<=Lu zTMP!zvzq+FYCE4&qB%2MiJ58_mw#75B<0jzY4nf-VWDIrzK(i@HH0Pgw3PgxRe90U+NAN5J6rI62y<{tl=(ujG(O{gg^0hjWD73P(i~iwUr)&ftvV^624Ny1LhwU{U-8cTQ%`iHo%?t zmK5}S<5@Qx_i^>Y@}x4PhwKm^WJg)S5hvV%Ohod((kG>Cf@ViKC>i<%k<86t- zJFO1Jq{(E1vC4X65aA)*Y0?J}rzD=wg%0AS$JfnhUvI}{a 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

    uT3u z#BtN-FqzNS4et0h1N#PYX@xxM^b z#}7J5kPx`h{sb)eyjz1uw#4P^b}iyS0G;9epG{)wiOY>+kKM)Lb$o8l6jw}GK;V1B zKAO)(736+iQa8@k#_4oZr7zHwAQ=KeQsIV8E?<~=fbqI%HKHJg<9P7zS<3IQy&lou z+%B)<`?y#ZH4h{4V;$j+r0pLoe%l2vMFqdt06x*dbb9H2$1V~ zvfb@YIg(*cN|w7bO8;SQv2<&X#5l&BjcBj4CQi^lDVIboI~v!bp8b!as|;)EZQ~o= z-8s6XLz+=CS~^8K1Vl=tM>iWFT@u2dE@=S?*+h}8c0C+eabRyZqcUAbB>$mC50EXiSM;9hhcIp1jv-bR>+t}iS$)V z8R?GaTu|?0_&CZpC@;}usL<1P;=h~scv#5l7Z`A!2vu3=0Fm2RFnKuWZE(6O(rAC0 z$tp)%seaYzYP|mw-I@1CHa(ouTKhHDewc~wH+6LTg}AC0iaJ8ruLdHXD_q(<*9W%) zBhVrLZp2x!;cTfWt0vy%X~d9;5@S`1Zbc%D7~FVpliBkpcr7k5H5@J7xN2&@nKzw{ zt>?t5MNY+5Z#oM`OdnVsw-@W|IZ+lLzqqKvKfvxvPVQ~uHXoURO7;G75z;5tv#q}M z)gF$gbPj!ZisMDZ=e#QjM}90O1+qsZ3!^)SmQS$UJpB5FE)Qt`T^2{U31sh2E{eLP zrL_;W=f(C9WdYxju_Kbb{{f00f8qaU_&4#P{o?c-h)nPYfww5X5*%p^Vr0KG^$9W2 zV?smz6J{27;suJ>H=DSNMmG&xuw@tYgm05t^}qYsX{IepvhkY+tmT505a;EY&Q!l2dVJlHoP@h!c39ojGlffFq1D74~)K1UdRd^c!v-usu?HgKmXX8A|%9Xir+#Bm_jf&<(NUYeip@NJ$iA+4Lr ztXA`Q-;_NJQk_SQPY5wUhgl5667)aZ<0RVr842M=8V*4i-kc~5)vCcj`J3XdwhFJ< zBebA*$N$b*HJxP8h>eEE6d-UwQlL{&?ykSURb$tqY)AXwzN#QhB#8kT5IHv4OHs`K zk+7T-e??x3GA67fN#7ah)rLPq>U96s4|2k$Q{ln}Xn!}wyGUX&_c%UW~=9wZW zPZnu8p#B;5SKjY^6dL%QB#LDZzHxWPK?99tZ+vhxG;xy5p8{%02vN0Ax3JkpeiWq$ zF#nHuj5<2X5%5X_U{5oGjSiTTmV(+>D(dgc$n^6Y`=So&UZophg7cDwAIIe{Pk*I^ zwzI`9c8Is2L=ef8e9yE%B(AZDbC2DRMvq2Co zRKsOPpsz@li&f#j`K-E%WKsrX_X+-|V#E~1 zjc7va-(->r0D@q6JETr?>~6(n49vcN9|)X!V1V5cvF&Y{%QYIvmp)yEN54K8)jIkK zMcP{VK>gkg5ANrONkOpwruJ|F%FwRL+?M>r#&u}@fNt1WPs*i>t=|mA>rrQ8SMPft z6{{Wr{8ut;y9niMG=KB@H6fr~fd(oI0wB$_?6C!j>G=)S(N zL3hR$B02fzL-edZvsLbIO6PJCg^-i*(qJe~>Mfa1Tzk9uTc|y*K6!_S2^SEeyImV> z^N~pb3jn8aC6&?VV_*RS?f+A*^JTR^@Im!?HVrDde(iMfnemM`52jld z$%TaB_B3bxstGa0F7)Q#ca)Qvf|Wqc9FIR>FTh7yPIg{_=jVYkSx&n$DAGB`9Lyw=-Sg%=A+lyH!9#nZcrN9%3F(aK+^ zeidy0p?i$iUQH7SA03okV`d|AwN?uT-J764DLR*cr7?W82sR!?@zPwP2WW5=>{8RP zM+pS#M+)`YU?zwd7bl#?644)z?du4-dON`VJz!(Nc_^#1<*K_kczc0p?Ia@k{2uGL zs>T;qmZ&2Lj;5%d8BoFw!+}C@6Jo&=TAE>nRm)O17{6H9Lq1i%lpm}J`fX?v{`u0j z>B)5f#+&W;-h>^}2iwN~8JMX>1={s`MX4EtBSLcTh}*-MSd|b1`|#0ObD9Qap~yn2 zdPbm@7vblW^i^fwi9{oj%Vt9%GU0su6V>06Uv$j;yp>d|X22YdrZ|zru<@({vkUck zy#~ePtN4mcX3f81Mg?g_4XD$VDAyHsC*YygB>{h&v%Y!ZA-*{)&$Wa@|}~ zQwi8c-vEf36l-4nVWq}&G9~*=)k329Y68Q5&r3Su!!K-&Ymo<>cC3~Z;K~JLzd|2Y2B1iC=~l9%m_bx z`Zlf$v4R}Yc0b^}S-)Z3$hOQjc-cq}WQT#oi#lnb-(n8ur)o)0?5Y|>NuZH1a&B;+ z_HbM@zq!u~9v(%8x!Q3NK*ca}_O;SC4KD;Ts%PG^-??2g7d;wGd+CZA!|SIcDE%6$)yq*n~<>{9gTvao~bh98K2SH z>@(_GwnMfBM;&*q*SJJPMMSa(qZz4~6ws8c{QHWCZwY9r0l3M9^no6hZ%@p?7qM6A zG(BjEVfF~Y!m3Xeg%*kMScSWmUqh4uA1b|0{k_i{`i+?D2fv_~i&1Zwesh_?vqt>5 zHVM`3P(t1J)UkCs$#$798tQ*zP=rMx{YF2$CCD=LX$3j^zA(uVeD!DbBb>t zxt3%T~xUdraUqozI@It*~a9sa0ZGjA=+}25v_v%DQ3Hbs?L5K9LkVu*~o?2=SGC6nu@;Ch?j8)zyDnN=$toDo6eM7=T z5v9fMC4Ke7e}7=3pJO?Zzjym+1}}b#DHv-Uyj8_kL}O+Rw^!OjfD*90oOjCYO6=v{ z%qFTtr6$j~@8UA9ox$|NlV^R3wUY}=^4oR@B9gcNHt^(b(FdQbOK@I7Jd_Kko1CSsXgrsl239UtoJl@tVbN=Hi9olPMOnOUP>YL;M_V59t zgy<}qW*Dgh5?T{tcIJ~Q!ug1sz?*LEu-X2C+~#){&G zvu_KtvhXt`e?79ajQwkicsxEi*WG*y>wyY_yBQ0l4>)gin_u^Y>%@8ymzP>)y+^5j zzOOf(Vv?Hpu3|Sf;C8wELYD}Xy8&$c z((F=|%l=2=aX>prVQe zKx<0Cjt##HvcfUOx@qzp`+#kpspwI$sR@4pw(7B>qXB0WtCPMBo1}gf4wxH_y&1Dk zBp{49*zbIyFrL=t&UMdDn(7)B?3JtG1v*Osg+7fW6yt(l3Enx4RT8(>J1IV=^DWZo zps!&tUeBgj{WnA1sLQGHaI?@_XSw^F=&=lY4*<`jZ6ik52kSCYD9Q!kMt<}Abio}{4)~RHxFSr^4 zNSwwgz9zFmU!dlA=)xkZve~7)S&q?ab3%xgNEAK=$X+4%x2YvEvY669P|z74SMf** zWA52{wQd9*dA&meVO64IBT?>FL}wpkS+P@5?*Yu2>qJp}VyA#qelM~jk1-lLbX#S( zlQtx((b;6Ltgpq``{(a|Ll@iXAI7Xck8(k()8F+4%0Mdb9)P70)SHr^9ohc8YxH7p z@<+3g|0?jv*{_yQ?@ZR>hm`e%L}M4H6QZ;zM|$wd`0RTt!>b z)S83ddJf4pmynIrdS#4%FiQouU#aqHC6-SV_vM~)5EYoxj~N$XsHAjL}r#K%IA(NA8Zl2?{WFnL$aY zhZZyM>cOhc~6>xAIGh((50ar!DT;_VWX) z4$r>79un4vgXHTY&0{yCCr5sF1fetThhYT0kLR!ZMI>OZ?E39My+Ogp#*S-(6%D5;DgtzEKFa zr1brxneG=JMMpsU1!n0u%(4GV58xe@5kW)M;a;DK7&PIMhdD&+tJ-;3k-z5f0JKV* zhK<^ipRf)kdA-pj4{;Q23DaDnAQzhc&o7N$IgQo-zxr{)VfKH3csZYp!S>)AY89#S zPmHr2YGKSyGwd2cFFOWu=D=|MrAAul23u*~zhN{0N=~>fg02i)pM*uM$)R zPIq3k7{??yxC)7~elxC!8irD<$#BjJNfoainzEQN#e-A;w-)+exzHR1aj`qb8jO8W?Lt;a zKBTBs4+Bn};1T3gB1seS;Kn;B_$yH3XNw-jx{vF(cokmz!6zcX*+3ipJJZtQTVHA& z%|2Z99b9uPM%oVfY}8ri$qgtKjpdt*qam~KZ5EA<6`Tr4gg4|EcQjKzxH(S^*alf1 z*KyJXge6|Ro_9htuo*KioNrzkV;&C3dxo!!i+QToW85Zz(DaWyc)UBkLBaY6(RjQg zbDcy4A??XYE*d~el3Sc}mv_7<*9IFuZg+OLX6S&w&*9$!Z#aZ+!lHE}f@9DlOdAI$jQ~b6Y9&;Yslt}0qcU}nqr5wEW(vtj~OI1FFD^I6r-xjS6bEncu%xuJQ|&kz?Ib}HAD z?ouAGH#`cU{~V(7Je>e*V=4xr^Ox?TIq9!3WUh(-&ObQZCe^0EqqA;}DWLvSHjn=Z zkXC}Iyj8AdVaKOnK3)D%$OQ0gjNpfEw6Jsqef;$EL z`2fP?qWk^&`}qs>Qq(HrU;1rk0hG{`a|pj>hcTfKsLg9;rMyK-ln}@<&s${`jq@pS zb)%t6_&nm;m6G`doojy~z_mDn5Nt^7?^Wi6uVMr{Bk0GvhMv$&xECRX)Bh#b)tU*uaoQ^#~CPw#nuFOE*?MGs%w=qi&k4yfA zcYuxQtUuY@*s_&r*73!$O{t}nQF?mTZ)sk>Dlg04pv}(-8A2s4k7W2+c!G+&ibUSO zrhg=SXj#+oao$rtN!kB2Xc$I-+q)|&|1ita3kyL96%AjyIlvm;|2*&(0nE|TMf!fc zHvwfDyPl2!fMhSTJYTy_6QmhLa5`*k9e$C7mP+EL0!k6@M6=uh@RokKt9XJIc>Yvj zOLi~u2LRWbwJLhJPe8~yXLz)q-Kr4?)tKfQp6r(duX+1e$i*8w|K-&fxU4 z!>s4b{Etx%)m?UMF5U+F$2&6hXJQ<9*i&|Ug=U7^IrRy&3M`rLb}OQR-#m=B5GREB z_16bnjdTrq=PRPGqS=;6t+G{docshq8??v{pCSFg86iQZX!buRgzIb`YLehhblLQL~H#5zs~ zM$>3ZUktH#SdEOD=MK3x=fZ;Utj|CRdWGSv;iZ_!dlw*?Cj44c9sUEx3ME)BbAHHa z=rMs(XuwTs7Yk?7uP%pk_lXdrO!Pj2NmAdBwub8_I-;AX`N_~WzPsE&Xp6isvK5zx z1EH0GZRR>b9v+-x&TKeQXhpA3_Po$TJ11r( zH(UZxYh*0&%pDV`ZyX*J$O}A6M%2;XcVZ%2G0n`b%l(2ronOaNyT@SLS|2e+oRE@k z9(#n$o_cv)6^jOi1k;*~Itl^)v}V=czanN|Cdo|d)p`tJD>TVIVr>kW9U`$)j{h~2i0Q9uP{_fZsc zq4bfhrKtqYEOV5|%=MUQn5O8f=jj^j{|a`fQ=gj)ny6e38B&B1w|hD? z3Eaqsy+vjF#PFTGy+YU96HaMukLB;T|0;c{*5{k|yPrtp6uGWYVU@uOl@(nARPcZA zXO#~{C|iLgg6~IWSIT!e{ThcEB&W6Lk2{aMOXzzu_;X>y>HRqgFU(rpXx%Qc8ZVv6gS;7rDSSy1o7T%t3_8MMuxg$K*ew zs9mzOXRNaQ4_Up-ls+gFiOsNT!HwikfRyOdLkSwYlSyq}LFXQ4aOE;aEXF5$>YyYP zb%NbVR~H)`Em?}&I4bPDH$0m-Jo^na`*6#d=KLXz;goyGzHdWG>ko`E^+9q%)lS-J z>Dl5bwaqsc^f*`Ps}E2YW$*2Kdb-yg$^V`3#%MS{@b2j;WXy5VU_QJ|?c2zo+n4BY zS?Ga6@N>+|O-_ZE3YG~R$XzTXZEgeVKE{K5GBdo}d&l1o|Lh%aTVKKN<7x*_c+i=9G`!g2=!SX>3@sneHpLg%8KPYut^81$(Ovf6f6{EsX3-P> z60?hG+{n}1Wz?Y_uRn8Ic9UCoFVsH<$0`<;9SPbgMA&PquEh_VAANANg+UgBmUO z4h|gO6ZyVC^fdO7u(<3gdA_oava$|tzAA1`e;Y5aK<7ZMKNOU-_Ffzz@>0-&cEt^O zepZMgg4_T8$x3@7D#p#jgDBBhL(Gm6=CC`!dyJFpI*(Q*2>AhPVK`dC#LR4J z$vdmQrVwQ{rn)A^X`CZ5E_}*Ku8n30=K@<=DoQohO3w@J3Ac#J#vZ2ewO_(gFd zJkFmxFCy=UKhL8YBC5C+yZ^UVipn>f4UD&x$UC88OuO@K>T}bWlhYQ*gYnm5L)xgK zBH?TtI;W8WIn&RX85t&Gu}lJ5uke+X@$(Jf$kr$UB9wpPRHZuOWL~9+k81@P`NjhR zt?_ncgauO0@6Qh68`HUZaxiyyyQT$mkqY}GpK5$Zmx{aqStu{w9ESnw)8B$If& zeuh52Y)m>Y5j+&jUg1B`?MM3XYm~JN420vL3z6L4^ zOfHU&zJ9y%#eP_OMH4z% z!E`$Yd*TP(kHMI-E!~T5EvBrzRqQ|cvG-8(ir?O2e-*lBDrjK}sa!KAjtQp(?SANCp^pM?f+~<|L7|Tpb-yKCj%8I7qM>Y{TkghVI z2GIK6Yw;!{ac>h6$AsLee-iuyJl;S@(H`uY%S{v73 zA7X%x4ckB~&SerGR~S2vKIQ=LG522F=mVl@&r(*6#NTx<9W|@^_{GpCwRjzUo=(@j zdeW;+%l-M8^y3DBqCI$cv4TMlpb!LS(PzxN8+)Zd_USo ze(zs?5x4(|1->6X2qF(Z-?{6M3)ERML3Itb?zSAOr~5C%%ic1<5XnrlW8O(Qma13L zTb)37uXqUIm^|9W&ENf%r{TKb`#YH*a2Q6y>7+>K(mUMaqvS-PoSGa5PI<5dR_LR| z5U{iY@6I~y)$Du81$CK&G;g$6r*ZNShWNe%q$oy;y|&Jm{zBfT&6XBBadE`_yj8ME z)I&e&t$v&t{yeD)NYw)ggFpJF_g*Tdw=Z3c0_ZlptFg>1EX02$7N}$mN>@ zw@6swH`4F})dL!I*AZPTQ1dN1dea&DT#A?VWkZ)tpJP(<1f#iKjq}=kvJn#cPOqc3 zeJNO=vYHB5+R4jaKC)yYUQ^&kZrL;Q{_y<(dUt9OA)Q}8hpf9dc&6}^ae)jCc_M(e zaekS=9QUK8oexGLdw@m+SBoVP$U^73hw<}e;rkRU$c!m}JzEFb=o}HS2b-9wnxC&~ zoCnSRcjjZa!xVdxK+n~t$`S>decoK{*lgGIaIOh81qFCttgEur5&iv(f`V=rWo_IS z6P2SwQ@JlKy6T(FwwB(Et?8{!&N(~K=2z}jZLXEL(tg}vVUv_}j=&5~P17w1`40n{ z?u8M1tM}gHj&cJx)vJX(=-}Xp>BSKGvG|r62wD2=`}gAB_d72MG3G+lC|%YiQ94a# zP&d_^MhiTU#h8O_{hSz6XIFQ_+`A?-H^-!(&J90$a4z~ef$)yoG*N%zT07;}elDws z%;j4umby@=8%k7(ibMnwF2)ifHi|Ox{3Lg|pe+k!kV=wi#&CPQE@VQj#~U5mA_UB= z9g{GFnLPT%IUBn(vsovR=NgF`O!n|Q`gFAg{m#naj<&O=r16_zg2%o5t&gAm>>h;M zEk#3)kIRkzZCOh8rNo6VzQxz>1al#QxL7ctJ;e__IEL_&!9l(QK!mBY5v5?jf4ec? zT%-$UiMPk~A_J&95HLsvSsMe4Brj-bnETzW#9c=AF4tPB-ZjrqC6kKuKQ9=pc78O; zc803p$PX8|F?NLLhI|jawrCv%JT?>;5x(zg4!lNijZw`rRD5Z zIqvpjwQ8ot#HOdjMQUG8rx4=jPHm=k3ND=6Yxek1E|UNJ$yKVkdeti1u7(Hlj&}XG zQRhoc+!+RHm?H8>ORGT@%SuBhPgkt7P9j+QA%UdSt6d^r0TmYR*YJ!!tEyhNCYqP_ zW#yR}ROEd8{Mx!Bi_q0xH}FZUotE6yl*rpq9he~aYJ+=aq3#qwiuT|2`3FyhZom5d zU*Ty|`pSZGwq66R)VYE{jSwGRwfcLjum(Zsb>{c`(TCZj7iHZ1Nxf?3k$?E&!^Bl0 z-Fni1*}NbJPy@D%DRh7Zz7Ss+5Td(O;cA4^FmQ8j@g*XdwI!b2+owCAYsLy*V2YRm zbUoWn?KpK2gY^Rlb1KD2rwX66Lxg^t=OT&knCHH@bS_R+^Wnk>wghVWA8uL)dxGx+ z09X9;B;@u&*MbwqzSX@nbBwe^56($OtpPL-{Q&=GjBYQBAc8zfrG9#yML|Niz-wkw zx#fT({wI!$Y428ftjIirEqz%c*BO?CJviPP7=sqmbq4FkPo^Hv;7wAfwjg*p=@el| z%a|{k_Ty2G5)^~Wai)U4c+rfPXV7-ex5P88J&4tpWvMV*frYd>u@p4_w$XQ78!YQ{ zNC(>ZjR@c(hTlD)$B=^W>d>o)5I4@R4t6Nbs+Zmm;$$DsFj{wD#k*%GU_lJX0_HPC zlUA$+x=|~2CkgKK#e3V^E@C&CUoY@=c*OLCT>=9cncuXm)49{Bt{TaF>XyTaEDl2=A<-cG;{h%d=n+K& z+UG0*Z`Hmfzc-wya9&}j!+te%c4TmC(7?&J4 zli}@}C>YX>uuu>?4lc%RN%*gGw#C(9AI_xOppi5-a_U_^pRdd%FFPfL&o-Etp`~6p z@_4%`Hjr>Q9>wQ2qJ?>)I1tgrcRPMF=B#rQ%1{DWc0?BP>%t{~Ix`aV*`K&QvWB7%vG^dmu~Q;66$^6&Fl|1{Np+p4p+n z-4RFNut_2Sm}uiZ_iPn(r=wZDwBLM}HRB3v1`Cz0^!8&Cb^7qN^|lPBQ8hPPM5f;!(JUM)5E_h1ch2&ZvWgmEf0hM623gPn*_mhn zT3lB4PYvhC|B1y{Jh(2Vzef!kH7z~Nn##l~tE-jrM&)~ezztsuLtR6cn;(~V9j~VM z==bJg^?{p)Zxo<1~N9R6DG#f@OcQKHVy8A z|0XNwG=F|3s^-&n+0Y^ybYq?EA0jQ-M_wW>YBzVC9H6?%y$6%0E3Hdj$3p`Lb3nKX znc3K|n^XYV8R9gwf4Pt{`x+${QJV-~)TdNIeZl%0&C7$?h7wjiO9%sC+)Y@iK97I$ z^;?rVo8jc{kFWoeySyYk{~7*YYjb#f+zOon# z3vL>kC^leDh!sI0-?wI}Tw08Usu{eNe4*7ea&y;ty!kUjhAq(#OA(Gx^}qH6_`kIpv)1|~sSTG*+e*%x zW$~=C3ih31i;Ig3a|(ZrIa~DKNUYE+H&Y<+r~En&8U!Z1NG49PR6^7`IU`8x^QrHqE4!)+Xn1Fo{0UlXksnK>lv0gx)Hm*HWmR`X|7DmKdcD61)8B z*Y|jg3ch{s%xoO+l`z0e72w62OvEuIA2~1a@oc>?h@tdxV?E8z(lIunD%ojoeG{o) z3+=)(|6o|CTzzx#JthP>tE_O4ldz)w` zELo_hsA0?3)o--24m_!IMt7(AD~t=94bP;S|nYp_fSY|$)G2b>otso9?{S@< zB_oshWm4ksa53(lJaHIbKL74{z<+umevoOwW`d6BGAp3L-@HfZ#1wIr0N_$t%!tA0 z&JP=Q{P-y}yuApypRe3o0=jarJkfp@bT~H81e60ROoxfjoTP`1Bj#SfV9xnd1fFn_ z5T6NgF^R2FK(;qO1Ul)`%v(P3@56uJ$ZnJ76A7HKL<%z`CtIYr6sWWSx3XJQ`=DIR4iJE&vo1`*;@I1uj(phtV;Rw-$$}m?j{G2~~-s++*-uPI2tI33k!paD|AQ z)AsG<`CzHw4Jc&Zp^=ufr@RQ#KV<=iG2y>m7*tFC`yw=$tI;qa(?RgNp0Q`J) zeO-ukPuny6g)V^^Gx+g|Z4M0)of#ttUl zP^-tAC*OUR@Ar=v_vGtcJ%3er8rQu(^gqs^a<8pF6G*F1|I$sY6noxUe&g1=eGFq{ z9ys_!8VcZMjv-Qd&U{A5YEd-?ZXRoN!oAZ3wSjW%u2<}O1mX~)t6I|tO%>}VzI{c}0 z4)W=&+8T+eo!tDr#fNya6UMwfEaUxuq29nlEdpjxX5aYrN+=<~Yq<#nL~X3OjCP6s zE64(e)0DNH9t%Rktf{&1#RL6L&rRYRprS_oJ}60-3O@tj0Q6GbGoAUsgghxhL3!IM zHEp5|_r)r|Y)TS?dPv4fFu;u@w?D-ID4<`-&kQT`#M>0Ha~FH_+Y{VzTf@A7&f*|E z#UtYk&{ve3E#0z-Mdw=r)JRXvs0DXunFj!xn5nPP{xnnPynnI_<(?SE`bb5jT8sn9 zA!AwT$p3t$sA&qdXGhA!hEE!G-|fZhm-b+G4P~e39-&9w?g)U#9@@69kOg<*UliW) zxRF&)j?Ri*bZ#<^WtPZfsFehAZ~PU5V&D>I<p6F4ylcf4yrU8f*uIo*qygHmuY?03qzd!2 zA&EG!djF~4G?-@tEb{V9DPr!w}2G2FRVh05V zQeqjGPpbr1Dcr{z8Yv=A17cJ}v){2k1|K&p-++N$WSp2NMd<%D)XR{10LTM-&pQC~Gp!@wgx#8g*&bvvB4>P;C&1%7S z7e&hWqes`R|Jmt|0%%$*$OvKK*9iF)Y~97HpsokU{#^1;p@}dBJ9)I{N9Lt(KOM+I zL#z=$#bm;Z#?CR_>Z}9*?UpyWK=XQTdlBoA_XwcO(Ll%g&jc|U+mMG;;Tu`=t>es3 zp*f7tQ8sEU@?-|W2LQCvFIR#j8z=wC{6dM=w(@Nf1WPEc z#=Fb|#(|e%Y$#;8Lddsl!j!g*`WN7gIAG&6F?i3A_BQIECbPLOC_FBpW}3%pA^+IE z{7pCY$r0BzWInCaLD1SHb79G3Yn;RQ1+WS-**r7%VS$Jm*yS6N86#x~8~D?{8|F(HTHWM4!PZ5B}Ob z2PJ%E6kvn{59e0#N5SOVd0!bcM#muZ?WA#~0m2YNIBX&ACIzs;L#g1v2@+f&1;288E%3Lf>Og99L0%~ibb2em21WzN zA2HGJ=^Eo=A|*U`?H$mx_DO_6Msw5C8Jr?x^3_G!e35-G4||Ww{^>c}-r2Ate{tF7 zf-v;)(70Kp+ni?f8mHoo-Vaas7@uu8S zTe0R7Oh`KQKkI7ozN4tdly};P3u(#5=PPM*fX=f$p(&+ zNe-Z~2cO;T>{es6zsvt<4%DAwqMDG2-G}T&pdq`{6dref$p9cTaIJ+ZhFHh6Uwy{I zn3+NYn>H4Ys}Zin7zeT17;pudM^UWRwdvYsM6Ewb*N?ra%}op5*4kbsrvVrtVT}2* zY>0Dl=ynQQ%pKRk^z1!x5#Q?7V-{fUkuZUJVamcpA$g^nA)KJhcansT6!ZsV=XYg+ECgD^SN}v@qiYk62c`P6kvVLMr;;MC_=9#85@XXpaZ3$ z@Z3Wwf`Kc;e&H9U-0j^$5g9CB0s4a*Kr(GMYuoR3znU$aMwahx=ATCvy41vd%ka@- z*x_J^l7KxN@}HrK3z$T(`L&&EuI-c+O~$!V&D6y1#W&G)^CqaJkS#avtMLzMtP_1% zK;Br@(g~4$p#W*q%W6A|L1ULdQ#+#Nztxvg*?)81$+$l4+%9hiUoX$e%*kNLgn00= z%ivyjU3(}TpUWPzDX5uDwkt+Jlxh~E{&Gf_V*-25^s;(h>8k`R1|7~f53{ev3He{i zn=oZ_J*!5)(Z!Op6!+v^yiMK1}Gh zV@=wFw`qcsPT61J#S}O%a&G1c{`A536frl~H?YVe9D}k)&HBB4)pTO;M0>E| z5S#4v9a^a&psTHot`tARE}&_|(+gv1|1O7x$&{GY?%B3z^^&S|BDt1llo|Saa}Buh zn?!H&_Z!}3jS54QcQ4e^ZpPVAI$a}s@2ZTK<6|c;C{=UgUAh2>*m=_&4RW zogUmbc@eX&voUyll!y)@B?G1qRiVq?KE)hI@F0$Vw48d%#xR-?mDV#Gh?~oqB}Sud zU|7Jg{jnC{$=y7`tTUg6}B>`x{r61u3#4uWuS=_KUe1z6uIUl-5Rwh_q1~ z0wByKe=@i3reAsj+g(CP&&1WuejpAoJtODLwhJd#td_pt?zNU5)4^8<#x8Er&bo<{ z4g8brwbJ>&o|uv|^+B~>%y(D`R`k^oFTJ8U;8Tt{0RME)t;!g!8#8|E!B|LA!C@6A zz4|eJXmtO799@N5)7{(O=q~B}0+SBuQW!l_Nohq!m-IuAZW!IDfFPhEEiEOZOS%LG zf^<)4(uoWlC-n)~2V${Nb2%HFY=))C8kiwN>oy-c67*{v>)rT{*?C_AvYLfw@Q zim;Du3QGHgYM3wPF6|S3boH@68LOYpOcaoAKv2{Mp?_7hdHG1IpRj^F*+G*m(>e=W z6ZjcpE4C{ETLp+-FO&TiY4z3@Y$^IgNLV8NdJ@#`XYgFG11am1S)D7<+?B9Enbs{N z1rRg$XnBd{JLvWjMN^4;aQO9=Km2$Sbk6B`9ZkY3+E&2ojK#E7J!Z8Wbh7E<0r|d2ijUO`e3|uPUrBj285A6HqN4OF)N0cfd zzc`E9SjBv_KN571tA8a;Ui&_~JT@8^rC3G^8R_p!zjBeMp|81L=Yoj5PYpiOkYZem zxFqvgON;pWmBf4W@rQzs6v?RVVpeH%L^h+0kvJSLACGgTVYutOEQ?kWQ^93=8LST| zB#qiAcXrkrW|qa1;7G$^+NdmX|LN}yA<*1~m0rJ1zK=6c`!Ox`vQL+xjIrh{GXeOz zc0aPICC}d7b!DjB1_=SAp4npF!#J_VWYEM3x^%X0`^qyX5_05Zn0`zPFc(du-?~ z_UGM-yOi>FamecQRJ+$r%}WAg+oNgWUL17rf0~!lmLEJzdFYZD4*>!k? zd;34yDTzZK)>9C?t2v!}F^h5NaCNbb8Y{6V^&}c^wX#v{kK~}{E+$*NDr;+VU*`lN zoK0K8eJq^kj~GFq`ECB=qyJ+dEEeoLe=?YPd^ zVkjMaH1e8V77N(j0;A9p7HpILNI|{y8D~)gIOIwrub`O(pX<0%`WEpy1p*CrfpWR9 zS+rex8PETwNy)nOK#-`w;6;3>xzUh z=7JdT(AiDh0g&vjxa4oYPM62)O*$CdTI9z843+h@DlRJBW20$|8L z^Xh89_a)`M&Rz*B0p(NtVXK|9JKq#qAN5Q7*?EF1y!f#Pp-|Vi30Q8H(25594BxoX z*W(Q1j?d|kpZo+t2SpT3Id z_N-kH>Taa`+|Fk+oLS2{fC((>_kdOJssK7^!F@L2$D+@9NC-SCn%?pL3kbXu(IWR= zbWzNwTj7VUQ{Z5g^06vlnyqfxQBQzZ3gfMq9@n2a2*^&-zH`=Nt|54BMh2Yc2Yhn7 zhc{*0`XJ=7mafW}7Bv>S1I6O&KnA512!Uj4*CdYUZs71lbOG!k-qODXX(6kGBAa^X z{+@a^_Q{&Vtr6!Oq#@49GYeJa7~o~P0IUegMT|_yIX)^$5jFQax+P<)djq{!k1?v) zZ%H17{v&Hey*V~*w9se!t6w{0CXJ~7iB($vVoBG>&2hCkupi=G{pLdq1S*Osxb!5( zh($WclZtP+I_?9AGr>FVPcQ#<$q%L_B~e7RZ9dpzi+b2Qn~CLi`KE#(={NBS?yhId zzM*E$iH1nz0_T3Xl3T>2Cmp zJ`68>;@3d;R#FVeNFvy)D#c@?V8{x-p3CpBsg>~C?@}7fGI534SS2tG0_0wSJ-;@~ z9E)%E&`xc$g=GGaqo4HNco!btzkgckuNqgE|H}iTpWdN}Q5O&Mlqh^vJVk{{4KOJa z^7tr~3yuS5fYOLjQWqESS1}i}b%EzzZ2r&qaB_9=fp`9++sC|Wyb5Vu#_&u3nq7=` z$asdpTo{(rgWRAY6nJo*TZDy4 z{cQxtzZRmVCUTI!iGq=lp2yUL-tHki8`M7i@81Xm_Bee(55C8msfraOG!g-pzD?HF zm;czrSLB1NXAX!Yi~+=*hG@vCOCL+s%M{&k`_;vs!7u?n+52bUD_?IM&uRVYDLGY> z%V(egS~xv2Md4~hL0&HOzG2pilbAZ~c)pT5G-nt@mBu`DIA*2v5h`TzjfiF46!E#j zwBdD^{>gS)+s%+iJo*_HJXy1(4yPvo5~+d^e z&)r$Jw6tG&wYB34GWgJFC8GU7Q3i4#u!e@yj)Q-RK+nFQEY32_)D zXy*rRfiwZH$kP!oh*=yqaxP`o?ZAryy3(dWm=+1_Jb~o)hWJsw!!_`I4Ur$5;dEmn zj6g$A9{X@YbphxKW0NE4O$9}%C0rB>*dc(IvUlD(a7Y4=^3%*F9TbJMc$W!W&%Act zzZBI#z%kq6CT+mq>)qr{jL5mo{i^rnE1eg1dv3SayAg)EUK^2YTQyB8So(P!HzBPf zr;J8?;8L;f6abdf;oV~Yfvi===%c^9eTdkc$ZQEOLLN!NG_bz*83gyHW5a}&Sj6%z zszSHpB0_TztS7gYdmJVkM@Qd0>YWc>`X#NG*LGy9cu;j9N}awMOxK-VJY_Ph(qA;s z7JLo-Ao$@gjLsL$r<9Gn$WTpvkpJ-KUcIkNVk{b(ubEp}&=Pd#&A=s$oz1N(I%=zq7jzEv0S@Qh+Lz zagw6QIYC#J;(+xqE((92Ob=r-$HIoTFoBT*kCW9&lYv%l#$^)VrgvZLODYQ5$*m^QJ}Tv7iiBSmQeb_UOjrzt|U+-}R)Cvgq6mtdLi z&GH5Oo8K1#Um_s;tR*R8JMpbJXqm07%~$}K4twG1`ugtL@g+|rNJg+Zc+u+c?fl_; zgBA8@v^PnyeRH0tR$D`If<$I=GADH(O{c&O{`x1p>SOiH0jprOS(w8 zn1T!QW%v#P9+K#gp_e^uNVe4v{fh<6DB$2`HwN#SA5Br_i`{iZ;4uBVwKb z9GMW%*Mt8Tg9GIfOkfGY z#9m}z!vg%wZybM-NFJ9s6vUm2g=dtPRa9meIqGPTqA&mtX;dxBf;i|Izpkcc0!}H@ zNvMTywaU6`XV9neFy1}!le^;GNoq!pxJ1zwTHy##mBMD_Dwn?z5G{5a)qWiD&-91<9FomV4 zBWs1iH*4i%E+YqLJjJ)MCC4R1u$9+E401TRwKnwFRPhd&HPCPPbiDRx=A(I&TX4OY zx}^Q1*Piz~ENJ*j3h4?BAVS?*oDLi-iQB|umS)kWc@;P2STN=fFuP2q*>>P4e4Vcr z+2Yt5bhXtmLPJBB%xbwhM`|<|;{A9l<3CHQLfu234b$xnRcla(&!tk|{_nH>#aIs- zZVG^(Z?yKPAJZMq4($*mKq=hrJm)6sjJg5dX)56(49az%wQVoIWqKE-naVW7Qs<`~ z{2cnV)jtCd&b^qN0mvY36Y=0myu?UDHrNt@r|4m(Hwex;g-2y&*@Fi^Xg667!p6Ds zb~@(^cfzE4%ikabM8w2IR9ikbH#hkAGZGzC-V^N2}8GW$g zzoYaVVnzt?I6A#oMs5pZ;k^1rd3Uv;T4QSn*1-Wfe{NJo4Bf;#K+`fy%A7it5H6n! zD_vFmZeP7>o2#)6$A-<9jkd9txSJ=Rx!pNP+CcHnsG2PK-C+8jjMAo=8l-Q&JbF0+ z0!HlE6|;!2^&QCaiBXI*PbI!~ZKXhG1cfk_D#yaQ3LMyPuslJ{wO-%FzJefRipAV@ z_m@QJ-#)!&=Q|ZRydaCOM=kb5_sR%ph*Ubzin`v-h*Az@TX9gb>}Yj9==75KYFaa1 zPDnr(gj5McjUKyebcd*fC$?k_YisrSJk!ufrG#yrgi+6!47j;G*U{`2OjyuRZ4$q- zM*?!4A4v)+5!y&Q`Lk!>xFCl<`A8L%Tz^N^*Xo4`P;>cU7bt1*G zy-_YiWWzTwa{km}_{a$MtHa2=pxyc6Kqp`F@fay;Y**$^K474tjBa+kj}$iFcxPjC zgSp|qr+j|`C{TdVVN@PdeA1B3tUuRpK%SJpke{o+C;g1-iK$_(sL8DC_U&GM4oZu) zR(#<`BZ-AJUqg3oUprbsSySkc+!QQzsADd|%kSBV(FWQyU_6L`iId+==jG`I7>;|H z8^lCsmB6Tk$S~fT3I?1<3uL^~FzMO_k>Royf|$-|G#U+=vVVGL1r}xSY@5&>`&VMo zz`pXSgqjRB;;=Wo1om_p`I|xrn`e~8uCzoYyQnr!vBz%5a*+eO2Uy7A$nm^hYFX-L zE{|lE90qD&OpSyOiy?&889$3Q!z~C-ap#nsqs+l|NGbK(n`E5(aTPX4TJd>Pl%NS;>dnR;AV<;guY=HC*MEZSrmxjYA3o{NFS_aP^`gqSp(zi0imIvU<6|V3 zZyo6xZ8@%)8N|&ZdikrqbHvskgDp~&P#BHBt zIFrd?AZa(q;s(>mi=6lb!T2X^BV}*WRZ~TXc3O`kfsgsM9}+Mjvx4aBfufRyQ zOj`p^W1`2TFx^h_{y&%0r~6H-9TzK2t3?O4@7@=WDXgV5kXC+?A!RFF#YQ&Yz3~VY z@`M|E4HG~Lv0>a`QR=pDtT!G%)_fNC-P+Ade`%_)S3j!!mNI2DM*{3*WAa*Ay&I~Y zQAxyD((+M(Abl9ad{`t)-5fr%B*2umE&qnNfgbsvOht0VAvS8U(fP~|6LNEkg}Dh1 z@_P9vegRNj-J;Lz{K&$ASA<$i?9i=u6+KZI5)!VlY3N^XF?YVUxw+f*GZ4HRFGp}@ z+d+wM`aARS)unzwdiMTGyMVu`!jBq%{E*oN3>ft5D%%W|n9jxK^#YNoTm0|`ly=Nn zAW(YdarI%CUhW96|I?dJsAt(L0`%A*SHeExE=qMj^De8_2%hgQnvij7U;UBlL0=lYJ}XVX8wu@M4a zKrr!+aF4fFCz}_7oz;P_Ux)XyCBzSMadB-&?P2y=rSLsFY|%fN4C2&kB^-fpc>h<+ zeB-Us;oY|npJh;>$z4N9lxiNHE`k31d&&W(3;`(K$k>UUcN;}>GCMKy2G?xB{ctnG z)Qb}t;p4q2!8=eUcNMAingG}!hbj?>QXypu3wz@K16R;*fjo7nSl>*|b;$hOd|$u; zkuM+y>#IevfsydaJZ%Sqi%A6x)KI{cMHuH;!T8a-U}5(OV7W&DC-z#1JumStXP%Kl zkWo1?A~|?eyrV%_bd1^%@`;{e|g-&utnvcO@{BC zW8Q>Cd6f9jn4oC`wI5(n3-O!g^X#j4G7@TV+^I~nkj4M(_g3y%Ogrt1%fL(L`Ih(n zB`VLN&cb#L>jcD1nLik!E+c)payJK7NsAJJ95Iftejf3p_GTqku4PE^hY(FG6l7 zpeZN~(HK&uoxlH~5{DJ$XBzbagh9C{Pa(|V!148zY^*}#;KmR_J2J=SG*3eMWUhb) zQ()cahmYEZT*IIpqoA~QZ}R}fFaa`!Mq$pe;$25p%>p{W{|0)p{{xq4@$DmzQiO%2 z5ei_izo8rpqD(d$VD^Q}`C($r@k(9UHq}|79qJ2l248@ZlDPa@D3YH8=Sqke8MMzs z50$O#Z_<8$@$YC;w(Z`H2)Vq)-+b-y=fD1}1LVAmu`Xr-JWGPfxiU?q*8mkWp}*Yo z9e+Qi5hX1A8LL@6J`I7XrY6ywb1YzAYvkKxDZ{GKK)qxrsR+krB#Y?E6K51D{JdBk`4;R{~R&Lp{r(ud!}^gLdu?-h=#+ zEaB8=oB=hOgyFwFO>4HKe*eVFtKmjoy!b4x3zAH5UH)L9x@C-vOgvE zl3FcAY5B{S%f==@g)<}8mm7Vxg7NXSzIMENEG+XtlD;D$OQ@=k<%4o!#rja!Da(GQT&<0=<~zTr~iZ#H2IgrN9A%tH3@9Tf}0G;DQ)-1 zfeCq$pRLNZ2GzIqIwJQT73i!zd!MZvK5Py9?t=rWX!t8oS^60lFPLKNl~x8<;djTd z1?zKv*}A|+QN%E%Ko{#l91eW!+iP~o7U@jSuZ9L`cTGQ1=H(qi0DkUM^_HE8IAXs4Vzmbv9>#41LDg~O*0$J%NUDsIg*Nh3$2nde~XPoXQ zN@r$WBP|21K!XIl_9Rl+UjO4d$u>JEiPF!U?w{c*)%_uG@X4+H!{t!QQC@U`(E9U` zM;IW13?e>LXzoLnV&saviY=L$OmgL>q&=mi9ZM7dI1eG0A`c`BjnCFr5>+55W9G=- zy4h{r0>PkC$QeB$>hqQzs1!=k`L+lQjM=85P{evaPFhR)~R<5zpc|SucKIZ$lf0v^apUW?UKja zH|y)PsZ$~TpLYk>2XgyXJMeejCE!=X=YIT1c1$0LBypUlBF21}R)wR?Z_eR2>2@L3wql$t z^NFCieCDGv%t0bM#`4tWAr=j`ahGm1p-Wbq41a3cqf5aF&Us4&X$etfG#nsN4Uv=cA8JA3G490-%EvlPmjfPt)c?$@Lr^xo8I)?cc0@2bl~MgQyl7g_(<1|-THBJ=jOqd#kr znhB%sPV7SDX@n!RBT|(BGK>f13)i*u2<-`flS-!!MCiJDcqtn<&U|_CpR9U-?7Nb8 zLWXMTb7D(k!?=)zan20Ycc-Up?!{cveEbucek-w?Ck9?OopdgUmF^y4b2x6 zpwSuB41vCpvJV#3_V~c_(7^OZY2F1aiAS8mz|@C$yS*rHl7Si$HYuRkH0%1$oO(UlyZ6;yi|XY6*HAPi+9gQOWZ>+-#Ephxy5higqh>U5U?l+lH9 z)MZ8V%~(U>z}V0SE?ah-TznB!`qf*~s3(LW!}&PStQAh^Iz5E86fcI&T&j2er)Epp zJ2Ah)X=Xfl9SHd7JV%^+EMTc7tk6XRF`R&vfUg2ZXs}R>X~w~zcTX9hW$F0jzg(%W zlSMh#Q!XKjwF#G1h)*mzs;FSfy6NGza|-8+&4VA4_^%{i42}LS;o4d6k$|9~nk1SS zpwA#AG5@mQF@l-sCe;s5jtiJ*@KPx1D^p5&f;k1bouliWu_43Og+F#%y%Soj7p}+u z?aqD}bl*BmVPbE7Th=R`#BK2R%lQjeHiBATt&PZOc8ceV1avRFr;b#3zHnsDIfQ1m zGp?!QA-`oDDBdcUfJ|F$wK$PA9`U3o4o~~5;0kfT%kJxYVTbQtbAL{K&e2I3f3n{T zGhkejp|)J^TblQf>+F<9OT~vld(Cl43fpr{zL2&qZJ(C3CUF}mW3P^&js~72fUV(> zF8#X{RH5fw1Ne7e;~n)25V2kRCvdl) zOnoD?I74@iBB0#+Nik~$r93lPId=VMY~3*reuqbk9>gdZG&zCfNz51Jl?ba06J%5n z0>aNP+2tQ|-QCOA@Rc`CLf=RBI^pMYj^Lp@9;hY=$fEwfp(ZLt9PodWva!8r95a5{M`H_<1hnu2=coMe?}Y_= z+t3fJvCS3H6~(Fd#JI4WE<9*5-bi2HNMD&FAHJt7fnP$zi|A#UwB-n)7X&~QsBnNB z76!RKd)L_>@ZW_{!gFi2p73am(+NTG!945rWl`5K+jecW8Ia!B(npRtr_W80zxz>7 zEAz{ngV6Yp)(;Y2Z7A(OhNaP+f4goM zQ4~OVxl{iaC~9Qt18*e}Q=#0?yI_vgSu)ov&Y5m2D_W}Ny*e886st!%OKON9Veg>I zsDPa6dkZ}d ze>y+oYbP3dqHWH!sg8pR55z@9qDfUSw5!~sjY7UZShX?aLf9n66SEKC6JK z7QA|#p2%a6``P*jZiTCX>X4JFS9j<`Up~72t^JNtjBb?C8Z&V#b@qF60ZY2G6A-S_ zZ@bm=h&?V!jP`;ld)C(*1l+L%ry>NLR1n&Al$aTsk~pbIw`6QjIp#{2K$?RuD+57g z|J6IoA~(07P1L|DocAdPO6(ee$erp z)M#twr2*?R5gh5hQEsHH21I}u93|w7SPdr|)?DU9YBVryU+^dljxAbV-Y@+M$`~j+ z|EkS}j@{v#G-+68J8wl_Z@iLS&VqHWQg8PDzk9V!9}6p5yOft!id0sAViumToF~t-wsE1FhO*2NhI|w6 z)Ic$8)|HEnoCdR!TkT1MIcR*ilIGen*2!E9L0sCi->86zqGxO&e||KJCCeRl)~F}k zU8>RG02THaQ0tn0F@-`>VmtGPdWeD=C~aor2LeJd9=J?pn;Bc*yGfCT3p2$5IA`~% z=Wr0c9#45$!h-DhaZ!mRxGi}k-Q9)g&?xe|Y(%4`bZZwNUQCgDhCe;{N?M z^}H=u$zz-14F_xA_Pe%2PVqtQXMIrAn@6iAE%j-)*FAsU?UGq57|*_9f$!>pkc64v zEw*qOkuMCUHoL^;Y%DVgy+COV8P+;=-*fZ2CF2svdtD$_wr^V_c4xo5)a}v~$4HP; z#FJ;u-QB)^8rOHWR_4p@aU+vm##8v(T}1TKTG&vt;J|r1s!27ezZ}CGt(!VOd@s2l z-MWA=z2hw-YW;M6xrETx^qE^E1dLX$o%Aq7l|@?MhT1{Wkd|jZCM)T`rXZC?4=1Ow znJ?xZ@!VzW@#<`M&U(~<`{KTC{>HiWhlX!9U{Q8|b*p**Pzc72$CozVTE?z58{kS`yNCa?fJ$ufkH^)tZ1+89OhvNZ+q9C!)_Ic zcU<%8Q|7!489o?dsxgjlDN;SQz*3j=aN4hMe;hi_MCk*s^84P}YNYlK!^8f@gf9761pj20YpqxfCf%20Z2m?gTzPE$fx(AiScNP z)~rcT{4WV;Avl)nnr|4iU*}tQQ-ag9try!*xSCswG|MBbzg(0_ z4z!;?0W!@5+k|Ara0Y>xOB|VBG@LlOR#$@%#+0^`!9n!CUN}T`p+E@vSxEkUC+iqb zorQJu{2LK`P8o*CFAT$?F(pMsmIZcfnK|#bj2p}z5&ir3vGEgHajU^IvyBf&;8%tD z2tD$%Ed?Qv4?@=EA#~_Gd8Y=iC+js?{)y4oej??oHqSIOFRf)TtW&lrgDj;BG9u&T zifnL!Cc8r`R0lbC&@k>O+Ga4%w=H^2F<{#NFQcv!h|mB-4KPvp$2*uE<>G>C!jhqH zv}-w$^hw@0wP0+jWrr?R@mdwB?HARPzqdJY_DKTHE=nPY`o;DqjedkM0{I!tm{H}5M=A<2{IxeWkpGmGVlo&?~&ep_nw|tOurB-lQ-1t|ZpZcfj5OEz}$`uQ)BdSH-q{ ze<)mbzBk{J?4;?Pg9p)r^U)z=$}O8xRvMR|%7#KU(?dPbun7Vs4ia?FR`E-N?e~nd z7(GDo)2%gCOp>xoW5cv-_KF;oOTe(|39#AHFzF8xC5~YRC!3m@>gbpPsLuwbFyx5o z5T?e_Y@r|=bN6;>h$@WqaS|g%1AOxvsNR-RYY+uwRKZ@0ijYBzlk?L}>&v>5TgP#E=gw_uC|0y@`OD z>Jx_(Z?ZqOC3lG?9%T^nH>uPdTCsdW*?~M{QJ$U< z#xeNz5e%(W zcRDIRev;H-dZ9EZ4a_$qg4%Ltb}q*;&y-_w1H=lZ;?VcOS-Cu0U_XkJ!d zSw7$=|HaqgMpj%W(7@TiaysnyxQQCE{EYg?Z=aV^N8+Wv9`4QeopT;2rJXL7V>o)3 z542sZjE&Nkg;1@tDA#@UC!5 zELgo`43reQ!|nbKs(v`39Fv8`F=VaxDN%?Z!b~9BUWaq@r>6~_08bEhR`>CLuQmFV zrQCSzW*(p5Kl$&@r2X*hH8TRj!q$JDk~W$WPZGcp*nxP8-yR6U@TT8$|099s8NZgt zC?wGyiJjmxbrT&UYc}4rU4cHX>66VPGhG_r(fB5^SKnPf^|2v{VFa(#&W;tU5BTG; zk%LZ@Q)I$As90{b_T^*s2v?_H>(4wJijIU@av-?-Ym35y%+&li)XgWkAl{`WHQ zo%W3q@BIWb7H#V)akI^-onvgO@T74G{seDw_m7_J69eTkRZnPvlDnKi5_v@;tTdJ& zcrsmkrXeWp#HQsnA!)MsAPz@*)TA`XANT&R)C2pQC2Bl$#CU7WaY;g)j4WOO)h&p& zG*i2V(k5PsWcQ;BwDyW1q!fJRfgw6H#S=n?L(@{X_73_ZNyyKJmIT{iS~!>%L++v* zPwj`Z6au6IF4T+{S}YcYdo?k~O#s_Df2sNL^O-maY@79AJbEF{K|u{%+t^4urcZ~F zzOD6dnj{A&C8?^;Wvg74Nwl3?^-Ew0=)AXH!RtXW* z&2JqW76rNOd2wJt&{7b?4@=>CaIbo*Rh7zK_ej`MDVk9#H^F6t69hwjZQ#tR?n4Nla3r)HK}2oekl1$nwtMl%|w|jk6t$ za5GCJo=oY6#`4A*?;RGpKnCdo-8xSgBE)=YoneB~845nmY6zkr&*{uBk?l;%xAk)= z5fix9r_X$zf5j5gf6Gtouj(z~_~yab)n>xuWTyl)z<4?krafsSSHbJT)0@1EuOE8A ze7s@bJX`&+5S<^!BK>X5*yHRI0IbI2pj&*tlWt8ApC(}zp7pU;w>P01$CRI^iKQsG zA8z^Nn@j)96b_gNulM2}KqCv5cv|g4v_s9RNO_F-y!StmIW!0hC5jR7T6*yjbEK4~ z>Dor!#ZCcr*SNGjc+grbq+S4;J`F<);=rldoMEG!5`C6UCf~ngK|yI`iYFu1>ia)l zuKkvy9#x0*a1p?Gi++@mA?sNkmAfa>45y^=n17|sWdJ*4oj1!(AfyR$uj|A{`W^*` z3YkH^w}rWE9@zavZqLql+FT6MhdMJuef{X$$d>$3l1b&&6Zt7Q1f|o&A!j+a;TZi! znbv$=LOomG$$hrv~I zEtCHdyisx2dIHEzbTYKzvJSR=$y!gEb92jotpczbcfQ$`kBzOzi*0EG9Y^ zuM*qq%y6)Db$iNm*_t_Ih5C(Y$is6x;-n9!rhwp~e@;&BGf4@_6NY*xNVx@ltVP`A z5(jPnf`J$e9aSr#-)JoN9mNv?LB<9PcQ;onBn<&-gc_J|CNf!8I8xsxYIy>>;F8F4 z-2EpG{QLKzBd$KWy@CMo^)+2cL$Np&@@RiVx3$XYZlAQ`kuArp__L^I`&5}a8IR+f zoh1%-OhKj3nMq+sHum=1JM_u7(odJ_GWYxUhH(NWQteGbM{1SukW{|q^l`D%__c*r z3DNj=xq>Q4Qc_uyQIh&{RfKkWA>x;kI}9##X8Zm* z%M%B77X9+$g?(KUy~X|WmO{6<*|@JSmfR+fH(ud-O{Ek6!G&c3Yjc}McmI;e52fh? zOb!A0dn0`HZ*l?(Ct%S#RZFKp_$}of$iQGa3{liXDGx4<+)$4*MwfZYPe|0W8$Pb~ z^uS>NqZ|}F&duCLoPUkvEzMdbkYP*~+V)EE=9EB84+2uv$dAFjI@b15Q@?2c5Va&g z7UCqiKp7`C6JIc#YrSi$yT;*y(4YML@R6Vw);$(JL)p(B8K4))U8&s%)(CE8~z3BGH&GJYJ(=Q30Nt|j<#yX8y6 zDjTvQIY7d2w7$G=0v6sk_-n4~6AR4Se>GGP7 z&Uw0V&kJRze`Vl&K-o#M-`vz)+FV9`CV=N5*n0F}#yFy)#SFyA^c}*T7m5+5Y*C#I zB(N1vk1q9bvYm|LrTv`vti{T1U z$B)FrC7oPZ&3|m4((43gx8Q;Yu5zbBTr{2R%c@)N6aor5g5$7CJF6$2<6-7aOs*eV z*E;5KwO`v>`P;HZZrg~9B-4bRyl_f}`Kzv}+0Dym)@T|oQH)%Z0QroSysjwTkWWiP z+%()ytgjz+%NviR@E3pl(@dy_8c-9uiZO|2UQi(Nn%lmM@Yw5Q3X};i5ct8bMg0Tz zJXy)LF~fwhUcWME?Q9&BTUG_9?GP$~c#SF8#_$HmtH)Q%Q-?)^So1O+uE(cA z`n(GS&a!-Y#US3rq&pa)=d(+Z{OR#O&7(z`!zAZs2h`%AT0UwH)Bbw43Q%dXI8`|~ zmpT{()9ul5oY+y-=qFUwY%tp;?I&t~uSm(FWthe{mX#%b+XZ*VASl331OZ~(M+-}H zGLlZju*#sPn9NKfh?=m4;f1pZ@VL7#Npxo!Ow|umeF>O;bW}^7WCK1Dzxt(eqle3`k<@GZ`(Y^a+5Qg%{7SDh)8gldu&YojUC5*8N)A~94IDy* z_X~tYa}LX^^2I;XI9@yX&0UOkBIL%*A;+3025FvY02rAF(8Pb^QU@bBt)WEI;}H1y zZy}@wG(a{ma`2l6i=?c0Xd0*-yr+2Mdj zCgmSCb_HX(uaiMQ6 zUj=II#fdAMAU=UkwVdIZi$rSsl(YXPBI&$P{R#I(?wwLV-y7Ek<=nhVy@qi_ zFI`+9ZoI>i3bOfTwM}~yW2Jd}_7%jCiyeo){C@{fQ61Gtv(f5PU5r{O;R#!3WY}sn zF7I;v`Vk=+8-vokU5VOjI}d8V0JZ`P}GR+)A0Uz@aRNk5p|?Rc*k)DT&(F*)$>u6*hMD ztZ$QV8tLV9dJ6qZE%5B0TJ7{spcrmnX@n3;q$Iha*`Wsuc4+#b2n}S4i;|hP$ji*^ ztZu?Yi_%{cMz5p8HbFYYu`hIuMf( z39JyvAi_)!Ztq-x_fj|jSKO`ij4B6mk0F+NU7dj8%PaCA<^u-n$13ttPnS&N@^9Y< z3J*vdVLY>ZmYHb;X&h)pO5P7~urM@sX+4EKTq-Uf>+9Pl_m*QnbT9-3vPz~j=0Z*) zR8lIfd6_<1tv4+03AIjvbl6inD1bs(hHm*H@3Cyf`T8%jxs~3~pUl*B$nUx2vX+6F zC!O~`DGe>GYa&LE-mZtc%-l){19X24gF;mB-80QNsJ@?AW2e#Uk%vG?r`mt3Um6)^ z3X(_R4uIjK>s>263LU;Y6juG5Z(}j+e!@;e84vWnNHhHGIC}z62nfhwa9Lwy1fidR z;TUml4v=K#=?sf=Y)V z(jD*KPy4z(JI{U2x$o=xUHs3cBCuh1YHzcikwI-PQiKp8*zbuCFc$%nCjJ0COhr5i1+nPcUH>Xw#n*J8B7}<5DflRm*X@5wx+Ho&z(%HK z=;@Dt_|mlJnK>H}OTe{bAu;zlMwt;ah~>;?{ef01@nrl(fl~vVe5B-4DSjwq_eh?w zG$iKu2{}?_wW=5_5c%$XQOFqlGqr<#Jux(}oP&0;>a#A72m^C;%uk-80$l|LQp}q& z?CzlSr#5oi2$d8z=^eiw{kDrF+Ah9`v0xz9W~j4iO8#qMO7o&~g;*xrKS&M; ze}zu?d*bU%R_r8G*jc09K>T^HB3C0tKc9Qo@poBwE+vs5Y0;}2@2ka}|Gd#T2#hzd zk+d8vCTI3Sle=r<@ut{TISnc{g z)`t~V*DL$b`*A~4=%Q~KVbFn9iI#T!NRz)#umIMi`}#2^10ryQ|yCu$gS2J^YG)bCn@2}u4Ac!+*k{& zEzCT0wbyvt<${+TS}2qVef6>Z0n(JTYALAhCr5*kFirKC08p_rll>7?K+!(0w~I7R zMJ#fZPSA7(kjhY!%WSGBhD^-X6=D2nlVRztZ+?Ks_Bf(LboM-At15>i`kOP3WFyPX zKEt!zxm%!~7)l4-sSuT|KT##Y+=Tfo5{(?}Npc~4h$K<@o9R{tgzOX$V<2J>Jwtca zCu@7}0{3g%Wz(rsiCj!VEY0+~;i`5#`Q~S{7`K|q(jQ);3UFQ;*q4N=WPVubiFEMg zphbSjpRbhM@63vU3$f|*2s9_-HN#+inSX8CUf5jml!}7G@7eC*;OcC*&x2?1 z=w5^Fc=!~=s+K+V2D#)s5=X#op6Sisi#zTzm3OehN5uS3PL>Z!Qn+)OWSbUqk&RN1xlZxACoJKEXofv+k3Z*UmR!_9JVIIti{It+<@=GP>9ay)3*fEi=-&1U;vm(pQ9_bI5ygwI`x}sAg{0lC6wtExti2TecRjLKLeF@= zruCt{=e*E(>kX6wN^0qoAptHpBgvkMx<_C-#PChcN`ucz06rnc&Cc?y@u${n`goO~ z5wsD8`2o-Wwcxe_i+#w_jBweCzar+{iL3kFEeORk3OC)NFbdKhR96w8rEt0gpeXqE zA;XD!E%NoYHU5R(%8n^~%yNy76!k*i&pwUGMFclES&+rICo8MFdesF=h!?F1nw-2* z8QfULw%KyA1=6MSRAoo$E-o07{26NPYsrqG*6m4sHx>MoL4VrR-NWt>OG7q#-w#H_<^A; zESJidV}eqnrKvj*r@ELUtQaWyP#C_?m(;(bfH`|xatvJmAnx#8Tj7W(w^-LS!1fTg zUw@GiVaEpsqA1{k-jwZ^yT5Pu{k!fYapaN+)6?*9Pi|3%fq2q{-9HrV$xlkuQy%UH z2`J_pb*!>Kv$TP|&LhH@S4R{))aO!U!#lRUF(8Z;IvvhHV0_<AHhP7aOn8?SW%6?^npgZhnP=W2LTVa+7FeV4`hYQA3hL( z|JVeqH!_f6J3IYeW5O@L!Q4#0+&YX!Ze8J#fJUOm zI+okebsaq-w;3JnbiMP82Zy*AI43n^Zcj~cVT?U54DywxODyrrN%z&fc1JeO_(lX4}SUpN-G#jQsAC` zWbtYOkJKWwf@20j&}t=>mB>qLj3_5%&MnM91wYjk!WEge%`=+^+62j0y-zV<%$UzT zCj|r7oA@}$xr4-7pFFOm`|RYz7X^`>12Gktpfm7|bu;El)dBj6fU2o&4>B4eC#ba^ z4NM=1Si(<*V2G#IC9OU6S6(~Fg?(Dc(|u4ZKEo^%k%DWeNX`?)gYz^+Iewa_5D{ya zs5@wG@8Z{VOq6UVvAB5y1Wfvj%bhDEn37YX#bi<#jo-DG?9%x+R^OKZrdvneXn#+_z<1 zXd*vhoHSX3-0B|#v3m#Jm*-XKeCrE+AxPHm?_tyr5m~}^E7e~`KKu@gE#;Ve7z{gH zsAzi7K|1`GdM!=&R|M0ZDrKF<`(fLZt%7kT7)6*HJ>B}&$79|81q(%xm@*K#S89W~ z7H`E_R|#F>F~kkGI*t@o6&u^=`0>M z9!L7}vgcih1UnP_3oaPvtfZ@U(|2{~Nj%h|Zn);^{83ng(`o#GuPcrV)EUoyA&G*n z)DhBTSF4T@-CSpV`USKFYGUUBr@d{`i`OaYi8Ip44wD~c> z`P51iW2)@MS8sKdeYjRKd>;bWWc348xm{jatNRnBwpyZ;!lG(Af3Ya#D0_nRU&rCt z^St+y==>Xw|B5cF?tP{0?~`vYa8E+Qywx{>VBHIhSRbH(iE(ojceMqRg0NzG4*|HC zTPY~5mvCp+_bi$z>2`1Xa)*nN$LSMf7FiLkS*b@t&C$AkVdmz)l5@@agyAE8%(zX~ zZ&Y-(v)5sX>EB49Sk@;1h{nFwsyN^zTKZK%s@S`EDwlY2?1?KoCD8UklAN$=Dk*_# zrme|?hw$yyzBm1#JZ@vKolQzmA2}QkW^BeyDhh3)Gt*w6(p#f4yjhU^gzjJyRB1Yx z%x|60`o*>~WVJeECBs4Ejt}d-H@R13m^4>hid=|7;e~%V0W?g6mA1wmKT=gD@qC>s z2I<3{%cU6DCeK~{=4`Swo~`)m8O*j4LEkkSa2t9(q-Hv)cdKGAudh1F@i2bkPr|~K zDL;!yv-(Nan$eG|XqfgAbpzRI%^XUMt?S;u!mRPUf1Sbi%K1YjKmn6#`l<~>(ZJ`lgzvWRC5W|-lbulEK;gFQ@vI(I<$YDir&6e36c2Q!o zJ)npDSaBP0b#fY1L}bf~-1~EsA3Je@PvOARUT* zw2U79Bv1*8oi!^`#+-kMREtcuny!Cb5y;Fo-d-%d>*xr#RtxYT!^V{~Y(u#T~xMp~w zGUlWwR*Ku=ZuRc1+A1VU>K?Hr|*T$NfoSd9skya$36swZZy0$#v zR@cWt;u{irSR5XSSBmqhlnFQ&AaLSKj{L889Mq*(Vw+q?Ywi&Ks8eeuoKkUx+2vvg zgb;gkd-oI|P$O|21H?Rz`uTKin7woAX^7p9{+fP4g}6I!7dX%hH@?4Vw%pPjf4n=+ zVV5Dw8X=MMcFYBqo$zea13cC2%>JMI4jJxLhF^y7>ChqSD*?a`&tKL;5!)|&`BRL> z)yoe;%y6X`AWp|VF7?IMZZU)ox=_b=E9x*h<-VOejxRQCi`0Fb#id3;sH9nKtQ~YF+c9YHS;6p6hb1$fRBwHCurYJNIEK+ zqMAnIREW$nlFXHbQ(7lL&?@Q+nLa6*=0(Sg)1pxSK>chhBl zS)>@|B3v?z#V>8B_$c}sgBsD6*Rfc%03XuN;8rlk8@)zJq5;B*Tc4> zDqF{*tLx1s4d+jj4+noZML`;6tqrZtS2*8CDH+Tg=wxINVpLEw7rH&vTzJGAu1`eP zockAJ18*6hMzO)5q*lVbBFpiOGzi&4@d->uvI`5YNiHgeC*96NkdBnt?FYW#ZdP2 zMLQSnJpb0%0=yg)1!Ha8`|%MAKOUUAwe_u#c-&U%4I;vAK{R-nwe2T>-M=WM2*Ef! z=aGqRQbWUcr-p_-=Iu9~rQGkFyEm+Xsabuz({q7bJX`LGl!*lnpd+~-9&1fU_#49T zmoba=BBj9it@=Z5smz9VfJS<^HDVWgg6k(ZX40}cj0JQ4dz_#Y_8LQko_XGpK(YK_ z)}niQMltyLul8*-8hV_PBMmpB0)KJ;8MNxEA93sPL;e2LBK&&scky>vhw|xvv!Z`) zjxVWnsT#v7&p$z-c8h1z$o^}=S_OyK*K|0SjbydvHo#UJo+{`PwYXniUC+l^U0-wh zGROIct3Q(xL7l;r5ek4ciT(+6m`oM`!mob%xj%da4ZrRHYGgOb2vLMvz$2l?ej!Jm zzZ6!{uy=icqiD4|xv~0Xun?YPSyN7*RG2wgZ+dkGT z?RyV0?47XKRh61TbmV8DV?yrn57u=j`c=s;aBJ9Vuy0h|sP86&k2PmYWyTmjLLdK$ zUl2P^VXwzj{9eqbo_uFn`^~f&w2ISZyY?FjWe2k-K3a2xiIMkj(IZuYV^m}x!Od0X zl4&|#L2#+fj`fUV41J0|P0H&Z9{BbRwg3d4nP2zQe!erggUIV-Umzj(O7v3_a;n#d z5hgD1GitaFD_AuK_|%iizV_R8GZ&sMq*E8Lv-%VtAryL|6eEsE8c>KH&lG)wl6;dS zKa)KlczGGfH83zRsB=b6M9-X-e*n}OJIBNXiMbfNM=smK%D*dgcjaQ zjr?;btv$q2wc~6KvsUV)li$J2%p~Izqqt*cidY1HpaaT!W4JwO{^`d&mU5Ihk`%aS zegwTYe3|)S(!~<6(~pagP2uomj$2;wM_xSewN$_JxJmio}Dv;NL<#7Gp;Cds&;{9pB1z=}KK$&v( z4zk}8y?jVRz1~(WY4Tx~3nsWX{o!F!P4$XVm{rGbU86wj>MoPcIBm-eoM$1-&WGf` z<*fn>;@@pYfhUY|56KWaUqo=-LsJ~47bmX8}L#H2p1H9 zD?O-lR;L_)fQg3*Z{gA03lzZanUZBl9;rkn1Q0=4xFQguo+N<4#=m6Bnj~4S+~7c* z>%Lg2&pH`<^Q2@gLbKCqKZ7qut2Q1w3|-7_0?SyH$@SB$n<7h{>kR_<=S&_DBWCkj zf4$n|JrHY_d+=Z+z)D~f^w@#$j^S0$;i%;h4wUiZ1632Fly`oEm#7A1P=|{$Vpvnt zjMx|xt2=?Z$^4CLF5qZ&=)q}JSkdb`?JNjXRjL|Mm3xt$-)|m-xRg9AnX@|e8^wWU zdS4Z6D+jf2#Ky=U3}N1%t;6o-M4UK>5z=_^x414BTxxc;=PmrodBI>lDa>Bega||2 zsL7>msoXJIuWqG(L18RL!DMyGYD0MvncI^vkw};GI^ii0i%PdX5f)cPczaf>_AtMn zwf+NKS4THo+^d7diauowN3w?4*8cXFp-{9}u}N{5=I6Ulx%BBoL@HHIt{K>>98C}X zT`$N|8M9I*O8qua8PRlE#k9vQovm`!z&Ck**dqIRB^Y$XF&mpKwCRaM$A-3W%KGkSoBjDDsEwdC@%DY?#eM0EZM~_ADf1k z6?faL$^}M@F$iP(af7G7?qA(*57FVmX>-3?eX3@Q89U^vqeyyQJDN_%xjTJvGd%67 zQA=u<{QU8drWFVGX;#;UC;z3ac!Zu*Cc>N(<2CY9z`d&Lf9h2BDumg-VVy03jtObd z`#CNNIhB5>|0&`_erPEHz13+>Y|x$2AqF(=1uPJH1CCzddT|R{(NNC|&tJ%pl}Fpc!JxlFf$I871}v9E~!)S!D9r9UTrP#D1>-*Q?+0 z+B?7zmqg$>YQ+cZC$JSCLf4E@^6-taMJCc>LK={onV;7HscS>S(yi<%A;sl(VhXR0 z=&ii{mfe3ZzG5RDIG=a6I>zA|9pa%o8;%444q zf`FE|#Ak;dwnaMCIk@`_j!*ryX$=a(vb+xXopiHZYX2n~AfTnQggl8ez9^~iSmlzb zsrW2ZB-yfl2q`|KTN^4^TE%OutfTydP)hoI@cp+UPWFUv%hY1=k{5vBMmS#08|&*& zIfZWcb}a+J6fW|%(E)=)5y<$bgWj-o|sBNnV8kt_>V{6b<}ArK|6a<+R5fboRZ z8G&i+?frc4d3|MV@Jazw%t9~$qdj9GG$a0j3V#VynJN=Or)-_1r(y2hPs;d4{)dDH zB>h{QDQ6V_+ro6mNa}Yl6FA_<>{sa*yb%_NV-<b;kgoBJDHx_#p+pz_i@E!?UlQ z&VR4>Rb#!{0^!87q(X*G%FY?6Ty)N(iaPw^dcSB$>2wNb3JSSySU)7Ea zP;_y*t|n6^0qR>YFFyajzD>!3G)Ez%31^}b( zZOGF4wj@^{?i3A|7kdwR2w-e90fA&s&>Lz7`sC}e^99sx%3M6*>_*T#6wH@Pq0^hlGm*;A=oaV7TO1iU5g&d;l6 zj3&>3c@a?Cem3Pr2y|Z&V<@SMqgXKrT*M zT)$C6b9TOPr;p_RG2paE5R`ObEpotZPEbw_EUR}e{m=JODy#l@vXtJc0Z-!fO1Rn) ziKWzWo_6kcnNAY~MrB@K!dMgh2AhgYC4iI2LpNqEhZ6hnBI)>{8e(ZmlFpAkrQGT0 z(|FV%-yi-Yh35+&KZjGez=%KBe|rZMgVv^34}5!R^Bg0iU;g02Gup%L%h)LtVJ>%Z z2=oP)5GN2#UxP4l6tUJN+04Z;Du5Q}`nLAsok7LTLNd5M!PsVO_zBm?mnxJCl+>?= zh91M!X42oKO*ntQPuarB_}v}9a=soNa0>EbaVsp)I{!zAl#@yq!o%9k_lADliPywO zl1(VH7o3%rmVTd!jBJmTL#0$XRy%5F(CDnBWio;;GG`4qbt=AgiUV_8@Owo|o=>zk z=C{%Uh;=Y~eQ9%hh95~%Rm?z}8yiWa-IPk$<0DR{B;5MPEr*Zy3e@SjB22N_a6C-J zSc-KdYuui6V52gXva+>e4u}}Os?zy4q*3R1I556w~Ql)B#MjRzR9YGf5Rop8+y@d*Y#y=K*}JZ*-VH z3``Z$;@LLlQ-h*`VtiRy^|k=9Zjt#Oz@@l=Ld?L+S2K@^2dL?SpzGr(K$ffP2V~dB z)+!E$8rqdO$mCG$g=ZECC1dI!UvpVfy{sP_^1d(9lg*%{o>4#ea0*Cq!d{(D{hCXgeOugaidoCAyODKxb+F&@AT%y>cOelCiK z>!wHr$;>Z4pDXMrivFSO+kZBwVnwM)cb3Hx?5#VN74^Nq^-tsG_m+QSPsQ}+FOHga z&-QC%y)|Rl4=*FX3E@w+3-={6LR4>X1y^hHV@%AS)?-SqmhLjZW$(=;5#!ePypfSQ z%Q+DAsb2BWKW|O~tQ=V)7gtHiG=N@RJ-)Z$^KwEoSMA-)6dTA#!rR;0Z_8|=IAUoH zK61S$g_aah`c~TInl2eC5Ab^Hg}1TI@J|p?h1aM$%jjl;tnp(fL97yefgAqykf)u( zZa9$^o}3NBRq?r*yMG^O(2dB;L+cLrzpci&UjVg<#NJm8nDD8m`1)$6m_HPlG7-%0 zVcmYu{c`Ws#^vE%MnITpr3kQtS6Xgf7kP7ZdyDfRka;p=K}1l0^5Qa{k&%VZJOB-@ zfSU}6=n2scVg?QMc!UDK%3V9u8$st1i1`b>d}581d!N8=5K9DCI-=ZDj5hb*W0QHG z@O1+A2tfQacq(mmdTNS_ue|JCy6~|7JQ{GMG%Fly5|AF}r92%kJ7EplEz zvSF^I>+3U#YZO(8i|wid-l9@BNWUktIKCdWwT`M`=!9s_aH2-V6d=RN|K zP+6&|s2J(7*iOe(+PcyOB_+L0!l(VhkXO6`5R2P>-te)68cu+}vHf?uE)tB1Py|Dx zBBhZiwpqeB0QVy#S}jldqFBx0W>-9uIsCH8!b?67nOFn5EtzGE{4E=_`#g1!u|a!G zo)l2!?1Fls37E)aAI^o~y|%Q81F$hEf|*L!aD30wnBzz}I^U-9^6PdSbJ2fpW+`!% z9>c5`|598%#y#|)N05O-)|0pLOosvTDilsO&j=lG)ONbV#noz!C`x1)MczDc^Spe{ zDa(w6)SUawaTF)vns5m15q!yN}6VMc(9ko?3l!5gn zs9%hcYufW`TPz=ZEjkWT$>5wmxoE8CzLGgRKymtqk|E$yoRU7w+LB!*h+U_TRnsgm@0Ijx+c8?{^Wj3AWyn;1ANE%8_m8e-dIixqmV z3SuPrj!>$H)lygdPG#%fq&Iyi`GxgSUuq;9n}zk?czT+vqKpHufHk5V?+YAw*$vW~ z38i7Ssh@-(ZGkBR>S~~t>JLf|V#btV0#F16v_w>{^I8Orq7=OexHXNUR-Ys~z`ZVz z&Tp4+H#TNGRLW{J=Q9qnB~}gh8PpvKmjfUs|j4YODl>3rOkplA;!;ZNhqjk6 zIan_ZgOPg*z%~iR;*9&(W(WyPgfE5Rf3gF540As8u*EyBm}4)E})d2yu_V z$Ml%lp)IRSRBTbesls96NNHT`Wa1ef26pWn_qn%;DoJv^E;URJUOQ3T)$u`$ailAH z#s4i}iZQ?D&-=0r!xyUfMJdUrb#ag+Fvsw+yLhj^XF#(XP7bf`g1U%_ zk2uU3!-Dsp1~(qumRNKHSP8I3Y>p88|A^wL{J{36O<}jGJQOTXf0xIbH-?eRjDSiB z6~lB<$*#u6tGgxVXq{EyQT!~m#GG#5)li-h;Zs*W#t+`q@UwHRobDL;Blh%0}t}nYw-a1YVIunJE%!isiUG zGcx6{QT;M>ZV7mTNQN>ca@XmHnbu9=>qaTu5aY;4kKq(Ax6l5CTmKU=MuG$AR=HNy z0R!&$=6VKBy;2{)41q8BH`RT3DKXcC{s7qQU+loV^d~I_=vNBr$QJ|%6PbQXK3@hX zb?{TS-jxN7LuVOU5`Eh2V-i*hJyt0dFll7Ce00E0&65jp-l|m-;$kbvQ$qlE>8ce` zqfPFxWv`atI9gTHZ*Oz~7eC1|A#F*l39%obqKYw?R8*_#PL>EI7m_-GG9TZ}HTNj5tyc~n<6%cHGN*OE2oOk;|E55e zl0M=2O#1*ULWvp$W$e$Cau-C5W(%+?iUEdQbcZJchNLLzOH~5!OIO{CpNvV5ZkRrJ z*{cu|(ER+Au!x#()9w^a^57lWGAX;NqljrU0jG8?^a*loL8#f9QCm^+i^wArGx9#J z;vwml6!&Y6Z78)8P0Y=C_z(>L%=tS|zwXEzn@mJGS4oI{v;p+WsD1r)_uFk7I2Ipp zx!-1u?7zAA+j5j$PGrLZ#17%kb;=>-a8Mu>K+ON2XfcWv2fkaLn4rK3vhm5+MGXO2 zU{5jpDyfDTauTNUii~+peOmpW#DQafGqhAtEn!cpkf~51A}=b1{WCNK2-W??ge0ry z@sPn{XLgiAzj>_tz~}LmmhRUFxL2?2v;lm%U0p}C{-3&W z7&n0n8Ah4}wKC+_kIu6WTgOFq*=jPLaYIW#4O0dT>O5Pf)+E5R(kW7f{>;P1pz|zffPSOcQwQDnz%50s;qV7?OWdGa47;1>~-(4 zfXsK+LUw4>ff1#64A>?>f(8i=IsqUu6L^?$w-3np%&)!ueGzr^A9fK;EXB^U^qbDA zyvqhc*pUuKSUK!*xPrTEChQ)R&n|BYJ-t*%LU8HHt>~)gpVLff?*@Rj*PS(TaL!1% z)Vd73^)}^sVB^`FUucCJ9LrR2FO3JA{2c#VR8Kya$HV^pXdSh`+x3BkIm-zZ^U>}P zTb;bNESt`7ztTX2w<~T+|I<`fXu-HyL5EC(k&WNXwqb5TE{~SSxO@hrW-}ycnE7#P z_Yav2B2hz-%#V`~zhDg--v1(8wrm$dEeZg(e-7fDPv9Z{zGNCZwif)yWD$PVUFmEq zeTut`aB8o6`u%H$7PXxRxxs5a-K5Po2HffMuKcDx63U5o^^ncro zBu-j(XFz1=3yK7*?$DO9#}ronAg`4gq}5FqoZwQ%6r#YW5Fjmgt=U0jI^@BJ|N5uO zwu3Dce~Q812<2E0#L5GXeo_+C-7#Jq{(C2BXGiY((A8yQ1mbalJzk3)jTeS*y1kny z20+n=fZ;dXp}1^bG}yz3uH;Jz;asoV6UO&GU$__*Kdxc|lz>XB-Ih;xz#%gi#F02- zq7v=d8_9~rprxXZG-7CF?2c&FTH>{hV`baWx4+8bGNZ}u0{Y~e>9`9>g50V8uwo*4 zut}(_I))A1-o3g;iuUoinKvH?+KK_O;MI!3&132Vn~FkCDFdoDm0zUM?NQxQreCRK z<;4HAcfXgiF)|`uw&^faEGb7nR{iwf6DccFDRg|l_wxqgsESWN~owTFEf9NPL4J{h_ahe{sV9bT>X3~#egkl` zu6>ByNB|sV+@FPS>}I6j|Gq!h5`}Mi(?-|U(p)s~pboemSnU(SBRhr}@nE>F=$*rV zXh%-Rmbw8#IKlH6yEX!Mzd88GPUDfHF727+Q@0O0oll#cvlL~Rx5*(y#MB(CH-sAO zA*`ST=T}4CFnv|@_R_FvxU?3EOmWulMBp_$9$B_+FvC6h*s!1g*zbkB&7|Xs2@8Qa zNsq^MdhP9lV!s!`3YBYKs5!#Vd4q*N4B}=jb0mbuBLa!&IbKctDq-y zpN9SmGLgVcPD3)YGw1Usa-Zz?px4#{$K?NN#CK3?pG!VrY@|}uq^3Evd0$6c5)EeJ z#ASlP)PhTv@%cQgUXZ1TaK=&=F#fVV-YPkmPz+i>rHSn1+gm@o4MO4J+|P2@3Kbcp`Ia%;b|J)4JFfVcci_dC@3fJwp?~RJ|+1 z|8yUSL2>-PJ*DjIcpaTlUH*k(P@twPn)_eRAN5`|fY_R- zM8h1MG+vnzDny41AST#L<)Mnq6YR8e{X5_M(~Y!{E$=T}5Pym?Em@(HWwhLj2GVsM zAo2HKr7fWGi?n4gfLKwY+AzP{w<2pDwFQmB&=Y zJ!>}zrgIC6VsqArdY!12+8RrC_5MATjZuKdnv~DyD`B32&`$$&lls43n&}yqiN%!z z5ABi&1v?IP}Nh$mea$6Z2Le7ey+D=0|c8XhkmrW0L5^_`G4a@5XcUjERa7}w30ZLvnSdu^lgrqiHqm*V zh=SC$dmgT)pixu4`+@*l6mHpW`+bBpe*ioo8ZI&MPIo{p~I{4=p+!M(S zhD`S`{dxi~-U{SLj=d`ahKy>wED4%y+JPFQ=nyP9fT>tQ2qzXFiOGeAXnS4MT!=EB z4ExFUVp&ztLH{abd5?%L#_)#Lf9u3SE38dJcFHo$12@WEWv)h>-g)$+(;tO|FxOcB zc>95%hFFZ(sMY5`!*|Qxrzdg{UKb`VDLlki6;u<|_3be}LM*b;Hp$jl zw)eH&;Rw}+m_?m)%+lItYkZ>bn!oyvZ9<<@JOk+WqKO$H8-mQO9WCx+;1*Yt=LytX z*8PU$eNl@ZjN}I;Q~v68pR;=-|Cr3G85wHs{P=QJXqom-W%4nupueSl=`zS0AL8*V z!Na9XjgaF=MtBs@U1(H^4x=X&g2(;EPz#uv>=xk~#*Pl#bfCpJGz&3nwmpW$P~+QP zyza6$;f;&gCPw}o7AmwMVwqCOU(>iDi+4>0VVV8TDqE^(4aMY6ZjM`XOl^`_;hODG ze6YZVdIMo824ak2B~5l8vNAK+!^|Zw5VO;+ap56UFr3Jxpwp!m?^h3DSBQ?K{L|RM zXpLx|GLju+u-8|-^;tQUgxh}aaaE7WjX$`m=9=GeaQEsT#Er*eVdP1NKMU|Eg0MS1 zFC9EjMDnr9VC(D?A8)VcJ3u_cGNC-)m3(B^;SnH!)Y@nqT>BO^piY0&Of&;|ZKiCeYG=n* zIyY1X{J;Wbco6}8VEA%rUew0}Ce#+tAOWc-@@o+xjP+ZptV{>2qo4h^VM|_l(FS!R znC4nuJOA~LngF^r`b#ra;RrCi5wTuU@5#eFOQ?^_>7H#3C06A?3S$7JR?|ZnX*3H^ zMs>%bOSzWo*G+B~Z&ZN7WxT@mhEyr7?s@h~7EWq}wIuRDWbTUf6m_$Xi+)mVdI@UA zla#)fYjB7rHXFgp0N2nwLX<D?ljtuz;%rtlSurf zqoXMUHBJM8i|nYdF_FI7=Irs+Yq%r;!tFP_ zm5u?!U`KI4mW_JNneei@)durb6*1MicrKn8R77bM9rijn6Ur>N5!J^9Tj27rou}@w zx+pk&7G0-7g7Iu?4GbUK@5yTZz>$C+A7`cevY*OynXZCQ489~)!4!32j!O7r(O_sD zMp$0W=iGM?;;zVLKJCT&k5MBZq30j~Pu?(-_m>=p{J(Z$-By@W=>r(#P}le)H?Y1Aj2ie}}i|8Ypy<8f~zFFAw~982GI9laOY$^P5VwCF}$% z1)%anrSpW~Iz9nX?u*SoOd^V>xo;!+-%rm`S}0oezlaCM&;I+(2|Pu$j@o~v2Tr}u|CJxZd&e`DGF7iUv~hCs%@n9?;`lcpWv?$f z?6z|z5@(_rp3r}eX?5=iv;OUT60)r4!}y_xfs7oNnr_d(k*}4=aJ{b~ zdKJO7t&#Yf5t8#$Rr9Nb7Y2^sQghcVJ5z#ZZBcn0a4Qvom)bu8wmerCg;}4Lu)>1= zD}Elco_hs-Z@Vz>iNXn36(jr}iDwevS^S~St!Yx*d4Wjx&BF~t#5lE;MOdHF_&a%i zVLvHg;QNa=nG!C;mNB1j(%UGS{V*o(7%tVAYO@TaxzP$l_U93y;yIa5buTF~x`$uA zzfecyQ=gPkQ&X>4g(>h^AwN=bX9*wXka2E={~6BUpxq$mA= z%gL1bxOy(gB`M~s!)=jka&K{Q@iWzEieveZ_G(GYO3m#pmqy=htxxLR>Zhj9ki#`B z!ugL97?TOj(>9Q?9#f%!T4c8SD~U2AgegzXcsUj4Q;349FD`yD_M?qJS$2i|n)HKA z5|bE1rGEuSEMseo9MM$6+;dosm$xojOfJbhTF}6X6^f9A^uBTG#KF2XDRRw`FPp%? zkPyrGf8&uOUsV+CKDTOWVh)MmHk)t&sZ@#@x z(>UaK0ey{BUba7ZxOVc zWcAQhn;r73$_=mBtf&YdAb?9^1R&x{R)DG3ecbG-ceJHQNKYBfu1mvCxa*gKuL5}3 zx2^nLWwlB)D#vzDo>=?`MfUqE2*^d*-q=5xGx~K~mitf@qiqVuu;1`&aMl7a4$B&+ z3LiI;Iw|vCjq?N6Ax0c>7lSPB7g1ZKA4~PfPrNpHg7x4e9R^ z2;ut4xInwI@TECZM8a#r(K#X(`%ZkC8Y6m*P6peTaydux?QRyY1-YEA zXSsLzZhW(qxnyNH6Zky3mJ`94$U@A~eT*O7`*e)Nh;%^?ETh7ON8as8T`!p6ufU<# zHE@Fn=(YG|x-B^SDNB%}_xS$wBI?Fy93SPej}B4X)1gsV>p?4gu1{Bx5hAqVBFgf^ z1BEg@-_9)@94usQlYbh>*32(R>PButILti!lx%G$P0RTB3$e>gKh5_aefWN!OCxut z)MK5Get@9f7ZT`fRslG{=Dd7N<1d)dnYdDz%5U@Ut-hAB#& zsK2kcr9bJybifS|(jnMR&f4=J@`=i7(#X~Y;JGV-f!+v{veF=p&Vrlhln zj!#FA$0BhmW4DQPj<$^!ZpYcI?OYS+08v``9?{0$ePPBwk^Z~`a(+L5BIRcAm!4xN z95u|G@NmJ`_doL1%GxRV%aMZn;t}Gv5^m$TkW_l~5Rfk+rGPXDNOujSbA+^Xhjf?pKtezeq+v>T_q*S_fA-II9M6vD z-u>Lyb)DzuJXqS@n`}PYN(zE=3tO`Fl{)pjNK~ghUCXtppAYMo463AWs3NO)u~Zmf zuAz~4iNlj#tNV%agW1M`aD<7vjmE+f*GDqL8Z2?ey9n1tBDs$tiilq=F+Y7uDF$b7 zuxC#kWP5_RUx+Dv9$=q8P;|<7+`?;nGaECS_VJGTAy(5T7S4sq4-nol)vss!;nnc3 z%vwhfEi@s?o;W!|HI|+gf!zB&RA00na#l8Iiy_JS{n-0x%MAB0V@Jd?SsG6y%1lVv5uoe$T%* zt{Ml7uwcTI*od=Lv9+9lo3|f1y_h*XiUZEKOEg9WI101HA9(uXTXO;fc+-T7Lhr9m zCk%r9&S!2p>A+8Lxu^-I)BUA*3`R$lU#rj`V8hnS-hVF0t`$}ta(NG zR%`3$bhGc>lqg<>NWR15WPr3|KB9E_+`h}_tR|Y-$vNHVNz$mg?2GO-mkxuiJbnHa&AZg$Yy}(j2kml& z8(!O%#^H3cx-ZxK`GyNRi-Y&Ko=bb*b`F-^o$7JxcEkv4Uw!yHWiQ=Q!634{*ckYz z6lzG!@C%3z13ZIuttkS_N`w8(1%W4@-US{EW8wte7?{M|xi6i#V`YhpjhNiNhXQ z`%>E|SsvS)xsqbg6AX|ctf`M~82!MIsRlz6qf8Xx0RXhUT&&!+@a34c9s@BO#Zm}X=&NCf?K&oltdV>0EThWshW@t^b?LD=%Uzy|~1$@+k{s~Yp&)qIJ` znD^;e3SOM!{i1dpIW?N-a-~()|FFG{^AdAui+sWT+%hZE#Or|nNL`}q!*2_CWtJ=Q zk2QMpSGUX1?yHUDSZHnqWS7M?w;00WY2t^q1V}wb*abmZ6{ZVq{@Q~mLzk|Ml#1J=^RrKNsE! zioN7#;5nW}0}IQya8!6dFS2yk)(tYqr2I~PIoiH)I&UQCu&i0l{Q!C-<9i>Lm5cUG z`Xf`9CZwyeFg!9kP@za=X)N_56)Lapd$AY994&NE$6$yh=GGT{>d(<3gvOKCXl?uM z_S!Vz_QcY2&4Sh9wX^f_*A4bRy810Dp;R>Gs^v**hJHVCKF_axUy1N$Hk_3GW@1uk zbs_8C(A8>N9o>T!?-O)cG6N(W=X_se7~mGTUmMEQl0yGo%Pohc=)wX0DB0isq z7ZoA-ILDnN_ZDkYlZNunOx~SnLtve zNoqiyftP3&xE2jWa`BXnyg%Yy6aHQ*-SjITzvF=d<@kJNiRQ|#3SpHn_qF1=Qhjax zuK4t@angF&(2+YX=@`~eNQ7@9nIOB%DjIgoWJda@_L;4I5!At@G!3cO{=WHRU(**i zkCZu3X^dmFN%uqZF2>w7+I|1L?{-nlaaj;r^U=b(Z&om^4D%qfCH6bDkQr69q@?mr zDax;R$tA=Tw}M-pT=0X+YwHYRvS8{YK}23&-oU`l-V>@Cwlw}UcM|`k=&0yx!>J?R z(HfU4Oh@8SzdHjMTv{e* z_nNLj7>@xSA!-;1@0)Hxsd!U&RaKzgh?N0elYH@Qka>PuDOKGTW<4tX#)uVZ3pG;OtR**!-Eu3`A1 zJPu7}n8lD_aEcJ#> z&WhN6C7^C&+)wSFdS4#|e1Ct>!bAA6|7%$I%i-7+sx=me?0+s*G|#_1kY3B7qMM=M z+lB7q_5IVda2UB%78|+DH=1y(??fP#Rxw`}VB%}5id;xo!vbrWtNFN05|+kmO&b#n zsB%Dpf1aXrx3`elz@I-sK|zM4K5259w0ZYHUQUg~zEY<1QpI-z(W4_*Eg=O%UO`U8 z+nu@Oibn~SgS#>KbW@q(uV0gkiLs7F=GOiev*SoH@ES@_fdwc|K993WAVNcdXw2x* zg9uo+KnZUD0<3!jKvK80g>hAhzUI`GT@FA9TU37_)D#ic(JNq47k8+fX<)m(NKPzD zRd;*PSK^u4`1pY304D#M;S1pOuwxR{6RkR0-i_7Yt zAp|nhLU6iB?cM0(BwaWu%Rh&?e=)Wd_m7hHnAVOR@xMo^qm4kHTWH<$l&M$-%>Tlq z+E@zDOo5iUx843dPI?!iM^?K195)Tqjsu1&<76U!|pOcl2Xkmq?m$!>C!X%VM(x zkKIcju?M3HFgc7~Jve_ySNlo|aTiX0+Mo+UR^n1%S=jBGJ!Sbfz(oYT^ziy4W)ika+`14*pyaOR(6Ol>ln-fc2&w2&msXXN74LU zEnDH3UA9aXqok^*r~7D6iLiJRw|2lX)L^a>`9Hm1f{6uj9K~WsfBU1{Ynws27MQj=6i<=?4|+Fz){Re%yd|ukPWvX}zKWgJDB&YNmpB#C zXoz{JT^uFMzX(Kups~l~ngzSPp?0g}9{asGv|;cNq%=VP@z=)4~UqD1E8Qjp0*f|dVn2xOmv~M_nl`+RwW!iFNiqFWTynVQJY5C ztYuVAE9tcv99LT|Qq|(n%t6*XH2De*i({^8*I@AVv0eD(fO}OD&+FeIdL&Ba<=oZT zpNZMrpBPryA6pY6%cs@|6aNL|0gxHrbH9HdJZk#Bdc2gySI7R}Fuoh@GY$v#?eu~I zYh`7jX;n$O1P}a-&KbpFBo_P-vc&idS0QqI0Sl}_qA)^?=R**gk?_3$pG`$=jN(rw zZbF{o@yd5rG%x!D#5(EIo6SlCUTMMCaEwd0c~MYSYaaRp+Vnw#9(Ka9LvNPr9(RugdWHgIq@lGhO7NH`$*Yts%`x?Kl=0X?9M$?nN8`-7NSlr1X>)Jf=7{7J8`# zUn(L*1;|Cde|kYP8edfr=}||$T1&0Xp(}sD8nf-PM9mHVEcI#;boVs0=I2Mk(gk0XvHIgB{9ignKltIR#cJAA6bb}<;{|wHgIx)b$Dr;o|h*k?5SCavxjZtbLihdF< zow8N)n+Q`|t@9c=ga-DIy*eqOdgkqbl!Ny%%=n zITcWLWIk8BB}sF|igQi*PI!#0u>QIf0e1ZBO-7C`A%=a^B0vf!YsVx-$pVlf@R5pD zPLKkUdooVBoe)7xL`2z9iU*eufM;^TnnJJMB#<}v($9n()yl%-c`*#65c{aQZ)v6b z)8Bt?IAYFkGLP3IU*_paz>{~*R(li>RmHl%Zm*nu5f9ukmTZ7Z_28A)|9{o^JAUgQ zqKA21Qv*7Pd_0&(rM;~#4P*UaakRG&NhJV4i!_=z?Ktd$h5!c6Jb-PRxINbe(82H$ zCmp7jeP2b)DF|x6ubLh$)nsF|VHIYgXLb#^m38C}W$ z%njTYQc!sQbylt9MCbjM42;ItwG+p9Z|f=9Yh`7VD3HuW)KM){G(M~E7yLv%3NEl6 z<~=P}YRP-e-j8p`>ud{X%>jVgA%TcdH|AG9$#*nY)QZhiug#1vsK31~p$DJW#XZd| z0?b!oBbV|$zN>_C?VUv7Z^%F1uRPvcIMp=f=d*FY(vLQ-?CDwKNO~qm4I8W?vQ5H5 zH6h)lb6LOrDwmI$(-|-|_h#=l(hbd^cblDxB!f~nUlXrxIM!k|^$ToN5p$hg>Sk?G z6u{P4N}id;J0vSFt1BenBPL43Nuv^-u89o!@N!*w@gbR;oj0wdVGqFD{1H zW374uB}YHUg1&u9PdC5UqHO1xSNVzkj*Hsu1^Wkqg{_@K&ttM}Ht~@e&z^$71p?Sow^r;z#B@xb*4y(5G?~G^HG~wA42Rd2)%lVDmt_PYqEJ+3 zSA%@Y`X!N4lYs! z&j|z38r*=o?=H+nkAA4D;ow{)rwDs{V&cRcm2GO@!$euNREwrIeAc)ai@4xCaj7M- z0WtBYfLwJy8;cOK!U~ak1r>5RYHv^>DGPjr0Y(u}$+Q}559W}Vf=F?**O;hYX~K{o z9?_y)gbofen;S*UD#P4)pq2_iSGsWuA7Ojj9Y~zHR0h0nbSWB9d85^s7C`|^IRzN- z;URMzE(ws2O!mLntnBbfKEe16AsH6x9MO|6VOkmPxeck9d*9@4{MOL9$fymssww!l z^sIt`IS#ggcHWHWRvQNliOVX@_CGb!sL24JRi1<;m5+(>J+~@S0u2zf6ewl6?C838 zH<*98Vg65!PnTY8K8;ind$R>gWDJRtP^OJYoe2mt_(NR-uybbFw?EPJIBgiSj!j%(RO)SpuaADn-nM47jrudbH>N-rW-KIfY={;%l{v7rVU&Al z6>!4MDD8Yz8hi-xVNSUWmGrsluTg`kjx_Y)KQ*CJ^Ht^t$d-HQ{FEFz-AGyqcn840 z*7w~sm-Egd=Vv~5_TH?{Hpf2^4_R)h2FVyp<&+3J5&};&h@S_9Jlswz>wSxfHEMMU zWh7%QWP@eg5~{iDO(fSSBik#^Y+CTq{EeNZx{`-l4pU6LnuIDC3z-> ztI~jXHBQkA8@YwmISWrotSrWi|Ghf4arjs*oy|!Yn(@*Ujn-=5yC5k zFs*+r_E}#ZBAwXm^sc_>QPolM8#dW*46-V{PJRC40+K~!B*W)>8Wr9g%qV|y)R%eR z9`IUeFbp$k#iM)1{byC}3E3C4FxGW4Z>EBS)VmIjC(URUe_CI-xs z`dM&o85|HT3cIZLMxR_=4KFx$-`CntN7KHEu}`GKst96yR^TYiJH3Hgv=k@0-&Dh$9Lnl8dUck!d&y{8vn2s8~^UlDq zUdC&`>Mz6Hi~9G;5I7L#am$($;6ie*1421rqMyjbL~-z5=B08KkZ0D!u1NzZ7Fl{6 zTLvh>$EN&o$TXG$`i~(UTsZJw5p7qh$guESRiVQ&9s6Yfzt2Zu$-gD;H9>w12 z(`Q&ntI>F6lS^)80ojp&5QY~lW(X?7nrmKNo>mg>14b#5UMqmhit{7I{6~SB4yf;j{Yc_^k4K7pqQol_@xI)u-l~&dA)|AN~8}OJ!1d2~uN> za`_wV+yqmLLAs;FduLvCv!sZ{Jr-$-ki}6T8gp!-qC$RX73Z!F?r<{0geVmAra8-k zko?Rk`(@wbAFp#(f@2`p7kD-xDzlA^4rZ-+QMtdgF_gg_gxi5#4>#QZh8m-qB}kEJ zjJ59#+q&EGcT)AaE6OkVJNt$2(!pq!4uHk}_hDd7gGUH6DJXbU)9Ftk%kpiP9^zMZ zj)dn zchdr^>OccuEnF}=H_Bq$r3@A?2^)mtzZ!U63M+ue6U&IUYj->Yle5Rs7Bc1Z7O!Qx zNLGEwlKoMTlpnl!G;8NrbpnCH*0Hu{LX7xCO;c6X=N4qHEhKz2aZw-iKgJBc2#Hw> zVeE@hVpKIJu0A3}-ng@>?fh!;i>w)vpB;uonpROCo4d!txhsu0$YE?{O4znWyF=#b z4<_U9TYEPkYeUh2e`5$SHfXNoqR*C=pA+R@V~*JuWr1inq)UQu*xQN}$|3zAB8wP( zoYt(f{|bVCMF6L|Rk*~sN}XSW6;{;Jv*uMrU|Lr7D*%-rncg9LSLh^6&_=+uZzVX4 z*y=#xkJ`1B^4bO#2vwvSesK_S>h0efr-pubD&ZH;*y=?N791Zsr}OYdOOav6S9bwU zMtG__LW~0h0=veBuGu{Nwtja%oNugbD%9ZebOpNj$9%hb(h;@tT^0P)+<_4mch=tY zA_UdZLMCE{P!N<{QQnWxo0 zf66;&XeBc@ZV~L(;0lPuue*jRyV|(QmBR4mrwasw09(v>QJay#x;akRVCULP8Ma_Q z2&Pp?2%48L*0D*#gD(X4`H6EXd1TL_cTJV!w~z25Sh_KfvAe70_(-7E2h@d`jzHxY z1lv0f`%}E546P-Bp7AFESe#K1{tp?GHiaWiylfp2_1vIeJ-VSJ5a@QWE>b`d5h5&_ z;QgN@yYO>Pyl~Ua8qcT}>x;P0%Ya0eyQ7EOLuKrAzuVJPx~zi3qknex>`&D_iy>|b zPa{Q@YL{{YLljY-N?%{+bXS$kPZLb>$Z}&r|0$cs!I{B|8?xPl(-xfkoxC!GmE@n{ zdF|=Xy#2pNzc5-nAjZLgI-W=)_5MRf73G2*v)-x`>L8m}aa3qKFaF?F+_gLhV@Yym z(jn0HWEf1_Gb{`0-^LH6{D?EQWuR7l+*n6^n0f^K&sB;${d|d1Qj;vt+E4~z(u@wL zn67rLc*e=w-M}E0$x_p(Q5dO47Tc{UJSi)y?EyKH4Dh1>)~VpYra}+c<|CKa zaKIwFvsOg+gthhN7lheN0y3RsHGY`MV`%BD|J>=c~(#Rb_MvipH z{OJvwM~4dzE^potKP(QQB>21ezQ#g6>gtXvZ0Uu>1No1N>aH7Cq+SF#G4qF?)~V>H z_reou-gozm5)T=u%cA^aZ~ri+mA=%#FFktyZuo0|o9u&d3K3)kvKOT7#YF%Z3Fo=$ zyGgoxeH?E+s)D?;;a%{8!mD1T3ii3DxCX3^$e1=@VHv?|Q+J?jSV$)9{3&x>cJc4p zAQ5~p<=j>}b91|th;SpARiv?A8IB~G0eC0kpokj*DpC@_00r!8UW{_$FvXI`+pZ`(=el)rWVvgKMj7f(NN}LCsH+NFxFN^&dIfCfQ#EF}O7^X>? z#6tilKTo$~g9OGkS!J8z#LuHfMx~$0%zAjS!xa&d!wMgAB)6UQiIKz1vL&4^Xw+Z< zg$m75v*M>_-xP)ZUnrs-LoR6p5RziX@_Bqbh#&P1zhCq-5ju<@TTMn4aAJ@RxQ9cH zPv2RHM|RVsv1bj3JX<<3k3*W2C=R&*|2guAIp3xbN9l$)@m-{CnhkK zRsa?d1UR80Lb`66MGGeqU-ewkpX|W_Coj9NV-euM2Un8S^~w*v{x{o-3Mm8)al8^f zc<}38nJea75@SnrDDA5NOg&^IgS7@`>z|yoN2)-5Eh-$8~hu56oM|c-~S8--R zXE;&8wuDUFssR7t@zC_2rB8f`#U(=?w*VJ8Lbx%`_7iZ$9X6cXQugr;aa^I--$v(_ zmpvjM<|Q2`?uJ448&}@E7(whw4m<$x7*SIzY@CAFi{Oh0SvHOap4_#T;ycpgfsilC zJrzVmY}I|;|5}Q;-=+r7?^GyHPN=Gq>K4d<_Ei^mgY13xUZet2NQd@E=)%#_&s$@_)J2~Ot6z*ptVzoYtG4?%0MxASOih^2sK9o$Wm_^c-TUHt zbFGAOANL{-B%9BN&)NyFfQ5yFC@8MISTQzwDC_S;Dru}1Mvp=+0kTe|#LI7by8Zse z)#P+!(G+Afq7x_Fd3p6tVy~JdWYIIvMu6T+NzAog0QB>@nhoiriQwmL5_C9d#h$AK z>`5;yRFv{cz^!IO2{DqjmBs&T@@c*z{LV(0V>C-lXvSvr{_b?5*#`?QE~7v#6HK?z zcRN}$8})CioL&Rb;03Tyr_NZMp|5>17qH(Gulz6~aajv^)-z<(?okUM$fO8K20@(> zewt5UU0j>EDh{i2PA^p;2XDvxJZ7gyYcvo_Xkt>hOm*1<%85#QeSm8KLVjfgvg%q%lq!i6cN`*&UtZ-6<-zk;e zpbZaRoS8>57Dk*ZcCObC9UUws`+Uwau>J(xm=g0_V-UzQnM+dQf4 zSTF`?4bFT@r{u9h0JJmTZDTNYPv)@qlKVOJq74;}nk}4!Lf0snUCn5g#Ct0nkONzL$JU3p(1mwRX=8 z1iE~Z?Rl3>G<9cRG`R5#J&?m@xq#4%eu2#W=d6Qd#Wd=w=Cb>2lPelkbH4x4fo+Et zTffJ9Zw^V2??P8TA%tHkPs9n{&1EnP6}@~umcG5WKPKtMRo_hOP+WBWCQ`+kfWlo@ z*fdifV(GF94i?6w&?GGb1S#sS@Q=xl3%CT3O3z&DXl1SOb6^;HUg|ql?d^C zx?wIC4EN{amFx3T^>D*CdL~5)TFQ9h+xM>8zvg3b8&e9)OFS-6VKdj>#B#uG(!@xo zf@yeo)-_qAK!}$Vz4e3Tgo#xs=8$-Q82H#qix5VKH+NV=Q@YMZ*q2(PJa!K|YI$7LNhKfw}}9Vj+xj00Rg%DuymRln`Z? zz38Q08Z0R(?{eC&LWS%k*up$JUMguNgq;V!@8Ul209nA?{=27w#u|i4kRVUOJ{|(D z{YO9Z`%*w691+5{nHRnatEyMWnEs^kWJoOFBqAnSkds&080|2p+z*IUp8|ISdRi`& z%eb%#RaEV(5aRA%G`n@l_yN}=s;jz@Tq)hs{DF5H3ptWE+txXjR8DOoyc2Qeq8Gu4NH(j&!Ch*Inzm>wjYF%k`)!tCR z=w}CY-_98DlykT3l$V=jmY2I}Zo%~4zGWBJpLuKawrEE8tw=v1NvY!72-c^G|tHzr~Iv0sU0-q8A&KO@lh zLg--VdW9th_B}KJXk4#sV2!e5+|Tc^Ns+f%0($ zO!Wd!E*9c-duNs20_e=LTEp>BWEi<;wVmCu{Ga|j;jl&{^|mk<%ntnlVP9jY=z}`J zHPTL{r-pvzpTO+WJ}iN!A28ng)Qusd4#qp|Vc8xa3G3x2Y9N#gZ1nC`$??AiJ1vsdN)VW#kYHnSALFW~fSy57 zJXuHB*P*;H5C-KwbdMWCh9=qpQuIJ{7^)*cqGz;Vy5`qxAP>Johmg313h+xgv70~K z+`Bt9>a<3xdfyFU;o-MNLh>5F9eG-saDW#37$J1=`^Q{y^cTm8g@8#!G!gijFBkw-Lb(s`o_r^JC#kUxct(m${+w1#gkYI0L3&Ekjj$=M z4C>Q=B)~AsCemVHa{DBq%Wj*}j1BX|`le>O3b!GWib>mJ}-Z08w!y z@lWa3>4zUhKT1*VGj7lzjk#(?%p1*IOA$m%0&17%$y8wf69^d;2=9rF5dzd!;!7vt z;qw@8nmMA`+N{SuUYI85zJ#rb)mIXs-~Hg!#nyi0HO}Uf=4neOW*Dwpj5SHi$^S}N zd_Ud1@_~x1oQQOu(MOk1(0~k@cvs0%ugU?X@ zpC@LX`cdfLkWBp*>SSX;+i|%BGaDeooJ80n?@6Jx>*m<3;r)Pg=k+7g-)~Z=ea*y8 z&XD72%qiTS`H>ePa2(rz)X0*Oq01Ln_?P}%stM@q&9_MDlhy@KBA`q2$~EK5_}IU1 zvUf#6sMTV^ATJ=Qi>*~q80nebQ@a(g{Sl1LR>3x)F7M5%D^aQt)rsmx* z4jfeRoHrv(jyTrUXI*U&N05WV^#=_r?9+T=WSjsWGIILsoT5uhVB$wQD~SG2gXiK# zIxV^-pP7|+RMFX~zpxT{8Z3bCTBTpQ#8vQunK2Q4M3H-~UK?Z7} zZ;;OjY+^WC%_O^VVkJPe*oj@2QV&s_zHvHm5w=QYm7 zEM4h$jRd!gn8>>OXY-hN+usHxa*;{G105Ff3{cp!yk0Vg zlUnlIFw<@3ZykVc^1lKh_jGy;DAc&huI}5pm~K96U<PxbU)P>=j(Xwq-@c06>Q;`^%=Q_fbLO zHQvt&e2s6piLvA{pecDQ6&+-c3xvRa4x70MFq{OvbHpej7C5nyEKfX05B>xmP0cYt zvvFD1=jNvF+i@qEG{X&3;t1aHF)2J>`pn`Dgo_@2b1De~piS9X;Qh#GnQVcA8Fw&^ zBukIml2JIIE-Lb9kNMZYi1hjN1i_QJFaLSfoMgSEhB8D{UG6-!+us@eT*fhyS{sFj zS~)N}-?ILK*L@QL!O-ba^FPbG=SbbmEU%PfP@w+*K{RDSvVWdX^{2SGS**s7Vrshp zc0|LyQ#tG&j`r(G-WDJ#`R2^E3nXS|_i;7VT*EH0?{sz3$wiFX6BA~*h)NB5Zy|*^ z{M}yv_n)~q5%M0gT`(db{45GkrceG38_6jpXM=7`3f5W2#l>Hcp8;CfNML0J-}d5u z7S1ymaKv}OMNq~4CFaAs4l=+)vqeb0O@KB@^tIoRPj29`AuPJ@_eeQxdWuDbc#@$2 zb!_BYGeji?z+$NYvsP7#{?|Lh2RGJDAl>Q$@3>w&6h%gS(T1g@V!?FvGAfJpRph@k zJrnIsWyr-n-EbVZ!^hpj?5UjaasXhy1`CiFuCRX9SwRG-i(aAxqkHn0o`4W)KvH;C zr`f;1{maY!So{aaNLo_ZkH6_PojA-h+6sgyQheHPl2Ytl${=J+i-dU%VdD0-5svK# zK;m)GSu>S7Y;m*u5mRsu&Dw_afSOsrPXNfgY|>_{ml)34N5r1rxhKdwo)y!qfzqtX zvdS!jU|kq75(d#INC+oJ9(M=GQo{&&=iX8v{7P?BW{cp=DSooHm?P zN=@0@YWpeUmK$kT`_U9nG$SLUvIuu#^VA>0c-pYJAgl)(Oud z$m*A@F*ah9A~rbs9)S83?DO~KKfi!noto<@kH+q`m`IguFtG4X(GX2!S_h~AL)1Uysfy{1p_UMh_HzeOjmOkNlYo`_{zRABs8NDN`f>C zpt33fA}W^!`cF5&JndaK@tBxFnJx;(RZOabvIr^i*A8X45kA;@++`2~cN@X5wF)U& zEjnCh)v%G@`Z%#$!J*7Zfv*H?0cZflQnNsbMuoO4{nLSs@SwhoSeIkbQrj4CbvHpRP^nSSF-Dp>;9iUzs9UnOxRvd)I6=fH_ zq;|3^_Ao0x8$66 zQ(kOvMOtScG(V&k9`;6TY5?MdPgiE6@(H>r`Bd5i$d z8)R4Ztd5(}r2ZEzjF0~5iXO|{AejaH z9g$B+i6GnUjaL617Z84bQ`UVm^K1Fn@u?P_##eFooyE`-ciXL){C@@qR+uuT+&p-u z-eLSKja&&RwlnI7mv8N}_V?@P@}zutb|B}p*ho2;a{6o3h?^sTuKYX6K%-n|!CWxY z{8~B=#Vzc@*)=@O8KE;A9|5F$36CWMFDy`I$j<;QY+OM*yx4Hj`-z}9L&xB!iOp^s z!4b)I*M{_b(UFO~H)kimmkp_31|916oj^nc5S4!D&P(R1BLd{@V!c&SSVQQ*;Gj}N zV-P#Tr1{**-yePCFkRa(+4&*{AFl;eCGl%;+A$b}z5-qj)nsMWB8)1||mE>`G5+3lCsfBp4zTFx3)jr3f0hx#0 zpuCm0J(@0rQMQhcNqIn;%IbnX1Iw`?Y;$GGVd1wua9{=NALW$Yv&)}3 z1;xy)+rycIrz77%VqAWi**V4^?z4)celVZG0TkpGzU}ca`VRw18s=t;2c)ov?R)<2 zyOU!5ZGGKk|I;7*D}gNZBLe|3Kac+2_JT7gd7;c*VdC~Oyx1tBMdK&9aHTgWy?kc{ z*p`~-%S&PqzvUcGe)}8RcC~-W7I`4d9V(rM-5l-3k&rYigj|2qAHhOT-HV8{>wmyT zVIe}OjCub%;OC!y{uYS*S3-VQ_@`d~C8{Y!sWkJ`I6MzjIwpZl$J}q2CZdf|?Qsj5 zoZ=ghbvx}WmJy|*S|VsgSzbA{Uc*WmmMqyrMa2<`LX4UXV{0|@qjg^@N)wmAt0@5^ zKi802ioS8a$d+2z&6-LJz#sZ48Bes-9H+MZT=Nc1beoI`iU>0r{Zj^faviY?OzgKt z5Ova6o~+HJV}m6!XRs_>OQ^t;_@6v0ZlC1g{|d!$tx*_;r_ZMH9V;Wa=@TdmGw~JL zQ3k-x$~kZytS0Vy>{z@aR|n~avE`1rMe3xbcAfbcLX9}D=J&m~rZ1O$(cJCzn&e>Z z%f0I#qe~98{}D+PJ~6Y6ad7xy;=A8S+5v+4_~{MDQ~0MycT}k8vEm`W;DaH&G)dOx zq2J1Q7Bh`w5}`-rM+N%8XSgU?a^8TO;ez;plQMKJCyavV;*Dp?bh`BJO|-8EH!7R9 zdg8UGxWtmgfasn*0M)$u>H2ZL{j#)p+|Tq58uA`r1r8Z5Mn3kx^CTnX_ ztM+FyxY70P^>~?NtdQ}Jo|K_dyy}FmI$h5pkc-?8)6GR}7_*^C*!5hU=Y4Yqahc|X z>hpKim}0cB{DqN2l}h-Vi5C@|Uw0tO{Kv(SWxWSJGPp?6=LtYK{;GEnGL?e_^;u8B z&gL7l4fFSs!!Y_RtZ(dZxuoG$OCxI_E#A+aWVO{A(qKC}SRKJ$o46G&ddIPY^)~7i zqVg{&G5b_^(@`3M_BvYSvFYfE(c`PMcno2OViUY5d>8=2pKp_UXP|3LH-7DFmvvef zt4sWuz4+WNFf5A4#QH)1r;KRkq>Yth|I){}Sar+dUbEjis_NOy!x>@tNFRa5LdTd_ z^>r9Up$t{DjG64k5r|d`u}1|&{}_6;xqNo!Rs}$M`5liBEHto^uC$&F(7Mf!(we+) zlON);`()y?8J)&$PXOzB;S3wEuk0vd`~X6NmA%->VI;4zBkrT^qCyZIj994dh^Ama zj)x!0+7V|>(#|`fKy=aTl_o<*=MFCf1r!(B^%*M>?{4AlODY9O&>!nSIO*G9F!Z`z zm)mVj_$U%sNHX=iTHRUhoLDAE9ot~J(Q71mAllr{*5&gj`JwO{h1c;sPu*DMb@Luy zPl-jVZo9Zvh<;MI?UmIN5wzMf;d?1z2|R&hgRULnNTCE4Ynq94ZAn+)8WTe69QEfb<_&&}{dV zgr~@M56hY*_C5-P#Xa1*W_p;05a~r|k@adrw`o|7ZJyk=gWn|rT^KfkO|pA784Z3<#&YYE*GRqUA0ryX}* zkJqbZ;r}n7BRn;<7qRFH4vR-cg`0A0uceLsT(u^}L)NnbTK#Wby8{k>cNeF8m}3^g zXI&%j4j_4xXV26`b4#A-R3orJ_e^QC=_IAno`D_SJSG^$Ya`t5o8=w*d9Q$-G$$03 z0|Mu-9Rr}2%F=h-X?{>bUMg9tjpVw6N%tzC<371=Fdhp^2WBs|3hw^_Tb(|A%Yz!wkKJ; z-e0-4CUalr_;`BDiGy-%!kH75uIM&!mUAJ2o}MNViyq7!I!Z_GM-1`!$#xwN-rMsB z;LFasn(TuWYA65{2ISWiW^tXJTQct@vC1X?=ssfBe2+)=r2S{pVwu&)%%X#ucd-JN zbN|V2AijL7(kxF7dt+RnZj;&fkp`!*n0q}$=~0JF3xw21wkBbr`EZfjD~Ee~i!a_W z5Wy9CJ-28V*D5-erE^Ry0oUW3Yz}_?l;18X8mL}9wlOXj zpH`P5gQb@Aj)`|`iwmD7#MkFN3)|=!wh`Z!o_;8mfna<2$N9lnhQ6NQ>~FzNFBU0@ zm3zOHrIm}10r5j_Gv})CQ?+I3QSuFRaJ)k%rm4%Qm~@7>4xHJ zpEIlACnmCC^93OnB}EPXkE5$_XtMp<8>71$Hd;Wsa{~lM2m%7qHR%@V7%eC;LL^06 z1f*U<=^kC8bR(V8`R(`p3(s?(`#$G7R}8-B&V;Di!v^sKO4qq8N-~o?ZV}%AvW}>x*_OWNa(IFK<@%ui zA2J3oIiz88+v-Xwz!YVQ>oAdL&l##DH z`6c7SCtK~&5!Muw{X*V6z}af#8SuJvjiyfLzx}*T^BSysF$S36iTiB~&PEDXf#FR2 z?bfnB&MUG(Jziy4c2>x={aJtWGI}KjwD>}1oP(JyPxp1Hd&hdA zuH!QRfr|wuZ&eSCi2eGOIDs~mHC-AT7T-#!#a{Hr>sb-GTo)ChMVXO=4%IJuJS_ZG z1qY_sQ6>$GtfLhsLL1;Yd+y4rq0+!7=h`FT2DZrHI1u{hrXAvGEKjiVBExMI2>t09 zpe*E!ce4Yqa}7Ta+jwc$$qbL3pbVm(RP5FXj}ly~0QUk1c)N7~@cLfYfiw_0EBp;Q z>ElPd7Lt)Oxx8wx;2q%aq-{ubRo`9*nS#^{4jlMk64?tUnH3I1O^tEX{|ag5Ki`uz zyt;)#{m`EKVA{f(^v3Fj63#oDCP2xMA9j#=(WQ-&FumG0f=I4zLE|180=ly=EI8j; zUs-cGdY-#dKO7Po=w~h20^(9<+HXKU%Qqks%Is4PN`#T7<|@XbV_I82M1_ZTLxj?K z;~7WNs_WaWp_BOP)c=ZKL@0>Bl-VTz0C$9OQUH|SNQrIT5toIRXFh@u3&At3Qh>}Z z?^1K)jM(7gj*OWc$yxkd0dnK|q{c@FM#(FR7uG7ZY+jfv3~_?G>!jcoSrMYDcal_8 zRPugtVHdT%6}nk9Kd7Yjxf0iZ12HpuzK!>4>RS>S{7EsJ4)yo^io(YC6_FM;MrFY- zW1T|J9V&aH@EKMv$gA={iR$&16%16oYCPqe?!+6cGJ$qsqeb89KZRTp+-=A9QdyEN zG*S3xVvHI#6iFc(RCxrXIvjaCHTdCCiwXEBh0n;!rskUFS7q!JXk>j;vB03FvzvAXfy?xH*4Wx^=NKx~kw0%t~l#;O>Tq zgll8w8^Ff(XRcGAiLrs-Z2_EuL>+|%TPx*AA^sB9GF+Y^cjRid*?}P?c=g}&8~yj< z%4H|}C1KFHq#%Ur2F7>zV=KYfet0=#FI}Z;*t73uMQIlK>nTX-^MH#s1GBc% zu-ufdy{Y2$VdzUTHuT+;!`yC?PIqclsSUJ10Hc6AiU3O_sSPlGU3wzg%vW96xd)R< z^XyKPoDZ3AP?C8bxv0B*oIEO?m?7$l4KJKXpNszW4}QlN?C5w!h*k@UQ(2x0}V6U1O zA^2K<)_bd9AnzfrDJmF7soZwvRG^3w2ipNMAJS3|nGV4(Ruxg9q--t_z>mo^Dlw4m zWuf2I+j8Y z@-*&Y51*F$?Ci^;lJSh;IK}?EroeAeR0P)7F0`m;C=Wls_UHeSaWQRJ8uiX>DLpC| z1F#H}hxLz*exYr_6%w6*b7Kc+6Qgp*UZzQ9Y-Z6zEKDL>X!@q4^d-b`jlKMQef_*p zk7?FkM6Pccgdr9SdoW_SaS@*G!@f@=tW83uc)t67R$ru(yWB+ZQ@P1IB7rW6 zNP1Lfb!k&mag%=)B*;yfv#Vh7l-9W!Czahr}EljaliM;{Ku55+=N8r zB?&EM?Kxi|U8T(pc!*H1l5Q`L!a|LX;%R0=_)U$F7;oK4e!zy5H&CM-#eiq0CJ*Cw zQbM^o1Wxe#S6>pNlC$>lkWtO#p009l0vS^fOq>19*zf}?($nmitW38=fYF*HU_-Jh zvbmSktN?9vL4IBM#LhAbA7yXmJg6hCub-fKGwmWF(OJ?b{@#QgtE|jBWplSKP(}%E zlwhu;NjK?80Fkp}`ZSLGh1%x)<=786{iiv;%962iMT$H*meEAz<#qclhtFFN#SD(A z0tsTYiQ#{1uwW%n)hapA`_U&X9U{!Aioz0QR@M$Gjl4i{btW*%9IA<^4ts*J`NLtB zsRjO^Y_sF<_q*-;b9WK;c(nX|_3C5|Sgv2}Q}F?W-eHoZNVlJAXMAfSXQ5sQpY+mJh;yFBlGwPOc-IzNu%MyX5a*GzmNf zfRHsv5IFzlaN1_pnN)>H!D5sj*d3~z<0OD7KZbS*L)#(&aZ(iS0egyUK)8K7HpJ!p zWY>xkB&uP|Ndlj+6s1QkU=h(KQI2&efO1zJBa{n1Ug&c9UYml&nM-fZna#~jAP7UJ;wa5LV zKy|sBpVPC1r(IpYH+==;7DJ|)CUCbN!SnJ9K`hP3Pt+d&fMsL*f~CygzxHcv>Qz%x z`e@p%qeA5WL(AeHUQxwIwbaZF4FX7UR$cOJq9K<8Hp*WUf$i}Osg3cU{gH};I7rZK zlHinxJwh4u4P=);KCm*l`sL7lVwO$gpy-r0zdlhUM8#%)!+p>fJON$@OR@O-$m*WS z>aO^%rN+V7VKEP8fXpJxZ0Lb_!I~4N%EmJug;rZxCxs8#1Z@41EvR1cxg>+BBP_^N zUhNtqBggmRn#?k$<4#vQ$$#!MXsQoJA~4FQhYPa^udnDAS@Q!W)UD53-r?r8QxVoLM)oCSoJ0mrSkT(QHPq~rs z3L5`B9Mh!v1XXG(LiqVFrSI76HO$0y9!?uE8Q$&pn;N@<`?6n7}}gbbv9uo;TU8J4^l z=+h@x<1dbFsylEf(4VXGK?h{)uBQ$#-jrmbR0oVbB!&KVe`D54csw@p0~aS&kq^FT z$OSHYGfCZ)6yg{sPLak6t!FF+FLi3 z_qsML{CvCp!nv8iBsuiZGBtElz&d|qVXX_fVUFW0Sy1(79UGRIRbV+U&@STkkS|_7 z`}}d+y{?;@Fhk#OSU7;CM6btjU!4NRr)gY+iAuS!r`xPpU5KSp{M%)xJ18T{XK90l znyY*%YbM}T91S$m8l=9vN?aaW^qIi}!od!Y2Kq?Xt{-S48wjOdLA?epB)_yt8gjkZ zJ=8Vp^+|~5jbh4i=VxH(%&{m2qqP0f5+V-{^X)m zvsE|tEmP%13D>s|Qu{C3vYcPy-bJB82M*h+GuX8KdTRPZvEX-lf)EYdAW9_h6;#G@ zh+ohX%2z)5!v?rg@Xr}{|kBjqEn7S9l)^i%?6!ZZ3# zemgC?$s)h_%Aet5nYneDhQKk^nDi86Md5sW zs@mGHf1nL6?SI4_Q52d|DrxtvTCSE;u>UALY*Z^{_b=R0NzI z$0P3_`MFn5Ohy=3(liLo@X#g4%cx%BZ|6+4#{LU?C16IZWR#*(h-hC6zV*AjvIN-$Wt~X+DkDy5e<3Kklhm z4hcLC{$`Mytk9Fib$XI0s}0Kkb)oX_d>)! zEK2hRBcwEkW6bzZ+$fi|1v_oS$o)e1ca&l|Qqbu{Xj?Cspf)!Akw>MfJ=Aw!v^3$O zAF8BDz6zf$9TGCrT4 zuZ9Io`KZReRGxsLW15w zG*rNf;AVVGb~T5Eezf>hZ^|D8Ic&5K2tVf75_^HXD~KTx)7NQ%=e+Z%rIBdNkMlQ& zJ*;tkJG?2L`5!>N2H@PmQ638@qWyAG4p${HAtoWx-|>GrRM{08^{q=SV&QFMj!zla zvhDqqu^>dkj|3&h#~(&ux&idQbE;5X;y(R4ILLw-5{8$Av+oq~tP(BPx>c&@uzO1GBBO(UZs?^}Sch`p9AUUCAFp zY=YO~xy{lckmQag4}burI0@SGWa+>EXnoeSc6{rU;Ko|~uG&tTi%dm8ll`@#{CdNt z_qxLI0Dte-a)9v#>k?u{aVdJT#Yvtc?ZwJVkI2d2)rp9Ty>u4s|nOM%UE0-xd>RApPcMUP+u!BVMgAqh%ns0d2426 zqnt?i?b~0-;;aJ^>u@k!343x#4YDIA6?1db7jVl3%#?q`h_HUnE}dy%qn8^REY*?n ze}0LRu)uUMX!=d)kS)-Jo93(!dG=mxqAKOM@Q)Aynz?Y2wSN9%8_Li65+|nxSJ4)l z9%nA?1sK?-VA*_W_txiciMzI{M=`+wPEjIY($`t>c^}U8RLN!?8@e%Y^&x^Drr%ze zBaw#xr-N7>z^U5zg(~;$&zv&_z=rj@^#$W#w*JUA%^5WufbfbhRl6S~ukPqVkiW z=2`zc(*#L{?|rrOEWXT1;(Js8QEgfw@h?(xSctHgeHj!bQu|f(!KF~x{rSHu zt9B_Fn5bKm3$A;rsuC&qs_BP27Bcw$+=Ty&k3IeUI`d~AFa{#`;#PVn1jK#!sd`a< znA7YDoCCu^=loVFAAgnVRzg!BgRPdy!yw9^A37J&);uF`{L7y1N#+p};5ol;@hvJN zKQ@UAeN^Ncj*A*0{ZHmgL2d2)?!K;5G_UJ>fscnQ*0#XeXKpEpFz(Io(Og*O$(EA% z3>@h1f~F|b0Az5c#^x%DqwGt-HGO-=N30DlMJhJzfNTmo5`Haz>u$LdAn!z9sS+b< zuJj4an^vSCJx`BMLxH4z;c&GZ1R69Wdk4}NUc-Y>Nl<CdwNGw`CuE2M>;789erxrDlP>H9G6McO8YLG!eCxh)%w?lSsL}s%(29YmeyhzS zM?CJ&GD#xF?YeQd`$q%zenbl9ASKUYFHJv|Y(J?rZs_g8pL7%5JJ<{|tF0~6?LinP8AASVI0nEU-!J^<}V2WbU9%Y#~V_X|A@*LS{T*TZkt=_cJ9eN_t!21@O)PWlB7dOLa8~ZiQtLg2|f3Hy0e}Ws}Cf? zA+x+nl0@$vcS}Ft-n|6kp{7o^#*bQMt_0~&=jW~zB!SPz*?QCa`qF68;x9z{;aWyU zT2TbBpX}Sf1OcB8eP`Y*?QcY!fZDP+Ai}Tl<=pDPrB&{HECE5xT}2^)M_E>OP+idM z`OBk^w)QMnA09+}B)k!aE(X%6aPcH{P`%|tk9zGfi}*y{d_u{~)DioMz31d*;+5qu zFb-&OWYBwDEcmNgVSEE)#AWzCC0>!77gL_DW!U{wJmh?fNNA2QWY$oL56ZeCPWcIl zwn^zzvnugFP3Xy|G4B3@(K=j7B7;@1QPpigk691rd$pe{9yjfyS?{m?(;51eP$6}p zIYCl@>#w;cO+ryX6C&iZ_F&8=0ke7d=rP|Qi`UkFrx&Fq<`S>(X0H__I{Zh+y>WJj zx$$k69b+c22TOJ=20B#x7MAEeL2P`SSS`rnU7?*^$As2} z2pfDf=>-sZ#}7Dl`4O5{m$r%x3|LtU2a$THh&8^m->EPxw zU>SGfg&pH@k_gO40C)MIBND6G-nA*yge@5i4ofaz+VY2epdshtsH50EHzy%FEpksitYEV$2WOvx4?8`-(i;891Ll$EV- zTB}_z$rnN2@GEPvu%RSv&2?V#<2($MlKY{;qx?;e^IU6C|7Vr-WD43b4vut{Am9BZx7tLXHLie&WO~@{JFwYB z1msV}+_o8qPz^R$X!8ggUa}4Gr$anYAS4w*MF-FNAkjT zL;P>-%AVNPC;euFeZvlw4-VP^?@*0^KP@RfB`+cb)+XY?$F}}Jq0gcp9c)EJJvyN) z&0;ctyf8Dje=4Nei-yEPKC;W9=w~N;wEsRXSu((b4cPyI6r4o)XA)k`=?$BL2gLyou&9Q;p;nz zXIfK`XDe3LSG=hFtrO3#;IXQ0mh}eidejb$ycYFc{#1aSmT$Mm)u0? zpWR)OiXQt5R7^%ZxmAm>9quL^ z3%+QSo@8vZlEkbem|fqV)UO_cdJ|T0dlC9eep7g|TRTkn-(lQA4+r1ZiRq8K6Xm}q z6PbRSe(l4m1|%f7P8RZHPZsI(W~J1d3DFg`pK z`FlXolB#{@mqABer6!>7{-S%s|#H6cp_KhzLT~|F!~A7TBoIFCuGZa?@+Y=F6%K zl&dLhB)1)_X`1Jm{2CCmjKQo}XhA_pJ(ClRT{+8lf40@3?R8q^t|Yyhz(2pErMm8y z?$%el0E7|QcUEQS_SXq#iFBe{SbF#G37v%(^4;U>QIQ}z)CWxAd^g1jcHJ4Z2gZR? zqQ|H38svHHEXabXOI2K{Fv1}ozAAE5Tk)GM!E?;pv-g2POg}Ys9^+cN^WVnC?L@25 z200uth_~@fExMPL@HsUqAGN4Y5rqFJ@~YB-6QR!Y(vgwbbNDJu*!spU`O4)pF6VMm ztVfbi>Da?izXzBWA44_}5U0!wJbaJYfmp%-*G7sYYNCL&YmXDabr+G){ku?x7sz0$ z%M&)4{V&z-T=3V``R~WFy<8ldkWn1EwlHqYh&A2D*3PcPU9 ztaJON|6j<_Sjf4Ac!?(nKxl_PdW}6mpcDZ%^vzzf{h(I4eP))$AaxWa7w53@O~xlu zFt0OWpKNOouwki(*^a*&BqzA4O#*I6v4^G+z&-v=18tb{7=7kk6+LTfy~jSM@?3V} z7(jrKTcedLyPve4)eCqj+V>SCZtxAt`;dlob?dA=yQi5ike4%%1+hCLtVv&BZ`Ouf6I;Eo+( zJl*RFHP3I`L!P;nb0J$I@1!N$j`vSD9Ueo1Whgn>HWZ-&$fq#pcsSmPk!ZB@+(`PJm_m?fKyELC zx;qVM1Kp)66@_HBlJ;ADXUq**uXvJ@LXTpsG%C-W0f|1JKsgs6Uq%;jue!Xddm1*U zLZ%Rf9l!y2j`z_w4CZ8i_r$AK83R@U2P{<0-=-_Ze>OZZqALZMsDt!DS`2~Tttx)J zSyXG?`uh}JN*mU-evo-h^!Iox1p*U|`x+n)$xrpS)B413glgJvClZ}m9F8nro5}PU zPsT&HF3zSPe?8ox%eP_^RU9eUPVc;i(fLfD6zXmg>y$W#``a#o!s_H~rSjc!ItQ8NmN+f4yBUI;E~`$^Yd4&1%!_e(6k2$?JIuK2B7bGtbvSIvZDi_QG-l7O|vDMIERy{lrc&s`8yR9Zag0^+-=W;8>dOy`dneEq5t&$B2~Z zwxxdy$pZ|KQS4dsK70MpFv|g*xF~i;-|I|+#xh$bR!Ep`?eCXNc^E7J%AOQO)*^$_ zUEyzT0E*u3<%p*<1iRX@xyKNt|8H~nJj!?k}Y!}ZDU@tITI zzL*c|A3xFn{@KJ!@pD0$h1H z%KcSU2nD2>_?}YW7f$H@@V1oC>k~kkz|+0Mzo!(p$(jy@HH04D{3(T;=-;gU`Ieb) zN9fp*G(1*1y6{wThJB_Kce`t^qX46kOAt1kQGCUuA`#VqbjG+(CEjvW(P6OO3RtcJPf;{;e`>Y3QkA z9*FynWzaUu2ju_)+xxOwR8l}wrCDjS&qeyXQZ$Uow41IWx72GnwyIbWpP z|NH!-YV<(Gvqbkix*28O(u5! zxPF6EdlvwmI%Hf`jH9xi+u>ghfr=c#a7tuaJLU6(KS$32D7BB)0y}>}p(`9`I!o%? za9j=MaXRF`H_reA_}=tgNu$sME3dVlc+ADG!9YR~j`g0!R#jZ)pFBmSqOuHe~ z@f7`zi2W;+FSA>N{VU!MpvY^tuKi&o?5;oT4p;H6-y`&X|K)tYF)5$7!#PRF%dz?M zg^NH}N~^XJRGYwl_a4_IQcrjq%pfQ^ z6h^-}9R4)M9}(as$r^OR@+wY^(O`~GH$V-K@yoM!U*AI7 zR~t~Pq;#^Gkoyh`I;?N}Xt}H|S#jRpG_q8)skzjkvOw41hTZ4xx-QRsQ|`ss3QW@+ zoize~O16Ic`7_WLii7sygsZgY2mY+U#7V~q)MK+Nq~~8!xf?0lM!Wm^n(o_iO*UmBL+!@@XY}gd&w7ajm=ehlddl?a zv&M-rW9lh;^TwqLeH`a|D*Afh$HAxO2HMTMkNL5VO1R1sFc?ie|47NNphFG8)Q8s? z%u*sanD^Lg=fuX)9M;8&K0eoS9P8ahZ0Eq2_XH zIj3_AimQmOe@E?)e2D5&`B&fm`lM*;&oi@m;)o#J1PGvOgp3(Lrw?-nMq2h=@5g)? zQ8AumH#3_>wy5pr4k#Qno$5EonDmw=1QxP_;O@Sa0H7~o*WX6|Fi=+7T_6^FKZ5r} zPG6Nv9I`{))oJ_-)93Q=T%G8KMZ_rH@{pmamd8iFxHvl-zc;ce+~W5*$bd%1DX`0a z#wbfeLs>}B06|lpH_}ef?-k1r%t~ujHB@0B5wwAEgJAZ&pU3@$6_KwpYbQH z0JJQC^Cl)Fzv-cjKe-Org|eI;6K_f508Bd8s}+*c`vy_#wqioRGrj9ZsKF?W zpRb7_yvnvpr?Fy`Uh&kE_`m_3h~P}8C#+P+9^_q)w{3TL2uUSD4Tf8MB8LWL#ca{fu;N4%~EqP`Je ziAGs6jHH2&p2{Wye|*iPM7()JBB73v=SisIqnw;>rpv>cB6dONXsNevrP{bBe%&6< zhwS`)j&W~Gqf4!j_%#B<_%D4+(8X|4c2JOT6vC@pSU+uO8d$sA5pjm_@nJXh{qZy2 z!u@dKCDGnECy&azljxf}gwHqk-4GyA$}_pZ?D3L~yTBPqJlVL?w1Lc!0?f2DMS_i* zX5_>e{FQ)H#eMKkU)jQTCEv<4)5B^b|C1p7X^TxyS|GK`Eg?m;L>2cg7*`L91qqU_ z%fO6pCMKPsN;?6i;e7Z98+~9PN@-z-U!NnJxQx^Ha6~%+uxlq?~ON4+MC-Nya zv@JPPoC3C1oiip^>nTWq5SXqF_(JQ!#B*Er+_MBjsIrxAkSbpJxtB)$e%euD0IR6r zzmKGblJ(zXb*o}XDu0pbzjH4fN@qVKd+aSOtCm(~dyGjAtQ}x@wSUq{v0v4VVv?MWU(3i z$YBrf+&IrS?5GLBLu%&3Z`RVQ1QLcF!`~r#G8A+gx-D=# z4dV4{F73@W1TJin!4(@#CbaDNJadSRizSLPR4Fw0c;WdOV$^EFmCVLuyGen*N(4~v^RaSSc!cW;gEfHZF2$?IKAs!Ttq=)!AVz+S-h z!U@na)IzIUmqyFl!Ss3-g{ zD4`9Qt24zt7w>x$Mbx-VH$ZE&smnd7^Pq39qKTw4kr>2TAK&aB^4~Nz>bV#YMU-Nu z^j@f?1B+67Hme07+4?a-F78v=>o%n+1`LU;-_nW)~RN*yI#-Ak&S0_dz_}&Zxi>zt&xHqaps7?yWL}$9b z*b=ZHv0*wpwey8+2W|rKbYj+kfQ-COMLBs%QY15&NpWb*222akH(2`_N^){? zv8v^YpJIxqSI#Iz? z6$E4BiCQ>hOiIkf9cK8w`e5-qvS6fn2WRRG-W|RssUndUmT=603}bl6OG^PdCxj z$^Qbcy|4#H!w~?Dd(__>$)awDyhY39-@lF8?@fGyg3MYE2Kno54tp;rzDqj)sT=#< zIBifo6SB;Rf*NEBNSgh!?*>1$FYo16cxqqRYhRNkKuZ)FlX664;q+}F##sKpHJi?I z+r0r6^B%Xl?Rl!U`04CdN`GIU7to3D;O{&WaunulX~JX{WfmasaQc(jQ#*w*n`LM} zkp<{lV{by}>N(qNx<1|Goyu}Q(B(gr&rH9<0ymMK{Imq(J6>Op za5_%%#2ygi6bc{tw@w)S;h*h64gcU#S7f07Vb&V!R}AcPI?XP0-5 zHa7oxmE)I?oA4F>ppJOuR1rD$6*D|G(lfs^O(vZ?7IA5PtKsO9bnK ztG*-7k%%qRqsgLij5tMWLL*Vp8dmoyU?o} zRlvr9Tn_n0RS`~{*i4SGH7N-^r+aBOBN}ICkR3VfZ3DGe(#amQe$=rgjX955Bg&9(3X4{NcHJyA_8vs@#=R=Boy4%lRG58C!+)hLC+1 zn>WlrHN{D<7IstA7tO77l#3gorK23nG4t}Ny+j9LVjAQ&@`pFz+BS*|ewo5Wg^@R( z2c-fxlp16rI3WXvk+lFB`S&O5c^QhRS|BfZkt5RyJ#2D{>?<*+A8>>5=<%{&SJ9-+ zXJ;H^jHs&BuWqR5Ov*`veCk-(r$?U=zx{|~+?F$~zPx&Lv;7??dgd0>L6_+ixS^{J z7cMHRso^aanTD%^M^^g98H_LHhU){mAc&|q=o&evY?yRzmono)%;+aOZYA$SW~zfO zZ9p8wH7Te!OU^2Il)-ADEdO#LbZhL)Xo6ZYm@7^Zb!-90q9pL%6nF-wF-ciHwpkUS zYA8>8m(=$$i71qq4|@PV#k&ZNB~C>E<1U7-rqS+eDAvw2Mfao5?pbp_bMBD2Oo z_ctK{W1_UpX>BSIylbp}s0kVp$MpLaJw!;TjA}BEN&9^aLUleRhRer&al{JkiAr;9 zE119OW4i42D_+!0navy?AHaY=1767<9Z*w{k{AHV&Z)B(&~X|b z%99i*uMv4(^`~+2$1iE*O8{-zb>gl*C8iX#xhLG6V9td3r1Mhw0K_lOVe7q6`Gk}8 zg&zj2!+Q<074{)PrcQS%BtQf_qmz|MQSqmbtG~bN&i2V_&3r_m%{x4J@7A9~YuHko zS~Mh#i#dY&f=I~FD->_XMHmvM?md$rXJ9(cfM?O{qa=qC%y@ivmw^>J9Qq-&=oORK zIrOM0uwI`L_0hQM@XFzVDR1S3l48Tlj|}o$SKxv*;82U~DMk^T0ZlxP}=wZ&H~oXZfvUK#EVq_7R!EKS;Ns zC_sZC#RPl)%$6O-$P2r6X+7ymI^jSW+v4ytA`x4#Qy?$(M#X(F^g;uaa{sUn&=2Hd z#6`I>$hOjw)!MNXtk2BmL-Sn-F3Q_~J}!SsG&O-8a?4UDHe6ec2Eu)e=ZRjD-p+$2 z_fnY)rb@4Q-IRDvy8e5a8ZA;ZYv1?C)96O~UL$YCIgP||Je0X80+q~48CE1Zqj2ou zp|Rg0#0Cin6@O=c+ED$XC3NRvH7h2o+wT?EWJ61&-$I*D?qU-cFD>d$uRlrVG!}r; z*h#7q$6~W#k3zq&QD9g69xTr-s~io%iAX!I9DC{BAGA99{**V8dAxG zui?pwArZ{E^6d^|l5#gU(oZpC@#(bX|8DCyv$z@WDP;9) zz^SlMG9<`ARQz9njs21MzB+gGeV5i$phE%4n_7dcIRk;s!jg?JX-F#THe$$;vH|?3 zviJ{x)=|V)g`D68kLdX`_={s6^Ib1&&6B#Q%Q|wH{iZ5$7dc|T<4p~FKvN4TD8(^( z)mE$V9oV>r-xhj-_}LR>CL4}1b&>KnOm=2K_Vf>qvzrTutrTMKM5eglYbK_2xquCy zaacqr02v&5fSjM_;bA&BX^-}kNbSCebu9g3Q~e4l4%;h4(hIngCDev zIsVhsvsF}HXKkJMPKcxYZClo4>U;SU*u@)+Yr72>9ZHDyQV+@OEz}u`=@C-8Nh%e+ zlpDa;6liHScryF`3_Bwm1m~px84{uVE)`H@!f<>Y#fFZFVLTcNGgp*6D}|ox*+Chr zL?eSkPQ|hqxEktN-0Y5CwdK66>iOP`gFezSTqdxGp8l?}E!n)+_TiPg;l!SE<+$u*05Qq5&#Cu`{|D)w{JT`JGLN-q@! zAT;Rr=|M6Pa({PZkA#PsGjk}3H6BQS_reQ$NRtHBC$fEyW6iexbrmbc?JLGj;fj)s zr+Q$Tl@=i_E{u#!37;A2?6APaNZfx9=c$^-*ME(v@MSPmR{@Hq;&L5164gOK-uLuK z29(J4`0J^RV-D@fAac^h$^$0?tL*|LGd+`~tfC?*^4a547FMQrAoxML3pM1({HO1C zB&qC!jgkWB}dh0tk z?#A?+e?LlLd|?S&Vrx4nDVF-BxuMOiHs#2rzQfJMJ57AdyZcv`=uD|owS4@nr>OCn zp>$bg?P%)TUtbG871-b%^oPzOgT3M~xP*-^_KDtH5;JTqGrK;#YB~EI=0w9qV5hhP zR^U5*Zip4#6~%4BCPr7orb9X>2!sz%`yQr6YpK5kN&74^9!Om2hx zJ<0wS*5s60X=xH`uI4iAaSn65)olN?`te3r4qQvB3}wTMvSUAK)n@3QL*Vq%Z`}Ik z^}Uk7`V{{aIY*Ak^%my1b9fo1Gb7gTNg6|+ymz7h zSN_Fq%;x%&M1_l3!!NRDIftXo-?WNUwX}%Yi8px_I#AzW2YkcOEYc+d zJ=U=_5)!EAhZ~B2xK(j~gyyk!Hz$MD=b5xN1BFAn8-bknyJK*C_~IN!+%A3GbyT?T zUDMe7JH9ngeCVgN?i$vwj@G2lg4=m06(HrHqkqJ(@R^_Q1(Rq~Xb+coK%Ur4-qr$v49Lf*>g%Y$R>z#l!b%HD#$Il>Nga&s1$K_{lAcbE($)E126=< zURv#^dFxdw4q^L?-qF#eoCct4mA@s%5TP?1sv0qF2R|?i$^C{5K+#2iQJnOFIsjp( znXjCmNeoes856Ql)QNZO`y`|wgs*f8ER*X8ZoFkgd2C+(U7u)PakFI29!75Hf(xv# z5OTR^6=nNrxpGWptf;f@C_FWbUYz~@a^qs4#zkK9i+l__XUw68eZk;; zB6+j?k?4He+Vao7rT92lS7Y*z(WtRjNuSZ_J+{(>A!jVU!j^`YT%8ZZZ4fbf7_Qa^ z)~PD7`rU~tDJz3q9B?u`Is=fjv2y|pP^C`#F#1w6>KaW|GV#*%o0Qjkucx#j z&VK`$EgQ{7_Eu^#cb@^@T2PR{`S1zEzDcjD|EG18o{`9}+k5}yV@C|p%mC1vXuAKx z>QPb#_Hba;n^-xQ6Oa_iZi6}&_;KH}o}{%y(H2Ljh6?+*+D}s(n6~|!!A&$#cKLD= z>DnM@K{);U+gyy>+xM1Gxx1T(`zo?Lg?93}4>4b4nGQTkfID2sU+nS^|8$=yM1VD} zDAX9WBYp)5{WF?cy%zB$<;>iB=i)$aJU-$%v(84v_8O~}QGrx}QZY4_2yK2v%+XX>;y3_Tgv_9n@N0n#0 z#0ykjYsj1t?QP_2I|2B!i8fD7ckeiWEZv)pLypPBdR!GGtpD_3SFbt`GW_1!``_xZ zPp1ptB1@;tzLF>rB^715?)#^oMY$+5MPGYyIzr|}(Zpyac>&oqol*dUP{?A+Vwc5u zb+hmxHavJHyyhcI^yy#NjZ1$G&5mMH$H1S6!Z(<5V6Oc={=5HEH5n&Blxq})i?H`5 z^b67UHeSTud{BjpL<7*&Sm?A@m`46w?W4I;0UqPIh){USozv9U<8_y7YRLZqPC>E0 z2j!%j!~i*PeE96x=-BArhKK)#{uw(fXeJ&5$cuNdAn#m!hX&*y5Fe-Efgs5fBm(5U zCHy04IwQk3KlotHs_Ya*$i}?vEc9Z^%F51zdnwtg)_gz`*cgz4$yCQi*^G0ZEg-BGI*}25M;r2Wdi*AS4rhgk?!%*3#O5+b75Hkt!sR z`g)2Fw(sK8}$Fo*F%Wn$->E)%c0g!hP zAgL7g+xZxfGiM?|=Jzh(01_v#g%#vaQh+3cgx>Ru7enfc#4r{whIzCM9|4g3DUjNV z3+HG*CI%!DOx=@FUJ6^YG0Y7?W^e!* zmet0G14xRF?P;a!iwX-f6)+u0r&cI3i%QE{?`vlO>9Bvjgb`OP9l!UzXP)6dzwnu7 z&=*xm0TKvFm0S}#qU*qlOz!iy0wfjUfILF{h^HJ9Ixhb4rcKM1mE@A==jN6y+q8D^ zl*J4n9V$)^+b$AoEGsQ4BHuq6>azwtKI8sP<$*8T{0F-D#r(KDq1>2BGJ9TP@? zEHC%qg=xx*69Y2cV<;ajpQo!1!#}*xWH_9W0jA7#mt$VeW7lFSYD`IKFQ)_vuRE{T zd)byBU zY{CgYG+-@Y_!pM*XbR%zN7kxiPFZd@%x}&b%~sjKvD~0i{T6Tu~74^0O`Ykg!Kw(Kn8p_K#&NPwSEymN*2)=Evx_j_rI^U zSa#gJc5S!CvisV#n>#EP&(ft!gO*7F64u#FF47c|^^e2>sZp%AL}dvQJt%64Nnj_H z0M`&7^ErMTly#LP0?1E>hlj_Pj-NdXZG6t2MK{rgPb2{eMKlnCL z2Ss8JQ0Qz+1j!x5kMYU~bdyM8Z=t{WIDj03Lj2_u0_5f`oL|c3&9S>Bv)C{Vk`^S# zkUxy|;|iG-z&U24dESHod50Z~j=cV=70x);S6@F8;q2f8^4)j&fW&_M`f^P}$d=kp z0J%ckkJs=s`G73m>nZo7rKLgo+3j*sF)ufgqYE!<3yWkYS^_)=o?NX>s`3Z`nKTc# zl7vlFK^MNA!#QI&rZhHrMi@fk1;xz8#o$M1088=lMtM7Wp!@(Nj;im1PLBU@Kqe_T zg6zuU@-eH2<44KwT~p{Jg6tWLjbIM;5I;I&saEBtLy)~e11(6-gmrXarTu6K_Tm6! zSH$hcGx}R7J^~eE{D@`IW=jLoKR(OOsj?0P{GmnY zyns2ISu@7F=X&vB1Zh7R#cuXU{H`4@gc5TL&dxDXj_$kZ4{Z<8ZP z@S|CK-;>^KGU5&KczG>uq5s?Ng#G{c+$_s**%0jWNBlN@>=gN-Y&|82p{ zx7i*(e^@Y+>&GAD#vDYMNszQ5KUlb!s-i(J&BY5pVD%U?1yWsc5d6pjvYlPZu&j(- z%CMaSNF>OE6>1?M-#v*ZK<>Ix{*!By1*E0|GOEHNSidi1t&n-eS`{R7k$Hmb?>7X+ z1CU9&qSDsn`}l~2e06DQQKmvIojIfT=n6~kJmRcecn2ojReq;fRtuV*s)Od*MD#d`yEUnUw-W-8DF0O(slYw zeOrgKcW2f|NQobHIU5H%-l{)y+WqC?)6>q>PwnXK-PsGf3Y^ZyrjDcar%!)p00~DP z%tr@a^V(`EL{u!)>&?c1(e5{gLgql!Y|=x{Lsw|B;zyAZF|(YCY(*(L5;-GzOb`-^ zXQ=a&$QAB%gFukS@aXL9ua4IVPrYS=G00O}ScFwQBqhj?-~|4ulph}wscFlpJis2B za;^#inRB308h@FO@CeBrd_T(6i{^2ANclv%EI{rN0qizgvNlhfZW3a zsR9Ah8ll+~r&$;%qWZj)cEj6|yMItE^_vM1|dH?X9hPW+Ei+305~UQU`pbv)4C9 zEUm5W-Q9&r69HuB-2kMlTmlg!He}G5$He}-C_TpaBdm!?vfu_+o-l%$=Q2?F?^rmM zU_e4ApFt-GlAOI3Jx?FbpC9U{d(#D-gLzZ{l2pNS(%0gCq*lbH7Q`00X4RD5bI(2Z zmy-F8nn?l@3aiUK!cuD`5@d8hd`u3I(nT~7a^w`z;MFoIK;n6ir9~7V%TkgvMX%Md zAXV}Gr~*Igg~x4mVb+7aRJfQ-Ie@=^k#=%`3_(5~m|+onzX&Hz$dWHMuX zlVOBIv_?_1-emS$Rdq(c-{_B;))!@Jaj?=%JrE1hB4ce%q)v1&>Wz?90kX1~@S`{& zlV&49?mEUFyE-%C`!PwQ+dQEl?X11jTFKl}doA4u0s6p)TrUw_p~Zd%dJTL}P3 z4EgSfAAWtK4)<#hAwZJR+De-D;P4~y<2CkK(tz|(6Y?PPi0-GRwVQAXI}sqKmzU$& zjcPlw{};AGOHwvz>3(^Mv*8C2IM`Y z?0V~D0SUz=BcTCYWHLZ4CFk?`LyH!XO}Ir)fU{p-1o9^HPa;4 zx5tKum)^cTFfxWWv4Ru;GD)}j+|8Sp-nn_*@>acQA91#R2KiA8Li2bbNQA`4xPW|& zzwd*`nD>3=)`M5*Zq+mpXJk`x@$BTx%w*=y3_c(~{`ktlt(n)^aqar8Uy!Rz`F@NA zq{3_u#rm<GFjIZQ8m|E0HlKwBm(4mIdkze znPup#(dDF~A%kpsObn135G0R~yPzLPqLnx_TE*rqr(}g8Po3JbS;74i>wZ2tK>j@D zr`K%0$O2Nk<<9L&ElXV3a`E=X&2fH;Oqz-!dSv~WsCMar@Bd60@Yec_wx}a&HV10G zKGn|ZA0}_oTt8dUN{xn2atRR3~@d(97%eO zlCIAznlvC|Qq%!FA2OigY?7D4Hd$7qVX+)SFZCTT74qiILl%pB(V|5zlQ~W!aqa@^ znMjT)nG7KD#K#l@$Rw>=Cv~ZwYB8!H$SB1}w9{xw6_KG0cG1KYmOI z^3DIXa1ox+8(g&Te+hPd@Feq<4_>*#u6V-au)FCDwoXUqu)CQIHoH8^l`99Yb4T>@ z4LDZVCsA+g33CaF4gx(JbxHp-zI%gu_1UJKso#!?c;?I* z^bw8vGt)d*5Fj6-ceTMTyr=E-=?{q?zY~Bo8Lbox9W)^EEYZx&ii*MtsD7fub=vhd z2bJo!%LXJ&vVh~ZF+6Kyx zwO>g2rH~p#nB3gHX=DPfW*9{ifBsPOC@p;y3F+^vmKxq66IqkU^koAXG+xI zqXRx9GRw+JOA9mQr~fb@1F#mhAJ%If0Y9D{fu=oP8jxOS>@#u}1UWK*ALds%0z5!M zGcXuc_r634l50qI0mFN%6cT^q9AO9&36i|>1%BkufaLm-CgeFBf<)IfQ1xDvoQr>j~PrTNaZ0zAKAk`CDrcL^v z@m&Sv4$ssx(~i~?9g=_R>yJ)5-4>kDb#MLYX>DXz8@=lcGUZ3#6+mhWQ*Fj5-SgUR z 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 z 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 Fu>&saC*$~MApUp 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