From f4eb06d284fa9b9e236a3c766a9026fc285cf87f Mon Sep 17 00:00:00 2001
From: hucan <951870319@qq.com>
Date: Thu, 6 Feb 2025 18:13:42 +0800
Subject: [PATCH] 1
---
 .editorconfig                                 |   14 +
 .env.development                              |    6 +
 .env.production                               |    6 +
 .env.staging                                  |    8 +
 .eslintignore                                 |    4 +
 .eslintrc.js                                  |  199 ++
 .gitignore                                    |   23 +
 .npmrc                                        |    4 +
 .travis.yml                                   |    5 +
 Dockerfile                                    |   14 +
 LICENSE                                       |   21 +
 README.Zh-cn.md                               |  298 +++
 README.md                                     |  284 +++
 babel.config.js                               |   10 +
 build/index.js                                |   35 +
 dist.rar                                      |  Bin 0 -> 4122482 bytes
 jest.config.js                                |   24 +
 jsconfig.json                                 |    9 +
 package.json                                  |  127 ++
 plop-templates/component/index.hbs            |   26 +
 plop-templates/component/prompt.js            |   55 +
 plop-templates/store/index.hbs                |   16 +
 plop-templates/store/prompt.js                |   62 +
 plop-templates/utils.js                       |    9 +
 plop-templates/view/index.hbs                 |   26 +
 plop-templates/view/prompt.js                 |   55 +
 plopfile.js                                   |    9 +
 postcss.config.js                             |    5 +
 public/config.js                              |    0
 public/favicon.ico                            |  Bin 0 -> 3628 bytes
 public/index.html                             |  219 ++
 scripts/k8s/default.conf                      |   56 +
 scripts/k8s/deploy.yml                        |   51 +
 scripts/k8s/prerun.sh                         |    3 +
 src/App.vue                                   |   23 +
 src/api/admin/dict/data.js                    |   62 +
 src/api/admin/dict/type.js                    |   62 +
 src/api/admin/line-account-setting.js         |   47 +
 src/api/admin/line-api-group.js               |   59 +
 src/api/admin/line-api-setting.js             |   20 +
 src/api/admin/line-api-user.js                |   53 +
 src/api/admin/line-coinnetwork.js             |   47 +
 src/api/admin/line-cointonetwork.js           |   47 +
 src/api/admin/line-direction.js               |   53 +
 src/api/admin/line-order-template-logs.js     |   46 +
 src/api/admin/line-pre-order.js               |  136 ++
 src/api/admin/line-pre-script.js              |   47 +
 src/api/admin/line-price-limit.js             |   46 +
 src/api/admin/line-recharge.js                |   47 +
 src/api/admin/line-symbol-black.js            |   47 +
 src/api/admin/line-symbol-group.js            |   47 +
 src/api/admin/line-symbol.js                  |   54 +
 src/api/admin/line-system-setting.js          |   47 +
 src/api/admin/line-uduncoin.js                |   47 +
 src/api/admin/line-user-funding-trend.js      |   47 +
 src/api/admin/line-user-profit-logs.js        |   47 +
 src/api/admin/line-user.js                    |   47 +
 src/api/admin/line-wallet.js                  |   47 +
 src/api/admin/sys-api.js                      |   46 +
 src/api/admin/sys-config.js                   |   68 +
 src/api/admin/sys-dept.js                     |   60 +
 src/api/admin/sys-login-log.js                |   28 +
 src/api/admin/sys-menu.js                     |   61 +
 src/api/admin/sys-opera-log.js                |   28 +
 src/api/admin/sys-post.js                     |   46 +
 src/api/admin/sys-role.js                     |   88 +
 src/api/admin/sys-user.js                     |  135 ++
 src/api/admin/vts-recharge.js                 |   47 +
 src/api/job/sys-job.js                        |   62 +
 src/api/login.js                              |   17 +
 src/api/monitor/server.js                     |    9 +
 src/api/remote-search.js                      |   17 +
 src/api/schedule.js                           |   43 +
 src/api/table.js                              |   21 +
 src/api/tools/gen.js                          |  103 +
 src/api/user.js                               |   36 +
 src/api/ws.js                                 |    9 +
 src/assets/401_images/401.gif                 |  Bin 0 -> 164227 bytes
 src/assets/404_images/404.png                 |  Bin 0 -> 98071 bytes
 src/assets/404_images/404_cloud.png           |  Bin 0 -> 4766 bytes
 .../custom-theme/fonts/element-icons.ttf      |  Bin 0 -> 11028 bytes
 .../custom-theme/fonts/element-icons.woff     |  Bin 0 -> 6124 bytes
 src/assets/custom-theme/index.css             |    1 +
 src/assets/dark.svg                           |   39 +
 src/assets/icons/12-01.png                    |  Bin 0 -> 5803 bytes
 src/assets/icons/AU-01.png                    |  Bin 0 -> 4392 bytes
 src/assets/icons/Access.png                   |  Bin 0 -> 9540 bytes
 src/assets/icons/AndroidStudio.png            |  Bin 0 -> 18002 bytes
 src/assets/icons/Awesome.png                  |  Bin 0 -> 12866 bytes
 src/assets/icons/AwesomeVue.png               |  Bin 0 -> 18311 bytes
 src/assets/icons/Clion-01-01.png              |  Bin 0 -> 14936 bytes
 src/assets/icons/Dm-01-01.png                 |  Bin 0 -> 2317 bytes
 src/assets/icons/Edge-01.png                  |  Bin 0 -> 17851 bytes
 src/assets/icons/Excel.png                    |  Bin 0 -> 6001 bytes
 src/assets/icons/Ic-01.png                    |  Bin 0 -> 4359 bytes
 src/assets/icons/Idea.png                     |  Bin 0 -> 13018 bytes
 src/assets/icons/Link.png                     |  Bin 0 -> 5251 bytes
 src/assets/icons/OneDrive.png                 |  Bin 0 -> 8313 bytes
 src/assets/icons/OneNote.png                  |  Bin 0 -> 4817 bytes
 src/assets/icons/PDFbeifen.png                |  Bin 0 -> 5272 bytes
 src/assets/icons/Phpstorm-01.png              |  Bin 0 -> 13873 bytes
 src/assets/icons/PictureUnknow.png            |  Bin 0 -> 4681 bytes
 src/assets/icons/Pictureloadingfailed.png     |  Bin 0 -> 5584 bytes
 src/assets/icons/Pl-01.png                    |  Bin 0 -> 3043 bytes
 src/assets/icons/Pn-01.png                    |  Bin 0 -> 3896 bytes
 src/assets/icons/PowerPoint.png               |  Bin 0 -> 8713 bytes
 src/assets/icons/PowerShell.png               |  Bin 0 -> 12383 bytes
 src/assets/icons/Pycharm.png                  |  Bin 0 -> 14542 bytes
 src/assets/icons/Typora.png                   |  Bin 0 -> 10340 bytes
 src/assets/icons/UTools.png                   |  Bin 0 -> 10287 bytes
 src/assets/icons/Unknow.png                   |  Bin 0 -> 5028 bytes
 src/assets/icons/Visio.png                    |  Bin 0 -> 7847 bytes
 src/assets/icons/VisualStudio.png             |  Bin 0 -> 14959 bytes
 src/assets/icons/Web.png                      |  Bin 0 -> 7998 bytes
 src/assets/icons/Webstorm.png                 |  Bin 0 -> 16234 bytes
 src/assets/icons/Windows.png                  |  Bin 0 -> 8300 bytes
 src/assets/icons/WindowsTerminal_PRE-01.png   |  Bin 0 -> 6972 bytes
 src/assets/icons/Word.png                     |  Bin 0 -> 5714 bytes
 src/assets/icons/Wordbeifen.png               |  Bin 0 -> 5664 bytes
 src/assets/icons/Zip.png                      |  Bin 0 -> 4452 bytes
 src/assets/icons/adobe-01-01-01.png           |  Bin 0 -> 7168 bytes
 src/assets/icons/bianxingjingang.png          |  Bin 0 -> 24075 bytes
 src/assets/icons/bianxingjingang1.png         |  Bin 0 -> 27364 bytes
 src/assets/icons/chayue2.png                  |  Bin 0 -> 6963 bytes
 src/assets/icons/daiyue.png                   |  Bin 0 -> 10512 bytes
 src/assets/icons/excelbeifen.png              |  Bin 0 -> 5662 bytes
 src/assets/icons/fl-01-01.png                 |  Bin 0 -> 4318 bytes
 src/assets/icons/nasa.png                     |  Bin 0 -> 26819 bytes
 src/assets/icons/pf-01.png                    |  Bin 0 -> 3573 bytes
 src/assets/icons/picture.png                  |  Bin 0 -> 8674 bytes
 src/assets/icons/pptbeifen.png                |  Bin 0 -> 4344 bytes
 src/assets/icons/rar.png                      |  Bin 0 -> 4036 bytes
 src/assets/icons/tubiaozhizuomo3-01.png       |  Bin 0 -> 3717 bytes
 src/assets/icons/tubiaozhizuomoban-01.png     |  Bin 0 -> 7755 bytes
 src/assets/icons/tubiaozhizuomoban10-01.png   |  Bin 0 -> 4288 bytes
 src/assets/icons/tubiaozhizuomoban11.png      |  Bin 0 -> 5099 bytes
 src/assets/icons/tubiaozhizuomoban2-01-01.png |  Bin 0 -> 3622 bytes
 src/assets/icons/tubiaozhizuomoban4-01.png    |  Bin 0 -> 8535 bytes
 src/assets/icons/tubiaozhizuomoban5-01.png    |  Bin 0 -> 6314 bytes
 src/assets/icons/tubiaozhizuomoban6-01.png    |  Bin 0 -> 3580 bytes
 src/assets/icons/tubiaozhizuomoban7-01-01.png |  Bin 0 -> 3991 bytes
 src/assets/icons/tubiaozhizuomoban8-01.png    |  Bin 0 -> 2515 bytes
 src/assets/icons/tubiaozhizuomoban9-01.png    |  Bin 0 -> 6378 bytes
 src/assets/icons/txtbeifen.png                |  Bin 0 -> 5227 bytes
 src/assets/icons/video.png                    |  Bin 0 -> 3884 bytes
 src/assets/icons/video2.png                   |  Bin 0 -> 5747 bytes
 src/assets/icons/voice.png                    |  Bin 0 -> 5143 bytes
 src/assets/icons/wendang.png                  |  Bin 0 -> 4361 bytes
 src/assets/icons/wenjianjia.png               |  Bin 0 -> 3499 bytes
 src/assets/light.svg                          |   39 +
 src/assets/login.png                          |  Bin 0 -> 30551 bytes
 src/assets/logo/logo.png                      |  Bin 0 -> 7211 bytes
 src/assets/particles.json                     |  110 +
 src/components/Bar.vue                        |   67 +
 src/components/Breadcrumb/index.vue           |   82 +
 src/components/Cell/index.vue                 |   93 +
 src/components/ChartCard/index.vue            |  114 +
 src/components/Charts/Keyboard.vue            |  155 ++
 src/components/Charts/LineMarker.vue          |  227 ++
 src/components/Charts/MixChart.vue            |  271 +++
 src/components/Charts/mixins/resize.js        |   34 +
 src/components/ErrorLog/index.vue             |   78 +
 src/components/FormGenParser/Parser.vue       |  193 ++
 src/components/FormGenRender/render.js        |  122 ++
 .../FormGenRender/slots/el-button.js          |    5 +
 .../FormGenRender/slots/el-checkbox-group.js  |   13 +
 .../FormGenRender/slots/el-input.js           |    8 +
 .../FormGenRender/slots/el-radio-group.js     |   13 +
 .../FormGenRender/slots/el-select.js          |    9 +
 .../FormGenRender/slots/el-upload.js          |   17 +
 src/components/GithubCorner/index.vue         |   54 +
 src/components/Go-Admin/Doc/index.vue         |   21 +
 src/components/Go-Admin/Donate/index.vue      |   21 +
 src/components/Go-Admin/Git/index.vue         |   21 +
 src/components/Hamburger/index.vue            |   44 +
 src/components/HeaderSearch/index.vue         |  180 ++
 src/components/IconSelect/index.vue           |   68 +
 src/components/IconSelect/requireIcons.js     |   10 +
 src/components/ImageCropper/index.vue         | 1778 ++++++++++++++++
 .../ImageCropper/utils/data2blob.js           |   19 +
 .../ImageCropper/utils/effectRipple.js        |   39 +
 src/components/ImageCropper/utils/language.js |  232 +++
 src/components/ImageCropper/utils/mimes.js    |    7 +
 src/components/MDinput/index.vue              |  360 ++++
 src/components/MiniArea/index.vue             |   65 +
 src/components/MiniBar/index.vue              |   65 +
 src/components/MiniProgress/index.vue         |   71 +
 src/components/Pagination/index.vue           |  101 +
 src/components/PanThumb/index.vue             |  142 ++
 src/components/RankList/index.vue             |   69 +
 src/components/RightPanel/index.vue           |  145 ++
 src/components/Screenfull/index.vue           |   60 +
 src/components/Share/DropdownMenu.vue         |  100 +
 src/components/SvgIcon/index.vue              |   60 +
 src/components/ThemePicker/index.vue          |  172 ++
 src/components/TopNav/index.vue               |  144 ++
 src/components/Trend/index.vue                |   62 +
 src/components/Upload/SingleImage.vue         |  134 ++
 src/components/Upload/SingleImage2.vue        |  130 ++
 src/components/Upload/SingleImage3.vue        |  157 ++
 src/components/UploadExcel/index.vue          |  138 ++
 src/components/layout.vue                     |   26 +
 src/directive/el-drag-dialog/drag.js          |   77 +
 src/directive/el-drag-dialog/index.js         |   13 +
 src/directive/el-table/adaptive.js            |   41 +
 src/directive/el-table/index.js               |   13 +
 src/directive/permission/index.js             |   17 +
 src/directive/permission/permisaction.js      |   23 +
 src/directive/permission/permission.js        |   22 +
 src/directive/sticky.js                       |   91 +
 src/directive/waves/index.js                  |   13 +
 src/directive/waves/waves.css                 |   26 +
 src/directive/waves/waves.js                  |   72 +
 src/filters/index.js                          |   68 +
 src/icons/index.js                            |    9 +
 src/icons/svg/404.svg                         |    1 +
 src/icons/svg/access.svg                      |    1 +
 src/icons/svg/add-db.svg                      |    1 +
 src/icons/svg/add-doc.svg                     |    1 +
 src/icons/svg/alarm-settings.svg              |    1 +
 src/icons/svg/api-ctl.svg                     |    1 +
 src/icons/svg/api-doc.svg                     |    1 +
 src/icons/svg/api-gateway.svg                 |    1 +
 src/icons/svg/api-monitor.svg                 |    1 +
 src/icons/svg/api-server.svg                  |    1 +
 src/icons/svg/api-test.svg                    |    1 +
 src/icons/svg/app-group-fill.svg              |    1 +
 src/icons/svg/archived.svg                    |    1 +
 src/icons/svg/base-info.svg                   |    1 +
 src/icons/svg/batch-update.svg                |    1 +
 src/icons/svg/bug.svg                         |    1 +
 src/icons/svg/build.svg                       |    1 +
 src/icons/svg/calendar.svg                    |   44 +
 src/icons/svg/cascader.svg                    |    1 +
 src/icons/svg/chart.svg                       |    1 +
 src/icons/svg/checkbox.svg                    |    1 +
 src/icons/svg/clipboard.svg                   |    1 +
 src/icons/svg/code.svg                        |    1 +
 src/icons/svg/color.svg                       |    1 +
 src/icons/svg/component.svg                   |    1 +
 src/icons/svg/dashboard.svg                   |    1 +
 src/icons/svg/date-range.svg                  |    1 +
 src/icons/svg/date.svg                        |    1 +
 src/icons/svg/db.svg                          |    1 +
 src/icons/svg/del.svg                         |    1 +
 src/icons/svg/dev-tools.svg                   |    1 +
 src/icons/svg/dict.svg                        |    1 +
 src/icons/svg/doc.svg                         |    1 +
 src/icons/svg/documentation.svg               |    1 +
 src/icons/svg/download.svg                    |    1 +
 src/icons/svg/drag copy.svg                   |    1 +
 src/icons/svg/drag.svg                        |    1 +
 src/icons/svg/druid.svg                       |    1 +
 src/icons/svg/edit.svg                        |    1 +
 src/icons/svg/education.svg                   |    1 +
 src/icons/svg/email.svg                       |    1 +
 src/icons/svg/err-list.svg                    |    1 +
 src/icons/svg/example.svg                     |    1 +
 src/icons/svg/excel.svg                       |    1 +
 src/icons/svg/exit-fullscreen.svg             |    1 +
 src/icons/svg/eye-open.svg                    |    1 +
 src/icons/svg/eye.svg                         |    1 +
 src/icons/svg/form.svg                        |    1 +
 src/icons/svg/fullscreen.svg                  |    1 +
 src/icons/svg/github.svg                      |    1 +
 src/icons/svg/guide.svg                       |    1 +
 src/icons/svg/heart.svg                       |    1 +
 src/icons/svg/http-err.svg                    |    1 +
 src/icons/svg/icon.svg                        |    1 +
 src/icons/svg/info-setting.svg                |    1 +
 src/icons/svg/input.svg                       |    1 +
 src/icons/svg/intel.svg                       |    1 +
 src/icons/svg/international.svg               |    1 +
 src/icons/svg/job.svg                         |    1 +
 src/icons/svg/json-push.svg                   |    1 +
 src/icons/svg/language.svg                    |    1 +
 src/icons/svg/link.svg                        |    1 +
 src/icons/svg/list.svg                        |    1 +
 src/icons/svg/lock.svg                        |    1 +
 src/icons/svg/log.svg                         |    1 +
 src/icons/svg/logininfor.svg                  |    1 +
 src/icons/svg/map.svg                         |    1 +
 src/icons/svg/message.svg                     |    1 +
 src/icons/svg/money.svg                       |    1 +
 src/icons/svg/monitor.svg                     |    2 +
 src/icons/svg/nested.svg                      |    1 +
 src/icons/svg/network.svg                     |  131 ++
 src/icons/svg/next-page.svg                   |    1 +
 src/icons/svg/number.svg                      |    1 +
 src/icons/svg/online.svg                      |    1 +
 src/icons/svg/operators.svg                   |    1 +
 src/icons/svg/pass.svg                        |   68 +
 src/icons/svg/password.svg                    |    1 +
 src/icons/svg/pdf.svg                         |    1 +
 src/icons/svg/people.svg                      |    1 +
 src/icons/svg/peoples.svg                     |    1 +
 src/icons/svg/phone.svg                       |    1 +
 src/icons/svg/post.svg                        |    1 +
 src/icons/svg/project-group.svg               |    1 +
 src/icons/svg/project-manage.svg              |    1 +
 src/icons/svg/pwd.svg                         |    1 +
 src/icons/svg/qq.svg                          |    1 +
 src/icons/svg/question.svg                    |    1 +
 src/icons/svg/radio.svg                       |    1 +
 src/icons/svg/rate.svg                        |    1 +
 src/icons/svg/return-code-doc.svg             |    1 +
 src/icons/svg/return-code.svg                 |    1 +
 src/icons/svg/root-addr.svg                   |    1 +
 src/icons/svg/row.svg                         |    1 +
 src/icons/svg/safety.svg                      |    1 +
 src/icons/svg/scene.svg                       |    1 +
 src/icons/svg/search.svg                      |    1 +
 src/icons/svg/select.svg                      |    1 +
 src/icons/svg/server.svg                      |    1 +
 src/icons/svg/shopping.svg                    |    1 +
 src/icons/svg/signature.svg                   |    1 +
 src/icons/svg/size.svg                        |    1 +
 src/icons/svg/skill.svg                       |    1 +
 src/icons/svg/slider.svg                      |    1 +
 src/icons/svg/star.svg                        |    1 +
 src/icons/svg/statistics.svg                  |    1 +
 src/icons/svg/swagger.svg                     |    1 +
 src/icons/svg/switch.svg                      |    1 +
 src/icons/svg/system-tools.svg                |    1 +
 src/icons/svg/system.svg                      |    2 +
 src/icons/svg/tab.svg                         |    1 +
 src/icons/svg/table.svg                       |    1 +
 src/icons/svg/textarea.svg                    |    1 +
 src/icons/svg/theme.svg                       |    1 +
 src/icons/svg/time-avg.svg                    |    1 +
 src/icons/svg/time-range.svg                  |    1 +
 src/icons/svg/time.svg                        |    1 +
 src/icons/svg/tool.svg                        |    1 +
 src/icons/svg/tree-table.svg                  |    1 +
 src/icons/svg/tree.svg                        |    1 +
 src/icons/svg/upload.svg                      |    1 +
 src/icons/svg/user-info.svg                   |    1 +
 src/icons/svg/user.svg                        |    1 +
 src/icons/svg/validCode.svg                   |    1 +
 src/icons/svg/vip.svg                         |   76 +
 src/icons/svg/webhock.svg                     |    1 +
 src/icons/svg/wechat.svg                      |    1 +
 src/icons/svg/zip.svg                         |    1 +
 src/icons/svgo.yml                            |   22 +
 src/layout/BasicLayout.vue                    |   18 +
 src/layout/components/AppMain.vue             |   57 +
 src/layout/components/Navbar.vue              |  175 ++
 src/layout/components/Settings/index.vue      |  212 ++
 src/layout/components/Sidebar/FixiOSBug.js    |   26 +
 src/layout/components/Sidebar/Item.vue        |   29 +
 src/layout/components/Sidebar/Link.vue        |   36 +
 src/layout/components/Sidebar/Logo.vue        |   90 +
 src/layout/components/Sidebar/SidebarItem.vue |   95 +
 src/layout/components/Sidebar/index.vue       |   66 +
 src/layout/components/TagsView/ScrollPane.vue |   85 +
 src/layout/components/TagsView/TagsView.vue   |  103 +
 src/layout/components/TagsView/index.vue      |  387 ++++
 src/layout/components/index.js                |    5 +
 src/layout/index.vue                          |  106 +
 src/layout/mixin/ResizeHandler.js             |   45 +
 src/main.js                                   |   95 +
 src/permission.js                             |   74 +
 src/router/index.js                           |  126 ++
 src/settings.js                               |   42 +
 src/store/getters.js                          |   20 +
 src/store/index.js                            |   25 +
 src/store/modules/app.js                      |   56 +
 src/store/modules/errorLog.js                 |   28 +
 src/store/modules/permission.js               |  171 ++
 src/store/modules/settings.js                 |   37 +
 src/store/modules/system.js                   |   33 +
 src/store/modules/tagsView.js                 |  162 ++
 src/store/modules/user.js                     |  153 ++
 src/styles/admin.css                          |  213 ++
 src/styles/admin.min.css                      |    1 +
 src/styles/admin.scss                         |  295 +++
 src/styles/btn.scss                           |   99 +
 src/styles/element-ui.scss                    |   84 +
 src/styles/element-variables.scss             |   31 +
 src/styles/index.scss                         |  211 ++
 src/styles/mixin.scss                         |   66 +
 src/styles/sidebar.scss                       |  224 ++
 src/styles/transition.scss                    |   48 +
 src/styles/variables.css                      |   13 +
 src/styles/variables.min.css                  |    1 +
 src/styles/variables.scss                     |   44 +
 src/utils/auth.js                             |   15 +
 src/utils/costum.js                           |  106 +
 src/utils/dialog.js                           |   76 +
 src/utils/error-log.js                        |   35 +
 src/utils/eventbus.js                         |    2 +
 src/utils/generator/config.js                 |  423 ++++
 src/utils/generator/css.js                    |   18 +
 src/utils/generator/drawingDefalut.js         |   29 +
 src/utils/generator/html.js                   |  400 ++++
 src/utils/generator/icon.json                 |    1 +
 src/utils/generator/index.js                  |  158 ++
 src/utils/generator/js.js                     |  236 +++
 src/utils/generator/render.js                 |  121 ++
 src/utils/get-page-title.js                   |   10 +
 src/utils/index.js                            |  367 ++++
 src/utils/open-window.js                      |   25 +
 src/utils/permission.js                       |   25 +
 src/utils/request.js                          |  119 ++
 src/utils/scroll-to.js                        |   58 +
 src/utils/storage.js                          |   23 +
 src/utils/validate.js                         |   87 +
 src/utils/zipdownload.js                      |   49 +
 src/vendor/Export2Excel.js                    |  220 ++
 src/vendor/Export2Zip.js                      |   24 +
 src/views/admin/dict/data.vue                 |  360 ++++
 src/views/admin/dict/index.vue                |  360 ++++
 .../admin/line-account-setting/index.vue      |  287 +++
 src/views/admin/line-api-group/index.vue      |  344 ++++
 src/views/admin/line-api-user/index.vue       |  472 +++++
 src/views/admin/line-coinnetwork/index.vue    |  305 +++
 src/views/admin/line-cointonetwork/index.vue  |  401 ++++
 src/views/admin/line-direction/index.vue      |  471 +++++
 .../admin/line-order-template-logs/index.vue  |  789 +++++++
 src/views/admin/line-order/index.vue          | 1756 ++++++++++++++++
 src/views/admin/line-pre-order/index.vue      | 1830 +++++++++++++++++
 src/views/admin/line-pre-script/index.vue     |  408 ++++
 src/views/admin/line-price-limit/index.vue    |  379 ++++
 src/views/admin/line-recharge/index.vue       |  366 ++++
 src/views/admin/line-symbol-black/index.vue   |  343 +++
 src/views/admin/line-symbol-group/index.vue   |  401 ++++
 src/views/admin/line-symbol/index.vue         |  432 ++++
 src/views/admin/line-system-setting/index.vue |  285 +++
 src/views/admin/line-uduncoin/index.vue       |  320 +++
 .../admin/line-user-funding-trend/index.vue   |  285 +++
 .../admin/line-user-profit-logs/index.vue     |  399 ++++
 src/views/admin/line-user/index.vue           |  449 ++++
 src/views/admin/line-wallet/index.vue         |  300 +++
 src/views/admin/sys-api/index.vue             |  430 ++++
 src/views/admin/sys-config/index.vue          |  432 ++++
 src/views/admin/sys-config/set.vue            |  223 ++
 src/views/admin/sys-dept/index.vue            |  370 ++++
 src/views/admin/sys-login-log/index.vue       |  296 +++
 src/views/admin/sys-menu/index.vue            |  624 ++++++
 src/views/admin/sys-oper-log/index.vue        |  334 +++
 src/views/admin/sys-post/index.vue            |  360 ++++
 src/views/admin/sys-role/index.vue            |  611 ++++++
 src/views/admin/sys-user/index.vue            |  681 ++++++
 src/views/admin/vts-recharge/index.vue        |  523 +++++
 .../dashboard/admin/components/BarChart.vue   |  102 +
 .../dashboard/admin/components/LineChart.vue  |  135 ++
 .../dashboard/admin/components/PanelGroup.vue |  181 ++
 .../dashboard/admin/components/PieChart.vue   |   79 +
 .../admin/components/RaddarChart.vue          |  116 ++
 .../admin/components/TodoList/Todo.vue        |   81 +
 .../admin/components/TodoList/index.scss      |  320 +++
 .../admin/components/TodoList/index.vue       |  127 ++
 .../admin/components/mixins/resize.js         |   55 +
 src/views/dashboard/admin/index.vue           |  176 ++
 src/views/dashboard/editor/index.vue          |   74 +
 src/views/dashboard/index.vue                 |   31 +
 src/views/dev-tools/build/index.vue           |   36 +
 src/views/dev-tools/gen/basicInfoForm.vue     |  101 +
 src/views/dev-tools/gen/editTable.vue         |  348 ++++
 src/views/dev-tools/gen/genInfoForm.vue       |  219 ++
 src/views/dev-tools/gen/importTable.vue       |  121 ++
 src/views/dev-tools/gen/index.vue             |  421 ++++
 src/views/dev-tools/swagger/index.vue         |   38 +
 src/views/error-page/401.vue                  |   99 +
 src/views/error-page/404.vue                  |  228 ++
 .../excel/components/AutoWidthOption.vue      |   34 +
 src/views/excel/components/BookTypeOption.vue |   39 +
 src/views/excel/components/FilenameOption.vue |   27 +
 src/views/excel/upload-excel.vue              |   42 +
 src/views/log/index.vue                       |    3 +
 src/views/login/auth-redirect.vue             |   15 +
 src/views/login/components/SocialSignin.vue   |   72 +
 src/views/login/index.vue                     |  690 +++++++
 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 ++
 src/views/profile/index.vue                   |  121 ++
 src/views/profile/resetPwd.vue                |   76 +
 src/views/profile/userAvatar.vue              |  137 ++
 src/views/profile/userInfo.vue                |   79 +
 src/views/redirect/index.vue                  |   12 +
 src/views/schedule/index.vue                  |  558 +++++
 src/views/schedule/log.vue                    |  101 +
 src/views/sys-tools/monitor.vue               |  193 ++
 tests/unit/.eslintrc.js                       |    5 +
 tests/unit/components/Hamburger.spec.js       |   18 +
 tests/unit/components/SvgIcon.spec.js         |   22 +
 tests/unit/utils/formatTime.spec.js           |   29 +
 tests/unit/utils/parseTime.spec.js            |   27 +
 tests/unit/utils/validate.spec.js             |   28 +
 vue.config.js                                 |  155 ++
 492 files changed, 40280 insertions(+)
 create mode 100644 .editorconfig
 create mode 100644 .env.development
 create mode 100644 .env.production
 create mode 100644 .env.staging
 create mode 100644 .eslintignore
 create mode 100644 .eslintrc.js
 create mode 100644 .gitignore
 create mode 100644 .npmrc
 create mode 100644 .travis.yml
 create mode 100644 Dockerfile
 create mode 100644 LICENSE
 create mode 100644 README.Zh-cn.md
 create mode 100644 README.md
 create mode 100644 babel.config.js
 create mode 100644 build/index.js
 create mode 100644 dist.rar
 create mode 100644 jest.config.js
 create mode 100644 jsconfig.json
 create mode 100644 package.json
 create mode 100644 plop-templates/component/index.hbs
 create mode 100644 plop-templates/component/prompt.js
 create mode 100644 plop-templates/store/index.hbs
 create mode 100644 plop-templates/store/prompt.js
 create mode 100644 plop-templates/utils.js
 create mode 100644 plop-templates/view/index.hbs
 create mode 100644 plop-templates/view/prompt.js
 create mode 100644 plopfile.js
 create mode 100644 postcss.config.js
 create mode 100644 public/config.js
 create mode 100644 public/favicon.ico
 create mode 100644 public/index.html
 create mode 100644 scripts/k8s/default.conf
 create mode 100644 scripts/k8s/deploy.yml
 create mode 100644 scripts/k8s/prerun.sh
 create mode 100644 src/App.vue
 create mode 100644 src/api/admin/dict/data.js
 create mode 100644 src/api/admin/dict/type.js
 create mode 100644 src/api/admin/line-account-setting.js
 create mode 100644 src/api/admin/line-api-group.js
 create mode 100644 src/api/admin/line-api-setting.js
 create mode 100644 src/api/admin/line-api-user.js
 create mode 100644 src/api/admin/line-coinnetwork.js
 create mode 100644 src/api/admin/line-cointonetwork.js
 create mode 100644 src/api/admin/line-direction.js
 create mode 100644 src/api/admin/line-order-template-logs.js
 create mode 100644 src/api/admin/line-pre-order.js
 create mode 100644 src/api/admin/line-pre-script.js
 create mode 100644 src/api/admin/line-price-limit.js
 create mode 100644 src/api/admin/line-recharge.js
 create mode 100644 src/api/admin/line-symbol-black.js
 create mode 100644 src/api/admin/line-symbol-group.js
 create mode 100644 src/api/admin/line-symbol.js
 create mode 100644 src/api/admin/line-system-setting.js
 create mode 100644 src/api/admin/line-uduncoin.js
 create mode 100644 src/api/admin/line-user-funding-trend.js
 create mode 100644 src/api/admin/line-user-profit-logs.js
 create mode 100644 src/api/admin/line-user.js
 create mode 100644 src/api/admin/line-wallet.js
 create mode 100644 src/api/admin/sys-api.js
 create mode 100644 src/api/admin/sys-config.js
 create mode 100644 src/api/admin/sys-dept.js
 create mode 100644 src/api/admin/sys-login-log.js
 create mode 100644 src/api/admin/sys-menu.js
 create mode 100644 src/api/admin/sys-opera-log.js
 create mode 100644 src/api/admin/sys-post.js
 create mode 100644 src/api/admin/sys-role.js
 create mode 100644 src/api/admin/sys-user.js
 create mode 100644 src/api/admin/vts-recharge.js
 create mode 100644 src/api/job/sys-job.js
 create mode 100644 src/api/login.js
 create mode 100644 src/api/monitor/server.js
 create mode 100644 src/api/remote-search.js
 create mode 100644 src/api/schedule.js
 create mode 100644 src/api/table.js
 create mode 100644 src/api/tools/gen.js
 create mode 100644 src/api/user.js
 create mode 100644 src/api/ws.js
 create mode 100644 src/assets/401_images/401.gif
 create mode 100644 src/assets/404_images/404.png
 create mode 100644 src/assets/404_images/404_cloud.png
 create mode 100644 src/assets/custom-theme/fonts/element-icons.ttf
 create mode 100644 src/assets/custom-theme/fonts/element-icons.woff
 create mode 100644 src/assets/custom-theme/index.css
 create mode 100644 src/assets/dark.svg
 create mode 100644 src/assets/icons/12-01.png
 create mode 100644 src/assets/icons/AU-01.png
 create mode 100644 src/assets/icons/Access.png
 create mode 100644 src/assets/icons/AndroidStudio.png
 create mode 100644 src/assets/icons/Awesome.png
 create mode 100644 src/assets/icons/AwesomeVue.png
 create mode 100644 src/assets/icons/Clion-01-01.png
 create mode 100644 src/assets/icons/Dm-01-01.png
 create mode 100644 src/assets/icons/Edge-01.png
 create mode 100644 src/assets/icons/Excel.png
 create mode 100644 src/assets/icons/Ic-01.png
 create mode 100644 src/assets/icons/Idea.png
 create mode 100644 src/assets/icons/Link.png
 create mode 100644 src/assets/icons/OneDrive.png
 create mode 100644 src/assets/icons/OneNote.png
 create mode 100644 src/assets/icons/PDFbeifen.png
 create mode 100644 src/assets/icons/Phpstorm-01.png
 create mode 100644 src/assets/icons/PictureUnknow.png
 create mode 100644 src/assets/icons/Pictureloadingfailed.png
 create mode 100644 src/assets/icons/Pl-01.png
 create mode 100644 src/assets/icons/Pn-01.png
 create mode 100644 src/assets/icons/PowerPoint.png
 create mode 100644 src/assets/icons/PowerShell.png
 create mode 100644 src/assets/icons/Pycharm.png
 create mode 100644 src/assets/icons/Typora.png
 create mode 100644 src/assets/icons/UTools.png
 create mode 100644 src/assets/icons/Unknow.png
 create mode 100644 src/assets/icons/Visio.png
 create mode 100644 src/assets/icons/VisualStudio.png
 create mode 100644 src/assets/icons/Web.png
 create mode 100644 src/assets/icons/Webstorm.png
 create mode 100644 src/assets/icons/Windows.png
 create mode 100644 src/assets/icons/WindowsTerminal_PRE-01.png
 create mode 100644 src/assets/icons/Word.png
 create mode 100644 src/assets/icons/Wordbeifen.png
 create mode 100644 src/assets/icons/Zip.png
 create mode 100644 src/assets/icons/adobe-01-01-01.png
 create mode 100644 src/assets/icons/bianxingjingang.png
 create mode 100644 src/assets/icons/bianxingjingang1.png
 create mode 100644 src/assets/icons/chayue2.png
 create mode 100644 src/assets/icons/daiyue.png
 create mode 100644 src/assets/icons/excelbeifen.png
 create mode 100644 src/assets/icons/fl-01-01.png
 create mode 100644 src/assets/icons/nasa.png
 create mode 100644 src/assets/icons/pf-01.png
 create mode 100644 src/assets/icons/picture.png
 create mode 100644 src/assets/icons/pptbeifen.png
 create mode 100644 src/assets/icons/rar.png
 create mode 100644 src/assets/icons/tubiaozhizuomo3-01.png
 create mode 100644 src/assets/icons/tubiaozhizuomoban-01.png
 create mode 100644 src/assets/icons/tubiaozhizuomoban10-01.png
 create mode 100644 src/assets/icons/tubiaozhizuomoban11.png
 create mode 100644 src/assets/icons/tubiaozhizuomoban2-01-01.png
 create mode 100644 src/assets/icons/tubiaozhizuomoban4-01.png
 create mode 100644 src/assets/icons/tubiaozhizuomoban5-01.png
 create mode 100644 src/assets/icons/tubiaozhizuomoban6-01.png
 create mode 100644 src/assets/icons/tubiaozhizuomoban7-01-01.png
 create mode 100644 src/assets/icons/tubiaozhizuomoban8-01.png
 create mode 100644 src/assets/icons/tubiaozhizuomoban9-01.png
 create mode 100644 src/assets/icons/txtbeifen.png
 create mode 100644 src/assets/icons/video.png
 create mode 100644 src/assets/icons/video2.png
 create mode 100644 src/assets/icons/voice.png
 create mode 100644 src/assets/icons/wendang.png
 create mode 100644 src/assets/icons/wenjianjia.png
 create mode 100644 src/assets/light.svg
 create mode 100644 src/assets/login.png
 create mode 100644 src/assets/logo/logo.png
 create mode 100644 src/assets/particles.json
 create mode 100644 src/components/Bar.vue
 create mode 100644 src/components/Breadcrumb/index.vue
 create mode 100644 src/components/Cell/index.vue
 create mode 100644 src/components/ChartCard/index.vue
 create mode 100644 src/components/Charts/Keyboard.vue
 create mode 100644 src/components/Charts/LineMarker.vue
 create mode 100644 src/components/Charts/MixChart.vue
 create mode 100644 src/components/Charts/mixins/resize.js
 create mode 100644 src/components/ErrorLog/index.vue
 create mode 100644 src/components/FormGenParser/Parser.vue
 create mode 100644 src/components/FormGenRender/render.js
 create mode 100644 src/components/FormGenRender/slots/el-button.js
 create mode 100644 src/components/FormGenRender/slots/el-checkbox-group.js
 create mode 100644 src/components/FormGenRender/slots/el-input.js
 create mode 100644 src/components/FormGenRender/slots/el-radio-group.js
 create mode 100644 src/components/FormGenRender/slots/el-select.js
 create mode 100644 src/components/FormGenRender/slots/el-upload.js
 create mode 100644 src/components/GithubCorner/index.vue
 create mode 100644 src/components/Go-Admin/Doc/index.vue
 create mode 100644 src/components/Go-Admin/Donate/index.vue
 create mode 100644 src/components/Go-Admin/Git/index.vue
 create mode 100644 src/components/Hamburger/index.vue
 create mode 100644 src/components/HeaderSearch/index.vue
 create mode 100644 src/components/IconSelect/index.vue
 create mode 100644 src/components/IconSelect/requireIcons.js
 create mode 100644 src/components/ImageCropper/index.vue
 create mode 100644 src/components/ImageCropper/utils/data2blob.js
 create mode 100644 src/components/ImageCropper/utils/effectRipple.js
 create mode 100644 src/components/ImageCropper/utils/language.js
 create mode 100644 src/components/ImageCropper/utils/mimes.js
 create mode 100644 src/components/MDinput/index.vue
 create mode 100644 src/components/MiniArea/index.vue
 create mode 100644 src/components/MiniBar/index.vue
 create mode 100644 src/components/MiniProgress/index.vue
 create mode 100644 src/components/Pagination/index.vue
 create mode 100644 src/components/PanThumb/index.vue
 create mode 100644 src/components/RankList/index.vue
 create mode 100644 src/components/RightPanel/index.vue
 create mode 100644 src/components/Screenfull/index.vue
 create mode 100644 src/components/Share/DropdownMenu.vue
 create mode 100644 src/components/SvgIcon/index.vue
 create mode 100644 src/components/ThemePicker/index.vue
 create mode 100644 src/components/TopNav/index.vue
 create mode 100644 src/components/Trend/index.vue
 create mode 100644 src/components/Upload/SingleImage.vue
 create mode 100644 src/components/Upload/SingleImage2.vue
 create mode 100644 src/components/Upload/SingleImage3.vue
 create mode 100644 src/components/UploadExcel/index.vue
 create mode 100644 src/components/layout.vue
 create mode 100644 src/directive/el-drag-dialog/drag.js
 create mode 100644 src/directive/el-drag-dialog/index.js
 create mode 100644 src/directive/el-table/adaptive.js
 create mode 100644 src/directive/el-table/index.js
 create mode 100644 src/directive/permission/index.js
 create mode 100644 src/directive/permission/permisaction.js
 create mode 100644 src/directive/permission/permission.js
 create mode 100644 src/directive/sticky.js
 create mode 100644 src/directive/waves/index.js
 create mode 100644 src/directive/waves/waves.css
 create mode 100644 src/directive/waves/waves.js
 create mode 100644 src/filters/index.js
 create mode 100644 src/icons/index.js
 create mode 100644 src/icons/svg/404.svg
 create mode 100644 src/icons/svg/access.svg
 create mode 100644 src/icons/svg/add-db.svg
 create mode 100644 src/icons/svg/add-doc.svg
 create mode 100644 src/icons/svg/alarm-settings.svg
 create mode 100644 src/icons/svg/api-ctl.svg
 create mode 100644 src/icons/svg/api-doc.svg
 create mode 100644 src/icons/svg/api-gateway.svg
 create mode 100644 src/icons/svg/api-monitor.svg
 create mode 100644 src/icons/svg/api-server.svg
 create mode 100644 src/icons/svg/api-test.svg
 create mode 100644 src/icons/svg/app-group-fill.svg
 create mode 100644 src/icons/svg/archived.svg
 create mode 100644 src/icons/svg/base-info.svg
 create mode 100644 src/icons/svg/batch-update.svg
 create mode 100644 src/icons/svg/bug.svg
 create mode 100644 src/icons/svg/build.svg
 create mode 100644 src/icons/svg/calendar.svg
 create mode 100644 src/icons/svg/cascader.svg
 create mode 100644 src/icons/svg/chart.svg
 create mode 100644 src/icons/svg/checkbox.svg
 create mode 100644 src/icons/svg/clipboard.svg
 create mode 100644 src/icons/svg/code.svg
 create mode 100644 src/icons/svg/color.svg
 create mode 100644 src/icons/svg/component.svg
 create mode 100644 src/icons/svg/dashboard.svg
 create mode 100644 src/icons/svg/date-range.svg
 create mode 100644 src/icons/svg/date.svg
 create mode 100644 src/icons/svg/db.svg
 create mode 100644 src/icons/svg/del.svg
 create mode 100644 src/icons/svg/dev-tools.svg
 create mode 100644 src/icons/svg/dict.svg
 create mode 100644 src/icons/svg/doc.svg
 create mode 100644 src/icons/svg/documentation.svg
 create mode 100644 src/icons/svg/download.svg
 create mode 100644 src/icons/svg/drag copy.svg
 create mode 100644 src/icons/svg/drag.svg
 create mode 100644 src/icons/svg/druid.svg
 create mode 100644 src/icons/svg/edit.svg
 create mode 100644 src/icons/svg/education.svg
 create mode 100644 src/icons/svg/email.svg
 create mode 100644 src/icons/svg/err-list.svg
 create mode 100644 src/icons/svg/example.svg
 create mode 100644 src/icons/svg/excel.svg
 create mode 100644 src/icons/svg/exit-fullscreen.svg
 create mode 100644 src/icons/svg/eye-open.svg
 create mode 100644 src/icons/svg/eye.svg
 create mode 100644 src/icons/svg/form.svg
 create mode 100644 src/icons/svg/fullscreen.svg
 create mode 100644 src/icons/svg/github.svg
 create mode 100644 src/icons/svg/guide.svg
 create mode 100644 src/icons/svg/heart.svg
 create mode 100644 src/icons/svg/http-err.svg
 create mode 100644 src/icons/svg/icon.svg
 create mode 100644 src/icons/svg/info-setting.svg
 create mode 100644 src/icons/svg/input.svg
 create mode 100644 src/icons/svg/intel.svg
 create mode 100644 src/icons/svg/international.svg
 create mode 100644 src/icons/svg/job.svg
 create mode 100644 src/icons/svg/json-push.svg
 create mode 100644 src/icons/svg/language.svg
 create mode 100644 src/icons/svg/link.svg
 create mode 100644 src/icons/svg/list.svg
 create mode 100644 src/icons/svg/lock.svg
 create mode 100644 src/icons/svg/log.svg
 create mode 100644 src/icons/svg/logininfor.svg
 create mode 100644 src/icons/svg/map.svg
 create mode 100644 src/icons/svg/message.svg
 create mode 100644 src/icons/svg/money.svg
 create mode 100644 src/icons/svg/monitor.svg
 create mode 100644 src/icons/svg/nested.svg
 create mode 100644 src/icons/svg/network.svg
 create mode 100644 src/icons/svg/next-page.svg
 create mode 100644 src/icons/svg/number.svg
 create mode 100644 src/icons/svg/online.svg
 create mode 100644 src/icons/svg/operators.svg
 create mode 100644 src/icons/svg/pass.svg
 create mode 100644 src/icons/svg/password.svg
 create mode 100644 src/icons/svg/pdf.svg
 create mode 100644 src/icons/svg/people.svg
 create mode 100644 src/icons/svg/peoples.svg
 create mode 100644 src/icons/svg/phone.svg
 create mode 100644 src/icons/svg/post.svg
 create mode 100644 src/icons/svg/project-group.svg
 create mode 100644 src/icons/svg/project-manage.svg
 create mode 100644 src/icons/svg/pwd.svg
 create mode 100644 src/icons/svg/qq.svg
 create mode 100644 src/icons/svg/question.svg
 create mode 100644 src/icons/svg/radio.svg
 create mode 100644 src/icons/svg/rate.svg
 create mode 100644 src/icons/svg/return-code-doc.svg
 create mode 100644 src/icons/svg/return-code.svg
 create mode 100644 src/icons/svg/root-addr.svg
 create mode 100644 src/icons/svg/row.svg
 create mode 100644 src/icons/svg/safety.svg
 create mode 100644 src/icons/svg/scene.svg
 create mode 100644 src/icons/svg/search.svg
 create mode 100644 src/icons/svg/select.svg
 create mode 100644 src/icons/svg/server.svg
 create mode 100644 src/icons/svg/shopping.svg
 create mode 100644 src/icons/svg/signature.svg
 create mode 100644 src/icons/svg/size.svg
 create mode 100644 src/icons/svg/skill.svg
 create mode 100644 src/icons/svg/slider.svg
 create mode 100644 src/icons/svg/star.svg
 create mode 100644 src/icons/svg/statistics.svg
 create mode 100644 src/icons/svg/swagger.svg
 create mode 100644 src/icons/svg/switch.svg
 create mode 100644 src/icons/svg/system-tools.svg
 create mode 100644 src/icons/svg/system.svg
 create mode 100644 src/icons/svg/tab.svg
 create mode 100644 src/icons/svg/table.svg
 create mode 100644 src/icons/svg/textarea.svg
 create mode 100644 src/icons/svg/theme.svg
 create mode 100644 src/icons/svg/time-avg.svg
 create mode 100644 src/icons/svg/time-range.svg
 create mode 100644 src/icons/svg/time.svg
 create mode 100644 src/icons/svg/tool.svg
 create mode 100644 src/icons/svg/tree-table.svg
 create mode 100644 src/icons/svg/tree.svg
 create mode 100644 src/icons/svg/upload.svg
 create mode 100644 src/icons/svg/user-info.svg
 create mode 100644 src/icons/svg/user.svg
 create mode 100644 src/icons/svg/validCode.svg
 create mode 100644 src/icons/svg/vip.svg
 create mode 100644 src/icons/svg/webhock.svg
 create mode 100644 src/icons/svg/wechat.svg
 create mode 100644 src/icons/svg/zip.svg
 create mode 100644 src/icons/svgo.yml
 create mode 100644 src/layout/BasicLayout.vue
 create mode 100644 src/layout/components/AppMain.vue
 create mode 100644 src/layout/components/Navbar.vue
 create mode 100644 src/layout/components/Settings/index.vue
 create mode 100644 src/layout/components/Sidebar/FixiOSBug.js
 create mode 100644 src/layout/components/Sidebar/Item.vue
 create mode 100644 src/layout/components/Sidebar/Link.vue
 create mode 100644 src/layout/components/Sidebar/Logo.vue
 create mode 100644 src/layout/components/Sidebar/SidebarItem.vue
 create mode 100644 src/layout/components/Sidebar/index.vue
 create mode 100644 src/layout/components/TagsView/ScrollPane.vue
 create mode 100644 src/layout/components/TagsView/TagsView.vue
 create mode 100644 src/layout/components/TagsView/index.vue
 create mode 100644 src/layout/components/index.js
 create mode 100644 src/layout/index.vue
 create mode 100644 src/layout/mixin/ResizeHandler.js
 create mode 100644 src/main.js
 create mode 100644 src/permission.js
 create mode 100644 src/router/index.js
 create mode 100644 src/settings.js
 create mode 100644 src/store/getters.js
 create mode 100644 src/store/index.js
 create mode 100644 src/store/modules/app.js
 create mode 100644 src/store/modules/errorLog.js
 create mode 100644 src/store/modules/permission.js
 create mode 100644 src/store/modules/settings.js
 create mode 100644 src/store/modules/system.js
 create mode 100644 src/store/modules/tagsView.js
 create mode 100644 src/store/modules/user.js
 create mode 100644 src/styles/admin.css
 create mode 100644 src/styles/admin.min.css
 create mode 100644 src/styles/admin.scss
 create mode 100644 src/styles/btn.scss
 create mode 100644 src/styles/element-ui.scss
 create mode 100644 src/styles/element-variables.scss
 create mode 100644 src/styles/index.scss
 create mode 100644 src/styles/mixin.scss
 create mode 100644 src/styles/sidebar.scss
 create mode 100644 src/styles/transition.scss
 create mode 100644 src/styles/variables.css
 create mode 100644 src/styles/variables.min.css
 create mode 100644 src/styles/variables.scss
 create mode 100644 src/utils/auth.js
 create mode 100644 src/utils/costum.js
 create mode 100644 src/utils/dialog.js
 create mode 100644 src/utils/error-log.js
 create mode 100644 src/utils/eventbus.js
 create mode 100644 src/utils/generator/config.js
 create mode 100644 src/utils/generator/css.js
 create mode 100644 src/utils/generator/drawingDefalut.js
 create mode 100644 src/utils/generator/html.js
 create mode 100644 src/utils/generator/icon.json
 create mode 100644 src/utils/generator/index.js
 create mode 100644 src/utils/generator/js.js
 create mode 100644 src/utils/generator/render.js
 create mode 100644 src/utils/get-page-title.js
 create mode 100644 src/utils/index.js
 create mode 100644 src/utils/open-window.js
 create mode 100644 src/utils/permission.js
 create mode 100644 src/utils/request.js
 create mode 100644 src/utils/scroll-to.js
 create mode 100644 src/utils/storage.js
 create mode 100644 src/utils/validate.js
 create mode 100644 src/utils/zipdownload.js
 create mode 100644 src/vendor/Export2Excel.js
 create mode 100644 src/vendor/Export2Zip.js
 create mode 100644 src/views/admin/dict/data.vue
 create mode 100644 src/views/admin/dict/index.vue
 create mode 100644 src/views/admin/line-account-setting/index.vue
 create mode 100644 src/views/admin/line-api-group/index.vue
 create mode 100644 src/views/admin/line-api-user/index.vue
 create mode 100644 src/views/admin/line-coinnetwork/index.vue
 create mode 100644 src/views/admin/line-cointonetwork/index.vue
 create mode 100644 src/views/admin/line-direction/index.vue
 create mode 100644 src/views/admin/line-order-template-logs/index.vue
 create mode 100644 src/views/admin/line-order/index.vue
 create mode 100644 src/views/admin/line-pre-order/index.vue
 create mode 100644 src/views/admin/line-pre-script/index.vue
 create mode 100644 src/views/admin/line-price-limit/index.vue
 create mode 100644 src/views/admin/line-recharge/index.vue
 create mode 100644 src/views/admin/line-symbol-black/index.vue
 create mode 100644 src/views/admin/line-symbol-group/index.vue
 create mode 100644 src/views/admin/line-symbol/index.vue
 create mode 100644 src/views/admin/line-system-setting/index.vue
 create mode 100644 src/views/admin/line-uduncoin/index.vue
 create mode 100644 src/views/admin/line-user-funding-trend/index.vue
 create mode 100644 src/views/admin/line-user-profit-logs/index.vue
 create mode 100644 src/views/admin/line-user/index.vue
 create mode 100644 src/views/admin/line-wallet/index.vue
 create mode 100644 src/views/admin/sys-api/index.vue
 create mode 100644 src/views/admin/sys-config/index.vue
 create mode 100644 src/views/admin/sys-config/set.vue
 create mode 100644 src/views/admin/sys-dept/index.vue
 create mode 100644 src/views/admin/sys-login-log/index.vue
 create mode 100644 src/views/admin/sys-menu/index.vue
 create mode 100644 src/views/admin/sys-oper-log/index.vue
 create mode 100644 src/views/admin/sys-post/index.vue
 create mode 100644 src/views/admin/sys-role/index.vue
 create mode 100644 src/views/admin/sys-user/index.vue
 create mode 100644 src/views/admin/vts-recharge/index.vue
 create mode 100644 src/views/dashboard/admin/components/BarChart.vue
 create mode 100644 src/views/dashboard/admin/components/LineChart.vue
 create mode 100644 src/views/dashboard/admin/components/PanelGroup.vue
 create mode 100644 src/views/dashboard/admin/components/PieChart.vue
 create mode 100644 src/views/dashboard/admin/components/RaddarChart.vue
 create mode 100644 src/views/dashboard/admin/components/TodoList/Todo.vue
 create mode 100644 src/views/dashboard/admin/components/TodoList/index.scss
 create mode 100644 src/views/dashboard/admin/components/TodoList/index.vue
 create mode 100644 src/views/dashboard/admin/components/mixins/resize.js
 create mode 100644 src/views/dashboard/admin/index.vue
 create mode 100644 src/views/dashboard/editor/index.vue
 create mode 100644 src/views/dashboard/index.vue
 create mode 100644 src/views/dev-tools/build/index.vue
 create mode 100644 src/views/dev-tools/gen/basicInfoForm.vue
 create mode 100644 src/views/dev-tools/gen/editTable.vue
 create mode 100644 src/views/dev-tools/gen/genInfoForm.vue
 create mode 100644 src/views/dev-tools/gen/importTable.vue
 create mode 100644 src/views/dev-tools/gen/index.vue
 create mode 100644 src/views/dev-tools/swagger/index.vue
 create mode 100644 src/views/error-page/401.vue
 create mode 100644 src/views/error-page/404.vue
 create mode 100644 src/views/excel/components/AutoWidthOption.vue
 create mode 100644 src/views/excel/components/BookTypeOption.vue
 create mode 100644 src/views/excel/components/FilenameOption.vue
 create mode 100644 src/views/excel/upload-excel.vue
 create mode 100644 src/views/log/index.vue
 create mode 100644 src/views/login/auth-redirect.vue
 create mode 100644 src/views/login/components/SocialSignin.vue
 create mode 100644 src/views/login/index.vue
 create mode 100644 src/views/profile/components/Account.vue
 create mode 100644 src/views/profile/components/Activity.vue
 create mode 100644 src/views/profile/components/Timeline.vue
 create mode 100644 src/views/profile/components/UserCard.vue
 create mode 100644 src/views/profile/index.vue
 create mode 100644 src/views/profile/resetPwd.vue
 create mode 100644 src/views/profile/userAvatar.vue
 create mode 100644 src/views/profile/userInfo.vue
 create mode 100644 src/views/redirect/index.vue
 create mode 100644 src/views/schedule/index.vue
 create mode 100644 src/views/schedule/log.vue
 create mode 100644 src/views/sys-tools/monitor.vue
 create mode 100644 tests/unit/.eslintrc.js
 create mode 100644 tests/unit/components/Hamburger.spec.js
 create mode 100644 tests/unit/components/SvgIcon.spec.js
 create mode 100644 tests/unit/utils/formatTime.spec.js
 create mode 100644 tests/unit/utils/parseTime.spec.js
 create mode 100644 tests/unit/utils/validate.spec.js
 create mode 100644 vue.config.js
diff --git a/.editorconfig b/.editorconfig
new file mode 100644
index 0000000..3454886
--- /dev/null
+++ b/.editorconfig
@@ -0,0 +1,14 @@
+# https://editorconfig.org
+root = true
+
+[*]
+charset = utf-8
+indent_style = space
+indent_size = 2
+end_of_line = lf
+insert_final_newline = true
+trim_trailing_whitespace = true
+
+[*.md]
+insert_final_newline = false
+trim_trailing_whitespace = false
diff --git a/.env.development b/.env.development
new file mode 100644
index 0000000..e3638c5
--- /dev/null
+++ b/.env.development
@@ -0,0 +1,6 @@
+# just a flag
+ENV = 'development'
+
+# base api
+VUE_APP_BASE_API = 'http://192.168.1.11:6789'
+
diff --git a/.env.production b/.env.production
new file mode 100644
index 0000000..8994f69
--- /dev/null
+++ b/.env.production
@@ -0,0 +1,6 @@
+# just a flag
+ENV = 'production'
+
+# base api
+VUE_APP_BASE_API = ''
+
diff --git a/.env.staging b/.env.staging
new file mode 100644
index 0000000..097edb1
--- /dev/null
+++ b/.env.staging
@@ -0,0 +1,8 @@
+NODE_ENV = production
+
+# just a flag
+ENV = 'staging'
+
+# base api
+VUE_APP_BASE_API = ''
+
diff --git a/.eslintignore b/.eslintignore
new file mode 100644
index 0000000..e6529fc
--- /dev/null
+++ b/.eslintignore
@@ -0,0 +1,4 @@
+build/*.js
+src/assets
+public
+dist
diff --git a/.eslintrc.js b/.eslintrc.js
new file mode 100644
index 0000000..a0c1c70
--- /dev/null
+++ b/.eslintrc.js
@@ -0,0 +1,199 @@
+module.exports = {
+  root: true,
+  parserOptions: {
+    parser: 'babel-eslint',
+    sourceType: 'module'
+  },
+  env: {
+    browser: true,
+    node: true,
+    es6: true
+  },
+  extends: ['plugin:vue/recommended', 'eslint:recommended'],
+
+  // add your custom rules here
+  // it is base on https://github.com/vuejs/eslint-config-vue
+  rules: {
+    'vue/max-attributes-per-line': [2, {
+      'singleline': 10,
+      'multiline': {
+        'max': 1,
+        'allowFirstLine': false
+      }
+    }],
+    'vue/no-template-shadow': 'off',
+    'vue/singleline-html-element-content-newline': 'off',
+    'vue/multiline-html-element-content-newline': 'off',
+    'vue/name-property-casing': ['error', 'PascalCase'],
+    'vue/no-v-html': 'off',
+    'accessor-pairs': 2,
+    'arrow-spacing': [2, {
+      'before': true,
+      'after': true
+    }],
+    'block-spacing': [2, 'always'],
+    'brace-style': [2, '1tbs', {
+      'allowSingleLine': true
+    }],
+    'camelcase': [0, {
+      'properties': 'always'
+    }],
+    'comma-dangle': [2, 'never'],
+    'comma-spacing': [2, {
+      'before': false,
+      'after': true
+    }],
+    'comma-style': [2, 'last'],
+    'constructor-super': 2,
+    'curly': [2, 'multi-line'],
+    'dot-location': [2, 'property'],
+    'eol-last': 2,
+    'eqeqeq': ['error', 'always', { 'null': 'ignore' }],
+    'generator-star-spacing': [2, {
+      'before': true,
+      'after': true
+    }],
+    'handle-callback-err': [2, '^(err|error)$'],
+    'indent': [2, 2, {
+      'SwitchCase': 1
+    }],
+    'jsx-quotes': [2, 'prefer-single'],
+    'key-spacing': [2, {
+      'beforeColon': false,
+      'afterColon': true
+    }],
+    'keyword-spacing': [2, {
+      'before': true,
+      'after': true
+    }],
+    'new-cap': [2, {
+      'newIsCap': true,
+      'capIsNew': false
+    }],
+    'new-parens': 2,
+    'no-array-constructor': 2,
+    'no-caller': 2,
+    'no-console': 'off',
+    'no-class-assign': 2,
+    'no-cond-assign': 2,
+    'no-const-assign': 2,
+    'no-control-regex': 0,
+    'no-delete-var': 2,
+    'no-dupe-args': 2,
+    'no-dupe-class-members': 2,
+    'no-dupe-keys': 2,
+    'no-duplicate-case': 2,
+    'no-empty-character-class': 2,
+    'no-empty-pattern': 2,
+    'no-eval': 2,
+    'no-ex-assign': 2,
+    'no-extend-native': 2,
+    'no-extra-bind': 2,
+    'no-extra-boolean-cast': 2,
+    'no-extra-parens': [2, 'functions'],
+    'no-fallthrough': 2,
+    'no-floating-decimal': 2,
+    'no-func-assign': 2,
+    'no-implied-eval': 2,
+    'no-inner-declarations': [2, 'functions'],
+    'no-invalid-regexp': 2,
+    'no-irregular-whitespace': 2,
+    'no-iterator': 2,
+    'no-label-var': 2,
+    'no-labels': [2, {
+      'allowLoop': false,
+      'allowSwitch': false
+    }],
+    'no-lone-blocks': 2,
+    'no-mixed-spaces-and-tabs': 2,
+    'no-multi-spaces': 2,
+    'no-multi-str': 2,
+    'no-multiple-empty-lines': [2, {
+      'max': 1
+    }],
+    'no-native-reassign': 2,
+    'no-negated-in-lhs': 2,
+    'no-new-object': 2,
+    'no-new-require': 2,
+    'no-new-symbol': 2,
+    'no-new-wrappers': 2,
+    'no-obj-calls': 2,
+    'no-octal': 2,
+    'no-octal-escape': 2,
+    'no-path-concat': 2,
+    'no-proto': 2,
+    'no-redeclare': 2,
+    'no-regex-spaces': 2,
+    'no-return-assign': [2, 'except-parens'],
+    'no-self-assign': 2,
+    'no-self-compare': 2,
+    'no-sequences': 2,
+    'no-shadow-restricted-names': 2,
+    'no-spaced-func': 2,
+    'no-sparse-arrays': 2,
+    'no-this-before-super': 2,
+    'no-throw-literal': 2,
+    'no-trailing-spaces': 2,
+    'no-undef': 2,
+    'no-undef-init': 2,
+    'no-unexpected-multiline': 2,
+    'no-unmodified-loop-condition': 2,
+    'no-unneeded-ternary': [2, {
+      'defaultAssignment': false
+    }],
+    'no-unreachable': 2,
+    'no-unsafe-finally': 2,
+    'no-unused-vars': [2, {
+      'vars': 'all',
+      'args': 'none'
+    }],
+    'no-useless-call': 2,
+    'no-useless-computed-key': 2,
+    'no-useless-constructor': 2,
+    'no-useless-escape': 0,
+    'no-whitespace-before-property': 2,
+    'no-with': 2,
+    'one-var': [2, {
+      'initialized': 'never'
+    }],
+    'operator-linebreak': [2, 'after', {
+      'overrides': {
+        '?': 'before',
+        ':': 'before'
+      }
+    }],
+    'padded-blocks': [2, 'never'],
+    'quotes': [2, 'single', {
+      'avoidEscape': true,
+      'allowTemplateLiterals': true
+    }],
+    'semi': [2, 'never'],
+    'semi-spacing': [2, {
+      'before': false,
+      'after': true
+    }],
+    'space-before-blocks': [2, 'always'],
+    'space-before-function-paren': [2, 'never'],
+    'space-in-parens': [2, 'never'],
+    'space-infix-ops': 2,
+    'space-unary-ops': [2, {
+      'words': true,
+      'nonwords': false
+    }],
+    'spaced-comment': [2, 'always', {
+      'markers': ['global', 'globals', 'eslint', 'eslint-disable', '*package', '!', ',']
+    }],
+    'template-curly-spacing': [2, 'never'],
+    'use-isnan': 2,
+    'valid-typeof': 2,
+    'wrap-iife': [2, 'any'],
+    'yield-star-spacing': [2, 'both'],
+    'yoda': [2, 'never'],
+    'prefer-const': 2,
+    'no-debugger': process.env.NODE_ENV === 'production' ? 2 : 0,
+    'object-curly-spacing': [2, 'always', {
+      objectsInObjects: false
+    }],
+    'array-bracket-spacing': [2, 'never']
+  }
+}
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..78a752d
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,23 @@
+.DS_Store
+node_modules/
+dist/
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+**/*.log
+
+tests/**/coverage/
+tests/e2e/reports
+selenium-debug.log
+
+# Editor directories and files
+.idea
+.vscode
+*.suo
+*.ntvs*
+*.njsproj
+*.sln
+*.local
+
+package-lock.json
+yarn.lock
diff --git a/.npmrc b/.npmrc
new file mode 100644
index 0000000..3213cd0
--- /dev/null
+++ b/.npmrc
@@ -0,0 +1,4 @@
+sass_binary_site=https://npm.taobao.org/mirrors/node-sass/
+phantomjs_cdnurl=https://npm.taobao.org/mirrors/phantomjs/
+electron_mirror=https://npm.taobao.org/mirrors/electron/
+registry=https://registry.npmjs.org/
\ No newline at end of file
diff --git a/.travis.yml b/.travis.yml
new file mode 100644
index 0000000..f4be7a0
--- /dev/null
+++ b/.travis.yml
@@ -0,0 +1,5 @@
+language: node_js
+node_js: 10
+script: npm run test
+notifications:
+  email: false
diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 0000000..2e721d5
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,14 @@
+FROM registry.cn-shanghai.aliyuncs.com/lwmeng/node:lts-alpine as build-stage
+WORKDIR /app
+COPY package*.json ./
+RUN npm install -g cnpm --registry=https://registry.npmmirror.com
+RUN cnpm install
+COPY . .
+RUN npm run build:prod
+
+# production stage
+FROM registry.cn-shanghai.aliyuncs.com/lwmeng/nginx
+COPY --from=build-stage /app/dist /usr/share/nginx/html
+
+EXPOSE 80
+CMD ["nginx", "-g", "daemon off;"]
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..2e5981c
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2020 wenjianzhang
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/README.Zh-cn.md b/README.Zh-cn.md
new file mode 100644
index 0000000..524adb2
--- /dev/null
+++ b/README.Zh-cn.md
@@ -0,0 +1,298 @@
+# go-admin
+
+  
+
+
+[](https://github.com/go-admin-team/go-admin)
+[](https://github.com/go-admin-team/go-admin/releases)
+[](https://github.com/go-admin-team/go-admin)
+
+[English](https://github.com/go-admin-team/go-admin/blob/master/README.md) | 简体中文
+
+
+基于Gin + Vue + Element UI的前后端分离权限管理系统,系统初始化极度简单,只需要配置文件中,修改数据库连接,系统支持多指令操作,迁移指令可以让初始化数据库信息变得更简单,服务指令可以很简单的启动api服务
+
+[在线文档](https://doc.go-admin.dev)
+
+[github在线文档](https://wenjianzhang.github.io)
+
+[gitee在线文档](http://mydearzwj.gitee.io/go-admin-doc/)
+
+[后端项目](https://github.com/go-admin-team/go-admin)
+
+[视频教程](https://space.bilibili.com/565616721/channel/detail?cid=125737)
+
+## ✨ 特性
+
+- 遵循 RESTful API 设计规范
+
+- 基于 GIN WEB API 框架,提供了丰富的中间件支持(用户认证、跨域、访问日志、追踪ID等)
+
+- 基于Casbin的 RBAC 访问控制模型
+
+- JWT 认证
+
+- 支持 Swagger 文档(基于swaggo)
+
+- 基于 GORM 的数据库存储,可扩展多种类型数据库 
+
+- 配置文件简单的模型映射,快速能够得到想要的配置
+
+- 代码生成工具
+
+- 表单构建工具
+
+- 多指令模式
+
+- TODO: 单元测试
+
+
+## 🎁 内置
+
+1. 用户管理:用户是系统操作者,该功能主要完成系统用户配置。
+2. 部门管理:配置系统组织机构(公司、部门、小组),树结构展现支持数据权限。
+3. 岗位管理:配置系统用户所属担任职务。
+4. 菜单管理:配置系统菜单,操作权限,按钮权限标识,接口权限等。
+5. 角色管理:角色菜单权限分配、设置角色按机构进行数据范围权限划分。
+6. 字典管理:对系统中经常使用的一些较为固定的数据进行维护。
+7. 参数管理:对系统动态配置常用参数。
+8. 操作日志:系统正常操作日志记录和查询;系统异常信息日志记录和查询。
+9. 登录日志:系统登录日志记录查询包含登录异常。
+1. 接口文档:根据业务代码自动生成相关的api接口文档。
+1. 代码生成:根据数据表结构生成对应的增删改查相对应业务,全程可视化操作,让基本业务可以零代码实现。
+1. 表单构建:自定义页面样式,拖拉拽实现页面布局。
+1. 服务监控:查看一些服务器的基本信息。
+1. 内容管理:demo功能,下设分类管理、内容管理。可以参考使用方便快速入门。
+
+## 准备工作
+
+你需要在本地安装 [go] [gin] [node](http://nodejs.org/) 和 [git](https://git-scm.com/) 
+
+同时配套了系列教程包含视频和文档,如何从下载完成到熟练使用,强烈建议大家先看完这些教程再来实践本项目!!!
+
+### 轻松实现go-admin写出第一个应用 - 文档教程
+
+[步骤一 - 基础内容介绍](http://doc.zhangwj.com/go-admin-site/guide/intro/tutorial01.html)
+
+[步骤二 - 实际应用 - 编写增删改查](http://doc.zhangwj.com/go-admin-site/guide/intro/tutorial02.html) 
+
+### 手把手教你从入门到放弃 - 视频教程 
+
+[如何启动go-admin](https://www.bilibili.com/video/BV1z5411x7JG)
+
+[使用生成工具轻松实现业务](https://www.bilibili.com/video/BV1Dg4y1i79D)
+
+[v1.1.0版本代码生成工具-释放双手](https://www.bilibili.com/video/BV1N54y1i71P) [进阶]
+
+[多命令启动方式讲解以及IDE配置](https://www.bilibili.com/video/BV1Fg4y1q7ph)
+
+[go-admin菜单的配置说明](https://www.bilibili.com/video/BV1Wp4y1D715) [必看]
+
+[如何配置菜单信息以及接口信息](https://www.bilibili.com/video/BV1zv411B7nG) [必看]
+
+[go-admin权限配置使用说明](https://www.bilibili.com/video/BV1rt4y197d3) [必看]
+
+[go-admin数据权限使用说明](https://www.bilibili.com/video/BV1LK4y1s71e) [必看]
+
+
+**如有问题请先看上述使用文档和文章,若不能满足,欢迎 issue 和 pr ,视频教程和文档持续更新中**
+
+## 📦 本地开发
+
+### 环境要求
+
+go 1.17 
+
+node版本: v14.16.0
+
+npm版本: 6.14.11
+
+### 开发目录创建
+
+```bash
+
+# 创建开发目录
+mkdir goadmin
+cd goadmin
+```
+
+### 获取代码
+
+> 重点注意:两个项目必须放在同一文件夹下;
+
+```bash
+# 获取后端代码
+git clone https://github.com/go-admin-team/go-admin.git
+
+# 获取前端代码
+git clone https://github.com/go-admin-team/go-admin-ui.git
+
+```
+
+
+### 启动说明
+
+#### 服务端启动说明
+
+```bash
+# 进入 go-admin 后端项目
+cd ./go-admin
+
+# 编译项目
+go build
+
+# 修改配置 
+# 文件路径  go-admin/config/settings.yml
+vi ./config/setting.yml 
+
+# 1. 配置文件中修改数据库信息 
+# 注意: settings.database 下对应的配置数据
+# 2. 确认log路径
+```
+
+:::tip ⚠️注意 在windows环境如果没有安装中CGO,会出现这个问题;
+
+```bash
+E:\go-admin>go build
+# github.com/mattn/go-sqlite3
+cgo: exec /missing-cc: exec: "/missing-cc": file does not exist
+```
+
+or
+
+```bash
+D:\Code\go-admin>go build
+# github.com/mattn/go-sqlite3
+cgo: exec gcc: exec: "gcc": executable file not found in %PATH%
+```
+
+[解决cgo问题进入](https://doc.go-admin.dev/guide/other/faq.html#_5-cgo-exec-missing-cc-exec-missing-cc-file-does-not-exist)
+
+:::
+
+#### 初始化数据库,以及服务启动
+
+``` bash
+# 首次配置需要初始化数据库资源信息
+# macOS or linux 下使用
+$ ./go-admin migrate -c=config/settings.dev.yml
+
+# ⚠️注意:windows 下使用
+$ go-admin.exe migrate -c=config/settings.dev.yml
+
+
+# 启动项目,也可以用IDE进行调试
+# macOS or linux 下使用
+$ ./go-admin server -c config/settings.yml
+
+
+# ⚠️注意:windows 下使用
+$ go-admin.exe server -c config/settings.yml
+```
+
+#### 使用docker 编译启动
+
+```shell
+# 编译镜像
+docker build -t go-admin .
+
+# 启动容器,第一个go-admin是容器名字,第二个go-admin是镜像名称
+# -v 映射配置文件 本地路径:容器路径
+docker run --name go-admin -p 8000:8000 -v /config/settings.yml:/config/settings.yml -d go-admin-server
+```
+
+
+
+#### 文档生成
+
+```bash
+go generate
+```
+
+#### 交叉编译
+```bash
+# windows
+env GOOS=windows GOARCH=amd64 go build main.go
+
+# or
+# linux
+env GOOS=linux GOARCH=amd64 go build main.go
+```
+
+### UI交互端启动说明
+
+```bash
+
+# 安装依赖
+npm install
+
+# 建议不要直接使用 cnpm 安装依赖,会有各种诡异的 bug。可以通过如下操作解决 npm 下载速度慢的问题
+npm install --registry=https://registry.npm.taobao.org
+
+# 启动服务
+npm run dev
+```
+
+## 🎬 在线体验
+> admin  /  123456
+
+演示地址:[http://www.go-admin.dev](http://www.go-admin.dev/#/login)
+
+
+## 📨 互动
+
+
| + | + | + | 
| 微信+ | 此群已满+ | + | 
 +
+
+## 🤝 特别感谢
+1. [chengxiao](https://github.com/chengxiao)
+2. [gin](https://github.com/gin-gonic/gin)
+2. [casbin](https://github.com/casbin/casbin)
+2. [spf13/viper](https://github.com/spf13/viper)
+2. [gorm](https://github.com/jinzhu/gorm)
+2. [gin-swagger](https://github.com/swaggo/gin-swagger)
+2. [jwt-go](https://github.com/dgrijalva/jwt-go)
+2. [vue-element-admin](https://github.com/PanJiaChen/vue-element-admin)
+2. [ruoyi-vue](https://gitee.com/y_project/RuoYi-Vue)
+2. [form-generator](https://github.com/JakHuang/form-generator)
+
+## 🤟 打赏
+
+> 如果你觉得这个项目帮助到了你,你可以帮作者买一杯果汁表示鼓励 :tropical_drink:
+
+
+
+
+## 🤝 特别感谢
+1. [chengxiao](https://github.com/chengxiao)
+2. [gin](https://github.com/gin-gonic/gin)
+2. [casbin](https://github.com/casbin/casbin)
+2. [spf13/viper](https://github.com/spf13/viper)
+2. [gorm](https://github.com/jinzhu/gorm)
+2. [gin-swagger](https://github.com/swaggo/gin-swagger)
+2. [jwt-go](https://github.com/dgrijalva/jwt-go)
+2. [vue-element-admin](https://github.com/PanJiaChen/vue-element-admin)
+2. [ruoyi-vue](https://gitee.com/y_project/RuoYi-Vue)
+2. [form-generator](https://github.com/JakHuang/form-generator)
+
+## 🤟 打赏
+
+> 如果你觉得这个项目帮助到了你,你可以帮作者买一杯果汁表示鼓励 :tropical_drink:
+
+ +
+## 🤝 链接
+[Go开发者成长线路图](http://www.golangroadmap.com/)
+
+## 🔑 License
+
+[MIT](https://github.com/go-admin-team/go-admin/blob/master/LICENSE.md)
+
+Copyright (c) 2020 wenjianzhang
\ No newline at end of file
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..71297d3
--- /dev/null
+++ b/README.md
@@ -0,0 +1,284 @@
+# go-admin
+
+
+
+## 🤝 链接
+[Go开发者成长线路图](http://www.golangroadmap.com/)
+
+## 🔑 License
+
+[MIT](https://github.com/go-admin-team/go-admin/blob/master/LICENSE.md)
+
+Copyright (c) 2020 wenjianzhang
\ No newline at end of file
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..71297d3
--- /dev/null
+++ b/README.md
@@ -0,0 +1,284 @@
+# go-admin
+
+  | + | + | 
| + | 
 +
+
+## 🤝 Thanks
+1. [chengxiao](https://github.com/chengxiao)
+2. [gin](https://github.com/gin-gonic/gin)
+2. [casbin](https://github.com/casbin/casbin)
+2. [spf13/viper](https://github.com/spf13/viper)
+2. [gorm](https://github.com/jinzhu/gorm)
+2. [gin-swagger](https://github.com/swaggo/gin-swagger)
+2. [jwt-go](https://github.com/dgrijalva/jwt-go)
+2. [vue-element-admin](https://github.com/PanJiaChen/vue-element-admin)
+2. [ruoyi-vue](https://gitee.com/y_project/RuoYi-Vue)
+2. [form-generator](https://github.com/JakHuang/form-generator)
+
+## 🤟 Sponsor Us
+
+> If you think this project helped you, you can buy a glass of juice for the author to show encouragement :tropical_drink:
+
+
+
+
+## 🤝 Thanks
+1. [chengxiao](https://github.com/chengxiao)
+2. [gin](https://github.com/gin-gonic/gin)
+2. [casbin](https://github.com/casbin/casbin)
+2. [spf13/viper](https://github.com/spf13/viper)
+2. [gorm](https://github.com/jinzhu/gorm)
+2. [gin-swagger](https://github.com/swaggo/gin-swagger)
+2. [jwt-go](https://github.com/dgrijalva/jwt-go)
+2. [vue-element-admin](https://github.com/PanJiaChen/vue-element-admin)
+2. [ruoyi-vue](https://gitee.com/y_project/RuoYi-Vue)
+2. [form-generator](https://github.com/JakHuang/form-generator)
+
+## 🤟 Sponsor Us
+
+> If you think this project helped you, you can buy a glass of juice for the author to show encouragement :tropical_drink:
+
+ +
+## 🤝 Link
+[Go developer growth roadmap](http://www.golangroadmap.com/)
+
+## 🔑 License
+
+[MIT](https://github.com/go-admin-team/go-admin/blob/master/LICENSE.md)
+
+Copyright (c) 2020 wenjianzhang
diff --git a/babel.config.js b/babel.config.js
new file mode 100644
index 0000000..34be5d7
--- /dev/null
+++ b/babel.config.js
@@ -0,0 +1,10 @@
+module.exports = {
+  presets: [
+    '@vue/cli-plugin-babel/preset'
+  ],
+  env: {
+    development: {
+      plugins: ['dynamic-import-node']
+    }
+  }
+}
diff --git a/build/index.js b/build/index.js
new file mode 100644
index 0000000..0c57de2
--- /dev/null
+++ b/build/index.js
@@ -0,0 +1,35 @@
+const { run } = require('runjs')
+const chalk = require('chalk')
+const config = require('../vue.config.js')
+const rawArgv = process.argv.slice(2)
+const args = rawArgv.join(' ')
+
+if (process.env.npm_config_preview || rawArgv.includes('--preview')) {
+  const report = rawArgv.includes('--report')
+
+  run(`vue-cli-service build ${args}`)
+
+  const port = 9526
+  const publicPath = config.publicPath
+
+  var connect = require('connect')
+  var serveStatic = require('serve-static')
+  const app = connect()
+
+  app.use(
+    publicPath,
+    serveStatic('./dist', {
+      index: ['index.html', '/']
+    })
+  )
+
+  app.listen(port, function () {
+    console.log(chalk.green(`> Preview at  http://localhost:${port}${publicPath}`))
+    if (report) {
+      console.log(chalk.green(`> Report at  http://localhost:${port}${publicPath}report.html`))
+    }
+
+  })
+} else {
+  run(`vue-cli-service build ${args}`)
+}
diff --git a/dist.rar b/dist.rar
new file mode 100644
index 0000000000000000000000000000000000000000..10d7e515870e727d48ea413420f1eac1c8ab5b27
GIT binary patch
literal 4122482
zcmV(>K-j-hVR9iF2LS;4wfs5_0R;&F2mt}Tw)=sA060;^e<}h43xEIwfB+x>0001h
zAOH?zX>)WhV{dL|X=g5Ka|#0j&UM1VmTcPrz>VVVHv$6-j+p`k!=?}*hEDMufFl4I
zWNCABFJp6aFJW+SE-+&-G-F~pH7;Xwa|#0j&rZ9-mTcPrj520|PzFOpG(|H|Rt51|
z<~?S$m%OSjy2&
+
+## 🤝 Link
+[Go developer growth roadmap](http://www.golangroadmap.com/)
+
+## 🔑 License
+
+[MIT](https://github.com/go-admin-team/go-admin/blob/master/LICENSE.md)
+
+Copyright (c) 2020 wenjianzhang
diff --git a/babel.config.js b/babel.config.js
new file mode 100644
index 0000000..34be5d7
--- /dev/null
+++ b/babel.config.js
@@ -0,0 +1,10 @@
+module.exports = {
+  presets: [
+    '@vue/cli-plugin-babel/preset'
+  ],
+  env: {
+    development: {
+      plugins: ['dynamic-import-node']
+    }
+  }
+}
diff --git a/build/index.js b/build/index.js
new file mode 100644
index 0000000..0c57de2
--- /dev/null
+++ b/build/index.js
@@ -0,0 +1,35 @@
+const { run } = require('runjs')
+const chalk = require('chalk')
+const config = require('../vue.config.js')
+const rawArgv = process.argv.slice(2)
+const args = rawArgv.join(' ')
+
+if (process.env.npm_config_preview || rawArgv.includes('--preview')) {
+  const report = rawArgv.includes('--report')
+
+  run(`vue-cli-service build ${args}`)
+
+  const port = 9526
+  const publicPath = config.publicPath
+
+  var connect = require('connect')
+  var serveStatic = require('serve-static')
+  const app = connect()
+
+  app.use(
+    publicPath,
+    serveStatic('./dist', {
+      index: ['index.html', '/']
+    })
+  )
+
+  app.listen(port, function () {
+    console.log(chalk.green(`> Preview at  http://localhost:${port}${publicPath}`))
+    if (report) {
+      console.log(chalk.green(`> Report at  http://localhost:${port}${publicPath}report.html`))
+    }
+
+  })
+} else {
+  run(`vue-cli-service build ${args}`)
+}
diff --git a/dist.rar b/dist.rar
new file mode 100644
index 0000000000000000000000000000000000000000..10d7e515870e727d48ea413420f1eac1c8ab5b27
GIT binary patch
literal 4122482
zcmV(>K-j-hVR9iF2LS;4wfs5_0R;&F2mt}Tw)=sA060;^e<}h43xEIwfB+x>0001h
zAOH?zX>)WhV{dL|X=g5Ka|#0j&UM1VmTcPrz>VVVHv$6-j+p`k!=?}*hEDMufFl4I
zWNCABFJp6aFJW+SE-+&-G-F~pH7;Xwa|#0j&rZ9-mTcPrj520|PzFOpG(|H|Rt51|
z<~?S$m%OSjy2&z8*6y*+}bP747sPA;eHAPv~2{>C??~-c=Yehz!ZgfXgNzpRMk{BQm z==iZx+US5XK1-v-Z&y*BNcsTI>UH;}3+zdhuPmLL4U+rCBjB~ 7b!iahhQ{y8Uz0TQM|V(+)#uo0?Q~P~?|pNq}ipk=&9}u0N!7s0s{@ zm% 9)V0y6B7tpUJ1!`d>C)9{kfCD!9)jf zg;i*X`|q^TlJG6U>$-Z_rc>W+F^0pTh2I8PZE)8WRs;*%@^cB;E*|-7 `0%`+&1B(DAki>|%f@bw5MC?@w6M@&5vG|5 z;LM6|ct0QJ+)m42q9QL7gK`@j9!k)~+1e_;>Pe@1QEhPDTyiKs9k-Pz;Ngcb$Bo z)uW}TMxuO^?jPak I@QXpOI2TQlMWE5r4safq$3f zm0RiDVqW_zg99bojcb9Rm!fbd#YUp^dsZ()38?Qg@H3E3Cf44{Px1#q3P3SfuOL5e z4SnEjrSa6hkSGVifXS 2RG;dILLL{DZ)02!`Fi#&E> gE{b*$yUD#}bk5`b9IS478bA$bZ1!-hbd_e!y#8_-Vat%H(VERJQLW5$CQRy)g zDM5xK7N1~SNa-zMe89K*4PH1gV=ztM50B$zyIrD0sE5sDlMb;!n$};YIcj5JvBP`Z z5zyl;X R!)%WM`>Wu_{_+8AY(^&lkH0|jN%>iQ%z0 UUpU67~aI z(h@?$JV6kmIz^KZP}84J4<=&}d+#JT%x%E>fY^EaVV#_l+6>d^&$?MA;F97A`d?6j zk&?&jzL$15fT1oz>SZ!w`zxuM&6~l%_iJ|uRMcVvh<_{Wq-Ngbiq5KtP)F%=#POJy zZ4~`%fK2l7l7uzs)> uVG%~b(X(Pa&Mh`PGLXx&>aT4DP*>Y`D4((1Vt_z*g# zO0>gQwTxF%D9KTaC#e6Tqt1+|c2bbQ+2hlbQEa`IxTbulEpUtoHrD*U%fEOqc>t5k z^~7sOGn(sBfQ_$u v;8KYQsX zU 6tNC6Pecb9T>oWKVk`0cdD13HYv20KIpTR(RBM z0@B2k#}d0n0DAn|IzqI0l+g2nF9!Eums%W#Ci)^xcLN>p!X1m7&xjLF1)_lx$_fL? z2)|rUgh?(zKwl<+&kJYu#hh5Ra)n`QiD8L%{5Ic|>RTlok4xpsl=w~>IxqdUS$(kK zItxV(i61$l4F1qlWLvpY>Trc#>*{e*spO-vaBU?ravLbTI`Eb|Oe5o~*IbNne4l1| zL4pOxb~vsc2p;kK5LI&OwO3cSoSlbjWbPZ=_gnNj0*+*1YfX{>r$B7wJT8bmad6EH z+wABSLxFDuuq!i$ha3vWW1-|n#BXiueVAAlZ^JzEI+lMt8wl0Hv0Tcz;<{z;r6Qz} z;9gklgEn_zo!Ol;Cr_eSB>`xPyz8#e+yHp)nXi|a$2%x=fTWb&Rzbd0+mKlzC>;99 zZey~0Qp>+wvXH{j3UJ=I9x1DZgT0RIN&e7UdgVPE4WYO#yK!Eh0Ef9^Wr=>i&M zqA!IPwiyxD@4c~ }pMlhH zXokWX7u8$G*hNbz?*e_3TR39=t?4@E3`>VRbJf>Oj|M4a4+}AzUxgO|d1_)efM&Qn z9YY)l47Rxtf1C?1yD<5#ZAr({I1fo0hc7;l8Yv;YBWt=Vu!17|(7xp(N1X9Sn;7{s z@^MC9veL;m8!d&};cCzO45*Y`3pq@S)Ak3`h)>xpZZcWUU`&%U4OKs1qbTg(0k~`s zSm@5VW%CZFF$R)dUP~zG-KqIS;|_h=s(Q{)BCPoM8S-VFyTKhqS82-Y7_J?E@scPT z-eHuyu))ZnII&t89S*Wj1@9uhw;&jvl6JMkk^>hC0o1@4I;{9DDm_l=MvC+h@P5NS zF%T#AawYG!sOSMRt?~SPO~F%UgMp{Q9~kWvKC=NR($*pSGWeAS2L+n0ii&y80A*5f zPN_ 60%MUc!AJ>iP@WDt&wgUWu>=*w49=H+&=t@ z2iykqnQmXtW7VaG7(pSUP?3s5GjMq{k{_iiHOFkK{C+5ov?@m>Rf;gPz5{?&a%qlC zWFxxD%Tr@vX(TQ`jU=5RC=nIu*P)x}_aD6N6+j~JBs%Qg9jT}G4vUJGu-_^$67M>) zU51)+>hq0op@649XE$FjO=?}>@3PU>OOO6nJr&5AxZbEj5^O@j(zc5YxjyTwvM?=- zG;mdUZ>m}k4g7A>ULXy%v=cNfMXi^JK0MsqIu?|`99=zrq#NMW+Q6|6Fg6bsfmM^H zn5eDSWymMiK)ns*|8+2?9kA6jKW$QY*ScO@Pl>DzA{wu=5F)x>K%iGb_2x<&%^k)> zSnyHP+lej uF|IW2UA z*rEfYlK^OYuLW_EuFRwm6SNM{qZ~_>LeL(A1f8v$#f{`xI$%n9bGVvplA?11#pyK= zg@`T_TZ(e>n8iLhM|t&pMfM #f@fJd^EI*a8pNk0zXt9D2C)8Q= z@@A@Wj _#cbnvnu0+HB^>uYv=;4H;GCt>TzP7PG=ubqR_BhJS{Qv^PLD$J zH~40wj(Ll_gBeB`umUms+em*L>Y6) NoHO&}V#Vf*^i5+wlM6I2Al5QI2_kFxJAJF2`MR3Cm36P6q$>vaoGQP;EH8Z7Q z>0OG^JQ)k?d>8};v4%sn3gXCD62iE9YAzSBA!uPQ@xcemCou-T80g&^Z7{{4NBeI0 zz=TkntsS-~0AJ+=PZ&b0BQ?#~#)-9 cU`(qd#M_$?mD_OaPhsY3&8Nn+ zP)EGap06P2;aoJ#no0CU6WN4f-WN%ve9nj 5#0vM$5(V@We ?Sx2GV6lu8L|Rjpkm&sa6!uOU~j-F>?D_l`U!Wpu8CvCT!{wHE+~kM z0xO-si|?}*)K{3}@DBV7fa%e#OgXkc_5Xhp_>^7j*krKC%9`}p1+mK3MI9JB rqa)X`aOma+t0AeYg?W$uV(<_kt>uqhNcFs zC1>~PArvt(xXz#g99SU{|5a8!Rcm++4LUf=kQ_C=aR!Q8%u&i8C|k47mPKEU9f&de zHZ#{mi;~ln5n@8RYB@6=lpJDXAop8;lZt?*D$41oF<9v$ZGtOca52I%3J^kW&a0*3 zm})W~zAvPHOcKD??0Kg?64%I*661n3mSA}M>67=OCoYP7f@=H8lQY$&?!KwAa0nIU z(aQVrSx@xWT3`@jb?NkhTyV1Y--&sS;2++OM6e)%uSV0w>zYFe-I>vXk|d#S)KUf8 zIQpFDScul~F$nXe#<<7}9Ci?p0rjx>u)~K+v!!B5Gz|&ZkjYo(N_?O>KL@jvKOBA_ zW_<9_6+;l+X{o(p?#<|I6q$&dh`b(NJlLYQ{v6{{VYhfrdyOg?MKa0C{8pI(tBV~= zRnTIKb1}CfS$_ity`h2ZO(CByj)ATRGcriBZ{nh9g9BQ<_xdcV1aDqUhmIR%OGIQC zy3{y{-H=x;t}V)ZZLI%kG4Lm1F|Bt3#rek?-R8`E!pPMX;e=?WqA8m|`4JEaZ$o}>TOl-Q7q7^CV98fKHfl4FcEw1?)6M^Z zs8C5lcnV{XrQeI7$5)w%)I6HwWG#6z=qD>Jt8iU-mNk5S4hj%IS_ezndht87QJ12K zg!ta&MB4~^1+L8ZOACR^qk$&heLegN_isH&(7AI6h;``t&(Q|IOenm8X5K6`M->j* z6VeeBpHYqrThV0o%{+T&z;>LMd#qgwIqiE+#HTBeX!{6KYWSmi>24j9ccwY{k7}tv z2`A-&<&8)dA?L6qafobyn`5O!(oAS3A3d!2-~^EYRdX_Cde}DJO#C7L!fH(&dVO~n z5rN(1HpAe1Ahw(v?a)#r6Cr_AR0+} SmyVia?FT_VuFozkwt}RvM`{~85_TcFWW!UtgxSY0u?qhKJq$VES z0K^O1nl%et6vocL7M`p<%$W=Yq9O= vTGAw6pMx06zpD-;3xrA0q2-=}7QKq*# z^`6+j4z15+iFN4IgVaCK4Is^6Oqq5 HM9GRw)VCzW8q-sM)By`Yshb4Q?>cVBcctbp?~_75Wl20TZ*iR%ol zs*392k2a-u!A1&+tm{-kV4BLoYm_8Ht}mOjmyNF}6&f4#!45)kuuw@Z_plGQ;|d?Z z2=jbbkgrLZS!XKr)`n`v+gr&Lz%~x;UqlZ~a-vMJtiQ@qGa+x=N0Cb7`VDl+VLmp{ zTa=z+Ty +OE``T1t?7Y4t*p_-E%8|m~LExXgzhIOkaRX z-}&LUtGwE~u3I<^Ra4~4C oRT@bnCb7zuRNb z$KKctFl@&fRzcIcEb2)$Bk$XdTGKhSzNoY|(<#Y~=_5l1J2vtaFB1eXyM8{44eKtR z7i{4MGOT$isX)f*p7MwnvQi`Rj76_=izQD=&S0Ib=kJ+rev{gYz39e^xEb-_KoiZc z7tHPkd~mN(=g|-a16U8AtG0pg+7ib-op@U`Xga|NW%b>TLL3S>$xFcfupk2fk`gjB z*fcz2EE@H^U{QW&da{i?P^*i{bQ_FK7FGhM0Y%PYf!y X&T6o8kJ`Y5mkp@|bQ{Ey4LS1B>*(Y9alu8WGRwco@ X+G^`%_#_E_#eoD z%(>EL8pus4k1br+-kRclsLcpzZBt0Nf(ph)-GjcZAlf!bGoB${uH-uw8uIuosXWHx zZIUHXMiA|iNI*BXq%xFRY)qz#58T)khsf$M#ZUY|%*N?%QB`FvVnp!KncJwb-ij z<<17e06U&d0bW!9x_ERrH+MBv-ee}Du_u pl}lhDt}I8qXdh7*w8c$Z6HO zBgfsBgZ+maUvj{V^V!whK>0e-%=)sg{WObudzz6t3?N^pa&_rRJwsvwxZ9uK%?-xw z*+j)lx)GW>9s$LHD0vcV=-q}I#`n_p%=i5ROnN^X8lY6#M~KZ~l=MK7#av8xXz@ri znb!O;AB38kTC$)YH&3NkqLXO*T96&8i>s=j$Kc*&NiY6N^qKShx8?a~_OoiS47oDY zO9A()rDVe;wmQ?H8moEI`?a6PzH3;u%}7|hZ13Iupo~-#ow8D9nGsHEkgII*I%26> zhe$@_g*B8j?b%E(!kh}8(lv>a7gZNFb%H;XI(eFU_QE7JFv{GsG__0-DoTYBTIBH3 zJC;w(U?SH@stb{&2x>AUPgV4o-VqsL==u$?IQ%*NG+52E2<*d0p2Z)Yz84f0M2K(J zZ@;Npia=$3OYwol9zFpDhK#}!mBGNCY}zG}k>Rb^UK2>6#5XSxnTec%=j?q}N?A#h zLK%HZe2rcd9epmtaHWRnptZXE0eBfr;d8boP&^U>=1esWe+k94ba`mNp?P&_L SU!k<{ee`H`M-%16y8*F8EKJ)g_GEG*I}kcPDvV>% zmvh{lkNV35E-WUWu}CIH-- *oBq~tj28wBUM0d(J1N-|tdKSnJv$D<96$541+0_B^j_Y4xA z<8fmp^aQA!YKT^2jKmomj2j)7?I$TFP-ZGk!9!_hNsF^LR!j sQWQb|3FtY?U zFcK_y@T$ik*5W595ssFHYQF^EG+lSi)GgC2SCwU^LM=k{b;MpqSo&*{YVrWjUlbV1 zd+P(*aG8L{y>9`SfE*Q@M7bJ3tO0#V8jtErMM+kw0m*8yO*#27a%te4NEKeD ~L`>oi3M-pb>K!LgZr7{HpBgrKrR&eg2>%_5C)~k9 JeiM=W=bR9s1IzYRbcWRq}2L =V)U&l7F9xN2i)V;dM@L& zN~=_iWZcQ``s4z B3lYR(DN2 zdlWGOCV9uPYTQF_AJW-_9;9ySQnBDMqebB0liRv8HZKT)d`o^z%{+TyLoB+rG{Ul(#2CQ{}S$PQ&b+pdz zAAWdJx4wiKCgWRX2_bphL_OrD4emvS)})OyUpsjRDzic?{O z4Qnk{Ktij%KLZjpm213aEP%=(@6caQF?;sC@_fXNkIjuS3<4t52m$}Q%N49LVb;RZ z8Hb Pac*rT~mgPOQ-LVLYRy#gz@EnhS*D=(|scCSSK#74!p!zl>IWy H&t(D@e gT@-g9vkSW@`20iX?Up+l>?%Ye$_epWnqVDK9< zL(dlGSKJ|)DufOb-jmH4jP}0exCL-99d5FI?>(TYD+D)96p;UhMY{30n=IlaC_PX# zUW?kKF2-yRZb1EM3j=dN){gYRDVn5#y65F^l8;(zyImsJl8x($z1NCEovSN|nRW_? zo)r2tb#dz8r3dx>r3Sj`q1RkB_Mq1_wqlS5;_NH_+(z8YNUXP4(JxCgvRXRvjl)qL zZ;Qaafs>e`XDS-!#QSL+oL+i{Ja0o|d%dGE3MeS$SVGf7&$Vzxhha$VLhI7?+~bwh zK#@#R-lkVhqOBVc^J5t&O5?u7BW!qdmpPAtDTJu=aVWLtoDc*oo1~N>BdslX`opPS zh70)-X#3R8M4^7o+VVuOZMMWUT0sZ^;*2x06}dk$Qj;kX l<(T550ohtPxF4T5Lo<&35Fxq2KsVgG;r=m%4MsR2hrw57%%H4u zjCEwWRMDnE)Gx6B%0d4OeR}>75MIL#-9~mnRu38ibP=)#$3A)Dq2oAnVebf&JZ1UU zzrGz9aL*MV8pZ9H{5AXucm+5H_e<*Z%U6zIqZz(^UN{-(Xqs7=JmM~;UOC^wIvStD zkuhe22cuixATr!AEH8_rgjW0*{0C@_XvU$=er(1Z9i>mt#vH2~GZ=Ffye{uZ?L=wU z;05qZ`;wr)ulfv>jFL3l2o0NA8+H%3Gi8mNGGw$jwneDgYhdWhs``st$xvr^Z^}i9 zI-9ljtp{Oa#?&A!1H%vt^x?J6X*nFa0ud#odsvLC+WJbsNXjC#J_R&DrEX_(0^YK! zN&&sq2!P7{Ptdd4Te|E0SJ1QFT?(NdJ}$1#ei$v}#G%~?Th$mZ^(Zxxd*R0GC0D!u zAI9rI^Oq0r$D()%R(T+Z+yaPEi1?l;!FdwOtVTmFvTQTHHpXb{CL;qJ09ZetE%W=g zw06YS*DaSAR1~wyJc(7M*X=C?2xTs$+QTUBB-f3vrZ$y?F81~%oOx>f%vGj!&} {~`)Vh>nGTD(jq`3!8*#VbLcMQoj@9P}ow1GPlKLToL`imN0qxbOfyE&JU% z8E>8qI$PU2*QFWwO$%j<&1yr!Yd^UbT?k(+N&A`vZa036F^}U08aERV>y%Xk4tQCt zHae-2=9S^G6PWeW=OrXFSnBRb)D2MJqZ*z)@3OI*b5dBH15w3R)tW KxG1BzmDkOtsQhT{-k!|5=axxPM zCtQdu$84m^()<+VD+((9_u%|?GSs_5GP3nN*qIvT=aQnC*@~IajyYKMj5wnZ+~vZ( zJ-#2j0D*8A0sVP=7m|pVilIH3*IF1!M5`)@ewV$#SAZn>8BS|UbVIEqlpyS0(I_-y zmK7@6D-g7WO<##9-efIXpl>b>dBgo6XC6S6o8HPS!90wXt$;tRI(WvajWN`$Nx>92 zR(_jjV09Z+_#8Xqj8qAL>x5i2o0ZLGZNQ W6a6M6*gQC)Im1XZ49zjR8M$YIL7-g+b~!3 8)`)(duyi$3z(nt%V&cs5XuqhQ70bOX8VQ~2#x#Bh~=4|-4uFHKE zdb0aG?91eE&_dm$E~th)!L+vvmO=?%kK;YkA0NJr!c)S4GUb=0-OXhi^1hS;jl0 z9g{Qnh~-N6J4+tCnFV%rSQ^UU4g#7(JER)QjgLlxCS37-F4`R&6pn`))WtNg!lm@t zt`?hUldCp$7;?L^r+p3^{zZGTqzx{*aEqwRJ;}LFkwP7U4%eky-_ Y39W*U}tgF5Ko{|*}14>$nV1SvCW>#ZlBL-ZV-GK9tIB9Wj{o- ziR6mSqCG90g@zuDL{BZuv}c5&U@}}waYTo-T8MTF5*`rgZ8j!}#;a{>VPU?GqpO-x zw+H2l+s}`{AED{zkF$p_gM(%uAkrRk=xt^hl5ep)9NZ|O8M&OMnw5yRP3=ldT%$hO zMwTcS#iuE-I%0$9`&!!P!w1U!%!o-r39G|tpj4D&s5NDS_#k__ ajgRHmGwa$x40p;r~t*%U4hh2%F>|1Hgici@|8&S+4B-`A!G+Xwh z9%Mzf*ywUeHrGU?B~iL6G3wh6U2lVWL~W$y7Z^3ACkfDMy%9ReR-m#HzKM=1Xj@8P z3YESTFe@m~V4`DdO6bO* |i7WSyQht4!5#jYLF%-VV^oCl^`N !GxsO>`PM$WByHVcRb0r6nOoWtydwX;(v$Tjah4~AxJABbLaNQQI5J}sTm?;< z$rI18Z7s=*t!*u;F$v9yNxs28j{C@rwe@Ks)kKKZA|kYCh**eOZSaS)wa~JJu81t- zkrHY^% 9byMSDdGE@W78_P28t|b+4tcDqeDU~|wBTUrLw?jzR z3)+pb^;)|D>gyZvo-2JewH5bPwldG#T4jvQR&ggh!)ecLEtwYiRi+K`TNG6}TA28u znI0&k7Mxk*#mB>^Fo@^pi{>EyY&fr$#dDZC@eO%=9L0B@ZYEume8q#imtt# zYDsVlIs6c`m`E(}R>@@Uj4C!mn@q5lmOjxeGR$Oa*LB&snv{~nT?=%w#WY@?Si3x8 zIah_&=CadeQJJX(r9w(voJ VJLkV#1D<5oc@HW-gbDZ!?%tW<#$25ZV31IF!g1t_tSi zF @mz22I%swkQy(944723_(5CM0MW1u7@+W1DGpXR(k1odNi%!M>Y-4h zAo;W&D6$v8z})FRj;ZND$=3kSTX%%JgU!*$q|51SSF9HXuJwW9FHP4LNm{1y!Q(`} zwyXv2q)B(7>kbNoO{t{}HvV(Q0Gjdm&&Q^WIw5fPwNjm$Y0V+nwJY%|L3fiGm!c7D z6=UA$@rh5zc?WB)v |BRR+}d6iI)QDz3d0(fgD;$r$clumjss_a0WFA%Cy-zXk=(i5 zNrpKKSAr)T7NI%bDDX*6YjtGH##X^B7X^L^b%DB?J~G{Xge8(gRy=3i%o|b8AFNht z#tj_6*&CVsKcT{hMzy`MnOi>9j^#52#+jUfwclKc$IqDYBhitp)4U#2h=*FoV_ZVr zQ8><%GDNV+Un7M5f}DCfyr&7@mJ7$HR~J_=O3eP)Cv@)k*0I~QG4IwD@HZmbvA3nG z!SdCN*mp5~oSXZbz77boFtkcDTRgG=xjBZ7VtfX u)*leZy;sa|mY0#s6GV}d0#Z0Z zj1V>MI5ELTf)RB?wF@q0`KQmU*-Bv(vSDNKE`@?Jz$2LS_TgYw)0eprI%{fCZ&U@2 zI<^me_Y{N5v!CiG +>33|Op^vprrFSgd)f zB!(``tbEW#%ii{e`LkHS6D MnYP7SVK^x(+r#P_PZ|4Q6Cj2WUPj^ki2_ j?(E zp+&P|nIZ5>#Kmnc!z4}4y4nPp&eIGt38nM%hC(+iSaEJ#hm)7%kZqV$+tE@&mbU~* zN*4phc9=xAGw^IHcg1luBO%){Q2GPh=eo(iR_o~~A(C~Z_c-&^HHq6HdVq`%Zw8YY z$8u+4cPoLN84BZ$mC9s~drZ{>H9;9QeE?>80;lb3YPz~PwM{Kzs2HlL#U_K?3mLG~ ztoR^Nj=BktqXI=-8~ZV_6b3d!r*FZY*5wAFDTYnDAyitO42X(3fHNj|M&M^du~cnD z3icWkwzr04;=dD~S;v(N^CUy9+X=CJmHGc2AyIPqY=*ofBu#A9CNgR4hO7h>O-kp! zXOHQ_p ng3xlJA{m;$8#J06>8nQX$v0%G&nl`XBwBc z8~bLF{=Yy3kDq55q(vd|KeVnT>|R2+wa}dv$f(vEIbP`zI5It(-uD4WxvHb@{VUVQ zVdwIn>iS_K55)#sw~m-##))3q)W>o*YQ}?npf={mwZI&E8LC+}@ruy@iR>_XjmxVT zh0In!?%3}sHYxpfW9;%R8LnNl%vH&2@fCI#b+(K`<*XogNr1<`%EH{yF06TAzPBK2 zLhlm+dgjoJ_Nd&YgAlnxNFBhe&NA@c)AH!YwaOwwiEdpFZ}Xeo<1`*7H9#YJQ` z&SwQc5xF2?rpDm;_v+Jkf>-N2+Wcs&oHl;jEJ_NzPS`gDvUnRo5$)R=*vNPrr>k3R ztG{(0vV$$aa#o`hv=i>l66StZdLp7D6lx*ErSt`-%y>pb);tVdn`=*9XNavKFkw^~ zwIDNvmZ0#17 |G@PGW0d>{KEnZ!@6IE%fkQk!JjU-d6z z_noH~_CFFvPTSO;TEn(<@Pq0JEZz}g+`cT!;tQ$@0{5Ps%KY;2)%_FZdz~qKnMCV# zzZiEoYn$1B+@=P(4-O&lk6eUx{LLlyp|XVwhZK8bT|uRCg6%6svjSb~;~aD{vn483 z9KXPSzZJK-p1XqwZ-5@g|6%BT(-n@rD6^GW!23z;3dY4GQBB~M`^%~CFNU)&9mTyL znbMSD3(3aDZ=Z8$WthqJM FOgkDKDtnfF*d4z6QR7BT!Dz j9G2nt(;5a`w51eQ1{3EV{52X>nsKsM+En zhE=q|t@^Gu=2^QrWjjU*>;qly^&PKEV%l%p(vv;Q-Y_;Tg<}@{uM=bMvkf~wk7{l$ zhEd;#Wjk1e4|~PAGW~8RHAfxIlwGfTzFMkm0xeq0Onk|-o 3rgXMuNibeBI_p|^?N zX0B)|iI9BDi3~bn;MgDqVvKyxY+R%zH!}^v3rb*OnUP!`qb@T+{+i)%NP1TGITpA& zJ4}4`zm~*1+5JU_YdD0v{fw>j)t(lCsnP+SPT3649*tg0*tau3fJe$_rig0m1Aoh< zfS|w76h?31zl$~!b^19u1JOu!blBuL>-jm~tM09`acJrAt}Dm3E>gX@K+AXSFIcp_ zQ;;Y@(=9s29^2Yu?y+s#wr$(CZQHhO+qQA%`~Q1Sd=cmQK6ONO^~%hZD>^zltFk`A zBVDEVv@TlAZmOKuDMmSmHU%IB!j9>5MgmV#o{m}BNJn}(gvdy*3MJqRj~#+N8eO2_ zg)76T|3F#JG-WAMdhK9hRwo5yDNS ?(D~vP5-&aKQ!})4g@N|+%->N zG_zz>-AKaF`w}g=RS;Y+j3_A9><+~-8HdfMUB~kxP{_sV6*z{H9!I!`*_i~37) l*Mihz$zk(^4HeFo>$smQ+|x-1vD`ff>`KYTohICQLLo5~}t zfZbk+6(H62u)H+@WKA}T%E+z&wVBg%eL^`DwDw>^1tduDQnrXrt)jil+J@vutvsE; zlFLC!UB7%hh&+6zW_0I<6I}7%LpEOz)W?bBq9>`-u=Ho@v-OKvcczDnA=by)Nb8=O zr1DcXD3r-} pUsV~XR-slb8O2DwZ8b!pJp;=R@Ds1RifOaO|{CdlDCX$_UDsG==y5@hT#jn+S?l(VP=h zC1u}gisQy<%b(N;CS%u=uffd4w1b@2+XV^LhSsG-Uofg$ta*6Ap=`bx0stzt1x|RB zA v_;kbuK`=9xQG1=Fy_mo0*BXOE2BduPW zb?uR0*d#c&axMeGgvmmvm#q5C^XWr=KBlOpT4(`nQ|F!QX)w6f96P|xX$3CaH!>xC z>-!}oic9GHz;wbC4Uz=}evan!gB0qKdjO4ObMPDSQNmCgix#1cO<4SZrgH5BEyUQ+ zXf34&2nLG|aQc2CqW %|9wD?gMcX#BMZ@7 zOr+J{Evyupk=Nu32POFnWiD^p`|d=tkHaK3>!+TW9qKhF4h&{ZAv>sVo~Q@ZL@oyZ zk)JpWy{T9d+BdEkQo|))>aVU?Nz0xlz8X9w--)kWMD-WXQGT>9BRts-J-w)uw@O?? zko&Z#FMtJwMxWL{MelO9%njZ`J!Kd|9l0mebBUH8)La2-D @)ORP3+E>%SgL z4g7j+J*WrDGO(7X;E%uD#2N|TNInApR&F2oXR(B(gGGoP`WJWsA*|f#KO=?$*WoVc z40a0Lgy3cSxI;kMa-dD*r@Ed`TxMmLHGi76W;)BvPfGiN@+&C1dz&=ji{N>YLxanj zq00PF uXhyIC&KVt0*qW^mi z|CDG4EKdcav N>H3|*FoE;~|P0R&N)ie0gf`JXB9Pwah3jD&w^{mALy6e=+k_-V^U z>MQu6i_q~41-XRbiAifHoB}9Jg^~4u )O|Znn&V`OA0Jr zfGN&KlJ$cW4suD?8c9L)m*I|ALC`1a`p3aP{o2p&{9pTWfskUM?*Hr7|B2a)>+91= zA}6{4;!k*G`3KOFEq@{(fc#&~;#Hbr5H&$~(7y!bR{rO@LP@;OD29BB8NiFaA!PYL zg-u7&w0e@E?cw+oq5_ErV928pr2@-xgD|4COe%qNLhvX=1mkuAe+-2d CF2ZG$5WkAkA6^bA_Q8${+0P$ R-kTUIqyJAGuhJ|6g*E4XG>$#f;N6uYu72ZvuaL4P^UY zUQ2QND?=#~blqd&kAAb5 45 z4P0*jE42Tn0sU!7mk&7sILT8$@xO%j-!zCmE1B{o7Jwj!hLrva?dj-$h4x?i`#&*P zoZB3fd#AMy^!i><)K^?WDfRu40|A-~Sl_%0E&hFPK8Mzaoi!dH>SNjWU0JIRjz(A% zhoI-cYniLph5vSuu~4Q{sbSx0J3#&WuX4Fke^cPMXgvH+P)GIT09_xvic**^o*;e7 ze3)U7L!*V$KvC!^eJRo^)Vamlbp#^f;uq}Xf54)5B 2Tpd6lvET91FAQHX?+=+7U-cfNu=oTedSL3fVU5z zcwd=v@PSF*X_GZIC5W}(Vx1rnn$BuZo?;aVtFw3{Mfo%f-zT7XVpyyMOl+0=A{?LH zo4!(BcyV%rPqboPZ=rJ*op=63gd{|!Gl|lFW#L dHuml#`Tx-<}}g7G(IFSUB(39 z2qP3*%^d<(tq`8xAdtiakZ`; =po)&+wcH3bR`kmMRBSd_d{O&wG--fTS(6;pRL<#LBs${5SyC5OvzQT z2h `GNVvFh*;D5G<1Tq%{~ 8*nm_(SH$%e z8fwk96J#|?jKm61WD*i&?Zn4L9|kY;Wc;66N&33 B >wu^*!L)Z!%kkT#ru_SnfAP`hN$uzO;pfOQy3rUM#D_C@Kolm4yc}Q(!>;Q#)8g^ z1BILzYZrBlb^$}ol4Rf$6SX&Bn9NysWLxyDR{Hy?J4{JQsL%dy6^@6mDI2PR&FflK z8HtDg0XYWzrcXmzqRxSN2%(o@s*v3i8nP*QaG^}NoX*iNrm~6TvS)}g iHnfAtfV`Eas+c?057G;(Cmit&z>Y8Y` z8BBuoj=2(RHC5AJy^JQe4n>9~>?a>dBPX3tj)cz~6Foa}Gna#k+X;?B+s&%IQQmzX z>qau??Ig&~I{q{e%MjPX`Tn76Z69m|?Hp0S03N)NpBvMQ?%l0B;SS$78A=l^sB ftw0X>?;?h1Xgax#*aV_s^{_IPn&?@8RQyWPv@NTgG%;@g8Ob_~OTtrU|s zd8fv|gf7mQg%9q|8&f6lVXe?%{3VsTppUi8!1~I!XXPBZ_n?PY<4wRJe}UGu;`F$6 z0vdbdB&B9IIv6EUKocz!GAJ<55+Icew-@cSJU(d2Qk>F$p)RVNb`yiG-vLq4!}TAe z<7Z@+)L)~X(8LH &1g&-7Yh<3fH?CYKMI?bi^n{40K?daUrqp xDhnN>KB%!aF+P+hT@$OmD)%x@`I)7S zZRB%1B!z!Tzs*N@&Tu{ecs`r$(W3H-#_3}YZsfBBy<^t5HAK`dl#d0wlA!DZZKtXn zVEX&vgtMGY{FBJ~M0(jJnj{HtH1*HQoIU$~(UJU|rc$l^-Hk!R2~Ajzz1tUC*&1jl zLna`>{j8#1cC(ArJ-L_%T--&p0VAy~x9Wbz($)F7^&LznCIOEWx!f|@b>GnP{Jj&) zQr0(`Kz#tgV5Tv(x<~zCC#ZvTT3ZU@llb{3emA!Mc~)v=CBk+k;-H((n#YZO*^T(p z2&9EjzH!dXGYvhCQ5P3y_MX?WEnv)e;1Tc}coouk&?A9Q-6GLjJYBD{7h8gfcF;^& zU4`|9lsucAN$4;i0u$Z$etKudcYeiAcQfDF^=S{u(@77JRxx5n;ZUshuJLN)A1K2} ziSb7WnZa1ywc! A-|^StRq4}NA~LnQg=Cb zpjefBUt6)GbCD@N8Dw#5lLM(5!(xAL%J*kYOGyNGmhg>87K?uU9D-J6h3lrVi#I)C zh=>K4TcmpRTJR&i^e&aA)4B7-^^1$c%W4Jj59p+35!WW>4UeruC?l-e8awOdC%9ab zb$%az%x9YnI4y6wgJ@!wW ?+6$L}d)*U%4&=hN>7 zi1*-cC>davRO+#8(1}olMV|6E!WbENQIsifpao>JgVgHAe!6QF5Xl@==8|px>|5Bg zCFf=KOI%1g-&5G`41%!u${UY+uj @T}$^LP-pk{)NFwJw$B7Fm<>+rOu( zGw6PX+QVBzig&84KUFR@9OWEaPdMZ2bO`ZLMiETW@YnaF-WdJ1c2%Jbo0U{Rdq4nC zLTee9Za{3w-6`|71=x_X;Pa3iC(Rn1y{MnN-5xAHvq{WRH_*kyoKg`&dr)X>pmk7L zwL8cY|77Q8crk801cs h_bwG5kB zV{wGT^H%+{#d%>RuWvjGJscBB1WM(9FqbN!5#3(T*34Wgq#^2a65enMor)7wgUu)! zxyQfAgl-nU{2{Up4tFOMKR&{%-9nHP;XbRJ7@Xv-*y6^>f&`qZTa9iv>$DzAV| h5j;#^(d2O|v_yR)ExDl+GqZ^mGdFe6oV<_fO3XPM z+Oo;7J~hgz=7VaY(Y&iH0ECwaMl?}gahD7mXW+t0vQdw^I6Z;?Ogo{MBnd}p$C_f* zBhzU18D8G-id+kIA`o5(;o2h6F{pL}SI?jK$DXJ5gD5Z$(WMS% qo+4yuR{T!WEq?Ulr z?@8@sybP$hT-hSRU~HGwk;d!L&6SUGjjDjwDsB6;iRL6SQ-z4*PddrO1-=_qLB8cW z1&4%3!C^fhl5DF4Tb%)SH#gM65(_ZUQGH7spwViSH)EYiXJq|sVg<5@g8~)FK}GBi zxRY~o@)MzR)J#e3Ei0E5WWB1I|3_Ds&4s#0=ntz+V_mXkZIw~vlL?i-pmk$PzPFci z%kGvq-787yfRA^=5#EeYRKJ>r)@KEHmmr6|NCcz5L32zt$yda(n`4C#_K}-QMFz^n z=RS8>W8<`fU8X2pi_G(lq8IbHwu|Z3rBi-gRSY=bCpK#B#J_FZw2J6`QV9 zX@6cOk8&j2p7HD)c68LT$*$OjD{+Uot%<(3yB$F<7w8Mtr0Pd_m}b|!`YGnxsaV9% zXKGTg02(YtNb@z3u&!)YF0Mk2^~JsQOMhE2UR*jR?@+%zQRgueI)h{*N#D0`#^^vQ zF&KrzS$9wOe K2DENs5acsnQ@cP>aVX;!bThdZ}a*SXWV6Os&21R%}DCO(~* z^(2^<`(9yD-U6!Wi_)7X67+Z#qH4jB0Tf`7)8sQuj&)JYxIZoHdBdL%`a%sw7OEnq ziBo4u@eohNdl%QZWBcVbRd^}44JAKM=+r>sgIEfc@Tk9Q%DJH)ZB++UAokLp%GVO- z5`w+Fe!k#?6Yv@O7&;R%&vM7=23+Ohq_HBe*Y_F?nSFjRu>jqt(IIU~*Z83vV->|Q zcx{dt*0tBn&$*#M(j$P$gasPYl#P1Fp0^rMPUo#Rj>a-kFW73UBgQRRJIcML3u3Ne z->9oWE_AApV=T{Si?t$DK)le!PZNpyx_+cMs-!-%H_*?=8gQL!)eYas0#;{K0N1qV z==0jnR=`|YjMpE%)~`dFZD$gH*k^ckPO2)LCqNHivVa#Q5O+*~vc#e*wc_qV+|eif z*u?2wF)7iJF8riiij`}7669*&cwZC(Mqun?tEr_*ILixk*9#x=#I#k+P}Q4oip_wK ztM)lB>Web>(Qlko3KH4%Mzm%R6*dSoL|i9YHMpzhkpz6CZMRulE%89)!_xY#Pj-fJ zg1#m7koG~lY0|rh>k@f5FAaxKheg`X)3V@TS9Gf%Qf`&dULs;h1N! Z5o>yDm%~vL)x238|axCy!YyUbFM^cfSDa# zJ-<5bAw1mN{Ig-XI@N9!Id2tIc3@ds>NcLr%l+r}(m-p$;I|;IYlo#lPH4b%=FGsF zN@N5T-}_!cG0(@pP?zy`$Y&>_;-`!vay1uv>*;mgJ{IMZ 0y6bH~ zHVA)(CO7dfeM2WmboWT&Wj04$ZGY5nyXHBih(r=ZpQN#S8Xh71M^sm& CU~T4 z6p&5izS4xjVr<_a##Zew1Zz^RaL~vc$<-%CJ69bBQykZrF=Xx$YMnS5rC?sOZ6o?~ zf9EpQ3vnt*xs`r+V;CPa%JWgs`A9PX7+q)^RUA=f{4A;Pp&{vZ%T24J@~mKU77vEC zqqF99m|zP#I_4zD@iwxa91qN{ph(pT-TD2(M@)Sk*3s+iWaeyQ4zn&7@NUtybo#gg ziJ7${vSnWwD^t7Sfl!&IxNH$&Ox &evqsXXg>r6C*)2(-`(mYr}!&4Xer {KrPA;_9L+) zS1{Ma>2RzAW$YGI`XuF8a!!IOY6>jZoCD_?d@ghZh)3#N6h%htdX*$)y>x~|s{Zy! zTU1XX86 O8 P`b|M=W)4PNbQ!IQ zMe2>MA@;w?u@5OxW?E*z&`5bI$T8CGLXz~2CU-dB&$(T{Nk?;q;b7oD)#OqzZvq*8 z5Ay?NE>`@>+W7s9q12=e7iJ*|^A_==LQk_R9h{t56TrulW*&*yczS7lS8A6Y+jICL zSdO%Qw!2pbq1EyGg535d6{@dzd+|J4s{EvQz)uoH(~p1UR0}OG8JOOk#!LKIi)tLE zg>E OIz%Fll z_!@f-sB>i&wE?$~N#3l@!iC)tvyM*JL=dLgl3vs8jpx;YOe*!lx)Vx^9@F2;S>mMS zbEzKbNwgVwCbTg%CS&DTy(8Gvd)KL!li8aj-v>0!B5f|AUqbt9l(|MOw~0@}7cM|X z8@g6`t3fh^Y1Iv+gcc#^JYytNcm#LQR0cQz^m11$I8?cp8D?iczt7zOu}#{@J7zmT z8bq~axg5k2bY^cttwR#M>Q9aBYcuQOtdxi`S!r*Vvg|1o?9OrxldZ?kq@mKtpg<5z zb>V=C# n00HyNPdLu4UP#iQ@)4DpirXdxfuS#wQIOQO@AeCrB_2;4S^P$h zUK{^KvT5iIGM$jGDJjva(Vi_kmZw8+A1T*<|Im#pcP8cK-E*6k4 eFjw!>eX9=He6Y?8EDN*pd6-{J|&W^T*@c zr|PBk`{G~B-1onb3wQ2~Ywklx9fv0`T$x9MsV9JRKrbJi3!jt=C!dI!lkt9@#UH$_ zFU_63^ZTEeVZ4vCFCO44(y_Io3?{h7W@)R}Nw$TkK2*Qiuu mr&wGFvo?faE{}1g|_Z%?l9q(5{lOTn$_{zNs%~kW8__C9& zib^K4&bn(MM?6$|xDN${65tWvjS%1CKT@fxhTD3DR9EMd))G_30dJkdtP(8AeUv48 zrU7}d;aK$1 o#m#R^x+|t_O zfxwU4@37P|N1vr~2x4)0T}Z~&iVed-jC9b }<977lGIi5&pWQ rC`*%5~kj=tpBpJzNyinEzP~2r7I@K81Ze)o?V6xEDRt zDMG$ug4uTtn2+zeR!L}TE>a=C1&izL?&*b=yx}~X5O~=rCHE)|Ke$HQhA }w`7L=9sEB3J;CFedI#xIK&oP>nY=7loFPjd2y$f3^-s$-G}e4j2e4cMxR zbxDct=j&T+o`K5_6koXp7!4D+#Eicix`zQJaUID7;9%@(sD@v;#k0E^2%2`uLPLB9 zy*f9L(U55=hrwe}3@lNzf&}WZKImUFn2n}&KfSwrx({n=3n$+N*^OkfWct)oc6^=x z%JC7?b)&De#sVHVGQAMqxdvR_hB6X&bq?m!Zy(ECX6ubtEvRdokR!4KgJ@+#OCUcq zxztXh8wJkeyjz0O!!Jq3%nM!?Qh$$l_PrbZAtEwJh+22MHHM`h@#00d;PoEq>+~?F z9!VnKl-&NyPS0_@7sD|q`9u`al8^IH(8340b)MI0f8_Au40^GM6-S;j x>Q3@yI1S Ua4T2W>vu P(CRG4v>>Qm3_|#>` zE!B?Fp<1>?#<*sQtcz|$c`9G4L_rjmDg}c{wtn^Id_@QB1b7LmHD9Xdx@Yvi7bu9V z1~@HWr+|`En|t8=N+p4Z_eRZd3FA2Xa*YTB5=evq_B;+NIEmm>!3_JAn^0^ipkoR2 zo#OSNP9L>Ln+}OK2zveQZ2H_-^eW4fMXVCQsDOQPs#1dm?#!KRu6#0!{h{RkHZ^yL z^j)$_Mk{7xsYDQ#XZs8Aebt;IgD62kev4g#ZVw?y*|A)4tq8S letm>t81cNYTx^<3IQ$`Bf>cOln0hjQU`S%2N;ECEy6#x>h<$BVKB zS|~<3Kx$Z~)WHiwFKFj8J{HTu#nX==n3clm_Uihv6qv1e@&Bn80JYVOL->Q`woePt zUm4B6KZS?plSpKA2FCpvAcBcj{5Vp;NPrOi#D(U@z`CtaH-Qs670Bmtr^ZDY>Pp5K z0_Ux@3RUSo*B=&nC%k;dN^^0+v(~aQ`)pZn-;L@kMCXSi*;QnCXGuIgcn~u =OSVpmFb;VtXnTmn@8r9Zf5wau$!@fvGzZ%qpvD#uT2%-52`MIU$66 z&S!9oss@wqyJaiYy3MH_5=j%Ix@Ba1S2$-EMNmhgBKPWENvi9g!T!OCoVI!up1@MY z25dR>s`FH+;jZ|RgKnYb;riP;MDy&-L#$kk8)h>rbnBnB0kz})$Hpu%oiES2DOZQo zinz{($s3}GdbNOOt!FxOSztCV3dfu~%vB3pWRr#aizG|JAEH-^$FcrE(oSF+4x7SH z#;^ jXNe52ZXgF6DVN$&I(OJ7@3n=vW z0WYpxKP_-P4t!&sUf|M-R>a$>XI}k{ih`6L-hZ}8_a}V^WOK?)O$^eID&}$1(CfO@ zL2_(raT>2j6(%rQ2e22tqWH5yMD$R-I#2 #<$=jlQVv8SqC?V;nvFR#=!TjioN>h~xDqO3 )Qu z;9U{^g*8|bClm@LoTe)<)>p3@uLjU_Q#z&Np?dn0yeK#|R1*W|{tTNYp0W9BmGpX3 z)=F-`!8BCqkgv&eb$ZXlX0Y@f6|LuNUM4a;x;k`h4-@+q%6}2*_kpis8sFQgxoXCr ztMwhPzCnP;XJ*T2bg0>5TeWL9?%))}S+f#k4Q%g}*>Me26wLM7h%W`uj+9Q~FB-0p z>+S5Z8eH3d9Tco*%KGR9fwxv>^)l#L@vU{g;*7OUEr!a_Y1P?ESUT3E89Q&>#Hz#C zp2t(NR=5waU+~j5N~d2TM{{GIs2cj#i{&o>i}>w5eYE)PKrmnmaQKBZgX>d5?eP&d z#Py|7D4*P>AnZ91L9X1e^!MB2i|CC8dE32AFDK& O z7dC$98J=a` gUcO8^Ls<<)+ZYV^S{UUs+M@+5Qea64e2S9r2bizluK z?2NMJ9n8$++|ymgLg;V#P=WY+VahDa#x9um23S>)Q<$83uW3g{1Y8?EW0u+5sN)VQ z$!02Ah3WovqRzKZcyz<5nXoR}?|D)Dbfsx&=KuLZm}*>l5iWlcX6 sO=n2Adqx$)%k=fNScEJw z?@%1JLif18rF+B^JHa4}(bQNzgp5+3T5ogxk9=f`DM=dcu~@*kHrialFW+v#J~3d} zDcl0nAQ~b$GVfc39Sv40O+t|&8xAQHCs{d{*{+T)RvZi~Z=w>=ulV};xUQR5sWCFJ zX-97NjtyGP=nv2dW8yRI&gG>x||mFd`UU^6v1s%6Bh z9jy5Pk#*3Z4lULs^6UJRl~bX@BE0GrlcF^EdUC-~>k3B~-kKiqxWS>8M|K`UN!AaA zVi8|vWIi{3v(tDnD5QPYI+Y^Pq>;rlNmPXFvlZ737SN#XR=NLSt&SI1T2cI1A*x^K zbDqF@Rjzdq)yo*n%R7{Md>NM&hRm=%I;MWSxR%4Tuos*c2|P?EBrDH|<8LLT3Xx$x z3*m(!x{98zdME#}?(n_eUP!FTT5hS3?W)kqSOY*LdmGg@nSJCkX9`w9bi`KHZb|e< z=t<@*{FHJ*J7Yrtq3}kB_W -Ap 86(d{HFEN!WFkIu{q3%sh@>Wx|nUnQQGpwn6m@>(-?>gpb3GlS^|Ly^-`N4 zqfj#YeBQ&hZf3I!`U3m#s4d{-hLUZLGyA+|w7~HEQ!v!2{phXhO&UHEj+CkN+Fu4O zt>+X>^>L;*q5#V}be~bc-^ p$pbbvb$dg?cF2$-Zyb?TJ{+Z>kMZp4-n)sus^y)RgQZ7*_UEV8O_~^*<5b zypl|vs9j^nAnz}(=!pQa0TQWU_4Zxb`MLc<%B?K|a^(I7Y&JLhETUJ!z_eH52*WR* z^sr~Ko~)?J()6liie#7Q#toQ{n(&I`>B=P3NI2B7$$Md9Gg1ZTNE9!D@T_EdB{b4% zd`S2`)r+-90FDFEoC7r7w%>OF78}`u*#}z5f8Ak_vH-1quo`?*Exd^%?~cJJF`=Q! zvkvjckAW;RomGbx(M9X957>7(eN8(iNpav^j&aEO2~|DmVasBjSy7{ h? z)S?`!A(iQsqv$=fqnMM2By0^0*GlHi!;+j2VOq)bB50)k<4eVVe6eilABr_x=ub>% zfg=gEOYaa%0*f-+6`uD1q*^}G(PN{hYQpUuzy%6Kt @^ z=EhLNl_NZDs9zpvGwp+6ja4 +rL3=L<%+ZH>bu-_OvV!)x+%pX$8Q3hd9 zZgJPDRIp~zs!RlW%HVo6G8-k5!nY8~Kv4t3mPf;ml7; <# z2{%C7G4mk<*Oui@V4uJC8k jHL0C! zumlswG*o)F8CbUgJ<~ck8)=pG2*K4?{I-fD#W!n4x>z?qsAQJ YGpWC-XB z1f$c99Zf! pj5c3ly0hfk!PMG9qg=}A81|7Jvq(ZdT-2^erd z4wo=TU>b{Irj(iy!Xwtq`@pRm;mNK#q^-fyjpEtq%OF>0?XW_s&PJ49orcL@+mIV+ z(R>>+@@hdr`Ib;Fro3@+t!dfX?-|q2s%k%JN^)MvR#tc+m>!OQ-g3ykeqP9^Ex3AN zg8q`38p-_-oa4<1JMsJ}9?@&|B=+z7m!MwT81h;~7Xp(lpNJ+2Op^gP)42Xl8$W`z z6gk_aJ;u*UoEbQsHPU(tf;J)4_t`hW=f)Y%$QXM_8xmgZ4R+7<{)H~OB_Fv!3Xh}d zm|20XNg{Pa`sgV=;dMz{;exzT>IcuQym2xALn6q4NAf}xS9H%05{@_nP1LH-!jZTc z7b`I)2!4oAOn|XyLUIa_3sU~3#_j@Ov`6A1sR?@%jl(m6wXpAlg}b C3KhY)8vHVhK_Hv^Vam6{SBZBEaEH_ z=#z&h<^VlutMR-nuvEQL!w|?l2Vx8v-Oy5%OxS}}HKeJDdD8l`qxv0uqHbF#V(MW} z!tv_J5QFRSlVvu)?jw!$CLc+}kS&fDei1}!MJ sicc^FV$#SiLDO+$1lKnK5U zTc>%DK4xzWcWc`4l+n7cBw#(ZxZaF7BAHG-^Ho^GAu#yNIE`UXqSk4LY&YI%zub4L z>cGW(56sX{vL7ot{6!2dS0F_hNSNJAT!mT{)B~F!jRxmLEv`>JmF=1ZM+LTDhcZen zqR$Gk9{m9{w+U_*2ehMDJSN6{xlhK0(}~l}!;~XlNL|IwTIz`XgNY-SSkT@>deVU3 zxQFa++Aw-dCRwq0@^AipeUuZ@Ke6=VFA50*;M)xF3BT9J`Nn8hX(|754@&eE#@4n! zpNX5Gfu01TkZ>My#WIHZ@7R36Ds8;1HiIQRj~&P2LJ^t(NF5EEs(*MGhFxN6WdPIl zJ?XKJ4TQ8b?ykj5ZQEuU)~%1EAj`cice3-&+h&L?vfwpVT_jtV5;hVN9LxpBu`3nP zfNOCWgI3rb+Px^iIq)0#)`;$K=YQ)oHLWB;=37HPV8@y-15G_X@ISZ^Zxc}blzk5Y zL>4=en+ pa3^e4UQ!$MagLAONkqBm=B&OQ 9w)VW6;APlska|)+c zqRXG{YBg{3VJ`m!^I$4EyKSWE2phd{+6Da;j)`RxJD-bIZ?j2;@wTu@ZMs}t*seaw zM4&@KCHuYMQ5Ya!;&Fs#tl#w-Yg1fDIY5F z9xgoNM;e`z2Z*SIIhj(t3Cy zij@{nkiM!^#DmKLCSXi#mzu4R5w)%1szahjA41lZoMM+Ihb`xnCU7aTl?5FKM-jb| z-b DHFapuy`eys%WZYuKcUDp*8|sLR(wNEJtF zaaMFz*R$Pg47O9{nwZE19HWHJmS74`dwFcn!y$}#uz<0$YQ%Aca6b%i{+8My;jZeu z>ic>%-nq+h#f@KIGH6C&Cb$_n%}qu19?ODp7H0To2!&JeGcPOp8A(=VW~J9 3VJ8k?G_=JhFx{^EptgKTx97Rpdkd%O8F%g0(^3bk zVfHUxV5`|>E!PhWrcnUQ+|bmVc%QIF0pNF|{SO_JzoIy&<)l@4YrTJeWJg{IM$h9* zyVM|bx+l@~+m(Ks?kRL|WxYQb*~9bF>RvX>Q%0quO3Xu8Dt<`>_9#0%z(O&XJ8)L= z5|!RZIzBfrvPQO xkK0!+Iv^oscpA3&Mxty3%U=l!GpJp`t!_4B}H1d zq(`8lM}0{P>5lN4H0IrrIxtS)RzSfBzkwjwZa3#iux< C%f0ZKKw6b-9Ar3ecfa^xkm^*oqS4kX!{2-`fZxx+f>tpn7Qj%Kp z`au2yl{7q57)G~8r&I2!7`t?FHpH0?C2LV+`(^- !>N+UGOjBo8t68AW!!uGVv)Br@WqPeYBk(^WVjwX(_g_ zP-D4mUPy2518Z)et2(Oe?U(pclc4b%nIpE_n6meOs6~Rcv`;bVGpn6-Qixg@7c&=o z*IxwZqbA&Z5wq?Nt*)yl-?+~(?K6A2btwGG{o1b6%CJ(Oo^BVoZI _*qq1osbkJ>N@V()ezg z+~&j2V}>69xSyeCZ$N^cZeE;rdyn_-$Tihec68j#sTw5vP&&>+gCn=hg>O55uzaH? zaw9MA;Y&}dJUFWljsPm~&P=-I%u-QKN_p4c=JarHVqZZ(5)sZT{IZ4|vU^KSUY79F zqWEyjTQN3O*e?GB`*_Ji(jfo$gz x@NZk>yUc6G7Zso;r;ofv7zkP H+bsQB)CW;hGVfz8?@- za}YpPaxUL>XFg7+Z|)7|*e;mT=5hl#?^_ YS$~JKgaNF zuV>{DOZnGYG3UiBUi?(t{q&C#2@!~|?I{H+TDod?xInFg7cU9K8Z=$H F|Z&`=Aua6u8dGM#J>o%0Gr-<{*3rjk>ebq5&bR>(RYa^toMrYoirlN z<=N!%B?QE;(FrPJyv3NO{p3e WpYtmR-Y)zB>x! zBpU41@Q|KS0Zn)o&dAPF#;Ls!6$~#hNyXK23T%pV^`Q01Z~JYeE^uvpmagd5yV5cc zYVG&HpkDCp+e4%iwvO44M)mBl=nIzHCi`MF zy _1kAG^ggDt}`Nvef=W4#sOBDUR5?e}=l7s^^pY*UNC1GDUm z_Faa;063whrX4R8yzYv<6BQjH22f(ZDqk1!OniHh4=kuyL7iCDB6HRAz38g9cV>pc z;!kGc9xXfy+JYn5SXp`+WZJIxdyms?ULhTs!EefT*MxtIMnir4M&*C74aa?Z zk9$(!&%D0>@EU5CKdo5#+LkmohCZ+0je2C_T&l)yT69CCJto}a!kLo@CwbmfONY~) zR8pBiR7Z=7>&*Jj)_V$=sdxE$CxnUmpxxvOrGpZ1;WTj8J45J?y6muJYHp%r%x6}^ zl^cPtnx5hA?I_9_0aX~X^4)rE)!jl=KO>j$ KX&+^YpG28}7nNZD4hN z{~?sA87o95u_7l1UxtyEEcl+Xv}&vo#Ea6h{n9#ToxmubPVwF~uA6W6E7^`AwsGW# zU10ZXh|t>~>S&5SX1(6zLU2KqDd@s@I;`MvT{c}rUjzAElk~R}))P$o(M #>bO8>n-8qHva2jr-wUJ&V>vCor(=;&g<&y%Cn^WKVdgeA=SIRZhUFf1g{oEe zn7NbZ1itBlt>X75n++%=i1 Z|m zX{IcJSwR-rO~uA=xYN)A80up;d5I&SW&-=zpa%uDxsbzx>&3(mrU!eGmg-*IAdLr? zoyBds^#ccsb1m{w%MkjKIX$$@lx+t>an#1>)+LvU;b?n(dzaD!7?=tiDZl}iI{o*( z@d4V;4!tv-kFHYihF70>$1Vg;$P?K+ z{QIAF0%=F(H-`$mz_uf~BL m&e1M}%_ zv(nC*n;||h)WN@N*w 8 z>ge>kX{wPo#@F?1s2_!eo}rSAnL?A0u5T@_bepyNo}b=muhxJ0T`xJ7IND0O>NC7P zdH@kSc2EDlX1xY_mS&;&yqkRyk9wZF_-Aw$xn@7&0VhU>vwX%@roWaamZyXIR+r=R z#Ay0`(v-IG981!|p1){6iWev Bu$zr36HaUox#~(3v$!nm%<=^)WtWjn_t#yxrze^@8bVY-$_TX^7Ul^+|dB;^Mo! z9ld~kcgwlxpm5L(s$FtewjT%qqZh_2wT(UFo-JdvObeU84VXr-?Z8y+`hNgNK)Ao} zS+Va<#gv!g^29=@5A0l--{X)@Jh1K*GWnmb!Mwv43>p1G(zdD&fAMjd_0P z4PU%x%kBHKfA2K-`ZV79zjJ@?`UJ!1zy5DetHupx|JC6G*RQhw+XNMW-~<3K{kTXV zxdShPmk?`>{-BX6$pdSaFCP|7Ik4?7s&LD7FsKW!WCnLZ4|paMa3N6P$A>`UIDp}A zQe`KMSBKb+Aca_WHAJD~!;!yF`b@@c?E5qQ5XF`^Rm8a~S$I-Bzywb}33zVI`}CmC zzfuVe; C>|;*h@>&AlKBFa|S3Ge0$D zUlq_VO=332?s84)l7U6&lnc>7y%au;+}v%zBe91ZVo?M4i@L#FSV|>kEy=F yHky71o)Hq3SBM5AoVLd{E-JupZ3f)JeM)Lc7q?GO=% tC^9PuX ztzKQIaTRw)KMkogFzvo}Vc6ezQ=n?p5V3gJujgVTDs@w`tM#UH^lhfV?esh{A7vD& z3(luj_)$Pxd_o&uE$*LBUAuPcjf4IJ R9}#KB;+B1;{)QEVt~ zypi{rTYI`|f`i1=5Ns7U)qQZ%NYIi3wus}G*r6;rH-MU)p!=&JPAHxrp=`blpACt) z6nOiA1X1xVdCOJ2FHRzw k#44f=8P7wQU*d@8gmv}bupJCc&x+N< zB{Ym6dbVzpc=WAKH-~by(o#pz+p@N{BH>dblv7C5?H2qO_@vj>yP#Q~ak0hHj&CJK zIdMTw@AqPOb`6V1#MEk A8gw_v^ijy`bGX=F>Va8|8gPE$iK*Hiy_ujpH1CrHvp$va#=Zkk zGaBfV(gQu3o^7OMfuWrV=Rvi^wQfe2_*KjOlXV-nz=0IMszFWzr^5g)9ICJW)y)r2 zE{gSEWtP>esUvW_I;W+?rT)74!B2*vv&G?=bj-o`VnH0z4m}2jKxH@}c(XU~Vw&jNe*Pz#~)kd{03%HSLkjGRj?t+t6+WQ%Eg zm_qD)SF n1xf<~BZ5nH@Zq@hQ__SvlyB+@1a?#zNd+|Rc zEQ98oXNkXq#!7uJ$l|mI$iiRb3@dLpBab_FcQ2hsm;ynH7CFlLxSG?nk;)LmsE#-^ z`Sgn{%CiOYj1SAP;i|5`Wi{@aD}sU|HQMoM4umoqyhjjcYR=O(ttn{kjqx7UJo~Ny zUkMVpAiXY*mZQE9nwWqH!%UAN4&i7E`eCM}2Bkgv7M{z@jhFA~6s`jaI?zmTkEwb~ zwH&3;Xo!I{ON%ses)2R>2fXJJvQc`t>m=+OFN~jcuq&?CdGyTm_&>v2!^K(ys_G}M z^DcedGhGs#?6+4$Hg!!lb8D1iJZ#Z~N?2B2px{X@R2yCajlu4WThhuk=~zxR9PIBF z h26XfTFv^lYPmMR{N{1}%d z96-LiGFvpJU!C8jqKfyUMaNOOwSNaRNQ~wV_hO>x64DQ2<3g!|K4|lZCg{aRQiL%n zGORH0sG4haUrlyCi_$tgE>n2|dwIh%N1^H~uf{>KGHb`yYYg3#^J59C%zzQwm3i`m zaDz)%{QpqGt?AgU8u<65gGx%{hI2v(pkQ7HL6!Y+>P&Jul@-?_I{ldeGpzxCks92~ zwN$~WqqS$ot$sQBV>0l03$Y;XdCw5pM2=AAShu}gZUee<1Cn)Qey}2BFquG%5biD` z?j~ONncaR3|0o>=x#Hg=5Z=V>v!aCPzn|*?tvU2JX}YPmTQn611+SmfQ%4yU;j{6gAP1z_fZ4_px3sHbt7O?--svxnRj*nb}g3nG_b zp21K>lSw?(XKm8^W`;ju$opDReRXln?OySt!)s02wM|!Em%zS>$(>svs40(99cJsV zryH1132$MFe68$J=70&JbN(czmPPJbPF3_l2+N14LRbnWD3FzmUGcbP0?(k!3sWbE z++d*UDf=aw?S#6BKzXk%MYQRwNuan|cICpwMJh=VJmnq#ZcOpay5kFn?wm>K${Kjs zfQN@%ZV&0Kh-h(!l$2SE{J2Oxp&A$iB?$>WG|l8ra++QCSTKFOR$@MMhf#giv+pQV zh =0G0GJ051x5&{(&vMr=*7POe2{naz?c#f8&U>h}EIKL~U`_c=xBt z-$Jch@vE9k)i?+;pE4+>V_;%4k`Yhipqtk b%J^hcMbidc^u^FbQ1}OX$1ZA;Q-HAcWe!V? ~o9G@(g#%z#5o>ThE1oB>tpn(hw%=f1kW(D~8Rs+B6JfYqC=ZT%JH zDiqul(}#}WtNv{HMQjb{!9p&5FwW_$l1W;qP%7?xMU-N*O2hW?R;`_L*FF7v pRmcO&UYZC^>gHUUZ)Jpmwg>gvaIZ &? S!5>Ax4{ZoA6gTz!z=?>8UlXS@BIRdKbJ7*>zpn6L8P?kivYpi`_=PrVO5>FS3+ z{8jtt6MnqkRo-nk)jnVEXS;2YzY=)YMc5Bb-Rrz6MN12_FAn?OzRK4-IXsPNRj!NP zt!_7%y)LSKInP(Ud{y48udef5ApvG~nB`i*U#~XvS2NMw^{Y~lt%$kXZ1%V1`sPY> zSc>MN>0;Kq+kD#F><&K6O_jgdiGGU5zMX?|Ui9Wwk>B;I&HZ|DbzKM|i=%k87n5=I z!T R&1zL{H(LViw*c67v(NV%F|k#--4U?A4PeEmdez$( zIRW-N9-)h>T)!gVe%FJevHd=PnhQ2AsKNdL0NRKzd_w{KAslLvR|Lo(0g!yVT~TQM z7!q__RMi^-=uZI9L%uJnyJEFj6M%mT00moYsUH6fz*NPuDsPHPd?;!Fe-6=Yu2;q0 za7b@?zgiIu{(@^j!2ahDmcja80!RYrzoIX@TCj}rmjMg(=Jymc|2Kcu8Myxr;BGg2 z4NJiN6}99DxW5K)i( 1h4zv)$ZNzETzEi3sM)>7AnaDVN? zaR}jpc__uF*lr#uM*j@18mY9eb4n_`{be}b&3sPbdiyJwdG`#ie~-I-Rd9g+0d{&@ z65{ABT&Kd~niEU(-M@hSmGd`qN;kdxmx#-+%T>|a-U>U1m@_y|A+TNx`9?tfJ19a5 ziX;DT0CB&TmJtE;TgVt8L4F&{?m4yE|Hg+Q*&0n}c}IR_D9G|vUfs!MNzwHd3bVU> zE6LCIB_%-KBB3VC*nJU$hSDuxEMlPl22Y;?>y>M5rPED*l4`QK-%A6Q0RJfhJOumv zb13sxImI$>e;P~e`Q|nG1%3vuv$ERldwIF&34@w|{aLg?Hrv}b)Q5lja{(9u^z-n0 z7K@x(v%lcOklp TevmZ-&bNd%VoU9@1cFvu4E|qeGImr z=M`Zdz5N5kfV*8zZD`*9A+pBueNXL9IrIJPAN$~o4R7qf{SykB*_*!oQy-W``)4H0 z9Ns_op*g_6K-z5Iqs;!d|C#uz1Q^`BY_{am!dsX1x|lQH`!A8LL+x(fLThclrT84$ zY5UvzyK4dlT4~GTE~m_cw||9n83_W7vzz;JLBT+~Y+XDMu7bBvQ*SG^yUz(*@ZFF5 z%Hp09dhdP$DgG6?pM3X|=%Y{;<-4Ck_R*R$Xx{xamOZa}^csB!71;IWKtTK~nuKCU z3iNkBhgg@gAwT=~$Z!=qWueFkFl=gWwp(F;iy_?fhD5hN&jAyv?%gj?z+ztZB yJbBeJ4f>ljP`fK0)S0w!NirPTDL;62|Rpbx(8%E{) z6>>@mDKTGBE{Avj6YJ+SX{o=1THJ0) Z z_9rP=y$vUze~N;xiaW7eC7^#AZCM1ddxCpD|5@ZZS}mminH$=>{}lqW#QuvAmL>IH zhOqP(``00$w06nw@Z$k20R#=AVo~mScf-5i@<0h}KZoTUHB@Mo2*D)})P#oYZL0D{ z2q!}GeiQQ3>#}$tjHq8go)AWEeg;jPDyQuF&ybn2spJOgfzXQI{Ba+S+Pi%7Cp;*k z!(T>fZe8wfsc-q&&wHmy#qPGZDwY(+pCmvl#=-tmAuIv)OXveEicL=)tcK(L7a?Fy z>XL6lhF|pZs@goTM7||pnXyA7L<3Ua<+J}3fYG1%vu_4~9Fe~fKr$pEN6Kc)BK%zs zjzRZ(7>t1U9kk`y?>B@g^%>Ov97Vs6_E@Ap_z!} sz3>-Uq|~U(%bU+uOL6tns6?B4)+YZ-c40f^8a@b zkWy*{)bAoFX`B*3zlVUtc25Yidtn|?D*X>|xA!~x6Z|0tTagaT&;J-f2?3d}DgX87 ze}b`X?if?%Pcgm~wN>~W*`30|u7v48YLw6a96`#BFah*myvd`SQ=k7=ug`UUQ!ryd z$BD+WA;8dqqLA*Zg4}3*jt&&XW}5Qte*WJP(6-v#ZJ5)Bzw$?0apw|$jUeyW(ncY` z{s;bKG|=y3`d0Z~g$sp%{}Yo}(N@vlc h0`+#7!#KoNGszeYRr`To8t zti{T?ncsbrZ$m(T9zqi%|E7P6LFlc|aLf^@Fn=AL&D|3ll+S(*oqw!JnE!~j-7CtE zjv1c@`W)_(=cU+(7ToAQ|9JwG9^~8K2tnmoBPW}`iR@CjX^H^D!|YEt!j2#vt?&NQ z2P2)$P-+&!j-#Xlc6H6?Vnq{BZ|PAJkiQX(mH>jIl&8o92sCSd^uE|J0_(SsU%rw7 zAN=fo_R}FWf%7*}?AT^O4D*}+3L7mn)aU3>XrEWidC#u~VAN2575Q^w>;AK!^FRq~ z(4nl36eH+<)`unVLBF%uCQ(5$zv+RnqWHJ*SsHDxeD*Wgbl7ZG)F=3(AS8l7^{Zjr z1Vh_5Aq%NMVFKnSagc&i-z@OYgxme2jqJ_WrHQYoWMr&()fw(O@+;+4M=Tt%$KDsS zB&fO*y*)SzQ}Cu->m9&kdjRj{Bl}u!CFJ|BS)yJQZ Oa1)u@oQfeLgdVCbLsJsAL00LTT1@f%HWjs=Ap{Bvu(am zZk*xv&=GSvn{QS^7=QOD8x2My6gqyMWgfn(e7P^GuJ_RJk&O#iM?y2lRUeQzjzVn9 zn9t4r)_dR4VHsX09WjQr7{dOA4Wi%OFPG)vld~fkkFI0P%TJ4|!AJ~J==a`3x!B)c zjV66LY7^x?yb!;`uy^&qi+mTmVi(_jy*Ws $R8y z6@st3m>1INtV87Ut&GQ3`!NZzEQ{3w(P(ZH@aXl_9QAt1W+5{v@8FC61!N@mj6%FC z )?L zR6=9*neW&5rFy-cSe`5PgQ53w4BUG_Oah2P_oMga{8g+^vOyvdS3>a0^Qm&RFw4#` z4p?6PcSN#v2n6pCN#$YqF&qWT>sx<~*X6FfE?3e=c3UnM#hPmej7?^6Vh*51ifA3P z1d;m5zU0*u9JoI#kI~6DPhY;2heMmH+Xgrybou^;1`!`{cXWb%AjEtp>tw;rGP5+M z*>pIa(pX}0-_z1)eO_>6MGzY4jF^)a(l1}`h2gZqrllNa%OU>A{oNLsuaa?2z`^Q7 zG5aH8CKSQap4-Z46t?>QN k>wb7hC6{uCB-x$cn*JpqNVA~1@24^^9X%3!e*>yg -B%%kFSI?hn;ZVKX9bhNg8E*lnR~;l}0!eBvNe;hQ!3^G<%f zZWHldwH)}>Nuz*jT&gEG7iS3;Z91}kKHrzGi(_b8YQ(eJ(v0@e&Z0_g+qgQKji7qT zj93dsOs8G(+P9=OKzhlmEgtc77d{Lgtjb+|)0?}AO>ACkHJjCPKM+1*c&s@z%HZha zG}QWIjQ3h<7eNs5{M&SIt8$8B;&t6)vu#aS(Z`TTYTra44dfYty+MExSoPwLptP$W zO(jOCm-I*Co12MKb`GAPm=J+jj-E8o-7bn{e!tpNZoSuHy~ry^ _ zvlN(9Sk+oYAA-?H;U(k3^{uDcDf6LWV-?V0SGtYb$n2_8fbzQu`|;sQ&IdsK@};#d z-31=8k0};2jnev-98S#?7#&_r7OxCn1@`SQ1D3x*H?ZOcw-KCMQ Ps{eu;Yt8?f++y4 Tag`~b*TX3^e1){r}pGY;HLdcPq$pn zQnAf9cUyTfTWh1L5DmqmBF)^Ooy>T0qvHsyK_Z1nMjIOPq)s|hI~lSg2A-`E1A_+5 z*zMA d4DGrUn} z8sV+Z5FU4-4asO6Zb+h<(%;JwC$-L&(td8O7Tv=_X0h6py9Vm}w}L*ESj22Ccu?y- z4L|2(dA`h>I$D%6R<1e%({oxogp_ix*)7YmM11hn0UNSCYmqTXq;+hf802RR_j}@agllqH6!{^c%bV;3>!)|i#Tc404gWTIX--&N;Qlq8y$bQ85nuJ(_7!aPOMYY+= z2t|5`p?Hj~34~A)q1~rFIgl+rFO0*22gW(>PIOTl`-d>5bzHk{g3ci(z(REqD8$I% z=D1C7K^V>lvv7}t&q~ccPg=@iRq4}mwIbxNW+MjnJ-0%sNp0|9S29?)KRHXK4a{rL zY|<^c0Kd{U!(rAP4oBVLC~MP$W>@V+6dYK4B~3Saw`q5osaU;N>bMzwRE)_$ct@Ae z(Z_cz9dt`EH*y21c63+Ty6(1Up+>KM6$GByC |GQGA%%QJj7$_dY#=l!ifM7ZoDjChd$DoC;fjyCFYb=Mo<&M~iVwn& zcK7r(7F?dD58_4$O7yqxa&N;GzzA}6C^H(ULm726Gnv>U8Tslw>kqqw=~N!qOeXBS zbjmQQjsX=*Uuoh6VeKaAdd&%q=m|k+zLP|aC7@fI%1Vz|phSmomXFv23D(cdeA`~} zS`f2iK5b8CL@Mv^oQ*h@yvf6Lcs9k(cEFZ{bL_PlQ=h7-gT`-*zvT0GV81T-r1eLX zL!`P?$1lxuTc6T2P3`a;PwfOx?I=RVbIk1cJ>d5yc8n)>!hFkeUGHl~EYAw4v}qmV zX~ovFi?nKizRj$To*%t8sUtk8*4L-Bs#S2>f=5zM{1@!=I2l@RNPB?==L g&(+B(5JyiUp?Q}VI zC-(hq*%T>gOxn LJSN&&c6C2~Xl9 zjIX|=Uz>_Mc^hI*do^Y-aPGpbZ6(xuBOqj9_Z|DNgBD1)8P@-} cd zK_!MR)5J_TG5H~m+TTns0TVqmrUEaUNoJPc350VC*%}m{JZI>U;m;>@E}L0Vn3*Zb z0{?dq`OP1;#E1kUzhqUoZAz}cBMAG-GLp3rcwqB2G;o~~E*tNv9CYC*_c8F|u!lT} z0WQztli^1xzk|-P)P^6!b3G+v@SmXP?PhzwJ=U|5&Ag8{qizrxSJxLlPl{TbwnbjQ z-NTK}1hJZiRYo=jb-Y1(cxsE=EVzlU-_!%z{bg I`r6}E(4EZRJr+qND0#i41+N2DOJ8(q3km)vkiabjrQ*>oYNPMC+%aa z#{;F7khi0$*AcnZIdL&zT+g?n(zatwWOY1;RILYn04)6djpqbApT`p%ok{})U$0rSG|+A=M% zedeINaXtsP6WSx{A~;E>V7;J213tcAc~^8i06R(xbgnG6a~u8|Uc~pWyn5oP-sL(g z81Q=MR2I _;1-x!4j-gZrB3qJwwz%iZN8vN@cfF6;aD^yL=tvDKN;XxEwFUzhXV zb@6FgR4@9|@ub_& A% zv93i3 QzUL6?YP(174WbCIOcv*lxEX*^A>1`U>V`Ho1-*fpqO4Oljl7LhZk1XS>1?J4 zIH2-Q)}f(oNO+CNJTc)g%xCsLZrV5+KLtV9a5-JhL)NZ?ESosnu6oI}>i=1Ep|r<5 zCYBzGJ|MLXj95BFW;OLd2(ye6X7EHmM(m~Z2u*^s@&sC=_(M`{N7Sh8DS3?0^OFgU zp%3Xi=jeoia`Mib{Oe5pX~ON!!lQ^I>8#U!IQf4 S+Hz)1&S18(4 Lc>@j zfy^Lt^04+{B2qIu_2Cy>M0HSMD5`1~#uPyGq?4-%#Tc`?^{FMbU|S$ki(g|Rr9`K% z0qdKgUFIda+KHV2I)_AkSA)0x#Vig|&ke_H4!QSpi|q;9>4`H_y{V8)ad*Gkms{(1 z!S7A1BfkGJcAw}JWPSa#PU66>1-H7M)J;F(R@c*dFv~FHD&X~1x@wu
KY;TAqFt2`H{XykrBS4`f?c+>K&jD?oXbxpo-cc3KfP_*L0nF z ;ko1Wg!?soH_>u>lvia*3@KMlk-46^|7&CULB z*ydCxwarNrgb!q3$c2X}@B~q7k5+$)NXX=_ft iY!|*%2(`kLx_7;iYpsS^7Pj zN6OE$XFNL~ E3c;N%`g!5iL;r7>buQ5Cegg*wj>y9MLXlC6Yqs>o0l&f=nJ`U-`~r z-%ISfho8wW>;RPsql{?$XE0+uDfEsll8u0cCfXmLkPtXbA8u?r?EsKJ8OKw$94;rP z&9U4zflPT%o^oPN48!6|R)o22R)UV e?F8|)$R^|E?GI*nXvW7k_ z$yqes?LuwmMc0Q+-^r{G_3BagcfF#LDEZ8I3X8!ua_+>!w$mzo=lUO%F%hu^b2})K z6rdiF+5T&DSX~x?x4J?b19bajsj-y>M12m14}au-w=b7(dUg{-1go6B4AAhETnR3< zxjdG{ohjS=Aoc`m-tX_$o&LN4m%uaTnhb8LGk%2GXXpe?SP>7C&2eFJ$=Z)XamdtV zvr~be2Gnit3mmvGbJgqVKg7nKHFz%>d-t+7zeB_yyK*0dURHrNf)T93Meh5F7b`lU zh%W?}NbcbMBNVue|B=6cf^t!ICRwB#PMQJ*=0)WgEMlq7i(6GHoZd3q=vv&lwD3eH zHW8~Q6>G>|Z&~i~t!w{!bml>KKsRz|{hRy!9)x13TO}^f5Nxcyr0Vwr#3FNL2Bh{5 zbza%9{hQ|YZ@l)My-bOUZ9xC5*N2wot@d*4Z@pn3QHWse{L-y`U=+p%FA`;^C!Y?T zne@?gD9nHyboaPPy44X{ECVXrN*_)8=~yFe3>O*3fpwe!LwUUEo?>?%OO)pRkH5lH zf-!6cqIt+qn7Jb%%a ;^Rg6+TRs$ z*$p*O7qzqdA_!8LAd6dmgYjZA2!sFms0oI*JA%&RsmEFjPAuh+v{I~b3Kt|EbP;|F zD&;l~{t8MfG2G)1ME$wh$a7$-kYug?u+h}(>2Y U;Mdt0K^o7;fJU3u$0p1No4)!CD5NAzrsG+5E?gKjlMhVx&YreR zdp#>)*y3#=nm|Qy*^amm=_9}~^ib=0p>G&VD2VhLM8|VYI*K$q25J4J>%X2cP-5oE z%a^K_Lf3y_46cSmjlj4z(gK*vl*gnFZdGOvimMr(%@SZ9X-Z*vJ@__hT_!Dv=G8l9 zXcKHNV|MAels5 `t^}gJ z7VJmWvtU2b=&^y~V>5Ro 3iO-9yb`?u_B;3!+G;BOk%S`%DL-n-DU8U?{od4>sg;zvGkLWugp$hl#p5Y6 z!n#hv!P4Br B`N zUN!oDz7vB}3HZs>0^sy;!s1vIJ`w@%VK7S8BgFOIhNi%U00>B@E5xFOpg9uSg|>C` zeOBwn+gIh*M3;b-Dn1l=QVCPqLB=Gzkm mD6Vbf-kp9f=0EFY)qTWV^e @ARWmBxxzmg}s^cd*d z1s{vLvK3so8cy_y=qw3}A*&8V#oVNi1yAD0o=|T0<-&ZF4sUEV06OEuFcfR=!rTXN z6|Rcc#p;s|bCTY0W*NV0%GFr4k+;YJWBAUv=oJSLPNH$>zZ@epns1MZRVjwwJ~x?$ z-Z_&VsCOr2f^T&M@$=4cJIFF(+BCLaSeJmxd&`!~9LF&~V|fdv2be}Su^ctVWV~0$ z=K0d=?iee7F#{)sEQXFLK$K9lG+K|uE2~_8vr%*BYzmfG8yy`V c>dc6-Ep@z?eim5h6J2X;R0nKr8P<_6YUdr$JahH^&0YhVS?xwRs5W1 zrCyiv3qBOZD_M0}AJo_HlvXh}H{=OiG!aRAltR_!uk%txkzjrWPL)&8qT>lkxSvuL z>{aA57u`Sc)3pb$Pp1iFPyr;>Ob2Mvo^PJ0;C)-FtmWM1tBNt0o$_c1q>;)ULtTYz zNP-z+?*>m4d9a+$$rXeHtVGom1f%XV0S^Q$k-`))Qa<;vo(dl@7m2+6K|V6wz6y@s z!%_5Q@p!=m>-}vwxqVqUUcV#?(PPm4W|6-+CVWE;sb{bGZXwaMFGJ UjUUneNx?J+=&tBdi&li(W%Dua_l>YAPEOV z1nSR~u)&S$D~1gRbtwxjiW}< qq5w? 5CIibBb+ewUGP1Prlx-NfX5aDUWmw V%%yns3@H1$g{(U6VeRI@k5vHe@CY5`q$&KJ`_#uuLsNLtUi?Xk0p| zF89JFmNG(rh)gvjxb? D;CoH8Y=xI3I z#h9NABJEewrAn7031IBh>2S(wF7+#s5Q}W2h}Tt|{9JQEwhJ#oU@e6F9X#KY$y)ZL zJYsB0Gji#GJC8(SPNVThmmkK9b 5ML`N#82s=YVzD@H4jqwDHl5hp{lhmwXdIIQhc9_plu1jummD$d*WV&|cfq=}J@5g8EMZ~I) zQIoX0-BkOzpHCV30}UT!(bUDW1{=UT+QgSeJO`NCS)u(6v7Mtw!Fsi5@IHGBp_ncQ zOBc(}B9dM&vQU=z&l%C9Q5ZrRUUTt^aCq*m=-i{ZA{1dj^Ea%N_{50>UV7u!YOk%F zePme!ykS!-=L^I1)_R7{BtFO4ZxP{1QKcYo4KM5ak z(E!ljTVEnkUd*koYN-yP3h{9l+64t)>U%47j*ii&Kl<>IhXM}Z!DR*$h^X+c$h|yy zK<+Vym{0CzJJmU^i3Dn*5YKJWqu!!e=J%_8P-n%dC$cNG#Y8pETj$Y48)owQW3*%9 zOQ|b$@f`4Si^e5^SMN^ixpstmo_PJIsd#$yZ5bmq%qJka)>9m<6vL*l0je5g%I88< zMj2&EQP+(_0{IJQA*^@ue!o@um&kQVw@~%)ERWL7bcqC45yFHZWgj+zc1Sln!DNlO zt-~hV )B5TGJoe@r z1eMiWmRVyB0uGD6vb?w9(z40U!zo1>xh7srXPwQ&PPdJ