From 1a827c6030aa9c4c628e3273ab8da914bb5b1e72 Mon Sep 17 00:00:00 2001
From: yaosen <741606767@qq.com>
Date: Mon, 24 Jun 2024 11:24:41 +0800
Subject: [PATCH] Revert "init..."
This reverts commit 47d826f7dbe41db3a2142c47786bc1c897d97a7e.
---
.idea/.gitignore | 8 -
.idea/inspectionProfiles/Project_Default.xml | 6 -
.idea/modules.xml | 8 -
.idea/php.xml | 71 -
.idea/travel.iml | 57 -
.idea/vcs.xml | 6 -
admin/.editorconfig | 14 -
admin/.env.development | 5 -
admin/.env.production | 6 -
admin/.env.staging | 8 -
admin/.eslintignore | 4 -
admin/.eslintrc.js | 198 --
admin/.gitignore | 23 -
admin/.travis.yml | 5 -
admin/LICENSE | 21 -
admin/README.es.md | 228 --
admin/README.ja.md | 224 --
admin/README.md | 243 --
admin/README.zh-CN.md | 266 --
admin/babel.config.js | 14 -
admin/build/index.js | 35 -
admin/jest.config.js | 24 -
admin/jsconfig.json | 9 -
admin/mock/article.js | 116 -
admin/mock/index.js | 60 -
admin/mock/mock-server.js | 81 -
admin/mock/remote-search.js | 51 -
admin/mock/role/index.js | 98 -
admin/mock/role/routes.js | 530 ---
admin/mock/user.js | 84 -
admin/mock/utils.js | 48 -
admin/package.json | 112 -
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 | 2 -
admin/plop-templates/view/index.hbs | 26 -
admin/plop-templates/view/prompt.js | 55 -
admin/plopfile.js | 9 -
admin/postcss.config.js | 5 -
admin/public/avatar.webp | Bin 19342 -> 0 bytes
admin/public/favicon.ico | Bin 67646 -> 0 bytes
admin/public/index.html | 15 -
admin/src/App.vue | 41 -
admin/src/api/article.js | 41 -
admin/src/api/qiniu.js | 8 -
admin/src/api/remote-search.js | 17 -
admin/src/api/role.js | 38 -
admin/src/api/user.js | 24 -
admin/src/assets/401_images/401.gif | Bin 164227 -> 0 bytes
admin/src/assets/404_images/404.png | Bin 98071 -> 0 bytes
admin/src/assets/404_images/404_cloud.png | Bin 4766 -> 0 bytes
.../custom-theme/fonts/element-icons.ttf | Bin 11028 -> 0 bytes
.../custom-theme/fonts/element-icons.woff | Bin 6124 -> 0 bytes
admin/src/assets/custom-theme/index.css | 1 -
admin/src/components/BackToTop/index.vue | 111 -
admin/src/components/Breadcrumb/index.vue | 82 -
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/DndList/index.vue | 166 -
admin/src/components/DragSelect/index.vue | 65 -
admin/src/components/Dropzone/index.vue | 297 --
admin/src/components/ErrorLog/index.vue | 78 -
admin/src/components/Hamburger/index.vue | 44 -
admin/src/components/HeaderSearch/index.vue | 180 -
admin/src/components/ImageCropper/index.vue | 1779 ----------
.../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 | 77 -
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 -
.../src/components/PaginationFixed/index.vue | 131 -
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 | 247 --
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 | 158 -
admin/src/components/UploadExcel/index.vue | 138 -
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 | 31 -
admin/src/directive/sticky.js | 91 -
admin/src/directive/watermark.js | 81 -
admin/src/directive/waves/index.js | 13 -
admin/src/directive/waves/waves.css | 26 -
admin/src/directive/waves/waves.js | 72 -
admin/src/filters/index.js | 68 -
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 | 376 ---
.../src/layout/components/Settings/index.vue | 108 -
.../layout/components/Sidebar/FixiOSBug.js | 26 -
admin/src/layout/components/Sidebar/Item.vue | 41 -
admin/src/layout/components/Sidebar/Link.vue | 43 -
admin/src/layout/components/Sidebar/Logo.vue | 82 -
.../layout/components/Sidebar/SidebarItem.vue | 95 -
admin/src/layout/components/Sidebar/index.vue | 54 -
.../layout/components/TagsView/ScrollPane.vue | 94 -
.../src/layout/components/TagsView/index.vue | 292 --
admin/src/layout/components/index.js | 5 -
admin/src/layout/index.vue | 142 -
admin/src/layout/mixin/ResizeHandler.js | 45 -
admin/src/main.js | 61 -
admin/src/permission.js | 74 -
admin/src/router/Index copy.js | 404 ---
admin/src/router/index.js | 281 --
admin/src/router/modules/charts.js | 36 -
admin/src/router/modules/components.js | 102 -
admin/src/router/modules/nested.js | 66 -
admin/src/router/modules/table.js | 41 -
admin/src/settings.js | 35 -
admin/src/store/getters.js | 18 -
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 | 69 -
admin/src/store/modules/settings.js | 35 -
admin/src/store/modules/tagsView.js | 160 -
admin/src/store/modules/user.js | 141 -
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 | 191 --
admin/src/styles/mixin.scss | 67 -
admin/src/styles/sidebar.scss | 226 --
admin/src/styles/transition.scss | 48 -
admin/src/styles/variables.scss | 35 -
admin/src/utils/auth.js | 15 -
admin/src/utils/clipboard.js | 32 -
admin/src/utils/error-log.js | 35 -
admin/src/utils/get-page-title.js | 10 -
admin/src/utils/index.js | 357 --
admin/src/utils/open-window.js | 25 -
admin/src/utils/permission.js | 21 -
admin/src/utils/request.js | 84 -
admin/src/utils/scroll-to.js | 58 -
admin/src/utils/validate.js | 86 -
admin/src/vendor/Export2Excel.js | 220 --
admin/src/vendor/Export2Zip.js | 24 -
admin/src/views/admin/index.vue | 247 --
admin/src/views/admin/teams.vue | 176 -
admin/src/views/admin/works.vue | 226 --
admin/src/views/charts/keyboard.vue | 23 -
admin/src/views/charts/line.vue | 23 -
admin/src/views/charts/mix-chart.vue | 23 -
admin/src/views/clipboard/index.vue | 49 -
.../views/components-demo/avatar-upload.vue | 61 -
.../src/views/components-demo/back-to-top.vue | 154 -
admin/src/views/components-demo/count-to.vue | 218 --
admin/src/views/components-demo/dnd-list.vue | 39 -
.../src/views/components-demo/drag-dialog.vue | 61 -
.../src/views/components-demo/drag-kanban.vue | 66 -
.../src/views/components-demo/drag-select.vue | 43 -
admin/src/views/components-demo/dropzone.vue | 31 -
.../src/views/components-demo/json-editor.vue | 36 -
admin/src/views/components-demo/markdown.vue | 101 -
admin/src/views/components-demo/mixin.vue | 169 -
.../src/views/components-demo/split-pane.vue | 67 -
admin/src/views/components-demo/sticky.vue | 135 -
admin/src/views/components-demo/tinymce.vue | 36 -
.../dashboard/admin/components/BarChart.vue | 102 -
.../dashboard/admin/components/BoxCard.vue | 118 -
.../dashboard/admin/components/LineChart.vue | 135 -
.../dashboard/admin/components/PanelGroup.vue | 201 --
.../dashboard/admin/components/PieChart.vue | 78 -
.../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 | 123 -
admin/src/views/dashboard/editor/index.vue | 71 -
admin/src/views/dashboard/index.vue | 26 -
admin/src/views/data/anchor.vue | 85 -
admin/src/views/data/index.vue | 90 -
admin/src/views/data/online.vue | 83 -
admin/src/views/data/sale.vue | 89 -
admin/src/views/documentation/index.vue | 57 -
.../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 | 228 --
.../example/components/ArticleDetail.vue | 289 --
.../example/components/Dropdown/Comment.vue | 41 -
.../example/components/Dropdown/Platform.vue | 46 -
.../example/components/Dropdown/SourceUrl.vue | 38 -
.../example/components/Dropdown/index.js | 3 -
.../src/views/example/components/Warning.vue | 13 -
admin/src/views/example/create.vue | 13 -
admin/src/views/example/edit.vue | 13 -
admin/src/views/example/list.vue | 112 -
.../excel/components/AutoWidthOption.vue | 34 -
.../views/excel/components/BookTypeOption.vue | 39 -
.../views/excel/components/FilenameOption.vue | 27 -
admin/src/views/excel/export-excel.vue | 116 -
admin/src/views/excel/merge-header.vue | 101 -
admin/src/views/excel/select-excel.vue | 107 -
admin/src/views/excel/upload-excel.vue | 42 -
admin/src/views/guide/index.vue | 36 -
admin/src/views/guide/steps.js | 53 -
admin/src/views/icons/element-icons.js | 3 -
admin/src/views/icons/index.vue | 101 -
admin/src/views/icons/svg-icons.js | 10 -
admin/src/views/log/follow.vue | 103 -
admin/src/views/log/index.vue | 95 -
admin/src/views/login/auth-redirect.vue | 15 -
.../views/login/components/SocialSignin.vue | 72 -
admin/src/views/login/index.vue | 299 --
admin/src/views/nested/menu1/index.vue | 7 -
.../src/views/nested/menu1/menu1-1/index.vue | 7 -
.../src/views/nested/menu1/menu1-2/index.vue | 7 -
.../nested/menu1/menu1-2/menu1-2-1/index.vue | 5 -
.../nested/menu1/menu1-2/menu1-2-2/index.vue | 5 -
.../src/views/nested/menu1/menu1-3/index.vue | 5 -
admin/src/views/nested/menu2/index.vue | 5 -
admin/src/views/onlines/online.vue | 96 -
admin/src/views/order/back.vue | 176 -
admin/src/views/order/index.vue | 569 ----
admin/src/views/order/pub.vue | 172 -
admin/src/views/pdf/content.js | 58 -
admin/src/views/pdf/download.vue | 201 --
admin/src/views/pdf/index.vue | 13 -
.../permission/components/SwitchRoles.vue | 32 -
admin/src/views/permission/directive.vue | 111 -
admin/src/views/permission/page.vue | 19 -
admin/src/views/permission/role.vue | 270 --
.../src/views/profile/components/Account.vue | 38 -
.../src/views/profile/components/Activity.vue | 185 --
.../src/views/profile/components/Timeline.vue | 43 -
.../src/views/profile/components/UserCard.vue | 134 -
admin/src/views/profile/index.vue | 68 -
admin/src/views/qiniu/upload.vue | 41 -
admin/src/views/redirect/index.vue | 12 -
admin/src/views/setting/edit.vue | 151 -
admin/src/views/setting/index.vue | 120 -
admin/src/views/shortcut/shortcutContent.vue | 170 -
admin/src/views/tab/components/TabPane.vue | 103 -
admin/src/views/tab/index.vue | 57 -
admin/src/views/table/complex-table.vue | 379 ---
admin/src/views/table/drag-table.vue | 153 -
.../dynamic-table/components/FixedThead.vue | 62 -
.../dynamic-table/components/UnfixedThead.vue | 50 -
admin/src/views/table/dynamic-table/index.vue | 24 -
admin/src/views/table/inline-edit-table.vue | 149 -
admin/src/views/theme/index.vue | 120 -
admin/src/views/user/edit.vue | 142 -
admin/src/views/user/index.vue | 160 -
admin/src/views/user/tourists.vue | 137 -
admin/src/views/zip/index.vue | 77 -
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/param2Obj.spec.js | 14 -
admin/tests/unit/utils/parseTime.spec.js | 37 -
admin/tests/unit/utils/validate.spec.js | 28 -
admin/vue.config.js | 144 -
chrome/hello.html | 21 -
chrome/manifest.json | 29 -
chrome/meituan.png | Bin 1437 -> 0 bytes
chrome/popup.js | 67 -
service/.env.example | 8 -
service/.gitignore | 8 -
service/LICENSE | 21 -
service/README.md | 59 -
.../app/admin/controller/AdminController.php | 172 -
.../app/admin/controller/DataController.php | 92 -
.../app/admin/controller/FollowController.php | 41 -
.../app/admin/controller/IndexController.php | 153 -
.../app/admin/controller/LogController.php | 37 -
.../app/admin/controller/LoginController.php | 65 -
.../app/admin/controller/OrderController.php | 401 ---
.../controller/ShortcutContentController.php | 65 -
.../app/admin/controller/TeamController.php | 86 -
.../app/admin/controller/UserController.php | 38 -
.../app/admin/controller/WorkController.php | 177 -
service/app/admin/controller/base.php | 9 -
.../app/admin/controller/xlsxwriter.class.php | 980 ------
service/app/command/Service.php | 159 -
service/app/command/SpiderDy.php | 534 ---
service/app/command/SpiderMt.php | 533 ---
service/app/controller/IndexController.php | 81 -
service/app/controller/base.php | 13 -
service/app/functions.php | 39 -
service/app/middleware/StaticFile.php | 42 -
service/app/middleware/adminAuth.php | 70 -
service/app/middleware/auth.php | 53 -
service/app/model/Admins.php | 19 -
service/app/model/Area.php | 7 -
service/app/model/Backs.php | 39 -
service/app/model/Blacks.php | 7 -
service/app/model/Finances.php | 7 -
service/app/model/Follows.php | 18 -
service/app/model/Logs.php | 48 -
service/app/model/Onlines.php | 50 -
service/app/model/Orders.php | 126 -
service/app/model/Rules.php | 7 -
service/app/model/Sales.php | 8 -
service/app/model/ShortcutContents.php | 8 -
service/app/model/Teams.php | 24 -
service/app/model/Users.php | 8 -
service/app/model/UsersTourists.php | 7 -
service/app/model/Works.php | 22 -
service/app/model/base.php | 10 -
service/app/server/Douyin.php | 460 ---
service/app/server/Kuaishou.php | 179 -
service/app/server/Meituan.php | 149 -
service/app/server/SMS.php | 81 -
.../app/user/controller/IndexController.php | 45 -
.../app/user/controller/OrderController.php | 47 -
.../app/user/controller/TouristController.php | 23 -
service/app/user/controller/base.php | 9 -
service/composer.json | 64 -
service/composer.lock | 2908 -----------------
service/config/app.php | 28 -
service/config/autoload.php | 21 -
service/config/bootstrap.php | 19 -
service/config/container.php | 15 -
service/config/database.php | 15 -
service/config/dependence.php | 15 -
service/config/exception.php | 17 -
service/config/log.php | 32 -
service/config/middleware.php | 22 -
service/config/plugin/webman/console/app.php | 24 -
service/config/process.php | 42 -
service/config/qiniu.php | 6 -
service/config/redis.php | 22 -
service/config/route.php | 15 -
service/config/server.php | 31 -
service/config/session.php | 65 -
service/config/static.php | 23 -
service/config/thinkorm.php | 37 -
service/config/translation.php | 25 -
service/config/view.php | 22 -
service/process/Monitor.php | 243 --
service/public/avatar.webp | Bin 19342 -> 0 bytes
service/public/favicon.ico | Bin 67646 -> 0 bytes
service/public/index.html | 1 -
service/public/static/css/app.32a3af01.css | 1 -
.../static/css/chunk-00f77d53.655160be.css | 1 -
.../static/css/chunk-023b2e94.b1dd7a76.css | 1 -
.../static/css/chunk-169fa71c.13a7e89e.css | 1 -
.../static/css/chunk-2681d490.72670367.css | 1 -
.../static/css/chunk-2b602420.20c41391.css | 1 -
.../static/css/chunk-31b50fe9.69fff205.css | 1 -
.../static/css/chunk-46a84215.72670367.css | 1 -
.../static/css/chunk-567f2c35.b290db5c.css | 1 -
.../static/css/chunk-5b015b61.38252cc7.css | 1 -
.../static/css/chunk-5e3ffa79.48b5161c.css | 1 -
.../static/css/chunk-6a308a2b.cd497506.css | 1 -
.../static/css/chunk-6e1eea3c.72670367.css | 1 -
.../static/css/chunk-bc86863a.55ec8d04.css | 1 -
.../static/css/chunk-f00febf4.72670367.css | 1 -
.../static/css/chunk-fdd67dcc.9e1a6ab8.css | 1 -
.../public/static/css/chunk-libs.3dfb7769.css | 1 -
.../static/fonts/element-icons.535877f5.woff | Bin 28200 -> 0 bytes
.../static/fonts/element-icons.732389de.ttf | Bin 55956 -> 0 bytes
service/public/static/img/401.089007e7.gif | Bin 164227 -> 0 bytes
service/public/static/img/404.a57b6f31.png | Bin 98071 -> 0 bytes
.../public/static/img/404_cloud.0f4bc32b.png | Bin 4766 -> 0 bytes
service/public/static/js/app.7347a4e3.js | 1 -
.../static/js/chunk-00f77d53.2a829e8a.js | 1 -
.../static/js/chunk-023b2e94.5654e8c8.js | 1 -
.../static/js/chunk-169fa71c.c1299083.js | 1 -
.../static/js/chunk-2681d490.4d9bd73c.js | 1 -
.../static/js/chunk-2b602420.d65c8269.js | 1 -
.../static/js/chunk-2d0de3a1.45daccb0.js | 1 -
.../static/js/chunk-2d2105d3.40f39be6.js | 1 -
.../static/js/chunk-2d21a050.a688dfc8.js | 1 -
.../static/js/chunk-2d230fe7.289e51b0.js | 1 -
.../static/js/chunk-31b50fe9.efcb8715.js | 1 -
.../static/js/chunk-46a84215.e82d20cf.js | 1 -
.../static/js/chunk-567f2c35.cf34c5e9.js | 1 -
.../static/js/chunk-5b015b61.0f4654d6.js | 1 -
.../static/js/chunk-5e3ffa79.3892fd26.js | 1 -
.../static/js/chunk-6a308a2b.2d0cbe4a.js | 1 -
.../static/js/chunk-6e1eea3c.2c2f793d.js | 1 -
.../static/js/chunk-a73bcc0e.9e90010f.js | 1 -
.../static/js/chunk-bc86863a.a5e17f32.js | 8 -
.../static/js/chunk-elementUI.0f94cca2.js | 1 -
.../static/js/chunk-f00febf4.0976ae67.js | 1 -
.../static/js/chunk-fdd67dcc.9e46bce1.js | 1 -
.../public/static/js/chunk-libs.0c5120ca.js | 75 -
service/ss.txt | 1 -
service/start.php | 4 -
service/support/Request.php | 24 -
service/support/Response.php | 24 -
service/support/bootstrap.php | 133 -
service/support/helpers.php | 528 ---
service/user/controller/IndexController.php | 45 -
service/user/controller/OrderController.php | 47 -
service/user/controller/TouristController.php | 23 -
service/user/controller/base.php | 9 -
service/webman | 57 -
service/windows.bat | 3 -
service/windows.php | 118 -
web/.env.development | 3 -
web/.env.production | 3 -
web/.gitignore | 30 -
web/.vscode/extensions.json | 3 -
web/README.md | 29 -
web/index.html | 13 -
web/jsconfig.json | 8 -
web/package-lock.json | 1300 --------
web/package.json | 21 -
web/public/favicon.ico | Bin 4286 -> 0 bytes
web/public/images/1.jpeg | Bin 156529 -> 0 bytes
web/public/images/2.jpg | Bin 73533 -> 0 bytes
web/public/images/3.jpeg | Bin 84807 -> 0 bytes
web/src/App.vue | 11 -
web/src/api/home/index.js | 6 -
web/src/assets/base.css | 86 -
web/src/assets/logo.svg | 1 -
web/src/assets/main.css | 35 -
web/src/components/HelloWorld.vue | 44 -
web/src/components/TheWelcome.vue | 88 -
web/src/components/WelcomeItem.vue | 87 -
web/src/components/icons/IconCommunity.vue | 7 -
.../components/icons/IconDocumentation.vue | 7 -
web/src/components/icons/IconEcosystem.vue | 7 -
web/src/components/icons/IconSupport.vue | 7 -
web/src/components/icons/IconTooling.vue | 19 -
web/src/main.js | 11 -
web/src/router/index.js | 42 -
web/src/utils/request.js | 24 -
web/src/views/error-page/401.vue | 11 -
web/src/views/error-page/404.vue | 11 -
web/src/views/home/index.vue | 105 -
web/vite.config.js | 16 -
web/vue.config.js | 14 -
504 files changed, 38474 deletions(-)
delete mode 100644 .idea/.gitignore
delete mode 100644 .idea/inspectionProfiles/Project_Default.xml
delete mode 100644 .idea/modules.xml
delete mode 100644 .idea/php.xml
delete mode 100644 .idea/travel.iml
delete mode 100644 .idea/vcs.xml
delete mode 100644 admin/.editorconfig
delete mode 100644 admin/.env.development
delete mode 100644 admin/.env.production
delete mode 100644 admin/.env.staging
delete mode 100644 admin/.eslintignore
delete mode 100644 admin/.eslintrc.js
delete mode 100644 admin/.gitignore
delete mode 100644 admin/.travis.yml
delete mode 100644 admin/LICENSE
delete mode 100644 admin/README.es.md
delete mode 100644 admin/README.ja.md
delete mode 100644 admin/README.md
delete mode 100644 admin/README.zh-CN.md
delete mode 100644 admin/babel.config.js
delete mode 100644 admin/build/index.js
delete mode 100644 admin/jest.config.js
delete mode 100644 admin/jsconfig.json
delete mode 100644 admin/mock/article.js
delete mode 100644 admin/mock/index.js
delete mode 100644 admin/mock/mock-server.js
delete mode 100644 admin/mock/remote-search.js
delete mode 100644 admin/mock/role/index.js
delete mode 100644 admin/mock/role/routes.js
delete mode 100644 admin/mock/user.js
delete mode 100644 admin/mock/utils.js
delete mode 100644 admin/package.json
delete mode 100644 admin/plop-templates/component/index.hbs
delete mode 100644 admin/plop-templates/component/prompt.js
delete mode 100644 admin/plop-templates/store/index.hbs
delete mode 100644 admin/plop-templates/store/prompt.js
delete mode 100644 admin/plop-templates/utils.js
delete mode 100644 admin/plop-templates/view/index.hbs
delete mode 100644 admin/plop-templates/view/prompt.js
delete mode 100644 admin/plopfile.js
delete mode 100644 admin/postcss.config.js
delete mode 100644 admin/public/avatar.webp
delete mode 100644 admin/public/favicon.ico
delete mode 100644 admin/public/index.html
delete mode 100644 admin/src/App.vue
delete mode 100644 admin/src/api/article.js
delete mode 100644 admin/src/api/qiniu.js
delete mode 100644 admin/src/api/remote-search.js
delete mode 100644 admin/src/api/role.js
delete mode 100644 admin/src/api/user.js
delete mode 100644 admin/src/assets/401_images/401.gif
delete mode 100644 admin/src/assets/404_images/404.png
delete mode 100644 admin/src/assets/404_images/404_cloud.png
delete mode 100644 admin/src/assets/custom-theme/fonts/element-icons.ttf
delete mode 100644 admin/src/assets/custom-theme/fonts/element-icons.woff
delete mode 100644 admin/src/assets/custom-theme/index.css
delete mode 100644 admin/src/components/BackToTop/index.vue
delete mode 100644 admin/src/components/Breadcrumb/index.vue
delete mode 100644 admin/src/components/Charts/Keyboard.vue
delete mode 100644 admin/src/components/Charts/LineMarker.vue
delete mode 100644 admin/src/components/Charts/MixChart.vue
delete mode 100644 admin/src/components/Charts/mixins/resize.js
delete mode 100644 admin/src/components/DndList/index.vue
delete mode 100644 admin/src/components/DragSelect/index.vue
delete mode 100644 admin/src/components/Dropzone/index.vue
delete mode 100644 admin/src/components/ErrorLog/index.vue
delete mode 100644 admin/src/components/Hamburger/index.vue
delete mode 100644 admin/src/components/HeaderSearch/index.vue
delete mode 100644 admin/src/components/ImageCropper/index.vue
delete mode 100644 admin/src/components/ImageCropper/utils/data2blob.js
delete mode 100644 admin/src/components/ImageCropper/utils/effectRipple.js
delete mode 100644 admin/src/components/ImageCropper/utils/language.js
delete mode 100644 admin/src/components/ImageCropper/utils/mimes.js
delete mode 100644 admin/src/components/JsonEditor/index.vue
delete mode 100644 admin/src/components/Kanban/index.vue
delete mode 100644 admin/src/components/MDinput/index.vue
delete mode 100644 admin/src/components/MarkdownEditor/default-options.js
delete mode 100644 admin/src/components/MarkdownEditor/index.vue
delete mode 100644 admin/src/components/Pagination/index.vue
delete mode 100644 admin/src/components/PaginationFixed/index.vue
delete mode 100644 admin/src/components/PanThumb/index.vue
delete mode 100644 admin/src/components/RightPanel/index.vue
delete mode 100644 admin/src/components/Screenfull/index.vue
delete mode 100644 admin/src/components/Share/DropdownMenu.vue
delete mode 100644 admin/src/components/SizeSelect/index.vue
delete mode 100644 admin/src/components/Sticky/index.vue
delete mode 100644 admin/src/components/SvgIcon/index.vue
delete mode 100644 admin/src/components/TextHoverEffect/Mallki.vue
delete mode 100644 admin/src/components/ThemePicker/index.vue
delete mode 100644 admin/src/components/Tinymce/components/EditorImage.vue
delete mode 100644 admin/src/components/Tinymce/dynamicLoadScript.js
delete mode 100644 admin/src/components/Tinymce/index.vue
delete mode 100644 admin/src/components/Tinymce/plugins.js
delete mode 100644 admin/src/components/Tinymce/toolbar.js
delete mode 100644 admin/src/components/Upload/SingleImage.vue
delete mode 100644 admin/src/components/Upload/SingleImage2.vue
delete mode 100644 admin/src/components/Upload/SingleImage3.vue
delete mode 100644 admin/src/components/UploadExcel/index.vue
delete mode 100644 admin/src/directive/clipboard/clipboard.js
delete mode 100644 admin/src/directive/clipboard/index.js
delete mode 100644 admin/src/directive/el-drag-dialog/drag.js
delete mode 100644 admin/src/directive/el-drag-dialog/index.js
delete mode 100644 admin/src/directive/el-table/adaptive.js
delete mode 100644 admin/src/directive/el-table/index.js
delete mode 100644 admin/src/directive/permission/index.js
delete mode 100644 admin/src/directive/permission/permission.js
delete mode 100644 admin/src/directive/sticky.js
delete mode 100644 admin/src/directive/watermark.js
delete mode 100644 admin/src/directive/waves/index.js
delete mode 100644 admin/src/directive/waves/waves.css
delete mode 100644 admin/src/directive/waves/waves.js
delete mode 100644 admin/src/filters/index.js
delete mode 100644 admin/src/icons/index.js
delete mode 100644 admin/src/icons/svg/404.svg
delete mode 100644 admin/src/icons/svg/bug.svg
delete mode 100644 admin/src/icons/svg/chart.svg
delete mode 100644 admin/src/icons/svg/clipboard.svg
delete mode 100644 admin/src/icons/svg/component.svg
delete mode 100644 admin/src/icons/svg/dashboard.svg
delete mode 100644 admin/src/icons/svg/documentation.svg
delete mode 100644 admin/src/icons/svg/drag.svg
delete mode 100644 admin/src/icons/svg/edit.svg
delete mode 100644 admin/src/icons/svg/education.svg
delete mode 100644 admin/src/icons/svg/email.svg
delete mode 100644 admin/src/icons/svg/example.svg
delete mode 100644 admin/src/icons/svg/excel.svg
delete mode 100644 admin/src/icons/svg/exit-fullscreen.svg
delete mode 100644 admin/src/icons/svg/eye-open.svg
delete mode 100644 admin/src/icons/svg/eye.svg
delete mode 100644 admin/src/icons/svg/form.svg
delete mode 100644 admin/src/icons/svg/fullscreen.svg
delete mode 100644 admin/src/icons/svg/guide.svg
delete mode 100644 admin/src/icons/svg/icon.svg
delete mode 100644 admin/src/icons/svg/international.svg
delete mode 100644 admin/src/icons/svg/language.svg
delete mode 100644 admin/src/icons/svg/link.svg
delete mode 100644 admin/src/icons/svg/list.svg
delete mode 100644 admin/src/icons/svg/lock.svg
delete mode 100644 admin/src/icons/svg/message.svg
delete mode 100644 admin/src/icons/svg/money.svg
delete mode 100644 admin/src/icons/svg/nested.svg
delete mode 100644 admin/src/icons/svg/password.svg
delete mode 100644 admin/src/icons/svg/pdf.svg
delete mode 100644 admin/src/icons/svg/people.svg
delete mode 100644 admin/src/icons/svg/peoples.svg
delete mode 100644 admin/src/icons/svg/qq.svg
delete mode 100644 admin/src/icons/svg/search.svg
delete mode 100644 admin/src/icons/svg/shopping.svg
delete mode 100644 admin/src/icons/svg/size.svg
delete mode 100644 admin/src/icons/svg/skill.svg
delete mode 100644 admin/src/icons/svg/star.svg
delete mode 100644 admin/src/icons/svg/tab.svg
delete mode 100644 admin/src/icons/svg/table.svg
delete mode 100644 admin/src/icons/svg/theme.svg
delete mode 100644 admin/src/icons/svg/tree-table.svg
delete mode 100644 admin/src/icons/svg/tree.svg
delete mode 100644 admin/src/icons/svg/user.svg
delete mode 100644 admin/src/icons/svg/wechat.svg
delete mode 100644 admin/src/icons/svg/zip.svg
delete mode 100644 admin/src/icons/svgo.yml
delete mode 100644 admin/src/layout/components/AppMain.vue
delete mode 100644 admin/src/layout/components/Navbar.vue
delete mode 100644 admin/src/layout/components/Settings/index.vue
delete mode 100644 admin/src/layout/components/Sidebar/FixiOSBug.js
delete mode 100644 admin/src/layout/components/Sidebar/Item.vue
delete mode 100644 admin/src/layout/components/Sidebar/Link.vue
delete mode 100644 admin/src/layout/components/Sidebar/Logo.vue
delete mode 100644 admin/src/layout/components/Sidebar/SidebarItem.vue
delete mode 100644 admin/src/layout/components/Sidebar/index.vue
delete mode 100644 admin/src/layout/components/TagsView/ScrollPane.vue
delete mode 100644 admin/src/layout/components/TagsView/index.vue
delete mode 100644 admin/src/layout/components/index.js
delete mode 100644 admin/src/layout/index.vue
delete mode 100644 admin/src/layout/mixin/ResizeHandler.js
delete mode 100644 admin/src/main.js
delete mode 100644 admin/src/permission.js
delete mode 100644 admin/src/router/Index copy.js
delete mode 100644 admin/src/router/index.js
delete mode 100644 admin/src/router/modules/charts.js
delete mode 100644 admin/src/router/modules/components.js
delete mode 100644 admin/src/router/modules/nested.js
delete mode 100644 admin/src/router/modules/table.js
delete mode 100644 admin/src/settings.js
delete mode 100644 admin/src/store/getters.js
delete mode 100644 admin/src/store/index.js
delete mode 100644 admin/src/store/modules/app.js
delete mode 100644 admin/src/store/modules/errorLog.js
delete mode 100644 admin/src/store/modules/permission.js
delete mode 100644 admin/src/store/modules/settings.js
delete mode 100644 admin/src/store/modules/tagsView.js
delete mode 100644 admin/src/store/modules/user.js
delete mode 100644 admin/src/styles/btn.scss
delete mode 100644 admin/src/styles/element-ui.scss
delete mode 100644 admin/src/styles/element-variables.scss
delete mode 100644 admin/src/styles/index.scss
delete mode 100644 admin/src/styles/mixin.scss
delete mode 100644 admin/src/styles/sidebar.scss
delete mode 100644 admin/src/styles/transition.scss
delete mode 100644 admin/src/styles/variables.scss
delete mode 100644 admin/src/utils/auth.js
delete mode 100644 admin/src/utils/clipboard.js
delete mode 100644 admin/src/utils/error-log.js
delete mode 100644 admin/src/utils/get-page-title.js
delete mode 100644 admin/src/utils/index.js
delete mode 100644 admin/src/utils/open-window.js
delete mode 100644 admin/src/utils/permission.js
delete mode 100644 admin/src/utils/request.js
delete mode 100644 admin/src/utils/scroll-to.js
delete mode 100644 admin/src/utils/validate.js
delete mode 100644 admin/src/vendor/Export2Excel.js
delete mode 100644 admin/src/vendor/Export2Zip.js
delete mode 100644 admin/src/views/admin/index.vue
delete mode 100644 admin/src/views/admin/teams.vue
delete mode 100644 admin/src/views/admin/works.vue
delete mode 100644 admin/src/views/charts/keyboard.vue
delete mode 100644 admin/src/views/charts/line.vue
delete mode 100644 admin/src/views/charts/mix-chart.vue
delete mode 100644 admin/src/views/clipboard/index.vue
delete mode 100644 admin/src/views/components-demo/avatar-upload.vue
delete mode 100644 admin/src/views/components-demo/back-to-top.vue
delete mode 100644 admin/src/views/components-demo/count-to.vue
delete mode 100644 admin/src/views/components-demo/dnd-list.vue
delete mode 100644 admin/src/views/components-demo/drag-dialog.vue
delete mode 100644 admin/src/views/components-demo/drag-kanban.vue
delete mode 100644 admin/src/views/components-demo/drag-select.vue
delete mode 100644 admin/src/views/components-demo/dropzone.vue
delete mode 100644 admin/src/views/components-demo/json-editor.vue
delete mode 100644 admin/src/views/components-demo/markdown.vue
delete mode 100644 admin/src/views/components-demo/mixin.vue
delete mode 100644 admin/src/views/components-demo/split-pane.vue
delete mode 100644 admin/src/views/components-demo/sticky.vue
delete mode 100644 admin/src/views/components-demo/tinymce.vue
delete mode 100644 admin/src/views/dashboard/admin/components/BarChart.vue
delete mode 100644 admin/src/views/dashboard/admin/components/BoxCard.vue
delete mode 100644 admin/src/views/dashboard/admin/components/LineChart.vue
delete mode 100644 admin/src/views/dashboard/admin/components/PanelGroup.vue
delete mode 100644 admin/src/views/dashboard/admin/components/PieChart.vue
delete mode 100644 admin/src/views/dashboard/admin/components/RaddarChart.vue
delete mode 100644 admin/src/views/dashboard/admin/components/TodoList/Todo.vue
delete mode 100644 admin/src/views/dashboard/admin/components/TodoList/index.scss
delete mode 100644 admin/src/views/dashboard/admin/components/TodoList/index.vue
delete mode 100644 admin/src/views/dashboard/admin/components/TransactionTable.vue
delete mode 100644 admin/src/views/dashboard/admin/components/mixins/resize.js
delete mode 100644 admin/src/views/dashboard/admin/index.vue
delete mode 100644 admin/src/views/dashboard/editor/index.vue
delete mode 100644 admin/src/views/dashboard/index.vue
delete mode 100644 admin/src/views/data/anchor.vue
delete mode 100644 admin/src/views/data/index.vue
delete mode 100644 admin/src/views/data/online.vue
delete mode 100644 admin/src/views/data/sale.vue
delete mode 100644 admin/src/views/documentation/index.vue
delete mode 100644 admin/src/views/error-log/components/ErrorTestA.vue
delete mode 100644 admin/src/views/error-log/components/ErrorTestB.vue
delete mode 100644 admin/src/views/error-log/index.vue
delete mode 100644 admin/src/views/error-page/401.vue
delete mode 100644 admin/src/views/error-page/404.vue
delete mode 100644 admin/src/views/example/components/ArticleDetail.vue
delete mode 100644 admin/src/views/example/components/Dropdown/Comment.vue
delete mode 100644 admin/src/views/example/components/Dropdown/Platform.vue
delete mode 100644 admin/src/views/example/components/Dropdown/SourceUrl.vue
delete mode 100644 admin/src/views/example/components/Dropdown/index.js
delete mode 100644 admin/src/views/example/components/Warning.vue
delete mode 100644 admin/src/views/example/create.vue
delete mode 100644 admin/src/views/example/edit.vue
delete mode 100644 admin/src/views/example/list.vue
delete mode 100644 admin/src/views/excel/components/AutoWidthOption.vue
delete mode 100644 admin/src/views/excel/components/BookTypeOption.vue
delete mode 100644 admin/src/views/excel/components/FilenameOption.vue
delete mode 100644 admin/src/views/excel/export-excel.vue
delete mode 100644 admin/src/views/excel/merge-header.vue
delete mode 100644 admin/src/views/excel/select-excel.vue
delete mode 100644 admin/src/views/excel/upload-excel.vue
delete mode 100644 admin/src/views/guide/index.vue
delete mode 100644 admin/src/views/guide/steps.js
delete mode 100644 admin/src/views/icons/element-icons.js
delete mode 100644 admin/src/views/icons/index.vue
delete mode 100644 admin/src/views/icons/svg-icons.js
delete mode 100644 admin/src/views/log/follow.vue
delete mode 100644 admin/src/views/log/index.vue
delete mode 100644 admin/src/views/login/auth-redirect.vue
delete mode 100644 admin/src/views/login/components/SocialSignin.vue
delete mode 100644 admin/src/views/login/index.vue
delete mode 100644 admin/src/views/nested/menu1/index.vue
delete mode 100644 admin/src/views/nested/menu1/menu1-1/index.vue
delete mode 100644 admin/src/views/nested/menu1/menu1-2/index.vue
delete mode 100644 admin/src/views/nested/menu1/menu1-2/menu1-2-1/index.vue
delete mode 100644 admin/src/views/nested/menu1/menu1-2/menu1-2-2/index.vue
delete mode 100644 admin/src/views/nested/menu1/menu1-3/index.vue
delete mode 100644 admin/src/views/nested/menu2/index.vue
delete mode 100644 admin/src/views/onlines/online.vue
delete mode 100644 admin/src/views/order/back.vue
delete mode 100644 admin/src/views/order/index.vue
delete mode 100644 admin/src/views/order/pub.vue
delete mode 100644 admin/src/views/pdf/content.js
delete mode 100644 admin/src/views/pdf/download.vue
delete mode 100644 admin/src/views/pdf/index.vue
delete mode 100644 admin/src/views/permission/components/SwitchRoles.vue
delete mode 100644 admin/src/views/permission/directive.vue
delete mode 100644 admin/src/views/permission/page.vue
delete mode 100644 admin/src/views/permission/role.vue
delete mode 100644 admin/src/views/profile/components/Account.vue
delete mode 100644 admin/src/views/profile/components/Activity.vue
delete mode 100644 admin/src/views/profile/components/Timeline.vue
delete mode 100644 admin/src/views/profile/components/UserCard.vue
delete mode 100644 admin/src/views/profile/index.vue
delete mode 100644 admin/src/views/qiniu/upload.vue
delete mode 100644 admin/src/views/redirect/index.vue
delete mode 100644 admin/src/views/setting/edit.vue
delete mode 100644 admin/src/views/setting/index.vue
delete mode 100644 admin/src/views/shortcut/shortcutContent.vue
delete mode 100644 admin/src/views/tab/components/TabPane.vue
delete mode 100644 admin/src/views/tab/index.vue
delete mode 100644 admin/src/views/table/complex-table.vue
delete mode 100644 admin/src/views/table/drag-table.vue
delete mode 100644 admin/src/views/table/dynamic-table/components/FixedThead.vue
delete mode 100644 admin/src/views/table/dynamic-table/components/UnfixedThead.vue
delete mode 100644 admin/src/views/table/dynamic-table/index.vue
delete mode 100644 admin/src/views/table/inline-edit-table.vue
delete mode 100644 admin/src/views/theme/index.vue
delete mode 100644 admin/src/views/user/edit.vue
delete mode 100644 admin/src/views/user/index.vue
delete mode 100644 admin/src/views/user/tourists.vue
delete mode 100644 admin/src/views/zip/index.vue
delete mode 100644 admin/tests/unit/.eslintrc.js
delete mode 100644 admin/tests/unit/components/Hamburger.spec.js
delete mode 100644 admin/tests/unit/components/SvgIcon.spec.js
delete mode 100644 admin/tests/unit/utils/formatTime.spec.js
delete mode 100644 admin/tests/unit/utils/param2Obj.spec.js
delete mode 100644 admin/tests/unit/utils/parseTime.spec.js
delete mode 100644 admin/tests/unit/utils/validate.spec.js
delete mode 100644 admin/vue.config.js
delete mode 100644 chrome/hello.html
delete mode 100644 chrome/manifest.json
delete mode 100644 chrome/meituan.png
delete mode 100644 chrome/popup.js
delete mode 100644 service/.env.example
delete mode 100644 service/.gitignore
delete mode 100644 service/LICENSE
delete mode 100644 service/README.md
delete mode 100644 service/app/admin/controller/AdminController.php
delete mode 100644 service/app/admin/controller/DataController.php
delete mode 100644 service/app/admin/controller/FollowController.php
delete mode 100644 service/app/admin/controller/IndexController.php
delete mode 100644 service/app/admin/controller/LogController.php
delete mode 100644 service/app/admin/controller/LoginController.php
delete mode 100644 service/app/admin/controller/OrderController.php
delete mode 100644 service/app/admin/controller/ShortcutContentController.php
delete mode 100644 service/app/admin/controller/TeamController.php
delete mode 100644 service/app/admin/controller/UserController.php
delete mode 100644 service/app/admin/controller/WorkController.php
delete mode 100644 service/app/admin/controller/base.php
delete mode 100644 service/app/admin/controller/xlsxwriter.class.php
delete mode 100644 service/app/command/Service.php
delete mode 100644 service/app/command/SpiderDy.php
delete mode 100644 service/app/command/SpiderMt.php
delete mode 100644 service/app/controller/IndexController.php
delete mode 100644 service/app/controller/base.php
delete mode 100644 service/app/functions.php
delete mode 100644 service/app/middleware/StaticFile.php
delete mode 100644 service/app/middleware/adminAuth.php
delete mode 100644 service/app/middleware/auth.php
delete mode 100644 service/app/model/Admins.php
delete mode 100644 service/app/model/Area.php
delete mode 100644 service/app/model/Backs.php
delete mode 100644 service/app/model/Blacks.php
delete mode 100644 service/app/model/Finances.php
delete mode 100644 service/app/model/Follows.php
delete mode 100644 service/app/model/Logs.php
delete mode 100644 service/app/model/Onlines.php
delete mode 100644 service/app/model/Orders.php
delete mode 100644 service/app/model/Rules.php
delete mode 100644 service/app/model/Sales.php
delete mode 100644 service/app/model/ShortcutContents.php
delete mode 100644 service/app/model/Teams.php
delete mode 100644 service/app/model/Users.php
delete mode 100644 service/app/model/UsersTourists.php
delete mode 100644 service/app/model/Works.php
delete mode 100644 service/app/model/base.php
delete mode 100644 service/app/server/Douyin.php
delete mode 100644 service/app/server/Kuaishou.php
delete mode 100644 service/app/server/Meituan.php
delete mode 100644 service/app/server/SMS.php
delete mode 100644 service/app/user/controller/IndexController.php
delete mode 100644 service/app/user/controller/OrderController.php
delete mode 100644 service/app/user/controller/TouristController.php
delete mode 100644 service/app/user/controller/base.php
delete mode 100644 service/composer.json
delete mode 100644 service/composer.lock
delete mode 100644 service/config/app.php
delete mode 100644 service/config/autoload.php
delete mode 100644 service/config/bootstrap.php
delete mode 100644 service/config/container.php
delete mode 100644 service/config/database.php
delete mode 100644 service/config/dependence.php
delete mode 100644 service/config/exception.php
delete mode 100644 service/config/log.php
delete mode 100644 service/config/middleware.php
delete mode 100644 service/config/plugin/webman/console/app.php
delete mode 100644 service/config/process.php
delete mode 100644 service/config/qiniu.php
delete mode 100644 service/config/redis.php
delete mode 100644 service/config/route.php
delete mode 100644 service/config/server.php
delete mode 100644 service/config/session.php
delete mode 100644 service/config/static.php
delete mode 100644 service/config/thinkorm.php
delete mode 100644 service/config/translation.php
delete mode 100644 service/config/view.php
delete mode 100644 service/process/Monitor.php
delete mode 100644 service/public/avatar.webp
delete mode 100644 service/public/favicon.ico
delete mode 100644 service/public/index.html
delete mode 100644 service/public/static/css/app.32a3af01.css
delete mode 100644 service/public/static/css/chunk-00f77d53.655160be.css
delete mode 100644 service/public/static/css/chunk-023b2e94.b1dd7a76.css
delete mode 100644 service/public/static/css/chunk-169fa71c.13a7e89e.css
delete mode 100644 service/public/static/css/chunk-2681d490.72670367.css
delete mode 100644 service/public/static/css/chunk-2b602420.20c41391.css
delete mode 100644 service/public/static/css/chunk-31b50fe9.69fff205.css
delete mode 100644 service/public/static/css/chunk-46a84215.72670367.css
delete mode 100644 service/public/static/css/chunk-567f2c35.b290db5c.css
delete mode 100644 service/public/static/css/chunk-5b015b61.38252cc7.css
delete mode 100644 service/public/static/css/chunk-5e3ffa79.48b5161c.css
delete mode 100644 service/public/static/css/chunk-6a308a2b.cd497506.css
delete mode 100644 service/public/static/css/chunk-6e1eea3c.72670367.css
delete mode 100644 service/public/static/css/chunk-bc86863a.55ec8d04.css
delete mode 100644 service/public/static/css/chunk-f00febf4.72670367.css
delete mode 100644 service/public/static/css/chunk-fdd67dcc.9e1a6ab8.css
delete mode 100644 service/public/static/css/chunk-libs.3dfb7769.css
delete mode 100644 service/public/static/fonts/element-icons.535877f5.woff
delete mode 100644 service/public/static/fonts/element-icons.732389de.ttf
delete mode 100644 service/public/static/img/401.089007e7.gif
delete mode 100644 service/public/static/img/404.a57b6f31.png
delete mode 100644 service/public/static/img/404_cloud.0f4bc32b.png
delete mode 100644 service/public/static/js/app.7347a4e3.js
delete mode 100644 service/public/static/js/chunk-00f77d53.2a829e8a.js
delete mode 100644 service/public/static/js/chunk-023b2e94.5654e8c8.js
delete mode 100644 service/public/static/js/chunk-169fa71c.c1299083.js
delete mode 100644 service/public/static/js/chunk-2681d490.4d9bd73c.js
delete mode 100644 service/public/static/js/chunk-2b602420.d65c8269.js
delete mode 100644 service/public/static/js/chunk-2d0de3a1.45daccb0.js
delete mode 100644 service/public/static/js/chunk-2d2105d3.40f39be6.js
delete mode 100644 service/public/static/js/chunk-2d21a050.a688dfc8.js
delete mode 100644 service/public/static/js/chunk-2d230fe7.289e51b0.js
delete mode 100644 service/public/static/js/chunk-31b50fe9.efcb8715.js
delete mode 100644 service/public/static/js/chunk-46a84215.e82d20cf.js
delete mode 100644 service/public/static/js/chunk-567f2c35.cf34c5e9.js
delete mode 100644 service/public/static/js/chunk-5b015b61.0f4654d6.js
delete mode 100644 service/public/static/js/chunk-5e3ffa79.3892fd26.js
delete mode 100644 service/public/static/js/chunk-6a308a2b.2d0cbe4a.js
delete mode 100644 service/public/static/js/chunk-6e1eea3c.2c2f793d.js
delete mode 100644 service/public/static/js/chunk-a73bcc0e.9e90010f.js
delete mode 100644 service/public/static/js/chunk-bc86863a.a5e17f32.js
delete mode 100644 service/public/static/js/chunk-elementUI.0f94cca2.js
delete mode 100644 service/public/static/js/chunk-f00febf4.0976ae67.js
delete mode 100644 service/public/static/js/chunk-fdd67dcc.9e46bce1.js
delete mode 100644 service/public/static/js/chunk-libs.0c5120ca.js
delete mode 100644 service/ss.txt
delete mode 100644 service/start.php
delete mode 100644 service/support/Request.php
delete mode 100644 service/support/Response.php
delete mode 100644 service/support/bootstrap.php
delete mode 100644 service/support/helpers.php
delete mode 100644 service/user/controller/IndexController.php
delete mode 100644 service/user/controller/OrderController.php
delete mode 100644 service/user/controller/TouristController.php
delete mode 100644 service/user/controller/base.php
delete mode 100644 service/webman
delete mode 100644 service/windows.bat
delete mode 100644 service/windows.php
delete mode 100644 web/.env.development
delete mode 100644 web/.env.production
delete mode 100644 web/.gitignore
delete mode 100644 web/.vscode/extensions.json
delete mode 100644 web/README.md
delete mode 100644 web/index.html
delete mode 100644 web/jsconfig.json
delete mode 100644 web/package-lock.json
delete mode 100644 web/package.json
delete mode 100644 web/public/favicon.ico
delete mode 100644 web/public/images/1.jpeg
delete mode 100644 web/public/images/2.jpg
delete mode 100644 web/public/images/3.jpeg
delete mode 100644 web/src/App.vue
delete mode 100644 web/src/api/home/index.js
delete mode 100644 web/src/assets/base.css
delete mode 100644 web/src/assets/logo.svg
delete mode 100644 web/src/assets/main.css
delete mode 100644 web/src/components/HelloWorld.vue
delete mode 100644 web/src/components/TheWelcome.vue
delete mode 100644 web/src/components/WelcomeItem.vue
delete mode 100644 web/src/components/icons/IconCommunity.vue
delete mode 100644 web/src/components/icons/IconDocumentation.vue
delete mode 100644 web/src/components/icons/IconEcosystem.vue
delete mode 100644 web/src/components/icons/IconSupport.vue
delete mode 100644 web/src/components/icons/IconTooling.vue
delete mode 100644 web/src/main.js
delete mode 100644 web/src/router/index.js
delete mode 100644 web/src/utils/request.js
delete mode 100644 web/src/views/error-page/401.vue
delete mode 100644 web/src/views/error-page/404.vue
delete mode 100644 web/src/views/home/index.vue
delete mode 100644 web/vite.config.js
delete mode 100644 web/vue.config.js
diff --git a/.idea/.gitignore b/.idea/.gitignore
deleted file mode 100644
index 35410cac..00000000
--- a/.idea/.gitignore
+++ /dev/null
@@ -1,8 +0,0 @@
-# 默认忽略的文件
-/shelf/
-/workspace.xml
-# 基于编辑器的 HTTP 客户端请求
-/httpRequests/
-# Datasource local storage ignored files
-/dataSources/
-/dataSources.local.xml
diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml
deleted file mode 100644
index 03d9549e..00000000
--- a/.idea/inspectionProfiles/Project_Default.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
- -
- -- - - - - - - - - - - - - - - - - - - - - -
- -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 utilice la rama [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 antigüas de navegadores (ej. 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. - -[![Edit on CodeSandbox](https://codesandbox.io/static/img/play-codesandbox.svg)](https://codesandbox.io/s/github/PanJiaChen/vue-element-admin/tree/CodeSandbox) - -- -
- -## Patrocinantes - -Sea un patrocinante y coloque su logo en nuestro LEEME en GitHub con un enlace directo a su sitio web. [[Se un Patrocinante]](https://www.patreon.com/panjiachen) - -### Akveo -Get Java backend for Vue admin with 20% discount for 39$ use coupon code SWB0RAZPZR1M -
- -### Flatlogic - -Admin Dashboard Templates made with Vue, React and Angular.
- -## Características - -``` -- Iniciar / Cerrar Sesión - -- Permisos de Autenticación - - Página de Permisos - - Directivas de permisos - - Página de configuración de permisos - - Autenticación por dos pasos - -- Construcción Multi-entorno - - Desarrollo (dev) - - sit - - Escenario de pruebas (stage), - - Producción (prod) - -- Características Globales - - I18n - - Temas dinámicos - - Menu lateral dinámico (soporte a rutas multi-nivel) - - Barra de rutas dinámica - - Tags-view (Pestañas de página, Soporta operación de clic derecho) - - Svg Sprite - - Datos de simulación con Mock - - Pantalla completa - - Menu lateral responsivo - -- 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+. - -| [](https://godban.github.io/browsers-support-badges/)IE / Edge | [](https://godban.github.io/browsers-support-badges/)Firefox | [](https://godban.github.io/browsers-support-badges/)Chrome | [](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 deleted file mode 100644 index 3bc3ce8b..00000000 --- a/admin/README.ja.md +++ /dev/null @@ -1,224 +0,0 @@ -- -
- -- - - - - - - - - - - - - - - - - - - - - -
- -日本語 | [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は大歓迎です。** - -[![Edit on CodeSandbox](https://codesandbox.io/static/img/play-codesandbox.svg)](https://codesandbox.io/s/github/PanJiaChen/vue-element-admin/tree/CodeSandbox) - -- -
- -## 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) - -### Akveo -Get Java backend for Vue admin with 20% discount for 39$ use coupon code SWB0RAZPZR1M -
- -### Flatlogic - -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+. - -| [](https://godban.github.io/browsers-support-badges/)IE / Edge | [](https://godban.github.io/browsers-support-badges/)Firefox | [](https://godban.github.io/browsers-support-badges/)Chrome | [](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 deleted file mode 100644 index da4b8b97..00000000 --- a/admin/README.md +++ /dev/null @@ -1,243 +0,0 @@ -- -
- -- - - - - - - - - - - - - - - - - - - - - -
- -English | [简体中文](./README.zh-CN.md) | [日本語](./README.ja.md) | [Spanish](./README.es.md) - -- SPONSORED BY -
-- - - - | -
- -
- -## 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) - -### Akveo -Get Java backend for Vue admin with 20% discount for 39$ use coupon code SWB0RAZPZR1M -
- -### Flatlogic - -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 - - Develop (dev) - - sit - - Stage Test (stage) - - Production (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+. - -| [](https://godban.github.io/browsers-support-badges/)IE / Edge | [](https://godban.github.io/browsers-support-badges/)Firefox | [](https://godban.github.io/browsers-support-badges/)Chrome | [](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 deleted file mode 100644 index d34c65a4..00000000 --- a/admin/README.zh-CN.md +++ /dev/null @@ -1,266 +0,0 @@ -- -
- -- - - - - - - - - - - - - - - - - - - - - -
- -简体中文 | [English](./README.md) | [日本語](./README.ja.md) | [Spanish](./README.es.md) - -- SPONSORED BY -
-- - - - | -
- -
- -## 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) - -### Akveo -Java 后端整合,可以使用优惠码:SWB0RAZPZR1M,获得20%的价格优化
- -### Flatlogic - -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+. - -| [](https://godban.github.io/browsers-support-badges/)IE / Edge | [](https://godban.github.io/browsers-support-badges/)Firefox | [](https://godban.github.io/browsers-support-badges/)Chrome | [](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 deleted file mode 100644 index fb82b271..00000000 --- a/admin/babel.config.js +++ /dev/null @@ -1,14 +0,0 @@ -module.exports = { - presets: [ - // https://github.com/vuejs/vue-cli/tree/master/packages/@vue/babel-preset-app - '@vue/cli-plugin-babel/preset' - ], - 'env': { - 'development': { - // babel-plugin-dynamic-import-node plugin only does one thing by converting all import() to require(). - // This plugin can significantly increase the speed of hot updates, when you have a large number of pages. - // https://panjiachen.github.io/vue-element-admin-site/guide/advanced/lazy-loading.html - 'plugins': ['dynamic-import-node'] - } - } -} diff --git a/admin/build/index.js b/admin/build/index.js deleted file mode 100644 index 0c57de2a..00000000 --- a/admin/build/index.js +++ /dev/null @@ -1,35 +0,0 @@ -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 deleted file mode 100644 index 143cdc86..00000000 --- a/admin/jest.config.js +++ /dev/null @@ -1,24 +0,0 @@ -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: { - '^@/(.*)$': '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'] - })) -} - -module.exports = [ - { - 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 deleted file mode 100644 index 2eed65db..00000000 --- a/admin/mock/index.js +++ /dev/null @@ -1,60 +0,0 @@ -const Mock = require('mockjs') -const { param2Obj } = require('./utils') - -const user = require('./user') -const role = require('./role') -const article = require('./article') -const search = require('./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). -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)) - } -} - -module.exports = { - mocks, - mockXHR -} diff --git a/admin/mock/mock-server.js b/admin/mock/mock-server.js deleted file mode 100644 index 8941ec0f..00000000 --- a/admin/mock/mock-server.js +++ /dev/null @@ -1,81 +0,0 @@ -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 { 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 => { - // 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 deleted file mode 100644 index 8fc49267..00000000 --- a/admin/mock/remote-search.js +++ /dev/null @@ -1,51 +0,0 @@ -const Mock = require('mockjs') - -const NameList = [] -const count = 100 - -for (let i = 0; i < count; i++) { - NameList.push(Mock.mock({ - name: '@first' - })) -} -NameList.push({ name: 'mock-Pan' }) - -module.exports = [ - // 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 deleted file mode 100644 index 4643f006..00000000 --- a/admin/mock/role/index.js +++ /dev/null @@ -1,98 +0,0 @@ -const Mock = require('mockjs') -const { deepClone } = require('../utils') -const { asyncRoutes, constantRoutes } = require('./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' } - } - ] - }] - } -] - -module.exports = [ - // 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 deleted file mode 100644 index d33f1624..00000000 --- a/admin/mock/role/routes.js +++ /dev/null @@ -1,530 +0,0 @@ -// Just a mock data - -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 } - } - ] - } -] - -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 } -] - -module.exports = { - constantRoutes, - asyncRoutes -} diff --git a/admin/mock/user.js b/admin/mock/user.js deleted file mode 100644 index d82e079d..00000000 --- a/admin/mock/user.js +++ /dev/null @@ -1,84 +0,0 @@ - -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' - } -} - -module.exports = [ - // user login - { - url: '/vue-element-admin/user/login', - type: 'post', - response: config => { - const { username } = config.body - const token = tokens[username] - - // 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/mock/utils.js b/admin/mock/utils.js deleted file mode 100644 index f909a293..00000000 --- a/admin/mock/utils.js +++ /dev/null @@ -1,48 +0,0 @@ -/** - * @param {string} url - * @returns {Object} - */ -function param2Obj(url) { - const search = decodeURIComponent(url.split('?')[1]).replace(/\+/g, ' ') - if (!search) { - return {} - } - const obj = {} - const searchArr = search.split('&') - searchArr.forEach(v => { - const index = v.indexOf('=') - if (index !== -1) { - const name = v.substring(0, index) - const val = v.substring(index + 1, v.length) - obj[name] = val - } - }) - return obj -} - -/** - * This is just a simple version of deep copy - * Has a lot of edge cases bug - * If you want to use a perfect deep copy, use lodash's _.cloneDeep - * @param {Object} source - * @returns {Object} - */ -function deepClone(source) { - if (!source && typeof source !== 'object') { - throw new Error('error arguments', 'deepClone') - } - const targetObj = source.constructor === Array ? [] : {} - Object.keys(source).forEach(keys => { - if (source[keys] && typeof source[keys] === 'object') { - targetObj[keys] = deepClone(source[keys]) - } else { - targetObj[keys] = source[keys] - } - }) - return targetObj -} - -module.exports = { - param2Obj, - deepClone -} diff --git a/admin/package.json b/admin/package.json deleted file mode 100644 index 39c7bad3..00000000 --- a/admin/package.json +++ /dev/null @@ -1,112 +0,0 @@ -{ - "name": "vue-element-admin", - "version": "4.4.0", - "description": "A magical vue admin. An out-of-box UI solution for enterprise applications. Newest development stack of vue. Lots of awesome features", - "author": "Panoj3)-fTE0aU{sB@5$EFHtjC(<5xetF&*)v&r1y;=_LN zC3CBZF%TgVmz%@NK1d~fFm4FUMlAm5X5?J%)&4a{#dJCIP!g!P_mCcNO8F{zK09 z_ij4l`q!$CQ4`?pVZ`HK{d~B~4cx(LfY0yl*S;G!h5me)#^JUte1k%KalD6buQs$I zUs3)3@&=eePjH~U9-w)coC!Cz%&4e|Jlt+?py@2V$(zA@&-@@*-~J}Q6GDJQ3&1z_ zKYiux-|xe+sl}%Ih9~9ihX+o8r8lV +@Oqul{oWUAiJZWz(}2e}1MhJL%{&Vv7YiJG5XAK=NE{t>y6R2W9rVWC$E?}u z^gNjSRj?SD|84ProQ `iUyeM;zO=iw8MaEeKRq;rNX)w{@AhB=k^;hMst5pUc!eXN^ RF+ z NqR)!`>AyH(&CE4Lqu+}^Nr{bCsf*h2 z2)i+%Cbi;u7XY2=3J1=Fv-!n*uZsaL+)-?AsQ59bh;S1>3{t@pp8D3AHAWPOU72~i zi4ddoj2%jj9UF+fACHcbi-q2b6V>IT6Mr`L1;hapASfm0ZsFqz^A 6?5*Zw&jf@UQ8GOV_w`$><~;$eCDCz z`R412H#{e?MevScD#Dn{!`m{^c_o$)o#gHu?N*aSKau2po^;wI?YsqcRbfwnCOV(^ zI*TWj4q%Y)A+ljfdQd8lOJ5LK5Uw}{YMMO%AQ_=T8*7y^(u8sDP2^_6SY9SOOr~bh zMC3ddrF{;$QJSa#OAVSugV4_Shk+!Psa=J^me1oQYLc!HaqGqDKYP+OY0_&;qkANL z`$~C>B>XhF=&>ysBU}2BGzodBl+!Ai8|Py0R3HRo39~hs-@;;LN+Hj!;$p(6ZAz2Z ztX#wEvTDua(!=iTU1qJ*q)8dajfX|u56hOm6vL@MhtNIGKD*2Y!o8EGv$-ZxRyNZg zIAz1i-q7TT>svq;+2c 2e! zE}vH#cWa*i29Oq{$Kh`(lV(be2Qo@ToX*^ZsHW%y Q!ZCi$$4_x$r6o1sFCJEcL;z54 IKUF_NJ&qe#iN&@vtf~~y?`N1LmMP&K%&uOU*B|ssl(geNIWHGP?N;axY z9-WpU r0`Ji|DUPartv)m0qPC=1Qw^!n38BI*_uewDMNHvKp`Z zb;G4xX~NBA<$b8K_PKJMC%pC642BXB@2@HvUg>s*^N ewB#v> zSm&z*yqnXj{8eNusQ9i6AGE|>DWy=kUiPl`zPY&zPuG2UvSA9t+0Y}}s?;xFmim%8 zZNtqU??mq#?9rB}^j7`WtHfP_mqg`-IP8}>3Pk$#oBa*h6RMunRFV9wnY6?&P+=cb zp<^JbMU;bX>{z%9a&o5EGM3B8S93I!CFwxw5a}g4)f|4cRUa ny}?u;WLbU%yQzx^dj7|YKzC|1y4V?FHM_0qRDt+<7#)-VDiD;G(E;V z-R)I6#_Gjun-{TmJB_a>6B%in=nfn2S~basG>Mls@eed FTJr1KNWQkQpP{f{t9pn`G|JlEr@tFWH~wCR z_;9C6!%g>)wj&AE;rqDbvs&rQU9q{gj*z(y^OKIn7bSsT^~OI`ue~U}n{J}gFSOm( z89&!aw*HLhZr6L&E;5dnM-g2?WnDPfStoR*t8crNpTi){#;KIZ7+k>%Yj1hh|MbQ$ z2cit)UXkv7oo-l?wsA!F2R92uJs 3l~834~*{Mj+Ze zkf+}76)^9gNR{Y}yq8#f&tLuiB{81aFR+DozYL}yS>10N`91*k-kiAK>07@`#d|mJ z0cTrp*NXl(BLk?#eqLa}-y0G*0uJ^b6u}JMtsab&f<#w uD`$LnWE` }$uzO7 zKEYu;@jY^aJ!fKOWP)vRVw!l8m1%NJeUim^awu|=A!qXauhEhAv9riACi+np>8WtN zsn6b1h&>S9-sEw`)Yp+I#P2C#=_yf?ab69u1h3f9uVHBe(R=TPlo756MSelgnRThRWfsGpKc2E_7jqKdd++K=kBNN_D|0YKIsmBGRXYIq48PL z?(>}Br`X-kLxG>2GZBuXgRj4X+}{p*c6{;w_Jx(VU;uxH0sX=uZG`1qgAsq`HlY6H zVi %QasWHAJHOoLYJ0|5HBn?pF%|MJ*@wDo+DrOn@=d3bg4|b F@I-qUf8D1?l;QIC2PPW&j^l#XGod=TKp;iOXjftY%UJYdWyY z&vpzon`^dz1aQZ 7R8EpLK>lChM$?$mMlU!*!{w zmBW5IO2-YqtPRU789y0rbk?R#<*NE0%8;=YOx9+^7~*a8#u%6&nPF4aa8tu+Gn;fP zHJS^T{%3t>d8;sMBlpiOI2q_2=@$1qTWRMy+-0ZEex1m%6Uw~P#<007#C>#gvw@T? zhGDl|W@8E19nRVqU|=&^bpL3$=X1WxYrpsTPs^Jz {Xrf=vk&3pYtZCd zH9m(#j7Q`#2OaYi%GE2kvacCqw+cy_gx Nt{+U%pAB(8j2X{f-a9ihI ^oJKLm25%_Gf&$Kki_m3e4m z1QOr-VU&Rh1eQw u%@q%~O>%57OLFXElwgJBd($d=WafhxX&M z^?E_>>>n1+Md@h?P*{Y=TSt<+ddnrG8!%8LzXqUb8HMhYIc@+=K~bd$0~{KbTGc4X zMH){Y+tg`85fmQM^_~@88s5;~$w1oEMlsSkSX4J%H8znjG?T&bJ-v0lu)C^nHGv_z z60^0vba1R(^6|uf{OlZk*+lshJu`bnSRIXhhDTJ^vi^{nJ{Ure{H6n!l@EJ`aIOs% zi0ap%lXRweMU<(``@;~2PyM=fEfiogV3BBkls3X6Ac4>CIjt=6nE&?aNL+5_Xzl}T zdp#}+t~g>)Qmc#VL-~&?>ZKOBjv|v|`Fb%-n{Wh>U9E?SEi|QMnJduQtGByyv(Xo^ zV4rwrBZi&hak aMS*dHpbd^w63OXu W|y7$(YB_81#AEjqh@>a(aK=_U8Aw~mXnQ%e6?)N zj@BPLGj%o#V;ybh2aCNCj1N28FHbh7%Z E@CwargPg|3SkOHEQhisSuTemib|Hl zc^aXH0my#DN~G}T& t8s_ z$}g_u+5QL4*vfSiR(?`MybQWa8#8F8UbxB3Mviucqgm)E6P-WodEMuZV1;8;*h%-? zNA1&7QW2Hg)U5{|h2bpsbhsEi{R0Hmq2@0DC_FGK+L*!HhWvR ^39 zloFf)NAGgnc`bS8>f7>^Hjt*!u_|QEYo#5p*<@L}8N4x7!kPQ>so>L>)9;KbZ^9iZ zc+$(=2UW>leU7N9mwMm$`#6c@xwp$#1YnW;Dzn||#@4CxIp1O`K;ZDm=HgHt79M-Z zv*uA@R+|{5lqKipViA^N;(GQgb#ZgLK&{+xw6)>?Pn;=JFGizN*|C(U+v1 7l&E*LGzvIkuB}#nV(m&|F7BxKtMZi^Xlb+aWHCDNQ z&^YWq$JT1R76aa@1D3W)N w)uqcQ$jZ`zol9Uzkq l{L(}j_7;?n@)KUB^-}FN)arkbfexg`?@ZqCaiMmNGVMY zx2h`?x&Ik Gf^iwy!ixzKW^P&lL1dUh`bxZB)P>PVv{76gP#(0iG1cOFv{nm8J z 1ELe~<6X%W!4$Mf>CN&0hwSdxcs6032yRk_xU&9b&sQ=ZRI8zfryytlZ9 zYs-@~abv5$;M#IO-iLsDGbfPJdNVhaqii!TQgnMWAKMMvDoA*l_sYeC<>tTnX> lMb*z@XI%-RU4 zo)-+S_8L7? mHBo6gxM&|X=Mtm$^7FUTCMADp;T8}Psp?JYtc8wBNEG(=F#<@# zld`f?Vhz(Xvx_24Q>_b%-vuBs?f^w)gGY6UJBYlnvD1Kovc&@w-!<^CI?oQE92{3? zaP)7R_>3~`_X5>@nHTBq_4~B2##J5pZESs)tu!iq@0hXs!`J1Ld1QUm_T}2<)%%~t z4?$qnZ}m65MF|#i075D~8{M!B#bEeul#9pYXX>bP)Jwe7fjng+#=AIYDbMhi_d (Bu+XqGr0Pn z;vBe9+~s`g3%#cGxTjN=79@Q~TC2pSt a7I{Ujx`-R4N-)dvlAxhJyqK&qx(a?#RC%;s zTG(9}?e=zGRgTZ$R-(zo)fT$FvZ;)=? x6ELnV zC|AFQzeD7-Z1@BOI}ik6n;NQ#?&DL*9{P1!Jk `JTlcx?2VEBFkX|B_TW=?~tjt zhjx0BF>St~T3B)kmn)CO;zvCJTo~>}XbIoZ@Rh|*8}m;n56M5!IG|O)sr;ZKh#Von zdeY_m_+sR$QO^Vs>JehFRtrC)dPU?c%&I12*YnK?p#ome`qrU5Z;sOln`Kp(4qXgr zr>~pNY9{ociX@VEYvQW!fPPL<;5nmJb&vMPeTpJOwn7tc^mxues%2dm-c{vX(3?EY zLvI<7kx3H8pH#Q)x)*c~;xoO;l_WtkR`nimk8~=HQBW=5pKu-i_JWO7$x6e&l;^f^ zMsIXV!)DvE o$ z@CzRgdKL-M$$K+%g8#cht`(QdgjPy74oG;_tn)EieOO^(%N7F=S27#Z^E2BLV}rhy zVw}luf$$8QX(+GBJo{o1>Zr_05S;^NufPL6#K_a$#^6cO1(Irz_1&hA#e*xeFc6&e z-4qs3oOmopVKoTmuFL`JSE%Ec>4I?~L9uu+G8&o(Iq17nmZ3ry$#)Vl=+JjJ4X1ui zl0To|hm6D$yw+c&ckt++B6h@ZmH=DF;@}jyMer{n5E&6H9WV0e7EdzaiqUlkD4LKXxAm1(>_qnPgYUSycx*wv y-eoTukEtVxI(+W}js7l$8O(|Wbojm-p2=$}%l8Ng{vFfKXy&q+|qh&fx z!=Ea>ev})Nl zC?R{vp+xq?_0}tA&p=X`F+PTk_hYq(`ucO;S>DQWp0_XbH? zWge+f-|pbz?g<2T^qE#b-xOuPA9;lQFhtWf`cYB`I|NL8`j*D j^I-1yP>ZPI|3onQr>+xSj4CXkx%PO zCLpMAVu`Y=Vu1qXM{FQmmTeMwTx;Tpo`2wT;{5(7VNcJ&P4ZV`&&f49QwL5swTR@^ z=!MIsS!LbS6=n-Ig}7Cp1k>pivOkVNmAsHsky50v)m1lGDN*py*;Q<)8ENe3+g{N! zcWKd9roEpDY4POaYQ}%2v-q46!S%ycw-~?e$-033ZgZqrW5QEAG8c)HSx?3bFHP}> z6PD$L55Ee%WfdX%T=u40=8>11?No!o!u)9ZbM$D3uRkfnb`v$w7^Yx-2)ams U>^S_}tJT5v-> zZ*dj=APr*{B V$k;Ij)YggmwrtO&)4fk?a^@SM({G2%m&l_Ieu-RlB=veY-lg3{Fga2!c>e@JBqq zY$#urhS6>);FI;GVF}Un+Hy?nXq$)rDlZogp_l%({6vSE>bGL*lC)}!gNRF<81N$b zooQffks)24haSgwq>^kyL02+)&eQ>h5g{Wacj9D6;RmrxAIw&VPZ$^(dz^ha$ujd` z4|YJHi69>O2bG!;em|In6?(7?kKC!kd{MoVKUj?poB&VrgAupSCK>NeS#M$Y2tar< z^kScs(_cU!-aAe;3*2mWgQM#Nl_7*yw|xA+#Sk0z13atm9?WR$n268WYZ*e;&Cpq% zI691iwqJ*thhfXDq_0e^Fs~D|I73{>5en9no`ZrZZrD51q1E1FyGM5CPd54$=-Wsi z7ccvLs&C(agBTrmMhQ%b#beh?5r7=utdP)8_Ale)GJG(+stNp(;<#T2^=w*i#m39Q zSEnH(2Rwg*5u~i31DA{&sA?%GGO`y`cT>2DtE;DPYe~YH7!V&h!T6dm9?Hl-5SFEz z?sYZZnxx_t#Va&n*?Is+GXP&=x`%t46G&y|2S1vSr>r &9ntRA7#-0&6^(B5=<^yEgFQlNrn6>xbUI75>0CB_$WQhf%~GcRNP1 zBJ!EtLX~a}I(R>#&Y~JOLo-A(2impE(J$#j&ekSjgwrfkkG1X#jvd9Y$ #J!AqH`8@9%Tr&^<(Hi@WFt8zu5Pp-Q#frGZ=&Nhy@hIUC zZBmIe+15_~#s=c=RT* d{TadFkXUlvsQQ34NyYy}3tv z@cM#aG<0@TsI$*T^5 &C)Z{hggx#ahM z lis_`FAe5I+1c0Zo9ytNguElDP^IGu|fYOcP z&NY`DL R KCTc#rNg{eR^g%%;moyCgZeZe@NZ~tsf>T(-6Rlu{@+obmN3*rXdhd=S +CL{8M0fZH2vo`R-zKVgsA3o*9eyJaV%CqLY9ddJ9`xQUPX z==5nQkyqh$@$4)ChnHl?r#rHzYZFCFiA8cK5&4fC%2jTEQz;z*?|y?5to?ijY3L=1 zRNNtf5sHlOkMafKYBFlXV%{6?lnp>B7IhA^gziWMzS;1x{B^>1OGaH+Gb`ruL<$vZ zydX37=0c)2BE_&v5`HM^;cnz>gombchU_zC AnS;dspxptN<(oM4z66cj K$eR-$q;3fvLCd)olF=>JAl_Z+A0q;$oQ96$RE!QRkcP} zTi2wY4inXcO1}r(mgvwNx8V9fH;(X&j@HLIPB!db(e^BDbg`hmF#!Lf^m?DEhyEvR zwIEv#ugMN26&uIVSX&t37OlK2=UB^~2OY7{bpp_0EKI3qxqoS|^LPKvrLIq~aA ((k=mymXo6WoDg&0))xU>-Rp0%Nw;0*B z?8=Fm*7ksfq&rKP^xJC6<2DMYF`oJh*7nUp9{2hqHd!$YVOvXx-_W)91%_>Rt3UXJ zf?9o{KR*|cElM5@PLqp5h@lKH2pOBBlnYE;^7oxj@j&;FcDYLQiMK4!0G%2imIY%b ze0t8_*B&&$i5-2vUhJHh0H5wQ-!t9e$hfBj-hSZ+o=9dp8kGf2#v3*5Ke$Kn1dX<> zrH4^WwBK;N@s_Ma7V?;^OHIHy;O+z!o`x15EN$^k>&rV_r^V%fj6>ifmt5vw$x`I{ zK%j}NG07vc#%YnI=kSc%SN1b_a6QKmaWocR-2-grcOy)Qi3!jDf&5Lpo8h`6d6Z3q z?~z_d5yr&%)C0=>IKi}|NK5s6+Ao9sqOC_!j* 4U8yq~Q@kN(CD?p@f>;XTg}Jj8Av%WQSCJ&|!n&>}-28fd<<{DS~9{Oi#By z+^8mx7`Ns4qDZM^PO2TRhM*JeP*%6vo=oSI<+#%XyXKOK$U ()A-gUDj& z;BzIn;m7z}?Hf#cDg*l4kE1{TDwZWwo$wE?NjBXrlA{`)2u7Xel0}s$a;i>->-~*O zXdq>e_*h8l^G!xxF}xpA@)>6OZ_x(fb+qyGe`g5(e= oIe%oIRfzqgA zln0mSRj~vf4PEP8QpxNJ9bDMW`qn%50cQ}f++O+h;BIoyk!C-=tA~Gpr56RcCW!pS zb$&tBi!}6MI65XdMOen$2uQk)HdtccW@hJ=M5h-T`TCVsyCLIjoG5CVZIB^u;gl^{ zBN?bW2;|Z|q|sK<05lCxqF%;(gip }%`WiBeDeRYxX$@<^gS@YvCmi+-QRbx zk6ih7@ngno`}6Kk>|U$ch#c18h+$MRWfWi9bB$W5?E!yYpBV*gyDju?{ ?{k587WY{@qm$Egj~ zdnF&MJ|?#`F3%YIBSCB%@baN2O}_KD!d0#z)hK){Pt-BFX-1p1%#uWX-(=An>-mhU z#qBRSFaDm#ss!tDw(_cC3BRiYbc-az=MJ2N90?rrgBMO5y~#q1tG`;}V4sU`m1WUu zhTQ0F5EBE@J-9erF3m ADn;_HRjE^7A35b11wKgajwz9^PQAHZhr z;~?VH%?xi@#Y>pz@P?U~VW4o#QlP4>E;v9{c7`!T cp$9Hp{}07nbqk+FJ8RT`VZWroq;;V{aU`B)A*pnzB bG)v84SP+K2lk9pZRW%0)0WoZ$K?Y?7Srq5_ <83~EgFkhP ~^M^;6JcVjKLyCw@jQ0<_+!F_HX;zzd#n97Gc%d@Jhsj9&l!C1zH*u!XOI=?d& zLM*SU4YqMLILz1kYjDJ)Jza>F`Ud&QyHZzmSDxFFQ-_mmJl{jXOhUXp6Ry8A6eptD z-l}|jXl&sBB}(@l DR{Dm`%bqYd~MQ+aLZtVjus|{x=?}d z+G0!YJJmuT<-i1NSQIsE#^ =-! z(lYq*qUVpgN6+nveaP(;LlV*%`RJ%c@Sv({udZ${!_{GkEO8!Lh;knb?NO+*dLDW5 zU>^tSC`>CdkD^%lJ-6ObxNiHy5hlk@o}`=zLv=qwHfp8$+ZmOSmS!Nxn1??FcdW0K zI*2-cv7e=%FIo$mPwY|hfcor+-0akZ9v2!SL0%im+Q&*ai5V29J&y5XV`Ka&t|F~d z` -d)JgzAPg*8#1yYiyvFtF((h@HW|Eo*8?U=( zpE|rOvbB$uCzE1?KyWfiXoih1Sw+!2Pax52myOitviH$^PRhuL1#M>O-*m2r1svjj z;v-IJCmBuh9H=itf77`RBa5XrRK~sLPO>gWie=89$D}-ukNXvv2jqkW{CiM94?uyz z|A)!H7MQC4p4yN)@cO&J6ayt(Gfn-G^_ReOyCb+iZA$yv eISaN>g{C_EITolLa4&K4PtjN>#!o36~NTD#!7pw)AZXSg672@;}vc z?U)Q_N a7GzT&q|b>Kbh3tIX{>uF@lV<{n={H|Ee6 cYn=pHCARUqN;!YdOIsnQv~{@e#f}XL!8` z9B_7r6r&EiJrW@ji8o%(|GJ2VeJpes-q%+R*_{*eJ3zMf;_WOQp{q!PS`SYHKi3@y z$SJyB*shK*Ov(lN{Br;GfPpkCgV5NUi`Wu^^EjY~_WL3bgYv-dC?GfBu|74k7e~b_ zreGt>6s8cikI#DEGVL>=;Ve@V;~`v{lg2RKTH`#JQ2(GpG#jQF{D6GB84~kH&S?dv z2!Ae*$6b-a*=H6|TL5X$Chw9zf-Vm0#%a(^#yLqdCTecIi z$U6j59MI;=*U+$Llfj6P`mL-(Br~pT(vEGjF}JcUhE5#}3Y1;sWyY_|t>(DGr&DTw zG&FF?dM6%TMM3>aU3Fkoj{KPQ=7#wZEvJGyFP!v2&%p $#O4nCv&my^%YGDmn0;^rjc=YJ5_N|E@3sco~r5 zX)NeR&($!Ex^O%bg8blc^ff+Xf(>enekaY7KL28%DlI>s3P@ipM?U`EJ-;F!ZA3`+ zM5}u`U)@FmFQ#`^?mMHSPbH4^wyR9h4C52vf*!VM?Z0W@ws-|g*@#6ivL{5Z?;<{q zDJ>W$=b%@oxc*%KNx`%+aKOcnX?M1BDHpp yVt^XzUg5jb}3$(h&hYu^s!r3~4KGHkl ze_rteQ)9a}r1`xWClZg4gWaTFhXG8)xzGp7J>+SJfe7_n__M(t%GSdm{>WV7SIWJ# zbBDna&EE)|#KG%Fhaplk%w!Mv+c|YHPBL^aN6RpZH$`g*gIP`R$vEZMD;GnHoEIqq zFR=JJ0)YTt9+gAM`)Q UgepHukS6;HTTzgs6Zul8h%k56_t5+00n)b}*^3>(mAp6y)A@A5wj8sFf@x%MQ0w z8L>F4O`Y&w63SQ6Fn;>C)P_LaKT{jU;se(L)1RQEb#+dX#Ou^X|9)CmAG75BP&G?} zli+jLVrcBp|6u1Y{+nyRyU}s@^&cs0y9!;35H00PgjxGvu07I}l2D!nq+11SD=+O{ z+j)Z#IsE#OxNAHAC%POJSg29;^%+0hn+g!$NBi0FlUk^PKvw<{kq;Rtp~32J??)vi z3-Ngwy(QI8xpwW-!ZUob^GYKMY%)vAs$Kag3#}`!U3)$_^mSNbOSeH FX1Te~+~?15y0_zU)3i;NPLli0(Inmd*fM3DAv{bl zWf;x#VtM!#Y*HmP=lHv;#m!e0R+3RaPE)5KK{@ZhW=yDQ1r>+Gl<+*2nCvIIvgNAP z?jptDf()|69h69Zj*D519`N-(&zJh-5}gFH+xBA(w;#^(qI5PJI&?iJYi6mcOQai7 zG-D0STmYT}RfsilKZn^+H==3Jg~r8#4 EXa(F@tJ~&lvE#@uj%9tkSe61lHdmwj7-w z5PG;w6I;cs;^l?fd1W^6XFmDhg7vV9pAYQ)TSs&=L|$z4_l6<>{>GGpgU!eCXZ!U` zR%gIA K_a6sM((s#dQ0gmfY8BiqAJP_16LOTekvL3ZYI(06KDFLEj&>XBE zq}%Etn-6Sm-OmX(v@E5KwYZW4qPPX*A}sxf2TQW@m=N^&ZrjU6rH1|`+(5I}Q+zXe z$HHrQhaU`SUiP;EtELEaSIlCp#qc(g3{JLJ0PCHF 5v5B) zx`kor9+2+t?sfoaL_lvrL>amp0RiPV?!C`B_ukKWp6mBF%yq5Ln%8@+^)(acVj!7z zVW%h<8yu=HK{v2NOO2I56gR0F$2ghCBf2F6C--?c)*Vo9Q=GR4hEwrkKV>#M9|5{e zQczESuN8Gde`i_JgNjf!Hu$rUaqMmf8bUVw@uqid@E0xYxc+Ay?bsInm;Ioi*$QVz z&==>MfF{A4Gu5E)dHgI|ME9f3y`ZRL(iZ;L!LHu7WUkjeMO{+Q&%u%4M?Mo-3rfhf z>~PVJYkL-MQzR&_)x{TF{x%iW9b$1L{;}GAMrnmjG9VmioFB*gjT@=kN!1pO#U2dN zIw_C2)7()e8U}-}pdHdmRV@O>@Yl|>m3i3t&+!r}jUJ*pXb>s?gWyfL`-i^6s4cR4 zAJ#Il?p1rwIJ?G(SJ)r~AGID|Ti)t0*^MPz5W (- zQ`pVM)DDuKRaBhglpj}I8UH5P%#OUGs>%CKl8aq%bC=8O+A^xf?stz^>8N~xK*+#^ zD~vH@tn )euC*X>aklXsqXB5lL^uMk=PR>b-O01YPu8$ 95} z)n)kGYxLnX9~!F6?R>HaZJ!wF42>4ZU3wPZvbwpQ(RcA odb*{~E z`+K(v(ow6+4tjpjseyv_8j|smuVM-R8etQ$*;@hp*vKd`*$?UxJ5`u#-G)pq2LISk z=!+gY1k3uWZ_Rv_xdvYNDIBhTbiVGr{3Z68s7@*1;{83)>+5zU+% (cgPbmMzoh;%UEg0H()RQRj^?WV{xq?FU z928b4s9s^4=WcW{2u#y~3b0ZGCi%j0>H5lTXrCnBE$~%32&$aGzC;6UnVZVUNk1jp zlV?xd>;)FLAh!iOkJij;g-FLVh(>$x=%(uBQ5DDgdz{ Uv#8dKH8Ur%sU=`tvkx3`03=dr zaAF0kG>9=1+G^Ghn5mLRb|ocZUJVsvpQ*R82eP|zP?KaJM??LesrQ>JFprE-ja-qA zn^YN(4#nffK|n=nm18bZc{4W(0`~hVljqZY4UO9I7)ffqSA92Q)n;6Ocs(__=|1AS z!E8N~$$)t&dzY_GYBsFu*JA&}Mv=35_nBWxVDDPA*F3`#nGz8#66?~+rtcgC^r`*Q z`-KaMm1cmCBl?IUUwu&;h53tw0i8IU)|LbimonEB)}_dw>oJ9SD4Y|rZg!=x@XQ^` zt(MRMi~IWPC3S6X9u{ZKi}NJu&jjGl>goagMA-h3pMvRLI~Tl_Lp94MVfqieHhm*% zIw7<1^}fdo!GV6%<%uQ%P$+4o0y+J7k0RM{Zea7p@p|p`@2j(Yd|aLspD _8w2AQoyw~}iNISyj_$C+iq ;Ntl@fP<5ZKQ9=CnREGFUeq@xZ7`aavfE*T` zl&pt%WQCXOHz~P!LI{XmW_EsAxse*9TS-nueN=3GaaLVJyN4)Ev#VcvN1v@IT_`Ht zrGM;+7^KHNylwoGO4m>j_OGwXg;AMQALo|^XQJm;Hdk3ctY>W<@D9u_L>!)p#wBl@ z9f($6I{i2 4<0mLQ8rsGsHR VdH51td+Wkjjc!rWB-R?`K$C~IorxwbYCpat>4pSz&Eh#u2s+0~&-)gd>%==WR zln>(fmHI28RHfe|`^L@8;re<^fP50%(Wqh=@Wdn2Kxx{ 6`5{gv<)-24)z4%ob>4&Pdm!0ld@9Ix zp{6Osi_@p#jhF3G7kqPirt#ICfB{0vv(*o!@p4@e7Z<-0(SEnzohiKnrc9x(DG2v4 zxe#LBw0j})l4T&tEseA t__9XoX>jd)6=JF@vqhdHbNc9mC90G zSmi7W0t -4n0RlA4XjR}OeM{3sRWD^6ex)jT;i?dafb= 8jIsiA2aIGcOjS=Dz;_DM< zXPtR?%qUJG;a1CK>45maha_zhl>Z>%4h8EaO41S3=}H(W2ZEG%9uz)o=F#eRKr!C0 zbZzbnL?XllpUxb5P)LU_xe1dR<6kqIKqPWbsVduGs{CDd?6>x$?wIdosv_f`8vMy* zx-D)ldvzXiv&%@a3fHL5@J*6I78reE`xY-JMt@Ej=#gJsZxp3E$=e*-uGL0Bl!- zXM^6s9PVp?s0^_eRgIZ>ot);WdDy+Gj@RgwCo(xQQ20BYoI`$nQ@ b7=2n9 z{8K0V&Zi(uj4hl6JYY*Kb3qZSoX52}mqsk;I}&4n<*NG3@Qw=JK 0H6S+|POI4~Fx<947Lly+|=W8@vN>waw;6v+e6^lw?nbWoDUi@_ng% zLUl+`OPEbliO|%|FirSPU=24IsW9&NkSbVb1?RHseY`iF+O4_<2@!Ztb>oe{po5iE zHFn(5;ARG&{~CGO&)x@`H ?Z6)|cAT;Ox<+YHQjhDO+xf3cf%EI07ArJte z!@mSN`s5+H04jg{OCXY#5ucr3TE !-3VKlWugKRXy0LS*dqXLtnn%LVt4ZPFz^K%?e4v)U5AucWeV0XZF_`mYSMR zufztDch0*Dj~=|Z8FZ$gJIohud^=?H;OQ36B8RG(*raxd ze1j3 &YHokY{*C6 GL4`s@~s59wX*AKSz2H^;8)6t8cU5KMe#2Ux~;E; z!Di$NR|R`I*gMh>pts`zEUIlb6t+F&o48HBmx#WAIDB@zbb;x&6mS70WGAh3?E|^@ zFpv5$ncXz_Ata9=m?!UyJ+!g9ZV?7ZL~w*F9F+Ej3yg 7(yO?D0TuzM+amM}8JNMG#z>4O!>qv?af_{Y4F$|)iM zcp=$MPl3K<(;D^?@`?13zBhIyb!+5~9p&gmmmK6O)MG9Zl<3n_&l9UeET^0h5NB49 z4~`KS$l*Ss=P!7ujo^ qOmR^~#&EGP z!W4y{j=_xEN`{OY5q0!E3aa8pz=Z|-sh;iB=N)Vjx+Q_As@X=uT$Qfb)EflDYF!y{ zJ4_48pR!vNLWJ%$TRk6fWFADjiWqN+f`ZyjyO@UFtf1>fnZI{@Rr4a$r#cY$6=42~ z`KO{LqT7Udeh6EN)Yj-tk*V5&9HY^D16)m)(EfYqD ;>L5bi5H?ljK@DqAQo8s}w1)A5<1G7z6QPXYu&f6k4NlqFN($No_ zZ_AT#NsWyf@4o-Ut^C}T|LNP7A79$wILWWhLwKVP_dIA}_FQ;w1tvDu1rk90AN3Lu z&sIBt#l5Q3L6Ol|)MCX^EC?4MsiO??eG}0Jo3Rd1SrA0xWUoUrXD)g-1R2;*p#{`h zo+LBoH3Wq1)4DSCW%3iCFKY%E`OuiR=069tg T&OL^ZaSD)pC__ z{nGi!)6bbT{dKio*LR8JuSI|V+$gR6eX-NJ|NHV_NbLIRWaicNuk*hf{c9R$ATh$! z7g&@9c#0(~dM@fXb&Nc>MJfE^s3V$>ULbU Uwl@QCesg6Y;_Q3xFO6I(@t^HK>4uZrZ-1v= zfZyG|e@Lbr^Obf8&@1RDPWm_o$JWPidyw~5Zw#}ZIoYQTKI*~V2nYLoYU0TO(e^_! zhm$wVna*m5e^C+1RAV-cCK#vRDsLlizx3Q=fRl!|+l(sqRvP_Y{}&Y^fC6j3a! zC7^6_LyxE;D;E(j8~l8bB5nNNOAAE9qf{rZ_|ihD%&(LC=N@lTq`Qg%`LYw22~}A~ z7JWkY@W1uZSO6sdhqMcCcITMOO8%0~U26W Ah?;DZ_q nsk*Zv-+{V@ICU zzw<@=j7~j+p )CJg@FQMziXUs@O+M6f3IJK39^ZU&Uiti+hFkuTpWY~ED`n>NJ^u7my1d04 z@tl^rQiy`4!j%m7ar={Tm~KY3luA{ZjeVfwY~2v0N|1}zRP&sWSY5X 9|9gJys2h)PnZ6&1(nymynbzezTn7VuoK zC561v&adG$4>BCk5p-CC9&tSQW=QU@8*nvqz(K93`f9H$;uU3kxts6rU ~jbjubgXi2B?D6U_7-vu#orh&qFV{AEL!ZkQf3aW;@rRcF= z2rd#}QUn*BI4kyRoXGj`a=bzv!?HJ08_At0n^Ctyp;v E|NQeeKJ$EQ6Eb@Z6B7gB1p9 zNX7;Pcu*c%81JjR84qZCS}x$_R6#_bYHTzL1hUT&luhLs5%OkObG?KyxL+uN;QIF> zLBtUJz*qIDUIhcx_#mpf$ZCU;q_+d4#73yVuiO~HjTC0%=mS3-oLF5)sOKHwZJ& zKhHD-eRD-uHuKq5Ce&r?UxsCFJ$i?1f77-d);63Be?>XpA{1HWZyX`U_RG~=jEz8V zT8NoQ&lSN;lKGc&cTNG~72mpnF{m@!zp@^(lG1lLL_FzduSZaasbk`DTT&W(4KThp zTAJiP+JvlfAOcE)r;cHA1krA6D)AhR6iNhche8yFy~n @HVmjU zCSvZ%-bHm!_FIH8(Y^JcD8u=nAufKD>=Htc^=J5tn<(>ZM*a@Rw$j4NJfAItykSo$ zseg^x3Jig%gogy;TA&z1VNZ&^hPb}%;g|Ek!^A9|qdottnpWWW+eQBcV(tCGFJ&t5 zZraaar#>Qg6OPU^xG}2x3>#G^3mq=}zf1f7FdUq`f-ca^aUVsCFrKH{2>KzQO9W5L zgHC|&5XICI(#^9G;QxFs?uvydpPS-zWe906s$Z)hIDXL}``GFZUQ4{|1IU!s@0oFg z(`)wvSZAdfa>@dbpU~eX*Mn|QErtag=Q9{TDdrjZFF4Pel-Zmy^Ne)pKSv%_ZHv zISypPD=X4I#@< MUP4B*a%pR}6U_q$?P^Y1hxWCAy z!uBggU3>=-ar?>20=Gtp%I{YIldG>RBXt@V)h>|qtFNqqNDZviG)zI*l#e4F{cEQ- zsnpzx#MGzvA+Zid@d?jw2aR4~e~Ab;VN?EPwJ~a% U5d}?=zw?|v&W6su3w&L5wcPTwPvmXQ#~G-tpT!*^pzlg z3-14~a=+Cb#WPkg{r#W&+ZCxp$}TeS#3HH$%BK$4Kl|I7CaU3t09_(gNcg~?{q5U3 z4+}^D+~#Hb3qhD#1P_C-xux _FNg jr&?ddsZ!>@+j1LvP3@6y+ObEYE$PZVp_H}{mv zCAiI#xN?sqbw0fn!r$2bUeVkq1uUmlC03Z3fA691z~-mN4{F04?_zh#TkUcw4>+VT z0BU#oqSpBj?M3ymf93HpP*}U9i+c8v_LjBK7?Z=$e2XY zP{ldpLKamIABHmDI>%8kCf1on*klcZBDm@zmMBD{CRs^<+-ZGiu?$l#5$f@@Wg5i_ zxJBTd0&z 9{@CwhP2KY+SJDEtUlxKs5R;l`cnfYYX23J73)zN_! zIW;ofn(47l{Ys_?Gscq9ep+KS%Qq2jBl_CF4V7v48~P~ky*2=l5g{sJ`|`~%=hCNt zg7)B41Kn7#0QbR)vXAGxP4bXYJe2p}%Ci$;WdLM{6j$JLnT69z$d@$@OF^Y)$ g}jD63v$BY5T~0kJ)I)LLP2sU z@0D2}gnTdvyNu5 z9N<=*#`#!&n`Gg0`Miw -Afs Vmn1XQ6JGUXqNw zP| c^w#2u zt(V;VY657T7j^MP|5F01izybi(HJwDJ4$IAU-g2OkKsht6FzCd#d3!#H8ejwPBs2s zOfGO+EC26hT~@p;|3BFKRyX3mh>Jtj6MTIB+{Is5>>o1`nc^h)_ +mxXV}%Stt5h_ez9FG@Vvn4)tUbcw; X zlUgQDuOB$tB5Mbe+t3QSTlV~u+NzQ7UTln64zdl#{A4~lKCe%`m#~N@E?FLl7H^Z; zrD6Wik452b@hg*6Bh&r$QE;E54Dd<8 f>Odbf4UV8k?^ z%UhVqt}=e`aUcapoO}(`=R}(eLli=bN%yMAm`;is#{~CP3jNi7J`cWy5bFv#yRj$F zFf%<+3HO`&$>6#&c;DUH+y3W4sVt#9b$=HZGNq}&FQJEnueswd5u?r=tF^|>FWOFS zi!YU1vlcpBY))NqDCeiW+01FqS&xr+sd=$ZqMxJXjCPFEcY=MXnQ2l3O2V-m0(~?Ejjon#zR`fQDoJ__S^EuBpz-^Khg@qUXcG z!tCB?cPiH@Qy7hP8ra5LpEfs~U%xJ&jO+lz2BS<&Qzqn79uD&oC5Cg6u#_N|BScR< zmmvajhpc3>r?y-$B~i3W^z9tyBB;g@92<4N#mgc|PP?5TR%$T9idp|VmM8K-)PYrU zSCS7e8Gtm>T7s;`4)W$zpI2^Hm^OAf^VX8ASvLQUPiQ8p v04GL$B5L3aBcT5z ziXzK(MgS>Goe!wCY8v+WNdhP9g&9+44u?qQI!A`bxiQW?8EsnR5g2{rzJV|Xcta4; zoAINGM-Ru3KOn&(CzGmvvq3<7Nmzmvj&BOTf6RN3GUkOmpd--job7#YkHGapAH3~! zhtfM#y&L5<#x#dp 2kMi{eN`&T9hrC!~{f;x3$v=f^H}vRvK^S25&T~ P8uye=Mc~fuTddxDEjx>D zO1HOG-4=gsM~HF!?p)`p`gLOgEYeOtf9?PJ;PB2=z~oPS4t_-n%Q75eJFq>snKu*) z=-Cc@?roCKK1>7!jRt`fScsE#kvfhTFkKZjQ7*hs`djUjQmwojI{Z!KYdF-PN)U;k zbYFJ U$* RlXMBRNDcl uvK=%2(E!lm{PPC^@&gfN^aQz`v(3|$yoJ^%p|U3_(FEoNxW;5zk}*QmP)h}mO2 zEU^rVj VVg7S)@Ot);BsEUTzDi2_7V|xrf zAsNsLN$%+PFb-`2l)W3XYDR_kjZYf}M`J(ErgsemPJUUqBi0jx?=ux5=05=H@d&&q zwe{Bi4=%Cl*w&w?d-hvF yLTnE!WAhc&(JwtfMq%~HMk-RA9_6B+;(>{AB &1L=IBp8m6_ZZM)#G2{m!vHn%-bw3f z8FHB=FVEp+`cH|I=MFt-?ew2Xb(&ih{`L4_eSc!o-Nsk!Mvs|5tP&TVpTpX|v3FEw z!uAb}{Ud)$WeOu2d$ZQ|q)2Bz<*UXNa}2tYOf3yJ@G?D$Va&AVxZLm*{rOaNleHBT zGeL`MvYV_heCEPJh;*Q9(wa|vUECWquSi~X`=OlFzA%~MmFUf@w&Io1p#3ywY`f^j zRK0s$K=wOV6*gY=^*wNB#J);JVB3Agq@Tyjk0oE3{3i5e|C;=f{zt&OU+hb}V9mha z1757q9jI;iwXgiujB)^2P$nk$DBUzK1PPx7h4O2g_W3iAbD&_PDT`(i`&s84QCX8f z&gjI+{3WPZUt52KKoTS*j+fBZf`T4(OBDeB9Welk9xqcy->c}uH=AxjS?Qz{1y(7v z$sevHKeIDrN>w(hFQ#~k9#KwLjEO8xx1<81GG5h<5M(gDe8`pRE?Uk_M}H%o5B6%b z{6QvK$AafsXh8aggjdGYda|?V);uuq!l$fAg;2K7ic@M-nTXpMTh33 piA&NnL9hNI|eg31`|SV+4@XKD=@0TucRM;XMx3fnoFpm(Bu!dx9; z=7QHOlcN&5oP(Oh`NC5LQ;z)5PxZSYDKR9P?H>G>L+xp0T0&6j5c%+~RAc%5lFNxl zj&I8mfI8u!IY|J?L6o@|-E~x-6CKz-Q>! TmLX^st!5ps~*y>(W40*Rw&RLdGl;!M~#32hUsOeS0;NhQ!>OQZlY< zO>zgL8;2!7_M*PZWy*Qn@TPD?;tY~TrAaWydC1i_1XC_+SzdcT*Ym 0-d4z%G?R=X@s|IV~_noz_e(^Hj2z+7XOkGY1Vgukq4sP@K4dduV@K`A4q gsai{K=0WNo#&JcVxQvUie zfW3MnJS+nGJ`m1zgK+iiHj*E10O9T<62FU-W6;%Ml4M&TEDPQJ6%#_k%mGzy3#J$q z2zZ)?`(}jgqx_`%h*wzUly?YuqXpx}B1{03kf~+obtaS_{|43FxJjRb43o9sgcr@; zWPtVh#mNWL2BoNQ;vnv~X_Ohl@2Psz>bm%Q=yAe2(mKWB_F@DXEOv2_PKk?{SOu)b z`bry!k9<7tiC!T)Sb*?0Ixa3m0Z8|%bwE{c3KJJo#LcIn@wvVJAL|J$n?v{U>j}pl zmOS!bWK}!Jqv{LO1fI33f0d&0l#y84ZRuD0!eg3TMX&->{u{;kBgP~DA;!Yn-I~He zY~TJxG0O22BmWP@Pz`aW5xJH3=PP2x2reoNj1Zs|wfcu*^enohUurU2{7I(x($EmL zu6wF(qk_ t7m{@l)8Y;gC(}1|tG(C)ip~;_esYs?xPC;oIH|C9XNqKF0 zXqK%>bX{vOqS4jFrR}XN0uuCsDiAwtAVyy09yv1kxFM!_>hqnk_Z}}GLo*Aabe-=2 zEx2{TFL56>c0*wOsX(fpy;IhNw3^ei@eAPLd2=VV^S3Tv&|5M_wfpGy5ZJNR9Qg2t zqT?q#+=5I5zm2>hD|mHYn>TF9Dt=AA ?3=|9mVo9^5?=FvwPM@Cg%Aa*LbP3~vBZVobPZhkwr zN0>+FR6*w2D&EXQk4bg)PgpG;xOq_BYt=<~Zppx4E)>Wp?U^ d&aGic zaf9=ORMQ4JDMRxn%meTPI`h1%D#bNVe-+SJ{z>#E@Qh-h!p-E%{gPn2#q Iu&@ --0pFp!sUgCGcGkdSi?BbG>04u+CT=LI}heL@*R7Y9({ntnZL7RJMX?MM61 z>#{}2V7v*?vRQ4QF#d`%WrCS{09TaUu)1=rjQ RGO=HYRC5`;#S5=Hd<~@y+{zj&Pl-LjeVTo_!uxA7AKKc zUi3BsrUeROmWwEO?0q98sw$ CQ7Cfye|Mfc2nv-eY_LbW3CvZ z*>z-1<&wo3t`I)RTdIs45op~x8bb^TH@dNKV;dN6E$rBUd(3Y{e1IYIj?-Drwei%K z{W*G) &B7MAHE8p#X}z|8K9 zvxKNH3M!!x!{NLxh&qT0)a#2Oz>(|o*Ajonq50TRq$<(?nj9SqNy(>hH_Y3&`HOxM zDg_kA>auJX*hp~|cG|EsiDM1?*Qgp7DUxJvikzY%o3wx=9EPf{)VhaOHVVDuD&V_A zE(u=Q_RFw38CiinT DkGv|{qG=tT{B?+7-d^5b@s?8xhzoJ|e-75PlY9L8?*YMo%JAvGd1414UuWjd zf91dVg=o}>m6!!gyZ;n{_AF^a2mvyW??A%){y>VBv_6h Pt%jiDC$j;LX4%34P$t6c8*YLuy$xxZb?bLNl|H4 za=B?`b;D}}jg^B ShbE{)}SKkW+xj&}3fAqF fCM^h!B7BH8d-E5{Z zCvP 1M2R{PdYEQ=(S1{QJJREf%tlI-R8pkN8;~>*YGVuPs#b@rr~8BBb8&g8Gqq z5&SIgo%an*~$H|8Pi (d^ z!uh-f(Cyy_R|(Dwf#j6RIN{$
xzupWw)8joLzha$Tu?A-tqz zW+c#^!G5%`w@d+q-KeF2UgUz0lWDmdVjeAnOY4gf3-CtANdY32!*16A@-e??NA983 zZ={Dr-AbG+O3coawu(?a!tf;XBE5K^Qei{Iu!+}Sh?BTj53JIN 7QIl-M_#rE8|GEQc+*_OaydOIN@Ynt*F{m1StLr}Bg)>eGnH={Q-kK_hX0@X`A zl~hejL}hGns;_E|_8QUj*Uj17Bq_}Src7nRLl+k!(7s2HobtNjm_7<*?%`eUJlbW? z=!3EqvbHp&Q?*M2e&9rY-M1Z9k>M&x_O@?Beuou;Uj*<6_8%Wa|ClhZOQdZz$5wp5 zD?HJ4e)zSn!_iy&XoSDC>S$E>j|{h1jfahM^I=gSTI3{n0zMg210^+{SB(r#+`gH` zLi1X=Qw#DO4OENYbce#Uja5L*g4rN~hi p^ZxQ?HiOFd zVH2)_NJ%D_nP0$Rxs9ooIrr^@mhZRx@1HM5@YUc8pVI#?8E%6$X<;`@L}ffzS&OQb zaT%?O4bU3B3G5C(94o!d%AljN8|!y)2J2xHy_&?Z?W-QT666x@MD9=Y1A@1AfqQbK zxe_PFq?og@nGad#XWF{)ZKraGT-S3)(?HiBFVaXGkDp^|8!nir;(n8#zv&9RxL8)X z{`BK5GpVyNcm?>&pase2yl-_Xw6LWcCU&bW-jaUu0TV2Z@7zNSy{*+tL}aZXE$M7U zd({V#mqvj{MS^%S3lN!e5r(KbLLt>JP!A-4V)T8e<|J+jpPSn39giS(pC^39j^gPM z4sE=_LgLUS%f=cP_TUXO?R|FD;oV6h^-o{vpCSfrI)GEe&tsS=4eRc8Kb<0a=5J1w zb>4nc^N_% CPKT2lYRs*!$%32f5~tZAUb8dXbxf5 ze#e*GGv{3v%f5OA!c&JLe}$QbKmesQ_wU+EhPS{!{!@E%l=0zg*`(Ef@rd)thZ2e0 zrtMeiS&;BJ^*`ZkwsAB@(h$JUqlLG?qG{omyFl(+e-3$lG;wtZ08;yp1?GB5_u#QV zISg-stzOdj8u$mqrKBo(`B(yhRDo&v1$rC2iBnX OdXEgugkhXnOKrmDF zbBA;BqJg+my!KYzn&ui#9yB`ggEktf2GH0ab^LTHm`H=!N+_S-w4TTZMenJ~HswCb z40Bd&j$D6UReq~ciZ;q4IrW}l=jj|mzxc@uCVUgmkIwO4u48ohngl zdbUo#sfkb`b~DrV;MyVy|1_}*=@=&Yd#V~KmNt=r2SFA;U7N?{<-Q$M`Os|86lj3) zXFCAhjLoA;y1tGd$%s;$@CwJy(V*`gHiyKl^DE9vDgpF19?b0&v(za!?*N%1T-T>r zr05@hQ#;wIyydW7(@x;+^zFIv9TSn;(fd2#Ser$~yG_vc ta;;)CfOhBg< z6DWW#g7`X6nfqKR09K)^1l!K fUQY%l( zf<;uM#B@|VX)xmCVXt~ou$c-qM(_)z{_cpXEP!jR*7V(ovg3y_$g5VTkRnJL{CYcr zubW41aP9JU-?|5AL9A+$5H2M?5fve&X|EEemC1DE+DzQo>uej;+V9qnfr<89oo?g5 zoCy{_z+QQp0tiSM>S}4xyj_SSmh&4BLQer_(d4}vt ` zT`dpHU)yrjP4{wpgt~L52*^xOaPXF9tR6D{MVTFc@}%-d=h1s3o2HaV-=BQ^*CEgG z$6rrus(*Yo_S*e1V;U}UI%}Egc>2Y*^mQ$mey6GhLeCATh7gYXc}$3s0-B~o#A2lg z+*<3TKN!G~jZ+eL{MxXQ)Rf+Dbx6d$8(0-sRhNIyWs5DOXz3iR+;L!XzFu{=&DkBb zbywuyK$6yZw-n6;$?gQzDe`=GosC)Du`J8s*?)T8 P?>293_?f+8V?nM=f7oD&uq;`h1wD1lU?(?h2-21KS^AKAfEKGBqBqN zg7ar}ZU42eVm@<&|DXFR|6Je_V*y9%5fuDoysAQ1pRF15@GC84FP#{#XZ3v@;}ELX ze~-Aa0`T*6fd8 QJzZwT5X*KN4po|Y=RZ9b K;D z60M^G@w7nDhsrLepsZY#)z`hWqAoSTv$nnkB~Je4WmHP*+m}Y2T>w|?khOSmQ1kFa z1}k|mKGYoZVOC)@);agff=FoGr_Z=GA;j1`pl5wgjFqMz^=W$ltnxwpr>*n#%{1J( zTdECfBj7u+xsWC1g;Xfc)Vbpw#gcSnx}cHqM*c!i7?TBX93oLvkpR@X&QJ|aEErAB zH;SW%P%{joqF&C$oF*FTWVePajss2%V{%I1bYyc0obQV{3uS*ml6i!RvO%+zFs%|5 zPh&@^MT1?VC;Ci-Ky~k1kByX8##?Bc7k60#9M%i0476)rba(-iF8#)w9zk~@UnR0= z>z6EIst>fT+7NUv(Z3ABXwxaOsxz}a)`Gq~*r;$O&h_NT)5A;&l)ZjRrhm&(AIv+y z2J>sZ`>pYHKk1~BjBeH7uOB*!a9KBDup*%v^{=0KpS^g6TXU*qpzHIFkNLzE{WFfn z$2(Q-pu2sAW-T&(KirSFJUszBnk+sK2w;W1qmOVBvOQx%fwt;Qu3={^Wed;AjiyW~ zJ~kswLkb9;7s*M?pA3b`Yj2o&as?Ec;XkPY8KecfmlaTO_C&xU3{iYsFmauP 6i7>Fr-hkU+T^}*U&n5hf|U7 -aeO6j+Mo6S>7_Y&d~Voq9o{^ afS< zg019JLi~YoPqsyRGo&4EHP+0jgF0c++C*oV4CDGy1N+_U=2`2?-IjUJ?cLT^d~>_e z9chZK{2WjLXn)Co*-qNX!R){%bKqiSJ8`;7JqE}Fr-bR0gY_;R%grEi(yKA9w =j=9w5f{R987{u|dAmmxOwD}rYBRzRsWXX=01R6H#>9+#YPIDRj)UUfX7 z@ZacG_3ILlVBL59Iab^cS4)!7z7qr-Du8>8=on`A0SJS4ltvZc&QfhK+iHRlmQ=?9 zfbE@~pf3uf2jXq4{G^2QGoH5zXYpCXcK~gn%OB+wm$&cY@{eAJeyi+p90G*Bn!9zw zx7MhgHYPYjme$*3^PJ`F%S$}lcYEfCU`M(6$!$bDYrj~2L-M`7Hlb7Ta^bs^;=r!n zix;7LhJpbD0Onx9tGR^>MWO>k!E3Lb&vbVPj}2SML*{YHCZWf9pMMklu okPFpHK_yagaspZ}7P!rv$*OKD4wTBP}RYWlzEpuMlN z@PGYXhY0=IXX3ZwPx(itAeoi@VF8R#l{|XsAAi^RiIl3JQ>x>4JFKH90nY)b?=Ac1 zS0ffKNj^X-h=y-ymOC9pwjXBl&wvSKA^$cU(J*U5j`uB~*&*8F% z!rT}a*ZpAMuv8rz8>~?Yqx<`;%i#uVKh__ RnQik zA&gXm0m_e?B3``!#4@EmPqHMk95&;+eVw7uE@agcBOKYz4Zg`M7RtafXZ#qm(wg0L z#pnQT;$e=zj%vtA4=;F>GjT-uT5ha=DiWCZ=y`L*{D d-lm3%F_pFDoTI-|>?G zhc7Y39a-OVDgK^5QmEktbj};HnJ(7*8qqx#<@mM1Ytl)=OnL8VXS(}2*;Taa5^;Oe z?>c7LQk `h>Oru5s<}oe`Hkit=EwPk_3}-DTNQlWPv-DOK$kY05gzo~!0P zz1g=Pf_tKVT@ekN5XmKh@411dk+^Fz$c ;rUQvm<<7nCef4w#z;49 z8vfW=MmeG*0g@KUmX}80D=2DR5FM(`unb|#@#YejZ5i(Olds_i#VXYtaU_Im11w_b zI0c~L+@en{J-Br2c;s%qu$u%TU&=;#zYwiAr7*n+ofC$W5?hfI8=LB-zEyHA;U)DJ z;1i-{IG_P$6fu@S$x?j6GYeNV=(8L@mDA^j=`)UGg>mPB3*8wJYeo?*4|$4x;iHkc z-ZHS1(o9r^enfhUlHlWVy1q@0%9os*xhcP8Ns4?KE=mgu(<-d0+~=YyAJsk@5E8)d zApimcI-nqM6Z6-5jmW<=&95uDb)SJ+w4Ze5w0!Z_;%qCL_hD;WiRuG1wL~om1&$S9 zceztx>W&?|Yn`;f!>#|ajD+-8s$eJs!k!8Cq0$QUqoRHfLMo$R1*Qzd2vh7w>55~0 zHA%|{l)~ow=vXo_4KR{zdsl9e^{>5krv47jtc(k!gM&bPf0I@6dj9T&GKEoJnh<^U z$+Wig?*H2|QWB6+q#l5GqN F$;k1eG&>>)U&OYn^?a z^EbTL?|$#+dF~)DBRcTi6hqUP&0C#&)UE3hBE<&X>S>O*^Z-QmyJ9e(f|LB)2yy5z zIlDOd_|3it`Ip xWZesS+5Hgf`tnyM~K4UH@|VZsM#hwCc@_cR&-s( zx)Zpxf|@_ASI~Yh`EVX2%>8tOb*ESG+1*O7; XjRCJtE@^gk5Br};J{_Zbb^i`+%`gJ?$o10|M!vQrPh0)U za4u7B`aD!K{SE0TOUWa%mxfvyDO7(4O(=#up8tK$RzUoTFEt8>7P#4dyG5hy<*55f zh42CP+VU_`y?>dYRc8ph4sZZa92Z5NbbswIm8)l(z1z*6wt-sBU#fbfFxEE?0VuJ$ zKCvjq`sPSO2G!L75*vmmCaFcbnIP lH7|vpom^Puu1V4#S=(VN-89%e zVu}3tx$E0EzJ}zji|;L2h?}FSO)ETDCLtnmj#RK1uqqr(Q1&sV2&^MxMe z0VHrGSAm|)ows`+Z?(kYGm&7d^(Gb{d@?#eWr8xrJLL+8X;Y9Z;7R=LWd zX#88VIr@&TS4Jl{WXDsTagh5G;uL^{J|=S>86a$ungw#qa#1{JFzCP-~XjfI)Mz z&<;O!da7Yxjv@ucw=eTA5~m%_z7!gHG)*nZfI>nJ@87eh*9{ ewzw-x^;Q&+(?iU{q%tk>E%U} zpCtnrt$la-B`W(C>5nrF^w-zL%i%rEIbIHk)wxTDf6quHAV5`o$M8|Iwa6NT&d9~+ zE_-G3%Ww$*-5M!Ns~jjIXI2w>-?Y7G9V}9+ydLfK3&s@NNX@sdBNsQ7|4